%global appLoc serverName; %let compiled_apploc=/Public/app/angular-seed-app; %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); put tsuri= value=; 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 */ /* 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=quote(trim(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=quote(trim(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 "%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,.)) 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; %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; %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*/; %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; %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); filename sasjs temp; data _null_; file sasjs lrecl=3000 ; put "/* Created on %sysfunc(datetime(),datetime19.) by %mf_getuser() */"; /* WEBOUT BEGIN */ put ' '; put '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y '; put ' ,engine=DATASTEP '; put ' ,missing=NULL '; put ' ,showmeta=NO '; put ')/*/STORE SOURCE*/; '; put '%local tempds colinfo fmtds i numcols; '; put '%let numcols=0; '; 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 _null_; '; 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 ' newlen=max(formatl,length); '; 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 ' /* needs to be wide, for datetimes etc */ '; put ' newlen=max(length,formatl,24); '; 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(''len'',_n_),newlen,''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 ' run; '; put ' '; put ' %let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32); '; 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;set &ds; '; 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 ' data _data_; '; put ' /* rename on entry */ '; put ' set &ds(rename=( '; put ' %do i=1 %to &numcols; '; put ' &&name&i=&&newname&i '; put ' %end; '; put ' )); '; put ' %do i=1 %to &numcols; '; put ' length &&name&i $&&len&i; '; put ' %if &&typelong&i=num %then %do; '; put ' &&name&i=left(put(&&newname&i,&&fmt&i)); '; put ' %end; '; put ' %else %do; '; put ' &&name&i=put(&&newname&i,&&fmt&i); '; put ' %end; '; put ' drop &&newname&i; '; put ' %end; '; put ' if _error_ then call symputx(''syscc'',1012); '; put ' run; '; put ' %let fmtds=&syslast; '; 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 $32767; '; put ' format &&name&i $32767.; '; put ' %end; '; put ' %end; '; put ' %if &fmt=Y %then %do; '; put ' set &fmtds; '; put ' %end; '; put ' %else %do; '; put ' set &ds; '; put ' %end; '; 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,''"\''!!''0A0D09000E0F01021011''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/\\/\\\\/'',-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 &showmeta=YES %then %do; '; put ' filename _sjs4 temp lrecl=131068 encoding=''utf-8''; '; put ' data _null_; '; put ' file _sjs4; '; 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=Y,missing=NULL '; put ' ,showmeta=NO '; 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 '; 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(&_debug) ge 131 %then %do; '; put ' /* if debug mode, send back first 10 records of each work table also */ '; put ' options obs=10; '; 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=YES) '; 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 ' _PROGRAM=quote(trim(resolve(symget(''_PROGRAM'')))); '; put ' put ",""SYSUSERID"" : ""&sysuserid"" "; '; put ' put ",""MF_GETUSER"" : ""%mf_getuser()"" "; '; 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 ' put '',"_PROGRAM" : '' _PROGRAM ; '; put ' put ",""SYSCC"" : ""&syscc"" "; '; put ' put ",""SYSENCODING"" : ""&sysencoding"" "; '; put ' syserrortext=quote(cats(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=quote(cats(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 */ %let path=services; %let path=services/common; %let service=appinit; 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 '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=NO'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols;'; put '%let numcols=0;'; 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 _null_;'; 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 'newlen=max(formatl,length);'; 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 '/* needs to be wide, for datetimes etc */'; put 'newlen=max(length,formatl,24);'; 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(''len'',_n_),newlen,''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 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; 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;set &ds;'; 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 'data _data_;'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '%do i=1 %to &numcols;'; put 'length &&name&i $&&len&i;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=left(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put 'drop &&newname&i;'; put '%end;'; put 'if _error_ then call symputx(''syscc'',1012);'; put 'run;'; put '%let fmtds=&syslast;'; 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 $32767;'; put 'format &&name&i $32767.;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; 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,''"\''!!''0A0D09000E0F01021011''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/\\/\\\\/'',-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 &showmeta=YES %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; 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=Y,missing=NULL'; put ',showmeta=NO'; 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'; 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(&_debug) ge 131 %then %do;'; put '/* if debug mode, send back first 10 records of each work table also */'; put 'options obs=10;'; 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=YES)'; 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 '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; 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 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=quote(cats(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=quote(cats(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);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; 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 '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'libname mydb (work);'; put 'data mydb.springs ;'; put 'attrib'; put 'Latitude length= 8'; put 'Longitude length= 8'; put 'Name length= $34'; put 'Area length= $14'; put 'Type length= $9'; put 'Farenheit length= 8'; put 'Celsius length= 8'; put ';'; put 'infile cards dsd;'; put 'input'; put 'Latitude'; put 'Longitude'; put 'Name :$char.'; put 'Area :$char.'; put 'Type :$char.'; put 'Farenheit'; put 'Celsius'; 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 'datalines4;'; put '51.925,-177.16,Fumaroles on Kanaga Island,Adak,Hotspring,219,104'; put '65.858,-164.71,Serpentine Hot Springs,Bendeleben,Hotspring,171,77'; put '53.851,-166.918,Hot Springs Near Makushin Volcano,Unalaska,Hotspring,H,H'; put '53.877,-166.448,Hot Springs Near Summer Bay,Unalaska,Hotspring,H,H'; put '52.27,-174.042,Hot Springs on Atka Island,Atka,Hotspring,H,H'; put '52.34,-174.26,Hot Springs on Atka Island,Atka,Hotspring,H,H'; put '52.358,-172.317,Hot Spring on Seguam Island,Seguam,Hotspring,H,H'; put '52.84,-169.9,Chuginadak Hot Springs,Samalga Island,Hotspring,H,H'; put '52.96,-169.71,Hot Spring on Kagamil Island,Samalga Island,Hotspring,H,H'; put '51.94,-178.5,Hot Spring on Little Sitkin Island,Rat Islands,Hotspring,H,H'; put '51.963,-178.491,Fumaroles on Little Sitkin Island,Rat Islands,Hotspring,H,H'; put '51.775,-178.793,Fumaroles on Gareloi Island,Gareloi Island,Hotspring,H,H'; put '53.207,-168.445,Hot Springs Near Geyser Bight,Umnak,Hotspring,H,H'; put '53.892,-166.93,Makushin Volcano Fumaroles,Unalaska,Hotspring,310,154'; put '54.9,-162.885,Hot Spring on Amagat Island,False Pass,Hotspring,H,H'; put '53.213,-168.463,Hot Springs Near Geyser Bight,Umnak,Hotspring,216,102'; put '53.223,-168.477,Hot Springs Near Geyser Bight,Umnak,Hotspring,214,101'; put '53.443,-168.092,Thermal Springs In Okmok Caldera,Umnak,Hotspring,212,100'; put '52.042,-176.108,Hot Springs on Great Sitkin Island,Adak,Hotspring,210,99'; put '55.983,-131.661,Bailey Hot Spring,Ketchikan,Hotspring,198,92'; put '53.242,-168.365,Hot Springs Near Hot Springs Cove,Umnak,Hotspring,192,89'; put '54.157,-165.85,Hot Springs Near Hot Springs Bay,Unimak,Hotspring,181,83'; put '58.033,-136.017,Hot Springs North End Tenakee Inle,Mt. Fairweathe,Hotspring,180,82'; put '65.093,-164.922,Pilgrim Springs,Bendeleben,Hotspring,178,81'; put '57.831,-156.513,W Ukinek Spring,Ugashik,Hotspring,178,81'; put '65.459,-153.312,Little Melozitna Hot Springs,Melozitna,Hotspring,176,80'; put '51.81,-177.79,Hot Spring on Tanaga Island,Adak,Hotspring,H,H'; put '65.233,-144.483,Hot Springs on Big Windy Creek,Circle,Hotspring,H,H'; put '55.334,-162.137,Hot Spring at West End Emmons Lake,Cold Bay,Hotspring,68,20'; put '66.197,-154.006,Tunalkten Lake Hot Spring,Hughes,Hotspring,.,.'; put '67.403,-153.883,Hot Spring Near Arrigetch Peaks,Survey Pass,Hotspring,W,W'; put '65.047,-142.848,Hot Spring on Flat Creek,Charley River,Hotspring,W,W'; put '63.683,-151.233,Hot Springs Near Glacier,Mt. Mckinley,Hotspring,W,W'; put '63.883,-150.717,Hot Springs East of Diamond,Mt. Mckinley,Hotspring,W,W'; put '62.45,-157.933,Hot Spring Near Flat,Iditarod,Hotspring,W,W'; put '60.837,-142.42,Hot Spring on Twelvemile Creek,Bering Glacier,Hotspring,W,W'; put '56.58,-132.18,South Stikine Spring,Petersburg,Hotspring,W,W'; put '52.87,-173.13,Hot Spring on Attu Island,Attu,Hotspring,W,W'; put '65.908,-154.993,Deniktow Ridge Hot Springs,Melozitna,Hotspring,H,H'; put '53.95,-168.037,Hot Springs on Bogoslof Island,Umnak,Hotspring,H,H'; put '65.45,-150,Hot Spring Near Little Minook Cr,Tanana,Hotspring,H,H'; put '51.967,-178.444,Fumaroles on Little Sitkin Island,Rat Islands,Hotspring,H,H'; put '64.002,-156.3,Hot Spring on Tributary of Innoko,Nulato,Hotspring,H,H'; put '61.058,-160.692,Hot Spring Near Tuluksak River,Russian Missio,Hotspring,H,H'; put '61.363,-157.733,Hot Springs on Upper Chuilnuk Rive,Sleetmute,Hotspring,H,H'; put '61.267,-151.238,Hot Lake In Bottom of Crater Peak,Tyonek,Hotspring,H,H'; put '58.24,-155.09,Hot Spring Near Katmai Pass,Mt. Katmai,Hotspring,H,H'; put '58.27,-154.89,Hot Springs Near Mt Katmai,Mt. Katmai,Hotspring,H,H'; put '58.92,-153.98,Hot Spring West of Cape Douglas,Afognak,Hotspring,H,H'; put '55.368,-161.961,Fumarole,Port Moller,Hotspring,H,H'; put '54.18,-165.41,Hot Springs on Akun Island,Unimak,Hotspring,H,H'; put '54.23,-165.66,Hot Springs on Akun Island,Unimak,Hotspring,H,H'; put '54.66,-164.55,Hot Spring on Unimak Island,Unimak,Hotspring,H,H'; put '65.97,-154.033,Pocahontas Hot Springs,Melozitna,Hotspring,H,H'; put '65.216,-149.993,Hutlinana Hot Springs,Livengood,Hotspring,109,43'; put '57.085,-134.839,Baranof Warm Springs,Sitka,Hotspring,124,51'; put '67.283,-155.067,Reed River Hot Spring,Survey Pass,Hotspring,122,50'; put '66.15,-157.117,Hot Springs Near South Bm,Shungnak,Hotspring,122,50'; put '66.233,-157.583,Hot Springs on Hawk River,Shungnak,Hotspring,122,50'; put '65.81,-151.237,Kilo Hot Spring,Tanana,Hotspring,122,50'; put '56.717,-132.005,Chief Shakes Hot Springs,Petersburg,Hotspring,122,50'; put '69.33,-144.044,Okpilak Springs,Mt. Michelson,Hotspring,119,49'; put '65.367,-161.25,Granite Mountain Hot Springs,Candle,Hotspring,120,49'; put '57.644,-135.333,Nylen Hot Springs,Sitka,Hotspring,120,49'; put '65.963,-150.919,Ray River Hot Spring,Tanana,Hotspring,117,47'; put '64.924,-154.837,Horner Hot Springs,Ruby,Hotspring,117,47'; put '65.267,-155.28,Hot Springs Near Dulbi River,Melozitna,Hotspring,126,52'; put '57.807,-136.341,White Sulphur Springs (Hooniah H S,Sitka,Hotspring,111,44'; put '57.781,-135.217,Tenakee Hot Springs,Sitka,Hotspring,109,43'; put '52.19,-174.25,Hot Springs on Atka Island,Atka,Hotspring,167,75'; put '55.334,-133.641,Dalton (Craig) Hot Springs,Craig,Hotspring,109,43'; put '51.944,-178.547,Fumaroles on Little Sitkin Island,Rat Islands,Hotspring,H,H'; put '57.771,-135.82,Hot Spring North Arm Peril Strait,Sitka,Hotspring,100,38'; put '53.848,-166.873,Hot Springs Near Makushin Volcano,Unalaska,Hotspring,94,34'; put '69.627,-146.027,Red Hill Spring,Mt. Michelson,Hotspring,91,33'; put '62.081,-145.007,Upper Klawasi Warm Springs,Gulkana,Hotspring,86,30'; put '62.058,-145.222,Mineral Spring (Lower Klawasi Cone,Gulkana,Hotspring,82,28'; put '56.68,-131.882,Barnes Lake Hot Springs,Bradfield Cana,Hotspring,79,26'; put '56.928,-158.12,Surprise Lake Hot Spring,Chignik,Hotspring,73,23'; put '56.667,-132.28,Twin Lakes Hot Springs,Petersburg,Hotspring,70,21'; put '66.383,-157.517,Warm Spring Near Purcell Mountain,Shungnak,Hotspring,68,20'; put '57.348,-135.385,Hot Spring Near Fish Bay,Sitka,Hotspring,117,47'; put '65.983,-150.56,Hot Springs on Lower Ray River,Tanana,Hotspring,142,61'; put '55.863,-160.493,Hot Spring Near Port Moller,Port Moller,Hotspring,160,71'; put '53.253,-168.358,Hot Springs Near Hot Springs Cove,Umnak,Hotspring,158,70'; put '51.97,-176.61,Hot Springs on Adak Island,Adak,Hotspring,154,68'; put '65.053,-146.057,Chena Hot Springs,Circle,Hotspring,153,67'; put '58.37,-137.09,Hot Springs Near Icy Point,Mt. Fairweathe,Hotspring,153,67'; put '56.836,-135.374,Goddard Hot Springs,Port Alexander,Hotspring,153,67'; put '66.342,-150.85,Kanuti Hot Springs,Bettles,Hotspring,151,66'; put '64.85,-162.3,Clear Creek Hot Springs,Solomon,Hotspring,149,65'; put '53.233,-168.3,Hot Spring on Umnak Island,Umnak,Hotspring,149,65'; put '61.2,-159.863,Hot Springs Near Ophir Creek,Russian Missio,Hotspring,145,63'; put '57.865,-156.499,Gas Rocks Hot Spring,Ugashik,Hotspring,127,53'; put '51.762,-178.77,Fumaroles on Gareloi Island,Gareloi Island,Hotspring,144,62'; put '66.367,-156.767,Hot Springs Near Division Bm,Shungnak,Hotspring,140,60'; put '64.7,-162.467,Hot Spring Near Kwiniuk River,Solomon,Hotspring,106,41'; put '65.274,-148.847,Tolovana Hot Springs,Livengood,Hotspring,140,60'; put '55.933,-131.559,Bell Island Hot Springs,Ketchikan,Hotspring,165,74'; put '57.178,-157.015,Hot Spring Near Mother Goose Lake,Ugashik,Hotspring,138,59'; put '65.483,-144.637,Circle Hot Springs,Circle,Hotspring,135,57'; put '56.233,-131.267,Bradfield Canal Hot Springs,Bradfield Cana,Hotspring,135,57'; put '65.006,-150.633,Manley Hot Springs,Tanana,Hotspring,133,56'; put '65.129,-154.692,Melozi (Melozitna) Springs,Melozitna,Hotspring,131,55'; put '66.217,-149.547,Dall Hot Springs,Beaver,Hotspring,129,54'; put '55.217,-162.483,Hot Springs East of Cold Bay,Cold Bay,Hotspring,129,54'; put '65.217,-162.9,Hot Springs Near Lava Creek,Bendeleben,Hotspring,127,53'; put '54.944,-163.251,Hot Springs Near Morzhovoi,False Pass,Hotspring,145,63'; put '36.48,-91.053,Warm Springs,Poplar Bluff,Hotspring,82,28'; put '34.384,-93.607,Caddo Gap Springs,Little Rock,Hotspring,95,35'; put '34.321,-93.739,Spring on Redland Mountain,Little Rock,Hotspring,77,25'; put '34.406,-93.908,Spring on Little Missouri River,Little Rock,Hotspring,74,23'; put '34.542,-93.024,Big Chalybeate Spring,Little Rock,Hotspring,79,26'; put '34.513,-93.053,Hot Springs,Little Rock,Hotspring,147,64'; put '33.008,-109.778,Grapevine Spring,Clifton,Hotspring,91,33'; put '32.984,-113.324,Agua Caliente Springs,Ajo,Hotspring,102,39'; put '34.563,-113.497,Kaiser Hot Spring,Prescott,Hotspring,99,37'; put '34.076,-111.708,Spring (Hot),Holbrook,Hotspring,99,37'; put '33.17,-110.528,Coolidge Dam Warm Spring,Mesa,Hotspring,99,37'; put '34.695,-113.572,Cofer Hot Spring,Prescott,Hotspring,97,36'; put '33.209,-110.818,Pioneer Spring,Mesa,Hotspring,91,33'; put '33.988,-112.362,Castle Hot Springs,Phoenix,Hotspring,115,46'; put '32.345,-110.247,Warm Springs,Tucson,Hotspring,91,33'; put '36.196,-113.081,Lava Warm Springs,Grand Canyon,Hotspring,90,32'; put '33.068,-109.975,Warm Spring,Clifton,Hotspring,90,32'; put '31.943,-113.013,Quitobaquito Springs,Lukeville,Hotspring,90,32'; put '31.695,-110.963,Agua Caliente Spring,Nogales,Hotspring,90,32'; put '33.075,-109.298,Seep,Clifton,Hotspring,95,35'; put '34.357,-111.71,Verde Hot Springs,Holbrook,Hotspring,104,40'; put '32.998,-109.901,Indian Hot Springs,Silver City,Hotspring,118,48'; put '33.669,-111.165,Roosevelt Dam Springs,Mesa,Hotspring,118,48'; put '32.336,-110.24,Hookers Hot Springs,Tucson,Hotspring,127,53'; put '33.4,-109.152,Hannah Hot Spring,Clifton,Hotspring,133,56'; put '33.08,-109.303,Hot Spring,Clifton,Hotspring,138,59'; put '32.741,-114.068,Radium Hot Springs,El Centro,Hotspring,140,60'; put '32.971,-109.35,Gillard Hot Springs,Silver City,Hotspring,180,82'; put '35.984,-114.742,Hot Spring,Kingman,Hotspring,H,H'; put '33.78,-110.317,Warm Spring,Mesa,Hotspring,W,W'; put '36.418,-113.956,Pakoon Springs,Grand Canyon,Hotspring,86,30'; put '33.493,-112.94,El Dorado Hot Springs,Phoenix South,Hotspring,112,44'; put '34.896,-114.308,Oatman Warm Springs,Needles,Hotspring,91,33'; put '33.055,-109.295,Clifton Hot Springs,Clifton,Hotspring,102,39'; put '34.445,-112.693,Spring,Prescott,Hotspring,72,22'; put '32.337,-110.708,Mercer Spring,Tucson,Hotspring,77,25'; put '34.649,-111.744,Soda Spring,Holbrook,Hotspring,75,24'; put '33.253,-110.703,Spring,Mesa,Hotspring,75,24'; put '31.362,-109.265,Astin Spring,Douglas,Hotspring,75,24'; put '35.169,-113.851,Frost Mine Spring,Williams,Hotspring,70,21'; put '31.673,-109.902,Antelope Spring,Douglas,Hotspring,79,26'; put '35.213,-113.425,Casa Grande Spring,Williams,Hotspring,72,22'; put '33.51,-110.403,Cassadore Spring,Mesa,Hotspring,73,23'; put '34.32,-111.453,Tonto Natural Bridge Spring,Holbrook,Hotspring,72,22'; put '34.405,-111.602,Spring,Holbrook,Hotspring,72,22'; put '34.436,-109.402,Salado Springs,Saint Johns,Hotspring,72,22'; put '31.592,-109.51,Lewis Spring,Douglas,Hotspring,68,20'; put '33.046,-109.44,Eagle Creek Hot Springs,Clifton,Hotspring,97,36'; put '36.509,-111.852,Colorado Pool,Marble Canyon,Hotspring,86,30'; put '33.062,-109.482,Warm Spring,Clifton,Hotspring,73,23'; put '31.637,-110.703,Monkey Spring,Nogales,Hotspring,82,28'; put '32.281,-110.73,Agua Caliente,Tucson,Hotspring,86,30'; put '32.327,-110.228,N-O Spring,Tucson,Hotspring,73,23'; put '32.983,-110.373,Warm Spring,Tucson,Hotspring,79,26'; put '33.152,-110.639,Mescal Warm Spring,Mesa,Hotspring,84,29'; put '33.163,-110.662,Spring,Mesa,Hotspring,82,28'; put '35.077,-113.267,Trout Creek Spring,Williams,Hotspring,81,27'; put '33.438,-110.213,Warm Springs,Mesa,Hotspring,86,30'; put '36.895,-113.913,Springs,Grand Canyon,Hotspring,79,26'; put '35.96,-114.725,Hot Spring,Kingman,Hotspring,86,30'; put '34.925,-114.221,Caliche Spring,Needles,Hotspring,79,26'; put '33.915,-112.332,Mitchell Spring,Phoenix,Hotspring,79,26'; put '33.831,-110.574,Salt Banks,Mesa,Hotspring,78,26'; put '34.91,-113.608,Tom Brown Warm Spring,Prescott,Hotspring,82,28'; put '38.873,-122.689,Seigler Springs,Santa Rosa,Hotspring,126,52'; put '36.814,-117.763,Palm Spring,Death Valley,Hotspring,120,49'; put '34.498,-119.341,Stingleys Hot Springs,Los Angeles,Hotspring,123,51'; put '33.67,-117.325,"Wrenden Hot Sprs, Elsinore Hot Spr",Santa Ana,Hotspring,125,52'; put '37.253,-118.373,Keough Hot Springs,Mariposa,Hotspring,124,51'; put '36.229,-118.302,Jordan Hot Springs,Fresno,Hotspring,124,51'; put '34.502,-119.346,Vickers Hot Springs,Los Angeles,Hotspring,124,51'; put '36.123,-121.64,Slates Hot Springs,Santa Cruz,Hotspring,122,50'; put '35.881,-118.67,California Hot Springs,Bakersfield,Hotspring,122,50'; put '38.788,-122.777,Sulphur Creek,Santa Rosa,Hotspring,120,49'; put '37.648,-118.806,Hot Springs,Mariposa,Hotspring,129,54'; put '36.703,-120.86,Mercey Hot Springs,Santa Cruz,Hotspring,119,48'; put '33.589,-117.511,San Juan Hot Springs,Santa Ana,Hotspring,120,49'; put '38.785,-122.655,Harbin Springs,Santa Rosa,Hotspring,120,49'; put '37.677,-118.79,Dehy Hot Spring,Mariposa,Hotspring,134,57'; put '39.183,-122.7,Bartlett Springs,Ukiah,Hotspring,144,62'; put '36.234,-121.546,Tassajara Hot Springs,Santa Cruz,Hotspring,144,62'; put '36.144,-120.555,Coalinga Mineral Springs,Santa Cruz,Hotspring,112,44'; put '39.033,-122.445,Jones Fountain of Life Spring,Ukiah,Hotspring,142,61'; put '35.575,-118.534,"Miracle Hot Sprs, Hobo Hot Sprs",Bakersfield,Hotspring,119,48'; put '33.284,-116.631,Warner Hot Spring,Santa Ana,Hotspring,138,59'; put '38.237,-119.326,Buckeye Hot Spring,Walker Lake,Hotspring,140,60'; put '41.266,-120.08,Hot Springs (Menlo Baths),Alturas,Hotspring,135,57'; put '33.753,-117.495,Glen Ivy Hot Springs,Santa Ana,Hotspring,131,55'; put '37.802,-118.532,Benton Hot Springs,Mariposa,Hotspring,134,57'; put '38.691,-123.024,Skaggs Springs,Santa Rosa,Hotspring,135,56'; put '35.62,-118.473,Scovern Hot Springs,Bakersfield,Hotspring,133,56'; put '34.538,-119.56,Agua Caliente Spring,Los Angeles,Hotspring,133,56'; put '33.558,-117.154,Murrietta Hot Springs,Santa Ana,Hotspring,132,56'; put '39.226,-120.01,Brockway Hot Springs,Chico,Hotspring,131,55'; put '41.036,-121.926,Hunt Hot Spring,Alturas,Hotspring,136,58'; put '34.582,-119.044,Willett Hot Springs,Los Angeles,Hotspring,108,42'; put '37.234,-118.881,Blaney Meadows Hot Springs,Mariposa,Hotspring,109,43'; put '36.477,-118.404,Kern Hot Spring,Fresno,Hotspring,109,43'; put '36.806,-117.771,Lower Warm Springs,Death Valley,Hotspring,110,43'; put '34.482,-119.302,Matilija Hot Springs,Los Angeles,Hotspring,109,43'; put '34.537,-119.879,San Marcos Hot Spring,Los Angeles,Hotspring,110,43'; put '33.896,-117.057,Eden Hot Springs,Santa Ana,Hotspring,109,43'; put '39.573,-120.348,Campbell Hot Springs,Chico,Hotspring,111,44'; put '38.994,-122.742,Horseshoe Spring,Santa Rosa,Hotspring,108,42'; put '33.969,-116.942,Highland Springs,Santa Ana,Hotspring,112,44'; put '34.34,-117.173,"Warm Spring, Hot Spring",San Bernardino,Hotspring,108,42'; put '41.219,-120.066,Squaw Baths,Alturas,Hotspring,106,41'; put '40.142,-120.935,Indian Valley Hot Springs,Susanville,Hotspring,106,41'; put '39.292,-122.821,Crabtree Hot Springs,Ukiah,Hotspring,106,41'; put '37.108,-121.478,Gilroy Hot Springs,San Jose,Hotspring,106,41'; put '39.227,-123.362,Orrs Springs,Ukiah,Hotspring,104,40'; put '38.773,-122.705,Anderson Springs,Santa Rosa,Hotspring,108,42'; put '38.858,-122.671,Howard Springs,Santa Rosa,Hotspring,113,45'; put '34.461,-119.637,Montecito Hot Springs,Los Angeles,Hotspring,118,48'; put '33.551,-117.167,Temecula Hot Springs,Santa Ana,Hotspring,116,47'; put '33.835,-116.988,Gilman Hot Springs,Santa Ana,Hotspring,117,47'; put '37.618,-119.074,Reds Meadow Hot Springs,Mariposa,Hotspring,115,46'; put '35.528,-118.665,Democrat Hot Springs,Bakersfield,Hotspring,115,46'; put '33.731,-118.348,Whites Point Hot Springs,Long Beach,Hotspring,115,46'; put '37.532,-119.025,Fish Creek Hot Springs,Mariposa,Hotspring,110,43'; put '39.032,-122.432,"Blank Spring, Manzanita Mine Sprs",Ukiah,Hotspring,112,45'; put '37.327,-119.018,Mono Hot Springs,Mariposa,Hotspring,109,43'; put '38.225,-119.217,The Hot Springs,Walker Lake,Hotspring,113,45'; put '35.727,-118.408,Hot Spring,Bakersfield,Hotspring,113,45'; put '41.6,-120.088,Leonards Hot Springs,Alturas,Hotspring,144,62'; put '38.874,-123.518,Point Arena Hot Springs,Santa Rosa,Hotspring,111,44'; put '41.126,-121.028,Kellog Hot Springs,Alturas,Hotspring,172,78'; put '35.558,-118.612,Delonegha Hot Springs,Bakersfield,Hotspring,112,44'; put '35.871,-116.23,Tecopa Hot Springs,Trona,Hotspring,118,48'; put '41.86,-120.158,Fort Bidwell Hot Spring,Alturas,Hotspring,113,45'; put '41.534,-120.078,Hot Springs (Surprise Valley),Alturas,Hotspring,208,98'; put '33.345,-115.588,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '41.012,-121.274,Hot Springs,Alturas,Hotspring,H,H'; put '39.922,-120.024,Zamboni Hot Springs,Chico,Hotspring,H,H'; put '38.979,-122.659,Fumarole,Santa Rosa,Hotspring,H,H'; put '37.622,-119.028,Fumaroles,Mariposa,Hotspring,H,H'; put '40.364,-120.243,Hot Spring,Susanville,Hotspring,204,96'; put '38.767,-122.748,Little Geysers,Santa Rosa,Hotspring,210,99'; put '33.328,-115.583,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '41.67,-120.206,Lake City Hot Springs,Alturas,Hotspring,207,97'; put '36.036,-117.802,Devils Kitchen,Death Valley,Hotspring,207,97'; put '36.045,-117.769,Coso Hot Springs,Death Valley,Hotspring,207,97'; put '40.382,-121.513,Morgan Hot Spring,Susanville,Hotspring,205,96'; put '40.421,-121.375,Terminal Geyser,Susanville,Hotspring,205,96'; put '41.19,-120.383,West Valley Reservoir Hot Spring,Alturas,Hotspring,171,77'; put '38.802,-122.81,The Geysers,Santa Rosa,Hotspring,214,101'; put '35.888,-116.258,Springs,Trona,Hotspring,W,W'; put '34.185,-117.262,"Arrowhead Springs, Waterman Hot Sp",San Bernardino,Hotspring,194,90'; put '33.823,-116.542,Palm Springs (Agua Caliente Spring,Santa Ana,Hotspring,104,40'; put '41.196,-120.475,Springs,Alturas,Hotspring,W,W'; put '41.959,-120.936,Warm Spring,Alturas,Hotspring,W,W'; put '37.929,-121.965,Springs,San Jose,Hotspring,W,W'; put '36.83,-117.736,Upper Warm Spring,Death Valley,Hotspring,W,W'; put '33.343,-115.573,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '35.536,-118.651,Spring (Hot),Bakersfield,Hotspring,W,W'; put '33.332,-115.575,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '35.967,-116.931,Warm Spring,Trona,Hotspring,W,W'; put '33.28,-115.592,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '33.288,-115.575,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '33.312,-115.577,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '33.313,-115.605,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '40.393,-121.507,Growler Hot Spring,Susanville,Hotspring,203,95'; put '35.148,-118.783,Warm Spring,Bakersfield,Hotspring,W,W'; put '41.973,-122.202,Klamath Hot Spring,Weed,Hotspring,156,69'; put '41.143,-121.11,Bassett Hot Springs,Alturas,Hotspring,174,79'; put '38.58,-122.575,Calistoga Hot Springs,Santa Rosa,Hotspring,172,78'; put '37.656,-118.834,Hot Creek Springs,Mariposa,Hotspring,171,77'; put '41.229,-121.405,Little Hot Spring,Alturas,Hotspring,169,76'; put '37.664,-118.802,The Tub,Mariposa,Hotspring,167,75'; put '40.355,-120.257,Wendel Hot Springs,Susanville,Hotspring,205,96'; put '38.768,-122.717,Castle Rock Springs,Santa Rosa,Hotspring,163,73'; put '38.245,-119.205,Travertine Hot Springs,Walker Lake,Hotspring,180,82'; put '39.002,-122.664,Sulphur Bank,Ukiah,Hotspring,156,69'; put '39.057,-122.475,Elgin Mine,Ukiah,Hotspring,156,69'; put '39.039,-122.421,Wilbur Springs,Ukiah,Hotspring,153,67'; put '40.444,-121.409,Drakesbad,Susanville,Hotspring,151,66'; put '40.457,-121.545,Mill Creek Springs,Susanville,Hotspring,150,66'; put '38.048,-119.081,Hot Spring,Walker Lake,Hotspring,151,66'; put '37.647,-118.859,Casa Diablo Hot Pool,Mariposa,Hotspring,165,74'; put '41.607,-121.523,Hot Spot,Alturas,Hotspring,191,88'; put '40.44,-121.434,Devils Kitchen,Susanville,Hotspring,203,95'; put '40.302,-120.195,Amedee Hot Springs,Susanville,Hotspring,203,95'; put '36.031,-117.833,Fumarole,Death Valley,Hotspring,203,95'; put '40.447,-121.536,"Sulphur Works, Tophet Hot Springs",Susanville,Hotspring,199,93'; put '40.455,-121.501,Bumpass Hell,Susanville,Hotspring,199,93'; put '37.648,-118.914,Casa Diablo Hot Springs And Geyser,Mariposa,Hotspring,199,93'; put '37.692,-118.839,Little Hot Creek Spring,Mariposa,Hotspring,180,82'; put '34.596,-118.998,Sespe Hot Springs,Los Angeles,Hotspring,194,90'; put '38.348,-119.4,Fales Hot Springs,Walker Lake,Hotspring,180,82'; put '40.434,-121.399,Boiling Springs Lake,Susanville,Hotspring,190,88'; put '41.615,-120.102,Seyferth Hot Springs,Alturas,Hotspring,185,85'; put '41.407,-122.197,"Hot Spring, Fumaroles",Weed,Hotspring,183,84'; put '37.993,-119.028,Paoha Island Springs,Mariposa,Hotspring,181,83'; put '41.025,-121.924,Big Bend Hot Springs,Alturas,Hotspring,180,82'; put '38.699,-119.846,Grovers Hot Springs,Walker Lake,Hotspring,147,64'; put '37.665,-118.828,Hot Creek Gorge Springs,Mariposa,Hotspring,199,93'; put '39.43,-122.538,"Sulphur Spring, Salt Spring",Ukiah,Hotspring,75,24'; put '38.925,-122.77,Hildebrande Spring,Santa Rosa,Hotspring,77,25'; put '38.203,-119.118,Warm Spring,Walker Lake,Hotspring,77,25'; put '36.938,-121.565,Sargent Estate Warm Spring,Santa Cruz,Hotspring,77,25'; put '34.826,-116.677,Newberry Spring,San Bernardino,Hotspring,77,25'; put '41.919,-122.369,Bogus Soda Springs,Weed,Hotspring,76,24'; put '39.053,-122.597,Quigley Soda Spring,Ukiah,Hotspring,82,28'; put '41.252,-120.521,Warm Spring,Alturas,Hotspring,75,24'; put '38.85,-122.693,Pine Cone Spring,Santa Rosa,Hotspring,78,26'; put '38.339,-122.259,Napa Vichy Springs,Santa Rosa,Hotspring,76,24'; put '38.892,-122.533,Baker Soda Spring,Santa Rosa,Hotspring,76,24'; put '38.897,-122.882,England Springs,Santa Rosa,Hotspring,76,24'; put '38.916,-122.799,Carlsbad Spring,Santa Rosa,Hotspring,76,24'; put '38.192,-120.827,Valley Springs,Sacramento,Hotspring,75,24'; put '38.85,-120.025,Myers Warm Spring,Sacramento,Hotspring,75,24'; put '37.708,-118.813,Hot Spring,Mariposa,Hotspring,68,20'; put '36.122,-117.217,Warm Sulphur Springs,Death Valley,Hotspring,80,27'; put '35.682,-116.422,Saratoga Spring,Trona,Hotspring,82,28'; put '33.733,-114.907,Mccoy Spring,Salton Sea,Hotspring,82,28'; put '41.484,-120.764,Spring,Alturas,Hotspring,81,27'; put '39.657,-123.585,Jackson Valley Mud Springs,Ukiah,Hotspring,80,27'; put '39.198,-122.505,Pseudo Complexion Spring,Ukiah,Hotspring,81,27'; put '38.85,-122.667,Bad Creek Spring,Santa Rosa,Hotspring,81,27'; put '32.97,-116.423,Vallecitos Spring,San Diego,Hotspring,79,26'; put '36.765,-120.901,Spring,Santa Cruz,Hotspring,81,27'; put '34.159,-118.499,El Encino Springs,Los Angeles,Hotspring,79,26'; put '35.879,-116.153,Resting Spring,Trona,Hotspring,80,27'; put '41.828,-120.917,Pothole Spring,Alturas,Hotspring,78,26'; put '39.348,-122.668,Fouts Springs,Ukiah,Hotspring,79,26'; put '38.519,-122.26,"Napa Rock Soda Spring, Phillips So",Santa Rosa,Hotspring,78,26'; put '38.838,-122.653,Spiers Springs,Santa Rosa,Hotspring,79,26'; put '35.141,-116.101,Soda Station Springs,Trona,Hotspring,75,24'; put '37.503,-121.904,Alameda Warm Springs,San Jose,Hotspring,80,27'; put '39.429,-123.308,Muir Springs,Ukiah,Hotspring,68,20'; put '37.924,-122.046,Sulphur Spring,San Francisco,Hotspring,75,24'; put '40.58,-120.265,Tipton Springs,Susanville,Hotspring,70,21'; put '39.697,-123.478,Pinches Spring,Ukiah,Hotspring,70,21'; put '38.755,-122.285,Zim Zim Spring,Santa Rosa,Hotspring,70,21'; put '37.083,-121.042,Spring In Oneill Forebay,San Jose,Hotspring,70,21'; put '37.632,-121.762,Crohare Spring,San Jose,Hotspring,70,21'; put '33.625,-115.325,Corn Spring,Salton Sea,Hotspring,72,22'; put '36.117,-118.776,Ward Spring,Fresno,Hotspring,70,21'; put '34.423,-119.538,Boron Spring,Los Angeles,Hotspring,72,22'; put '39.002,-122.498,Grizzly Spring,Ukiah,Hotspring,68,20'; put '39.088,-122.525,Sulphur Spring,Ukiah,Hotspring,68,20'; put '38.125,-122.188,Vallejo White Sulphur Springs,Santa Rosa,Hotspring,68,20'; put '38.31,-122.053,Tolenas Springs,Santa Rosa,Hotspring,68,20'; put '41.45,-120.834,Kelly Hot Spring,Alturas,Hotspring,198,92'; put '36.512,-116.821,Nevares Springs,Death Valley,Hotspring,102,39'; put '37.888,-118.487,Bertrand Ranch Springs,Mariposa,Hotspring,70,21'; put '35.483,-119.917,Mize Spring,Bakersfield,Hotspring,73,23'; put '36.698,-117.848,Little Hunter Canyon Springs,Death Valley,Hotspring,81,27'; put '38.995,-122.642,Davis Soda Spring,Santa Rosa,Hotspring,73,23'; put '37.432,-121.308,Salt Grass Springs,San Jose,Hotspring,73,23'; put '37.573,-121.445,Lone Tree Mineral Spring,San Jose,Hotspring,73,23'; put '37.638,-118.887,Chance Spring,Mariposa,Hotspring,73,23'; put '36.295,-120.985,Sulphur Springs,Santa Cruz,Hotspring,73,23'; put '41.16,-120.403,Warm Spring,Alturas,Hotspring,70,21'; put '35.4,-120.25,Cameta Warm Spring,San Luis Obisp,Hotspring,73,23'; put '37.719,-118.735,Springs,Mariposa,Hotspring,75,24'; put '35.588,-116.359,Sheep Creek Spring,Trona,Hotspring,73,23'; put '40.568,-120.325,Sellicks Springs,Susanville,Hotspring,72,22'; put '38.833,-122.357,One Shot Mining Co,Santa Rosa,Hotspring,72,22'; put '38.95,-122.572,Soda Spring In Cache Formation,Santa Rosa,Hotspring,72,22'; put '37.635,-118.72,Springs,Mariposa,Hotspring,72,22'; put '36.13,-118.816,Soda Spring,Fresno,Hotspring,72,22'; put '36.773,-120.898,Iridat Spring,Santa Cruz,Hotspring,73,23'; put '33.545,-115.654,Canyon Spring,Salton Sea,Hotspring,97,36'; put '36.675,-116.923,Keane Wonder Spring,Death Valley,Hotspring,93,34'; put '36.331,-121.367,Paraiso Springs (Sulphur Spring),Santa Cruz,Hotspring,98,37'; put '35.122,-120.542,Newsom Springs,San Luis Obisp,Hotspring,99,37'; put '34.503,-120.219,Las Cruces Hot Springs,Santa Maria,Hotspring,99,37'; put '38.49,-122.498,St Helena White Sulphur Spring,Santa Rosa,Hotspring,97,36'; put '35.946,-116.189,Chappo Spring,Trona,Hotspring,80,27'; put '40.019,-121.036,Spring,Susanville,Hotspring,99,37'; put '40.44,-121.42,Hot Springs Valley,Susanville,Hotspring,83,28'; put '32.947,-116.305,Agua Caliente Springs,San Diego,Hotspring,101,38'; put '39.196,-122.714,Newman Springs,Ukiah,Hotspring,94,35'; put '37.63,-118.808,Whitmore Hot Springs,Mariposa,Hotspring,95,35'; put '35.269,-120.851,Pecho Warm Springs,San Luis Obisp,Hotspring,95,35'; put '33.514,-117.604,Spring,Santa Ana,Hotspring,95,35'; put '38.958,-122.701,Riviera Beach Spring,Santa Rosa,Hotspring,93,34'; put '36.33,-117.948,Dirty Socks Hot Spring,Death Valley,Hotspring,93,34'; put '37.847,-121.635,Byron Hot Springs,San Jose,Hotspring,96,36'; put '35.433,-118.478,Yates Hot Springs,Bakersfield,Hotspring,100,38'; put '35.663,-120.692,Paso Robles Artesian Spring,San Luis Obisp,Hotspring,102,39'; put '34.507,-119.291,Wheeler Springs,Los Angeles,Hotspring,102,39'; put '33.8,-116.927,Soboda Hot Springs,Santa Ana,Hotspring,102,39'; put '40.223,-122.747,Stinking Springs,Redding,Hotspring,101,38'; put '38.8,-123.17,Hoods Hot Springs,Santa Rosa,Hotspring,100,38'; put '37.029,-117.383,Grapevine Springs,Goldfield,Hotspring,100,38'; put '36.084,-121.584,Dolans Hot Spring,Santa Cruz,Hotspring,98,37'; put '36.21,-118.176,Soda Springs,Fresno,Hotspring,100,38'; put '33.664,-117.913,Fairview Hot Spring,Santa Ana,Hotspring,96,36'; put '35.143,-116.813,Paradise Spring,Trona,Hotspring,100,38'; put '33.837,-117.145,Lakeview Hot Springs,Santa Ana,Hotspring,100,38'; put '33.201,-115.577,Mud Pots,Salton Sea,Hotspring,100,38'; put '33.212,-115.591,Mud Pots,Salton Sea,Hotspring,100,38'; put '33.217,-115.58,Wister Mud Pot,Salton Sea,Hotspring,100,38'; put '32.617,-116.189,Jacumba Hot Springs,San Diego,Hotspring,101,38'; put '36.618,-121.845,Sulphur Hot Spring,Santa Cruz,Hotspring,100,38'; put '36.495,-117.893,Springs,Death Valley,Hotspring,86,30'; put '38.033,-118.902,Mono Basin Warm Springs,Walker Lake,Hotspring,88,31'; put '35.908,-120.367,Table Mountain (Spring),San Luis Obisp,Hotspring,88,31'; put '34.271,-116.838,Pan Hot Springs,San Bernardino,Hotspring,88,31'; put '40.238,-122.11,Tuscan Springs,Redding,Hotspring,86,30'; put '40.245,-120.007,High Rock Spring,Susanville,Hotspring,86,30'; put '38.55,-122.72,Mark West Springs,Santa Rosa,Hotspring,88,31'; put '43.513,-119.903,Springs at Tecolote Tunnel,Los Angeles,Hotspring,93,34'; put '39.728,-120.547,Mclear Warm Springs,Chico,Hotspring,86,30'; put '38.835,-122.731,Gordon Warm Springs,Santa Rosa,Hotspring,97,36'; put '39.166,-123.159,Vichy Springs,Ukiah,Hotspring,85,29'; put '38.936,-122.907,Highland Springs,Santa Rosa,Hotspring,84,29'; put '37.398,-121.794,Mineral Springs,San Jose,Hotspring,84,29'; put '33.436,-117.324,De Luz Warm Springs,Santa Ana,Hotspring,85,29'; put '33.512,-115.827,Dos Palmas Spring,Salton Sea,Hotspring,84,29'; put '39.022,-122.444,Abbott Mine,Ukiah,Hotspring,86,30'; put '34.605,-118.561,Warm Spring,Los Angeles,Hotspring,92,33'; put '41.659,-123.319,Sulphur Springs,Weed,Hotspring,84,29'; put '38.394,-122.552,Los Guilicos Warm Springs,Santa Rosa,Hotspring,88,31'; put '41.492,-120.7,Essex Springs,Alturas,Hotspring,91,33'; put '38.654,-122.484,Aetna Springs,Santa Rosa,Hotspring,91,33'; put '35.842,-117.38,Bainter Spring,Trona,Hotspring,92,33'; put '34.228,-117.483,Tylers Bath Spring,San Bernardino,Hotspring,92,33'; put '33.363,-117.017,Agua Tibia Spring,Santa Ana,Hotspring,92,33'; put '41.167,-120.032,Bare Ranch Spring,Alturas,Hotspring,90,32'; put '35.978,-116.273,Shoshone Spring,Trona,Hotspring,90,32'; put '33.407,-116.035,Fish Springs,Santa Ana,Hotspring,90,32'; put '35.582,-120.666,Santa Ysabel Springs (Sulphur Spr),San Luis Obisp,Hotspring,92,33'; put '34.537,-119.613,Little Caliente Spring,Los Angeles,Hotspring,90,32'; put '39.006,-122.787,Big Soda Spring,Ukiah,Hotspring,90,32'; put '35.439,-119.846,Carneros Spring,Bakersfield,Hotspring,90,32'; put '36.441,-116.829,Travertine Springs,Death Valley,Hotspring,90,32'; put '37.88,-122.627,Rocky Point Springs,San Francisco,Hotspring,90,32'; put '39.227,-107.224,Penny Hot Springs,Leadville,Hotspring,133,56'; put '38.732,-106.178,Hortense Hot Spring,Montrose,Hotspring,181,83'; put '37.4,-107.849,Tripp Hot Springs,Durango,Hotspring,111,44'; put '40.073,-106.113,Hot Sulphur Springs,Craig,Hotspring,111,44'; put '39.739,-105.512,Idaho Springs,Denver,Hotspring,115,46'; put '39.552,-107.412,South Canyon Hot Springs,Leadville,Hotspring,118,48'; put '39.548,-107.322,Glenwood Springs,Leadville,Hotspring,124,51'; put '38.133,-107.736,Orvis Hot Spring,Montrose,Hotspring,126,52'; put '39.017,-105.793,Hartsel Hot Springs,Denver,Hotspring,126,52'; put '38.733,-106.162,Mount Princeton Hot Springs,Montrose,Hotspring,133,56'; put '37.752,-108.131,Paradise Warm Spring,Cortez,Hotspring,115,46'; put '37.747,-106.831,Wagon Wheel Gap Hot Springs,Durango,Hotspring,135,57'; put '37.263,-107.011,Pagosa Springs,Durango,Hotspring,136,58'; put '38.812,-106.226,Cottonwood Hot Springs,Montrose,Hotspring,136,58'; put '38.168,-105.924,Mineral Hot Springs,Pueblo,Hotspring,140,60'; put '40.559,-106.849,Routt Hot Springs,Craig,Hotspring,147,64'; put '38.021,-107.672,Ouray Hot Springs,Montrose,Hotspring,156,69'; put '38.498,-106.076,Poncha Hot Springs,Montrose,Hotspring,160,71'; put '38.514,-106.508,Upper Waunita Hot Springs,Montrose,Hotspring,176,80'; put '38.272,-107.1,Cebolla Hot Springs,Montrose,Hotspring,106,41'; put '37.313,-107.344,Piedra River Hot Springs,Durango,Hotspring,108,42'; put '38.517,-106.515,Lower Waunita Hot Springs,Montrose,Hotspring,167,75'; put '38.816,-106.873,Ranger Hot Spring,Montrose,Hotspring,81,27'; put '37.294,-105.784,Dexter Spring,Trinidad,Hotspring,68,20'; put '38.634,-106.072,Browns Grotto Warm Spring,Montrose,Hotspring,73,23'; put '39.164,-106.062,Rhodes Warm Spring,Leadville,Hotspring,75,24'; put '38.836,-106.825,Cement Creek Hot Spring,Montrose,Hotspring,77,25'; put '38.653,-106.056,Browns Canyon Warm Spring,Montrose,Hotspring,77,25'; put '37.033,-106.805,Stinking Springs,Durango,Hotspring,81,27'; put '37.747,-108.117,Geyser Warm Spring,Cortez,Hotspring,82,28'; put '38.479,-105.891,Swissvale Warm Springs,Pueblo,Hotspring,82,28'; put '37.751,-106.317,Shaw Springs,Durango,Hotspring,86,30'; put '37.728,-107.054,Birdsie Warm Spring,Durango,Hotspring,86,30'; put '37.741,-107.034,Antelope Spring,Durango,Hotspring,90,32'; put '39.628,-107.106,Dotsero Warm Springs,Leadville,Hotspring,90,32'; put '38.485,-105.91,Wellsville Warm Spring,Pueblo,Hotspring,91,33'; put '38.014,-108.054,Lemon Hot Spring,Moab,Hotspring,91,33'; put '37.391,-107.846,"Trimble Hot Spr, Stratten Warm Spr",Durango,Hotspring,97,36'; put '38.192,-105.816,Valley View Hot Springs,Pueblo,Hotspring,99,37'; put '38.433,-105.261,Canon City Hot Springs,Pueblo,Hotspring,104,40'; put '39.012,-106.891,Conundrum Hot Springs,Leadville,Hotspring,100,38'; put '37.511,-106.945,Rainbow Hot Springs,Durango,Hotspring,104,40'; put '40.467,-107.952,Juniper Hot Springs,Craig,Hotspring,100,38'; put '40.483,-106.827,Steamboat Springs,Craig,Hotspring,102,39'; put '37.771,-108.091,Dunton Hot Spring,Cortez,Hotspring,108,42'; put '37.453,-107.803,Pinkerton Hot Springs,Durango,Hotspring,90,32'; put '39.932,-105.277,Eldorado Springs,Denver,Hotspring,79,26'; put '27.074,-82.233,Little Salt Spring,Tampa,Hotspring,81,27'; put '27.06,-82.261,Warm Mineral Springs (Big Salt Spr,Tampa,Hotspring,86,30'; put '32.92,-84.438,Barker Spring,Phenix City,Hotspring,73,23'; put '32.964,-84.499,Thundering Spring,Phenix City,Hotspring,75,24'; put '33.018,-84.327,Taylor Spring,Atlanta,Hotspring,75,24'; put '32.862,-84.65,Parkman Spring,Phenix City,Hotspring,77,25'; put '33.037,-84.374,Lifsey Spring,Atlanta,Hotspring,79,26'; put '32.893,-84.69,Warm Springs,Phenix City,Hotspring,88,31'; put '32.873,-84.547,Tom Brown Spring,Phenix City,Hotspring,68,20'; put '19.407,-155.277,Steam Vents,Hawaii,Hotspring,H,H'; put '19.46,-154.847,Isaac Hale Park Spring,Hawaii,Hotspring,97,36'; put '19.496,-154.876,Warm Vapor,Hawaii,Hotspring,W,W'; put '19.373,-155.188,Steam Vents,Hawaii,Hotspring,H,H'; put '19.39,-155.311,Steam Vents,Hawaii,Hotspring,H,H'; put '19.434,-155.272,Steam Vents,Hawaii,Hotspring,H,H'; put '19.486,-155.598,Steam Vents,Hawaii,Hotspring,H,H'; put '19.466,-154.943,Steam Vents,Hawaii,Hotspring,H,H'; put '19.421,-155.62,Steam Vents,Hawaii,Hotspring,H,H'; put '19.201,-155.384,Waiwelawela Point Spring,Hawaii,Hotspring,90,32'; put '19.593,-154.928,Akins Spring,Hawaii,Hotspring,84,29'; put '44.721,-115.01,Thomas Creek Ranch Hot Spring,Challis,Hotspring,138,59'; put '45.431,-116.015,Cow Flats Hot Spring,Grangeville,Hotspring,138,59'; put '44.062,-115.685,Pine Flat Hot Springs,Challis,Hotspring,138,59'; put '44.382,-115.841,Dash Creek Hot Springs,Challis,Hotspring,138,59'; put '44.077,-115.553,Haven Lodge Hot Spring,Challis,Hotspring,147,64'; put '43.647,-114.816,Skillern Hot Springs,Hailey,Hotspring,140,60'; put '43.789,-115.434,Dutch Frank Hot Spring,Hailey,Hotspring,149,65'; put '43.54,-115.288,Bridge Hot Springs,Hailey,Hotspring,138,59'; put '43.72,-115.617,Smith Cabin Hot Spring,Hailey,Hotspring,138,59'; put '42.688,-114.826,Banbury Hot Spring,Twin Falls,Hotspring,138,59'; put '45.035,-115.561,Sheep Creek Hot Spring,Elk City,Hotspring,136,58'; put '44.245,-114.885,Elkhorn Hot Spring,Challis,Hotspring,136,58'; put '44.642,-115.693,Mollys Hot Spring,Challis,Hotspring,138,59'; put '43.811,-115.116,Atlanta Hot Springs,Hailey,Hotspring,140,60'; put '44.679,-116.231,White Licks Hot Spring,Baker,Hotspring,140,60'; put '45.512,-115.046,Barth Hot Springs,Elk City,Hotspring,140,60'; put '43.696,-115.658,Sheep Creek Bridge Hot Spring,Hailey,Hotspring,142,61'; put '44.914,-115.722,Teapot Hot Spring,Challis,Hotspring,142,61'; put '43.788,-115.444,Straight Creek Hot Spring,Hailey,Hotspring,144,62'; put '43.116,-115.305,Latty Hot Spring,Hailey,Hotspring,144,62'; put '45.039,-116.291,Zims Resort Hot Springs,Grangeville,Hotspring,144,62'; put '43.049,-114.952,White Arrow Hot Spring,Hailey,Hotspring,145,63'; put '44.645,-114.739,Upper Loon Creek Hot Springs,Challis,Hotspring,145,63'; put '43.383,-114.931,Wardrop Hot Spring,Hailey,Hotspring,147,64'; put '44.531,-116.754,Fairchild Hot Spring,Baker,Hotspring,126,52'; put '44.661,-114.652,Foster Ranch Hot Springs,Challis,Hotspring,135,57'; put '44.051,-115.829,Dan Hodges Hot Spring,Challis,Hotspring,140,60'; put '43.506,-114.354,Hailey Hot Springs,Hailey,Hotspring,131,55'; put '43.982,-114.486,West Pass Hot Spring,Hailey,Hotspring,124,51'; put '43.641,-114.487,Warfield Hot Spring,Hailey,Hotspring,124,51'; put '44.145,-112.554,Lidy Hot Springs,Dubois,Hotspring,124,51'; put '44.054,-115.907,Hot Spring Campground,Challis,Hotspring,124,51'; put '42.032,-115.363,Murphy Hot Springs,Twin Falls,Hotspring,126,52'; put '43.561,-114.415,Clarendon Hot Springs,Hailey,Hotspring,126,52'; put '43.423,-114.627,Elk Creek Hot Spring,Hailey,Hotspring,126,52'; put '43.553,-115.267,Paradise Hot Springs,Hailey,Hotspring,126,52'; put '42.308,-111.707,Maple Grove Hot Springs,Preston,Hotspring,172,78'; put '45.013,-113.605,Sharkey Hot Spring,Dillon,Hotspring,126,52'; put '44.73,-114.993,Sunflower Hot Springs,Challis,Hotspring,149,65'; put '43.974,-114.499,Lower Bowery Hot Spring,Hailey,Hotspring,129,54'; put '43.724,-115.604,Loftus Hot Spring,Hailey,Hotspring,129,54'; put '44.676,-115.943,Gold Fork Hot Spring,Challis,Hotspring,127,53'; put '44.044,-115.851,Donlay Ranch Hot Spring,Challis,Hotspring,131,55'; put '44.264,-114.818,Basin Creek Hot Spring,Challis,Hotspring,133,56'; put '44.652,-114.734,Owen Cabin Hot Spring,Challis,Hotspring,133,56'; put '43.605,-115.664,Rattlesnake Hot Spring,Hailey,Hotspring,133,56'; put '43.605,-114.948,Lightfoot Hot Springs,Hailey,Hotspring,133,56'; put '45.788,-115.198,Red River Hot Springs,Elk City,Hotspring,131,55'; put '44.632,-115.697,South Fork Plunge,Challis,Hotspring,129,54'; put '44.853,-116.442,Starkey Hot Springs,Baker,Hotspring,131,55'; put '42.692,-114.859,Hot Sulphur (Miracle Hot) Springs,Twin Falls,Hotspring,131,55'; put '44.045,-115.842,Corder Hot Spring,Challis,Hotspring,131,55'; put '44.247,-114.676,Robinson Bar Hot Springs,Challis,Hotspring,131,55'; put '44.785,-114.855,Cox Hot Springs,Challis,Hotspring,131,55'; put '43.637,-115.13,Willow Creek Hot Spring,Hailey,Hotspring,131,55'; put '43.803,-115.401,Granite Creek Hot Spring,Hailey,Hotspring,131,55'; put '43.129,-115.34,Coyote Hot Spring,Hailey,Hotspring,135,57'; put '44.211,-116.71,Cove Creek Hot Spring,Baker,Hotspring,131,55'; put '44.16,-115.167,Grandjean Hot Spring,Challis,Hotspring,H,H'; put '43.755,-115.571,Ninemeyer Hot Springs,Hailey,Hotspring,169,76'; put '43.701,-114.738,Big Smokey Hot Spring,Hailey,Hotspring,H,H'; put '43.831,-115.192,Queens River Hot Spring,Hailey,Hotspring,H,H'; put '43.817,-115.046,Leggit Creek Hot Spring,Hailey,Hotspring,H,H'; put '43.718,-115.563,Basset Hot Spring,Hailey,Hotspring,H,H'; put '43.588,-115.988,Mores Creek Hot Spring,Hailey,Hotspring,H,H'; put '44.951,-114.704,Mormon Ranch Warm Spring,Challis,Hotspring,H,H'; put '44.896,-114.563,Forge Creek Hot Springs,Challis,Hotspring,H,H'; put '44.77,-115.663,Billy Hot Spring,Challis,Hotspring,H,H'; put '44.628,-115.197,Sheepeater Hot Springs,Challis,Hotspring,H,H'; put '44.585,-115.072,Sulphur Creek Hot Spring,Challis,Hotspring,H,H'; put '44.554,-115.301,Sulphur Creek Hot Spring,Challis,Hotspring,H,H'; put '42.107,-113.39,Blm Well (Frazier Hot Spring),Pocatello,Hotspring,203,95'; put '44.4,-115.82,Goat Hot Springs,Challis,Hotspring,H,H'; put '45.307,-114.338,Big Creek Hot Springs,Elk City,Hotspring,199,93'; put '44.583,-116.112,Cascade Reservoir Hot Spring,Baker,Hotspring,H,H'; put '45.17,-115.807,Secesh Hot Spring,Elk City,Hotspring,H,H'; put '46.235,-114.707,Prospector Hot Springs,Hamilton,Hotspring,H,H'; put '46.138,-115.09,Stuart Hot Springs,Hamilton,Hotspring,H,H'; put '46.006,-115.021,Marten Hot Springs,Hamilton,Hotspring,H,H'; put '42.374,-111.726,Mound Valley Warm Spring,Preston,Hotspring,W,W'; put '43.255,-114.829,Mormon Reservoir Warm Spring,Hailey,Hotspring,W,W'; put '44.639,-115.671,Warm Lake Springs,Challis,Hotspring,W,W'; put '44.445,-115.239,Bear Valley Hot Spring,Challis,Hotspring,W,W'; put '44.354,-117.071,Old Homestead Warm Spring,Baker,Hotspring,W,W'; put '43.327,-113.918,Condie Hot Springs,Idaho Falls,Hotspring,124,51'; put '43.038,-112.004,Alkali Flats Warm Spring,Idaho Falls,Hotspring,93,34'; put '44.43,-115.762,Bull Creek Hot Springs,Challis,Hotspring,H,H'; put '42.119,-111.928,Squaw Hot Springs,Preston,Hotspring,163,73'; put '42.333,-111.716,Cleveland Hot Springs,Preston,Hotspring,151,66'; put '43.671,-115.696,Twin Springs,Hailey,Hotspring,151,66'; put '43.951,-116.353,Roystone Hot Springs,Boise,Hotspring,151,66'; put '42.704,-114.856,Salmon Falls Hot Spring,Twin Falls,Hotspring,153,67'; put '44.16,-115.177,Sacajawea Hot Springs,Challis,Hotspring,153,67'; put '43.738,-115.583,Vaughn Hot Spring,Hailey,Hotspring,154,68'; put '44.669,-116.305,Council Mtn Hot Springs,Baker,Hotspring,154,68'; put '44.831,-115.215,Kwiskwis Hot Spring,Challis,Hotspring,156,69'; put '43.684,-114.41,Guyer Hot Springs,Hailey,Hotspring,158,70'; put '43.155,-115.518,Hot Springs,Hailey,Hotspring,158,70'; put '44.586,-116.63,Lakey Hot Spring,Baker,Hotspring,158,70'; put '42.333,-115.65,Indian Hot Springs,Twin Falls,Hotspring,160,71'; put '42.637,-114.892,Poison Springs,Twin Falls,Hotspring,H,H'; put '44.813,-115.123,Middle Fork Indian Creek Hot Sprin,Challis,Hotspring,162,72'; put '44.072,-115.543,Kirkham Hot Springs,Challis,Hotspring,149,65'; put '43.328,-114.399,Magic Hot Springs,Hailey,Hotspring,163,73'; put '43.293,-114.908,Barrons Hot Spring,Hailey,Hotspring,167,75'; put '44.154,-115.993,Warm Springs Creek Hot Springs,Challis,Hotspring,167,75'; put '44.268,-114.748,Sunbeam Hot Springs,Challis,Hotspring,169,76'; put '44.092,-116.052,Deer Hot Springs,Baker,Hotspring,176,80'; put '43.563,-114.798,Worswick Hot Springs,Hailey,Hotspring,180,82'; put '42.133,-111.928,Battle Creek Hot Springs,Preston,Hotspring,183,84'; put '44.364,-115.856,Boiling Springs,Challis,Hotspring,185,85'; put '44.157,-115.314,Bonneville Hot Springs,Challis,Hotspring,185,85'; put '44.799,-115.129,Indian Creek Hot Spring,Challis,Hotspring,190,88'; put '44.568,-115.695,Vulcan Hot Springs,Challis,Hotspring,190,88'; put '44.306,-116.745,Crane Creek Hot Springs,Baker,Hotspring,198,92'; put '44.416,-116.031,Cabarton Hot Spring,Baker,Hotspring,160,71'; put '42.781,-111.983,Portneuf River Warm Spring,Preston,Hotspring,93,34'; put '44.621,-115.985,Badley Warm Spring,Challis,Hotspring,100,38'; put '45.201,-116.312,Boulder Creek Spring,Grangeville,Hotspring,82,28'; put '42.24,-113.588,Sears Spring,Pocatello,Hotspring,84,29'; put '44.257,-112.639,Warm Springs,Dubois,Hotspring,84,29'; put '42.911,-111.556,Henry Warm Spring,Preston,Hotspring,86,30'; put '43.021,-111.695,Wilson Lake Warm Spring,Driggs,Hotspring,86,30'; put '44.495,-116.732,Keithly Warm Spring,Baker,Hotspring,86,30'; put '42.655,-111.643,Steamboat Hot Spring,Preston,Hotspring,88,31'; put '45.152,-116.296,Stinky Warm Spring,Grangeville,Hotspring,88,31'; put '42.725,-112.872,Indian Springs,Pocatello,Hotspring,90,32'; put '43.114,-112.167,Yandell Springs,Idaho Falls,Hotspring,90,32'; put '44.64,-116.045,Arling Hot Spring,Baker,Hotspring,90,32'; put '42.657,-111.604,Soda Springs,Preston,Hotspring,82,28'; put '45.07,-115.826,Lick Creek Warm Spring,Elk City,Hotspring,91,33'; put '42.337,-111.726,Treasureton Hot Springs,Preston,Hotspring,95,35'; put '44.382,-114.088,Little Antelope Flat Warm Spring,Challis,Hotspring,93,34'; put '43.21,-111.495,Brockman Creek Hot Spring,Driggs,Hotspring,95,35'; put '44.398,-115.149,Cape Horn Warm Springs,Challis,Hotspring,95,35'; put '42.337,-114.509,Nat-Soo-Pah Warm Spring,Twin Falls,Hotspring,97,36'; put '44.9,-115.505,Hot Creek Warm Spring,Challis,Hotspring,97,36'; put '42.405,-114.142,Artesian City Hot Springs,Twin Falls,Hotspring,99,37'; put '42.762,-115.739,Indian Bathtub Hot Springs,Twin Falls,Hotspring,99,37'; put '43.227,-111.109,Alpine Warm Spring,Driggs,Hotspring,99,37'; put '42.545,-112.906,Rockland Warm Springs,Pocatello,Hotspring,100,38'; put '43.805,-114.585,Russian John Hot Spring,Hailey,Hotspring,100,38'; put '43.779,-114.539,Easley Hot Springs,Hailey,Hotspring,100,38'; put '44.26,-114.838,Mormon Bend Hot Spring,Challis,Hotspring,100,38'; put '44.64,-113.504,Big Eightmile Creek Warm Spring,Dubois,Hotspring,91,33'; put '42.339,-112.436,Kent Warm Spring,Pocatello,Hotspring,75,24'; put '42.957,-112.458,Tadpole Warm Spring,Pocatello,Hotspring,68,20'; put '43.607,-111.189,Taylor Springs,Driggs,Hotspring,68,20'; put '43.972,-116.325,Sweet Warm Spring,Boise,Hotspring,68,20'; put '44.717,-115.703,Dollar Creek Warm Spring,Challis,Hotspring,68,20'; put '42.625,-113.107,Lake Walcott Hot Spring,Pocatello,Hotspring,70,21'; put '42.015,-114.237,Thoroughbred Warm Springs,Twin Falls,Hotspring,69,21'; put '42.928,-111.592,Blackfoot Reservoir Warm Spring,Preston,Hotspring,72,22'; put '42.286,-113.446,"Rice Spring, Ward Spring",Pocatello,Hotspring,72,22'; put '42.085,-113.564,Grape Creek Warm Spring,Pocatello,Hotspring,72,22'; put '43.66,-111.715,Elkhorn Warm Spring,Driggs,Hotspring,72,22'; put '43.367,-113.884,Rush Warm Spring,Idaho Falls,Hotspring,72,22'; put '44.306,-117.042,Weiser Warm Springs,Baker,Hotspring,72,22'; put '45.344,-114.463,Owl Creek Hot Springs,Elk City,Hotspring,122,50'; put '44.454,-112.696,Big Spring,Dubois,Hotspring,73,23'; put '44.269,-113.449,Barney Hot Springs,Dubois,Hotspring,82,28'; put '43.5,-115.308,Towne Creek Warm Spring,Hailey,Hotspring,75,24'; put '43.161,-116.332,Thomas Flats Warm Spring,Boise,Hotspring,75,24'; put '44.612,-113.363,Whittaker Warm Springs,Dubois,Hotspring,75,24'; put '42.173,-112.239,Malad Warm Spring,Pocatello,Hotspring,77,25'; put '42.156,-112.348,Pleasantview Warm Springs,Pocatello,Hotspring,77,25'; put '42.025,-112.226,Prices Warm Spring,Pocatello,Hotspring,77,25'; put '42.865,-116.368,Lower Birch Spring,Jordan Valley,Hotspring,77,25'; put '43.423,-111.414,Fall Creek Mineral Springs,Driggs,Hotspring,77,25'; put '42.986,-111.743,Blackfoot River Warm Spring,Preston,Hotspring,79,26'; put '42.426,-111.378,Pescadero Warm Spring,Preston,Hotspring,79,26'; put '44.091,-111.458,Ashton Warm Spring,Ashton,Hotspring,79,26'; put '42.056,-112.246,Woodruff Hot Spring,Pocatello,Hotspring,81,27'; put '43.831,-116.396,Highland Land Co Warm Spring,Boise,Hotspring,73,23'; put '44.847,-115.696,Holdover Hot Spring,Challis,Hotspring,117,47'; put '43.047,-114.929,Hot Sulphur Lake,Hailey,Hotspring,81,27'; put '43.603,-115.07,Baumgartner Hot Spring,Hailey,Hotspring,111,44'; put '44.465,-116.037,Belvidere Hot Spring,Baker,Hotspring,111,44'; put '42.621,-112.008,Lava Hot Springs,Pocatello,Hotspring,113,45'; put '43.823,-115.327,Weatherby Hot Spring,Hailey,Hotspring,113,45'; put '43.335,-115.044,Wolf Hot Spring,Hailey,Hotspring,113,45'; put '44.905,-113.929,Goldbug Hot Spring,Dubois,Hotspring,113,45'; put '45.095,-113.836,Salmon Hot Spring,Dillon,Hotspring,113,45'; put '45.277,-115.912,Burgdorf Hot Springs,Elk City,Hotspring,113,45'; put '44.836,-114.79,Hospital Hot Spring,Challis,Hotspring,115,46'; put '44.72,-114.016,Cronks Canyon Hot Spring,Challis,Hotspring,115,46'; put '44.721,-115.207,Pistol Creek Hot Springs,Challis,Hotspring,115,46'; put '43.791,-111.435,Pincock (Green Canyon) Hot Springs,Driggs,Hotspring,111,44'; put '43.414,-116.707,Givens Hot Springs,Boise,Hotspring,117,47'; put '45.503,-114.463,Horse Creek Hot Springs,Elk City,Hotspring,109,43'; put '46.464,-115.035,Weir Creek Hot Springs,Hamilton,Hotspring,117,47'; put '42.115,-111.264,Bear Lake Hot Springs,Preston,Hotspring,118,48'; put '42.173,-113.861,Oakley Hot Spring,Pocatello,Hotspring,118,48'; put '46.463,-114.872,Jerry Johnson Hot Springs,Hamilton,Hotspring,118,48'; put '43.644,-111.687,Heise Hot Springs,Driggs,Hotspring,120,49'; put '44.799,-114.806,Lower Loon Creek Hot Spring,Challis,Hotspring,120,49'; put '44.253,-115.891,Rocky Canyon Hot Springs,Challis,Hotspring,120,49'; put '46.316,-115.258,Stanley Hot Springs,Hamilton,Hotspring,120,49'; put '43.779,-115.486,Brown Creek Hot Spring,Hailey,Hotspring,122,50'; put '44.628,-114.601,Shower Bath Springs,Challis,Hotspring,122,50'; put '44.171,-114.624,Slate Creek Hot Spring,Challis,Hotspring,122,50'; put '44.392,-115.834,Ground Hog Hot Springs,Challis,Hotspring,100,38'; put '42.797,-115.723,"Bat Hot Spring, Pence Hot Spring",Twin Falls,Hotspring,117,47'; put '42.767,-115.725,Lower Indian Bathtub Hot Springs,Twin Falls,Hotspring,108,42'; put '42.102,-113.632,Durfee Spring,Pocatello,Hotspring,102,39'; put '44.33,-115.802,Silver Creek Hot Spring,Challis,Hotspring,102,39'; put '42.447,-113.523,Marsh Creek Hot Spring,Pocatello,Hotspring,104,40'; put '42.449,-113.511,Marsh Gully Hot Springs,Pocatello,Hotspring,106,41'; put '42.798,-115.742,Bruneau Hot Spring,Twin Falls,Hotspring,106,41'; put '43.576,-114.83,Preis Hot Spring,Hailey,Hotspring,106,41'; put '43.677,-116.208,Terteling Hot Springs,Boise,Hotspring,106,41'; put '44.254,-114.443,Sullivan Hot Springs,Challis,Hotspring,106,41'; put '44.224,-114.929,Stanley Hot Spring,Challis,Hotspring,106,41'; put '44.101,-114.865,Rosalys Warm Spring,Challis,Hotspring,106,41'; put '44.06,-115.819,Danskin Creek Hot Spring,Challis,Hotspring,106,41'; put '45.852,-114.937,Running Warm Springs,Elk City,Hotspring,106,41'; put '43.363,-113.779,Milford Sweat Hot Spring,Idaho Falls,Hotspring,111,44'; put '46.466,-114.939,Colgate Warm Springs,Hamilton,Hotspring,106,41'; put '44.626,-115.749,Trail Creek Hot Spring,Challis,Hotspring,122,50'; put '43.816,-115.863,Warm Springs,Hailey,Hotspring,108,42'; put '43.76,-115.56,Pool Creek Hot Spring,Hailey,Hotspring,108,42'; put '45.042,-114.616,Snowshoe Johnsons Hot Spring,Elk City,Hotspring,108,42'; put '42.388,-112.085,Downata Hot Springs,Pocatello,Hotspring,109,43'; put '42.013,-114.504,Magic Hot Springs,Twin Falls,Hotspring,109,43'; put '42.779,-115.715,Buckaroo Hot Spring,Twin Falls,Hotspring,109,43'; put '43.99,-114.8,Pierson Hot Springs,Hailey,Hotspring,109,43'; put '43.038,-114.988,Tschanne Hot Spring,Hailey,Hotspring,109,43'; put '44.523,-114.173,Beardsley Hot Springs,Challis,Hotspring,109,43'; put '44.733,-115.018,Sunflower Flat Hot Spring,Challis,Hotspring,109,43'; put '44.516,-115.295,Dagger Creek Hot Spring,Challis,Hotspring,110,43'; put '44.971,-116.203,Krigbaum Hot Springs,Baker,Hotspring,109,43'; put '45.416,-116.172,Riggins Hot Springs,Grangeville,Hotspring,106,41'; put '42.735,-73.2,Sand Spring,Albany,Hotspring,75,24'; put '46.106,-114.004,Sleeping Child Hot Springs,Hamilton,Hotspring,122,50'; put '45.697,-114.365,Blue Joint Hot Springs 2,Elk City,Hotspring,84,29'; put '44.769,-111.649,Sloan Cow Camp Spring,Ashton,Hotspring,86,30'; put '47.632,-112.855,Medicine (Sun River) Springs,Choteau,Hotspring,86,30'; put '45.75,-113.938,Gallogly Spring,Dillon,Hotspring,100,38'; put '47.33,-114.789,Quinns Hot Springs,Wallace,Hotspring,109,43'; put '45.171,-112.153,Puller Hot Springs,Dillon,Hotspring,111,44'; put '46.728,-114.533,"Lolo Hot Springs, Granite Springs",Hamilton,Hotspring,111,44'; put '45.337,-110.691,Chico Hot Springs,Bozeman,Hotspring,113,45'; put '47.607,-114.663,Camas Hot Springs,Wallace,Hotspring,113,45'; put '45.841,-114.038,Medicine Hot Springs,Elk City,Hotspring,117,47'; put '45.458,-113.109,Elkhorn Hot Springs,Dillon,Hotspring,118,48'; put '45.027,-112.844,Mcmenomey Ranch Spring,Dillon,Hotspring,68,20'; put '45.792,-112.126,Renova Hot Springs,Dillon,Hotspring,122,50'; put '44.701,-111.878,Staudenmeyer Springs,Ashton,Hotspring,82,28'; put '45.602,-111.9,Potosi Warm Springs,Bozeman,Hotspring,124,51'; put '45.575,-111.683,Norris Hot Springs,Bozeman,Hotspring,127,53'; put '45.462,-112.475,New Biltmore Hot Springs,Dillon,Hotspring,127,53'; put '45.66,-111.186,Bozeman Hot Springs,Bozeman,Hotspring,131,55'; put '45.896,-112.233,Pipestone Hot Springs,Dillon,Hotspring,135,57'; put '46.547,-110.903,White Sulphur Springs,White Sulphur,Hotspring,136,58'; put '46.448,-111.982,Alhambra Hot Springs,White Sulphur,Hotspring,138,59'; put '45.757,-110.256,Hunters Hot Springs,Bozeman,Hotspring,140,60'; put '45.368,-113.403,Jardine Hot Spring,Dillon,Hotspring,140,60'; put '46.596,-112.108,Broadwater (Helena) Hot Springs,Butte,Hotspring,151,66'; put '44.984,-111.613,Wolf Creek Hot Springs,Ashton,Hotspring,154,68'; put '45.685,-112.295,Silver Star Hot Springs,Dillon,Hotspring,163,73'; put '45.59,-111.899,Potosi Hot Springs,Bozeman,Hotspring,122,50'; put '45.105,-112.751,Browns Springs,Dillon,Hotspring,75,24'; put '46.718,-113.306,Bearmouth Warm Spring 2,Butte,Hotspring,68,20'; put '46.717,-113.32,Bearmouth Warm Spring 1,Butte,Hotspring,68,20'; put '47.217,-109.471,Brooks Warm Spring,Lewistown,Hotspring,68,20'; put '45.708,-110.976,Bridger Canyon Warm Spring,Bozeman,Hotspring,70,21'; put '46.795,-108.883,Durfee Creek Springs,Roundup,Hotspring,70,21'; put '46.704,-113.452,Nimrod Springs,Butte,Hotspring,70,21'; put '47.876,-108.656,Landusky Springs,Lewistown,Hotspring,70,21'; put '45.032,-110.667,Bear Creek Springs,Bozeman,Hotspring,72,22'; put '45.111,-112.714,Lovells Hot Spring,Dillon,Hotspring,72,22'; put '46.106,-112.903,Anaconda Hot Springs,Butte,Hotspring,72,22'; put '45.235,-112.135,Trudau Warm Springs,Dillon,Hotspring,73,23'; put '45.698,-114.382,Blue Joint Hot Spring 1,Elk City,Hotspring,84,29'; put '45.037,-111.953,Vigilante Spring,Bozeman,Hotspring,75,24'; put '45.608,-110.571,Carter Bridge Warm Springs,Bozeman,Hotspring,82,28'; put '46.355,-111.565,Bedford Hot Springs,White Sulphur,Hotspring,74,24'; put '45.553,-110.142,Anderson Springs,Bozeman,Hotspring,77,25'; put '45.42,-112.692,Apex Warm Spring,Dillon,Hotspring,77,25'; put '46.607,-112.776,Garrison Warm Springs,Butte,Hotspring,77,25'; put '47.843,-108.598,The (Landusky) Plunge,Lewistown,Hotspring,77,25'; put '44.785,-111.649,West Fork Swimming Hole,Ashton,Hotspring,79,26'; put '46.61,-112.555,Avon Warm Spring,Butte,Hotspring,79,26'; put '46.334,-112.886,Deerlodge Prison Ranch Springs,Butte,Hotspring,79,26'; put '47.994,-108.445,Lodgepole (Big Warm) Springs,Lewistown,Hotspring,79,26'; put '47.451,-114.648,Green Springs,Wallace,Hotspring,79,26'; put '45.392,-112.452,Beaverhead Rock Spring,Dillon,Hotspring,81,27'; put '44.704,-111.892,Andersons Pasture Springs,Ashton,Hotspring,82,28'; put '47.971,-108.395,Little Warm Springs,Lewistown,Hotspring,73,23'; put '46.198,-112.094,Boulder Hot Springs,Butte,Hotspring,169,76'; put '46.178,-112.794,Warm Springs (State Hospital),Butte,Hotspring,172,78'; put '45.367,-111.726,Ennis Hot Springs,Bozeman,Hotspring,181,83'; put '46.044,-112.811,Gregson Hot Springs,Butte,Hotspring,158,70'; put '45.09,-110.774,Laduke (Corwin) Hot Spring,Bozeman,Hotspring,154,68'; put '35.897,-82.826,Hot Springs,Knoxville,Hotspring,108,42'; put '32.644,-108.128,Apache Tejo Warm Spring,Silver City,Hotspring,97,36'; put '33.135,-107.254,Truth Or Consequences,Tularosa,Hotspring,113,45'; put '36.305,-106.053,Ojo Caliente (Arsenic Spring),Aztec,Hotspring,111,44'; put '33.162,-108.209,Spring (Hot),Clifton,Hotspring,111,44'; put '36.508,-105.722,Manby Hot Springs,Raton,Hotspring,100,38'; put '35.849,-106.629,Spence Hot Springs,Albuquerque,Hotspring,100,38'; put '35.972,-106.56,San Antonio Warm Spring,Albuquerque,Hotspring,101,38'; put '35.82,-106.627,Mccauley Hot Springs,Albuquerque,Hotspring,99,37'; put '35.793,-106.685,Soda Dam Hot Springs,Albuquerque,Hotspring,117,47'; put '33.831,-108.8,(Upper) Frisco Hot Spring,Clifton,Hotspring,98,37'; put '35.646,-106.888,Warm Springs,Albuquerque,Hotspring,129,54'; put '36.324,-105.606,Ponce De Leon Springs,Raton,Hotspring,93,34'; put '34.038,-106.94,"Socorro Spring, Sedillo Spring",Socorro,Hotspring,93,34'; put '33.293,-108.282,"Spring Mfg Two, Spring Mfg Three",Clifton,Hotspring,99,37'; put '35.592,-106.753,Indian Springs,Albuquerque,Hotspring,123,51'; put '32.501,-106.926,Radium Springs,Las Cruces,Hotspring,127,53'; put '33.274,-108.25,Spring Mfg Four,Clifton,Hotspring,93,34'; put '35.938,-106.646,San Antonio Hot Spring,Albuquerque,Hotspring,129,54'; put '33.244,-108.88,San Francisco Hot Springs,Clifton,Hotspring,120,49'; put '32.748,-107.836,Mimbres Hot Springs,Las Cruces,Hotspring,136,58'; put '35.653,-105.29,Montezuma Hot Springs,Santa Fe,Hotspring,138,59'; put '33.233,-108.235,Spring (Hot),Clifton,Hotspring,149,65'; put '33.199,-108.209,Gila Hot Springs,Clifton,Hotspring,151,66'; put '33.108,-108.483,Turkey Creek Hot Spring,Clifton,Hotspring,165,74'; put '35.772,-106.69,Jemez Springs,Albuquerque,Hotspring,169,76'; put '35.908,-106.615,Sulphur Springs,Albuquerque,Hotspring,189,87'; put '33.237,-108.88,Hot Springs,Clifton,Hotspring,H,H'; put '32.562,-108.027,Kennecott Warm Springs,Silver City,Hotspring,W,W'; put '32.554,-107.994,Faywood Hot Springs,Las Cruces,Hotspring,129,54'; put '33.898,-108.501,Aragon Springs,Clifton,Hotspring,70,21'; put '34.847,-107.091,Spring (Salt),Socorro,Hotspring,76,24'; put '34.903,-107.085,El Ojo Escondido,Socorro,Hotspring,73,23'; put '35.06,-107.133,Alamos Spring,Albuquerque,Hotspring,72,22'; put '34.912,-108.951,Rainbow Spring,Saint Johns,Hotspring,71,22'; put '34.698,-107.129,Spring,Socorro,Hotspring,71,22'; put '32.455,-104.489,Indian Big Spring,Carlsbad,Hotspring,79,26'; put '34.995,-106.454,Clear Water Spring,Socorro,Hotspring,69,21'; put '32.821,-108.408,Ash Spring,Silver City,Hotspring,72,22'; put '32.83,-109.047,Goat Camp Spring,Silver City,Hotspring,69,21'; put '35.548,-106.827,San Ysidro Warm Springs,Albuquerque,Hotspring,68,20'; put '34.116,-106.98,Ojitos Springs,Socorro,Hotspring,68,20'; put '32.248,-104.411,Mosley Spring,Carlsbad,Hotspring,68,20'; put '33.708,-109.025,Frieborn Canyon Spring,Clifton,Hotspring,92,33'; put '33.192,-108.18,Lyons Hunting Lodge Hot Springs,Clifton,Hotspring,126,52'; put '35.601,-106.86,Phillips Springs,Albuquerque,Hotspring,70,21'; put '33.285,-108.262,Spring Mfg One,Clifton,Hotspring,88,31'; put '33.306,-108.324,The Meadows Warm Spring,Clifton,Hotspring,91,33'; put '34.049,-106.939,Cook Spring,Socorro,Hotspring,70,21'; put '32.795,-107.276,Derry Warm Springs,Las Cruces,Hotspring,92,33'; put '32.884,-108.358,Allen Springs,Silver City,Hotspring,78,26'; put '33.279,-107.563,Warm Springs,Tularosa,Hotspring,87,31'; put '32.606,-107.19,Souse Springs,Las Cruces,Hotspring,88,31'; put '34.808,-107.091,Spring (Salt),Socorro,Hotspring,86,30'; put '35.54,-106.854,San Ysidro Hot Springs,Albuquerque,Hotspring,85,29'; put '36.368,-106.059,Statue Spring,Aztec,Hotspring,83,28'; put '34.833,-107.091,Laguna Pueblo Seeps,Socorro,Hotspring,82,28'; put '33.572,-107.593,Ojo Caliente,Tularosa,Hotspring,83,28'; put '34.854,-107.088,Laguna Pueblo Springs,Socorro,Hotspring,80,27'; put '32.843,-108.512,Mangas Springs,Silver City,Hotspring,81,27'; put '34.769,-107.085,Spring (Salt),Socorro,Hotspring,78,26'; put '34.032,-106.777,Ojo De Las Canas,Socorro,Hotspring,79,26'; put '40.972,-119.007,Black Rock Hot Spring,Lovelock,Hotspring,136,58'; put '38.899,-119.41,Nevada (Hinds) Hot Springs,Walker Lake,Hotspring,144,62'; put '38.922,-118.198,Wedell Hot Springs,Walker Lake,Hotspring,144,62'; put '41.183,-114.991,Hot Springs,Wells,Hotspring,142,61'; put '38.437,-116.277,Hot Creek Valley Spring,Tonopah,Hotspring,142,61'; put '41.788,-114.735,Mineral Hot Spring,Wells,Hotspring,140,60'; put '37.825,-117.337,Alkali Hot Spring,Goldfield,Hotspring,140,60'; put '41.412,-114.675,Wine Cup Ranch Springs,Wells,Hotspring,138,59'; put '40.404,-116.517,Crescent Valley Hot Springs,Winnemucca,Hotspring,138,59'; put '40.417,-116.507,Crescent Valley Hot Springs,Winnemucca,Hotspring,138,59'; put '40.603,-116.463,Horseshoe Ranch Springs,Winnemucca,Hotspring,136,58'; put '41.378,-119.182,Springs (Hot),Vya,Hotspring,136,58'; put '39.883,-114.893,Cherry Creek Hot Springs,Ely,Hotspring,144,62'; put '40.922,-117.108,Hot Pot (Blossom Hot Springs),Winnemucca,Hotspring,136,58'; put '41.721,-118.505,Howard Hot Spring,Vya,Hotspring,135,57'; put '41.421,-117.388,The Hot Springs,Mcdermitt,Hotspring,135,57'; put '40.418,-117.415,Buffalo Springs,Winnemucca,Hotspring,162,72'; put '39.031,-116.666,Dianas Punch Bowl,Millett,Hotspring,138,59'; put '39.404,-116.347,Klobe (Bartholomae) Hot Spring,Millett,Hotspring,156,69'; put '36.975,-116.721,Hicks Hot Springs,Death Valley,Hotspring,109,43'; put '40.178,-117.496,Home Station Ranch Hot Spring,Winnemucca,Hotspring,135,57'; put '39.797,-118.067,Dixie Hot Springs,Reno,Hotspring,162,72'; put '39.904,-116.588,Walti Hot Springs,Millett,Hotspring,162,72'; put '38.981,-119.833,Walleys Hot Springs,Walker Lake,Hotspring,160,71'; put '38.464,-115.792,Chimney Warm Spring,Lund,Hotspring,160,71'; put '39.328,-116.858,Spencer Hot Springs,Millett,Hotspring,162,72'; put '41.108,-117.578,Hot Springs,Mcdermitt,Hotspring,158,70'; put '36.002,-114.742,Spring,Las Vegas,Hotspring,145,63'; put '41.576,-115.181,Hot Creek Springs,Wells,Hotspring,151,66'; put '40.954,-117.488,Golconda Hot Spring (South),Winnemucca,Hotspring,151,66'; put '40.22,-116.068,Bruffeys Hot Springs,Winnemucca,Hotspring,149,65'; put '40.249,-115.409,Smith Ranch Springs,Elko,Hotspring,149,65'; put '41.867,-114.692,San Jacinto Ranch Spring,Wells,Hotspring,148,64'; put '40.765,-116.04,Hot Sulphur Springs,Winnemucca,Hotspring,147,64'; put '38.188,-116.373,Warm Springs,Tonopah,Hotspring,145,63'; put '41.567,-118.564,Dyke Hot Springs,Vya,Hotspring,158,70'; put '38.365,-115.867,Abel Spring,Lund,Hotspring,115,46'; put '41.929,-114.071,Nile Spring,Wells,Hotspring,109,43'; put '39.193,-119.752,Carson Hot Springs,Reno,Hotspring,120,49'; put '39.512,-119.907,Lawton Hot Springs,Reno,Hotspring,120,49'; put '39.944,-119.509,Anaho Island Spring,Reno,Hotspring,120,49'; put '37.761,-117.632,Silverpeak Hot Spring,Goldfield,Hotspring,118,48'; put '37.621,-114.51,Caliente Hot Springs,Caliente,Hotspring,118,48'; put '39.058,-119.742,Saratoga Hot Spring,Reno,Hotspring,122,50'; put '39.308,-117.552,Hot Springs,Millett,Hotspring,115,46'; put '40.673,-116.838,Hot Springs,Winnemucca,Hotspring,122,50'; put '39.08,-116.639,Potts Ranch Hot Springs,Millett,Hotspring,113,45'; put '38.388,-115.866,Coyote Hole Spring,Lund,Hotspring,113,45'; put '41.753,-118.841,Warm Springs,Vya,Hotspring,112,44'; put '41.386,-114.165,Spring (Hot),Wells,Hotspring,111,44'; put '40.961,-117.494,Golconda Hot Spring (North),Winnemucca,Hotspring,165,74'; put '40.313,-117.07,Mound Springs,Winnemucca,Hotspring,109,43'; put '40.585,-115.285,Sulphur Hot Springs,Elko,Hotspring,205,96'; put '39.059,-119.815,Hobo Hot Springs,Reno,Hotspring,114,46'; put '40.191,-117.107,Hot Springs,Winnemucca,Hotspring,127,53'; put '40.819,-115.777,Hot Hole,Elko,Hotspring,133,56'; put '39.286,-119.84,Bowers Mansion Hot Spring,Reno,Hotspring,133,56'; put '41.809,-118.861,Painted Hills Mine,Vya,Hotspring,131,55'; put '41.925,-118.805,Bog Hot Springs,Vya,Hotspring,131,55'; put '41.647,-115.775,Wild Horse Hot Springs,Wells,Hotspring,129,54'; put '40.183,-117.102,Hot Springs Ranch,Winnemucca,Hotspring,129,54'; put '40.08,-117.604,Mccoy Springs,Winnemucca,Hotspring,120,49'; put '41.353,-119.216,Spring (Hot),Vya,Hotspring,127,53'; put '41.357,-119.188,Springs (Hot),Vya,Hotspring,133,56'; put '40.198,-117.103,Hot Springs,Winnemucca,Hotspring,127,53'; put '39.42,-119.738,Dimonte Spring,Reno,Hotspring,127,53'; put '38.952,-115.23,Williams Hot Spring,Lund,Hotspring,127,53'; put '41.261,-115.305,Hot Springs,Wells,Hotspring,126,52'; put '39.041,-116.663,Hot Spring,Millett,Hotspring,124,51'; put '41.365,-119.221,Spring (Hot),Vya,Hotspring,122,50'; put '41.159,-114.986,"Threemile Spring, Sulphur Hot Spr",Wells,Hotspring,122,50'; put '41.339,-119.192,Springs (Hot),Vya,Hotspring,127,53'; put '39.893,-116.649,Little Hot Springs,Millett,Hotspring,H,H'; put '39.787,-119.011,Bradys Hot Springs,Reno,Hotspring,209,98'; put '41.175,-115.278,Hot Spring,Wells,Hotspring,H,H'; put '41.145,-114.994,Hot Spring,Wells,Hotspring,H,H'; put '40.864,-117.349,Sulphur Spring,Winnemucca,Hotspring,H,H'; put '39.733,-119.039,Eagle Salt Works Spring,Reno,Hotspring,H,H'; put '39.281,-118.42,Sand Springs,Reno,Hotspring,H,H'; put '38.81,-116.397,Fish Springs,Tonopah,Hotspring,W,W'; put '39.559,-117.427,Petersons Mill Hot Spring,Millett,Hotspring,H,H'; put '38.339,-116.662,Warm Spring,Tonopah,Hotspring,W,W'; put '38.859,-119.175,Hot Spring,Walker Lake,Hotspring,H,H'; put '39.995,-117.854,Senator Fumaroles,Millett,Hotspring,B,B'; put '39.565,-118.856,(Soda Lake Area),Reno,Hotspring,210,99'; put '40.141,-119.687,The Needle Rocks Hot Springs,Lovelock,Hotspring,208,98'; put '40.146,-119.673,The Needle Rocks Hot Spring,Lovelock,Hotspring,208,98'; put '40.662,-119.365,Great Boiling Spring (Gerlach),Lovelock,Hotspring,208,98'; put '39.388,-119.743,Steamboat Springs,Reno,Hotspring,205,96'; put '39.866,-118.017,Dixie Comstock Mine,Reno,Hotspring,H,H'; put '40.746,-116.689,White House Spring,Winnemucca,Hotspring,W,W'; put '39.98,-119.502,Pyramid Island Hot Spring,Reno,Hotspring,.,.'; put '41.934,-118.808,Warm Springs,Vya,Hotspring,W,W'; put '41.385,-116.058,Petaini Springs,Mcdermitt,Hotspring,W,W'; put '41.064,-115.389,Warm Springs,Wells,Hotspring,W,W'; put '41.066,-114.99,Spring,Wells,Hotspring,W,W'; put '41.355,-114.133,Warm Springs,Wells,Hotspring,W,W'; put '41.148,-116.733,Hot Lake,Mcdermitt,Hotspring,H,H'; put '40.684,-116.153,Ellison Ranch Warm Spring,Winnemucca,Hotspring,W,W'; put '40.604,-117.648,Leach Hot Springs,Winnemucca,Hotspring,207,97'; put '40.751,-115.035,Warm Springs,Elko,Hotspring,W,W'; put '40.782,-115.363,Warm Spring,Elko,Hotspring,W,W'; put '39.529,-116.388,Warm Spring,Millett,Hotspring,W,W'; put '39.072,-115.635,Big Blue Spring,Ely,Hotspring,W,W'; put '38.95,-119.388,Spring,Walker Lake,Hotspring,W,W'; put '38.965,-118.689,Double Spring,Walker Lake,Hotspring,W,W'; put '38.458,-117.303,Indian Springs,Tonopah,Hotspring,W,W'; put '40.592,-116.157,Raine Ranch Springs,Winnemucca,Hotspring,W,W'; put '39.941,-116.681,Hot Springs,Millett,Hotspring,180,82'; put '40.567,-116.588,Beowawe Hot Springs (The Geysers),Winnemucca,Hotspring,208,98'; put '40.761,-117.492,Hot Springs,Winnemucca,Hotspring,185,85'; put '40.653,-119.378,Mud Springs,Lovelock,Hotspring,184,84'; put '38.768,-119.174,Wilson Hot Spring,Walker Lake,Hotspring,183,84'; put '41.921,-118.709,Baltazor Hot Spring,Vya,Hotspring,181,83'; put '40.857,-119.328,Fly Ranch (Wards) Hot Springs,Lovelock,Hotspring,180,82'; put '39.597,-119.11,Patua Hot Springs (Fernley),Reno,Hotspring,187,86'; put '39.028,-117.136,Mcleod Ranch Hot Spring,Millett,Hotspring,180,82'; put '40.316,-116.433,Hot Spring,Winnemucca,Hotspring,186,86'; put '38.521,-116.365,Hot Creek Ranch Hot Spring,Tonopah,Hotspring,180,82'; put '41.051,-119.028,Double Hot Springs,Vya,Hotspring,178,81'; put '40.003,-117.718,Hyder Hot Springs,Winnemucca,Hotspring,176,80'; put '39.665,-114.807,Monte Neva Hot Springs,Ely,Hotspring,176,80'; put '40.368,-117.327,Buffalo Valley Hot Springs,Winnemucca,Hotspring,174,79'; put '40.699,-116.133,Hot Springs (Carlin),Winnemucca,Hotspring,174,79'; put '41.052,-118.717,Macfarlane Hot Spring,Vya,Hotspring,170,77'; put '39.342,-118.578,Borax Spring,Reno,Hotspring,180,82'; put '39.484,-119.804,Moana Springs,Reno,Hotspring,199,93'; put '41.243,-114.947,Twelvemile Spring,Wells,Hotspring,102,39'; put '39.38,-119.74,Steamboat Springs,Reno,Hotspring,205,96'; put '39.558,-116.36,Bartine Hot Springs,Millett,Hotspring,108,42'; put '39.954,-117.917,Fumaroles,Millett,Hotspring,204,96'; put '40.389,-119.402,Hot Seeps (San Emidio Desert),Lovelock,Hotspring,203,95'; put '38.822,-117.183,Darroughs Hot Springs,Tonopah,Hotspring,203,95'; put '40.088,-117.725,Sou (Seven Devils) Hot Springs,Winnemucca,Hotspring,185,85'; put '41.363,-118.788,Pinto Hot Springs,Vya,Hotspring,199,93'; put '40.408,-117.883,Kyle Hot Springs,Winnemucca,Hotspring,171,77'; put '41.357,-118.809,West Pinto Hot Spring,Vya,Hotspring,198,92'; put '39.316,-117.549,Hot Springs,Millett,Hotspring,198,92'; put '41.468,-116.15,Hot Sulphur Springs (Tuscarora),Mcdermitt,Hotspring,194,90'; put '40.813,-115.778,Elko Hot Spring,Elko,Hotspring,190,88'; put '39.208,-118.723,"Lee Hot Springs, Allen Springs",Reno,Hotspring,190,88'; put '40.262,-119.379,Boiling Springs,Lovelock,Hotspring,187,86'; put '40.77,-119.113,Butte Springs (Trego Hot Springs),Lovelock,Hotspring,187,86'; put '39.161,-119.183,Wabuska Hot Springs,Reno,Hotspring,201,94'; put '39.814,-115.612,Giocoecha Warm Springs,Ely,Hotspring,76,24'; put '36.389,-114.433,Blue Point Spring,Las Vegas,Hotspring,82,28'; put '37.016,-117.211,Seep,Goldfield,Hotspring,77,25'; put '37.751,-116.274,Cedar Spring,Goldfield,Hotspring,77,25'; put '37.896,-114.227,Flatnose Ranch Spring,Caliente,Hotspring,77,25'; put '36.207,-115.983,Pahrump (Bennetts) Spring,Las Vegas,Hotspring,77,25'; put '41.775,-115.921,Rizzi Ranch Hot Spring,Wells,Hotspring,106,41'; put '35.944,-114.731,Hot Spring,Kingman,Hotspring,78,26'; put '41.884,-114.117,Gambles Hole,Wells,Hotspring,104,40'; put '36.565,-115.671,Indian Springs,Las Vegas,Hotspring,78,26'; put '39.547,-114.915,Campbell Ranch Springs,Ely,Hotspring,76,24'; put '38.423,-115.022,Flag Springs,Lund,Hotspring,75,24'; put '38.44,-115.011,Butterfield Springs,Lund,Hotspring,75,24'; put '37.997,-118.039,Fish Spring,Mariposa,Hotspring,75,24'; put '37.029,-116.719,Springs,Goldfield,Hotspring,75,24'; put '36.426,-116.411,Ash Tree Spring,Death Valley,Hotspring,75,24'; put '36.033,-115.888,Browns Spring,Las Vegas,Hotspring,75,24'; put '41.322,-119.206,Springs,Vya,Hotspring,75,24'; put '41.706,-118.261,Ninemile Springs,Vya,Hotspring,79,26'; put '35.964,-114.743,Hot Spring,Kingman,Hotspring,82,28'; put '41.763,-118.279,Fivemile Spring,Vya,Hotspring,81,27'; put '39.457,-119.722,Huffaker Springs,Reno,Hotspring,81,27'; put '38.992,-117.042,Charnock (Big Blue) Springs,Tonopah,Hotspring,80,27'; put '36.402,-116.302,Davis Ranch Springs,Death Valley,Hotspring,81,27'; put '36.45,-116.313,Spring,Death Valley,Hotspring,81,27'; put '39.792,-114.692,Lower Shellbourne Spring,Ely,Hotspring,77,25'; put '41.338,-119.168,Springs,Vya,Hotspring,79,26'; put '41.022,-119.275,Caine Spring,Vya,Hotspring,73,23'; put '41.05,-117.1,Hot Springs Ranch Springs,Mcdermitt,Hotspring,79,26'; put '40.079,-116.035,Flynn Ranch Springs,Winnemucca,Hotspring,78,26'; put '40.325,-116.058,Hot Springs,Winnemucca,Hotspring,79,26'; put '36.414,-116.292,Spring,Death Valley,Hotspring,79,26'; put '36.173,-115.191,Las Vegas Springs,Las Vegas,Hotspring,79,26'; put '36.174,-115.479,White Rock Spring,Las Vegas,Hotspring,78,26'; put '36.565,-115.623,Spring,Las Vegas,Hotspring,79,26'; put '36.491,-116.342,"Fairbanks Spring, Soda Spring",Death Valley,Hotspring,81,27'; put '38.654,-114.633,Geyser Ranch Springs,Lund,Hotspring,70,21'; put '36.363,-116.271,Bole Spring,Death Valley,Hotspring,72,22'; put '36.999,-116.706,Spring,Death Valley,Hotspring,72,22'; put '36.942,-115.425,Ash Creek Spring,Las Vegas,Hotspring,72,22'; put '38.796,-119.65,Doud Springs,Walker Lake,Hotspring,70,21'; put '38.622,-115.047,Emigrant Springs,Lund,Hotspring,70,21'; put '38.927,-115.082,Preston Springs,Lund,Hotspring,70,21'; put '36.147,-115.893,Manse Ranch Spring,Las Vegas,Hotspring,75,24'; put '38.645,-114.632,Geyser Ranch Springs,Lund,Hotspring,70,21'; put '38.574,-115.522,Tom Spring,Lund,Hotspring,72,22'; put '38.671,-114.628,Geyser Ranch Springs,Lund,Hotspring,70,21'; put '37.783,-114.528,Bennett Springs,Caliente,Hotspring,70,21'; put '37.86,-114.321,Delmues Springs,Caliente,Hotspring,70,21'; put '36.408,-116.313,Davis Ranch Spring,Death Valley,Hotspring,70,21'; put '36.567,-114.446,Seep,Las Vegas,Hotspring,70,21'; put '41.369,-114.187,Gamble Spring,Wells,Hotspring,69,20'; put '39.901,-115.868,Thompson Ranch Spring,Ely,Hotspring,68,20'; put '38.633,-114.638,Wambolt Springs,Lund,Hotspring,70,21'; put '37.906,-118.171,Sand Spring,Mariposa,Hotspring,74,23'; put '36.486,-114.329,Springs,Las Vegas,Hotspring,77,25'; put '41.354,-119.116,Mustang Springs,Vya,Hotspring,73,23'; put '41.746,-119.791,Warm Springs,Vya,Hotspring,73,23'; put '41.258,-118.937,Cane Springs,Vya,Hotspring,74,23'; put '40.103,-119.884,Fish Springs,Lovelock,Hotspring,73,23'; put '39.853,-119.719,Spring,Reno,Hotspring,73,23'; put '39.832,-116.069,Sulphur Spring,Millett,Hotspring,74,23'; put '36.363,-116.263,Spring,Death Valley,Hotspring,72,22'; put '38.554,-115.531,Kate Spring,Lund,Hotspring,73,23'; put '37.074,-116.691,Spring,Goldfield,Hotspring,72,22'; put '37.979,-117.993,Gap Spring,Goldfield,Hotspring,73,23'; put '41.591,-119.862,Twin (Vya) Spring,Vya,Hotspring,71,22'; put '40.763,-119.172,Coyote Spring,Lovelock,Hotspring,72,22'; put '40.127,-116.884,Springs,Winnemucca,Hotspring,72,22'; put '40.187,-116.805,Spring,Winnemucca,Hotspring,72,22'; put '40.967,-114.515,Johnson Ranch Springs,Elko,Hotspring,72,22'; put '36.205,-115.141,Kyle Spring,Las Vegas,Hotspring,75,24'; put '39.8,-114.653,Upper Shellbourne Spring,Ely,Hotspring,74,23'; put '36.428,-116.303,Button Springs,Death Valley,Hotspring,93,34'; put '38.383,-115.153,Hot Creek Ranch Spring,Lund,Hotspring,90,32'; put '39.283,-114.866,Lackawanna Hot Springs,Ely,Hotspring,95,35'; put '38.532,-116.465,Upper Warm Spring,Tonopah,Hotspring,95,35'; put '38.823,-116.717,South Mosquito Creek Ranch Springs,Tonopah,Hotspring,95,35'; put '40.829,-117.306,Brooks Spring,Winnemucca,Hotspring,93,34'; put '40.992,-117.763,Spring,Winnemucca,Hotspring,93,34'; put '41.971,-114.574,Warm Springs,Wells,Hotspring,95,35'; put '38.95,-115.7,Big Warm Spring,Lund,Hotspring,93,34'; put '37.463,-115.192,Ash Springs,Caliente,Hotspring,97,36'; put '36.464,-116.319,Parent Springs,Death Valley,Hotspring,93,34'; put '38.352,-115.181,Moon River Spring,Lund,Hotspring,92,33'; put '36.402,-116.274,"Point of Rocks Springs, King Sprin",Death Valley,Hotspring,91,33'; put '36.421,-116.322,Crystal Pool,Death Valley,Hotspring,91,33'; put '36.425,-116.291,Devils Hole,Death Valley,Hotspring,92,33'; put '39.068,-119.786,Springs,Reno,Hotspring,90,32'; put '38.954,-117.049,Big Blue (A) Spring,Tonopah,Hotspring,90,32'; put '40.087,-114.647,Collar And Elbow Spring,Elko,Hotspring,93,34'; put '36.378,-114.443,Rogers Spring,Las Vegas,Hotspring,82,28'; put '39.943,-116.073,Shipley Hot Spring,Millett,Hotspring,106,41'; put '38.698,-116.435,"Upper Warm Spring, Warm Spring",Tonopah,Hotspring,106,41'; put '41.53,-118.57,Spring,Vya,Hotspring,104,40'; put '41.877,-115.628,Rowland Hot Springs,Wells,Hotspring,104,40'; put '40.035,-117.604,Lower Ranch Hot Springs,Winnemucca,Hotspring,104,40'; put '40.187,-116.79,Chillis Hot Spring,Winnemucca,Hotspring,102,39'; put '39.988,-116.044,Siri Ranch Spring,Millett,Hotspring,95,35'; put '39.421,-119.758,Zolezzi Spring,Reno,Hotspring,102,39'; put '38.531,-116.405,Old Dugan Ranch Hot Springs,Tonopah,Hotspring,102,39'; put '36.968,-116.723,Burrell Hot Spring,Death Valley,Hotspring,102,39'; put '38.343,-118.103,Soda Springs,Walker Lake,Hotspring,100,38'; put '38.556,-115.767,"Lockes Big Spring, Hay Corral Spr",Lund,Hotspring,100,38'; put '38.594,-115.138,Moorman Spring,Lund,Hotspring,100,38'; put '38.398,-115.862,Storm Spring,Lund,Hotspring,99,37'; put '41.19,-115.287,Hot Spring,Wells,Hotspring,97,36'; put '37.822,-117.48,Pearl Hot Springs,Goldfield,Hotspring,97,36'; put '39.159,-119.737,Nevada State Prison Spring,Reno,Hotspring,75,24'; put '40.025,-117.646,Spring,Winnemucca,Hotspring,83,28'; put '40.83,-119.538,Springs,Lovelock,Hotspring,84,29'; put '39.442,-119.743,Double Diamond Spring,Reno,Hotspring,84,29'; put '39.413,-114.779,Mcgill Spring,Ely,Hotspring,84,29'; put '39.458,-114.756,Schoolhouse Spring,Ely,Hotspring,84,29'; put '36.375,-116.274,Big (Ash Meadows) Spring,Death Valley,Hotspring,83,28'; put '38.292,-114.272,Hammond Ranch Spring,Lund,Hotspring,84,29'; put '41.398,-119.165,Spring,Vya,Hotspring,84,29'; put '41.732,-119.785,Seeps (Hills Warm Spring),Vya,Hotspring,83,28'; put '38.563,-115.528,Blue Eagle Springs,Lund,Hotspring,84,29'; put '40.873,-117.937,Rose Creek Spring,Winnemucca,Hotspring,83,28'; put '39.917,-114.667,Spring,Ely,Hotspring,83,28'; put '36.39,-116.278,Jack Rabbit Spring,Death Valley,Hotspring,82,28'; put '36.437,-116.206,Spring,Death Valley,Hotspring,82,28'; put '38.937,-115.695,Little Warm Spring,Lund,Hotspring,90,32'; put '36.479,-116.326,Rogers Spring,Death Valley,Hotspring,82,28'; put '40.29,-116.049,Carlotti Ranch Springs,Winnemucca,Hotspring,102,39'; put '36.468,-116.325,Longstreet Spring,Death Valley,Hotspring,82,28'; put '36.722,-114.716,Muddy Spring,Las Vegas,Hotspring,90,32'; put '37.532,-115.233,Crystal Springs,Caliente,Hotspring,90,32'; put '37.598,-115.215,Hiko Spring,Caliente,Hotspring,90,32'; put '36.404,-116.383,Spring,Death Valley,Hotspring,90,32'; put '37.996,-116.389,Reveille Mill Spring,Goldfield,Hotspring,84,29'; put '36.71,-114.714,Moapa Warm Springs,Las Vegas,Hotspring,90,32'; put '35.982,-114.748,Hot Springs,Kingman,Hotspring,86,30'; put '40.929,-116.895,Izzenhood Ranch Springs,Winnemucca,Hotspring,88,31'; put '37.807,-114.38,Panaca Spring,Caliente,Hotspring,88,31'; put '36.942,-116.729,Spring,Death Valley,Hotspring,88,31'; put '41.98,-114.376,Hot Spring,Wells,Hotspring,86,30'; put '36.433,-116.308,Scruggs Springs,Death Valley,Hotspring,86,30'; put '40.952,-114.751,Ralphs Warm Springs,Elko,Hotspring,86,30'; put '39.526,-118.876,Soda Lake,Reno,Hotspring,86,30'; put '38.027,-116.683,Spring,Tonopah,Hotspring,86,30'; put '37.741,-115.753,Sand Spring,Caliente,Hotspring,86,30'; put '36.918,-116.744,Beatty Municipal Spring,Death Valley,Hotspring,88,31'; put '38.255,-116.829,Saulsbury Warm Spring,Tonopah,Hotspring,86,30'; put '42.48,-73.37,Lebanon Spring,Albany,Hotspring,72,22'; put '44.241,-122.058,Bigelow Hot Springs,Salem,Hotspring,142,61'; put '44.862,-121.201,Kahneeta Hot Springs,Bend,Hotspring,126,52'; put '44.927,-117.939,Radium Hot Springs,Baker,Hotspring,135,57'; put '44.354,-118.574,Blue Mountain Hot Springs,Canyon City,Hotspring,136,58'; put '44.936,-122.173,Bagby Hot Springs,Salem,Hotspring,136,58'; put '43.944,-118.136,Beulah Hot Springs,Burns,Hotspring,140,60'; put '43.763,-117.156,Mitchell Butte Hot Spring,Boise,Hotspring,144,62'; put '42.116,-121.287,Oregon Hot Springs (Big Hot Spring,Klamath Falls,Hotspring,142,61'; put '45.151,-118.659,Lehman Springs,Pendleton,Hotspring,142,61'; put '43.719,-121.209,East Lake Hot Springs,Crescent,Hotspring,144,62'; put '43.469,-118.202,Luce Hot Springs,Burns,Hotspring,145,63'; put '45.018,-117.625,Medical Hot Springs,Grangeville,Hotspring,140,60'; put '44.867,-121.228,Springs,Bend,Hotspring,125,52'; put '42.188,-118.383,Flagstaff Butte Hot Spring,Adel,Hotspring,126,52'; put '44.451,-119.105,Mount Vernon Hot Springs,Canyon City,Hotspring,121,49'; put '42.977,-117.061,Canters Hot Spring,Jordan Valley,Hotspring,120,49'; put '43.294,-122.367,Umpqua Hot Springs,Roseburg,Hotspring,117,47'; put '44.002,-119.647,Weberg Hot Spring,Canyon City,Hotspring,115,46'; put '43.739,-117.178,Deer Butte Hot Spring,Boise,Hotspring,115,46'; put '43.795,-117.958,Jonesboro Warm Spring,Boise,Hotspring,112,45'; put '42.075,-119.927,Hallinan Spring,Adel,Hotspring,113,45'; put '42.297,-119.776,Fisher Hot Springs,Adel,Hotspring,154,68'; put '45.013,-117.885,Kropp Hot Spring,Grangeville,Hotspring,109,43'; put '42.221,-120.368,Hunters Hot Springs,Klamath Falls,Hotspring,205,96'; put '44.083,-122.233,Cougar Reservoir Hot Springs,Salem,Hotspring,111,44'; put '44.023,-117.46,Neal Hot Springs,Baker,Hotspring,189,87'; put '42.431,-121.963,Eagle Point Spring,Klamath Falls,Hotspring,95,35'; put '43.689,-122.372,Kitson Hot Springs,Roseburg,Hotspring,109,43'; put '44.813,-117.765,Spring (Hot),Baker,Hotspring,W,W'; put '43.776,-118.047,Warm Spring,Burns,Hotspring,W,W'; put '43.793,-118.472,Sitz Warm Spring,Burns,Hotspring,W,W'; put '43.86,-118.288,Altnow Hot Spring,Burns,Hotspring,W,W'; put '43.893,-117.596,Springs,Boise,Hotspring,W,W'; put '45.206,-117.912,Union Station Hot Springs,Grangeville,Hotspring,H,H'; put '44.208,-117.455,Jamieson Hot Springs,Baker,Hotspring,H,H'; put '42.338,-118.602,Hot Springs,Adel,Hotspring,207,97'; put '44.782,-121.975,Breitenbush Hot Springs,Bend,Hotspring,198,92'; put '42.219,-119.877,Warner Valley Ranch,Adel,Hotspring,198,92'; put '42.156,-120.345,Barry Ranch Hot Springs,Klamath Falls,Hotspring,190,88'; put '44.193,-122.049,Belknap Springs,Salem,Hotspring,160,71'; put '45.021,-122.009,Austin Hot Springs,Vancouver,Hotspring,186,86'; put '42.676,-118.344,Mickey Springs,Adel,Hotspring,187,86'; put '44.153,-122.098,Foley Springs,Salem,Hotspring,178,81'; put '45.244,-117.958,Hot Lake Springs,Grangeville,Hotspring,176,80'; put '42.544,-118.533,Alvord Hot Springs,Adel,Hotspring,174,79'; put '43.441,-118.638,Crane Hot Springs,Burns,Hotspring,172,78'; put '42.226,-119.881,Crump Geyser (Crump Spring),Adel,Hotspring,172,78'; put '43.727,-117.203,Snively Hot Spring,Boise,Hotspring,170,77'; put '42.174,-121.615,Olene Gap Hot Springs,Klamath Falls,Hotspring,165,74'; put '43.708,-122.288,Mccredie Springs,Roseburg,Hotspring,163,73'; put '43.982,-117.233,Vale Hot Springs,Boise,Hotspring,163,73'; put '42.162,-120.344,Leithead Hot Spring,Klamath Falls,Hotspring,162,72'; put '45.372,-121.697,Mount Hood Fumaroles,The Dalles,Hotspring,194,90'; put '43.264,-119.015,Dunn Spring,Burns,Hotspring,70,21'; put '42.873,-122.167,Annie Spring,Medford,Hotspring,77,25'; put '42.133,-121.219,Wilkersons Hot Spring,Klamath Falls,Hotspring,76,24'; put '43.272,-119.293,Basque Spring,Burns,Hotspring,74,23'; put '43.276,-119.34,Double O Spring,Burns,Hotspring,74,23'; put '44.073,-119.427,Brisbois Ranch Springs,Canyon City,Hotspring,72,22'; put '43.265,-119.276,Johnson Spring,Burns,Hotspring,72,22'; put '43.281,-119.311,Double O Barnyard Spring,Burns,Hotspring,72,22'; put '43.501,-119.091,Roadland Spring,Burns,Hotspring,72,22'; put '43.529,-119.081,Goodman Spring,Burns,Hotspring,72,22'; put '43.703,-117.19,South Black Willow Spring,Boise,Hotspring,71,22'; put '42.307,-119.875,Moss Ranch Spring,Adel,Hotspring,72,22'; put '43.758,-118.067,Juntura Warm Spring 1,Burns,Hotspring,77,25'; put '43.732,-121.252,Paulina Springs,Crescent,Hotspring,70,21'; put '42.176,-121.828,Howard Holiday,Klamath Falls,Hotspring,77,25'; put '43.477,-119.075,Baker Spring,Burns,Hotspring,70,21'; put '42.178,-121.801,Hardboard Spring,Klamath Falls,Hotspring,70,21'; put '42.325,-120.327,White Rock Ranch Hot Spring,Klamath Falls,Hotspring,71,21'; put '43.252,-119.258,Hughet Spring,Burns,Hotspring,68,20'; put '42.38,-120.33,Bean Hot Spring,Klamath Falls,Hotspring,69,20'; put '42.933,-120.642,Lost Cabin Spring,Klamath Falls,Hotspring,68,20'; put '42.998,-120.725,Buckhorn Creek Springs,Klamath Falls,Hotspring,68,20'; put '42.688,-117.905,Tudors Spring,Jordan Valley,Hotspring,68,20'; put '42.756,-117.55,Scott Spring,Jordan Valley,Hotspring,68,20'; put '42.725,-120.646,Summer Lake Hot Spring,Klamath Falls,Hotspring,109,43'; put '43.757,-118.092,Juntura Warm Spring 2,Burns,Hotspring,95,35'; put '44.374,-118.738,Limekiln Hot Spring,Canyon City,Hotspring,70,21'; put '42.221,-122.742,Jackson Hot Springs,Medford,Hotspring,95,35'; put '44.892,-119.141,Ritter Hot Springs,Canyon City,Hotspring,106,41'; put '43.808,-122.309,Wall Creek Warm Springs,Roseburg,Hotspring,106,41'; put '43.395,-118.308,Springs (Hot),Burns,Hotspring,106,41'; put '43.302,-117.383,Hot Spring,Boise,Hotspring,106,41'; put '44.28,-118.956,Joaquin Miller Hot Springs,Canyon City,Hotspring,104,40'; put '42.501,-119.693,Antelope Hot Springs,Adel,Hotspring,104,40'; put '45.129,-118.738,Hidaway Springs,Pendleton,Hotspring,100,38'; put '44.975,-118.044,Fisher Hot Springs,Canyon City,Hotspring,99,37'; put '44.033,-117.449,Bully Creek Spring,Baker,Hotspring,99,37'; put '42.93,-120.798,Pardon Warm Spring,Klamath Falls,Hotspring,76,24'; put '42.327,-118.602,Borax Lake (Hot Lake),Adel,Hotspring,97,36'; put '42.161,-121.627,Crystal Spring,Klamath Falls,Hotspring,78,26'; put '45.741,-118.233,Bingham Springs,Pendleton,Hotspring,93,34'; put '42.889,-118.898,Fivemile Spring (Hoghouse Hot Sprs,Adel,Hotspring,80,27'; put '43.54,-119.081,Millpond Hot Spring,Burns,Hotspring,79,26'; put '45.891,-116.873,Cook Creek Hot Spring,Grangeville,Hotspring,97,36'; put '45.295,-121.731,Swim Warm Springs,The Dalles,Hotspring,79,26'; put '42.04,-120.924,Warm Spring,Klamath Falls,Hotspring,92,33'; put '44.779,-117.811,Sam O Spring,Baker,Hotspring,80,27'; put '44.538,-117.417,Nelson Spring,Baker,Hotspring,80,27'; put '45.631,-119.703,Well Spring,Pendleton,Hotspring,80,27'; put '42.287,-119.867,Moss Ranch Springs,Adel,Hotspring,83,28'; put '45.061,-118.455,Warm Mineral Spring,Pendleton,Hotspring,83,28'; put '43.95,-119.634,Warm Springs,Burns,Hotspring,84,29'; put '45.295,-117.806,Warm Spring,Grangeville,Hotspring,85,29'; put '42.815,-118.899,Warm Springs,Adel,Hotspring,89,32'; put '43.452,-103.508,Hot Brook Springs,Hot Springs,Hotspring,75,24'; put '43.442,-103.481,Hot Springs,Hot Springs,Hotspring,87,31'; put '29.178,-102.953,Rio Grande Village Spring,Emory Peak,Hotspring,97,36'; put '30.823,-105.315,Indian Hot Springs,Marfa,Hotspring,117,47'; put '30.038,-104.598,Ruidosa Hot Springs,Marfa,Hotspring,113,45'; put '29.182,-102.992,Hot Springs,Emory Peak,Hotspring,106,41'; put '30.21,-104.562,Capote Springs,Marfa,Hotspring,99,37'; put '30.133,-104.602,Nixon Spring,Marfa,Hotspring,90,32'; put '29.787,-104.462,Springs (Las Cienegas),Presidio,Hotspring,86,30'; put '30.861,-105.34,Red Bull Spring,Marfa,Hotspring,99,37'; put '38.85,-112.49,Hatton Hot Spring,Richfield,Hotspring,100,38'; put '40.176,-111.801,Bird Island,Salt Lake City,Hotspring,86,30'; put '41.917,-111.958,Gancheff Spring,Ogden,Hotspring,88,31'; put '37.942,-112.438,Lefevre,Cedar City,Hotspring,90,32'; put '37.335,-113.687,Veyo Hot Spring,Cedar City,Hotspring,90,32'; put '40.332,-111.891,Fault Zone Spring,Salt Lake City,Hotspring,90,32'; put '40.146,-111.806,Lincoln Point Warm Springs,Salt Lake City,Hotspring,90,32'; put '38.186,-112.912,Us Blm,Richfield,Hotspring,91,33'; put '41.833,-112.454,Blue Creek Spring,Brigham City,Hotspring,82,28'; put '40.526,-111.488,Midway Hot Springs,Salt Lake City,Hotspring,100,38'; put '40.525,-111.468,Midway Hot Springs,Salt Lake City,Hotspring,104,40'; put '40.038,-111.529,Castilla Springs,Salt Lake City,Hotspring,104,40'; put '38.217,-112.904,Dotsons (Radium) Warm Spring,Richfield,Hotspring,91,33'; put '40.465,-109.221,Split Mountain Warm Springs,Vernal,Hotspring,86,30'; put '40.788,-112.017,Hobo Warm Spring,Tooele,Hotspring,84,29'; put '40.788,-111.899,Wasatch Hot Springs,Salt Lake City,Hotspring,108,42'; put '39.35,-113.515,Tule Spring,Delta,Hotspring,82,28'; put '39.424,-113.485,Coyote Spring,Delta,Hotspring,82,28'; put '39.842,-113.392,Fish Springs,Delta,Hotspring,82,28'; put '39.887,-113.413,North Springs,Delta,Hotspring,82,28'; put '41.756,-113.603,Warm Spring,Brigham City,Hotspring,81,27'; put '41.038,-111.656,Como Springs,Ogden,Hotspring,81,27'; put '40.397,-112.421,Morgans Warm Spring,Tooele,Hotspring,80,27'; put '39.464,-114.038,Gandy Warm Springs,Ely,Hotspring,81,27'; put '40.447,-110.828,Warm Springs,Salt Lake City,Hotspring,79,26'; put '37.7,-110.421,Warm Spring,Escalante,Hotspring,79,26'; put '40.502,-114.038,Blue Lake Spring,Elko,Hotspring,84,29'; put '38.503,-112.849,Roosevelt Hot Springs,Richfield,Hotspring,133,56'; put '38.774,-112.096,Richfield Warm Springs,Richfield,Hotspring,73,23'; put '40.488,-111.911,Crystal Hot Springs,Salt Lake City,Hotspring,187,86'; put '38.186,-113.197,Thermo Hot Springs,Richfield,Hotspring,185,85'; put '38.172,-113.204,Thermo Hot Springs,Richfield,Hotspring,181,83'; put '39.613,-112.729,"Baker (Abraham, Crater) Hot Spring",Delta,Hotspring,180,82'; put '38.639,-112.098,Red Hill Hot Spring,Richfield,Hotspring,171,77'; put '38.633,-112.107,Monroe (Cooper) Hot Springs,Richfield,Hotspring,169,76'; put '38.613,-112.202,Joseph Hot Springs,Richfield,Hotspring,147,64'; put '39.906,-113.43,Wilson Health Springs,Delta,Hotspring,142,61'; put '41.138,-112.175,Hooper Hot Springs,Brigham City,Hotspring,140,60'; put '41.338,-112.031,Utah Hot Springs,Brigham City,Hotspring,138,59'; put '38.864,-112.506,Meadow Hot Springs,Richfield,Hotspring,106,41'; put '40.815,-111.918,Becks Hot Spring,Salt Lake City,Hotspring,133,56'; put '37.189,-113.272,Dixie (Laverkin) Hot Springs,Cedar City,Hotspring,108,42'; put '41.659,-112.087,Crystal (Madsens) Hot Springs,Brigham City,Hotspring,129,54'; put '41.855,-112.158,Udy Hot Springs,Brigham City,Hotspring,124,51'; put '41.578,-112.23,Stinking Hot Springs,Brigham City,Hotspring,118,48'; put '40.517,-111.475,Midway Hot Spring,Salt Lake City,Hotspring,115,46'; put '40.536,-111.478,Warm Ditch Spring,Salt Lake City,Hotspring,115,46'; put '40.35,-111.905,Saratoga Hot Springs,Salt Lake City,Hotspring,111,44'; put '40.353,-111.895,Crater Hot Spring,Salt Lake City,Hotspring,111,44'; put '41.901,-112.999,Coyote Spring,Brigham City,Hotspring,109,43'; put '41.687,-113.986,Spring (Hot),Brigham City,Hotspring,108,42'; put '41.582,-112.256,Little Mountain Hot Spring,Brigham City,Hotspring,108,42'; put '41.822,-113.263,L.G. Carter Springs,Brigham City,Hotspring,77,25'; put '41.236,-111.924,Ogden Hot Spring,Ogden,Hotspring,135,57'; put '37.178,-113.634,Snow Spring,Cedar City,Hotspring,70,21'; put '38.34,-113.22,Woodhouse Spring,Richfield,Hotspring,72,22'; put '38.155,-112.901,Willow Spring,Richfield,Hotspring,72,22'; put '38.56,-112.578,Sulphurdale,Richfield,Hotspring,72,22'; put '38.981,-111.829,Salt Spring,Salina,Hotspring,72,22'; put '37.174,-112.535,Red Canyon,Cedar City,Hotspring,72,22'; put '41.808,-113.327,W.R. Carter Springs,Brigham City,Hotspring,70,21'; put '41.818,-113.311,Larson Springs,Brigham City,Hotspring,70,21'; put '41.829,-113.654,Head Spring,Brigham City,Hotspring,70,21'; put '40.653,-112.907,Redlum Spring,Tooele,Hotspring,70,21'; put '40.458,-111.929,Camp Williams,Salt Lake City,Hotspring,70,21'; put '40.647,-112.524,Grantsville Warm Springs,Tooele,Hotspring,77,25'; put '39.183,-111.691,Sterling (Peacock) Warm Spring,Price,Hotspring,72,22'; put '39.246,-111.645,Livingston Warm Springs,Price,Hotspring,73,23'; put '38.138,-112.863,Big Maple Spring,Richfield,Hotspring,70,21'; put '37.393,-113.61,Irvine Spring,Cedar City,Hotspring,70,21'; put '41.563,-113.954,Kimber (Rose) Spring,Brigham City,Hotspring,68,20'; put '41.614,-113.613,Warm Spring,Brigham City,Hotspring,68,20'; put '41.328,-111.826,Patio Springs,Ogden,Hotspring,68,20'; put '40.172,-112.426,Davis,Tooele,Hotspring,68,20'; put '40.118,-111.337,Diamond Fork Warm Springs,Salt Lake City,Hotspring,68,20'; put '39.249,-113.877,Knoll Springs,Delta,Hotspring,68,20'; put '39.403,-113.863,Twin Springs,Delta,Hotspring,68,20'; put '39.788,-111.881,Ray Lunt Spring,Price,Hotspring,68,20'; put '38.762,-112.87,Springs,Richfield,Hotspring,68,20'; put '38.77,-112.871,Coyote Spring,Richfield,Hotspring,68,20'; put '37.937,-112.424,Tebbs,Cedar City,Hotspring,68,20'; put '37.096,-113.447,Warner Valley Spring,Cedar City,Hotspring,70,21'; put '40.565,-112.738,Deseret Livestock South Springs,Tooele,Hotspring,73,23'; put '37.158,-113.399,Virgin River Spring,Cedar City,Hotspring,70,21'; put '39.899,-112.045,Springs,Delta,Hotspring,72,22'; put '38.603,-112.111,Johnson Warm Spring,Richfield,Hotspring,77,25'; put '41.722,-112.266,Bothwell Warm Springs,Brigham City,Hotspring,75,24'; put '40.538,-112.747,Deseret Livestock,Tooele,Hotspring,75,24'; put '40.733,-112.621,Utah Fish And Game Dept,Tooele,Hotspring,75,24'; put '40.228,-111.867,Warm Springs,Salt Lake City,Hotspring,75,24'; put '37.137,-113.513,Warm Spring,Cedar City,Hotspring,75,24'; put '37.138,-113.528,Green Spring,Cedar City,Hotspring,75,24'; put '37.166,-113.383,Berry Springs,Cedar City,Hotspring,75,24'; put '41.834,-112.054,Cutler Warm Spring,Brigham City,Hotspring,73,23'; put '40.614,-112.709,Horseshoe Springs,Tooele,Hotspring,73,23'; put '41.239,-112.413,Compton Spring,Brigham City,Hotspring,72,22'; put '40.743,-112.642,Big Warm Springs,Tooele,Hotspring,72,22'; put '40.558,-112.739,Deseret Livestock South Spring,Tooele,Hotspring,72,22'; put '40.39,-112.424,Russells Warm Springs,Tooele,Hotspring,72,22'; put '41.831,-113.391,Pugsley,Brigham City,Hotspring,73,23'; put '41.449,-112.442,Poulsen Spring (Salt),Brigham City,Hotspring,72,22'; put '40.167,-111.622,Wood Springs,Salt Lake City,Hotspring,73,23'; put '40.234,-111.865,Warm Springs,Salt Lake City,Hotspring,77,25'; put '39.955,-111.858,Goshen Warm Srings,Price,Hotspring,73,23'; put '39.334,-113.518,South Tule Spring,Delta,Hotspring,77,25'; put '39.616,-112.803,Fumarole Butte,Delta,Hotspring,73,23'; put '40.545,-111.928,East Jordan Canal,Salt Lake City,Hotspring,73,23'; put '41.643,-112.281,Springs,Brigham City,Hotspring,72,22'; put '37.29,-80.619,New River White Sulphur Springs,Bluefield,Hotspring,85,29'; put '37.997,-79.83,Hot Springs,Roanoke,Hotspring,106,41'; put '37.898,-79.462,Rockbridge Baths,Roanoke,Hotspring,72,22'; put '38.055,-79.78,Warm Springs,Charlottesvill,Hotspring,95,35'; put '37.963,-79.861,Healing Springs,Roanoke,Hotspring,86,30'; put '38.238,-79.65,Bragg Spring,Charlottesvill,Hotspring,75,24'; put '37.645,-80.238,Sweet Chalybeate Spring,Bluefield,Hotspring,75,24'; put '38.218,-79.673,Bolar Spring,Charlottesvill,Hotspring,73,23'; put '37.86,-79.988,Layton Spring,Roanoke,Hotspring,72,22'; put '37.87,-79.933,Falling Spring,Roanoke,Hotspring,77,25'; put '37.16,-80.806,Alum Springs,Bluefield,Hotspring,72,22'; put '46.852,-121.758,Mt Rainier Fumaroles,Yakima,Hotspring,162,72'; put '46.738,-121.562,Ohanapecosh Hot Springs,Yakima,Hotspring,122,50'; put '47.707,-121.155,Scenic Hot Springs,Wenatchee,Hotspring,122,50'; put '47.969,-123.864,Sol Duc Hot Springs,Seattle,Hotspring,122,50'; put '48.974,-119.475,Hot Lake,Okanogan,Hotspring,122,50'; put '45.658,-121.962,Moffetts (Bonneville) Hot Springs,The Dalles,Hotspring,97,36'; put '48.906,-119.455,Poison Lake,Okanogan,Hotspring,122,50'; put '45.701,-121.728,Collins Hot Springs,The Dalles,Hotspring,122,50'; put '47.484,-121.391,Goldmeyer Hot Springs,Wenatchee,Hotspring,127,53'; put '46.202,-121.492,Mount Adams Fumaroles,Yakima,Hotspring,150,66'; put '46.198,-122.197,Mt St Helens Fumaroles,Hoquiam,Hotspring,190,88'; put '48.789,-121.804,Dorr Fumarole Field,Concrete,Hotspring,194,90'; put '48.77,-121.813,Sherman Crater Fumaroles,Concrete,Hotspring,266,130'; put '45.723,-121.927,Rock Creek Hot Springs,The Dalles,Hotspring,H,H'; put '48.15,-121.062,Gamma Hot Springs,Concrete,Hotspring,140,60'; put '46.378,-122.265,Green River Soda Spring,Hoquiam,Hotspring,86,30'; put '46.575,-121.706,Packwood Hot Spring,Yakima,Hotspring,100,38'; put '47.201,-121.536,Lester Hot Springs,Wenatchee,Hotspring,120,49'; put '46.024,-118.771,Warm Springs Canyon Warm Spring,Walla Walla,Hotspring,72,22'; put '46.345,-121.6,Orr Creek Warm Springs,Yakima,Hotspring,72,22'; put '46.041,-121.181,Fish Hatchery Warm Spring,Yakima,Hotspring,75,24'; put '46.752,-121.814,Longmire Mineral Springs,Yakima,Hotspring,77,25'; put '47.892,-121.342,Garland Mineral Springs,Wenatchee,Hotspring,84,29'; put '46.452,-120.956,Simcoe Soda Springs,Yakima,Hotspring,90,32'; put '48.254,-121.17,Sulphur Creek Hot Springs,Concrete,Hotspring,99,37'; put '48.118,-121.192,Kennedy Hot Spring,Concrete,Hotspring,100,38'; put '48.763,-121.667,Baker Hot Spring,Concrete,Hotspring,108,42'; put '47.977,-123.682,Olympic Hot Springs,Seattle,Hotspring,118,48'; put '45.728,-121.8,St Martins Hot Springs,The Dalles,Hotspring,120,49'; put '45.821,-121.133,Klickitat Mineral Springs,The Dalles,Hotspring,81,27'; put '38.163,-79.975,Minnehaha Springs,Charlottesvill,Hotspring,70,21'; put '37.63,-80.24,Old Sweet Spring,Bluefield,Hotspring,73,23'; put '39.618,-78.23,Berkeley Springs,Cumberland,Hotspring,72,22'; put '38.605,-79.353,Thorn Spring,Charlottesvill,Hotspring,72,22'; put '39.471,-77.877,Swan Pond Spring,Baltimore,Hotspring,72,22'; put '44.29,-110.504,"Hot Springs,heart Lake Geyser Basi",Ashton,Hotspring,201,94'; put '44.691,-110.728,Geyser Springs Group,Ashton,Hotspring,201,94'; put '44.554,-110.812,Fountain Group,Ashton,Hotspring,201,94'; put '44.543,-110.859,Fairy Springs,Ashton,Hotspring,201,94'; put '44.485,-110.852,"Biscuit Basin, Sapphire Pool",Ashton,Hotspring,201,94'; put '44.48,-110.85,Cascade Group,Ashton,Hotspring,201,94'; put '44.46,-110.844,Black Sand Basin,Ashton,Hotspring,201,94'; put '44.459,-110.835,Myriad Group,Ashton,Hotspring,201,94'; put '44.307,-110.526,"Hot Springs,heart Lake Geyser Basi",Ashton,Hotspring,201,94'; put '44.354,-110.8,Shoshone Geyser Basin,Ashton,Hotspring,203,95'; put '44.568,-110.805,Quagmire Group,Ashton,Hotspring,203,95'; put '44.537,-110.801,"White Dome Geyser, Surprise Pool",Ashton,Hotspring,203,95'; put '44.52,-110.828,Flood Group,Ashton,Hotspring,203,95'; put '44.471,-110.843,"Daisy Group, Sentinel Geysers",Ashton,Hotspring,203,95'; put '44.466,-110.839,"Middle Group,tortoise Shell,inkwel",Ashton,Hotspring,203,95'; put '44.46,-110.828,"Geyser Hill Group, Old Faithful Ge",Ashton,Hotspring,203,95'; put '44.908,-110.393,Calcite Springs,Ashton,Hotspring,201,94'; put '44.417,-110.57,West Thumb Geyser Basin,Ashton,Hotspring,203,95'; put '44.459,-110.817,Southeastern Group,Ashton,Hotspring,198,92'; put '44.433,-110.581,Potts Hot Spring Basin,Ashton,Hotspring,203,95'; put '44.421,-110.952,Smoke Jumper Hot Springs,Ashton,Hotspring,198,92'; put '44.684,-110.753,Monument Geyser Basin,Ashton,Hotspring,197,92'; put '44.679,-110.746,Beryl Spring,Ashton,Hotspring,198,92'; put '44.544,-110.258,Turbid Springs,Ashton,Hotspring,198,92'; put '44.53,-110.297,Steamboat Springs,Ashton,Hotspring,198,92'; put '44.518,-110.813,"Hot Springs, Rabbit Creek Group",Ashton,Hotspring,198,92'; put '44.514,-110.828,Rabbit Creek Group,Ashton,Hotspring,198,92'; put '44.484,-110.873,Mystic Falls Springs,Ashton,Hotspring,198,92'; put '44.739,-110.324,Josephs Coat Springs,Ashton,Hotspring,199,93'; put '44.75,-110.714,Gas Vent,Ashton,Hotspring,H,H'; put '44.282,-110.506,Rustic Geyser,Ashton,Hotspring,199,93'; put '44.571,-110.811,Morning Mist Springs,Ashton,Hotspring,205,96'; put '44.733,-110.703,Cistern Spring,Ashton,Hotspring,199,93'; put '44.697,-110.724,Gibbon Hill Geyser,Ashton,Hotspring,199,93'; put '44.693,-110.738,Artists Paintpots,Ashton,Hotspring,199,93'; put '44.69,-110.384,Hot Springs on Bog Creek,Ashton,Hotspring,199,93'; put '44.526,-110.835,Excelsior Geyser Crater,Ashton,Hotspring,199,93'; put '44.418,-110.805,Lone Star Geyser,Ashton,Hotspring,199,93'; put '44.309,-110.654,Hot Springs on Lewis Lake,Ashton,Hotspring,199,93'; put '44.469,-110.828,Solitary Geyser,Ashton,Hotspring,198,92'; put '44.433,-110.813,Hot Springs,Ashton,Hotspring,H,H'; put '44.766,-110.3,Hot Springs,Ashton,Hotspring,H,H'; put '44.61,-110.438,Hot Springs,Ashton,Hotspring,H,H'; put '44.607,-110.617,Hot Springs East of Mary Lake,Ashton,Hotspring,H,H'; put '44.601,-110.632,Gas Vent East of Mary Lake,Ashton,Hotspring,H,H'; put '44.595,-110.622,Gas Vents Southeast of Mary Lake,Ashton,Hotspring,H,H'; put '44.572,-110.691,Hot Springs,Ashton,Hotspring,H,H'; put '44.553,-110.301,Beach Springs,Ashton,Hotspring,H,H'; put '44.551,-110.85,Springs on Fairy Creek,Ashton,Hotspring,H,H'; put '44.616,-110.616,Highland Hot Springs,Ashton,Hotspring,H,H'; put '44.438,-110.977,Hot Springs on Continental Divide,Ashton,Hotspring,H,H'; put '44.617,-110.432,Mud Geysers,Ashton,Hotspring,H,H'; put '44.404,-110.824,Hot Springs on Upper Firehole Rive,Ashton,Hotspring,H,H'; put '44.498,-109.193,Buffalo Bill Reservoir Springs,Cody,Hotspring,W,W'; put '44.495,-109.222,Buffalo Bill Reservoir Springs,Cody,Hotspring,W,W'; put '44.482,-109.204,Buffalo Bill Reservoir Springs,Cody,Hotspring,W,W'; put '44.841,-110.167,"Hot, on Lamar River",Ashton,Hotspring,W,W'; put '44.734,-110.029,Hot Springs,Ashton,Hotspring,W,W'; put '44.708,-110.471,Warm Spring,Ashton,Hotspring,W,W'; put '44.701,-110.036,Hot Springs,Ashton,Hotspring,W,W'; put '44.508,-110.832,Midway Picnic Ground,Ashton,Hotspring,H,H'; put '44.715,-110.555,Gas Vents,Ashton,Hotspring,H,H'; put '44.563,-110.834,River Group,Ashton,Hotspring,205,96'; put '44.544,-110.788,"Black Warrior Group, Shelf Spring",Ashton,Hotspring,205,96'; put '44.115,-110.684,Huckleberry Hot Springs,Ashton,Hotspring,B,B'; put '44.842,-110.732,Apollinaris Spring,Ashton,Hotspring,H,H'; put '44.825,-110.675,Gas Vents at Horseshoe Hill,Ashton,Hotspring,H,H'; put '44.781,-110.738,Steam Vents at Roaring Mountain,Ashton,Hotspring,H,H'; put '44.743,-110.242,Hot Spring Basin Group,Ashton,Hotspring,198,92'; put '44.752,-110.256,Hot Spring,Ashton,Hotspring,H,H'; put '44.612,-110.618,Gas Vent,Ashton,Hotspring,H,H'; put '44.741,-110.699,Gas Vent,Ashton,Hotspring,H,H'; put '44.566,-110.871,"Flat Cone Spring, Steep Cone",Ashton,Hotspring,205,96'; put '44.711,-110.468,Hot Springs,Ashton,Hotspring,H,H'; put '44.708,-110.461,Forest Springs,Ashton,Hotspring,H,H'; put '44.672,-110.236,Hot Springs,Ashton,Hotspring,H,H'; put '44.667,-110.282,Hot Springs,Ashton,Hotspring,H,H'; put '44.656,-110.572,Violet Springs,Ashton,Hotspring,H,H'; put '44.642,-110.238,Hot Spring,Ashton,Hotspring,H,H'; put '44.634,-110.234,The Mudkettles,Ashton,Hotspring,H,H'; put '44.634,-110.226,The Mushpots,Ashton,Hotspring,H,H'; put '44.532,-110.874,"Imperial Geyser, Spray Geyser",Ashton,Hotspring,192,89'; put '42.545,-106.725,Alcova Hot Springs,Casper,Hotspring,129,54'; put '42.75,-109.616,Steele Hot Springs,Lander,Hotspring,102,39'; put '43.37,-110.445,Granite Hot Spring,Driggs,Hotspring,106,41'; put '43.008,-108.835,Washakie Mineral Hot Springs,Thermopolis,Hotspring,111,44'; put '43.907,-110.198,North Buffalo Fork Springs,Driggs,Hotspring,113,45'; put '43.365,-110.443,Granite Falls Hot Springs,Driggs,Hotspring,112,45'; put '42.817,-110.997,Johnson Springs,Preston,Hotspring,115,46'; put '44.723,-110.358,Hot Spring on Moss Creek,Ashton,Hotspring,115,46'; put '44.681,-110.326,Hot Springs on Upper Sour Creek,Ashton,Hotspring,194,90'; put '41.45,-106.804,Saratoga Hot Springs,Rawlins,Hotspring,129,54'; put '44.671,-110.786,Secret Valley Hot Springs,Ashton,Hotspring,95,35'; put '44.625,-110.433,Mud Volcano,Ashton,Hotspring,131,55'; put '43.654,-108.194,Thermopolis Hot Springs,Thermopolis,Hotspring,133,56'; put '44.985,-110.689,Hot River,Ashton,Hotspring,136,58'; put '44.588,-110.341,Ebro Springs,Ashton,Hotspring,136,58'; put '44.55,-110.805,Fountain Paint Pot,Ashton,Hotspring,136,58'; put '44.169,-110.583,Snake Hot Springs,Ashton,Hotspring,136,58'; put '44.157,-110.699,Crawfish Creek Hot Springs,Ashton,Hotspring,136,58'; put '44.165,-110.723,Crawfish Creek Hot Springs,Ashton,Hotspring,138,59'; put '44.711,-110.741,Chocolate Pots,Ashton,Hotspring,124,51'; put '43.56,-109.732,Geyser (Warm Spring Creek Springs),Thermopolis,Hotspring,84,29'; put '43.489,-109.605,Jakeys Fork Spring,Thermopolis,Hotspring,68,20'; put '44.749,-108.188,Little Sheep Mountain Spring,Cody,Hotspring,68,20'; put '42.249,-104.781,Warm Springs (Immigrants Washtub),Torrington,Hotspring,70,21'; put '44.608,-108.138,Sheep Mountain Springs,Cody,Hotspring,70,21'; put '43.583,-108.213,Wind River Canyon Spring,Thermopolis,Hotspring,72,22'; put '42.702,-107.105,Horse Creek Springs,Casper,Hotspring,75,24'; put '44.511,-109.156,Needle Hot Springs,Cody,Hotspring,75,24'; put '43.52,-109.669,Little Warm Spring,Thermopolis,Hotspring,77,25'; put '43.3,-110.775,Astoria Mineral Hot Springs,Driggs,Hotspring,99,37'; put '43.543,-110.741,Abercrombie Warm Springs,Driggs,Hotspring,81,27'; put '44.513,-109.115,De Maris Springs,Cody,Hotspring,97,36'; put '42.665,-105.394,Douglas Hot Springs,Torrington,Hotspring,86,30'; put '43.471,-110.835,Boyles Hill Springs,Driggs,Hotspring,86,30'; put '43.282,-110.019,Kendall Warm Spring,Driggs,Hotspring,86,30'; put '44.662,-110.768,Iron Spring,Ashton,Hotspring,86,30'; put '42.492,-108.172,Sweetwater Station Warm Springs,Lander,Hotspring,90,32'; put '44.742,-110.579,Wolf Lake Springs,Ashton,Hotspring,91,33'; put '44.513,-109.129,Shoshone Hot Springs,Cody,Hotspring,95,35'; put '42.828,-110.999,Auburn Hot Springs,Preston,Hotspring,144,62'; put '43.639,-110.615,Kelly Warm Spring,Driggs,Hotspring,81,27'; put '44.532,-110.796,Five Sisters Springs,Ashton,Hotspring,192,89'; put '44.582,-110.314,Vermilion Springs,Ashton,Hotspring,140,60'; put '44.521,-110.275,Butte Springs,Ashton,Hotspring,187,86'; put '44.478,-110.867,Hillside Springs,Ashton,Hotspring,187,86'; put '44.752,-110.418,Hot Springs at Sevenmile Hole,Ashton,Hotspring,189,87'; put '44.401,-110.936,Hot Springs on Continental Divide,Ashton,Hotspring,189,87'; put '44.769,-110.269,Rainbow Springs,Ashton,Hotspring,190,88'; put '44.628,-110.433,Sulphur Caldron,Ashton,Hotspring,190,88'; put '44.702,-110.767,Sylvan Springs,Ashton,Hotspring,192,89'; put '44.529,-110.791,White Creek Group,Ashton,Hotspring,185,85'; put '44.564,-110.869,Queens Laundry,Ashton,Hotspring,192,89'; put '44.697,-110.375,Hot Springs on Bog Creek,Ashton,Hotspring,185,85'; put '44.285,-110.9,Bechler River Hot Springs,Ashton,Hotspring,194,90'; put '44.797,-110.725,Amphitheater Springs,Ashton,Hotspring,196,91'; put '44.766,-110.429,Washburn Hot Springs,Ashton,Hotspring,196,91'; put '44.756,-110.308,Coffee Pot Hot Springs,Ashton,Hotspring,196,91'; put '44.591,-110.321,Hot Springs at Sulphur Hills,Ashton,Hotspring,196,91'; put '44.556,-110.832,River Group,Ashton,Hotspring,196,91'; put '44.422,-110.574,West Thumb Geyser Basin,Ashton,Hotspring,196,91'; put '44.786,-110.74,Semi-Centennial Geyser,Ashton,Hotspring,198,92'; put '44.653,-110.482,Sulphur Springs,Ashton,Hotspring,194,89'; put '44.41,-110.953,Summit Lake Hot Springs,Ashton,Hotspring,162,72'; put '44.761,-110.73,Bijah Spring,Ashton,Hotspring,198,92'; put '44.781,-110.699,Whiterock Springs,Ashton,Hotspring,144,62'; put '44.739,-110.258,Hot Spring Basin Group,Ashton,Hotspring,153,67'; put '44.754,-110.403,Sevenmile Hole,Ashton,Hotspring,154,68'; put '44.276,-110.636,Hot Springs on Lewis Lake,Ashton,Hotspring,154,68'; put '44.598,-110.236,Hot Springs In Pelican Valley,Ashton,Hotspring,156,69'; put '44.142,-110.656,South Entrance Hot Springs,Ashton,Hotspring,156,69'; put '44.753,-110.724,"Roadside Springs, Frying Pan Sprin",Ashton,Hotspring,158,70'; put '44.733,-110.712,Horseshoe Spring,Ashton,Hotspring,187,86'; put '43.958,-110.696,Jackson Lake Hot Springs,Driggs,Hotspring,162,72'; put '44.187,-110.726,Hot Springs,Ashton,Hotspring,142,61'; put '44.967,-110.708,Mammoth Hot Springs,Ashton,Hotspring,163,73'; put '44.475,-110.843,Morning Glory Pool,Ashton,Hotspring,163,73'; put '44.204,-110.486,Hot Springs on Upper Snake River,Ashton,Hotspring,167,75'; put '44.299,-110.517,"Heart Lake Geyser Basin, Middle Gr",Ashton,Hotspring,174,79'; put '44.671,-110.29,Ponuntpa Springs Group,Ashton,Hotspring,180,82'; put '44.244,-111.022,Boundary Creek Hot Springs,Ashton,Hotspring,181,83'; put '44.414,-110.817,"Lone Star Geyser Basin, Footbridge",Ashton,Hotspring,183,84'; put '44.722,-110.701,Echinus Geyser,Ashton,Hotspring,185,85'; put '44.461,-110.854,Emerald Pool,Ashton,Hotspring,158,70'; put ';;;;'; put 'run;'; put '* ServiceInit end;'; put '* Service start;'; put 'proc sql;'; put 'create table areas as select distinct area'; put 'from mydb.springs;'; put '%webout(OPEN)'; put '%webout(OBJ,areas)'; 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=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 '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=NO'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols;'; put '%let numcols=0;'; 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 _null_;'; 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 'newlen=max(formatl,length);'; 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 '/* needs to be wide, for datetimes etc */'; put 'newlen=max(length,formatl,24);'; 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(''len'',_n_),newlen,''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 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; 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;set &ds;'; 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 'data _data_;'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '%do i=1 %to &numcols;'; put 'length &&name&i $&&len&i;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=left(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put 'drop &&newname&i;'; put '%end;'; put 'if _error_ then call symputx(''syscc'',1012);'; put 'run;'; put '%let fmtds=&syslast;'; 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 $32767;'; put 'format &&name&i $32767.;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; 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,''"\''!!''0A0D09000E0F01021011''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/\\/\\\\/'',-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 &showmeta=YES %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; 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=Y,missing=NULL'; put ',showmeta=NO'; 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'; 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(&_debug) ge 131 %then %do;'; put '/* if debug mode, send back first 10 records of each work table also */'; put 'options obs=10;'; 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=YES)'; 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 '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; 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 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=quote(cats(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=quote(cats(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);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; 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 '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'libname mydb (work);'; put 'data mydb.springs ;'; put 'attrib'; put 'Latitude length= 8'; put 'Longitude length= 8'; put 'Name length= $34'; put 'Area length= $14'; put 'Type length= $9'; put 'Farenheit length= 8'; put 'Celsius length= 8'; put ';'; put 'infile cards dsd;'; put 'input'; put 'Latitude'; put 'Longitude'; put 'Name :$char.'; put 'Area :$char.'; put 'Type :$char.'; put 'Farenheit'; put 'Celsius'; 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 'datalines4;'; put '51.925,-177.16,Fumaroles on Kanaga Island,Adak,Hotspring,219,104'; put '65.858,-164.71,Serpentine Hot Springs,Bendeleben,Hotspring,171,77'; put '53.851,-166.918,Hot Springs Near Makushin Volcano,Unalaska,Hotspring,H,H'; put '53.877,-166.448,Hot Springs Near Summer Bay,Unalaska,Hotspring,H,H'; put '52.27,-174.042,Hot Springs on Atka Island,Atka,Hotspring,H,H'; put '52.34,-174.26,Hot Springs on Atka Island,Atka,Hotspring,H,H'; put '52.358,-172.317,Hot Spring on Seguam Island,Seguam,Hotspring,H,H'; put '52.84,-169.9,Chuginadak Hot Springs,Samalga Island,Hotspring,H,H'; put '52.96,-169.71,Hot Spring on Kagamil Island,Samalga Island,Hotspring,H,H'; put '51.94,-178.5,Hot Spring on Little Sitkin Island,Rat Islands,Hotspring,H,H'; put '51.963,-178.491,Fumaroles on Little Sitkin Island,Rat Islands,Hotspring,H,H'; put '51.775,-178.793,Fumaroles on Gareloi Island,Gareloi Island,Hotspring,H,H'; put '53.207,-168.445,Hot Springs Near Geyser Bight,Umnak,Hotspring,H,H'; put '53.892,-166.93,Makushin Volcano Fumaroles,Unalaska,Hotspring,310,154'; put '54.9,-162.885,Hot Spring on Amagat Island,False Pass,Hotspring,H,H'; put '53.213,-168.463,Hot Springs Near Geyser Bight,Umnak,Hotspring,216,102'; put '53.223,-168.477,Hot Springs Near Geyser Bight,Umnak,Hotspring,214,101'; put '53.443,-168.092,Thermal Springs In Okmok Caldera,Umnak,Hotspring,212,100'; put '52.042,-176.108,Hot Springs on Great Sitkin Island,Adak,Hotspring,210,99'; put '55.983,-131.661,Bailey Hot Spring,Ketchikan,Hotspring,198,92'; put '53.242,-168.365,Hot Springs Near Hot Springs Cove,Umnak,Hotspring,192,89'; put '54.157,-165.85,Hot Springs Near Hot Springs Bay,Unimak,Hotspring,181,83'; put '58.033,-136.017,Hot Springs North End Tenakee Inle,Mt. Fairweathe,Hotspring,180,82'; put '65.093,-164.922,Pilgrim Springs,Bendeleben,Hotspring,178,81'; put '57.831,-156.513,W Ukinek Spring,Ugashik,Hotspring,178,81'; put '65.459,-153.312,Little Melozitna Hot Springs,Melozitna,Hotspring,176,80'; put '51.81,-177.79,Hot Spring on Tanaga Island,Adak,Hotspring,H,H'; put '65.233,-144.483,Hot Springs on Big Windy Creek,Circle,Hotspring,H,H'; put '55.334,-162.137,Hot Spring at West End Emmons Lake,Cold Bay,Hotspring,68,20'; put '66.197,-154.006,Tunalkten Lake Hot Spring,Hughes,Hotspring,.,.'; put '67.403,-153.883,Hot Spring Near Arrigetch Peaks,Survey Pass,Hotspring,W,W'; put '65.047,-142.848,Hot Spring on Flat Creek,Charley River,Hotspring,W,W'; put '63.683,-151.233,Hot Springs Near Glacier,Mt. Mckinley,Hotspring,W,W'; put '63.883,-150.717,Hot Springs East of Diamond,Mt. Mckinley,Hotspring,W,W'; put '62.45,-157.933,Hot Spring Near Flat,Iditarod,Hotspring,W,W'; put '60.837,-142.42,Hot Spring on Twelvemile Creek,Bering Glacier,Hotspring,W,W'; put '56.58,-132.18,South Stikine Spring,Petersburg,Hotspring,W,W'; put '52.87,-173.13,Hot Spring on Attu Island,Attu,Hotspring,W,W'; put '65.908,-154.993,Deniktow Ridge Hot Springs,Melozitna,Hotspring,H,H'; put '53.95,-168.037,Hot Springs on Bogoslof Island,Umnak,Hotspring,H,H'; put '65.45,-150,Hot Spring Near Little Minook Cr,Tanana,Hotspring,H,H'; put '51.967,-178.444,Fumaroles on Little Sitkin Island,Rat Islands,Hotspring,H,H'; put '64.002,-156.3,Hot Spring on Tributary of Innoko,Nulato,Hotspring,H,H'; put '61.058,-160.692,Hot Spring Near Tuluksak River,Russian Missio,Hotspring,H,H'; put '61.363,-157.733,Hot Springs on Upper Chuilnuk Rive,Sleetmute,Hotspring,H,H'; put '61.267,-151.238,Hot Lake In Bottom of Crater Peak,Tyonek,Hotspring,H,H'; put '58.24,-155.09,Hot Spring Near Katmai Pass,Mt. Katmai,Hotspring,H,H'; put '58.27,-154.89,Hot Springs Near Mt Katmai,Mt. Katmai,Hotspring,H,H'; put '58.92,-153.98,Hot Spring West of Cape Douglas,Afognak,Hotspring,H,H'; put '55.368,-161.961,Fumarole,Port Moller,Hotspring,H,H'; put '54.18,-165.41,Hot Springs on Akun Island,Unimak,Hotspring,H,H'; put '54.23,-165.66,Hot Springs on Akun Island,Unimak,Hotspring,H,H'; put '54.66,-164.55,Hot Spring on Unimak Island,Unimak,Hotspring,H,H'; put '65.97,-154.033,Pocahontas Hot Springs,Melozitna,Hotspring,H,H'; put '65.216,-149.993,Hutlinana Hot Springs,Livengood,Hotspring,109,43'; put '57.085,-134.839,Baranof Warm Springs,Sitka,Hotspring,124,51'; put '67.283,-155.067,Reed River Hot Spring,Survey Pass,Hotspring,122,50'; put '66.15,-157.117,Hot Springs Near South Bm,Shungnak,Hotspring,122,50'; put '66.233,-157.583,Hot Springs on Hawk River,Shungnak,Hotspring,122,50'; put '65.81,-151.237,Kilo Hot Spring,Tanana,Hotspring,122,50'; put '56.717,-132.005,Chief Shakes Hot Springs,Petersburg,Hotspring,122,50'; put '69.33,-144.044,Okpilak Springs,Mt. Michelson,Hotspring,119,49'; put '65.367,-161.25,Granite Mountain Hot Springs,Candle,Hotspring,120,49'; put '57.644,-135.333,Nylen Hot Springs,Sitka,Hotspring,120,49'; put '65.963,-150.919,Ray River Hot Spring,Tanana,Hotspring,117,47'; put '64.924,-154.837,Horner Hot Springs,Ruby,Hotspring,117,47'; put '65.267,-155.28,Hot Springs Near Dulbi River,Melozitna,Hotspring,126,52'; put '57.807,-136.341,White Sulphur Springs (Hooniah H S,Sitka,Hotspring,111,44'; put '57.781,-135.217,Tenakee Hot Springs,Sitka,Hotspring,109,43'; put '52.19,-174.25,Hot Springs on Atka Island,Atka,Hotspring,167,75'; put '55.334,-133.641,Dalton (Craig) Hot Springs,Craig,Hotspring,109,43'; put '51.944,-178.547,Fumaroles on Little Sitkin Island,Rat Islands,Hotspring,H,H'; put '57.771,-135.82,Hot Spring North Arm Peril Strait,Sitka,Hotspring,100,38'; put '53.848,-166.873,Hot Springs Near Makushin Volcano,Unalaska,Hotspring,94,34'; put '69.627,-146.027,Red Hill Spring,Mt. Michelson,Hotspring,91,33'; put '62.081,-145.007,Upper Klawasi Warm Springs,Gulkana,Hotspring,86,30'; put '62.058,-145.222,Mineral Spring (Lower Klawasi Cone,Gulkana,Hotspring,82,28'; put '56.68,-131.882,Barnes Lake Hot Springs,Bradfield Cana,Hotspring,79,26'; put '56.928,-158.12,Surprise Lake Hot Spring,Chignik,Hotspring,73,23'; put '56.667,-132.28,Twin Lakes Hot Springs,Petersburg,Hotspring,70,21'; put '66.383,-157.517,Warm Spring Near Purcell Mountain,Shungnak,Hotspring,68,20'; put '57.348,-135.385,Hot Spring Near Fish Bay,Sitka,Hotspring,117,47'; put '65.983,-150.56,Hot Springs on Lower Ray River,Tanana,Hotspring,142,61'; put '55.863,-160.493,Hot Spring Near Port Moller,Port Moller,Hotspring,160,71'; put '53.253,-168.358,Hot Springs Near Hot Springs Cove,Umnak,Hotspring,158,70'; put '51.97,-176.61,Hot Springs on Adak Island,Adak,Hotspring,154,68'; put '65.053,-146.057,Chena Hot Springs,Circle,Hotspring,153,67'; put '58.37,-137.09,Hot Springs Near Icy Point,Mt. Fairweathe,Hotspring,153,67'; put '56.836,-135.374,Goddard Hot Springs,Port Alexander,Hotspring,153,67'; put '66.342,-150.85,Kanuti Hot Springs,Bettles,Hotspring,151,66'; put '64.85,-162.3,Clear Creek Hot Springs,Solomon,Hotspring,149,65'; put '53.233,-168.3,Hot Spring on Umnak Island,Umnak,Hotspring,149,65'; put '61.2,-159.863,Hot Springs Near Ophir Creek,Russian Missio,Hotspring,145,63'; put '57.865,-156.499,Gas Rocks Hot Spring,Ugashik,Hotspring,127,53'; put '51.762,-178.77,Fumaroles on Gareloi Island,Gareloi Island,Hotspring,144,62'; put '66.367,-156.767,Hot Springs Near Division Bm,Shungnak,Hotspring,140,60'; put '64.7,-162.467,Hot Spring Near Kwiniuk River,Solomon,Hotspring,106,41'; put '65.274,-148.847,Tolovana Hot Springs,Livengood,Hotspring,140,60'; put '55.933,-131.559,Bell Island Hot Springs,Ketchikan,Hotspring,165,74'; put '57.178,-157.015,Hot Spring Near Mother Goose Lake,Ugashik,Hotspring,138,59'; put '65.483,-144.637,Circle Hot Springs,Circle,Hotspring,135,57'; put '56.233,-131.267,Bradfield Canal Hot Springs,Bradfield Cana,Hotspring,135,57'; put '65.006,-150.633,Manley Hot Springs,Tanana,Hotspring,133,56'; put '65.129,-154.692,Melozi (Melozitna) Springs,Melozitna,Hotspring,131,55'; put '66.217,-149.547,Dall Hot Springs,Beaver,Hotspring,129,54'; put '55.217,-162.483,Hot Springs East of Cold Bay,Cold Bay,Hotspring,129,54'; put '65.217,-162.9,Hot Springs Near Lava Creek,Bendeleben,Hotspring,127,53'; put '54.944,-163.251,Hot Springs Near Morzhovoi,False Pass,Hotspring,145,63'; put '36.48,-91.053,Warm Springs,Poplar Bluff,Hotspring,82,28'; put '34.384,-93.607,Caddo Gap Springs,Little Rock,Hotspring,95,35'; put '34.321,-93.739,Spring on Redland Mountain,Little Rock,Hotspring,77,25'; put '34.406,-93.908,Spring on Little Missouri River,Little Rock,Hotspring,74,23'; put '34.542,-93.024,Big Chalybeate Spring,Little Rock,Hotspring,79,26'; put '34.513,-93.053,Hot Springs,Little Rock,Hotspring,147,64'; put '33.008,-109.778,Grapevine Spring,Clifton,Hotspring,91,33'; put '32.984,-113.324,Agua Caliente Springs,Ajo,Hotspring,102,39'; put '34.563,-113.497,Kaiser Hot Spring,Prescott,Hotspring,99,37'; put '34.076,-111.708,Spring (Hot),Holbrook,Hotspring,99,37'; put '33.17,-110.528,Coolidge Dam Warm Spring,Mesa,Hotspring,99,37'; put '34.695,-113.572,Cofer Hot Spring,Prescott,Hotspring,97,36'; put '33.209,-110.818,Pioneer Spring,Mesa,Hotspring,91,33'; put '33.988,-112.362,Castle Hot Springs,Phoenix,Hotspring,115,46'; put '32.345,-110.247,Warm Springs,Tucson,Hotspring,91,33'; put '36.196,-113.081,Lava Warm Springs,Grand Canyon,Hotspring,90,32'; put '33.068,-109.975,Warm Spring,Clifton,Hotspring,90,32'; put '31.943,-113.013,Quitobaquito Springs,Lukeville,Hotspring,90,32'; put '31.695,-110.963,Agua Caliente Spring,Nogales,Hotspring,90,32'; put '33.075,-109.298,Seep,Clifton,Hotspring,95,35'; put '34.357,-111.71,Verde Hot Springs,Holbrook,Hotspring,104,40'; put '32.998,-109.901,Indian Hot Springs,Silver City,Hotspring,118,48'; put '33.669,-111.165,Roosevelt Dam Springs,Mesa,Hotspring,118,48'; put '32.336,-110.24,Hookers Hot Springs,Tucson,Hotspring,127,53'; put '33.4,-109.152,Hannah Hot Spring,Clifton,Hotspring,133,56'; put '33.08,-109.303,Hot Spring,Clifton,Hotspring,138,59'; put '32.741,-114.068,Radium Hot Springs,El Centro,Hotspring,140,60'; put '32.971,-109.35,Gillard Hot Springs,Silver City,Hotspring,180,82'; put '35.984,-114.742,Hot Spring,Kingman,Hotspring,H,H'; put '33.78,-110.317,Warm Spring,Mesa,Hotspring,W,W'; put '36.418,-113.956,Pakoon Springs,Grand Canyon,Hotspring,86,30'; put '33.493,-112.94,El Dorado Hot Springs,Phoenix South,Hotspring,112,44'; put '34.896,-114.308,Oatman Warm Springs,Needles,Hotspring,91,33'; put '33.055,-109.295,Clifton Hot Springs,Clifton,Hotspring,102,39'; put '34.445,-112.693,Spring,Prescott,Hotspring,72,22'; put '32.337,-110.708,Mercer Spring,Tucson,Hotspring,77,25'; put '34.649,-111.744,Soda Spring,Holbrook,Hotspring,75,24'; put '33.253,-110.703,Spring,Mesa,Hotspring,75,24'; put '31.362,-109.265,Astin Spring,Douglas,Hotspring,75,24'; put '35.169,-113.851,Frost Mine Spring,Williams,Hotspring,70,21'; put '31.673,-109.902,Antelope Spring,Douglas,Hotspring,79,26'; put '35.213,-113.425,Casa Grande Spring,Williams,Hotspring,72,22'; put '33.51,-110.403,Cassadore Spring,Mesa,Hotspring,73,23'; put '34.32,-111.453,Tonto Natural Bridge Spring,Holbrook,Hotspring,72,22'; put '34.405,-111.602,Spring,Holbrook,Hotspring,72,22'; put '34.436,-109.402,Salado Springs,Saint Johns,Hotspring,72,22'; put '31.592,-109.51,Lewis Spring,Douglas,Hotspring,68,20'; put '33.046,-109.44,Eagle Creek Hot Springs,Clifton,Hotspring,97,36'; put '36.509,-111.852,Colorado Pool,Marble Canyon,Hotspring,86,30'; put '33.062,-109.482,Warm Spring,Clifton,Hotspring,73,23'; put '31.637,-110.703,Monkey Spring,Nogales,Hotspring,82,28'; put '32.281,-110.73,Agua Caliente,Tucson,Hotspring,86,30'; put '32.327,-110.228,N-O Spring,Tucson,Hotspring,73,23'; put '32.983,-110.373,Warm Spring,Tucson,Hotspring,79,26'; put '33.152,-110.639,Mescal Warm Spring,Mesa,Hotspring,84,29'; put '33.163,-110.662,Spring,Mesa,Hotspring,82,28'; put '35.077,-113.267,Trout Creek Spring,Williams,Hotspring,81,27'; put '33.438,-110.213,Warm Springs,Mesa,Hotspring,86,30'; put '36.895,-113.913,Springs,Grand Canyon,Hotspring,79,26'; put '35.96,-114.725,Hot Spring,Kingman,Hotspring,86,30'; put '34.925,-114.221,Caliche Spring,Needles,Hotspring,79,26'; put '33.915,-112.332,Mitchell Spring,Phoenix,Hotspring,79,26'; put '33.831,-110.574,Salt Banks,Mesa,Hotspring,78,26'; put '34.91,-113.608,Tom Brown Warm Spring,Prescott,Hotspring,82,28'; put '38.873,-122.689,Seigler Springs,Santa Rosa,Hotspring,126,52'; put '36.814,-117.763,Palm Spring,Death Valley,Hotspring,120,49'; put '34.498,-119.341,Stingleys Hot Springs,Los Angeles,Hotspring,123,51'; put '33.67,-117.325,"Wrenden Hot Sprs, Elsinore Hot Spr",Santa Ana,Hotspring,125,52'; put '37.253,-118.373,Keough Hot Springs,Mariposa,Hotspring,124,51'; put '36.229,-118.302,Jordan Hot Springs,Fresno,Hotspring,124,51'; put '34.502,-119.346,Vickers Hot Springs,Los Angeles,Hotspring,124,51'; put '36.123,-121.64,Slates Hot Springs,Santa Cruz,Hotspring,122,50'; put '35.881,-118.67,California Hot Springs,Bakersfield,Hotspring,122,50'; put '38.788,-122.777,Sulphur Creek,Santa Rosa,Hotspring,120,49'; put '37.648,-118.806,Hot Springs,Mariposa,Hotspring,129,54'; put '36.703,-120.86,Mercey Hot Springs,Santa Cruz,Hotspring,119,48'; put '33.589,-117.511,San Juan Hot Springs,Santa Ana,Hotspring,120,49'; put '38.785,-122.655,Harbin Springs,Santa Rosa,Hotspring,120,49'; put '37.677,-118.79,Dehy Hot Spring,Mariposa,Hotspring,134,57'; put '39.183,-122.7,Bartlett Springs,Ukiah,Hotspring,144,62'; put '36.234,-121.546,Tassajara Hot Springs,Santa Cruz,Hotspring,144,62'; put '36.144,-120.555,Coalinga Mineral Springs,Santa Cruz,Hotspring,112,44'; put '39.033,-122.445,Jones Fountain of Life Spring,Ukiah,Hotspring,142,61'; put '35.575,-118.534,"Miracle Hot Sprs, Hobo Hot Sprs",Bakersfield,Hotspring,119,48'; put '33.284,-116.631,Warner Hot Spring,Santa Ana,Hotspring,138,59'; put '38.237,-119.326,Buckeye Hot Spring,Walker Lake,Hotspring,140,60'; put '41.266,-120.08,Hot Springs (Menlo Baths),Alturas,Hotspring,135,57'; put '33.753,-117.495,Glen Ivy Hot Springs,Santa Ana,Hotspring,131,55'; put '37.802,-118.532,Benton Hot Springs,Mariposa,Hotspring,134,57'; put '38.691,-123.024,Skaggs Springs,Santa Rosa,Hotspring,135,56'; put '35.62,-118.473,Scovern Hot Springs,Bakersfield,Hotspring,133,56'; put '34.538,-119.56,Agua Caliente Spring,Los Angeles,Hotspring,133,56'; put '33.558,-117.154,Murrietta Hot Springs,Santa Ana,Hotspring,132,56'; put '39.226,-120.01,Brockway Hot Springs,Chico,Hotspring,131,55'; put '41.036,-121.926,Hunt Hot Spring,Alturas,Hotspring,136,58'; put '34.582,-119.044,Willett Hot Springs,Los Angeles,Hotspring,108,42'; put '37.234,-118.881,Blaney Meadows Hot Springs,Mariposa,Hotspring,109,43'; put '36.477,-118.404,Kern Hot Spring,Fresno,Hotspring,109,43'; put '36.806,-117.771,Lower Warm Springs,Death Valley,Hotspring,110,43'; put '34.482,-119.302,Matilija Hot Springs,Los Angeles,Hotspring,109,43'; put '34.537,-119.879,San Marcos Hot Spring,Los Angeles,Hotspring,110,43'; put '33.896,-117.057,Eden Hot Springs,Santa Ana,Hotspring,109,43'; put '39.573,-120.348,Campbell Hot Springs,Chico,Hotspring,111,44'; put '38.994,-122.742,Horseshoe Spring,Santa Rosa,Hotspring,108,42'; put '33.969,-116.942,Highland Springs,Santa Ana,Hotspring,112,44'; put '34.34,-117.173,"Warm Spring, Hot Spring",San Bernardino,Hotspring,108,42'; put '41.219,-120.066,Squaw Baths,Alturas,Hotspring,106,41'; put '40.142,-120.935,Indian Valley Hot Springs,Susanville,Hotspring,106,41'; put '39.292,-122.821,Crabtree Hot Springs,Ukiah,Hotspring,106,41'; put '37.108,-121.478,Gilroy Hot Springs,San Jose,Hotspring,106,41'; put '39.227,-123.362,Orrs Springs,Ukiah,Hotspring,104,40'; put '38.773,-122.705,Anderson Springs,Santa Rosa,Hotspring,108,42'; put '38.858,-122.671,Howard Springs,Santa Rosa,Hotspring,113,45'; put '34.461,-119.637,Montecito Hot Springs,Los Angeles,Hotspring,118,48'; put '33.551,-117.167,Temecula Hot Springs,Santa Ana,Hotspring,116,47'; put '33.835,-116.988,Gilman Hot Springs,Santa Ana,Hotspring,117,47'; put '37.618,-119.074,Reds Meadow Hot Springs,Mariposa,Hotspring,115,46'; put '35.528,-118.665,Democrat Hot Springs,Bakersfield,Hotspring,115,46'; put '33.731,-118.348,Whites Point Hot Springs,Long Beach,Hotspring,115,46'; put '37.532,-119.025,Fish Creek Hot Springs,Mariposa,Hotspring,110,43'; put '39.032,-122.432,"Blank Spring, Manzanita Mine Sprs",Ukiah,Hotspring,112,45'; put '37.327,-119.018,Mono Hot Springs,Mariposa,Hotspring,109,43'; put '38.225,-119.217,The Hot Springs,Walker Lake,Hotspring,113,45'; put '35.727,-118.408,Hot Spring,Bakersfield,Hotspring,113,45'; put '41.6,-120.088,Leonards Hot Springs,Alturas,Hotspring,144,62'; put '38.874,-123.518,Point Arena Hot Springs,Santa Rosa,Hotspring,111,44'; put '41.126,-121.028,Kellog Hot Springs,Alturas,Hotspring,172,78'; put '35.558,-118.612,Delonegha Hot Springs,Bakersfield,Hotspring,112,44'; put '35.871,-116.23,Tecopa Hot Springs,Trona,Hotspring,118,48'; put '41.86,-120.158,Fort Bidwell Hot Spring,Alturas,Hotspring,113,45'; put '41.534,-120.078,Hot Springs (Surprise Valley),Alturas,Hotspring,208,98'; put '33.345,-115.588,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '41.012,-121.274,Hot Springs,Alturas,Hotspring,H,H'; put '39.922,-120.024,Zamboni Hot Springs,Chico,Hotspring,H,H'; put '38.979,-122.659,Fumarole,Santa Rosa,Hotspring,H,H'; put '37.622,-119.028,Fumaroles,Mariposa,Hotspring,H,H'; put '40.364,-120.243,Hot Spring,Susanville,Hotspring,204,96'; put '38.767,-122.748,Little Geysers,Santa Rosa,Hotspring,210,99'; put '33.328,-115.583,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '41.67,-120.206,Lake City Hot Springs,Alturas,Hotspring,207,97'; put '36.036,-117.802,Devils Kitchen,Death Valley,Hotspring,207,97'; put '36.045,-117.769,Coso Hot Springs,Death Valley,Hotspring,207,97'; put '40.382,-121.513,Morgan Hot Spring,Susanville,Hotspring,205,96'; put '40.421,-121.375,Terminal Geyser,Susanville,Hotspring,205,96'; put '41.19,-120.383,West Valley Reservoir Hot Spring,Alturas,Hotspring,171,77'; put '38.802,-122.81,The Geysers,Santa Rosa,Hotspring,214,101'; put '35.888,-116.258,Springs,Trona,Hotspring,W,W'; put '34.185,-117.262,"Arrowhead Springs, Waterman Hot Sp",San Bernardino,Hotspring,194,90'; put '33.823,-116.542,Palm Springs (Agua Caliente Spring,Santa Ana,Hotspring,104,40'; put '41.196,-120.475,Springs,Alturas,Hotspring,W,W'; put '41.959,-120.936,Warm Spring,Alturas,Hotspring,W,W'; put '37.929,-121.965,Springs,San Jose,Hotspring,W,W'; put '36.83,-117.736,Upper Warm Spring,Death Valley,Hotspring,W,W'; put '33.343,-115.573,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '35.536,-118.651,Spring (Hot),Bakersfield,Hotspring,W,W'; put '33.332,-115.575,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '35.967,-116.931,Warm Spring,Trona,Hotspring,W,W'; put '33.28,-115.592,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '33.288,-115.575,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '33.312,-115.577,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '33.313,-115.605,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '40.393,-121.507,Growler Hot Spring,Susanville,Hotspring,203,95'; put '35.148,-118.783,Warm Spring,Bakersfield,Hotspring,W,W'; put '41.973,-122.202,Klamath Hot Spring,Weed,Hotspring,156,69'; put '41.143,-121.11,Bassett Hot Springs,Alturas,Hotspring,174,79'; put '38.58,-122.575,Calistoga Hot Springs,Santa Rosa,Hotspring,172,78'; put '37.656,-118.834,Hot Creek Springs,Mariposa,Hotspring,171,77'; put '41.229,-121.405,Little Hot Spring,Alturas,Hotspring,169,76'; put '37.664,-118.802,The Tub,Mariposa,Hotspring,167,75'; put '40.355,-120.257,Wendel Hot Springs,Susanville,Hotspring,205,96'; put '38.768,-122.717,Castle Rock Springs,Santa Rosa,Hotspring,163,73'; put '38.245,-119.205,Travertine Hot Springs,Walker Lake,Hotspring,180,82'; put '39.002,-122.664,Sulphur Bank,Ukiah,Hotspring,156,69'; put '39.057,-122.475,Elgin Mine,Ukiah,Hotspring,156,69'; put '39.039,-122.421,Wilbur Springs,Ukiah,Hotspring,153,67'; put '40.444,-121.409,Drakesbad,Susanville,Hotspring,151,66'; put '40.457,-121.545,Mill Creek Springs,Susanville,Hotspring,150,66'; put '38.048,-119.081,Hot Spring,Walker Lake,Hotspring,151,66'; put '37.647,-118.859,Casa Diablo Hot Pool,Mariposa,Hotspring,165,74'; put '41.607,-121.523,Hot Spot,Alturas,Hotspring,191,88'; put '40.44,-121.434,Devils Kitchen,Susanville,Hotspring,203,95'; put '40.302,-120.195,Amedee Hot Springs,Susanville,Hotspring,203,95'; put '36.031,-117.833,Fumarole,Death Valley,Hotspring,203,95'; put '40.447,-121.536,"Sulphur Works, Tophet Hot Springs",Susanville,Hotspring,199,93'; put '40.455,-121.501,Bumpass Hell,Susanville,Hotspring,199,93'; put '37.648,-118.914,Casa Diablo Hot Springs And Geyser,Mariposa,Hotspring,199,93'; put '37.692,-118.839,Little Hot Creek Spring,Mariposa,Hotspring,180,82'; put '34.596,-118.998,Sespe Hot Springs,Los Angeles,Hotspring,194,90'; put '38.348,-119.4,Fales Hot Springs,Walker Lake,Hotspring,180,82'; put '40.434,-121.399,Boiling Springs Lake,Susanville,Hotspring,190,88'; put '41.615,-120.102,Seyferth Hot Springs,Alturas,Hotspring,185,85'; put '41.407,-122.197,"Hot Spring, Fumaroles",Weed,Hotspring,183,84'; put '37.993,-119.028,Paoha Island Springs,Mariposa,Hotspring,181,83'; put '41.025,-121.924,Big Bend Hot Springs,Alturas,Hotspring,180,82'; put '38.699,-119.846,Grovers Hot Springs,Walker Lake,Hotspring,147,64'; put '37.665,-118.828,Hot Creek Gorge Springs,Mariposa,Hotspring,199,93'; put '39.43,-122.538,"Sulphur Spring, Salt Spring",Ukiah,Hotspring,75,24'; put '38.925,-122.77,Hildebrande Spring,Santa Rosa,Hotspring,77,25'; put '38.203,-119.118,Warm Spring,Walker Lake,Hotspring,77,25'; put '36.938,-121.565,Sargent Estate Warm Spring,Santa Cruz,Hotspring,77,25'; put '34.826,-116.677,Newberry Spring,San Bernardino,Hotspring,77,25'; put '41.919,-122.369,Bogus Soda Springs,Weed,Hotspring,76,24'; put '39.053,-122.597,Quigley Soda Spring,Ukiah,Hotspring,82,28'; put '41.252,-120.521,Warm Spring,Alturas,Hotspring,75,24'; put '38.85,-122.693,Pine Cone Spring,Santa Rosa,Hotspring,78,26'; put '38.339,-122.259,Napa Vichy Springs,Santa Rosa,Hotspring,76,24'; put '38.892,-122.533,Baker Soda Spring,Santa Rosa,Hotspring,76,24'; put '38.897,-122.882,England Springs,Santa Rosa,Hotspring,76,24'; put '38.916,-122.799,Carlsbad Spring,Santa Rosa,Hotspring,76,24'; put '38.192,-120.827,Valley Springs,Sacramento,Hotspring,75,24'; put '38.85,-120.025,Myers Warm Spring,Sacramento,Hotspring,75,24'; put '37.708,-118.813,Hot Spring,Mariposa,Hotspring,68,20'; put '36.122,-117.217,Warm Sulphur Springs,Death Valley,Hotspring,80,27'; put '35.682,-116.422,Saratoga Spring,Trona,Hotspring,82,28'; put '33.733,-114.907,Mccoy Spring,Salton Sea,Hotspring,82,28'; put '41.484,-120.764,Spring,Alturas,Hotspring,81,27'; put '39.657,-123.585,Jackson Valley Mud Springs,Ukiah,Hotspring,80,27'; put '39.198,-122.505,Pseudo Complexion Spring,Ukiah,Hotspring,81,27'; put '38.85,-122.667,Bad Creek Spring,Santa Rosa,Hotspring,81,27'; put '32.97,-116.423,Vallecitos Spring,San Diego,Hotspring,79,26'; put '36.765,-120.901,Spring,Santa Cruz,Hotspring,81,27'; put '34.159,-118.499,El Encino Springs,Los Angeles,Hotspring,79,26'; put '35.879,-116.153,Resting Spring,Trona,Hotspring,80,27'; put '41.828,-120.917,Pothole Spring,Alturas,Hotspring,78,26'; put '39.348,-122.668,Fouts Springs,Ukiah,Hotspring,79,26'; put '38.519,-122.26,"Napa Rock Soda Spring, Phillips So",Santa Rosa,Hotspring,78,26'; put '38.838,-122.653,Spiers Springs,Santa Rosa,Hotspring,79,26'; put '35.141,-116.101,Soda Station Springs,Trona,Hotspring,75,24'; put '37.503,-121.904,Alameda Warm Springs,San Jose,Hotspring,80,27'; put '39.429,-123.308,Muir Springs,Ukiah,Hotspring,68,20'; put '37.924,-122.046,Sulphur Spring,San Francisco,Hotspring,75,24'; put '40.58,-120.265,Tipton Springs,Susanville,Hotspring,70,21'; put '39.697,-123.478,Pinches Spring,Ukiah,Hotspring,70,21'; put '38.755,-122.285,Zim Zim Spring,Santa Rosa,Hotspring,70,21'; put '37.083,-121.042,Spring In Oneill Forebay,San Jose,Hotspring,70,21'; put '37.632,-121.762,Crohare Spring,San Jose,Hotspring,70,21'; put '33.625,-115.325,Corn Spring,Salton Sea,Hotspring,72,22'; put '36.117,-118.776,Ward Spring,Fresno,Hotspring,70,21'; put '34.423,-119.538,Boron Spring,Los Angeles,Hotspring,72,22'; put '39.002,-122.498,Grizzly Spring,Ukiah,Hotspring,68,20'; put '39.088,-122.525,Sulphur Spring,Ukiah,Hotspring,68,20'; put '38.125,-122.188,Vallejo White Sulphur Springs,Santa Rosa,Hotspring,68,20'; put '38.31,-122.053,Tolenas Springs,Santa Rosa,Hotspring,68,20'; put '41.45,-120.834,Kelly Hot Spring,Alturas,Hotspring,198,92'; put '36.512,-116.821,Nevares Springs,Death Valley,Hotspring,102,39'; put '37.888,-118.487,Bertrand Ranch Springs,Mariposa,Hotspring,70,21'; put '35.483,-119.917,Mize Spring,Bakersfield,Hotspring,73,23'; put '36.698,-117.848,Little Hunter Canyon Springs,Death Valley,Hotspring,81,27'; put '38.995,-122.642,Davis Soda Spring,Santa Rosa,Hotspring,73,23'; put '37.432,-121.308,Salt Grass Springs,San Jose,Hotspring,73,23'; put '37.573,-121.445,Lone Tree Mineral Spring,San Jose,Hotspring,73,23'; put '37.638,-118.887,Chance Spring,Mariposa,Hotspring,73,23'; put '36.295,-120.985,Sulphur Springs,Santa Cruz,Hotspring,73,23'; put '41.16,-120.403,Warm Spring,Alturas,Hotspring,70,21'; put '35.4,-120.25,Cameta Warm Spring,San Luis Obisp,Hotspring,73,23'; put '37.719,-118.735,Springs,Mariposa,Hotspring,75,24'; put '35.588,-116.359,Sheep Creek Spring,Trona,Hotspring,73,23'; put '40.568,-120.325,Sellicks Springs,Susanville,Hotspring,72,22'; put '38.833,-122.357,One Shot Mining Co,Santa Rosa,Hotspring,72,22'; put '38.95,-122.572,Soda Spring In Cache Formation,Santa Rosa,Hotspring,72,22'; put '37.635,-118.72,Springs,Mariposa,Hotspring,72,22'; put '36.13,-118.816,Soda Spring,Fresno,Hotspring,72,22'; put '36.773,-120.898,Iridat Spring,Santa Cruz,Hotspring,73,23'; put '33.545,-115.654,Canyon Spring,Salton Sea,Hotspring,97,36'; put '36.675,-116.923,Keane Wonder Spring,Death Valley,Hotspring,93,34'; put '36.331,-121.367,Paraiso Springs (Sulphur Spring),Santa Cruz,Hotspring,98,37'; put '35.122,-120.542,Newsom Springs,San Luis Obisp,Hotspring,99,37'; put '34.503,-120.219,Las Cruces Hot Springs,Santa Maria,Hotspring,99,37'; put '38.49,-122.498,St Helena White Sulphur Spring,Santa Rosa,Hotspring,97,36'; put '35.946,-116.189,Chappo Spring,Trona,Hotspring,80,27'; put '40.019,-121.036,Spring,Susanville,Hotspring,99,37'; put '40.44,-121.42,Hot Springs Valley,Susanville,Hotspring,83,28'; put '32.947,-116.305,Agua Caliente Springs,San Diego,Hotspring,101,38'; put '39.196,-122.714,Newman Springs,Ukiah,Hotspring,94,35'; put '37.63,-118.808,Whitmore Hot Springs,Mariposa,Hotspring,95,35'; put '35.269,-120.851,Pecho Warm Springs,San Luis Obisp,Hotspring,95,35'; put '33.514,-117.604,Spring,Santa Ana,Hotspring,95,35'; put '38.958,-122.701,Riviera Beach Spring,Santa Rosa,Hotspring,93,34'; put '36.33,-117.948,Dirty Socks Hot Spring,Death Valley,Hotspring,93,34'; put '37.847,-121.635,Byron Hot Springs,San Jose,Hotspring,96,36'; put '35.433,-118.478,Yates Hot Springs,Bakersfield,Hotspring,100,38'; put '35.663,-120.692,Paso Robles Artesian Spring,San Luis Obisp,Hotspring,102,39'; put '34.507,-119.291,Wheeler Springs,Los Angeles,Hotspring,102,39'; put '33.8,-116.927,Soboda Hot Springs,Santa Ana,Hotspring,102,39'; put '40.223,-122.747,Stinking Springs,Redding,Hotspring,101,38'; put '38.8,-123.17,Hoods Hot Springs,Santa Rosa,Hotspring,100,38'; put '37.029,-117.383,Grapevine Springs,Goldfield,Hotspring,100,38'; put '36.084,-121.584,Dolans Hot Spring,Santa Cruz,Hotspring,98,37'; put '36.21,-118.176,Soda Springs,Fresno,Hotspring,100,38'; put '33.664,-117.913,Fairview Hot Spring,Santa Ana,Hotspring,96,36'; put '35.143,-116.813,Paradise Spring,Trona,Hotspring,100,38'; put '33.837,-117.145,Lakeview Hot Springs,Santa Ana,Hotspring,100,38'; put '33.201,-115.577,Mud Pots,Salton Sea,Hotspring,100,38'; put '33.212,-115.591,Mud Pots,Salton Sea,Hotspring,100,38'; put '33.217,-115.58,Wister Mud Pot,Salton Sea,Hotspring,100,38'; put '32.617,-116.189,Jacumba Hot Springs,San Diego,Hotspring,101,38'; put '36.618,-121.845,Sulphur Hot Spring,Santa Cruz,Hotspring,100,38'; put '36.495,-117.893,Springs,Death Valley,Hotspring,86,30'; put '38.033,-118.902,Mono Basin Warm Springs,Walker Lake,Hotspring,88,31'; put '35.908,-120.367,Table Mountain (Spring),San Luis Obisp,Hotspring,88,31'; put '34.271,-116.838,Pan Hot Springs,San Bernardino,Hotspring,88,31'; put '40.238,-122.11,Tuscan Springs,Redding,Hotspring,86,30'; put '40.245,-120.007,High Rock Spring,Susanville,Hotspring,86,30'; put '38.55,-122.72,Mark West Springs,Santa Rosa,Hotspring,88,31'; put '43.513,-119.903,Springs at Tecolote Tunnel,Los Angeles,Hotspring,93,34'; put '39.728,-120.547,Mclear Warm Springs,Chico,Hotspring,86,30'; put '38.835,-122.731,Gordon Warm Springs,Santa Rosa,Hotspring,97,36'; put '39.166,-123.159,Vichy Springs,Ukiah,Hotspring,85,29'; put '38.936,-122.907,Highland Springs,Santa Rosa,Hotspring,84,29'; put '37.398,-121.794,Mineral Springs,San Jose,Hotspring,84,29'; put '33.436,-117.324,De Luz Warm Springs,Santa Ana,Hotspring,85,29'; put '33.512,-115.827,Dos Palmas Spring,Salton Sea,Hotspring,84,29'; put '39.022,-122.444,Abbott Mine,Ukiah,Hotspring,86,30'; put '34.605,-118.561,Warm Spring,Los Angeles,Hotspring,92,33'; put '41.659,-123.319,Sulphur Springs,Weed,Hotspring,84,29'; put '38.394,-122.552,Los Guilicos Warm Springs,Santa Rosa,Hotspring,88,31'; put '41.492,-120.7,Essex Springs,Alturas,Hotspring,91,33'; put '38.654,-122.484,Aetna Springs,Santa Rosa,Hotspring,91,33'; put '35.842,-117.38,Bainter Spring,Trona,Hotspring,92,33'; put '34.228,-117.483,Tylers Bath Spring,San Bernardino,Hotspring,92,33'; put '33.363,-117.017,Agua Tibia Spring,Santa Ana,Hotspring,92,33'; put '41.167,-120.032,Bare Ranch Spring,Alturas,Hotspring,90,32'; put '35.978,-116.273,Shoshone Spring,Trona,Hotspring,90,32'; put '33.407,-116.035,Fish Springs,Santa Ana,Hotspring,90,32'; put '35.582,-120.666,Santa Ysabel Springs (Sulphur Spr),San Luis Obisp,Hotspring,92,33'; put '34.537,-119.613,Little Caliente Spring,Los Angeles,Hotspring,90,32'; put '39.006,-122.787,Big Soda Spring,Ukiah,Hotspring,90,32'; put '35.439,-119.846,Carneros Spring,Bakersfield,Hotspring,90,32'; put '36.441,-116.829,Travertine Springs,Death Valley,Hotspring,90,32'; put '37.88,-122.627,Rocky Point Springs,San Francisco,Hotspring,90,32'; put '39.227,-107.224,Penny Hot Springs,Leadville,Hotspring,133,56'; put '38.732,-106.178,Hortense Hot Spring,Montrose,Hotspring,181,83'; put '37.4,-107.849,Tripp Hot Springs,Durango,Hotspring,111,44'; put '40.073,-106.113,Hot Sulphur Springs,Craig,Hotspring,111,44'; put '39.739,-105.512,Idaho Springs,Denver,Hotspring,115,46'; put '39.552,-107.412,South Canyon Hot Springs,Leadville,Hotspring,118,48'; put '39.548,-107.322,Glenwood Springs,Leadville,Hotspring,124,51'; put '38.133,-107.736,Orvis Hot Spring,Montrose,Hotspring,126,52'; put '39.017,-105.793,Hartsel Hot Springs,Denver,Hotspring,126,52'; put '38.733,-106.162,Mount Princeton Hot Springs,Montrose,Hotspring,133,56'; put '37.752,-108.131,Paradise Warm Spring,Cortez,Hotspring,115,46'; put '37.747,-106.831,Wagon Wheel Gap Hot Springs,Durango,Hotspring,135,57'; put '37.263,-107.011,Pagosa Springs,Durango,Hotspring,136,58'; put '38.812,-106.226,Cottonwood Hot Springs,Montrose,Hotspring,136,58'; put '38.168,-105.924,Mineral Hot Springs,Pueblo,Hotspring,140,60'; put '40.559,-106.849,Routt Hot Springs,Craig,Hotspring,147,64'; put '38.021,-107.672,Ouray Hot Springs,Montrose,Hotspring,156,69'; put '38.498,-106.076,Poncha Hot Springs,Montrose,Hotspring,160,71'; put '38.514,-106.508,Upper Waunita Hot Springs,Montrose,Hotspring,176,80'; put '38.272,-107.1,Cebolla Hot Springs,Montrose,Hotspring,106,41'; put '37.313,-107.344,Piedra River Hot Springs,Durango,Hotspring,108,42'; put '38.517,-106.515,Lower Waunita Hot Springs,Montrose,Hotspring,167,75'; put '38.816,-106.873,Ranger Hot Spring,Montrose,Hotspring,81,27'; put '37.294,-105.784,Dexter Spring,Trinidad,Hotspring,68,20'; put '38.634,-106.072,Browns Grotto Warm Spring,Montrose,Hotspring,73,23'; put '39.164,-106.062,Rhodes Warm Spring,Leadville,Hotspring,75,24'; put '38.836,-106.825,Cement Creek Hot Spring,Montrose,Hotspring,77,25'; put '38.653,-106.056,Browns Canyon Warm Spring,Montrose,Hotspring,77,25'; put '37.033,-106.805,Stinking Springs,Durango,Hotspring,81,27'; put '37.747,-108.117,Geyser Warm Spring,Cortez,Hotspring,82,28'; put '38.479,-105.891,Swissvale Warm Springs,Pueblo,Hotspring,82,28'; put '37.751,-106.317,Shaw Springs,Durango,Hotspring,86,30'; put '37.728,-107.054,Birdsie Warm Spring,Durango,Hotspring,86,30'; put '37.741,-107.034,Antelope Spring,Durango,Hotspring,90,32'; put '39.628,-107.106,Dotsero Warm Springs,Leadville,Hotspring,90,32'; put '38.485,-105.91,Wellsville Warm Spring,Pueblo,Hotspring,91,33'; put '38.014,-108.054,Lemon Hot Spring,Moab,Hotspring,91,33'; put '37.391,-107.846,"Trimble Hot Spr, Stratten Warm Spr",Durango,Hotspring,97,36'; put '38.192,-105.816,Valley View Hot Springs,Pueblo,Hotspring,99,37'; put '38.433,-105.261,Canon City Hot Springs,Pueblo,Hotspring,104,40'; put '39.012,-106.891,Conundrum Hot Springs,Leadville,Hotspring,100,38'; put '37.511,-106.945,Rainbow Hot Springs,Durango,Hotspring,104,40'; put '40.467,-107.952,Juniper Hot Springs,Craig,Hotspring,100,38'; put '40.483,-106.827,Steamboat Springs,Craig,Hotspring,102,39'; put '37.771,-108.091,Dunton Hot Spring,Cortez,Hotspring,108,42'; put '37.453,-107.803,Pinkerton Hot Springs,Durango,Hotspring,90,32'; put '39.932,-105.277,Eldorado Springs,Denver,Hotspring,79,26'; put '27.074,-82.233,Little Salt Spring,Tampa,Hotspring,81,27'; put '27.06,-82.261,Warm Mineral Springs (Big Salt Spr,Tampa,Hotspring,86,30'; put '32.92,-84.438,Barker Spring,Phenix City,Hotspring,73,23'; put '32.964,-84.499,Thundering Spring,Phenix City,Hotspring,75,24'; put '33.018,-84.327,Taylor Spring,Atlanta,Hotspring,75,24'; put '32.862,-84.65,Parkman Spring,Phenix City,Hotspring,77,25'; put '33.037,-84.374,Lifsey Spring,Atlanta,Hotspring,79,26'; put '32.893,-84.69,Warm Springs,Phenix City,Hotspring,88,31'; put '32.873,-84.547,Tom Brown Spring,Phenix City,Hotspring,68,20'; put '19.407,-155.277,Steam Vents,Hawaii,Hotspring,H,H'; put '19.46,-154.847,Isaac Hale Park Spring,Hawaii,Hotspring,97,36'; put '19.496,-154.876,Warm Vapor,Hawaii,Hotspring,W,W'; put '19.373,-155.188,Steam Vents,Hawaii,Hotspring,H,H'; put '19.39,-155.311,Steam Vents,Hawaii,Hotspring,H,H'; put '19.434,-155.272,Steam Vents,Hawaii,Hotspring,H,H'; put '19.486,-155.598,Steam Vents,Hawaii,Hotspring,H,H'; put '19.466,-154.943,Steam Vents,Hawaii,Hotspring,H,H'; put '19.421,-155.62,Steam Vents,Hawaii,Hotspring,H,H'; put '19.201,-155.384,Waiwelawela Point Spring,Hawaii,Hotspring,90,32'; put '19.593,-154.928,Akins Spring,Hawaii,Hotspring,84,29'; put '44.721,-115.01,Thomas Creek Ranch Hot Spring,Challis,Hotspring,138,59'; put '45.431,-116.015,Cow Flats Hot Spring,Grangeville,Hotspring,138,59'; put '44.062,-115.685,Pine Flat Hot Springs,Challis,Hotspring,138,59'; put '44.382,-115.841,Dash Creek Hot Springs,Challis,Hotspring,138,59'; put '44.077,-115.553,Haven Lodge Hot Spring,Challis,Hotspring,147,64'; put '43.647,-114.816,Skillern Hot Springs,Hailey,Hotspring,140,60'; put '43.789,-115.434,Dutch Frank Hot Spring,Hailey,Hotspring,149,65'; put '43.54,-115.288,Bridge Hot Springs,Hailey,Hotspring,138,59'; put '43.72,-115.617,Smith Cabin Hot Spring,Hailey,Hotspring,138,59'; put '42.688,-114.826,Banbury Hot Spring,Twin Falls,Hotspring,138,59'; put '45.035,-115.561,Sheep Creek Hot Spring,Elk City,Hotspring,136,58'; put '44.245,-114.885,Elkhorn Hot Spring,Challis,Hotspring,136,58'; put '44.642,-115.693,Mollys Hot Spring,Challis,Hotspring,138,59'; put '43.811,-115.116,Atlanta Hot Springs,Hailey,Hotspring,140,60'; put '44.679,-116.231,White Licks Hot Spring,Baker,Hotspring,140,60'; put '45.512,-115.046,Barth Hot Springs,Elk City,Hotspring,140,60'; put '43.696,-115.658,Sheep Creek Bridge Hot Spring,Hailey,Hotspring,142,61'; put '44.914,-115.722,Teapot Hot Spring,Challis,Hotspring,142,61'; put '43.788,-115.444,Straight Creek Hot Spring,Hailey,Hotspring,144,62'; put '43.116,-115.305,Latty Hot Spring,Hailey,Hotspring,144,62'; put '45.039,-116.291,Zims Resort Hot Springs,Grangeville,Hotspring,144,62'; put '43.049,-114.952,White Arrow Hot Spring,Hailey,Hotspring,145,63'; put '44.645,-114.739,Upper Loon Creek Hot Springs,Challis,Hotspring,145,63'; put '43.383,-114.931,Wardrop Hot Spring,Hailey,Hotspring,147,64'; put '44.531,-116.754,Fairchild Hot Spring,Baker,Hotspring,126,52'; put '44.661,-114.652,Foster Ranch Hot Springs,Challis,Hotspring,135,57'; put '44.051,-115.829,Dan Hodges Hot Spring,Challis,Hotspring,140,60'; put '43.506,-114.354,Hailey Hot Springs,Hailey,Hotspring,131,55'; put '43.982,-114.486,West Pass Hot Spring,Hailey,Hotspring,124,51'; put '43.641,-114.487,Warfield Hot Spring,Hailey,Hotspring,124,51'; put '44.145,-112.554,Lidy Hot Springs,Dubois,Hotspring,124,51'; put '44.054,-115.907,Hot Spring Campground,Challis,Hotspring,124,51'; put '42.032,-115.363,Murphy Hot Springs,Twin Falls,Hotspring,126,52'; put '43.561,-114.415,Clarendon Hot Springs,Hailey,Hotspring,126,52'; put '43.423,-114.627,Elk Creek Hot Spring,Hailey,Hotspring,126,52'; put '43.553,-115.267,Paradise Hot Springs,Hailey,Hotspring,126,52'; put '42.308,-111.707,Maple Grove Hot Springs,Preston,Hotspring,172,78'; put '45.013,-113.605,Sharkey Hot Spring,Dillon,Hotspring,126,52'; put '44.73,-114.993,Sunflower Hot Springs,Challis,Hotspring,149,65'; put '43.974,-114.499,Lower Bowery Hot Spring,Hailey,Hotspring,129,54'; put '43.724,-115.604,Loftus Hot Spring,Hailey,Hotspring,129,54'; put '44.676,-115.943,Gold Fork Hot Spring,Challis,Hotspring,127,53'; put '44.044,-115.851,Donlay Ranch Hot Spring,Challis,Hotspring,131,55'; put '44.264,-114.818,Basin Creek Hot Spring,Challis,Hotspring,133,56'; put '44.652,-114.734,Owen Cabin Hot Spring,Challis,Hotspring,133,56'; put '43.605,-115.664,Rattlesnake Hot Spring,Hailey,Hotspring,133,56'; put '43.605,-114.948,Lightfoot Hot Springs,Hailey,Hotspring,133,56'; put '45.788,-115.198,Red River Hot Springs,Elk City,Hotspring,131,55'; put '44.632,-115.697,South Fork Plunge,Challis,Hotspring,129,54'; put '44.853,-116.442,Starkey Hot Springs,Baker,Hotspring,131,55'; put '42.692,-114.859,Hot Sulphur (Miracle Hot) Springs,Twin Falls,Hotspring,131,55'; put '44.045,-115.842,Corder Hot Spring,Challis,Hotspring,131,55'; put '44.247,-114.676,Robinson Bar Hot Springs,Challis,Hotspring,131,55'; put '44.785,-114.855,Cox Hot Springs,Challis,Hotspring,131,55'; put '43.637,-115.13,Willow Creek Hot Spring,Hailey,Hotspring,131,55'; put '43.803,-115.401,Granite Creek Hot Spring,Hailey,Hotspring,131,55'; put '43.129,-115.34,Coyote Hot Spring,Hailey,Hotspring,135,57'; put '44.211,-116.71,Cove Creek Hot Spring,Baker,Hotspring,131,55'; put '44.16,-115.167,Grandjean Hot Spring,Challis,Hotspring,H,H'; put '43.755,-115.571,Ninemeyer Hot Springs,Hailey,Hotspring,169,76'; put '43.701,-114.738,Big Smokey Hot Spring,Hailey,Hotspring,H,H'; put '43.831,-115.192,Queens River Hot Spring,Hailey,Hotspring,H,H'; put '43.817,-115.046,Leggit Creek Hot Spring,Hailey,Hotspring,H,H'; put '43.718,-115.563,Basset Hot Spring,Hailey,Hotspring,H,H'; put '43.588,-115.988,Mores Creek Hot Spring,Hailey,Hotspring,H,H'; put '44.951,-114.704,Mormon Ranch Warm Spring,Challis,Hotspring,H,H'; put '44.896,-114.563,Forge Creek Hot Springs,Challis,Hotspring,H,H'; put '44.77,-115.663,Billy Hot Spring,Challis,Hotspring,H,H'; put '44.628,-115.197,Sheepeater Hot Springs,Challis,Hotspring,H,H'; put '44.585,-115.072,Sulphur Creek Hot Spring,Challis,Hotspring,H,H'; put '44.554,-115.301,Sulphur Creek Hot Spring,Challis,Hotspring,H,H'; put '42.107,-113.39,Blm Well (Frazier Hot Spring),Pocatello,Hotspring,203,95'; put '44.4,-115.82,Goat Hot Springs,Challis,Hotspring,H,H'; put '45.307,-114.338,Big Creek Hot Springs,Elk City,Hotspring,199,93'; put '44.583,-116.112,Cascade Reservoir Hot Spring,Baker,Hotspring,H,H'; put '45.17,-115.807,Secesh Hot Spring,Elk City,Hotspring,H,H'; put '46.235,-114.707,Prospector Hot Springs,Hamilton,Hotspring,H,H'; put '46.138,-115.09,Stuart Hot Springs,Hamilton,Hotspring,H,H'; put '46.006,-115.021,Marten Hot Springs,Hamilton,Hotspring,H,H'; put '42.374,-111.726,Mound Valley Warm Spring,Preston,Hotspring,W,W'; put '43.255,-114.829,Mormon Reservoir Warm Spring,Hailey,Hotspring,W,W'; put '44.639,-115.671,Warm Lake Springs,Challis,Hotspring,W,W'; put '44.445,-115.239,Bear Valley Hot Spring,Challis,Hotspring,W,W'; put '44.354,-117.071,Old Homestead Warm Spring,Baker,Hotspring,W,W'; put '43.327,-113.918,Condie Hot Springs,Idaho Falls,Hotspring,124,51'; put '43.038,-112.004,Alkali Flats Warm Spring,Idaho Falls,Hotspring,93,34'; put '44.43,-115.762,Bull Creek Hot Springs,Challis,Hotspring,H,H'; put '42.119,-111.928,Squaw Hot Springs,Preston,Hotspring,163,73'; put '42.333,-111.716,Cleveland Hot Springs,Preston,Hotspring,151,66'; put '43.671,-115.696,Twin Springs,Hailey,Hotspring,151,66'; put '43.951,-116.353,Roystone Hot Springs,Boise,Hotspring,151,66'; put '42.704,-114.856,Salmon Falls Hot Spring,Twin Falls,Hotspring,153,67'; put '44.16,-115.177,Sacajawea Hot Springs,Challis,Hotspring,153,67'; put '43.738,-115.583,Vaughn Hot Spring,Hailey,Hotspring,154,68'; put '44.669,-116.305,Council Mtn Hot Springs,Baker,Hotspring,154,68'; put '44.831,-115.215,Kwiskwis Hot Spring,Challis,Hotspring,156,69'; put '43.684,-114.41,Guyer Hot Springs,Hailey,Hotspring,158,70'; put '43.155,-115.518,Hot Springs,Hailey,Hotspring,158,70'; put '44.586,-116.63,Lakey Hot Spring,Baker,Hotspring,158,70'; put '42.333,-115.65,Indian Hot Springs,Twin Falls,Hotspring,160,71'; put '42.637,-114.892,Poison Springs,Twin Falls,Hotspring,H,H'; put '44.813,-115.123,Middle Fork Indian Creek Hot Sprin,Challis,Hotspring,162,72'; put '44.072,-115.543,Kirkham Hot Springs,Challis,Hotspring,149,65'; put '43.328,-114.399,Magic Hot Springs,Hailey,Hotspring,163,73'; put '43.293,-114.908,Barrons Hot Spring,Hailey,Hotspring,167,75'; put '44.154,-115.993,Warm Springs Creek Hot Springs,Challis,Hotspring,167,75'; put '44.268,-114.748,Sunbeam Hot Springs,Challis,Hotspring,169,76'; put '44.092,-116.052,Deer Hot Springs,Baker,Hotspring,176,80'; put '43.563,-114.798,Worswick Hot Springs,Hailey,Hotspring,180,82'; put '42.133,-111.928,Battle Creek Hot Springs,Preston,Hotspring,183,84'; put '44.364,-115.856,Boiling Springs,Challis,Hotspring,185,85'; put '44.157,-115.314,Bonneville Hot Springs,Challis,Hotspring,185,85'; put '44.799,-115.129,Indian Creek Hot Spring,Challis,Hotspring,190,88'; put '44.568,-115.695,Vulcan Hot Springs,Challis,Hotspring,190,88'; put '44.306,-116.745,Crane Creek Hot Springs,Baker,Hotspring,198,92'; put '44.416,-116.031,Cabarton Hot Spring,Baker,Hotspring,160,71'; put '42.781,-111.983,Portneuf River Warm Spring,Preston,Hotspring,93,34'; put '44.621,-115.985,Badley Warm Spring,Challis,Hotspring,100,38'; put '45.201,-116.312,Boulder Creek Spring,Grangeville,Hotspring,82,28'; put '42.24,-113.588,Sears Spring,Pocatello,Hotspring,84,29'; put '44.257,-112.639,Warm Springs,Dubois,Hotspring,84,29'; put '42.911,-111.556,Henry Warm Spring,Preston,Hotspring,86,30'; put '43.021,-111.695,Wilson Lake Warm Spring,Driggs,Hotspring,86,30'; put '44.495,-116.732,Keithly Warm Spring,Baker,Hotspring,86,30'; put '42.655,-111.643,Steamboat Hot Spring,Preston,Hotspring,88,31'; put '45.152,-116.296,Stinky Warm Spring,Grangeville,Hotspring,88,31'; put '42.725,-112.872,Indian Springs,Pocatello,Hotspring,90,32'; put '43.114,-112.167,Yandell Springs,Idaho Falls,Hotspring,90,32'; put '44.64,-116.045,Arling Hot Spring,Baker,Hotspring,90,32'; put '42.657,-111.604,Soda Springs,Preston,Hotspring,82,28'; put '45.07,-115.826,Lick Creek Warm Spring,Elk City,Hotspring,91,33'; put '42.337,-111.726,Treasureton Hot Springs,Preston,Hotspring,95,35'; put '44.382,-114.088,Little Antelope Flat Warm Spring,Challis,Hotspring,93,34'; put '43.21,-111.495,Brockman Creek Hot Spring,Driggs,Hotspring,95,35'; put '44.398,-115.149,Cape Horn Warm Springs,Challis,Hotspring,95,35'; put '42.337,-114.509,Nat-Soo-Pah Warm Spring,Twin Falls,Hotspring,97,36'; put '44.9,-115.505,Hot Creek Warm Spring,Challis,Hotspring,97,36'; put '42.405,-114.142,Artesian City Hot Springs,Twin Falls,Hotspring,99,37'; put '42.762,-115.739,Indian Bathtub Hot Springs,Twin Falls,Hotspring,99,37'; put '43.227,-111.109,Alpine Warm Spring,Driggs,Hotspring,99,37'; put '42.545,-112.906,Rockland Warm Springs,Pocatello,Hotspring,100,38'; put '43.805,-114.585,Russian John Hot Spring,Hailey,Hotspring,100,38'; put '43.779,-114.539,Easley Hot Springs,Hailey,Hotspring,100,38'; put '44.26,-114.838,Mormon Bend Hot Spring,Challis,Hotspring,100,38'; put '44.64,-113.504,Big Eightmile Creek Warm Spring,Dubois,Hotspring,91,33'; put '42.339,-112.436,Kent Warm Spring,Pocatello,Hotspring,75,24'; put '42.957,-112.458,Tadpole Warm Spring,Pocatello,Hotspring,68,20'; put '43.607,-111.189,Taylor Springs,Driggs,Hotspring,68,20'; put '43.972,-116.325,Sweet Warm Spring,Boise,Hotspring,68,20'; put '44.717,-115.703,Dollar Creek Warm Spring,Challis,Hotspring,68,20'; put '42.625,-113.107,Lake Walcott Hot Spring,Pocatello,Hotspring,70,21'; put '42.015,-114.237,Thoroughbred Warm Springs,Twin Falls,Hotspring,69,21'; put '42.928,-111.592,Blackfoot Reservoir Warm Spring,Preston,Hotspring,72,22'; put '42.286,-113.446,"Rice Spring, Ward Spring",Pocatello,Hotspring,72,22'; put '42.085,-113.564,Grape Creek Warm Spring,Pocatello,Hotspring,72,22'; put '43.66,-111.715,Elkhorn Warm Spring,Driggs,Hotspring,72,22'; put '43.367,-113.884,Rush Warm Spring,Idaho Falls,Hotspring,72,22'; put '44.306,-117.042,Weiser Warm Springs,Baker,Hotspring,72,22'; put '45.344,-114.463,Owl Creek Hot Springs,Elk City,Hotspring,122,50'; put '44.454,-112.696,Big Spring,Dubois,Hotspring,73,23'; put '44.269,-113.449,Barney Hot Springs,Dubois,Hotspring,82,28'; put '43.5,-115.308,Towne Creek Warm Spring,Hailey,Hotspring,75,24'; put '43.161,-116.332,Thomas Flats Warm Spring,Boise,Hotspring,75,24'; put '44.612,-113.363,Whittaker Warm Springs,Dubois,Hotspring,75,24'; put '42.173,-112.239,Malad Warm Spring,Pocatello,Hotspring,77,25'; put '42.156,-112.348,Pleasantview Warm Springs,Pocatello,Hotspring,77,25'; put '42.025,-112.226,Prices Warm Spring,Pocatello,Hotspring,77,25'; put '42.865,-116.368,Lower Birch Spring,Jordan Valley,Hotspring,77,25'; put '43.423,-111.414,Fall Creek Mineral Springs,Driggs,Hotspring,77,25'; put '42.986,-111.743,Blackfoot River Warm Spring,Preston,Hotspring,79,26'; put '42.426,-111.378,Pescadero Warm Spring,Preston,Hotspring,79,26'; put '44.091,-111.458,Ashton Warm Spring,Ashton,Hotspring,79,26'; put '42.056,-112.246,Woodruff Hot Spring,Pocatello,Hotspring,81,27'; put '43.831,-116.396,Highland Land Co Warm Spring,Boise,Hotspring,73,23'; put '44.847,-115.696,Holdover Hot Spring,Challis,Hotspring,117,47'; put '43.047,-114.929,Hot Sulphur Lake,Hailey,Hotspring,81,27'; put '43.603,-115.07,Baumgartner Hot Spring,Hailey,Hotspring,111,44'; put '44.465,-116.037,Belvidere Hot Spring,Baker,Hotspring,111,44'; put '42.621,-112.008,Lava Hot Springs,Pocatello,Hotspring,113,45'; put '43.823,-115.327,Weatherby Hot Spring,Hailey,Hotspring,113,45'; put '43.335,-115.044,Wolf Hot Spring,Hailey,Hotspring,113,45'; put '44.905,-113.929,Goldbug Hot Spring,Dubois,Hotspring,113,45'; put '45.095,-113.836,Salmon Hot Spring,Dillon,Hotspring,113,45'; put '45.277,-115.912,Burgdorf Hot Springs,Elk City,Hotspring,113,45'; put '44.836,-114.79,Hospital Hot Spring,Challis,Hotspring,115,46'; put '44.72,-114.016,Cronks Canyon Hot Spring,Challis,Hotspring,115,46'; put '44.721,-115.207,Pistol Creek Hot Springs,Challis,Hotspring,115,46'; put '43.791,-111.435,Pincock (Green Canyon) Hot Springs,Driggs,Hotspring,111,44'; put '43.414,-116.707,Givens Hot Springs,Boise,Hotspring,117,47'; put '45.503,-114.463,Horse Creek Hot Springs,Elk City,Hotspring,109,43'; put '46.464,-115.035,Weir Creek Hot Springs,Hamilton,Hotspring,117,47'; put '42.115,-111.264,Bear Lake Hot Springs,Preston,Hotspring,118,48'; put '42.173,-113.861,Oakley Hot Spring,Pocatello,Hotspring,118,48'; put '46.463,-114.872,Jerry Johnson Hot Springs,Hamilton,Hotspring,118,48'; put '43.644,-111.687,Heise Hot Springs,Driggs,Hotspring,120,49'; put '44.799,-114.806,Lower Loon Creek Hot Spring,Challis,Hotspring,120,49'; put '44.253,-115.891,Rocky Canyon Hot Springs,Challis,Hotspring,120,49'; put '46.316,-115.258,Stanley Hot Springs,Hamilton,Hotspring,120,49'; put '43.779,-115.486,Brown Creek Hot Spring,Hailey,Hotspring,122,50'; put '44.628,-114.601,Shower Bath Springs,Challis,Hotspring,122,50'; put '44.171,-114.624,Slate Creek Hot Spring,Challis,Hotspring,122,50'; put '44.392,-115.834,Ground Hog Hot Springs,Challis,Hotspring,100,38'; put '42.797,-115.723,"Bat Hot Spring, Pence Hot Spring",Twin Falls,Hotspring,117,47'; put '42.767,-115.725,Lower Indian Bathtub Hot Springs,Twin Falls,Hotspring,108,42'; put '42.102,-113.632,Durfee Spring,Pocatello,Hotspring,102,39'; put '44.33,-115.802,Silver Creek Hot Spring,Challis,Hotspring,102,39'; put '42.447,-113.523,Marsh Creek Hot Spring,Pocatello,Hotspring,104,40'; put '42.449,-113.511,Marsh Gully Hot Springs,Pocatello,Hotspring,106,41'; put '42.798,-115.742,Bruneau Hot Spring,Twin Falls,Hotspring,106,41'; put '43.576,-114.83,Preis Hot Spring,Hailey,Hotspring,106,41'; put '43.677,-116.208,Terteling Hot Springs,Boise,Hotspring,106,41'; put '44.254,-114.443,Sullivan Hot Springs,Challis,Hotspring,106,41'; put '44.224,-114.929,Stanley Hot Spring,Challis,Hotspring,106,41'; put '44.101,-114.865,Rosalys Warm Spring,Challis,Hotspring,106,41'; put '44.06,-115.819,Danskin Creek Hot Spring,Challis,Hotspring,106,41'; put '45.852,-114.937,Running Warm Springs,Elk City,Hotspring,106,41'; put '43.363,-113.779,Milford Sweat Hot Spring,Idaho Falls,Hotspring,111,44'; put '46.466,-114.939,Colgate Warm Springs,Hamilton,Hotspring,106,41'; put '44.626,-115.749,Trail Creek Hot Spring,Challis,Hotspring,122,50'; put '43.816,-115.863,Warm Springs,Hailey,Hotspring,108,42'; put '43.76,-115.56,Pool Creek Hot Spring,Hailey,Hotspring,108,42'; put '45.042,-114.616,Snowshoe Johnsons Hot Spring,Elk City,Hotspring,108,42'; put '42.388,-112.085,Downata Hot Springs,Pocatello,Hotspring,109,43'; put '42.013,-114.504,Magic Hot Springs,Twin Falls,Hotspring,109,43'; put '42.779,-115.715,Buckaroo Hot Spring,Twin Falls,Hotspring,109,43'; put '43.99,-114.8,Pierson Hot Springs,Hailey,Hotspring,109,43'; put '43.038,-114.988,Tschanne Hot Spring,Hailey,Hotspring,109,43'; put '44.523,-114.173,Beardsley Hot Springs,Challis,Hotspring,109,43'; put '44.733,-115.018,Sunflower Flat Hot Spring,Challis,Hotspring,109,43'; put '44.516,-115.295,Dagger Creek Hot Spring,Challis,Hotspring,110,43'; put '44.971,-116.203,Krigbaum Hot Springs,Baker,Hotspring,109,43'; put '45.416,-116.172,Riggins Hot Springs,Grangeville,Hotspring,106,41'; put '42.735,-73.2,Sand Spring,Albany,Hotspring,75,24'; put '46.106,-114.004,Sleeping Child Hot Springs,Hamilton,Hotspring,122,50'; put '45.697,-114.365,Blue Joint Hot Springs 2,Elk City,Hotspring,84,29'; put '44.769,-111.649,Sloan Cow Camp Spring,Ashton,Hotspring,86,30'; put '47.632,-112.855,Medicine (Sun River) Springs,Choteau,Hotspring,86,30'; put '45.75,-113.938,Gallogly Spring,Dillon,Hotspring,100,38'; put '47.33,-114.789,Quinns Hot Springs,Wallace,Hotspring,109,43'; put '45.171,-112.153,Puller Hot Springs,Dillon,Hotspring,111,44'; put '46.728,-114.533,"Lolo Hot Springs, Granite Springs",Hamilton,Hotspring,111,44'; put '45.337,-110.691,Chico Hot Springs,Bozeman,Hotspring,113,45'; put '47.607,-114.663,Camas Hot Springs,Wallace,Hotspring,113,45'; put '45.841,-114.038,Medicine Hot Springs,Elk City,Hotspring,117,47'; put '45.458,-113.109,Elkhorn Hot Springs,Dillon,Hotspring,118,48'; put '45.027,-112.844,Mcmenomey Ranch Spring,Dillon,Hotspring,68,20'; put '45.792,-112.126,Renova Hot Springs,Dillon,Hotspring,122,50'; put '44.701,-111.878,Staudenmeyer Springs,Ashton,Hotspring,82,28'; put '45.602,-111.9,Potosi Warm Springs,Bozeman,Hotspring,124,51'; put '45.575,-111.683,Norris Hot Springs,Bozeman,Hotspring,127,53'; put '45.462,-112.475,New Biltmore Hot Springs,Dillon,Hotspring,127,53'; put '45.66,-111.186,Bozeman Hot Springs,Bozeman,Hotspring,131,55'; put '45.896,-112.233,Pipestone Hot Springs,Dillon,Hotspring,135,57'; put '46.547,-110.903,White Sulphur Springs,White Sulphur,Hotspring,136,58'; put '46.448,-111.982,Alhambra Hot Springs,White Sulphur,Hotspring,138,59'; put '45.757,-110.256,Hunters Hot Springs,Bozeman,Hotspring,140,60'; put '45.368,-113.403,Jardine Hot Spring,Dillon,Hotspring,140,60'; put '46.596,-112.108,Broadwater (Helena) Hot Springs,Butte,Hotspring,151,66'; put '44.984,-111.613,Wolf Creek Hot Springs,Ashton,Hotspring,154,68'; put '45.685,-112.295,Silver Star Hot Springs,Dillon,Hotspring,163,73'; put '45.59,-111.899,Potosi Hot Springs,Bozeman,Hotspring,122,50'; put '45.105,-112.751,Browns Springs,Dillon,Hotspring,75,24'; put '46.718,-113.306,Bearmouth Warm Spring 2,Butte,Hotspring,68,20'; put '46.717,-113.32,Bearmouth Warm Spring 1,Butte,Hotspring,68,20'; put '47.217,-109.471,Brooks Warm Spring,Lewistown,Hotspring,68,20'; put '45.708,-110.976,Bridger Canyon Warm Spring,Bozeman,Hotspring,70,21'; put '46.795,-108.883,Durfee Creek Springs,Roundup,Hotspring,70,21'; put '46.704,-113.452,Nimrod Springs,Butte,Hotspring,70,21'; put '47.876,-108.656,Landusky Springs,Lewistown,Hotspring,70,21'; put '45.032,-110.667,Bear Creek Springs,Bozeman,Hotspring,72,22'; put '45.111,-112.714,Lovells Hot Spring,Dillon,Hotspring,72,22'; put '46.106,-112.903,Anaconda Hot Springs,Butte,Hotspring,72,22'; put '45.235,-112.135,Trudau Warm Springs,Dillon,Hotspring,73,23'; put '45.698,-114.382,Blue Joint Hot Spring 1,Elk City,Hotspring,84,29'; put '45.037,-111.953,Vigilante Spring,Bozeman,Hotspring,75,24'; put '45.608,-110.571,Carter Bridge Warm Springs,Bozeman,Hotspring,82,28'; put '46.355,-111.565,Bedford Hot Springs,White Sulphur,Hotspring,74,24'; put '45.553,-110.142,Anderson Springs,Bozeman,Hotspring,77,25'; put '45.42,-112.692,Apex Warm Spring,Dillon,Hotspring,77,25'; put '46.607,-112.776,Garrison Warm Springs,Butte,Hotspring,77,25'; put '47.843,-108.598,The (Landusky) Plunge,Lewistown,Hotspring,77,25'; put '44.785,-111.649,West Fork Swimming Hole,Ashton,Hotspring,79,26'; put '46.61,-112.555,Avon Warm Spring,Butte,Hotspring,79,26'; put '46.334,-112.886,Deerlodge Prison Ranch Springs,Butte,Hotspring,79,26'; put '47.994,-108.445,Lodgepole (Big Warm) Springs,Lewistown,Hotspring,79,26'; put '47.451,-114.648,Green Springs,Wallace,Hotspring,79,26'; put '45.392,-112.452,Beaverhead Rock Spring,Dillon,Hotspring,81,27'; put '44.704,-111.892,Andersons Pasture Springs,Ashton,Hotspring,82,28'; put '47.971,-108.395,Little Warm Springs,Lewistown,Hotspring,73,23'; put '46.198,-112.094,Boulder Hot Springs,Butte,Hotspring,169,76'; put '46.178,-112.794,Warm Springs (State Hospital),Butte,Hotspring,172,78'; put '45.367,-111.726,Ennis Hot Springs,Bozeman,Hotspring,181,83'; put '46.044,-112.811,Gregson Hot Springs,Butte,Hotspring,158,70'; put '45.09,-110.774,Laduke (Corwin) Hot Spring,Bozeman,Hotspring,154,68'; put '35.897,-82.826,Hot Springs,Knoxville,Hotspring,108,42'; put '32.644,-108.128,Apache Tejo Warm Spring,Silver City,Hotspring,97,36'; put '33.135,-107.254,Truth Or Consequences,Tularosa,Hotspring,113,45'; put '36.305,-106.053,Ojo Caliente (Arsenic Spring),Aztec,Hotspring,111,44'; put '33.162,-108.209,Spring (Hot),Clifton,Hotspring,111,44'; put '36.508,-105.722,Manby Hot Springs,Raton,Hotspring,100,38'; put '35.849,-106.629,Spence Hot Springs,Albuquerque,Hotspring,100,38'; put '35.972,-106.56,San Antonio Warm Spring,Albuquerque,Hotspring,101,38'; put '35.82,-106.627,Mccauley Hot Springs,Albuquerque,Hotspring,99,37'; put '35.793,-106.685,Soda Dam Hot Springs,Albuquerque,Hotspring,117,47'; put '33.831,-108.8,(Upper) Frisco Hot Spring,Clifton,Hotspring,98,37'; put '35.646,-106.888,Warm Springs,Albuquerque,Hotspring,129,54'; put '36.324,-105.606,Ponce De Leon Springs,Raton,Hotspring,93,34'; put '34.038,-106.94,"Socorro Spring, Sedillo Spring",Socorro,Hotspring,93,34'; put '33.293,-108.282,"Spring Mfg Two, Spring Mfg Three",Clifton,Hotspring,99,37'; put '35.592,-106.753,Indian Springs,Albuquerque,Hotspring,123,51'; put '32.501,-106.926,Radium Springs,Las Cruces,Hotspring,127,53'; put '33.274,-108.25,Spring Mfg Four,Clifton,Hotspring,93,34'; put '35.938,-106.646,San Antonio Hot Spring,Albuquerque,Hotspring,129,54'; put '33.244,-108.88,San Francisco Hot Springs,Clifton,Hotspring,120,49'; put '32.748,-107.836,Mimbres Hot Springs,Las Cruces,Hotspring,136,58'; put '35.653,-105.29,Montezuma Hot Springs,Santa Fe,Hotspring,138,59'; put '33.233,-108.235,Spring (Hot),Clifton,Hotspring,149,65'; put '33.199,-108.209,Gila Hot Springs,Clifton,Hotspring,151,66'; put '33.108,-108.483,Turkey Creek Hot Spring,Clifton,Hotspring,165,74'; put '35.772,-106.69,Jemez Springs,Albuquerque,Hotspring,169,76'; put '35.908,-106.615,Sulphur Springs,Albuquerque,Hotspring,189,87'; put '33.237,-108.88,Hot Springs,Clifton,Hotspring,H,H'; put '32.562,-108.027,Kennecott Warm Springs,Silver City,Hotspring,W,W'; put '32.554,-107.994,Faywood Hot Springs,Las Cruces,Hotspring,129,54'; put '33.898,-108.501,Aragon Springs,Clifton,Hotspring,70,21'; put '34.847,-107.091,Spring (Salt),Socorro,Hotspring,76,24'; put '34.903,-107.085,El Ojo Escondido,Socorro,Hotspring,73,23'; put '35.06,-107.133,Alamos Spring,Albuquerque,Hotspring,72,22'; put '34.912,-108.951,Rainbow Spring,Saint Johns,Hotspring,71,22'; put '34.698,-107.129,Spring,Socorro,Hotspring,71,22'; put '32.455,-104.489,Indian Big Spring,Carlsbad,Hotspring,79,26'; put '34.995,-106.454,Clear Water Spring,Socorro,Hotspring,69,21'; put '32.821,-108.408,Ash Spring,Silver City,Hotspring,72,22'; put '32.83,-109.047,Goat Camp Spring,Silver City,Hotspring,69,21'; put '35.548,-106.827,San Ysidro Warm Springs,Albuquerque,Hotspring,68,20'; put '34.116,-106.98,Ojitos Springs,Socorro,Hotspring,68,20'; put '32.248,-104.411,Mosley Spring,Carlsbad,Hotspring,68,20'; put '33.708,-109.025,Frieborn Canyon Spring,Clifton,Hotspring,92,33'; put '33.192,-108.18,Lyons Hunting Lodge Hot Springs,Clifton,Hotspring,126,52'; put '35.601,-106.86,Phillips Springs,Albuquerque,Hotspring,70,21'; put '33.285,-108.262,Spring Mfg One,Clifton,Hotspring,88,31'; put '33.306,-108.324,The Meadows Warm Spring,Clifton,Hotspring,91,33'; put '34.049,-106.939,Cook Spring,Socorro,Hotspring,70,21'; put '32.795,-107.276,Derry Warm Springs,Las Cruces,Hotspring,92,33'; put '32.884,-108.358,Allen Springs,Silver City,Hotspring,78,26'; put '33.279,-107.563,Warm Springs,Tularosa,Hotspring,87,31'; put '32.606,-107.19,Souse Springs,Las Cruces,Hotspring,88,31'; put '34.808,-107.091,Spring (Salt),Socorro,Hotspring,86,30'; put '35.54,-106.854,San Ysidro Hot Springs,Albuquerque,Hotspring,85,29'; put '36.368,-106.059,Statue Spring,Aztec,Hotspring,83,28'; put '34.833,-107.091,Laguna Pueblo Seeps,Socorro,Hotspring,82,28'; put '33.572,-107.593,Ojo Caliente,Tularosa,Hotspring,83,28'; put '34.854,-107.088,Laguna Pueblo Springs,Socorro,Hotspring,80,27'; put '32.843,-108.512,Mangas Springs,Silver City,Hotspring,81,27'; put '34.769,-107.085,Spring (Salt),Socorro,Hotspring,78,26'; put '34.032,-106.777,Ojo De Las Canas,Socorro,Hotspring,79,26'; put '40.972,-119.007,Black Rock Hot Spring,Lovelock,Hotspring,136,58'; put '38.899,-119.41,Nevada (Hinds) Hot Springs,Walker Lake,Hotspring,144,62'; put '38.922,-118.198,Wedell Hot Springs,Walker Lake,Hotspring,144,62'; put '41.183,-114.991,Hot Springs,Wells,Hotspring,142,61'; put '38.437,-116.277,Hot Creek Valley Spring,Tonopah,Hotspring,142,61'; put '41.788,-114.735,Mineral Hot Spring,Wells,Hotspring,140,60'; put '37.825,-117.337,Alkali Hot Spring,Goldfield,Hotspring,140,60'; put '41.412,-114.675,Wine Cup Ranch Springs,Wells,Hotspring,138,59'; put '40.404,-116.517,Crescent Valley Hot Springs,Winnemucca,Hotspring,138,59'; put '40.417,-116.507,Crescent Valley Hot Springs,Winnemucca,Hotspring,138,59'; put '40.603,-116.463,Horseshoe Ranch Springs,Winnemucca,Hotspring,136,58'; put '41.378,-119.182,Springs (Hot),Vya,Hotspring,136,58'; put '39.883,-114.893,Cherry Creek Hot Springs,Ely,Hotspring,144,62'; put '40.922,-117.108,Hot Pot (Blossom Hot Springs),Winnemucca,Hotspring,136,58'; put '41.721,-118.505,Howard Hot Spring,Vya,Hotspring,135,57'; put '41.421,-117.388,The Hot Springs,Mcdermitt,Hotspring,135,57'; put '40.418,-117.415,Buffalo Springs,Winnemucca,Hotspring,162,72'; put '39.031,-116.666,Dianas Punch Bowl,Millett,Hotspring,138,59'; put '39.404,-116.347,Klobe (Bartholomae) Hot Spring,Millett,Hotspring,156,69'; put '36.975,-116.721,Hicks Hot Springs,Death Valley,Hotspring,109,43'; put '40.178,-117.496,Home Station Ranch Hot Spring,Winnemucca,Hotspring,135,57'; put '39.797,-118.067,Dixie Hot Springs,Reno,Hotspring,162,72'; put '39.904,-116.588,Walti Hot Springs,Millett,Hotspring,162,72'; put '38.981,-119.833,Walleys Hot Springs,Walker Lake,Hotspring,160,71'; put '38.464,-115.792,Chimney Warm Spring,Lund,Hotspring,160,71'; put '39.328,-116.858,Spencer Hot Springs,Millett,Hotspring,162,72'; put '41.108,-117.578,Hot Springs,Mcdermitt,Hotspring,158,70'; put '36.002,-114.742,Spring,Las Vegas,Hotspring,145,63'; put '41.576,-115.181,Hot Creek Springs,Wells,Hotspring,151,66'; put '40.954,-117.488,Golconda Hot Spring (South),Winnemucca,Hotspring,151,66'; put '40.22,-116.068,Bruffeys Hot Springs,Winnemucca,Hotspring,149,65'; put '40.249,-115.409,Smith Ranch Springs,Elko,Hotspring,149,65'; put '41.867,-114.692,San Jacinto Ranch Spring,Wells,Hotspring,148,64'; put '40.765,-116.04,Hot Sulphur Springs,Winnemucca,Hotspring,147,64'; put '38.188,-116.373,Warm Springs,Tonopah,Hotspring,145,63'; put '41.567,-118.564,Dyke Hot Springs,Vya,Hotspring,158,70'; put '38.365,-115.867,Abel Spring,Lund,Hotspring,115,46'; put '41.929,-114.071,Nile Spring,Wells,Hotspring,109,43'; put '39.193,-119.752,Carson Hot Springs,Reno,Hotspring,120,49'; put '39.512,-119.907,Lawton Hot Springs,Reno,Hotspring,120,49'; put '39.944,-119.509,Anaho Island Spring,Reno,Hotspring,120,49'; put '37.761,-117.632,Silverpeak Hot Spring,Goldfield,Hotspring,118,48'; put '37.621,-114.51,Caliente Hot Springs,Caliente,Hotspring,118,48'; put '39.058,-119.742,Saratoga Hot Spring,Reno,Hotspring,122,50'; put '39.308,-117.552,Hot Springs,Millett,Hotspring,115,46'; put '40.673,-116.838,Hot Springs,Winnemucca,Hotspring,122,50'; put '39.08,-116.639,Potts Ranch Hot Springs,Millett,Hotspring,113,45'; put '38.388,-115.866,Coyote Hole Spring,Lund,Hotspring,113,45'; put '41.753,-118.841,Warm Springs,Vya,Hotspring,112,44'; put '41.386,-114.165,Spring (Hot),Wells,Hotspring,111,44'; put '40.961,-117.494,Golconda Hot Spring (North),Winnemucca,Hotspring,165,74'; put '40.313,-117.07,Mound Springs,Winnemucca,Hotspring,109,43'; put '40.585,-115.285,Sulphur Hot Springs,Elko,Hotspring,205,96'; put '39.059,-119.815,Hobo Hot Springs,Reno,Hotspring,114,46'; put '40.191,-117.107,Hot Springs,Winnemucca,Hotspring,127,53'; put '40.819,-115.777,Hot Hole,Elko,Hotspring,133,56'; put '39.286,-119.84,Bowers Mansion Hot Spring,Reno,Hotspring,133,56'; put '41.809,-118.861,Painted Hills Mine,Vya,Hotspring,131,55'; put '41.925,-118.805,Bog Hot Springs,Vya,Hotspring,131,55'; put '41.647,-115.775,Wild Horse Hot Springs,Wells,Hotspring,129,54'; put '40.183,-117.102,Hot Springs Ranch,Winnemucca,Hotspring,129,54'; put '40.08,-117.604,Mccoy Springs,Winnemucca,Hotspring,120,49'; put '41.353,-119.216,Spring (Hot),Vya,Hotspring,127,53'; put '41.357,-119.188,Springs (Hot),Vya,Hotspring,133,56'; put '40.198,-117.103,Hot Springs,Winnemucca,Hotspring,127,53'; put '39.42,-119.738,Dimonte Spring,Reno,Hotspring,127,53'; put '38.952,-115.23,Williams Hot Spring,Lund,Hotspring,127,53'; put '41.261,-115.305,Hot Springs,Wells,Hotspring,126,52'; put '39.041,-116.663,Hot Spring,Millett,Hotspring,124,51'; put '41.365,-119.221,Spring (Hot),Vya,Hotspring,122,50'; put '41.159,-114.986,"Threemile Spring, Sulphur Hot Spr",Wells,Hotspring,122,50'; put '41.339,-119.192,Springs (Hot),Vya,Hotspring,127,53'; put '39.893,-116.649,Little Hot Springs,Millett,Hotspring,H,H'; put '39.787,-119.011,Bradys Hot Springs,Reno,Hotspring,209,98'; put '41.175,-115.278,Hot Spring,Wells,Hotspring,H,H'; put '41.145,-114.994,Hot Spring,Wells,Hotspring,H,H'; put '40.864,-117.349,Sulphur Spring,Winnemucca,Hotspring,H,H'; put '39.733,-119.039,Eagle Salt Works Spring,Reno,Hotspring,H,H'; put '39.281,-118.42,Sand Springs,Reno,Hotspring,H,H'; put '38.81,-116.397,Fish Springs,Tonopah,Hotspring,W,W'; put '39.559,-117.427,Petersons Mill Hot Spring,Millett,Hotspring,H,H'; put '38.339,-116.662,Warm Spring,Tonopah,Hotspring,W,W'; put '38.859,-119.175,Hot Spring,Walker Lake,Hotspring,H,H'; put '39.995,-117.854,Senator Fumaroles,Millett,Hotspring,B,B'; put '39.565,-118.856,(Soda Lake Area),Reno,Hotspring,210,99'; put '40.141,-119.687,The Needle Rocks Hot Springs,Lovelock,Hotspring,208,98'; put '40.146,-119.673,The Needle Rocks Hot Spring,Lovelock,Hotspring,208,98'; put '40.662,-119.365,Great Boiling Spring (Gerlach),Lovelock,Hotspring,208,98'; put '39.388,-119.743,Steamboat Springs,Reno,Hotspring,205,96'; put '39.866,-118.017,Dixie Comstock Mine,Reno,Hotspring,H,H'; put '40.746,-116.689,White House Spring,Winnemucca,Hotspring,W,W'; put '39.98,-119.502,Pyramid Island Hot Spring,Reno,Hotspring,.,.'; put '41.934,-118.808,Warm Springs,Vya,Hotspring,W,W'; put '41.385,-116.058,Petaini Springs,Mcdermitt,Hotspring,W,W'; put '41.064,-115.389,Warm Springs,Wells,Hotspring,W,W'; put '41.066,-114.99,Spring,Wells,Hotspring,W,W'; put '41.355,-114.133,Warm Springs,Wells,Hotspring,W,W'; put '41.148,-116.733,Hot Lake,Mcdermitt,Hotspring,H,H'; put '40.684,-116.153,Ellison Ranch Warm Spring,Winnemucca,Hotspring,W,W'; put '40.604,-117.648,Leach Hot Springs,Winnemucca,Hotspring,207,97'; put '40.751,-115.035,Warm Springs,Elko,Hotspring,W,W'; put '40.782,-115.363,Warm Spring,Elko,Hotspring,W,W'; put '39.529,-116.388,Warm Spring,Millett,Hotspring,W,W'; put '39.072,-115.635,Big Blue Spring,Ely,Hotspring,W,W'; put '38.95,-119.388,Spring,Walker Lake,Hotspring,W,W'; put '38.965,-118.689,Double Spring,Walker Lake,Hotspring,W,W'; put '38.458,-117.303,Indian Springs,Tonopah,Hotspring,W,W'; put '40.592,-116.157,Raine Ranch Springs,Winnemucca,Hotspring,W,W'; put '39.941,-116.681,Hot Springs,Millett,Hotspring,180,82'; put '40.567,-116.588,Beowawe Hot Springs (The Geysers),Winnemucca,Hotspring,208,98'; put '40.761,-117.492,Hot Springs,Winnemucca,Hotspring,185,85'; put '40.653,-119.378,Mud Springs,Lovelock,Hotspring,184,84'; put '38.768,-119.174,Wilson Hot Spring,Walker Lake,Hotspring,183,84'; put '41.921,-118.709,Baltazor Hot Spring,Vya,Hotspring,181,83'; put '40.857,-119.328,Fly Ranch (Wards) Hot Springs,Lovelock,Hotspring,180,82'; put '39.597,-119.11,Patua Hot Springs (Fernley),Reno,Hotspring,187,86'; put '39.028,-117.136,Mcleod Ranch Hot Spring,Millett,Hotspring,180,82'; put '40.316,-116.433,Hot Spring,Winnemucca,Hotspring,186,86'; put '38.521,-116.365,Hot Creek Ranch Hot Spring,Tonopah,Hotspring,180,82'; put '41.051,-119.028,Double Hot Springs,Vya,Hotspring,178,81'; put '40.003,-117.718,Hyder Hot Springs,Winnemucca,Hotspring,176,80'; put '39.665,-114.807,Monte Neva Hot Springs,Ely,Hotspring,176,80'; put '40.368,-117.327,Buffalo Valley Hot Springs,Winnemucca,Hotspring,174,79'; put '40.699,-116.133,Hot Springs (Carlin),Winnemucca,Hotspring,174,79'; put '41.052,-118.717,Macfarlane Hot Spring,Vya,Hotspring,170,77'; put '39.342,-118.578,Borax Spring,Reno,Hotspring,180,82'; put '39.484,-119.804,Moana Springs,Reno,Hotspring,199,93'; put '41.243,-114.947,Twelvemile Spring,Wells,Hotspring,102,39'; put '39.38,-119.74,Steamboat Springs,Reno,Hotspring,205,96'; put '39.558,-116.36,Bartine Hot Springs,Millett,Hotspring,108,42'; put '39.954,-117.917,Fumaroles,Millett,Hotspring,204,96'; put '40.389,-119.402,Hot Seeps (San Emidio Desert),Lovelock,Hotspring,203,95'; put '38.822,-117.183,Darroughs Hot Springs,Tonopah,Hotspring,203,95'; put '40.088,-117.725,Sou (Seven Devils) Hot Springs,Winnemucca,Hotspring,185,85'; put '41.363,-118.788,Pinto Hot Springs,Vya,Hotspring,199,93'; put '40.408,-117.883,Kyle Hot Springs,Winnemucca,Hotspring,171,77'; put '41.357,-118.809,West Pinto Hot Spring,Vya,Hotspring,198,92'; put '39.316,-117.549,Hot Springs,Millett,Hotspring,198,92'; put '41.468,-116.15,Hot Sulphur Springs (Tuscarora),Mcdermitt,Hotspring,194,90'; put '40.813,-115.778,Elko Hot Spring,Elko,Hotspring,190,88'; put '39.208,-118.723,"Lee Hot Springs, Allen Springs",Reno,Hotspring,190,88'; put '40.262,-119.379,Boiling Springs,Lovelock,Hotspring,187,86'; put '40.77,-119.113,Butte Springs (Trego Hot Springs),Lovelock,Hotspring,187,86'; put '39.161,-119.183,Wabuska Hot Springs,Reno,Hotspring,201,94'; put '39.814,-115.612,Giocoecha Warm Springs,Ely,Hotspring,76,24'; put '36.389,-114.433,Blue Point Spring,Las Vegas,Hotspring,82,28'; put '37.016,-117.211,Seep,Goldfield,Hotspring,77,25'; put '37.751,-116.274,Cedar Spring,Goldfield,Hotspring,77,25'; put '37.896,-114.227,Flatnose Ranch Spring,Caliente,Hotspring,77,25'; put '36.207,-115.983,Pahrump (Bennetts) Spring,Las Vegas,Hotspring,77,25'; put '41.775,-115.921,Rizzi Ranch Hot Spring,Wells,Hotspring,106,41'; put '35.944,-114.731,Hot Spring,Kingman,Hotspring,78,26'; put '41.884,-114.117,Gambles Hole,Wells,Hotspring,104,40'; put '36.565,-115.671,Indian Springs,Las Vegas,Hotspring,78,26'; put '39.547,-114.915,Campbell Ranch Springs,Ely,Hotspring,76,24'; put '38.423,-115.022,Flag Springs,Lund,Hotspring,75,24'; put '38.44,-115.011,Butterfield Springs,Lund,Hotspring,75,24'; put '37.997,-118.039,Fish Spring,Mariposa,Hotspring,75,24'; put '37.029,-116.719,Springs,Goldfield,Hotspring,75,24'; put '36.426,-116.411,Ash Tree Spring,Death Valley,Hotspring,75,24'; put '36.033,-115.888,Browns Spring,Las Vegas,Hotspring,75,24'; put '41.322,-119.206,Springs,Vya,Hotspring,75,24'; put '41.706,-118.261,Ninemile Springs,Vya,Hotspring,79,26'; put '35.964,-114.743,Hot Spring,Kingman,Hotspring,82,28'; put '41.763,-118.279,Fivemile Spring,Vya,Hotspring,81,27'; put '39.457,-119.722,Huffaker Springs,Reno,Hotspring,81,27'; put '38.992,-117.042,Charnock (Big Blue) Springs,Tonopah,Hotspring,80,27'; put '36.402,-116.302,Davis Ranch Springs,Death Valley,Hotspring,81,27'; put '36.45,-116.313,Spring,Death Valley,Hotspring,81,27'; put '39.792,-114.692,Lower Shellbourne Spring,Ely,Hotspring,77,25'; put '41.338,-119.168,Springs,Vya,Hotspring,79,26'; put '41.022,-119.275,Caine Spring,Vya,Hotspring,73,23'; put '41.05,-117.1,Hot Springs Ranch Springs,Mcdermitt,Hotspring,79,26'; put '40.079,-116.035,Flynn Ranch Springs,Winnemucca,Hotspring,78,26'; put '40.325,-116.058,Hot Springs,Winnemucca,Hotspring,79,26'; put '36.414,-116.292,Spring,Death Valley,Hotspring,79,26'; put '36.173,-115.191,Las Vegas Springs,Las Vegas,Hotspring,79,26'; put '36.174,-115.479,White Rock Spring,Las Vegas,Hotspring,78,26'; put '36.565,-115.623,Spring,Las Vegas,Hotspring,79,26'; put '36.491,-116.342,"Fairbanks Spring, Soda Spring",Death Valley,Hotspring,81,27'; put '38.654,-114.633,Geyser Ranch Springs,Lund,Hotspring,70,21'; put '36.363,-116.271,Bole Spring,Death Valley,Hotspring,72,22'; put '36.999,-116.706,Spring,Death Valley,Hotspring,72,22'; put '36.942,-115.425,Ash Creek Spring,Las Vegas,Hotspring,72,22'; put '38.796,-119.65,Doud Springs,Walker Lake,Hotspring,70,21'; put '38.622,-115.047,Emigrant Springs,Lund,Hotspring,70,21'; put '38.927,-115.082,Preston Springs,Lund,Hotspring,70,21'; put '36.147,-115.893,Manse Ranch Spring,Las Vegas,Hotspring,75,24'; put '38.645,-114.632,Geyser Ranch Springs,Lund,Hotspring,70,21'; put '38.574,-115.522,Tom Spring,Lund,Hotspring,72,22'; put '38.671,-114.628,Geyser Ranch Springs,Lund,Hotspring,70,21'; put '37.783,-114.528,Bennett Springs,Caliente,Hotspring,70,21'; put '37.86,-114.321,Delmues Springs,Caliente,Hotspring,70,21'; put '36.408,-116.313,Davis Ranch Spring,Death Valley,Hotspring,70,21'; put '36.567,-114.446,Seep,Las Vegas,Hotspring,70,21'; put '41.369,-114.187,Gamble Spring,Wells,Hotspring,69,20'; put '39.901,-115.868,Thompson Ranch Spring,Ely,Hotspring,68,20'; put '38.633,-114.638,Wambolt Springs,Lund,Hotspring,70,21'; put '37.906,-118.171,Sand Spring,Mariposa,Hotspring,74,23'; put '36.486,-114.329,Springs,Las Vegas,Hotspring,77,25'; put '41.354,-119.116,Mustang Springs,Vya,Hotspring,73,23'; put '41.746,-119.791,Warm Springs,Vya,Hotspring,73,23'; put '41.258,-118.937,Cane Springs,Vya,Hotspring,74,23'; put '40.103,-119.884,Fish Springs,Lovelock,Hotspring,73,23'; put '39.853,-119.719,Spring,Reno,Hotspring,73,23'; put '39.832,-116.069,Sulphur Spring,Millett,Hotspring,74,23'; put '36.363,-116.263,Spring,Death Valley,Hotspring,72,22'; put '38.554,-115.531,Kate Spring,Lund,Hotspring,73,23'; put '37.074,-116.691,Spring,Goldfield,Hotspring,72,22'; put '37.979,-117.993,Gap Spring,Goldfield,Hotspring,73,23'; put '41.591,-119.862,Twin (Vya) Spring,Vya,Hotspring,71,22'; put '40.763,-119.172,Coyote Spring,Lovelock,Hotspring,72,22'; put '40.127,-116.884,Springs,Winnemucca,Hotspring,72,22'; put '40.187,-116.805,Spring,Winnemucca,Hotspring,72,22'; put '40.967,-114.515,Johnson Ranch Springs,Elko,Hotspring,72,22'; put '36.205,-115.141,Kyle Spring,Las Vegas,Hotspring,75,24'; put '39.8,-114.653,Upper Shellbourne Spring,Ely,Hotspring,74,23'; put '36.428,-116.303,Button Springs,Death Valley,Hotspring,93,34'; put '38.383,-115.153,Hot Creek Ranch Spring,Lund,Hotspring,90,32'; put '39.283,-114.866,Lackawanna Hot Springs,Ely,Hotspring,95,35'; put '38.532,-116.465,Upper Warm Spring,Tonopah,Hotspring,95,35'; put '38.823,-116.717,South Mosquito Creek Ranch Springs,Tonopah,Hotspring,95,35'; put '40.829,-117.306,Brooks Spring,Winnemucca,Hotspring,93,34'; put '40.992,-117.763,Spring,Winnemucca,Hotspring,93,34'; put '41.971,-114.574,Warm Springs,Wells,Hotspring,95,35'; put '38.95,-115.7,Big Warm Spring,Lund,Hotspring,93,34'; put '37.463,-115.192,Ash Springs,Caliente,Hotspring,97,36'; put '36.464,-116.319,Parent Springs,Death Valley,Hotspring,93,34'; put '38.352,-115.181,Moon River Spring,Lund,Hotspring,92,33'; put '36.402,-116.274,"Point of Rocks Springs, King Sprin",Death Valley,Hotspring,91,33'; put '36.421,-116.322,Crystal Pool,Death Valley,Hotspring,91,33'; put '36.425,-116.291,Devils Hole,Death Valley,Hotspring,92,33'; put '39.068,-119.786,Springs,Reno,Hotspring,90,32'; put '38.954,-117.049,Big Blue (A) Spring,Tonopah,Hotspring,90,32'; put '40.087,-114.647,Collar And Elbow Spring,Elko,Hotspring,93,34'; put '36.378,-114.443,Rogers Spring,Las Vegas,Hotspring,82,28'; put '39.943,-116.073,Shipley Hot Spring,Millett,Hotspring,106,41'; put '38.698,-116.435,"Upper Warm Spring, Warm Spring",Tonopah,Hotspring,106,41'; put '41.53,-118.57,Spring,Vya,Hotspring,104,40'; put '41.877,-115.628,Rowland Hot Springs,Wells,Hotspring,104,40'; put '40.035,-117.604,Lower Ranch Hot Springs,Winnemucca,Hotspring,104,40'; put '40.187,-116.79,Chillis Hot Spring,Winnemucca,Hotspring,102,39'; put '39.988,-116.044,Siri Ranch Spring,Millett,Hotspring,95,35'; put '39.421,-119.758,Zolezzi Spring,Reno,Hotspring,102,39'; put '38.531,-116.405,Old Dugan Ranch Hot Springs,Tonopah,Hotspring,102,39'; put '36.968,-116.723,Burrell Hot Spring,Death Valley,Hotspring,102,39'; put '38.343,-118.103,Soda Springs,Walker Lake,Hotspring,100,38'; put '38.556,-115.767,"Lockes Big Spring, Hay Corral Spr",Lund,Hotspring,100,38'; put '38.594,-115.138,Moorman Spring,Lund,Hotspring,100,38'; put '38.398,-115.862,Storm Spring,Lund,Hotspring,99,37'; put '41.19,-115.287,Hot Spring,Wells,Hotspring,97,36'; put '37.822,-117.48,Pearl Hot Springs,Goldfield,Hotspring,97,36'; put '39.159,-119.737,Nevada State Prison Spring,Reno,Hotspring,75,24'; put '40.025,-117.646,Spring,Winnemucca,Hotspring,83,28'; put '40.83,-119.538,Springs,Lovelock,Hotspring,84,29'; put '39.442,-119.743,Double Diamond Spring,Reno,Hotspring,84,29'; put '39.413,-114.779,Mcgill Spring,Ely,Hotspring,84,29'; put '39.458,-114.756,Schoolhouse Spring,Ely,Hotspring,84,29'; put '36.375,-116.274,Big (Ash Meadows) Spring,Death Valley,Hotspring,83,28'; put '38.292,-114.272,Hammond Ranch Spring,Lund,Hotspring,84,29'; put '41.398,-119.165,Spring,Vya,Hotspring,84,29'; put '41.732,-119.785,Seeps (Hills Warm Spring),Vya,Hotspring,83,28'; put '38.563,-115.528,Blue Eagle Springs,Lund,Hotspring,84,29'; put '40.873,-117.937,Rose Creek Spring,Winnemucca,Hotspring,83,28'; put '39.917,-114.667,Spring,Ely,Hotspring,83,28'; put '36.39,-116.278,Jack Rabbit Spring,Death Valley,Hotspring,82,28'; put '36.437,-116.206,Spring,Death Valley,Hotspring,82,28'; put '38.937,-115.695,Little Warm Spring,Lund,Hotspring,90,32'; put '36.479,-116.326,Rogers Spring,Death Valley,Hotspring,82,28'; put '40.29,-116.049,Carlotti Ranch Springs,Winnemucca,Hotspring,102,39'; put '36.468,-116.325,Longstreet Spring,Death Valley,Hotspring,82,28'; put '36.722,-114.716,Muddy Spring,Las Vegas,Hotspring,90,32'; put '37.532,-115.233,Crystal Springs,Caliente,Hotspring,90,32'; put '37.598,-115.215,Hiko Spring,Caliente,Hotspring,90,32'; put '36.404,-116.383,Spring,Death Valley,Hotspring,90,32'; put '37.996,-116.389,Reveille Mill Spring,Goldfield,Hotspring,84,29'; put '36.71,-114.714,Moapa Warm Springs,Las Vegas,Hotspring,90,32'; put '35.982,-114.748,Hot Springs,Kingman,Hotspring,86,30'; put '40.929,-116.895,Izzenhood Ranch Springs,Winnemucca,Hotspring,88,31'; put '37.807,-114.38,Panaca Spring,Caliente,Hotspring,88,31'; put '36.942,-116.729,Spring,Death Valley,Hotspring,88,31'; put '41.98,-114.376,Hot Spring,Wells,Hotspring,86,30'; put '36.433,-116.308,Scruggs Springs,Death Valley,Hotspring,86,30'; put '40.952,-114.751,Ralphs Warm Springs,Elko,Hotspring,86,30'; put '39.526,-118.876,Soda Lake,Reno,Hotspring,86,30'; put '38.027,-116.683,Spring,Tonopah,Hotspring,86,30'; put '37.741,-115.753,Sand Spring,Caliente,Hotspring,86,30'; put '36.918,-116.744,Beatty Municipal Spring,Death Valley,Hotspring,88,31'; put '38.255,-116.829,Saulsbury Warm Spring,Tonopah,Hotspring,86,30'; put '42.48,-73.37,Lebanon Spring,Albany,Hotspring,72,22'; put '44.241,-122.058,Bigelow Hot Springs,Salem,Hotspring,142,61'; put '44.862,-121.201,Kahneeta Hot Springs,Bend,Hotspring,126,52'; put '44.927,-117.939,Radium Hot Springs,Baker,Hotspring,135,57'; put '44.354,-118.574,Blue Mountain Hot Springs,Canyon City,Hotspring,136,58'; put '44.936,-122.173,Bagby Hot Springs,Salem,Hotspring,136,58'; put '43.944,-118.136,Beulah Hot Springs,Burns,Hotspring,140,60'; put '43.763,-117.156,Mitchell Butte Hot Spring,Boise,Hotspring,144,62'; put '42.116,-121.287,Oregon Hot Springs (Big Hot Spring,Klamath Falls,Hotspring,142,61'; put '45.151,-118.659,Lehman Springs,Pendleton,Hotspring,142,61'; put '43.719,-121.209,East Lake Hot Springs,Crescent,Hotspring,144,62'; put '43.469,-118.202,Luce Hot Springs,Burns,Hotspring,145,63'; put '45.018,-117.625,Medical Hot Springs,Grangeville,Hotspring,140,60'; put '44.867,-121.228,Springs,Bend,Hotspring,125,52'; put '42.188,-118.383,Flagstaff Butte Hot Spring,Adel,Hotspring,126,52'; put '44.451,-119.105,Mount Vernon Hot Springs,Canyon City,Hotspring,121,49'; put '42.977,-117.061,Canters Hot Spring,Jordan Valley,Hotspring,120,49'; put '43.294,-122.367,Umpqua Hot Springs,Roseburg,Hotspring,117,47'; put '44.002,-119.647,Weberg Hot Spring,Canyon City,Hotspring,115,46'; put '43.739,-117.178,Deer Butte Hot Spring,Boise,Hotspring,115,46'; put '43.795,-117.958,Jonesboro Warm Spring,Boise,Hotspring,112,45'; put '42.075,-119.927,Hallinan Spring,Adel,Hotspring,113,45'; put '42.297,-119.776,Fisher Hot Springs,Adel,Hotspring,154,68'; put '45.013,-117.885,Kropp Hot Spring,Grangeville,Hotspring,109,43'; put '42.221,-120.368,Hunters Hot Springs,Klamath Falls,Hotspring,205,96'; put '44.083,-122.233,Cougar Reservoir Hot Springs,Salem,Hotspring,111,44'; put '44.023,-117.46,Neal Hot Springs,Baker,Hotspring,189,87'; put '42.431,-121.963,Eagle Point Spring,Klamath Falls,Hotspring,95,35'; put '43.689,-122.372,Kitson Hot Springs,Roseburg,Hotspring,109,43'; put '44.813,-117.765,Spring (Hot),Baker,Hotspring,W,W'; put '43.776,-118.047,Warm Spring,Burns,Hotspring,W,W'; put '43.793,-118.472,Sitz Warm Spring,Burns,Hotspring,W,W'; put '43.86,-118.288,Altnow Hot Spring,Burns,Hotspring,W,W'; put '43.893,-117.596,Springs,Boise,Hotspring,W,W'; put '45.206,-117.912,Union Station Hot Springs,Grangeville,Hotspring,H,H'; put '44.208,-117.455,Jamieson Hot Springs,Baker,Hotspring,H,H'; put '42.338,-118.602,Hot Springs,Adel,Hotspring,207,97'; put '44.782,-121.975,Breitenbush Hot Springs,Bend,Hotspring,198,92'; put '42.219,-119.877,Warner Valley Ranch,Adel,Hotspring,198,92'; put '42.156,-120.345,Barry Ranch Hot Springs,Klamath Falls,Hotspring,190,88'; put '44.193,-122.049,Belknap Springs,Salem,Hotspring,160,71'; put '45.021,-122.009,Austin Hot Springs,Vancouver,Hotspring,186,86'; put '42.676,-118.344,Mickey Springs,Adel,Hotspring,187,86'; put '44.153,-122.098,Foley Springs,Salem,Hotspring,178,81'; put '45.244,-117.958,Hot Lake Springs,Grangeville,Hotspring,176,80'; put '42.544,-118.533,Alvord Hot Springs,Adel,Hotspring,174,79'; put '43.441,-118.638,Crane Hot Springs,Burns,Hotspring,172,78'; put '42.226,-119.881,Crump Geyser (Crump Spring),Adel,Hotspring,172,78'; put '43.727,-117.203,Snively Hot Spring,Boise,Hotspring,170,77'; put '42.174,-121.615,Olene Gap Hot Springs,Klamath Falls,Hotspring,165,74'; put '43.708,-122.288,Mccredie Springs,Roseburg,Hotspring,163,73'; put '43.982,-117.233,Vale Hot Springs,Boise,Hotspring,163,73'; put '42.162,-120.344,Leithead Hot Spring,Klamath Falls,Hotspring,162,72'; put '45.372,-121.697,Mount Hood Fumaroles,The Dalles,Hotspring,194,90'; put '43.264,-119.015,Dunn Spring,Burns,Hotspring,70,21'; put '42.873,-122.167,Annie Spring,Medford,Hotspring,77,25'; put '42.133,-121.219,Wilkersons Hot Spring,Klamath Falls,Hotspring,76,24'; put '43.272,-119.293,Basque Spring,Burns,Hotspring,74,23'; put '43.276,-119.34,Double O Spring,Burns,Hotspring,74,23'; put '44.073,-119.427,Brisbois Ranch Springs,Canyon City,Hotspring,72,22'; put '43.265,-119.276,Johnson Spring,Burns,Hotspring,72,22'; put '43.281,-119.311,Double O Barnyard Spring,Burns,Hotspring,72,22'; put '43.501,-119.091,Roadland Spring,Burns,Hotspring,72,22'; put '43.529,-119.081,Goodman Spring,Burns,Hotspring,72,22'; put '43.703,-117.19,South Black Willow Spring,Boise,Hotspring,71,22'; put '42.307,-119.875,Moss Ranch Spring,Adel,Hotspring,72,22'; put '43.758,-118.067,Juntura Warm Spring 1,Burns,Hotspring,77,25'; put '43.732,-121.252,Paulina Springs,Crescent,Hotspring,70,21'; put '42.176,-121.828,Howard Holiday,Klamath Falls,Hotspring,77,25'; put '43.477,-119.075,Baker Spring,Burns,Hotspring,70,21'; put '42.178,-121.801,Hardboard Spring,Klamath Falls,Hotspring,70,21'; put '42.325,-120.327,White Rock Ranch Hot Spring,Klamath Falls,Hotspring,71,21'; put '43.252,-119.258,Hughet Spring,Burns,Hotspring,68,20'; put '42.38,-120.33,Bean Hot Spring,Klamath Falls,Hotspring,69,20'; put '42.933,-120.642,Lost Cabin Spring,Klamath Falls,Hotspring,68,20'; put '42.998,-120.725,Buckhorn Creek Springs,Klamath Falls,Hotspring,68,20'; put '42.688,-117.905,Tudors Spring,Jordan Valley,Hotspring,68,20'; put '42.756,-117.55,Scott Spring,Jordan Valley,Hotspring,68,20'; put '42.725,-120.646,Summer Lake Hot Spring,Klamath Falls,Hotspring,109,43'; put '43.757,-118.092,Juntura Warm Spring 2,Burns,Hotspring,95,35'; put '44.374,-118.738,Limekiln Hot Spring,Canyon City,Hotspring,70,21'; put '42.221,-122.742,Jackson Hot Springs,Medford,Hotspring,95,35'; put '44.892,-119.141,Ritter Hot Springs,Canyon City,Hotspring,106,41'; put '43.808,-122.309,Wall Creek Warm Springs,Roseburg,Hotspring,106,41'; put '43.395,-118.308,Springs (Hot),Burns,Hotspring,106,41'; put '43.302,-117.383,Hot Spring,Boise,Hotspring,106,41'; put '44.28,-118.956,Joaquin Miller Hot Springs,Canyon City,Hotspring,104,40'; put '42.501,-119.693,Antelope Hot Springs,Adel,Hotspring,104,40'; put '45.129,-118.738,Hidaway Springs,Pendleton,Hotspring,100,38'; put '44.975,-118.044,Fisher Hot Springs,Canyon City,Hotspring,99,37'; put '44.033,-117.449,Bully Creek Spring,Baker,Hotspring,99,37'; put '42.93,-120.798,Pardon Warm Spring,Klamath Falls,Hotspring,76,24'; put '42.327,-118.602,Borax Lake (Hot Lake),Adel,Hotspring,97,36'; put '42.161,-121.627,Crystal Spring,Klamath Falls,Hotspring,78,26'; put '45.741,-118.233,Bingham Springs,Pendleton,Hotspring,93,34'; put '42.889,-118.898,Fivemile Spring (Hoghouse Hot Sprs,Adel,Hotspring,80,27'; put '43.54,-119.081,Millpond Hot Spring,Burns,Hotspring,79,26'; put '45.891,-116.873,Cook Creek Hot Spring,Grangeville,Hotspring,97,36'; put '45.295,-121.731,Swim Warm Springs,The Dalles,Hotspring,79,26'; put '42.04,-120.924,Warm Spring,Klamath Falls,Hotspring,92,33'; put '44.779,-117.811,Sam O Spring,Baker,Hotspring,80,27'; put '44.538,-117.417,Nelson Spring,Baker,Hotspring,80,27'; put '45.631,-119.703,Well Spring,Pendleton,Hotspring,80,27'; put '42.287,-119.867,Moss Ranch Springs,Adel,Hotspring,83,28'; put '45.061,-118.455,Warm Mineral Spring,Pendleton,Hotspring,83,28'; put '43.95,-119.634,Warm Springs,Burns,Hotspring,84,29'; put '45.295,-117.806,Warm Spring,Grangeville,Hotspring,85,29'; put '42.815,-118.899,Warm Springs,Adel,Hotspring,89,32'; put '43.452,-103.508,Hot Brook Springs,Hot Springs,Hotspring,75,24'; put '43.442,-103.481,Hot Springs,Hot Springs,Hotspring,87,31'; put '29.178,-102.953,Rio Grande Village Spring,Emory Peak,Hotspring,97,36'; put '30.823,-105.315,Indian Hot Springs,Marfa,Hotspring,117,47'; put '30.038,-104.598,Ruidosa Hot Springs,Marfa,Hotspring,113,45'; put '29.182,-102.992,Hot Springs,Emory Peak,Hotspring,106,41'; put '30.21,-104.562,Capote Springs,Marfa,Hotspring,99,37'; put '30.133,-104.602,Nixon Spring,Marfa,Hotspring,90,32'; put '29.787,-104.462,Springs (Las Cienegas),Presidio,Hotspring,86,30'; put '30.861,-105.34,Red Bull Spring,Marfa,Hotspring,99,37'; put '38.85,-112.49,Hatton Hot Spring,Richfield,Hotspring,100,38'; put '40.176,-111.801,Bird Island,Salt Lake City,Hotspring,86,30'; put '41.917,-111.958,Gancheff Spring,Ogden,Hotspring,88,31'; put '37.942,-112.438,Lefevre,Cedar City,Hotspring,90,32'; put '37.335,-113.687,Veyo Hot Spring,Cedar City,Hotspring,90,32'; put '40.332,-111.891,Fault Zone Spring,Salt Lake City,Hotspring,90,32'; put '40.146,-111.806,Lincoln Point Warm Springs,Salt Lake City,Hotspring,90,32'; put '38.186,-112.912,Us Blm,Richfield,Hotspring,91,33'; put '41.833,-112.454,Blue Creek Spring,Brigham City,Hotspring,82,28'; put '40.526,-111.488,Midway Hot Springs,Salt Lake City,Hotspring,100,38'; put '40.525,-111.468,Midway Hot Springs,Salt Lake City,Hotspring,104,40'; put '40.038,-111.529,Castilla Springs,Salt Lake City,Hotspring,104,40'; put '38.217,-112.904,Dotsons (Radium) Warm Spring,Richfield,Hotspring,91,33'; put '40.465,-109.221,Split Mountain Warm Springs,Vernal,Hotspring,86,30'; put '40.788,-112.017,Hobo Warm Spring,Tooele,Hotspring,84,29'; put '40.788,-111.899,Wasatch Hot Springs,Salt Lake City,Hotspring,108,42'; put '39.35,-113.515,Tule Spring,Delta,Hotspring,82,28'; put '39.424,-113.485,Coyote Spring,Delta,Hotspring,82,28'; put '39.842,-113.392,Fish Springs,Delta,Hotspring,82,28'; put '39.887,-113.413,North Springs,Delta,Hotspring,82,28'; put '41.756,-113.603,Warm Spring,Brigham City,Hotspring,81,27'; put '41.038,-111.656,Como Springs,Ogden,Hotspring,81,27'; put '40.397,-112.421,Morgans Warm Spring,Tooele,Hotspring,80,27'; put '39.464,-114.038,Gandy Warm Springs,Ely,Hotspring,81,27'; put '40.447,-110.828,Warm Springs,Salt Lake City,Hotspring,79,26'; put '37.7,-110.421,Warm Spring,Escalante,Hotspring,79,26'; put '40.502,-114.038,Blue Lake Spring,Elko,Hotspring,84,29'; put '38.503,-112.849,Roosevelt Hot Springs,Richfield,Hotspring,133,56'; put '38.774,-112.096,Richfield Warm Springs,Richfield,Hotspring,73,23'; put '40.488,-111.911,Crystal Hot Springs,Salt Lake City,Hotspring,187,86'; put '38.186,-113.197,Thermo Hot Springs,Richfield,Hotspring,185,85'; put '38.172,-113.204,Thermo Hot Springs,Richfield,Hotspring,181,83'; put '39.613,-112.729,"Baker (Abraham, Crater) Hot Spring",Delta,Hotspring,180,82'; put '38.639,-112.098,Red Hill Hot Spring,Richfield,Hotspring,171,77'; put '38.633,-112.107,Monroe (Cooper) Hot Springs,Richfield,Hotspring,169,76'; put '38.613,-112.202,Joseph Hot Springs,Richfield,Hotspring,147,64'; put '39.906,-113.43,Wilson Health Springs,Delta,Hotspring,142,61'; put '41.138,-112.175,Hooper Hot Springs,Brigham City,Hotspring,140,60'; put '41.338,-112.031,Utah Hot Springs,Brigham City,Hotspring,138,59'; put '38.864,-112.506,Meadow Hot Springs,Richfield,Hotspring,106,41'; put '40.815,-111.918,Becks Hot Spring,Salt Lake City,Hotspring,133,56'; put '37.189,-113.272,Dixie (Laverkin) Hot Springs,Cedar City,Hotspring,108,42'; put '41.659,-112.087,Crystal (Madsens) Hot Springs,Brigham City,Hotspring,129,54'; put '41.855,-112.158,Udy Hot Springs,Brigham City,Hotspring,124,51'; put '41.578,-112.23,Stinking Hot Springs,Brigham City,Hotspring,118,48'; put '40.517,-111.475,Midway Hot Spring,Salt Lake City,Hotspring,115,46'; put '40.536,-111.478,Warm Ditch Spring,Salt Lake City,Hotspring,115,46'; put '40.35,-111.905,Saratoga Hot Springs,Salt Lake City,Hotspring,111,44'; put '40.353,-111.895,Crater Hot Spring,Salt Lake City,Hotspring,111,44'; put '41.901,-112.999,Coyote Spring,Brigham City,Hotspring,109,43'; put '41.687,-113.986,Spring (Hot),Brigham City,Hotspring,108,42'; put '41.582,-112.256,Little Mountain Hot Spring,Brigham City,Hotspring,108,42'; put '41.822,-113.263,L.G. Carter Springs,Brigham City,Hotspring,77,25'; put '41.236,-111.924,Ogden Hot Spring,Ogden,Hotspring,135,57'; put '37.178,-113.634,Snow Spring,Cedar City,Hotspring,70,21'; put '38.34,-113.22,Woodhouse Spring,Richfield,Hotspring,72,22'; put '38.155,-112.901,Willow Spring,Richfield,Hotspring,72,22'; put '38.56,-112.578,Sulphurdale,Richfield,Hotspring,72,22'; put '38.981,-111.829,Salt Spring,Salina,Hotspring,72,22'; put '37.174,-112.535,Red Canyon,Cedar City,Hotspring,72,22'; put '41.808,-113.327,W.R. Carter Springs,Brigham City,Hotspring,70,21'; put '41.818,-113.311,Larson Springs,Brigham City,Hotspring,70,21'; put '41.829,-113.654,Head Spring,Brigham City,Hotspring,70,21'; put '40.653,-112.907,Redlum Spring,Tooele,Hotspring,70,21'; put '40.458,-111.929,Camp Williams,Salt Lake City,Hotspring,70,21'; put '40.647,-112.524,Grantsville Warm Springs,Tooele,Hotspring,77,25'; put '39.183,-111.691,Sterling (Peacock) Warm Spring,Price,Hotspring,72,22'; put '39.246,-111.645,Livingston Warm Springs,Price,Hotspring,73,23'; put '38.138,-112.863,Big Maple Spring,Richfield,Hotspring,70,21'; put '37.393,-113.61,Irvine Spring,Cedar City,Hotspring,70,21'; put '41.563,-113.954,Kimber (Rose) Spring,Brigham City,Hotspring,68,20'; put '41.614,-113.613,Warm Spring,Brigham City,Hotspring,68,20'; put '41.328,-111.826,Patio Springs,Ogden,Hotspring,68,20'; put '40.172,-112.426,Davis,Tooele,Hotspring,68,20'; put '40.118,-111.337,Diamond Fork Warm Springs,Salt Lake City,Hotspring,68,20'; put '39.249,-113.877,Knoll Springs,Delta,Hotspring,68,20'; put '39.403,-113.863,Twin Springs,Delta,Hotspring,68,20'; put '39.788,-111.881,Ray Lunt Spring,Price,Hotspring,68,20'; put '38.762,-112.87,Springs,Richfield,Hotspring,68,20'; put '38.77,-112.871,Coyote Spring,Richfield,Hotspring,68,20'; put '37.937,-112.424,Tebbs,Cedar City,Hotspring,68,20'; put '37.096,-113.447,Warner Valley Spring,Cedar City,Hotspring,70,21'; put '40.565,-112.738,Deseret Livestock South Springs,Tooele,Hotspring,73,23'; put '37.158,-113.399,Virgin River Spring,Cedar City,Hotspring,70,21'; put '39.899,-112.045,Springs,Delta,Hotspring,72,22'; put '38.603,-112.111,Johnson Warm Spring,Richfield,Hotspring,77,25'; put '41.722,-112.266,Bothwell Warm Springs,Brigham City,Hotspring,75,24'; put '40.538,-112.747,Deseret Livestock,Tooele,Hotspring,75,24'; put '40.733,-112.621,Utah Fish And Game Dept,Tooele,Hotspring,75,24'; put '40.228,-111.867,Warm Springs,Salt Lake City,Hotspring,75,24'; put '37.137,-113.513,Warm Spring,Cedar City,Hotspring,75,24'; put '37.138,-113.528,Green Spring,Cedar City,Hotspring,75,24'; put '37.166,-113.383,Berry Springs,Cedar City,Hotspring,75,24'; put '41.834,-112.054,Cutler Warm Spring,Brigham City,Hotspring,73,23'; put '40.614,-112.709,Horseshoe Springs,Tooele,Hotspring,73,23'; put '41.239,-112.413,Compton Spring,Brigham City,Hotspring,72,22'; put '40.743,-112.642,Big Warm Springs,Tooele,Hotspring,72,22'; put '40.558,-112.739,Deseret Livestock South Spring,Tooele,Hotspring,72,22'; put '40.39,-112.424,Russells Warm Springs,Tooele,Hotspring,72,22'; put '41.831,-113.391,Pugsley,Brigham City,Hotspring,73,23'; put '41.449,-112.442,Poulsen Spring (Salt),Brigham City,Hotspring,72,22'; put '40.167,-111.622,Wood Springs,Salt Lake City,Hotspring,73,23'; put '40.234,-111.865,Warm Springs,Salt Lake City,Hotspring,77,25'; put '39.955,-111.858,Goshen Warm Srings,Price,Hotspring,73,23'; put '39.334,-113.518,South Tule Spring,Delta,Hotspring,77,25'; put '39.616,-112.803,Fumarole Butte,Delta,Hotspring,73,23'; put '40.545,-111.928,East Jordan Canal,Salt Lake City,Hotspring,73,23'; put '41.643,-112.281,Springs,Brigham City,Hotspring,72,22'; put '37.29,-80.619,New River White Sulphur Springs,Bluefield,Hotspring,85,29'; put '37.997,-79.83,Hot Springs,Roanoke,Hotspring,106,41'; put '37.898,-79.462,Rockbridge Baths,Roanoke,Hotspring,72,22'; put '38.055,-79.78,Warm Springs,Charlottesvill,Hotspring,95,35'; put '37.963,-79.861,Healing Springs,Roanoke,Hotspring,86,30'; put '38.238,-79.65,Bragg Spring,Charlottesvill,Hotspring,75,24'; put '37.645,-80.238,Sweet Chalybeate Spring,Bluefield,Hotspring,75,24'; put '38.218,-79.673,Bolar Spring,Charlottesvill,Hotspring,73,23'; put '37.86,-79.988,Layton Spring,Roanoke,Hotspring,72,22'; put '37.87,-79.933,Falling Spring,Roanoke,Hotspring,77,25'; put '37.16,-80.806,Alum Springs,Bluefield,Hotspring,72,22'; put '46.852,-121.758,Mt Rainier Fumaroles,Yakima,Hotspring,162,72'; put '46.738,-121.562,Ohanapecosh Hot Springs,Yakima,Hotspring,122,50'; put '47.707,-121.155,Scenic Hot Springs,Wenatchee,Hotspring,122,50'; put '47.969,-123.864,Sol Duc Hot Springs,Seattle,Hotspring,122,50'; put '48.974,-119.475,Hot Lake,Okanogan,Hotspring,122,50'; put '45.658,-121.962,Moffetts (Bonneville) Hot Springs,The Dalles,Hotspring,97,36'; put '48.906,-119.455,Poison Lake,Okanogan,Hotspring,122,50'; put '45.701,-121.728,Collins Hot Springs,The Dalles,Hotspring,122,50'; put '47.484,-121.391,Goldmeyer Hot Springs,Wenatchee,Hotspring,127,53'; put '46.202,-121.492,Mount Adams Fumaroles,Yakima,Hotspring,150,66'; put '46.198,-122.197,Mt St Helens Fumaroles,Hoquiam,Hotspring,190,88'; put '48.789,-121.804,Dorr Fumarole Field,Concrete,Hotspring,194,90'; put '48.77,-121.813,Sherman Crater Fumaroles,Concrete,Hotspring,266,130'; put '45.723,-121.927,Rock Creek Hot Springs,The Dalles,Hotspring,H,H'; put '48.15,-121.062,Gamma Hot Springs,Concrete,Hotspring,140,60'; put '46.378,-122.265,Green River Soda Spring,Hoquiam,Hotspring,86,30'; put '46.575,-121.706,Packwood Hot Spring,Yakima,Hotspring,100,38'; put '47.201,-121.536,Lester Hot Springs,Wenatchee,Hotspring,120,49'; put '46.024,-118.771,Warm Springs Canyon Warm Spring,Walla Walla,Hotspring,72,22'; put '46.345,-121.6,Orr Creek Warm Springs,Yakima,Hotspring,72,22'; put '46.041,-121.181,Fish Hatchery Warm Spring,Yakima,Hotspring,75,24'; put '46.752,-121.814,Longmire Mineral Springs,Yakima,Hotspring,77,25'; put '47.892,-121.342,Garland Mineral Springs,Wenatchee,Hotspring,84,29'; put '46.452,-120.956,Simcoe Soda Springs,Yakima,Hotspring,90,32'; put '48.254,-121.17,Sulphur Creek Hot Springs,Concrete,Hotspring,99,37'; put '48.118,-121.192,Kennedy Hot Spring,Concrete,Hotspring,100,38'; put '48.763,-121.667,Baker Hot Spring,Concrete,Hotspring,108,42'; put '47.977,-123.682,Olympic Hot Springs,Seattle,Hotspring,118,48'; put '45.728,-121.8,St Martins Hot Springs,The Dalles,Hotspring,120,49'; put '45.821,-121.133,Klickitat Mineral Springs,The Dalles,Hotspring,81,27'; put '38.163,-79.975,Minnehaha Springs,Charlottesvill,Hotspring,70,21'; put '37.63,-80.24,Old Sweet Spring,Bluefield,Hotspring,73,23'; put '39.618,-78.23,Berkeley Springs,Cumberland,Hotspring,72,22'; put '38.605,-79.353,Thorn Spring,Charlottesvill,Hotspring,72,22'; put '39.471,-77.877,Swan Pond Spring,Baltimore,Hotspring,72,22'; put '44.29,-110.504,"Hot Springs,heart Lake Geyser Basi",Ashton,Hotspring,201,94'; put '44.691,-110.728,Geyser Springs Group,Ashton,Hotspring,201,94'; put '44.554,-110.812,Fountain Group,Ashton,Hotspring,201,94'; put '44.543,-110.859,Fairy Springs,Ashton,Hotspring,201,94'; put '44.485,-110.852,"Biscuit Basin, Sapphire Pool",Ashton,Hotspring,201,94'; put '44.48,-110.85,Cascade Group,Ashton,Hotspring,201,94'; put '44.46,-110.844,Black Sand Basin,Ashton,Hotspring,201,94'; put '44.459,-110.835,Myriad Group,Ashton,Hotspring,201,94'; put '44.307,-110.526,"Hot Springs,heart Lake Geyser Basi",Ashton,Hotspring,201,94'; put '44.354,-110.8,Shoshone Geyser Basin,Ashton,Hotspring,203,95'; put '44.568,-110.805,Quagmire Group,Ashton,Hotspring,203,95'; put '44.537,-110.801,"White Dome Geyser, Surprise Pool",Ashton,Hotspring,203,95'; put '44.52,-110.828,Flood Group,Ashton,Hotspring,203,95'; put '44.471,-110.843,"Daisy Group, Sentinel Geysers",Ashton,Hotspring,203,95'; put '44.466,-110.839,"Middle Group,tortoise Shell,inkwel",Ashton,Hotspring,203,95'; put '44.46,-110.828,"Geyser Hill Group, Old Faithful Ge",Ashton,Hotspring,203,95'; put '44.908,-110.393,Calcite Springs,Ashton,Hotspring,201,94'; put '44.417,-110.57,West Thumb Geyser Basin,Ashton,Hotspring,203,95'; put '44.459,-110.817,Southeastern Group,Ashton,Hotspring,198,92'; put '44.433,-110.581,Potts Hot Spring Basin,Ashton,Hotspring,203,95'; put '44.421,-110.952,Smoke Jumper Hot Springs,Ashton,Hotspring,198,92'; put '44.684,-110.753,Monument Geyser Basin,Ashton,Hotspring,197,92'; put '44.679,-110.746,Beryl Spring,Ashton,Hotspring,198,92'; put '44.544,-110.258,Turbid Springs,Ashton,Hotspring,198,92'; put '44.53,-110.297,Steamboat Springs,Ashton,Hotspring,198,92'; put '44.518,-110.813,"Hot Springs, Rabbit Creek Group",Ashton,Hotspring,198,92'; put '44.514,-110.828,Rabbit Creek Group,Ashton,Hotspring,198,92'; put '44.484,-110.873,Mystic Falls Springs,Ashton,Hotspring,198,92'; put '44.739,-110.324,Josephs Coat Springs,Ashton,Hotspring,199,93'; put '44.75,-110.714,Gas Vent,Ashton,Hotspring,H,H'; put '44.282,-110.506,Rustic Geyser,Ashton,Hotspring,199,93'; put '44.571,-110.811,Morning Mist Springs,Ashton,Hotspring,205,96'; put '44.733,-110.703,Cistern Spring,Ashton,Hotspring,199,93'; put '44.697,-110.724,Gibbon Hill Geyser,Ashton,Hotspring,199,93'; put '44.693,-110.738,Artists Paintpots,Ashton,Hotspring,199,93'; put '44.69,-110.384,Hot Springs on Bog Creek,Ashton,Hotspring,199,93'; put '44.526,-110.835,Excelsior Geyser Crater,Ashton,Hotspring,199,93'; put '44.418,-110.805,Lone Star Geyser,Ashton,Hotspring,199,93'; put '44.309,-110.654,Hot Springs on Lewis Lake,Ashton,Hotspring,199,93'; put '44.469,-110.828,Solitary Geyser,Ashton,Hotspring,198,92'; put '44.433,-110.813,Hot Springs,Ashton,Hotspring,H,H'; put '44.766,-110.3,Hot Springs,Ashton,Hotspring,H,H'; put '44.61,-110.438,Hot Springs,Ashton,Hotspring,H,H'; put '44.607,-110.617,Hot Springs East of Mary Lake,Ashton,Hotspring,H,H'; put '44.601,-110.632,Gas Vent East of Mary Lake,Ashton,Hotspring,H,H'; put '44.595,-110.622,Gas Vents Southeast of Mary Lake,Ashton,Hotspring,H,H'; put '44.572,-110.691,Hot Springs,Ashton,Hotspring,H,H'; put '44.553,-110.301,Beach Springs,Ashton,Hotspring,H,H'; put '44.551,-110.85,Springs on Fairy Creek,Ashton,Hotspring,H,H'; put '44.616,-110.616,Highland Hot Springs,Ashton,Hotspring,H,H'; put '44.438,-110.977,Hot Springs on Continental Divide,Ashton,Hotspring,H,H'; put '44.617,-110.432,Mud Geysers,Ashton,Hotspring,H,H'; put '44.404,-110.824,Hot Springs on Upper Firehole Rive,Ashton,Hotspring,H,H'; put '44.498,-109.193,Buffalo Bill Reservoir Springs,Cody,Hotspring,W,W'; put '44.495,-109.222,Buffalo Bill Reservoir Springs,Cody,Hotspring,W,W'; put '44.482,-109.204,Buffalo Bill Reservoir Springs,Cody,Hotspring,W,W'; put '44.841,-110.167,"Hot, on Lamar River",Ashton,Hotspring,W,W'; put '44.734,-110.029,Hot Springs,Ashton,Hotspring,W,W'; put '44.708,-110.471,Warm Spring,Ashton,Hotspring,W,W'; put '44.701,-110.036,Hot Springs,Ashton,Hotspring,W,W'; put '44.508,-110.832,Midway Picnic Ground,Ashton,Hotspring,H,H'; put '44.715,-110.555,Gas Vents,Ashton,Hotspring,H,H'; put '44.563,-110.834,River Group,Ashton,Hotspring,205,96'; put '44.544,-110.788,"Black Warrior Group, Shelf Spring",Ashton,Hotspring,205,96'; put '44.115,-110.684,Huckleberry Hot Springs,Ashton,Hotspring,B,B'; put '44.842,-110.732,Apollinaris Spring,Ashton,Hotspring,H,H'; put '44.825,-110.675,Gas Vents at Horseshoe Hill,Ashton,Hotspring,H,H'; put '44.781,-110.738,Steam Vents at Roaring Mountain,Ashton,Hotspring,H,H'; put '44.743,-110.242,Hot Spring Basin Group,Ashton,Hotspring,198,92'; put '44.752,-110.256,Hot Spring,Ashton,Hotspring,H,H'; put '44.612,-110.618,Gas Vent,Ashton,Hotspring,H,H'; put '44.741,-110.699,Gas Vent,Ashton,Hotspring,H,H'; put '44.566,-110.871,"Flat Cone Spring, Steep Cone",Ashton,Hotspring,205,96'; put '44.711,-110.468,Hot Springs,Ashton,Hotspring,H,H'; put '44.708,-110.461,Forest Springs,Ashton,Hotspring,H,H'; put '44.672,-110.236,Hot Springs,Ashton,Hotspring,H,H'; put '44.667,-110.282,Hot Springs,Ashton,Hotspring,H,H'; put '44.656,-110.572,Violet Springs,Ashton,Hotspring,H,H'; put '44.642,-110.238,Hot Spring,Ashton,Hotspring,H,H'; put '44.634,-110.234,The Mudkettles,Ashton,Hotspring,H,H'; put '44.634,-110.226,The Mushpots,Ashton,Hotspring,H,H'; put '44.532,-110.874,"Imperial Geyser, Spray Geyser",Ashton,Hotspring,192,89'; put '42.545,-106.725,Alcova Hot Springs,Casper,Hotspring,129,54'; put '42.75,-109.616,Steele Hot Springs,Lander,Hotspring,102,39'; put '43.37,-110.445,Granite Hot Spring,Driggs,Hotspring,106,41'; put '43.008,-108.835,Washakie Mineral Hot Springs,Thermopolis,Hotspring,111,44'; put '43.907,-110.198,North Buffalo Fork Springs,Driggs,Hotspring,113,45'; put '43.365,-110.443,Granite Falls Hot Springs,Driggs,Hotspring,112,45'; put '42.817,-110.997,Johnson Springs,Preston,Hotspring,115,46'; put '44.723,-110.358,Hot Spring on Moss Creek,Ashton,Hotspring,115,46'; put '44.681,-110.326,Hot Springs on Upper Sour Creek,Ashton,Hotspring,194,90'; put '41.45,-106.804,Saratoga Hot Springs,Rawlins,Hotspring,129,54'; put '44.671,-110.786,Secret Valley Hot Springs,Ashton,Hotspring,95,35'; put '44.625,-110.433,Mud Volcano,Ashton,Hotspring,131,55'; put '43.654,-108.194,Thermopolis Hot Springs,Thermopolis,Hotspring,133,56'; put '44.985,-110.689,Hot River,Ashton,Hotspring,136,58'; put '44.588,-110.341,Ebro Springs,Ashton,Hotspring,136,58'; put '44.55,-110.805,Fountain Paint Pot,Ashton,Hotspring,136,58'; put '44.169,-110.583,Snake Hot Springs,Ashton,Hotspring,136,58'; put '44.157,-110.699,Crawfish Creek Hot Springs,Ashton,Hotspring,136,58'; put '44.165,-110.723,Crawfish Creek Hot Springs,Ashton,Hotspring,138,59'; put '44.711,-110.741,Chocolate Pots,Ashton,Hotspring,124,51'; put '43.56,-109.732,Geyser (Warm Spring Creek Springs),Thermopolis,Hotspring,84,29'; put '43.489,-109.605,Jakeys Fork Spring,Thermopolis,Hotspring,68,20'; put '44.749,-108.188,Little Sheep Mountain Spring,Cody,Hotspring,68,20'; put '42.249,-104.781,Warm Springs (Immigrants Washtub),Torrington,Hotspring,70,21'; put '44.608,-108.138,Sheep Mountain Springs,Cody,Hotspring,70,21'; put '43.583,-108.213,Wind River Canyon Spring,Thermopolis,Hotspring,72,22'; put '42.702,-107.105,Horse Creek Springs,Casper,Hotspring,75,24'; put '44.511,-109.156,Needle Hot Springs,Cody,Hotspring,75,24'; put '43.52,-109.669,Little Warm Spring,Thermopolis,Hotspring,77,25'; put '43.3,-110.775,Astoria Mineral Hot Springs,Driggs,Hotspring,99,37'; put '43.543,-110.741,Abercrombie Warm Springs,Driggs,Hotspring,81,27'; put '44.513,-109.115,De Maris Springs,Cody,Hotspring,97,36'; put '42.665,-105.394,Douglas Hot Springs,Torrington,Hotspring,86,30'; put '43.471,-110.835,Boyles Hill Springs,Driggs,Hotspring,86,30'; put '43.282,-110.019,Kendall Warm Spring,Driggs,Hotspring,86,30'; put '44.662,-110.768,Iron Spring,Ashton,Hotspring,86,30'; put '42.492,-108.172,Sweetwater Station Warm Springs,Lander,Hotspring,90,32'; put '44.742,-110.579,Wolf Lake Springs,Ashton,Hotspring,91,33'; put '44.513,-109.129,Shoshone Hot Springs,Cody,Hotspring,95,35'; put '42.828,-110.999,Auburn Hot Springs,Preston,Hotspring,144,62'; put '43.639,-110.615,Kelly Warm Spring,Driggs,Hotspring,81,27'; put '44.532,-110.796,Five Sisters Springs,Ashton,Hotspring,192,89'; put '44.582,-110.314,Vermilion Springs,Ashton,Hotspring,140,60'; put '44.521,-110.275,Butte Springs,Ashton,Hotspring,187,86'; put '44.478,-110.867,Hillside Springs,Ashton,Hotspring,187,86'; put '44.752,-110.418,Hot Springs at Sevenmile Hole,Ashton,Hotspring,189,87'; put '44.401,-110.936,Hot Springs on Continental Divide,Ashton,Hotspring,189,87'; put '44.769,-110.269,Rainbow Springs,Ashton,Hotspring,190,88'; put '44.628,-110.433,Sulphur Caldron,Ashton,Hotspring,190,88'; put '44.702,-110.767,Sylvan Springs,Ashton,Hotspring,192,89'; put '44.529,-110.791,White Creek Group,Ashton,Hotspring,185,85'; put '44.564,-110.869,Queens Laundry,Ashton,Hotspring,192,89'; put '44.697,-110.375,Hot Springs on Bog Creek,Ashton,Hotspring,185,85'; put '44.285,-110.9,Bechler River Hot Springs,Ashton,Hotspring,194,90'; put '44.797,-110.725,Amphitheater Springs,Ashton,Hotspring,196,91'; put '44.766,-110.429,Washburn Hot Springs,Ashton,Hotspring,196,91'; put '44.756,-110.308,Coffee Pot Hot Springs,Ashton,Hotspring,196,91'; put '44.591,-110.321,Hot Springs at Sulphur Hills,Ashton,Hotspring,196,91'; put '44.556,-110.832,River Group,Ashton,Hotspring,196,91'; put '44.422,-110.574,West Thumb Geyser Basin,Ashton,Hotspring,196,91'; put '44.786,-110.74,Semi-Centennial Geyser,Ashton,Hotspring,198,92'; put '44.653,-110.482,Sulphur Springs,Ashton,Hotspring,194,89'; put '44.41,-110.953,Summit Lake Hot Springs,Ashton,Hotspring,162,72'; put '44.761,-110.73,Bijah Spring,Ashton,Hotspring,198,92'; put '44.781,-110.699,Whiterock Springs,Ashton,Hotspring,144,62'; put '44.739,-110.258,Hot Spring Basin Group,Ashton,Hotspring,153,67'; put '44.754,-110.403,Sevenmile Hole,Ashton,Hotspring,154,68'; put '44.276,-110.636,Hot Springs on Lewis Lake,Ashton,Hotspring,154,68'; put '44.598,-110.236,Hot Springs In Pelican Valley,Ashton,Hotspring,156,69'; put '44.142,-110.656,South Entrance Hot Springs,Ashton,Hotspring,156,69'; put '44.753,-110.724,"Roadside Springs, Frying Pan Sprin",Ashton,Hotspring,158,70'; put '44.733,-110.712,Horseshoe Spring,Ashton,Hotspring,187,86'; put '43.958,-110.696,Jackson Lake Hot Springs,Driggs,Hotspring,162,72'; put '44.187,-110.726,Hot Springs,Ashton,Hotspring,142,61'; put '44.967,-110.708,Mammoth Hot Springs,Ashton,Hotspring,163,73'; put '44.475,-110.843,Morning Glory Pool,Ashton,Hotspring,163,73'; put '44.204,-110.486,Hot Springs on Upper Snake River,Ashton,Hotspring,167,75'; put '44.299,-110.517,"Heart Lake Geyser Basin, Middle Gr",Ashton,Hotspring,174,79'; put '44.671,-110.29,Ponuntpa Springs Group,Ashton,Hotspring,180,82'; put '44.244,-111.022,Boundary Creek Hot Springs,Ashton,Hotspring,181,83'; put '44.414,-110.817,"Lone Star Geyser Basin, Footbridge",Ashton,Hotspring,183,84'; put '44.722,-110.701,Echinus Geyser,Ashton,Hotspring,185,85'; put '44.461,-110.854,Emerald Pool,Ashton,Hotspring,158,70'; put ';;;;'; put 'run;'; put '* ServiceInit end;'; put '* Service start;'; put '/* this macro converts the JS input to a WORK table - work.areas */'; put '%webout(FETCH)'; put 'proc sql;'; put 'create table springs as select *'; put 'from mydb.springs'; put 'where area in (select area from work.areas);'; put '/* these macros open the JSON, send the table back, and close the JSON */'; put '%webout(OPEN)'; put '%webout(OBJ,springs)'; 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/files; %let service=upload; 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 '%macro mp_jsonout(action,ds,jref=_webout,dslabel=,fmt=Y'; put ',engine=DATASTEP'; put ',missing=NULL'; put ',showmeta=NO'; put ')/*/STORE SOURCE*/;'; put '%local tempds colinfo fmtds i numcols;'; put '%let numcols=0;'; 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 _null_;'; 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 'newlen=max(formatl,length);'; 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 '/* needs to be wide, for datetimes etc */'; put 'newlen=max(length,formatl,24);'; 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(''len'',_n_),newlen,''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 'run;'; put '%let tempds=%substr(_%sysfunc(compress(%sysfunc(uuidgen()),-)),1,32);'; 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;set &ds;'; 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 'data _data_;'; put '/* rename on entry */'; put 'set &ds(rename=('; put '%do i=1 %to &numcols;'; put '&&name&i=&&newname&i'; put '%end;'; put '));'; put '%do i=1 %to &numcols;'; put 'length &&name&i $&&len&i;'; put '%if &&typelong&i=num %then %do;'; put '&&name&i=left(put(&&newname&i,&&fmt&i));'; put '%end;'; put '%else %do;'; put '&&name&i=put(&&newname&i,&&fmt&i);'; put '%end;'; put 'drop &&newname&i;'; put '%end;'; put 'if _error_ then call symputx(''syscc'',1012);'; put 'run;'; put '%let fmtds=&syslast;'; 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 $32767;'; put 'format &&name&i $32767.;'; put '%end;'; put '%end;'; put '%if &fmt=Y %then %do;'; put 'set &fmtds;'; put '%end;'; put '%else %do;'; put 'set &ds;'; put '%end;'; 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,''"\''!!''0A0D09000E0F01021011''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/\\/\\\\/'',-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 &showmeta=YES %then %do;'; put 'filename _sjs4 temp lrecl=131068 encoding=''utf-8'';'; put 'data _null_;'; put 'file _sjs4;'; 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=Y,missing=NULL'; put ',showmeta=NO'; 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'; 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(&_debug) ge 131 %then %do;'; put '/* if debug mode, send back first 10 records of each work table also */'; put 'options obs=10;'; 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=YES)'; 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 '_PROGRAM=quote(trim(resolve(symget(''_PROGRAM''))));'; put 'put ",""SYSUSERID"" : ""&sysuserid"" ";'; put 'put ",""MF_GETUSER"" : ""%mf_getuser()"" ";'; 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 'put '',"_PROGRAM" : '' _PROGRAM ;'; put 'put ",""SYSCC"" : ""&syscc"" ";'; put 'put ",""SYSENCODING"" : ""&sysencoding"" ";'; put 'syserrortext=quote(cats(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=quote(cats(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);'; put '%mm_webout(&action,ds=&ds,dslabel=&dslabel,fmt=&fmt'; put ',missing=&missing'; put ',showmeta=&showmeta'; 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 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=quote(trim(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=quote(trim(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 "%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 mf_isdir(path'; put ')/*/STORE SOURCE*/;'; put '%local rc did is_directory fref_t;'; put '%let is_directory = 0;'; put '%let rc = %sysfunc(filename(fref_t, %superq(path)));'; put '%let did = %sysfunc(dopen(&fref_t.));'; put '%if &did. ^= 0 %then %do;'; put '%let is_directory = 1;'; put '%let rc = %sysfunc(dclose(&did.));'; put '%end;'; put '%let rc = %sysfunc(filename(fref_t));'; put '&is_directory'; put '%mend mf_isdir;'; 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 ', 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 '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 '%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 '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 ')/*/STORE SOURCE*/;'; put '%local mod;'; 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_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 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_webin();'; put '/* prepare global variables */'; put '%global _webin_file_count'; put '_webin_filename _webin_filename1'; put '_webin_fileref _webin_fileref1'; put '_webin_fileuri _webin_fileuri1'; put '_webin_name _webin_name1'; put ';'; put '/* create initial versions */'; put '%let _webin_file_count=%eval(&_webin_file_count+0);'; put '%let _webin_filename1=%sysfunc(coalescec(&_webin_filename1,&_webin_filename));'; put '%let _webin_fileref1=%sysfunc(coalescec(&_webin_fileref1,&_webin_fileref));'; put '%let _webin_fileuri1=%sysfunc(coalescec(&_webin_fileuri1,&_webin_fileuri));'; put '%let _webin_name1=%sysfunc(coalescec(&_webin_name1,&_webin_name));'; put '/* If Viya, create temporary fileref(s) */'; put '%local i;'; put '%if %mf_getplatform()=SASVIYA %then %do i=1 %to &_webin_file_count;'; put '%let _webin_fileref&i=%mf_getuniquefileref();'; put 'filename &&_webin_fileref&i filesrvc "&&_webin_fileuri&i";'; put '%end;'; put '%mend mp_webin;'; put '* SAS Macros end;'; put '* SAS Includes start;'; put '* SAS Includes end;'; put '* Binary Files start;'; put '* Binary Files end;'; put '* ServiceInit start;'; put 'libname mydb (work);'; put 'data mydb.springs ;'; put 'attrib'; put 'Latitude length= 8'; put 'Longitude length= 8'; put 'Name length= $34'; put 'Area length= $14'; put 'Type length= $9'; put 'Farenheit length= 8'; put 'Celsius length= 8'; put ';'; put 'infile cards dsd;'; put 'input'; put 'Latitude'; put 'Longitude'; put 'Name :$char.'; put 'Area :$char.'; put 'Type :$char.'; put 'Farenheit'; put 'Celsius'; 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 'datalines4;'; put '51.925,-177.16,Fumaroles on Kanaga Island,Adak,Hotspring,219,104'; put '65.858,-164.71,Serpentine Hot Springs,Bendeleben,Hotspring,171,77'; put '53.851,-166.918,Hot Springs Near Makushin Volcano,Unalaska,Hotspring,H,H'; put '53.877,-166.448,Hot Springs Near Summer Bay,Unalaska,Hotspring,H,H'; put '52.27,-174.042,Hot Springs on Atka Island,Atka,Hotspring,H,H'; put '52.34,-174.26,Hot Springs on Atka Island,Atka,Hotspring,H,H'; put '52.358,-172.317,Hot Spring on Seguam Island,Seguam,Hotspring,H,H'; put '52.84,-169.9,Chuginadak Hot Springs,Samalga Island,Hotspring,H,H'; put '52.96,-169.71,Hot Spring on Kagamil Island,Samalga Island,Hotspring,H,H'; put '51.94,-178.5,Hot Spring on Little Sitkin Island,Rat Islands,Hotspring,H,H'; put '51.963,-178.491,Fumaroles on Little Sitkin Island,Rat Islands,Hotspring,H,H'; put '51.775,-178.793,Fumaroles on Gareloi Island,Gareloi Island,Hotspring,H,H'; put '53.207,-168.445,Hot Springs Near Geyser Bight,Umnak,Hotspring,H,H'; put '53.892,-166.93,Makushin Volcano Fumaroles,Unalaska,Hotspring,310,154'; put '54.9,-162.885,Hot Spring on Amagat Island,False Pass,Hotspring,H,H'; put '53.213,-168.463,Hot Springs Near Geyser Bight,Umnak,Hotspring,216,102'; put '53.223,-168.477,Hot Springs Near Geyser Bight,Umnak,Hotspring,214,101'; put '53.443,-168.092,Thermal Springs In Okmok Caldera,Umnak,Hotspring,212,100'; put '52.042,-176.108,Hot Springs on Great Sitkin Island,Adak,Hotspring,210,99'; put '55.983,-131.661,Bailey Hot Spring,Ketchikan,Hotspring,198,92'; put '53.242,-168.365,Hot Springs Near Hot Springs Cove,Umnak,Hotspring,192,89'; put '54.157,-165.85,Hot Springs Near Hot Springs Bay,Unimak,Hotspring,181,83'; put '58.033,-136.017,Hot Springs North End Tenakee Inle,Mt. Fairweathe,Hotspring,180,82'; put '65.093,-164.922,Pilgrim Springs,Bendeleben,Hotspring,178,81'; put '57.831,-156.513,W Ukinek Spring,Ugashik,Hotspring,178,81'; put '65.459,-153.312,Little Melozitna Hot Springs,Melozitna,Hotspring,176,80'; put '51.81,-177.79,Hot Spring on Tanaga Island,Adak,Hotspring,H,H'; put '65.233,-144.483,Hot Springs on Big Windy Creek,Circle,Hotspring,H,H'; put '55.334,-162.137,Hot Spring at West End Emmons Lake,Cold Bay,Hotspring,68,20'; put '66.197,-154.006,Tunalkten Lake Hot Spring,Hughes,Hotspring,.,.'; put '67.403,-153.883,Hot Spring Near Arrigetch Peaks,Survey Pass,Hotspring,W,W'; put '65.047,-142.848,Hot Spring on Flat Creek,Charley River,Hotspring,W,W'; put '63.683,-151.233,Hot Springs Near Glacier,Mt. Mckinley,Hotspring,W,W'; put '63.883,-150.717,Hot Springs East of Diamond,Mt. Mckinley,Hotspring,W,W'; put '62.45,-157.933,Hot Spring Near Flat,Iditarod,Hotspring,W,W'; put '60.837,-142.42,Hot Spring on Twelvemile Creek,Bering Glacier,Hotspring,W,W'; put '56.58,-132.18,South Stikine Spring,Petersburg,Hotspring,W,W'; put '52.87,-173.13,Hot Spring on Attu Island,Attu,Hotspring,W,W'; put '65.908,-154.993,Deniktow Ridge Hot Springs,Melozitna,Hotspring,H,H'; put '53.95,-168.037,Hot Springs on Bogoslof Island,Umnak,Hotspring,H,H'; put '65.45,-150,Hot Spring Near Little Minook Cr,Tanana,Hotspring,H,H'; put '51.967,-178.444,Fumaroles on Little Sitkin Island,Rat Islands,Hotspring,H,H'; put '64.002,-156.3,Hot Spring on Tributary of Innoko,Nulato,Hotspring,H,H'; put '61.058,-160.692,Hot Spring Near Tuluksak River,Russian Missio,Hotspring,H,H'; put '61.363,-157.733,Hot Springs on Upper Chuilnuk Rive,Sleetmute,Hotspring,H,H'; put '61.267,-151.238,Hot Lake In Bottom of Crater Peak,Tyonek,Hotspring,H,H'; put '58.24,-155.09,Hot Spring Near Katmai Pass,Mt. Katmai,Hotspring,H,H'; put '58.27,-154.89,Hot Springs Near Mt Katmai,Mt. Katmai,Hotspring,H,H'; put '58.92,-153.98,Hot Spring West of Cape Douglas,Afognak,Hotspring,H,H'; put '55.368,-161.961,Fumarole,Port Moller,Hotspring,H,H'; put '54.18,-165.41,Hot Springs on Akun Island,Unimak,Hotspring,H,H'; put '54.23,-165.66,Hot Springs on Akun Island,Unimak,Hotspring,H,H'; put '54.66,-164.55,Hot Spring on Unimak Island,Unimak,Hotspring,H,H'; put '65.97,-154.033,Pocahontas Hot Springs,Melozitna,Hotspring,H,H'; put '65.216,-149.993,Hutlinana Hot Springs,Livengood,Hotspring,109,43'; put '57.085,-134.839,Baranof Warm Springs,Sitka,Hotspring,124,51'; put '67.283,-155.067,Reed River Hot Spring,Survey Pass,Hotspring,122,50'; put '66.15,-157.117,Hot Springs Near South Bm,Shungnak,Hotspring,122,50'; put '66.233,-157.583,Hot Springs on Hawk River,Shungnak,Hotspring,122,50'; put '65.81,-151.237,Kilo Hot Spring,Tanana,Hotspring,122,50'; put '56.717,-132.005,Chief Shakes Hot Springs,Petersburg,Hotspring,122,50'; put '69.33,-144.044,Okpilak Springs,Mt. Michelson,Hotspring,119,49'; put '65.367,-161.25,Granite Mountain Hot Springs,Candle,Hotspring,120,49'; put '57.644,-135.333,Nylen Hot Springs,Sitka,Hotspring,120,49'; put '65.963,-150.919,Ray River Hot Spring,Tanana,Hotspring,117,47'; put '64.924,-154.837,Horner Hot Springs,Ruby,Hotspring,117,47'; put '65.267,-155.28,Hot Springs Near Dulbi River,Melozitna,Hotspring,126,52'; put '57.807,-136.341,White Sulphur Springs (Hooniah H S,Sitka,Hotspring,111,44'; put '57.781,-135.217,Tenakee Hot Springs,Sitka,Hotspring,109,43'; put '52.19,-174.25,Hot Springs on Atka Island,Atka,Hotspring,167,75'; put '55.334,-133.641,Dalton (Craig) Hot Springs,Craig,Hotspring,109,43'; put '51.944,-178.547,Fumaroles on Little Sitkin Island,Rat Islands,Hotspring,H,H'; put '57.771,-135.82,Hot Spring North Arm Peril Strait,Sitka,Hotspring,100,38'; put '53.848,-166.873,Hot Springs Near Makushin Volcano,Unalaska,Hotspring,94,34'; put '69.627,-146.027,Red Hill Spring,Mt. Michelson,Hotspring,91,33'; put '62.081,-145.007,Upper Klawasi Warm Springs,Gulkana,Hotspring,86,30'; put '62.058,-145.222,Mineral Spring (Lower Klawasi Cone,Gulkana,Hotspring,82,28'; put '56.68,-131.882,Barnes Lake Hot Springs,Bradfield Cana,Hotspring,79,26'; put '56.928,-158.12,Surprise Lake Hot Spring,Chignik,Hotspring,73,23'; put '56.667,-132.28,Twin Lakes Hot Springs,Petersburg,Hotspring,70,21'; put '66.383,-157.517,Warm Spring Near Purcell Mountain,Shungnak,Hotspring,68,20'; put '57.348,-135.385,Hot Spring Near Fish Bay,Sitka,Hotspring,117,47'; put '65.983,-150.56,Hot Springs on Lower Ray River,Tanana,Hotspring,142,61'; put '55.863,-160.493,Hot Spring Near Port Moller,Port Moller,Hotspring,160,71'; put '53.253,-168.358,Hot Springs Near Hot Springs Cove,Umnak,Hotspring,158,70'; put '51.97,-176.61,Hot Springs on Adak Island,Adak,Hotspring,154,68'; put '65.053,-146.057,Chena Hot Springs,Circle,Hotspring,153,67'; put '58.37,-137.09,Hot Springs Near Icy Point,Mt. Fairweathe,Hotspring,153,67'; put '56.836,-135.374,Goddard Hot Springs,Port Alexander,Hotspring,153,67'; put '66.342,-150.85,Kanuti Hot Springs,Bettles,Hotspring,151,66'; put '64.85,-162.3,Clear Creek Hot Springs,Solomon,Hotspring,149,65'; put '53.233,-168.3,Hot Spring on Umnak Island,Umnak,Hotspring,149,65'; put '61.2,-159.863,Hot Springs Near Ophir Creek,Russian Missio,Hotspring,145,63'; put '57.865,-156.499,Gas Rocks Hot Spring,Ugashik,Hotspring,127,53'; put '51.762,-178.77,Fumaroles on Gareloi Island,Gareloi Island,Hotspring,144,62'; put '66.367,-156.767,Hot Springs Near Division Bm,Shungnak,Hotspring,140,60'; put '64.7,-162.467,Hot Spring Near Kwiniuk River,Solomon,Hotspring,106,41'; put '65.274,-148.847,Tolovana Hot Springs,Livengood,Hotspring,140,60'; put '55.933,-131.559,Bell Island Hot Springs,Ketchikan,Hotspring,165,74'; put '57.178,-157.015,Hot Spring Near Mother Goose Lake,Ugashik,Hotspring,138,59'; put '65.483,-144.637,Circle Hot Springs,Circle,Hotspring,135,57'; put '56.233,-131.267,Bradfield Canal Hot Springs,Bradfield Cana,Hotspring,135,57'; put '65.006,-150.633,Manley Hot Springs,Tanana,Hotspring,133,56'; put '65.129,-154.692,Melozi (Melozitna) Springs,Melozitna,Hotspring,131,55'; put '66.217,-149.547,Dall Hot Springs,Beaver,Hotspring,129,54'; put '55.217,-162.483,Hot Springs East of Cold Bay,Cold Bay,Hotspring,129,54'; put '65.217,-162.9,Hot Springs Near Lava Creek,Bendeleben,Hotspring,127,53'; put '54.944,-163.251,Hot Springs Near Morzhovoi,False Pass,Hotspring,145,63'; put '36.48,-91.053,Warm Springs,Poplar Bluff,Hotspring,82,28'; put '34.384,-93.607,Caddo Gap Springs,Little Rock,Hotspring,95,35'; put '34.321,-93.739,Spring on Redland Mountain,Little Rock,Hotspring,77,25'; put '34.406,-93.908,Spring on Little Missouri River,Little Rock,Hotspring,74,23'; put '34.542,-93.024,Big Chalybeate Spring,Little Rock,Hotspring,79,26'; put '34.513,-93.053,Hot Springs,Little Rock,Hotspring,147,64'; put '33.008,-109.778,Grapevine Spring,Clifton,Hotspring,91,33'; put '32.984,-113.324,Agua Caliente Springs,Ajo,Hotspring,102,39'; put '34.563,-113.497,Kaiser Hot Spring,Prescott,Hotspring,99,37'; put '34.076,-111.708,Spring (Hot),Holbrook,Hotspring,99,37'; put '33.17,-110.528,Coolidge Dam Warm Spring,Mesa,Hotspring,99,37'; put '34.695,-113.572,Cofer Hot Spring,Prescott,Hotspring,97,36'; put '33.209,-110.818,Pioneer Spring,Mesa,Hotspring,91,33'; put '33.988,-112.362,Castle Hot Springs,Phoenix,Hotspring,115,46'; put '32.345,-110.247,Warm Springs,Tucson,Hotspring,91,33'; put '36.196,-113.081,Lava Warm Springs,Grand Canyon,Hotspring,90,32'; put '33.068,-109.975,Warm Spring,Clifton,Hotspring,90,32'; put '31.943,-113.013,Quitobaquito Springs,Lukeville,Hotspring,90,32'; put '31.695,-110.963,Agua Caliente Spring,Nogales,Hotspring,90,32'; put '33.075,-109.298,Seep,Clifton,Hotspring,95,35'; put '34.357,-111.71,Verde Hot Springs,Holbrook,Hotspring,104,40'; put '32.998,-109.901,Indian Hot Springs,Silver City,Hotspring,118,48'; put '33.669,-111.165,Roosevelt Dam Springs,Mesa,Hotspring,118,48'; put '32.336,-110.24,Hookers Hot Springs,Tucson,Hotspring,127,53'; put '33.4,-109.152,Hannah Hot Spring,Clifton,Hotspring,133,56'; put '33.08,-109.303,Hot Spring,Clifton,Hotspring,138,59'; put '32.741,-114.068,Radium Hot Springs,El Centro,Hotspring,140,60'; put '32.971,-109.35,Gillard Hot Springs,Silver City,Hotspring,180,82'; put '35.984,-114.742,Hot Spring,Kingman,Hotspring,H,H'; put '33.78,-110.317,Warm Spring,Mesa,Hotspring,W,W'; put '36.418,-113.956,Pakoon Springs,Grand Canyon,Hotspring,86,30'; put '33.493,-112.94,El Dorado Hot Springs,Phoenix South,Hotspring,112,44'; put '34.896,-114.308,Oatman Warm Springs,Needles,Hotspring,91,33'; put '33.055,-109.295,Clifton Hot Springs,Clifton,Hotspring,102,39'; put '34.445,-112.693,Spring,Prescott,Hotspring,72,22'; put '32.337,-110.708,Mercer Spring,Tucson,Hotspring,77,25'; put '34.649,-111.744,Soda Spring,Holbrook,Hotspring,75,24'; put '33.253,-110.703,Spring,Mesa,Hotspring,75,24'; put '31.362,-109.265,Astin Spring,Douglas,Hotspring,75,24'; put '35.169,-113.851,Frost Mine Spring,Williams,Hotspring,70,21'; put '31.673,-109.902,Antelope Spring,Douglas,Hotspring,79,26'; put '35.213,-113.425,Casa Grande Spring,Williams,Hotspring,72,22'; put '33.51,-110.403,Cassadore Spring,Mesa,Hotspring,73,23'; put '34.32,-111.453,Tonto Natural Bridge Spring,Holbrook,Hotspring,72,22'; put '34.405,-111.602,Spring,Holbrook,Hotspring,72,22'; put '34.436,-109.402,Salado Springs,Saint Johns,Hotspring,72,22'; put '31.592,-109.51,Lewis Spring,Douglas,Hotspring,68,20'; put '33.046,-109.44,Eagle Creek Hot Springs,Clifton,Hotspring,97,36'; put '36.509,-111.852,Colorado Pool,Marble Canyon,Hotspring,86,30'; put '33.062,-109.482,Warm Spring,Clifton,Hotspring,73,23'; put '31.637,-110.703,Monkey Spring,Nogales,Hotspring,82,28'; put '32.281,-110.73,Agua Caliente,Tucson,Hotspring,86,30'; put '32.327,-110.228,N-O Spring,Tucson,Hotspring,73,23'; put '32.983,-110.373,Warm Spring,Tucson,Hotspring,79,26'; put '33.152,-110.639,Mescal Warm Spring,Mesa,Hotspring,84,29'; put '33.163,-110.662,Spring,Mesa,Hotspring,82,28'; put '35.077,-113.267,Trout Creek Spring,Williams,Hotspring,81,27'; put '33.438,-110.213,Warm Springs,Mesa,Hotspring,86,30'; put '36.895,-113.913,Springs,Grand Canyon,Hotspring,79,26'; put '35.96,-114.725,Hot Spring,Kingman,Hotspring,86,30'; put '34.925,-114.221,Caliche Spring,Needles,Hotspring,79,26'; put '33.915,-112.332,Mitchell Spring,Phoenix,Hotspring,79,26'; put '33.831,-110.574,Salt Banks,Mesa,Hotspring,78,26'; put '34.91,-113.608,Tom Brown Warm Spring,Prescott,Hotspring,82,28'; put '38.873,-122.689,Seigler Springs,Santa Rosa,Hotspring,126,52'; put '36.814,-117.763,Palm Spring,Death Valley,Hotspring,120,49'; put '34.498,-119.341,Stingleys Hot Springs,Los Angeles,Hotspring,123,51'; put '33.67,-117.325,"Wrenden Hot Sprs, Elsinore Hot Spr",Santa Ana,Hotspring,125,52'; put '37.253,-118.373,Keough Hot Springs,Mariposa,Hotspring,124,51'; put '36.229,-118.302,Jordan Hot Springs,Fresno,Hotspring,124,51'; put '34.502,-119.346,Vickers Hot Springs,Los Angeles,Hotspring,124,51'; put '36.123,-121.64,Slates Hot Springs,Santa Cruz,Hotspring,122,50'; put '35.881,-118.67,California Hot Springs,Bakersfield,Hotspring,122,50'; put '38.788,-122.777,Sulphur Creek,Santa Rosa,Hotspring,120,49'; put '37.648,-118.806,Hot Springs,Mariposa,Hotspring,129,54'; put '36.703,-120.86,Mercey Hot Springs,Santa Cruz,Hotspring,119,48'; put '33.589,-117.511,San Juan Hot Springs,Santa Ana,Hotspring,120,49'; put '38.785,-122.655,Harbin Springs,Santa Rosa,Hotspring,120,49'; put '37.677,-118.79,Dehy Hot Spring,Mariposa,Hotspring,134,57'; put '39.183,-122.7,Bartlett Springs,Ukiah,Hotspring,144,62'; put '36.234,-121.546,Tassajara Hot Springs,Santa Cruz,Hotspring,144,62'; put '36.144,-120.555,Coalinga Mineral Springs,Santa Cruz,Hotspring,112,44'; put '39.033,-122.445,Jones Fountain of Life Spring,Ukiah,Hotspring,142,61'; put '35.575,-118.534,"Miracle Hot Sprs, Hobo Hot Sprs",Bakersfield,Hotspring,119,48'; put '33.284,-116.631,Warner Hot Spring,Santa Ana,Hotspring,138,59'; put '38.237,-119.326,Buckeye Hot Spring,Walker Lake,Hotspring,140,60'; put '41.266,-120.08,Hot Springs (Menlo Baths),Alturas,Hotspring,135,57'; put '33.753,-117.495,Glen Ivy Hot Springs,Santa Ana,Hotspring,131,55'; put '37.802,-118.532,Benton Hot Springs,Mariposa,Hotspring,134,57'; put '38.691,-123.024,Skaggs Springs,Santa Rosa,Hotspring,135,56'; put '35.62,-118.473,Scovern Hot Springs,Bakersfield,Hotspring,133,56'; put '34.538,-119.56,Agua Caliente Spring,Los Angeles,Hotspring,133,56'; put '33.558,-117.154,Murrietta Hot Springs,Santa Ana,Hotspring,132,56'; put '39.226,-120.01,Brockway Hot Springs,Chico,Hotspring,131,55'; put '41.036,-121.926,Hunt Hot Spring,Alturas,Hotspring,136,58'; put '34.582,-119.044,Willett Hot Springs,Los Angeles,Hotspring,108,42'; put '37.234,-118.881,Blaney Meadows Hot Springs,Mariposa,Hotspring,109,43'; put '36.477,-118.404,Kern Hot Spring,Fresno,Hotspring,109,43'; put '36.806,-117.771,Lower Warm Springs,Death Valley,Hotspring,110,43'; put '34.482,-119.302,Matilija Hot Springs,Los Angeles,Hotspring,109,43'; put '34.537,-119.879,San Marcos Hot Spring,Los Angeles,Hotspring,110,43'; put '33.896,-117.057,Eden Hot Springs,Santa Ana,Hotspring,109,43'; put '39.573,-120.348,Campbell Hot Springs,Chico,Hotspring,111,44'; put '38.994,-122.742,Horseshoe Spring,Santa Rosa,Hotspring,108,42'; put '33.969,-116.942,Highland Springs,Santa Ana,Hotspring,112,44'; put '34.34,-117.173,"Warm Spring, Hot Spring",San Bernardino,Hotspring,108,42'; put '41.219,-120.066,Squaw Baths,Alturas,Hotspring,106,41'; put '40.142,-120.935,Indian Valley Hot Springs,Susanville,Hotspring,106,41'; put '39.292,-122.821,Crabtree Hot Springs,Ukiah,Hotspring,106,41'; put '37.108,-121.478,Gilroy Hot Springs,San Jose,Hotspring,106,41'; put '39.227,-123.362,Orrs Springs,Ukiah,Hotspring,104,40'; put '38.773,-122.705,Anderson Springs,Santa Rosa,Hotspring,108,42'; put '38.858,-122.671,Howard Springs,Santa Rosa,Hotspring,113,45'; put '34.461,-119.637,Montecito Hot Springs,Los Angeles,Hotspring,118,48'; put '33.551,-117.167,Temecula Hot Springs,Santa Ana,Hotspring,116,47'; put '33.835,-116.988,Gilman Hot Springs,Santa Ana,Hotspring,117,47'; put '37.618,-119.074,Reds Meadow Hot Springs,Mariposa,Hotspring,115,46'; put '35.528,-118.665,Democrat Hot Springs,Bakersfield,Hotspring,115,46'; put '33.731,-118.348,Whites Point Hot Springs,Long Beach,Hotspring,115,46'; put '37.532,-119.025,Fish Creek Hot Springs,Mariposa,Hotspring,110,43'; put '39.032,-122.432,"Blank Spring, Manzanita Mine Sprs",Ukiah,Hotspring,112,45'; put '37.327,-119.018,Mono Hot Springs,Mariposa,Hotspring,109,43'; put '38.225,-119.217,The Hot Springs,Walker Lake,Hotspring,113,45'; put '35.727,-118.408,Hot Spring,Bakersfield,Hotspring,113,45'; put '41.6,-120.088,Leonards Hot Springs,Alturas,Hotspring,144,62'; put '38.874,-123.518,Point Arena Hot Springs,Santa Rosa,Hotspring,111,44'; put '41.126,-121.028,Kellog Hot Springs,Alturas,Hotspring,172,78'; put '35.558,-118.612,Delonegha Hot Springs,Bakersfield,Hotspring,112,44'; put '35.871,-116.23,Tecopa Hot Springs,Trona,Hotspring,118,48'; put '41.86,-120.158,Fort Bidwell Hot Spring,Alturas,Hotspring,113,45'; put '41.534,-120.078,Hot Springs (Surprise Valley),Alturas,Hotspring,208,98'; put '33.345,-115.588,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '41.012,-121.274,Hot Springs,Alturas,Hotspring,H,H'; put '39.922,-120.024,Zamboni Hot Springs,Chico,Hotspring,H,H'; put '38.979,-122.659,Fumarole,Santa Rosa,Hotspring,H,H'; put '37.622,-119.028,Fumaroles,Mariposa,Hotspring,H,H'; put '40.364,-120.243,Hot Spring,Susanville,Hotspring,204,96'; put '38.767,-122.748,Little Geysers,Santa Rosa,Hotspring,210,99'; put '33.328,-115.583,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '41.67,-120.206,Lake City Hot Springs,Alturas,Hotspring,207,97'; put '36.036,-117.802,Devils Kitchen,Death Valley,Hotspring,207,97'; put '36.045,-117.769,Coso Hot Springs,Death Valley,Hotspring,207,97'; put '40.382,-121.513,Morgan Hot Spring,Susanville,Hotspring,205,96'; put '40.421,-121.375,Terminal Geyser,Susanville,Hotspring,205,96'; put '41.19,-120.383,West Valley Reservoir Hot Spring,Alturas,Hotspring,171,77'; put '38.802,-122.81,The Geysers,Santa Rosa,Hotspring,214,101'; put '35.888,-116.258,Springs,Trona,Hotspring,W,W'; put '34.185,-117.262,"Arrowhead Springs, Waterman Hot Sp",San Bernardino,Hotspring,194,90'; put '33.823,-116.542,Palm Springs (Agua Caliente Spring,Santa Ana,Hotspring,104,40'; put '41.196,-120.475,Springs,Alturas,Hotspring,W,W'; put '41.959,-120.936,Warm Spring,Alturas,Hotspring,W,W'; put '37.929,-121.965,Springs,San Jose,Hotspring,W,W'; put '36.83,-117.736,Upper Warm Spring,Death Valley,Hotspring,W,W'; put '33.343,-115.573,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '35.536,-118.651,Spring (Hot),Bakersfield,Hotspring,W,W'; put '33.332,-115.575,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '35.967,-116.931,Warm Spring,Trona,Hotspring,W,W'; put '33.28,-115.592,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '33.288,-115.575,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '33.312,-115.577,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '33.313,-115.605,Mud Volcanoes,Salton Sea,Hotspring,W,W'; put '40.393,-121.507,Growler Hot Spring,Susanville,Hotspring,203,95'; put '35.148,-118.783,Warm Spring,Bakersfield,Hotspring,W,W'; put '41.973,-122.202,Klamath Hot Spring,Weed,Hotspring,156,69'; put '41.143,-121.11,Bassett Hot Springs,Alturas,Hotspring,174,79'; put '38.58,-122.575,Calistoga Hot Springs,Santa Rosa,Hotspring,172,78'; put '37.656,-118.834,Hot Creek Springs,Mariposa,Hotspring,171,77'; put '41.229,-121.405,Little Hot Spring,Alturas,Hotspring,169,76'; put '37.664,-118.802,The Tub,Mariposa,Hotspring,167,75'; put '40.355,-120.257,Wendel Hot Springs,Susanville,Hotspring,205,96'; put '38.768,-122.717,Castle Rock Springs,Santa Rosa,Hotspring,163,73'; put '38.245,-119.205,Travertine Hot Springs,Walker Lake,Hotspring,180,82'; put '39.002,-122.664,Sulphur Bank,Ukiah,Hotspring,156,69'; put '39.057,-122.475,Elgin Mine,Ukiah,Hotspring,156,69'; put '39.039,-122.421,Wilbur Springs,Ukiah,Hotspring,153,67'; put '40.444,-121.409,Drakesbad,Susanville,Hotspring,151,66'; put '40.457,-121.545,Mill Creek Springs,Susanville,Hotspring,150,66'; put '38.048,-119.081,Hot Spring,Walker Lake,Hotspring,151,66'; put '37.647,-118.859,Casa Diablo Hot Pool,Mariposa,Hotspring,165,74'; put '41.607,-121.523,Hot Spot,Alturas,Hotspring,191,88'; put '40.44,-121.434,Devils Kitchen,Susanville,Hotspring,203,95'; put '40.302,-120.195,Amedee Hot Springs,Susanville,Hotspring,203,95'; put '36.031,-117.833,Fumarole,Death Valley,Hotspring,203,95'; put '40.447,-121.536,"Sulphur Works, Tophet Hot Springs",Susanville,Hotspring,199,93'; put '40.455,-121.501,Bumpass Hell,Susanville,Hotspring,199,93'; put '37.648,-118.914,Casa Diablo Hot Springs And Geyser,Mariposa,Hotspring,199,93'; put '37.692,-118.839,Little Hot Creek Spring,Mariposa,Hotspring,180,82'; put '34.596,-118.998,Sespe Hot Springs,Los Angeles,Hotspring,194,90'; put '38.348,-119.4,Fales Hot Springs,Walker Lake,Hotspring,180,82'; put '40.434,-121.399,Boiling Springs Lake,Susanville,Hotspring,190,88'; put '41.615,-120.102,Seyferth Hot Springs,Alturas,Hotspring,185,85'; put '41.407,-122.197,"Hot Spring, Fumaroles",Weed,Hotspring,183,84'; put '37.993,-119.028,Paoha Island Springs,Mariposa,Hotspring,181,83'; put '41.025,-121.924,Big Bend Hot Springs,Alturas,Hotspring,180,82'; put '38.699,-119.846,Grovers Hot Springs,Walker Lake,Hotspring,147,64'; put '37.665,-118.828,Hot Creek Gorge Springs,Mariposa,Hotspring,199,93'; put '39.43,-122.538,"Sulphur Spring, Salt Spring",Ukiah,Hotspring,75,24'; put '38.925,-122.77,Hildebrande Spring,Santa Rosa,Hotspring,77,25'; put '38.203,-119.118,Warm Spring,Walker Lake,Hotspring,77,25'; put '36.938,-121.565,Sargent Estate Warm Spring,Santa Cruz,Hotspring,77,25'; put '34.826,-116.677,Newberry Spring,San Bernardino,Hotspring,77,25'; put '41.919,-122.369,Bogus Soda Springs,Weed,Hotspring,76,24'; put '39.053,-122.597,Quigley Soda Spring,Ukiah,Hotspring,82,28'; put '41.252,-120.521,Warm Spring,Alturas,Hotspring,75,24'; put '38.85,-122.693,Pine Cone Spring,Santa Rosa,Hotspring,78,26'; put '38.339,-122.259,Napa Vichy Springs,Santa Rosa,Hotspring,76,24'; put '38.892,-122.533,Baker Soda Spring,Santa Rosa,Hotspring,76,24'; put '38.897,-122.882,England Springs,Santa Rosa,Hotspring,76,24'; put '38.916,-122.799,Carlsbad Spring,Santa Rosa,Hotspring,76,24'; put '38.192,-120.827,Valley Springs,Sacramento,Hotspring,75,24'; put '38.85,-120.025,Myers Warm Spring,Sacramento,Hotspring,75,24'; put '37.708,-118.813,Hot Spring,Mariposa,Hotspring,68,20'; put '36.122,-117.217,Warm Sulphur Springs,Death Valley,Hotspring,80,27'; put '35.682,-116.422,Saratoga Spring,Trona,Hotspring,82,28'; put '33.733,-114.907,Mccoy Spring,Salton Sea,Hotspring,82,28'; put '41.484,-120.764,Spring,Alturas,Hotspring,81,27'; put '39.657,-123.585,Jackson Valley Mud Springs,Ukiah,Hotspring,80,27'; put '39.198,-122.505,Pseudo Complexion Spring,Ukiah,Hotspring,81,27'; put '38.85,-122.667,Bad Creek Spring,Santa Rosa,Hotspring,81,27'; put '32.97,-116.423,Vallecitos Spring,San Diego,Hotspring,79,26'; put '36.765,-120.901,Spring,Santa Cruz,Hotspring,81,27'; put '34.159,-118.499,El Encino Springs,Los Angeles,Hotspring,79,26'; put '35.879,-116.153,Resting Spring,Trona,Hotspring,80,27'; put '41.828,-120.917,Pothole Spring,Alturas,Hotspring,78,26'; put '39.348,-122.668,Fouts Springs,Ukiah,Hotspring,79,26'; put '38.519,-122.26,"Napa Rock Soda Spring, Phillips So",Santa Rosa,Hotspring,78,26'; put '38.838,-122.653,Spiers Springs,Santa Rosa,Hotspring,79,26'; put '35.141,-116.101,Soda Station Springs,Trona,Hotspring,75,24'; put '37.503,-121.904,Alameda Warm Springs,San Jose,Hotspring,80,27'; put '39.429,-123.308,Muir Springs,Ukiah,Hotspring,68,20'; put '37.924,-122.046,Sulphur Spring,San Francisco,Hotspring,75,24'; put '40.58,-120.265,Tipton Springs,Susanville,Hotspring,70,21'; put '39.697,-123.478,Pinches Spring,Ukiah,Hotspring,70,21'; put '38.755,-122.285,Zim Zim Spring,Santa Rosa,Hotspring,70,21'; put '37.083,-121.042,Spring In Oneill Forebay,San Jose,Hotspring,70,21'; put '37.632,-121.762,Crohare Spring,San Jose,Hotspring,70,21'; put '33.625,-115.325,Corn Spring,Salton Sea,Hotspring,72,22'; put '36.117,-118.776,Ward Spring,Fresno,Hotspring,70,21'; put '34.423,-119.538,Boron Spring,Los Angeles,Hotspring,72,22'; put '39.002,-122.498,Grizzly Spring,Ukiah,Hotspring,68,20'; put '39.088,-122.525,Sulphur Spring,Ukiah,Hotspring,68,20'; put '38.125,-122.188,Vallejo White Sulphur Springs,Santa Rosa,Hotspring,68,20'; put '38.31,-122.053,Tolenas Springs,Santa Rosa,Hotspring,68,20'; put '41.45,-120.834,Kelly Hot Spring,Alturas,Hotspring,198,92'; put '36.512,-116.821,Nevares Springs,Death Valley,Hotspring,102,39'; put '37.888,-118.487,Bertrand Ranch Springs,Mariposa,Hotspring,70,21'; put '35.483,-119.917,Mize Spring,Bakersfield,Hotspring,73,23'; put '36.698,-117.848,Little Hunter Canyon Springs,Death Valley,Hotspring,81,27'; put '38.995,-122.642,Davis Soda Spring,Santa Rosa,Hotspring,73,23'; put '37.432,-121.308,Salt Grass Springs,San Jose,Hotspring,73,23'; put '37.573,-121.445,Lone Tree Mineral Spring,San Jose,Hotspring,73,23'; put '37.638,-118.887,Chance Spring,Mariposa,Hotspring,73,23'; put '36.295,-120.985,Sulphur Springs,Santa Cruz,Hotspring,73,23'; put '41.16,-120.403,Warm Spring,Alturas,Hotspring,70,21'; put '35.4,-120.25,Cameta Warm Spring,San Luis Obisp,Hotspring,73,23'; put '37.719,-118.735,Springs,Mariposa,Hotspring,75,24'; put '35.588,-116.359,Sheep Creek Spring,Trona,Hotspring,73,23'; put '40.568,-120.325,Sellicks Springs,Susanville,Hotspring,72,22'; put '38.833,-122.357,One Shot Mining Co,Santa Rosa,Hotspring,72,22'; put '38.95,-122.572,Soda Spring In Cache Formation,Santa Rosa,Hotspring,72,22'; put '37.635,-118.72,Springs,Mariposa,Hotspring,72,22'; put '36.13,-118.816,Soda Spring,Fresno,Hotspring,72,22'; put '36.773,-120.898,Iridat Spring,Santa Cruz,Hotspring,73,23'; put '33.545,-115.654,Canyon Spring,Salton Sea,Hotspring,97,36'; put '36.675,-116.923,Keane Wonder Spring,Death Valley,Hotspring,93,34'; put '36.331,-121.367,Paraiso Springs (Sulphur Spring),Santa Cruz,Hotspring,98,37'; put '35.122,-120.542,Newsom Springs,San Luis Obisp,Hotspring,99,37'; put '34.503,-120.219,Las Cruces Hot Springs,Santa Maria,Hotspring,99,37'; put '38.49,-122.498,St Helena White Sulphur Spring,Santa Rosa,Hotspring,97,36'; put '35.946,-116.189,Chappo Spring,Trona,Hotspring,80,27'; put '40.019,-121.036,Spring,Susanville,Hotspring,99,37'; put '40.44,-121.42,Hot Springs Valley,Susanville,Hotspring,83,28'; put '32.947,-116.305,Agua Caliente Springs,San Diego,Hotspring,101,38'; put '39.196,-122.714,Newman Springs,Ukiah,Hotspring,94,35'; put '37.63,-118.808,Whitmore Hot Springs,Mariposa,Hotspring,95,35'; put '35.269,-120.851,Pecho Warm Springs,San Luis Obisp,Hotspring,95,35'; put '33.514,-117.604,Spring,Santa Ana,Hotspring,95,35'; put '38.958,-122.701,Riviera Beach Spring,Santa Rosa,Hotspring,93,34'; put '36.33,-117.948,Dirty Socks Hot Spring,Death Valley,Hotspring,93,34'; put '37.847,-121.635,Byron Hot Springs,San Jose,Hotspring,96,36'; put '35.433,-118.478,Yates Hot Springs,Bakersfield,Hotspring,100,38'; put '35.663,-120.692,Paso Robles Artesian Spring,San Luis Obisp,Hotspring,102,39'; put '34.507,-119.291,Wheeler Springs,Los Angeles,Hotspring,102,39'; put '33.8,-116.927,Soboda Hot Springs,Santa Ana,Hotspring,102,39'; put '40.223,-122.747,Stinking Springs,Redding,Hotspring,101,38'; put '38.8,-123.17,Hoods Hot Springs,Santa Rosa,Hotspring,100,38'; put '37.029,-117.383,Grapevine Springs,Goldfield,Hotspring,100,38'; put '36.084,-121.584,Dolans Hot Spring,Santa Cruz,Hotspring,98,37'; put '36.21,-118.176,Soda Springs,Fresno,Hotspring,100,38'; put '33.664,-117.913,Fairview Hot Spring,Santa Ana,Hotspring,96,36'; put '35.143,-116.813,Paradise Spring,Trona,Hotspring,100,38'; put '33.837,-117.145,Lakeview Hot Springs,Santa Ana,Hotspring,100,38'; put '33.201,-115.577,Mud Pots,Salton Sea,Hotspring,100,38'; put '33.212,-115.591,Mud Pots,Salton Sea,Hotspring,100,38'; put '33.217,-115.58,Wister Mud Pot,Salton Sea,Hotspring,100,38'; put '32.617,-116.189,Jacumba Hot Springs,San Diego,Hotspring,101,38'; put '36.618,-121.845,Sulphur Hot Spring,Santa Cruz,Hotspring,100,38'; put '36.495,-117.893,Springs,Death Valley,Hotspring,86,30'; put '38.033,-118.902,Mono Basin Warm Springs,Walker Lake,Hotspring,88,31'; put '35.908,-120.367,Table Mountain (Spring),San Luis Obisp,Hotspring,88,31'; put '34.271,-116.838,Pan Hot Springs,San Bernardino,Hotspring,88,31'; put '40.238,-122.11,Tuscan Springs,Redding,Hotspring,86,30'; put '40.245,-120.007,High Rock Spring,Susanville,Hotspring,86,30'; put '38.55,-122.72,Mark West Springs,Santa Rosa,Hotspring,88,31'; put '43.513,-119.903,Springs at Tecolote Tunnel,Los Angeles,Hotspring,93,34'; put '39.728,-120.547,Mclear Warm Springs,Chico,Hotspring,86,30'; put '38.835,-122.731,Gordon Warm Springs,Santa Rosa,Hotspring,97,36'; put '39.166,-123.159,Vichy Springs,Ukiah,Hotspring,85,29'; put '38.936,-122.907,Highland Springs,Santa Rosa,Hotspring,84,29'; put '37.398,-121.794,Mineral Springs,San Jose,Hotspring,84,29'; put '33.436,-117.324,De Luz Warm Springs,Santa Ana,Hotspring,85,29'; put '33.512,-115.827,Dos Palmas Spring,Salton Sea,Hotspring,84,29'; put '39.022,-122.444,Abbott Mine,Ukiah,Hotspring,86,30'; put '34.605,-118.561,Warm Spring,Los Angeles,Hotspring,92,33'; put '41.659,-123.319,Sulphur Springs,Weed,Hotspring,84,29'; put '38.394,-122.552,Los Guilicos Warm Springs,Santa Rosa,Hotspring,88,31'; put '41.492,-120.7,Essex Springs,Alturas,Hotspring,91,33'; put '38.654,-122.484,Aetna Springs,Santa Rosa,Hotspring,91,33'; put '35.842,-117.38,Bainter Spring,Trona,Hotspring,92,33'; put '34.228,-117.483,Tylers Bath Spring,San Bernardino,Hotspring,92,33'; put '33.363,-117.017,Agua Tibia Spring,Santa Ana,Hotspring,92,33'; put '41.167,-120.032,Bare Ranch Spring,Alturas,Hotspring,90,32'; put '35.978,-116.273,Shoshone Spring,Trona,Hotspring,90,32'; put '33.407,-116.035,Fish Springs,Santa Ana,Hotspring,90,32'; put '35.582,-120.666,Santa Ysabel Springs (Sulphur Spr),San Luis Obisp,Hotspring,92,33'; put '34.537,-119.613,Little Caliente Spring,Los Angeles,Hotspring,90,32'; put '39.006,-122.787,Big Soda Spring,Ukiah,Hotspring,90,32'; put '35.439,-119.846,Carneros Spring,Bakersfield,Hotspring,90,32'; put '36.441,-116.829,Travertine Springs,Death Valley,Hotspring,90,32'; put '37.88,-122.627,Rocky Point Springs,San Francisco,Hotspring,90,32'; put '39.227,-107.224,Penny Hot Springs,Leadville,Hotspring,133,56'; put '38.732,-106.178,Hortense Hot Spring,Montrose,Hotspring,181,83'; put '37.4,-107.849,Tripp Hot Springs,Durango,Hotspring,111,44'; put '40.073,-106.113,Hot Sulphur Springs,Craig,Hotspring,111,44'; put '39.739,-105.512,Idaho Springs,Denver,Hotspring,115,46'; put '39.552,-107.412,South Canyon Hot Springs,Leadville,Hotspring,118,48'; put '39.548,-107.322,Glenwood Springs,Leadville,Hotspring,124,51'; put '38.133,-107.736,Orvis Hot Spring,Montrose,Hotspring,126,52'; put '39.017,-105.793,Hartsel Hot Springs,Denver,Hotspring,126,52'; put '38.733,-106.162,Mount Princeton Hot Springs,Montrose,Hotspring,133,56'; put '37.752,-108.131,Paradise Warm Spring,Cortez,Hotspring,115,46'; put '37.747,-106.831,Wagon Wheel Gap Hot Springs,Durango,Hotspring,135,57'; put '37.263,-107.011,Pagosa Springs,Durango,Hotspring,136,58'; put '38.812,-106.226,Cottonwood Hot Springs,Montrose,Hotspring,136,58'; put '38.168,-105.924,Mineral Hot Springs,Pueblo,Hotspring,140,60'; put '40.559,-106.849,Routt Hot Springs,Craig,Hotspring,147,64'; put '38.021,-107.672,Ouray Hot Springs,Montrose,Hotspring,156,69'; put '38.498,-106.076,Poncha Hot Springs,Montrose,Hotspring,160,71'; put '38.514,-106.508,Upper Waunita Hot Springs,Montrose,Hotspring,176,80'; put '38.272,-107.1,Cebolla Hot Springs,Montrose,Hotspring,106,41'; put '37.313,-107.344,Piedra River Hot Springs,Durango,Hotspring,108,42'; put '38.517,-106.515,Lower Waunita Hot Springs,Montrose,Hotspring,167,75'; put '38.816,-106.873,Ranger Hot Spring,Montrose,Hotspring,81,27'; put '37.294,-105.784,Dexter Spring,Trinidad,Hotspring,68,20'; put '38.634,-106.072,Browns Grotto Warm Spring,Montrose,Hotspring,73,23'; put '39.164,-106.062,Rhodes Warm Spring,Leadville,Hotspring,75,24'; put '38.836,-106.825,Cement Creek Hot Spring,Montrose,Hotspring,77,25'; put '38.653,-106.056,Browns Canyon Warm Spring,Montrose,Hotspring,77,25'; put '37.033,-106.805,Stinking Springs,Durango,Hotspring,81,27'; put '37.747,-108.117,Geyser Warm Spring,Cortez,Hotspring,82,28'; put '38.479,-105.891,Swissvale Warm Springs,Pueblo,Hotspring,82,28'; put '37.751,-106.317,Shaw Springs,Durango,Hotspring,86,30'; put '37.728,-107.054,Birdsie Warm Spring,Durango,Hotspring,86,30'; put '37.741,-107.034,Antelope Spring,Durango,Hotspring,90,32'; put '39.628,-107.106,Dotsero Warm Springs,Leadville,Hotspring,90,32'; put '38.485,-105.91,Wellsville Warm Spring,Pueblo,Hotspring,91,33'; put '38.014,-108.054,Lemon Hot Spring,Moab,Hotspring,91,33'; put '37.391,-107.846,"Trimble Hot Spr, Stratten Warm Spr",Durango,Hotspring,97,36'; put '38.192,-105.816,Valley View Hot Springs,Pueblo,Hotspring,99,37'; put '38.433,-105.261,Canon City Hot Springs,Pueblo,Hotspring,104,40'; put '39.012,-106.891,Conundrum Hot Springs,Leadville,Hotspring,100,38'; put '37.511,-106.945,Rainbow Hot Springs,Durango,Hotspring,104,40'; put '40.467,-107.952,Juniper Hot Springs,Craig,Hotspring,100,38'; put '40.483,-106.827,Steamboat Springs,Craig,Hotspring,102,39'; put '37.771,-108.091,Dunton Hot Spring,Cortez,Hotspring,108,42'; put '37.453,-107.803,Pinkerton Hot Springs,Durango,Hotspring,90,32'; put '39.932,-105.277,Eldorado Springs,Denver,Hotspring,79,26'; put '27.074,-82.233,Little Salt Spring,Tampa,Hotspring,81,27'; put '27.06,-82.261,Warm Mineral Springs (Big Salt Spr,Tampa,Hotspring,86,30'; put '32.92,-84.438,Barker Spring,Phenix City,Hotspring,73,23'; put '32.964,-84.499,Thundering Spring,Phenix City,Hotspring,75,24'; put '33.018,-84.327,Taylor Spring,Atlanta,Hotspring,75,24'; put '32.862,-84.65,Parkman Spring,Phenix City,Hotspring,77,25'; put '33.037,-84.374,Lifsey Spring,Atlanta,Hotspring,79,26'; put '32.893,-84.69,Warm Springs,Phenix City,Hotspring,88,31'; put '32.873,-84.547,Tom Brown Spring,Phenix City,Hotspring,68,20'; put '19.407,-155.277,Steam Vents,Hawaii,Hotspring,H,H'; put '19.46,-154.847,Isaac Hale Park Spring,Hawaii,Hotspring,97,36'; put '19.496,-154.876,Warm Vapor,Hawaii,Hotspring,W,W'; put '19.373,-155.188,Steam Vents,Hawaii,Hotspring,H,H'; put '19.39,-155.311,Steam Vents,Hawaii,Hotspring,H,H'; put '19.434,-155.272,Steam Vents,Hawaii,Hotspring,H,H'; put '19.486,-155.598,Steam Vents,Hawaii,Hotspring,H,H'; put '19.466,-154.943,Steam Vents,Hawaii,Hotspring,H,H'; put '19.421,-155.62,Steam Vents,Hawaii,Hotspring,H,H'; put '19.201,-155.384,Waiwelawela Point Spring,Hawaii,Hotspring,90,32'; put '19.593,-154.928,Akins Spring,Hawaii,Hotspring,84,29'; put '44.721,-115.01,Thomas Creek Ranch Hot Spring,Challis,Hotspring,138,59'; put '45.431,-116.015,Cow Flats Hot Spring,Grangeville,Hotspring,138,59'; put '44.062,-115.685,Pine Flat Hot Springs,Challis,Hotspring,138,59'; put '44.382,-115.841,Dash Creek Hot Springs,Challis,Hotspring,138,59'; put '44.077,-115.553,Haven Lodge Hot Spring,Challis,Hotspring,147,64'; put '43.647,-114.816,Skillern Hot Springs,Hailey,Hotspring,140,60'; put '43.789,-115.434,Dutch Frank Hot Spring,Hailey,Hotspring,149,65'; put '43.54,-115.288,Bridge Hot Springs,Hailey,Hotspring,138,59'; put '43.72,-115.617,Smith Cabin Hot Spring,Hailey,Hotspring,138,59'; put '42.688,-114.826,Banbury Hot Spring,Twin Falls,Hotspring,138,59'; put '45.035,-115.561,Sheep Creek Hot Spring,Elk City,Hotspring,136,58'; put '44.245,-114.885,Elkhorn Hot Spring,Challis,Hotspring,136,58'; put '44.642,-115.693,Mollys Hot Spring,Challis,Hotspring,138,59'; put '43.811,-115.116,Atlanta Hot Springs,Hailey,Hotspring,140,60'; put '44.679,-116.231,White Licks Hot Spring,Baker,Hotspring,140,60'; put '45.512,-115.046,Barth Hot Springs,Elk City,Hotspring,140,60'; put '43.696,-115.658,Sheep Creek Bridge Hot Spring,Hailey,Hotspring,142,61'; put '44.914,-115.722,Teapot Hot Spring,Challis,Hotspring,142,61'; put '43.788,-115.444,Straight Creek Hot Spring,Hailey,Hotspring,144,62'; put '43.116,-115.305,Latty Hot Spring,Hailey,Hotspring,144,62'; put '45.039,-116.291,Zims Resort Hot Springs,Grangeville,Hotspring,144,62'; put '43.049,-114.952,White Arrow Hot Spring,Hailey,Hotspring,145,63'; put '44.645,-114.739,Upper Loon Creek Hot Springs,Challis,Hotspring,145,63'; put '43.383,-114.931,Wardrop Hot Spring,Hailey,Hotspring,147,64'; put '44.531,-116.754,Fairchild Hot Spring,Baker,Hotspring,126,52'; put '44.661,-114.652,Foster Ranch Hot Springs,Challis,Hotspring,135,57'; put '44.051,-115.829,Dan Hodges Hot Spring,Challis,Hotspring,140,60'; put '43.506,-114.354,Hailey Hot Springs,Hailey,Hotspring,131,55'; put '43.982,-114.486,West Pass Hot Spring,Hailey,Hotspring,124,51'; put '43.641,-114.487,Warfield Hot Spring,Hailey,Hotspring,124,51'; put '44.145,-112.554,Lidy Hot Springs,Dubois,Hotspring,124,51'; put '44.054,-115.907,Hot Spring Campground,Challis,Hotspring,124,51'; put '42.032,-115.363,Murphy Hot Springs,Twin Falls,Hotspring,126,52'; put '43.561,-114.415,Clarendon Hot Springs,Hailey,Hotspring,126,52'; put '43.423,-114.627,Elk Creek Hot Spring,Hailey,Hotspring,126,52'; put '43.553,-115.267,Paradise Hot Springs,Hailey,Hotspring,126,52'; put '42.308,-111.707,Maple Grove Hot Springs,Preston,Hotspring,172,78'; put '45.013,-113.605,Sharkey Hot Spring,Dillon,Hotspring,126,52'; put '44.73,-114.993,Sunflower Hot Springs,Challis,Hotspring,149,65'; put '43.974,-114.499,Lower Bowery Hot Spring,Hailey,Hotspring,129,54'; put '43.724,-115.604,Loftus Hot Spring,Hailey,Hotspring,129,54'; put '44.676,-115.943,Gold Fork Hot Spring,Challis,Hotspring,127,53'; put '44.044,-115.851,Donlay Ranch Hot Spring,Challis,Hotspring,131,55'; put '44.264,-114.818,Basin Creek Hot Spring,Challis,Hotspring,133,56'; put '44.652,-114.734,Owen Cabin Hot Spring,Challis,Hotspring,133,56'; put '43.605,-115.664,Rattlesnake Hot Spring,Hailey,Hotspring,133,56'; put '43.605,-114.948,Lightfoot Hot Springs,Hailey,Hotspring,133,56'; put '45.788,-115.198,Red River Hot Springs,Elk City,Hotspring,131,55'; put '44.632,-115.697,South Fork Plunge,Challis,Hotspring,129,54'; put '44.853,-116.442,Starkey Hot Springs,Baker,Hotspring,131,55'; put '42.692,-114.859,Hot Sulphur (Miracle Hot) Springs,Twin Falls,Hotspring,131,55'; put '44.045,-115.842,Corder Hot Spring,Challis,Hotspring,131,55'; put '44.247,-114.676,Robinson Bar Hot Springs,Challis,Hotspring,131,55'; put '44.785,-114.855,Cox Hot Springs,Challis,Hotspring,131,55'; put '43.637,-115.13,Willow Creek Hot Spring,Hailey,Hotspring,131,55'; put '43.803,-115.401,Granite Creek Hot Spring,Hailey,Hotspring,131,55'; put '43.129,-115.34,Coyote Hot Spring,Hailey,Hotspring,135,57'; put '44.211,-116.71,Cove Creek Hot Spring,Baker,Hotspring,131,55'; put '44.16,-115.167,Grandjean Hot Spring,Challis,Hotspring,H,H'; put '43.755,-115.571,Ninemeyer Hot Springs,Hailey,Hotspring,169,76'; put '43.701,-114.738,Big Smokey Hot Spring,Hailey,Hotspring,H,H'; put '43.831,-115.192,Queens River Hot Spring,Hailey,Hotspring,H,H'; put '43.817,-115.046,Leggit Creek Hot Spring,Hailey,Hotspring,H,H'; put '43.718,-115.563,Basset Hot Spring,Hailey,Hotspring,H,H'; put '43.588,-115.988,Mores Creek Hot Spring,Hailey,Hotspring,H,H'; put '44.951,-114.704,Mormon Ranch Warm Spring,Challis,Hotspring,H,H'; put '44.896,-114.563,Forge Creek Hot Springs,Challis,Hotspring,H,H'; put '44.77,-115.663,Billy Hot Spring,Challis,Hotspring,H,H'; put '44.628,-115.197,Sheepeater Hot Springs,Challis,Hotspring,H,H'; put '44.585,-115.072,Sulphur Creek Hot Spring,Challis,Hotspring,H,H'; put '44.554,-115.301,Sulphur Creek Hot Spring,Challis,Hotspring,H,H'; put '42.107,-113.39,Blm Well (Frazier Hot Spring),Pocatello,Hotspring,203,95'; put '44.4,-115.82,Goat Hot Springs,Challis,Hotspring,H,H'; put '45.307,-114.338,Big Creek Hot Springs,Elk City,Hotspring,199,93'; put '44.583,-116.112,Cascade Reservoir Hot Spring,Baker,Hotspring,H,H'; put '45.17,-115.807,Secesh Hot Spring,Elk City,Hotspring,H,H'; put '46.235,-114.707,Prospector Hot Springs,Hamilton,Hotspring,H,H'; put '46.138,-115.09,Stuart Hot Springs,Hamilton,Hotspring,H,H'; put '46.006,-115.021,Marten Hot Springs,Hamilton,Hotspring,H,H'; put '42.374,-111.726,Mound Valley Warm Spring,Preston,Hotspring,W,W'; put '43.255,-114.829,Mormon Reservoir Warm Spring,Hailey,Hotspring,W,W'; put '44.639,-115.671,Warm Lake Springs,Challis,Hotspring,W,W'; put '44.445,-115.239,Bear Valley Hot Spring,Challis,Hotspring,W,W'; put '44.354,-117.071,Old Homestead Warm Spring,Baker,Hotspring,W,W'; put '43.327,-113.918,Condie Hot Springs,Idaho Falls,Hotspring,124,51'; put '43.038,-112.004,Alkali Flats Warm Spring,Idaho Falls,Hotspring,93,34'; put '44.43,-115.762,Bull Creek Hot Springs,Challis,Hotspring,H,H'; put '42.119,-111.928,Squaw Hot Springs,Preston,Hotspring,163,73'; put '42.333,-111.716,Cleveland Hot Springs,Preston,Hotspring,151,66'; put '43.671,-115.696,Twin Springs,Hailey,Hotspring,151,66'; put '43.951,-116.353,Roystone Hot Springs,Boise,Hotspring,151,66'; put '42.704,-114.856,Salmon Falls Hot Spring,Twin Falls,Hotspring,153,67'; put '44.16,-115.177,Sacajawea Hot Springs,Challis,Hotspring,153,67'; put '43.738,-115.583,Vaughn Hot Spring,Hailey,Hotspring,154,68'; put '44.669,-116.305,Council Mtn Hot Springs,Baker,Hotspring,154,68'; put '44.831,-115.215,Kwiskwis Hot Spring,Challis,Hotspring,156,69'; put '43.684,-114.41,Guyer Hot Springs,Hailey,Hotspring,158,70'; put '43.155,-115.518,Hot Springs,Hailey,Hotspring,158,70'; put '44.586,-116.63,Lakey Hot Spring,Baker,Hotspring,158,70'; put '42.333,-115.65,Indian Hot Springs,Twin Falls,Hotspring,160,71'; put '42.637,-114.892,Poison Springs,Twin Falls,Hotspring,H,H'; put '44.813,-115.123,Middle Fork Indian Creek Hot Sprin,Challis,Hotspring,162,72'; put '44.072,-115.543,Kirkham Hot Springs,Challis,Hotspring,149,65'; put '43.328,-114.399,Magic Hot Springs,Hailey,Hotspring,163,73'; put '43.293,-114.908,Barrons Hot Spring,Hailey,Hotspring,167,75'; put '44.154,-115.993,Warm Springs Creek Hot Springs,Challis,Hotspring,167,75'; put '44.268,-114.748,Sunbeam Hot Springs,Challis,Hotspring,169,76'; put '44.092,-116.052,Deer Hot Springs,Baker,Hotspring,176,80'; put '43.563,-114.798,Worswick Hot Springs,Hailey,Hotspring,180,82'; put '42.133,-111.928,Battle Creek Hot Springs,Preston,Hotspring,183,84'; put '44.364,-115.856,Boiling Springs,Challis,Hotspring,185,85'; put '44.157,-115.314,Bonneville Hot Springs,Challis,Hotspring,185,85'; put '44.799,-115.129,Indian Creek Hot Spring,Challis,Hotspring,190,88'; put '44.568,-115.695,Vulcan Hot Springs,Challis,Hotspring,190,88'; put '44.306,-116.745,Crane Creek Hot Springs,Baker,Hotspring,198,92'; put '44.416,-116.031,Cabarton Hot Spring,Baker,Hotspring,160,71'; put '42.781,-111.983,Portneuf River Warm Spring,Preston,Hotspring,93,34'; put '44.621,-115.985,Badley Warm Spring,Challis,Hotspring,100,38'; put '45.201,-116.312,Boulder Creek Spring,Grangeville,Hotspring,82,28'; put '42.24,-113.588,Sears Spring,Pocatello,Hotspring,84,29'; put '44.257,-112.639,Warm Springs,Dubois,Hotspring,84,29'; put '42.911,-111.556,Henry Warm Spring,Preston,Hotspring,86,30'; put '43.021,-111.695,Wilson Lake Warm Spring,Driggs,Hotspring,86,30'; put '44.495,-116.732,Keithly Warm Spring,Baker,Hotspring,86,30'; put '42.655,-111.643,Steamboat Hot Spring,Preston,Hotspring,88,31'; put '45.152,-116.296,Stinky Warm Spring,Grangeville,Hotspring,88,31'; put '42.725,-112.872,Indian Springs,Pocatello,Hotspring,90,32'; put '43.114,-112.167,Yandell Springs,Idaho Falls,Hotspring,90,32'; put '44.64,-116.045,Arling Hot Spring,Baker,Hotspring,90,32'; put '42.657,-111.604,Soda Springs,Preston,Hotspring,82,28'; put '45.07,-115.826,Lick Creek Warm Spring,Elk City,Hotspring,91,33'; put '42.337,-111.726,Treasureton Hot Springs,Preston,Hotspring,95,35'; put '44.382,-114.088,Little Antelope Flat Warm Spring,Challis,Hotspring,93,34'; put '43.21,-111.495,Brockman Creek Hot Spring,Driggs,Hotspring,95,35'; put '44.398,-115.149,Cape Horn Warm Springs,Challis,Hotspring,95,35'; put '42.337,-114.509,Nat-Soo-Pah Warm Spring,Twin Falls,Hotspring,97,36'; put '44.9,-115.505,Hot Creek Warm Spring,Challis,Hotspring,97,36'; put '42.405,-114.142,Artesian City Hot Springs,Twin Falls,Hotspring,99,37'; put '42.762,-115.739,Indian Bathtub Hot Springs,Twin Falls,Hotspring,99,37'; put '43.227,-111.109,Alpine Warm Spring,Driggs,Hotspring,99,37'; put '42.545,-112.906,Rockland Warm Springs,Pocatello,Hotspring,100,38'; put '43.805,-114.585,Russian John Hot Spring,Hailey,Hotspring,100,38'; put '43.779,-114.539,Easley Hot Springs,Hailey,Hotspring,100,38'; put '44.26,-114.838,Mormon Bend Hot Spring,Challis,Hotspring,100,38'; put '44.64,-113.504,Big Eightmile Creek Warm Spring,Dubois,Hotspring,91,33'; put '42.339,-112.436,Kent Warm Spring,Pocatello,Hotspring,75,24'; put '42.957,-112.458,Tadpole Warm Spring,Pocatello,Hotspring,68,20'; put '43.607,-111.189,Taylor Springs,Driggs,Hotspring,68,20'; put '43.972,-116.325,Sweet Warm Spring,Boise,Hotspring,68,20'; put '44.717,-115.703,Dollar Creek Warm Spring,Challis,Hotspring,68,20'; put '42.625,-113.107,Lake Walcott Hot Spring,Pocatello,Hotspring,70,21'; put '42.015,-114.237,Thoroughbred Warm Springs,Twin Falls,Hotspring,69,21'; put '42.928,-111.592,Blackfoot Reservoir Warm Spring,Preston,Hotspring,72,22'; put '42.286,-113.446,"Rice Spring, Ward Spring",Pocatello,Hotspring,72,22'; put '42.085,-113.564,Grape Creek Warm Spring,Pocatello,Hotspring,72,22'; put '43.66,-111.715,Elkhorn Warm Spring,Driggs,Hotspring,72,22'; put '43.367,-113.884,Rush Warm Spring,Idaho Falls,Hotspring,72,22'; put '44.306,-117.042,Weiser Warm Springs,Baker,Hotspring,72,22'; put '45.344,-114.463,Owl Creek Hot Springs,Elk City,Hotspring,122,50'; put '44.454,-112.696,Big Spring,Dubois,Hotspring,73,23'; put '44.269,-113.449,Barney Hot Springs,Dubois,Hotspring,82,28'; put '43.5,-115.308,Towne Creek Warm Spring,Hailey,Hotspring,75,24'; put '43.161,-116.332,Thomas Flats Warm Spring,Boise,Hotspring,75,24'; put '44.612,-113.363,Whittaker Warm Springs,Dubois,Hotspring,75,24'; put '42.173,-112.239,Malad Warm Spring,Pocatello,Hotspring,77,25'; put '42.156,-112.348,Pleasantview Warm Springs,Pocatello,Hotspring,77,25'; put '42.025,-112.226,Prices Warm Spring,Pocatello,Hotspring,77,25'; put '42.865,-116.368,Lower Birch Spring,Jordan Valley,Hotspring,77,25'; put '43.423,-111.414,Fall Creek Mineral Springs,Driggs,Hotspring,77,25'; put '42.986,-111.743,Blackfoot River Warm Spring,Preston,Hotspring,79,26'; put '42.426,-111.378,Pescadero Warm Spring,Preston,Hotspring,79,26'; put '44.091,-111.458,Ashton Warm Spring,Ashton,Hotspring,79,26'; put '42.056,-112.246,Woodruff Hot Spring,Pocatello,Hotspring,81,27'; put '43.831,-116.396,Highland Land Co Warm Spring,Boise,Hotspring,73,23'; put '44.847,-115.696,Holdover Hot Spring,Challis,Hotspring,117,47'; put '43.047,-114.929,Hot Sulphur Lake,Hailey,Hotspring,81,27'; put '43.603,-115.07,Baumgartner Hot Spring,Hailey,Hotspring,111,44'; put '44.465,-116.037,Belvidere Hot Spring,Baker,Hotspring,111,44'; put '42.621,-112.008,Lava Hot Springs,Pocatello,Hotspring,113,45'; put '43.823,-115.327,Weatherby Hot Spring,Hailey,Hotspring,113,45'; put '43.335,-115.044,Wolf Hot Spring,Hailey,Hotspring,113,45'; put '44.905,-113.929,Goldbug Hot Spring,Dubois,Hotspring,113,45'; put '45.095,-113.836,Salmon Hot Spring,Dillon,Hotspring,113,45'; put '45.277,-115.912,Burgdorf Hot Springs,Elk City,Hotspring,113,45'; put '44.836,-114.79,Hospital Hot Spring,Challis,Hotspring,115,46'; put '44.72,-114.016,Cronks Canyon Hot Spring,Challis,Hotspring,115,46'; put '44.721,-115.207,Pistol Creek Hot Springs,Challis,Hotspring,115,46'; put '43.791,-111.435,Pincock (Green Canyon) Hot Springs,Driggs,Hotspring,111,44'; put '43.414,-116.707,Givens Hot Springs,Boise,Hotspring,117,47'; put '45.503,-114.463,Horse Creek Hot Springs,Elk City,Hotspring,109,43'; put '46.464,-115.035,Weir Creek Hot Springs,Hamilton,Hotspring,117,47'; put '42.115,-111.264,Bear Lake Hot Springs,Preston,Hotspring,118,48'; put '42.173,-113.861,Oakley Hot Spring,Pocatello,Hotspring,118,48'; put '46.463,-114.872,Jerry Johnson Hot Springs,Hamilton,Hotspring,118,48'; put '43.644,-111.687,Heise Hot Springs,Driggs,Hotspring,120,49'; put '44.799,-114.806,Lower Loon Creek Hot Spring,Challis,Hotspring,120,49'; put '44.253,-115.891,Rocky Canyon Hot Springs,Challis,Hotspring,120,49'; put '46.316,-115.258,Stanley Hot Springs,Hamilton,Hotspring,120,49'; put '43.779,-115.486,Brown Creek Hot Spring,Hailey,Hotspring,122,50'; put '44.628,-114.601,Shower Bath Springs,Challis,Hotspring,122,50'; put '44.171,-114.624,Slate Creek Hot Spring,Challis,Hotspring,122,50'; put '44.392,-115.834,Ground Hog Hot Springs,Challis,Hotspring,100,38'; put '42.797,-115.723,"Bat Hot Spring, Pence Hot Spring",Twin Falls,Hotspring,117,47'; put '42.767,-115.725,Lower Indian Bathtub Hot Springs,Twin Falls,Hotspring,108,42'; put '42.102,-113.632,Durfee Spring,Pocatello,Hotspring,102,39'; put '44.33,-115.802,Silver Creek Hot Spring,Challis,Hotspring,102,39'; put '42.447,-113.523,Marsh Creek Hot Spring,Pocatello,Hotspring,104,40'; put '42.449,-113.511,Marsh Gully Hot Springs,Pocatello,Hotspring,106,41'; put '42.798,-115.742,Bruneau Hot Spring,Twin Falls,Hotspring,106,41'; put '43.576,-114.83,Preis Hot Spring,Hailey,Hotspring,106,41'; put '43.677,-116.208,Terteling Hot Springs,Boise,Hotspring,106,41'; put '44.254,-114.443,Sullivan Hot Springs,Challis,Hotspring,106,41'; put '44.224,-114.929,Stanley Hot Spring,Challis,Hotspring,106,41'; put '44.101,-114.865,Rosalys Warm Spring,Challis,Hotspring,106,41'; put '44.06,-115.819,Danskin Creek Hot Spring,Challis,Hotspring,106,41'; put '45.852,-114.937,Running Warm Springs,Elk City,Hotspring,106,41'; put '43.363,-113.779,Milford Sweat Hot Spring,Idaho Falls,Hotspring,111,44'; put '46.466,-114.939,Colgate Warm Springs,Hamilton,Hotspring,106,41'; put '44.626,-115.749,Trail Creek Hot Spring,Challis,Hotspring,122,50'; put '43.816,-115.863,Warm Springs,Hailey,Hotspring,108,42'; put '43.76,-115.56,Pool Creek Hot Spring,Hailey,Hotspring,108,42'; put '45.042,-114.616,Snowshoe Johnsons Hot Spring,Elk City,Hotspring,108,42'; put '42.388,-112.085,Downata Hot Springs,Pocatello,Hotspring,109,43'; put '42.013,-114.504,Magic Hot Springs,Twin Falls,Hotspring,109,43'; put '42.779,-115.715,Buckaroo Hot Spring,Twin Falls,Hotspring,109,43'; put '43.99,-114.8,Pierson Hot Springs,Hailey,Hotspring,109,43'; put '43.038,-114.988,Tschanne Hot Spring,Hailey,Hotspring,109,43'; put '44.523,-114.173,Beardsley Hot Springs,Challis,Hotspring,109,43'; put '44.733,-115.018,Sunflower Flat Hot Spring,Challis,Hotspring,109,43'; put '44.516,-115.295,Dagger Creek Hot Spring,Challis,Hotspring,110,43'; put '44.971,-116.203,Krigbaum Hot Springs,Baker,Hotspring,109,43'; put '45.416,-116.172,Riggins Hot Springs,Grangeville,Hotspring,106,41'; put '42.735,-73.2,Sand Spring,Albany,Hotspring,75,24'; put '46.106,-114.004,Sleeping Child Hot Springs,Hamilton,Hotspring,122,50'; put '45.697,-114.365,Blue Joint Hot Springs 2,Elk City,Hotspring,84,29'; put '44.769,-111.649,Sloan Cow Camp Spring,Ashton,Hotspring,86,30'; put '47.632,-112.855,Medicine (Sun River) Springs,Choteau,Hotspring,86,30'; put '45.75,-113.938,Gallogly Spring,Dillon,Hotspring,100,38'; put '47.33,-114.789,Quinns Hot Springs,Wallace,Hotspring,109,43'; put '45.171,-112.153,Puller Hot Springs,Dillon,Hotspring,111,44'; put '46.728,-114.533,"Lolo Hot Springs, Granite Springs",Hamilton,Hotspring,111,44'; put '45.337,-110.691,Chico Hot Springs,Bozeman,Hotspring,113,45'; put '47.607,-114.663,Camas Hot Springs,Wallace,Hotspring,113,45'; put '45.841,-114.038,Medicine Hot Springs,Elk City,Hotspring,117,47'; put '45.458,-113.109,Elkhorn Hot Springs,Dillon,Hotspring,118,48'; put '45.027,-112.844,Mcmenomey Ranch Spring,Dillon,Hotspring,68,20'; put '45.792,-112.126,Renova Hot Springs,Dillon,Hotspring,122,50'; put '44.701,-111.878,Staudenmeyer Springs,Ashton,Hotspring,82,28'; put '45.602,-111.9,Potosi Warm Springs,Bozeman,Hotspring,124,51'; put '45.575,-111.683,Norris Hot Springs,Bozeman,Hotspring,127,53'; put '45.462,-112.475,New Biltmore Hot Springs,Dillon,Hotspring,127,53'; put '45.66,-111.186,Bozeman Hot Springs,Bozeman,Hotspring,131,55'; put '45.896,-112.233,Pipestone Hot Springs,Dillon,Hotspring,135,57'; put '46.547,-110.903,White Sulphur Springs,White Sulphur,Hotspring,136,58'; put '46.448,-111.982,Alhambra Hot Springs,White Sulphur,Hotspring,138,59'; put '45.757,-110.256,Hunters Hot Springs,Bozeman,Hotspring,140,60'; put '45.368,-113.403,Jardine Hot Spring,Dillon,Hotspring,140,60'; put '46.596,-112.108,Broadwater (Helena) Hot Springs,Butte,Hotspring,151,66'; put '44.984,-111.613,Wolf Creek Hot Springs,Ashton,Hotspring,154,68'; put '45.685,-112.295,Silver Star Hot Springs,Dillon,Hotspring,163,73'; put '45.59,-111.899,Potosi Hot Springs,Bozeman,Hotspring,122,50'; put '45.105,-112.751,Browns Springs,Dillon,Hotspring,75,24'; put '46.718,-113.306,Bearmouth Warm Spring 2,Butte,Hotspring,68,20'; put '46.717,-113.32,Bearmouth Warm Spring 1,Butte,Hotspring,68,20'; put '47.217,-109.471,Brooks Warm Spring,Lewistown,Hotspring,68,20'; put '45.708,-110.976,Bridger Canyon Warm Spring,Bozeman,Hotspring,70,21'; put '46.795,-108.883,Durfee Creek Springs,Roundup,Hotspring,70,21'; put '46.704,-113.452,Nimrod Springs,Butte,Hotspring,70,21'; put '47.876,-108.656,Landusky Springs,Lewistown,Hotspring,70,21'; put '45.032,-110.667,Bear Creek Springs,Bozeman,Hotspring,72,22'; put '45.111,-112.714,Lovells Hot Spring,Dillon,Hotspring,72,22'; put '46.106,-112.903,Anaconda Hot Springs,Butte,Hotspring,72,22'; put '45.235,-112.135,Trudau Warm Springs,Dillon,Hotspring,73,23'; put '45.698,-114.382,Blue Joint Hot Spring 1,Elk City,Hotspring,84,29'; put '45.037,-111.953,Vigilante Spring,Bozeman,Hotspring,75,24'; put '45.608,-110.571,Carter Bridge Warm Springs,Bozeman,Hotspring,82,28'; put '46.355,-111.565,Bedford Hot Springs,White Sulphur,Hotspring,74,24'; put '45.553,-110.142,Anderson Springs,Bozeman,Hotspring,77,25'; put '45.42,-112.692,Apex Warm Spring,Dillon,Hotspring,77,25'; put '46.607,-112.776,Garrison Warm Springs,Butte,Hotspring,77,25'; put '47.843,-108.598,The (Landusky) Plunge,Lewistown,Hotspring,77,25'; put '44.785,-111.649,West Fork Swimming Hole,Ashton,Hotspring,79,26'; put '46.61,-112.555,Avon Warm Spring,Butte,Hotspring,79,26'; put '46.334,-112.886,Deerlodge Prison Ranch Springs,Butte,Hotspring,79,26'; put '47.994,-108.445,Lodgepole (Big Warm) Springs,Lewistown,Hotspring,79,26'; put '47.451,-114.648,Green Springs,Wallace,Hotspring,79,26'; put '45.392,-112.452,Beaverhead Rock Spring,Dillon,Hotspring,81,27'; put '44.704,-111.892,Andersons Pasture Springs,Ashton,Hotspring,82,28'; put '47.971,-108.395,Little Warm Springs,Lewistown,Hotspring,73,23'; put '46.198,-112.094,Boulder Hot Springs,Butte,Hotspring,169,76'; put '46.178,-112.794,Warm Springs (State Hospital),Butte,Hotspring,172,78'; put '45.367,-111.726,Ennis Hot Springs,Bozeman,Hotspring,181,83'; put '46.044,-112.811,Gregson Hot Springs,Butte,Hotspring,158,70'; put '45.09,-110.774,Laduke (Corwin) Hot Spring,Bozeman,Hotspring,154,68'; put '35.897,-82.826,Hot Springs,Knoxville,Hotspring,108,42'; put '32.644,-108.128,Apache Tejo Warm Spring,Silver City,Hotspring,97,36'; put '33.135,-107.254,Truth Or Consequences,Tularosa,Hotspring,113,45'; put '36.305,-106.053,Ojo Caliente (Arsenic Spring),Aztec,Hotspring,111,44'; put '33.162,-108.209,Spring (Hot),Clifton,Hotspring,111,44'; put '36.508,-105.722,Manby Hot Springs,Raton,Hotspring,100,38'; put '35.849,-106.629,Spence Hot Springs,Albuquerque,Hotspring,100,38'; put '35.972,-106.56,San Antonio Warm Spring,Albuquerque,Hotspring,101,38'; put '35.82,-106.627,Mccauley Hot Springs,Albuquerque,Hotspring,99,37'; put '35.793,-106.685,Soda Dam Hot Springs,Albuquerque,Hotspring,117,47'; put '33.831,-108.8,(Upper) Frisco Hot Spring,Clifton,Hotspring,98,37'; put '35.646,-106.888,Warm Springs,Albuquerque,Hotspring,129,54'; put '36.324,-105.606,Ponce De Leon Springs,Raton,Hotspring,93,34'; put '34.038,-106.94,"Socorro Spring, Sedillo Spring",Socorro,Hotspring,93,34'; put '33.293,-108.282,"Spring Mfg Two, Spring Mfg Three",Clifton,Hotspring,99,37'; put '35.592,-106.753,Indian Springs,Albuquerque,Hotspring,123,51'; put '32.501,-106.926,Radium Springs,Las Cruces,Hotspring,127,53'; put '33.274,-108.25,Spring Mfg Four,Clifton,Hotspring,93,34'; put '35.938,-106.646,San Antonio Hot Spring,Albuquerque,Hotspring,129,54'; put '33.244,-108.88,San Francisco Hot Springs,Clifton,Hotspring,120,49'; put '32.748,-107.836,Mimbres Hot Springs,Las Cruces,Hotspring,136,58'; put '35.653,-105.29,Montezuma Hot Springs,Santa Fe,Hotspring,138,59'; put '33.233,-108.235,Spring (Hot),Clifton,Hotspring,149,65'; put '33.199,-108.209,Gila Hot Springs,Clifton,Hotspring,151,66'; put '33.108,-108.483,Turkey Creek Hot Spring,Clifton,Hotspring,165,74'; put '35.772,-106.69,Jemez Springs,Albuquerque,Hotspring,169,76'; put '35.908,-106.615,Sulphur Springs,Albuquerque,Hotspring,189,87'; put '33.237,-108.88,Hot Springs,Clifton,Hotspring,H,H'; put '32.562,-108.027,Kennecott Warm Springs,Silver City,Hotspring,W,W'; put '32.554,-107.994,Faywood Hot Springs,Las Cruces,Hotspring,129,54'; put '33.898,-108.501,Aragon Springs,Clifton,Hotspring,70,21'; put '34.847,-107.091,Spring (Salt),Socorro,Hotspring,76,24'; put '34.903,-107.085,El Ojo Escondido,Socorro,Hotspring,73,23'; put '35.06,-107.133,Alamos Spring,Albuquerque,Hotspring,72,22'; put '34.912,-108.951,Rainbow Spring,Saint Johns,Hotspring,71,22'; put '34.698,-107.129,Spring,Socorro,Hotspring,71,22'; put '32.455,-104.489,Indian Big Spring,Carlsbad,Hotspring,79,26'; put '34.995,-106.454,Clear Water Spring,Socorro,Hotspring,69,21'; put '32.821,-108.408,Ash Spring,Silver City,Hotspring,72,22'; put '32.83,-109.047,Goat Camp Spring,Silver City,Hotspring,69,21'; put '35.548,-106.827,San Ysidro Warm Springs,Albuquerque,Hotspring,68,20'; put '34.116,-106.98,Ojitos Springs,Socorro,Hotspring,68,20'; put '32.248,-104.411,Mosley Spring,Carlsbad,Hotspring,68,20'; put '33.708,-109.025,Frieborn Canyon Spring,Clifton,Hotspring,92,33'; put '33.192,-108.18,Lyons Hunting Lodge Hot Springs,Clifton,Hotspring,126,52'; put '35.601,-106.86,Phillips Springs,Albuquerque,Hotspring,70,21'; put '33.285,-108.262,Spring Mfg One,Clifton,Hotspring,88,31'; put '33.306,-108.324,The Meadows Warm Spring,Clifton,Hotspring,91,33'; put '34.049,-106.939,Cook Spring,Socorro,Hotspring,70,21'; put '32.795,-107.276,Derry Warm Springs,Las Cruces,Hotspring,92,33'; put '32.884,-108.358,Allen Springs,Silver City,Hotspring,78,26'; put '33.279,-107.563,Warm Springs,Tularosa,Hotspring,87,31'; put '32.606,-107.19,Souse Springs,Las Cruces,Hotspring,88,31'; put '34.808,-107.091,Spring (Salt),Socorro,Hotspring,86,30'; put '35.54,-106.854,San Ysidro Hot Springs,Albuquerque,Hotspring,85,29'; put '36.368,-106.059,Statue Spring,Aztec,Hotspring,83,28'; put '34.833,-107.091,Laguna Pueblo Seeps,Socorro,Hotspring,82,28'; put '33.572,-107.593,Ojo Caliente,Tularosa,Hotspring,83,28'; put '34.854,-107.088,Laguna Pueblo Springs,Socorro,Hotspring,80,27'; put '32.843,-108.512,Mangas Springs,Silver City,Hotspring,81,27'; put '34.769,-107.085,Spring (Salt),Socorro,Hotspring,78,26'; put '34.032,-106.777,Ojo De Las Canas,Socorro,Hotspring,79,26'; put '40.972,-119.007,Black Rock Hot Spring,Lovelock,Hotspring,136,58'; put '38.899,-119.41,Nevada (Hinds) Hot Springs,Walker Lake,Hotspring,144,62'; put '38.922,-118.198,Wedell Hot Springs,Walker Lake,Hotspring,144,62'; put '41.183,-114.991,Hot Springs,Wells,Hotspring,142,61'; put '38.437,-116.277,Hot Creek Valley Spring,Tonopah,Hotspring,142,61'; put '41.788,-114.735,Mineral Hot Spring,Wells,Hotspring,140,60'; put '37.825,-117.337,Alkali Hot Spring,Goldfield,Hotspring,140,60'; put '41.412,-114.675,Wine Cup Ranch Springs,Wells,Hotspring,138,59'; put '40.404,-116.517,Crescent Valley Hot Springs,Winnemucca,Hotspring,138,59'; put '40.417,-116.507,Crescent Valley Hot Springs,Winnemucca,Hotspring,138,59'; put '40.603,-116.463,Horseshoe Ranch Springs,Winnemucca,Hotspring,136,58'; put '41.378,-119.182,Springs (Hot),Vya,Hotspring,136,58'; put '39.883,-114.893,Cherry Creek Hot Springs,Ely,Hotspring,144,62'; put '40.922,-117.108,Hot Pot (Blossom Hot Springs),Winnemucca,Hotspring,136,58'; put '41.721,-118.505,Howard Hot Spring,Vya,Hotspring,135,57'; put '41.421,-117.388,The Hot Springs,Mcdermitt,Hotspring,135,57'; put '40.418,-117.415,Buffalo Springs,Winnemucca,Hotspring,162,72'; put '39.031,-116.666,Dianas Punch Bowl,Millett,Hotspring,138,59'; put '39.404,-116.347,Klobe (Bartholomae) Hot Spring,Millett,Hotspring,156,69'; put '36.975,-116.721,Hicks Hot Springs,Death Valley,Hotspring,109,43'; put '40.178,-117.496,Home Station Ranch Hot Spring,Winnemucca,Hotspring,135,57'; put '39.797,-118.067,Dixie Hot Springs,Reno,Hotspring,162,72'; put '39.904,-116.588,Walti Hot Springs,Millett,Hotspring,162,72'; put '38.981,-119.833,Walleys Hot Springs,Walker Lake,Hotspring,160,71'; put '38.464,-115.792,Chimney Warm Spring,Lund,Hotspring,160,71'; put '39.328,-116.858,Spencer Hot Springs,Millett,Hotspring,162,72'; put '41.108,-117.578,Hot Springs,Mcdermitt,Hotspring,158,70'; put '36.002,-114.742,Spring,Las Vegas,Hotspring,145,63'; put '41.576,-115.181,Hot Creek Springs,Wells,Hotspring,151,66'; put '40.954,-117.488,Golconda Hot Spring (South),Winnemucca,Hotspring,151,66'; put '40.22,-116.068,Bruffeys Hot Springs,Winnemucca,Hotspring,149,65'; put '40.249,-115.409,Smith Ranch Springs,Elko,Hotspring,149,65'; put '41.867,-114.692,San Jacinto Ranch Spring,Wells,Hotspring,148,64'; put '40.765,-116.04,Hot Sulphur Springs,Winnemucca,Hotspring,147,64'; put '38.188,-116.373,Warm Springs,Tonopah,Hotspring,145,63'; put '41.567,-118.564,Dyke Hot Springs,Vya,Hotspring,158,70'; put '38.365,-115.867,Abel Spring,Lund,Hotspring,115,46'; put '41.929,-114.071,Nile Spring,Wells,Hotspring,109,43'; put '39.193,-119.752,Carson Hot Springs,Reno,Hotspring,120,49'; put '39.512,-119.907,Lawton Hot Springs,Reno,Hotspring,120,49'; put '39.944,-119.509,Anaho Island Spring,Reno,Hotspring,120,49'; put '37.761,-117.632,Silverpeak Hot Spring,Goldfield,Hotspring,118,48'; put '37.621,-114.51,Caliente Hot Springs,Caliente,Hotspring,118,48'; put '39.058,-119.742,Saratoga Hot Spring,Reno,Hotspring,122,50'; put '39.308,-117.552,Hot Springs,Millett,Hotspring,115,46'; put '40.673,-116.838,Hot Springs,Winnemucca,Hotspring,122,50'; put '39.08,-116.639,Potts Ranch Hot Springs,Millett,Hotspring,113,45'; put '38.388,-115.866,Coyote Hole Spring,Lund,Hotspring,113,45'; put '41.753,-118.841,Warm Springs,Vya,Hotspring,112,44'; put '41.386,-114.165,Spring (Hot),Wells,Hotspring,111,44'; put '40.961,-117.494,Golconda Hot Spring (North),Winnemucca,Hotspring,165,74'; put '40.313,-117.07,Mound Springs,Winnemucca,Hotspring,109,43'; put '40.585,-115.285,Sulphur Hot Springs,Elko,Hotspring,205,96'; put '39.059,-119.815,Hobo Hot Springs,Reno,Hotspring,114,46'; put '40.191,-117.107,Hot Springs,Winnemucca,Hotspring,127,53'; put '40.819,-115.777,Hot Hole,Elko,Hotspring,133,56'; put '39.286,-119.84,Bowers Mansion Hot Spring,Reno,Hotspring,133,56'; put '41.809,-118.861,Painted Hills Mine,Vya,Hotspring,131,55'; put '41.925,-118.805,Bog Hot Springs,Vya,Hotspring,131,55'; put '41.647,-115.775,Wild Horse Hot Springs,Wells,Hotspring,129,54'; put '40.183,-117.102,Hot Springs Ranch,Winnemucca,Hotspring,129,54'; put '40.08,-117.604,Mccoy Springs,Winnemucca,Hotspring,120,49'; put '41.353,-119.216,Spring (Hot),Vya,Hotspring,127,53'; put '41.357,-119.188,Springs (Hot),Vya,Hotspring,133,56'; put '40.198,-117.103,Hot Springs,Winnemucca,Hotspring,127,53'; put '39.42,-119.738,Dimonte Spring,Reno,Hotspring,127,53'; put '38.952,-115.23,Williams Hot Spring,Lund,Hotspring,127,53'; put '41.261,-115.305,Hot Springs,Wells,Hotspring,126,52'; put '39.041,-116.663,Hot Spring,Millett,Hotspring,124,51'; put '41.365,-119.221,Spring (Hot),Vya,Hotspring,122,50'; put '41.159,-114.986,"Threemile Spring, Sulphur Hot Spr",Wells,Hotspring,122,50'; put '41.339,-119.192,Springs (Hot),Vya,Hotspring,127,53'; put '39.893,-116.649,Little Hot Springs,Millett,Hotspring,H,H'; put '39.787,-119.011,Bradys Hot Springs,Reno,Hotspring,209,98'; put '41.175,-115.278,Hot Spring,Wells,Hotspring,H,H'; put '41.145,-114.994,Hot Spring,Wells,Hotspring,H,H'; put '40.864,-117.349,Sulphur Spring,Winnemucca,Hotspring,H,H'; put '39.733,-119.039,Eagle Salt Works Spring,Reno,Hotspring,H,H'; put '39.281,-118.42,Sand Springs,Reno,Hotspring,H,H'; put '38.81,-116.397,Fish Springs,Tonopah,Hotspring,W,W'; put '39.559,-117.427,Petersons Mill Hot Spring,Millett,Hotspring,H,H'; put '38.339,-116.662,Warm Spring,Tonopah,Hotspring,W,W'; put '38.859,-119.175,Hot Spring,Walker Lake,Hotspring,H,H'; put '39.995,-117.854,Senator Fumaroles,Millett,Hotspring,B,B'; put '39.565,-118.856,(Soda Lake Area),Reno,Hotspring,210,99'; put '40.141,-119.687,The Needle Rocks Hot Springs,Lovelock,Hotspring,208,98'; put '40.146,-119.673,The Needle Rocks Hot Spring,Lovelock,Hotspring,208,98'; put '40.662,-119.365,Great Boiling Spring (Gerlach),Lovelock,Hotspring,208,98'; put '39.388,-119.743,Steamboat Springs,Reno,Hotspring,205,96'; put '39.866,-118.017,Dixie Comstock Mine,Reno,Hotspring,H,H'; put '40.746,-116.689,White House Spring,Winnemucca,Hotspring,W,W'; put '39.98,-119.502,Pyramid Island Hot Spring,Reno,Hotspring,.,.'; put '41.934,-118.808,Warm Springs,Vya,Hotspring,W,W'; put '41.385,-116.058,Petaini Springs,Mcdermitt,Hotspring,W,W'; put '41.064,-115.389,Warm Springs,Wells,Hotspring,W,W'; put '41.066,-114.99,Spring,Wells,Hotspring,W,W'; put '41.355,-114.133,Warm Springs,Wells,Hotspring,W,W'; put '41.148,-116.733,Hot Lake,Mcdermitt,Hotspring,H,H'; put '40.684,-116.153,Ellison Ranch Warm Spring,Winnemucca,Hotspring,W,W'; put '40.604,-117.648,Leach Hot Springs,Winnemucca,Hotspring,207,97'; put '40.751,-115.035,Warm Springs,Elko,Hotspring,W,W'; put '40.782,-115.363,Warm Spring,Elko,Hotspring,W,W'; put '39.529,-116.388,Warm Spring,Millett,Hotspring,W,W'; put '39.072,-115.635,Big Blue Spring,Ely,Hotspring,W,W'; put '38.95,-119.388,Spring,Walker Lake,Hotspring,W,W'; put '38.965,-118.689,Double Spring,Walker Lake,Hotspring,W,W'; put '38.458,-117.303,Indian Springs,Tonopah,Hotspring,W,W'; put '40.592,-116.157,Raine Ranch Springs,Winnemucca,Hotspring,W,W'; put '39.941,-116.681,Hot Springs,Millett,Hotspring,180,82'; put '40.567,-116.588,Beowawe Hot Springs (The Geysers),Winnemucca,Hotspring,208,98'; put '40.761,-117.492,Hot Springs,Winnemucca,Hotspring,185,85'; put '40.653,-119.378,Mud Springs,Lovelock,Hotspring,184,84'; put '38.768,-119.174,Wilson Hot Spring,Walker Lake,Hotspring,183,84'; put '41.921,-118.709,Baltazor Hot Spring,Vya,Hotspring,181,83'; put '40.857,-119.328,Fly Ranch (Wards) Hot Springs,Lovelock,Hotspring,180,82'; put '39.597,-119.11,Patua Hot Springs (Fernley),Reno,Hotspring,187,86'; put '39.028,-117.136,Mcleod Ranch Hot Spring,Millett,Hotspring,180,82'; put '40.316,-116.433,Hot Spring,Winnemucca,Hotspring,186,86'; put '38.521,-116.365,Hot Creek Ranch Hot Spring,Tonopah,Hotspring,180,82'; put '41.051,-119.028,Double Hot Springs,Vya,Hotspring,178,81'; put '40.003,-117.718,Hyder Hot Springs,Winnemucca,Hotspring,176,80'; put '39.665,-114.807,Monte Neva Hot Springs,Ely,Hotspring,176,80'; put '40.368,-117.327,Buffalo Valley Hot Springs,Winnemucca,Hotspring,174,79'; put '40.699,-116.133,Hot Springs (Carlin),Winnemucca,Hotspring,174,79'; put '41.052,-118.717,Macfarlane Hot Spring,Vya,Hotspring,170,77'; put '39.342,-118.578,Borax Spring,Reno,Hotspring,180,82'; put '39.484,-119.804,Moana Springs,Reno,Hotspring,199,93'; put '41.243,-114.947,Twelvemile Spring,Wells,Hotspring,102,39'; put '39.38,-119.74,Steamboat Springs,Reno,Hotspring,205,96'; put '39.558,-116.36,Bartine Hot Springs,Millett,Hotspring,108,42'; put '39.954,-117.917,Fumaroles,Millett,Hotspring,204,96'; put '40.389,-119.402,Hot Seeps (San Emidio Desert),Lovelock,Hotspring,203,95'; put '38.822,-117.183,Darroughs Hot Springs,Tonopah,Hotspring,203,95'; put '40.088,-117.725,Sou (Seven Devils) Hot Springs,Winnemucca,Hotspring,185,85'; put '41.363,-118.788,Pinto Hot Springs,Vya,Hotspring,199,93'; put '40.408,-117.883,Kyle Hot Springs,Winnemucca,Hotspring,171,77'; put '41.357,-118.809,West Pinto Hot Spring,Vya,Hotspring,198,92'; put '39.316,-117.549,Hot Springs,Millett,Hotspring,198,92'; put '41.468,-116.15,Hot Sulphur Springs (Tuscarora),Mcdermitt,Hotspring,194,90'; put '40.813,-115.778,Elko Hot Spring,Elko,Hotspring,190,88'; put '39.208,-118.723,"Lee Hot Springs, Allen Springs",Reno,Hotspring,190,88'; put '40.262,-119.379,Boiling Springs,Lovelock,Hotspring,187,86'; put '40.77,-119.113,Butte Springs (Trego Hot Springs),Lovelock,Hotspring,187,86'; put '39.161,-119.183,Wabuska Hot Springs,Reno,Hotspring,201,94'; put '39.814,-115.612,Giocoecha Warm Springs,Ely,Hotspring,76,24'; put '36.389,-114.433,Blue Point Spring,Las Vegas,Hotspring,82,28'; put '37.016,-117.211,Seep,Goldfield,Hotspring,77,25'; put '37.751,-116.274,Cedar Spring,Goldfield,Hotspring,77,25'; put '37.896,-114.227,Flatnose Ranch Spring,Caliente,Hotspring,77,25'; put '36.207,-115.983,Pahrump (Bennetts) Spring,Las Vegas,Hotspring,77,25'; put '41.775,-115.921,Rizzi Ranch Hot Spring,Wells,Hotspring,106,41'; put '35.944,-114.731,Hot Spring,Kingman,Hotspring,78,26'; put '41.884,-114.117,Gambles Hole,Wells,Hotspring,104,40'; put '36.565,-115.671,Indian Springs,Las Vegas,Hotspring,78,26'; put '39.547,-114.915,Campbell Ranch Springs,Ely,Hotspring,76,24'; put '38.423,-115.022,Flag Springs,Lund,Hotspring,75,24'; put '38.44,-115.011,Butterfield Springs,Lund,Hotspring,75,24'; put '37.997,-118.039,Fish Spring,Mariposa,Hotspring,75,24'; put '37.029,-116.719,Springs,Goldfield,Hotspring,75,24'; put '36.426,-116.411,Ash Tree Spring,Death Valley,Hotspring,75,24'; put '36.033,-115.888,Browns Spring,Las Vegas,Hotspring,75,24'; put '41.322,-119.206,Springs,Vya,Hotspring,75,24'; put '41.706,-118.261,Ninemile Springs,Vya,Hotspring,79,26'; put '35.964,-114.743,Hot Spring,Kingman,Hotspring,82,28'; put '41.763,-118.279,Fivemile Spring,Vya,Hotspring,81,27'; put '39.457,-119.722,Huffaker Springs,Reno,Hotspring,81,27'; put '38.992,-117.042,Charnock (Big Blue) Springs,Tonopah,Hotspring,80,27'; put '36.402,-116.302,Davis Ranch Springs,Death Valley,Hotspring,81,27'; put '36.45,-116.313,Spring,Death Valley,Hotspring,81,27'; put '39.792,-114.692,Lower Shellbourne Spring,Ely,Hotspring,77,25'; put '41.338,-119.168,Springs,Vya,Hotspring,79,26'; put '41.022,-119.275,Caine Spring,Vya,Hotspring,73,23'; put '41.05,-117.1,Hot Springs Ranch Springs,Mcdermitt,Hotspring,79,26'; put '40.079,-116.035,Flynn Ranch Springs,Winnemucca,Hotspring,78,26'; put '40.325,-116.058,Hot Springs,Winnemucca,Hotspring,79,26'; put '36.414,-116.292,Spring,Death Valley,Hotspring,79,26'; put '36.173,-115.191,Las Vegas Springs,Las Vegas,Hotspring,79,26'; put '36.174,-115.479,White Rock Spring,Las Vegas,Hotspring,78,26'; put '36.565,-115.623,Spring,Las Vegas,Hotspring,79,26'; put '36.491,-116.342,"Fairbanks Spring, Soda Spring",Death Valley,Hotspring,81,27'; put '38.654,-114.633,Geyser Ranch Springs,Lund,Hotspring,70,21'; put '36.363,-116.271,Bole Spring,Death Valley,Hotspring,72,22'; put '36.999,-116.706,Spring,Death Valley,Hotspring,72,22'; put '36.942,-115.425,Ash Creek Spring,Las Vegas,Hotspring,72,22'; put '38.796,-119.65,Doud Springs,Walker Lake,Hotspring,70,21'; put '38.622,-115.047,Emigrant Springs,Lund,Hotspring,70,21'; put '38.927,-115.082,Preston Springs,Lund,Hotspring,70,21'; put '36.147,-115.893,Manse Ranch Spring,Las Vegas,Hotspring,75,24'; put '38.645,-114.632,Geyser Ranch Springs,Lund,Hotspring,70,21'; put '38.574,-115.522,Tom Spring,Lund,Hotspring,72,22'; put '38.671,-114.628,Geyser Ranch Springs,Lund,Hotspring,70,21'; put '37.783,-114.528,Bennett Springs,Caliente,Hotspring,70,21'; put '37.86,-114.321,Delmues Springs,Caliente,Hotspring,70,21'; put '36.408,-116.313,Davis Ranch Spring,Death Valley,Hotspring,70,21'; put '36.567,-114.446,Seep,Las Vegas,Hotspring,70,21'; put '41.369,-114.187,Gamble Spring,Wells,Hotspring,69,20'; put '39.901,-115.868,Thompson Ranch Spring,Ely,Hotspring,68,20'; put '38.633,-114.638,Wambolt Springs,Lund,Hotspring,70,21'; put '37.906,-118.171,Sand Spring,Mariposa,Hotspring,74,23'; put '36.486,-114.329,Springs,Las Vegas,Hotspring,77,25'; put '41.354,-119.116,Mustang Springs,Vya,Hotspring,73,23'; put '41.746,-119.791,Warm Springs,Vya,Hotspring,73,23'; put '41.258,-118.937,Cane Springs,Vya,Hotspring,74,23'; put '40.103,-119.884,Fish Springs,Lovelock,Hotspring,73,23'; put '39.853,-119.719,Spring,Reno,Hotspring,73,23'; put '39.832,-116.069,Sulphur Spring,Millett,Hotspring,74,23'; put '36.363,-116.263,Spring,Death Valley,Hotspring,72,22'; put '38.554,-115.531,Kate Spring,Lund,Hotspring,73,23'; put '37.074,-116.691,Spring,Goldfield,Hotspring,72,22'; put '37.979,-117.993,Gap Spring,Goldfield,Hotspring,73,23'; put '41.591,-119.862,Twin (Vya) Spring,Vya,Hotspring,71,22'; put '40.763,-119.172,Coyote Spring,Lovelock,Hotspring,72,22'; put '40.127,-116.884,Springs,Winnemucca,Hotspring,72,22'; put '40.187,-116.805,Spring,Winnemucca,Hotspring,72,22'; put '40.967,-114.515,Johnson Ranch Springs,Elko,Hotspring,72,22'; put '36.205,-115.141,Kyle Spring,Las Vegas,Hotspring,75,24'; put '39.8,-114.653,Upper Shellbourne Spring,Ely,Hotspring,74,23'; put '36.428,-116.303,Button Springs,Death Valley,Hotspring,93,34'; put '38.383,-115.153,Hot Creek Ranch Spring,Lund,Hotspring,90,32'; put '39.283,-114.866,Lackawanna Hot Springs,Ely,Hotspring,95,35'; put '38.532,-116.465,Upper Warm Spring,Tonopah,Hotspring,95,35'; put '38.823,-116.717,South Mosquito Creek Ranch Springs,Tonopah,Hotspring,95,35'; put '40.829,-117.306,Brooks Spring,Winnemucca,Hotspring,93,34'; put '40.992,-117.763,Spring,Winnemucca,Hotspring,93,34'; put '41.971,-114.574,Warm Springs,Wells,Hotspring,95,35'; put '38.95,-115.7,Big Warm Spring,Lund,Hotspring,93,34'; put '37.463,-115.192,Ash Springs,Caliente,Hotspring,97,36'; put '36.464,-116.319,Parent Springs,Death Valley,Hotspring,93,34'; put '38.352,-115.181,Moon River Spring,Lund,Hotspring,92,33'; put '36.402,-116.274,"Point of Rocks Springs, King Sprin",Death Valley,Hotspring,91,33'; put '36.421,-116.322,Crystal Pool,Death Valley,Hotspring,91,33'; put '36.425,-116.291,Devils Hole,Death Valley,Hotspring,92,33'; put '39.068,-119.786,Springs,Reno,Hotspring,90,32'; put '38.954,-117.049,Big Blue (A) Spring,Tonopah,Hotspring,90,32'; put '40.087,-114.647,Collar And Elbow Spring,Elko,Hotspring,93,34'; put '36.378,-114.443,Rogers Spring,Las Vegas,Hotspring,82,28'; put '39.943,-116.073,Shipley Hot Spring,Millett,Hotspring,106,41'; put '38.698,-116.435,"Upper Warm Spring, Warm Spring",Tonopah,Hotspring,106,41'; put '41.53,-118.57,Spring,Vya,Hotspring,104,40'; put '41.877,-115.628,Rowland Hot Springs,Wells,Hotspring,104,40'; put '40.035,-117.604,Lower Ranch Hot Springs,Winnemucca,Hotspring,104,40'; put '40.187,-116.79,Chillis Hot Spring,Winnemucca,Hotspring,102,39'; put '39.988,-116.044,Siri Ranch Spring,Millett,Hotspring,95,35'; put '39.421,-119.758,Zolezzi Spring,Reno,Hotspring,102,39'; put '38.531,-116.405,Old Dugan Ranch Hot Springs,Tonopah,Hotspring,102,39'; put '36.968,-116.723,Burrell Hot Spring,Death Valley,Hotspring,102,39'; put '38.343,-118.103,Soda Springs,Walker Lake,Hotspring,100,38'; put '38.556,-115.767,"Lockes Big Spring, Hay Corral Spr",Lund,Hotspring,100,38'; put '38.594,-115.138,Moorman Spring,Lund,Hotspring,100,38'; put '38.398,-115.862,Storm Spring,Lund,Hotspring,99,37'; put '41.19,-115.287,Hot Spring,Wells,Hotspring,97,36'; put '37.822,-117.48,Pearl Hot Springs,Goldfield,Hotspring,97,36'; put '39.159,-119.737,Nevada State Prison Spring,Reno,Hotspring,75,24'; put '40.025,-117.646,Spring,Winnemucca,Hotspring,83,28'; put '40.83,-119.538,Springs,Lovelock,Hotspring,84,29'; put '39.442,-119.743,Double Diamond Spring,Reno,Hotspring,84,29'; put '39.413,-114.779,Mcgill Spring,Ely,Hotspring,84,29'; put '39.458,-114.756,Schoolhouse Spring,Ely,Hotspring,84,29'; put '36.375,-116.274,Big (Ash Meadows) Spring,Death Valley,Hotspring,83,28'; put '38.292,-114.272,Hammond Ranch Spring,Lund,Hotspring,84,29'; put '41.398,-119.165,Spring,Vya,Hotspring,84,29'; put '41.732,-119.785,Seeps (Hills Warm Spring),Vya,Hotspring,83,28'; put '38.563,-115.528,Blue Eagle Springs,Lund,Hotspring,84,29'; put '40.873,-117.937,Rose Creek Spring,Winnemucca,Hotspring,83,28'; put '39.917,-114.667,Spring,Ely,Hotspring,83,28'; put '36.39,-116.278,Jack Rabbit Spring,Death Valley,Hotspring,82,28'; put '36.437,-116.206,Spring,Death Valley,Hotspring,82,28'; put '38.937,-115.695,Little Warm Spring,Lund,Hotspring,90,32'; put '36.479,-116.326,Rogers Spring,Death Valley,Hotspring,82,28'; put '40.29,-116.049,Carlotti Ranch Springs,Winnemucca,Hotspring,102,39'; put '36.468,-116.325,Longstreet Spring,Death Valley,Hotspring,82,28'; put '36.722,-114.716,Muddy Spring,Las Vegas,Hotspring,90,32'; put '37.532,-115.233,Crystal Springs,Caliente,Hotspring,90,32'; put '37.598,-115.215,Hiko Spring,Caliente,Hotspring,90,32'; put '36.404,-116.383,Spring,Death Valley,Hotspring,90,32'; put '37.996,-116.389,Reveille Mill Spring,Goldfield,Hotspring,84,29'; put '36.71,-114.714,Moapa Warm Springs,Las Vegas,Hotspring,90,32'; put '35.982,-114.748,Hot Springs,Kingman,Hotspring,86,30'; put '40.929,-116.895,Izzenhood Ranch Springs,Winnemucca,Hotspring,88,31'; put '37.807,-114.38,Panaca Spring,Caliente,Hotspring,88,31'; put '36.942,-116.729,Spring,Death Valley,Hotspring,88,31'; put '41.98,-114.376,Hot Spring,Wells,Hotspring,86,30'; put '36.433,-116.308,Scruggs Springs,Death Valley,Hotspring,86,30'; put '40.952,-114.751,Ralphs Warm Springs,Elko,Hotspring,86,30'; put '39.526,-118.876,Soda Lake,Reno,Hotspring,86,30'; put '38.027,-116.683,Spring,Tonopah,Hotspring,86,30'; put '37.741,-115.753,Sand Spring,Caliente,Hotspring,86,30'; put '36.918,-116.744,Beatty Municipal Spring,Death Valley,Hotspring,88,31'; put '38.255,-116.829,Saulsbury Warm Spring,Tonopah,Hotspring,86,30'; put '42.48,-73.37,Lebanon Spring,Albany,Hotspring,72,22'; put '44.241,-122.058,Bigelow Hot Springs,Salem,Hotspring,142,61'; put '44.862,-121.201,Kahneeta Hot Springs,Bend,Hotspring,126,52'; put '44.927,-117.939,Radium Hot Springs,Baker,Hotspring,135,57'; put '44.354,-118.574,Blue Mountain Hot Springs,Canyon City,Hotspring,136,58'; put '44.936,-122.173,Bagby Hot Springs,Salem,Hotspring,136,58'; put '43.944,-118.136,Beulah Hot Springs,Burns,Hotspring,140,60'; put '43.763,-117.156,Mitchell Butte Hot Spring,Boise,Hotspring,144,62'; put '42.116,-121.287,Oregon Hot Springs (Big Hot Spring,Klamath Falls,Hotspring,142,61'; put '45.151,-118.659,Lehman Springs,Pendleton,Hotspring,142,61'; put '43.719,-121.209,East Lake Hot Springs,Crescent,Hotspring,144,62'; put '43.469,-118.202,Luce Hot Springs,Burns,Hotspring,145,63'; put '45.018,-117.625,Medical Hot Springs,Grangeville,Hotspring,140,60'; put '44.867,-121.228,Springs,Bend,Hotspring,125,52'; put '42.188,-118.383,Flagstaff Butte Hot Spring,Adel,Hotspring,126,52'; put '44.451,-119.105,Mount Vernon Hot Springs,Canyon City,Hotspring,121,49'; put '42.977,-117.061,Canters Hot Spring,Jordan Valley,Hotspring,120,49'; put '43.294,-122.367,Umpqua Hot Springs,Roseburg,Hotspring,117,47'; put '44.002,-119.647,Weberg Hot Spring,Canyon City,Hotspring,115,46'; put '43.739,-117.178,Deer Butte Hot Spring,Boise,Hotspring,115,46'; put '43.795,-117.958,Jonesboro Warm Spring,Boise,Hotspring,112,45'; put '42.075,-119.927,Hallinan Spring,Adel,Hotspring,113,45'; put '42.297,-119.776,Fisher Hot Springs,Adel,Hotspring,154,68'; put '45.013,-117.885,Kropp Hot Spring,Grangeville,Hotspring,109,43'; put '42.221,-120.368,Hunters Hot Springs,Klamath Falls,Hotspring,205,96'; put '44.083,-122.233,Cougar Reservoir Hot Springs,Salem,Hotspring,111,44'; put '44.023,-117.46,Neal Hot Springs,Baker,Hotspring,189,87'; put '42.431,-121.963,Eagle Point Spring,Klamath Falls,Hotspring,95,35'; put '43.689,-122.372,Kitson Hot Springs,Roseburg,Hotspring,109,43'; put '44.813,-117.765,Spring (Hot),Baker,Hotspring,W,W'; put '43.776,-118.047,Warm Spring,Burns,Hotspring,W,W'; put '43.793,-118.472,Sitz Warm Spring,Burns,Hotspring,W,W'; put '43.86,-118.288,Altnow Hot Spring,Burns,Hotspring,W,W'; put '43.893,-117.596,Springs,Boise,Hotspring,W,W'; put '45.206,-117.912,Union Station Hot Springs,Grangeville,Hotspring,H,H'; put '44.208,-117.455,Jamieson Hot Springs,Baker,Hotspring,H,H'; put '42.338,-118.602,Hot Springs,Adel,Hotspring,207,97'; put '44.782,-121.975,Breitenbush Hot Springs,Bend,Hotspring,198,92'; put '42.219,-119.877,Warner Valley Ranch,Adel,Hotspring,198,92'; put '42.156,-120.345,Barry Ranch Hot Springs,Klamath Falls,Hotspring,190,88'; put '44.193,-122.049,Belknap Springs,Salem,Hotspring,160,71'; put '45.021,-122.009,Austin Hot Springs,Vancouver,Hotspring,186,86'; put '42.676,-118.344,Mickey Springs,Adel,Hotspring,187,86'; put '44.153,-122.098,Foley Springs,Salem,Hotspring,178,81'; put '45.244,-117.958,Hot Lake Springs,Grangeville,Hotspring,176,80'; put '42.544,-118.533,Alvord Hot Springs,Adel,Hotspring,174,79'; put '43.441,-118.638,Crane Hot Springs,Burns,Hotspring,172,78'; put '42.226,-119.881,Crump Geyser (Crump Spring),Adel,Hotspring,172,78'; put '43.727,-117.203,Snively Hot Spring,Boise,Hotspring,170,77'; put '42.174,-121.615,Olene Gap Hot Springs,Klamath Falls,Hotspring,165,74'; put '43.708,-122.288,Mccredie Springs,Roseburg,Hotspring,163,73'; put '43.982,-117.233,Vale Hot Springs,Boise,Hotspring,163,73'; put '42.162,-120.344,Leithead Hot Spring,Klamath Falls,Hotspring,162,72'; put '45.372,-121.697,Mount Hood Fumaroles,The Dalles,Hotspring,194,90'; put '43.264,-119.015,Dunn Spring,Burns,Hotspring,70,21'; put '42.873,-122.167,Annie Spring,Medford,Hotspring,77,25'; put '42.133,-121.219,Wilkersons Hot Spring,Klamath Falls,Hotspring,76,24'; put '43.272,-119.293,Basque Spring,Burns,Hotspring,74,23'; put '43.276,-119.34,Double O Spring,Burns,Hotspring,74,23'; put '44.073,-119.427,Brisbois Ranch Springs,Canyon City,Hotspring,72,22'; put '43.265,-119.276,Johnson Spring,Burns,Hotspring,72,22'; put '43.281,-119.311,Double O Barnyard Spring,Burns,Hotspring,72,22'; put '43.501,-119.091,Roadland Spring,Burns,Hotspring,72,22'; put '43.529,-119.081,Goodman Spring,Burns,Hotspring,72,22'; put '43.703,-117.19,South Black Willow Spring,Boise,Hotspring,71,22'; put '42.307,-119.875,Moss Ranch Spring,Adel,Hotspring,72,22'; put '43.758,-118.067,Juntura Warm Spring 1,Burns,Hotspring,77,25'; put '43.732,-121.252,Paulina Springs,Crescent,Hotspring,70,21'; put '42.176,-121.828,Howard Holiday,Klamath Falls,Hotspring,77,25'; put '43.477,-119.075,Baker Spring,Burns,Hotspring,70,21'; put '42.178,-121.801,Hardboard Spring,Klamath Falls,Hotspring,70,21'; put '42.325,-120.327,White Rock Ranch Hot Spring,Klamath Falls,Hotspring,71,21'; put '43.252,-119.258,Hughet Spring,Burns,Hotspring,68,20'; put '42.38,-120.33,Bean Hot Spring,Klamath Falls,Hotspring,69,20'; put '42.933,-120.642,Lost Cabin Spring,Klamath Falls,Hotspring,68,20'; put '42.998,-120.725,Buckhorn Creek Springs,Klamath Falls,Hotspring,68,20'; put '42.688,-117.905,Tudors Spring,Jordan Valley,Hotspring,68,20'; put '42.756,-117.55,Scott Spring,Jordan Valley,Hotspring,68,20'; put '42.725,-120.646,Summer Lake Hot Spring,Klamath Falls,Hotspring,109,43'; put '43.757,-118.092,Juntura Warm Spring 2,Burns,Hotspring,95,35'; put '44.374,-118.738,Limekiln Hot Spring,Canyon City,Hotspring,70,21'; put '42.221,-122.742,Jackson Hot Springs,Medford,Hotspring,95,35'; put '44.892,-119.141,Ritter Hot Springs,Canyon City,Hotspring,106,41'; put '43.808,-122.309,Wall Creek Warm Springs,Roseburg,Hotspring,106,41'; put '43.395,-118.308,Springs (Hot),Burns,Hotspring,106,41'; put '43.302,-117.383,Hot Spring,Boise,Hotspring,106,41'; put '44.28,-118.956,Joaquin Miller Hot Springs,Canyon City,Hotspring,104,40'; put '42.501,-119.693,Antelope Hot Springs,Adel,Hotspring,104,40'; put '45.129,-118.738,Hidaway Springs,Pendleton,Hotspring,100,38'; put '44.975,-118.044,Fisher Hot Springs,Canyon City,Hotspring,99,37'; put '44.033,-117.449,Bully Creek Spring,Baker,Hotspring,99,37'; put '42.93,-120.798,Pardon Warm Spring,Klamath Falls,Hotspring,76,24'; put '42.327,-118.602,Borax Lake (Hot Lake),Adel,Hotspring,97,36'; put '42.161,-121.627,Crystal Spring,Klamath Falls,Hotspring,78,26'; put '45.741,-118.233,Bingham Springs,Pendleton,Hotspring,93,34'; put '42.889,-118.898,Fivemile Spring (Hoghouse Hot Sprs,Adel,Hotspring,80,27'; put '43.54,-119.081,Millpond Hot Spring,Burns,Hotspring,79,26'; put '45.891,-116.873,Cook Creek Hot Spring,Grangeville,Hotspring,97,36'; put '45.295,-121.731,Swim Warm Springs,The Dalles,Hotspring,79,26'; put '42.04,-120.924,Warm Spring,Klamath Falls,Hotspring,92,33'; put '44.779,-117.811,Sam O Spring,Baker,Hotspring,80,27'; put '44.538,-117.417,Nelson Spring,Baker,Hotspring,80,27'; put '45.631,-119.703,Well Spring,Pendleton,Hotspring,80,27'; put '42.287,-119.867,Moss Ranch Springs,Adel,Hotspring,83,28'; put '45.061,-118.455,Warm Mineral Spring,Pendleton,Hotspring,83,28'; put '43.95,-119.634,Warm Springs,Burns,Hotspring,84,29'; put '45.295,-117.806,Warm Spring,Grangeville,Hotspring,85,29'; put '42.815,-118.899,Warm Springs,Adel,Hotspring,89,32'; put '43.452,-103.508,Hot Brook Springs,Hot Springs,Hotspring,75,24'; put '43.442,-103.481,Hot Springs,Hot Springs,Hotspring,87,31'; put '29.178,-102.953,Rio Grande Village Spring,Emory Peak,Hotspring,97,36'; put '30.823,-105.315,Indian Hot Springs,Marfa,Hotspring,117,47'; put '30.038,-104.598,Ruidosa Hot Springs,Marfa,Hotspring,113,45'; put '29.182,-102.992,Hot Springs,Emory Peak,Hotspring,106,41'; put '30.21,-104.562,Capote Springs,Marfa,Hotspring,99,37'; put '30.133,-104.602,Nixon Spring,Marfa,Hotspring,90,32'; put '29.787,-104.462,Springs (Las Cienegas),Presidio,Hotspring,86,30'; put '30.861,-105.34,Red Bull Spring,Marfa,Hotspring,99,37'; put '38.85,-112.49,Hatton Hot Spring,Richfield,Hotspring,100,38'; put '40.176,-111.801,Bird Island,Salt Lake City,Hotspring,86,30'; put '41.917,-111.958,Gancheff Spring,Ogden,Hotspring,88,31'; put '37.942,-112.438,Lefevre,Cedar City,Hotspring,90,32'; put '37.335,-113.687,Veyo Hot Spring,Cedar City,Hotspring,90,32'; put '40.332,-111.891,Fault Zone Spring,Salt Lake City,Hotspring,90,32'; put '40.146,-111.806,Lincoln Point Warm Springs,Salt Lake City,Hotspring,90,32'; put '38.186,-112.912,Us Blm,Richfield,Hotspring,91,33'; put '41.833,-112.454,Blue Creek Spring,Brigham City,Hotspring,82,28'; put '40.526,-111.488,Midway Hot Springs,Salt Lake City,Hotspring,100,38'; put '40.525,-111.468,Midway Hot Springs,Salt Lake City,Hotspring,104,40'; put '40.038,-111.529,Castilla Springs,Salt Lake City,Hotspring,104,40'; put '38.217,-112.904,Dotsons (Radium) Warm Spring,Richfield,Hotspring,91,33'; put '40.465,-109.221,Split Mountain Warm Springs,Vernal,Hotspring,86,30'; put '40.788,-112.017,Hobo Warm Spring,Tooele,Hotspring,84,29'; put '40.788,-111.899,Wasatch Hot Springs,Salt Lake City,Hotspring,108,42'; put '39.35,-113.515,Tule Spring,Delta,Hotspring,82,28'; put '39.424,-113.485,Coyote Spring,Delta,Hotspring,82,28'; put '39.842,-113.392,Fish Springs,Delta,Hotspring,82,28'; put '39.887,-113.413,North Springs,Delta,Hotspring,82,28'; put '41.756,-113.603,Warm Spring,Brigham City,Hotspring,81,27'; put '41.038,-111.656,Como Springs,Ogden,Hotspring,81,27'; put '40.397,-112.421,Morgans Warm Spring,Tooele,Hotspring,80,27'; put '39.464,-114.038,Gandy Warm Springs,Ely,Hotspring,81,27'; put '40.447,-110.828,Warm Springs,Salt Lake City,Hotspring,79,26'; put '37.7,-110.421,Warm Spring,Escalante,Hotspring,79,26'; put '40.502,-114.038,Blue Lake Spring,Elko,Hotspring,84,29'; put '38.503,-112.849,Roosevelt Hot Springs,Richfield,Hotspring,133,56'; put '38.774,-112.096,Richfield Warm Springs,Richfield,Hotspring,73,23'; put '40.488,-111.911,Crystal Hot Springs,Salt Lake City,Hotspring,187,86'; put '38.186,-113.197,Thermo Hot Springs,Richfield,Hotspring,185,85'; put '38.172,-113.204,Thermo Hot Springs,Richfield,Hotspring,181,83'; put '39.613,-112.729,"Baker (Abraham, Crater) Hot Spring",Delta,Hotspring,180,82'; put '38.639,-112.098,Red Hill Hot Spring,Richfield,Hotspring,171,77'; put '38.633,-112.107,Monroe (Cooper) Hot Springs,Richfield,Hotspring,169,76'; put '38.613,-112.202,Joseph Hot Springs,Richfield,Hotspring,147,64'; put '39.906,-113.43,Wilson Health Springs,Delta,Hotspring,142,61'; put '41.138,-112.175,Hooper Hot Springs,Brigham City,Hotspring,140,60'; put '41.338,-112.031,Utah Hot Springs,Brigham City,Hotspring,138,59'; put '38.864,-112.506,Meadow Hot Springs,Richfield,Hotspring,106,41'; put '40.815,-111.918,Becks Hot Spring,Salt Lake City,Hotspring,133,56'; put '37.189,-113.272,Dixie (Laverkin) Hot Springs,Cedar City,Hotspring,108,42'; put '41.659,-112.087,Crystal (Madsens) Hot Springs,Brigham City,Hotspring,129,54'; put '41.855,-112.158,Udy Hot Springs,Brigham City,Hotspring,124,51'; put '41.578,-112.23,Stinking Hot Springs,Brigham City,Hotspring,118,48'; put '40.517,-111.475,Midway Hot Spring,Salt Lake City,Hotspring,115,46'; put '40.536,-111.478,Warm Ditch Spring,Salt Lake City,Hotspring,115,46'; put '40.35,-111.905,Saratoga Hot Springs,Salt Lake City,Hotspring,111,44'; put '40.353,-111.895,Crater Hot Spring,Salt Lake City,Hotspring,111,44'; put '41.901,-112.999,Coyote Spring,Brigham City,Hotspring,109,43'; put '41.687,-113.986,Spring (Hot),Brigham City,Hotspring,108,42'; put '41.582,-112.256,Little Mountain Hot Spring,Brigham City,Hotspring,108,42'; put '41.822,-113.263,L.G. Carter Springs,Brigham City,Hotspring,77,25'; put '41.236,-111.924,Ogden Hot Spring,Ogden,Hotspring,135,57'; put '37.178,-113.634,Snow Spring,Cedar City,Hotspring,70,21'; put '38.34,-113.22,Woodhouse Spring,Richfield,Hotspring,72,22'; put '38.155,-112.901,Willow Spring,Richfield,Hotspring,72,22'; put '38.56,-112.578,Sulphurdale,Richfield,Hotspring,72,22'; put '38.981,-111.829,Salt Spring,Salina,Hotspring,72,22'; put '37.174,-112.535,Red Canyon,Cedar City,Hotspring,72,22'; put '41.808,-113.327,W.R. Carter Springs,Brigham City,Hotspring,70,21'; put '41.818,-113.311,Larson Springs,Brigham City,Hotspring,70,21'; put '41.829,-113.654,Head Spring,Brigham City,Hotspring,70,21'; put '40.653,-112.907,Redlum Spring,Tooele,Hotspring,70,21'; put '40.458,-111.929,Camp Williams,Salt Lake City,Hotspring,70,21'; put '40.647,-112.524,Grantsville Warm Springs,Tooele,Hotspring,77,25'; put '39.183,-111.691,Sterling (Peacock) Warm Spring,Price,Hotspring,72,22'; put '39.246,-111.645,Livingston Warm Springs,Price,Hotspring,73,23'; put '38.138,-112.863,Big Maple Spring,Richfield,Hotspring,70,21'; put '37.393,-113.61,Irvine Spring,Cedar City,Hotspring,70,21'; put '41.563,-113.954,Kimber (Rose) Spring,Brigham City,Hotspring,68,20'; put '41.614,-113.613,Warm Spring,Brigham City,Hotspring,68,20'; put '41.328,-111.826,Patio Springs,Ogden,Hotspring,68,20'; put '40.172,-112.426,Davis,Tooele,Hotspring,68,20'; put '40.118,-111.337,Diamond Fork Warm Springs,Salt Lake City,Hotspring,68,20'; put '39.249,-113.877,Knoll Springs,Delta,Hotspring,68,20'; put '39.403,-113.863,Twin Springs,Delta,Hotspring,68,20'; put '39.788,-111.881,Ray Lunt Spring,Price,Hotspring,68,20'; put '38.762,-112.87,Springs,Richfield,Hotspring,68,20'; put '38.77,-112.871,Coyote Spring,Richfield,Hotspring,68,20'; put '37.937,-112.424,Tebbs,Cedar City,Hotspring,68,20'; put '37.096,-113.447,Warner Valley Spring,Cedar City,Hotspring,70,21'; put '40.565,-112.738,Deseret Livestock South Springs,Tooele,Hotspring,73,23'; put '37.158,-113.399,Virgin River Spring,Cedar City,Hotspring,70,21'; put '39.899,-112.045,Springs,Delta,Hotspring,72,22'; put '38.603,-112.111,Johnson Warm Spring,Richfield,Hotspring,77,25'; put '41.722,-112.266,Bothwell Warm Springs,Brigham City,Hotspring,75,24'; put '40.538,-112.747,Deseret Livestock,Tooele,Hotspring,75,24'; put '40.733,-112.621,Utah Fish And Game Dept,Tooele,Hotspring,75,24'; put '40.228,-111.867,Warm Springs,Salt Lake City,Hotspring,75,24'; put '37.137,-113.513,Warm Spring,Cedar City,Hotspring,75,24'; put '37.138,-113.528,Green Spring,Cedar City,Hotspring,75,24'; put '37.166,-113.383,Berry Springs,Cedar City,Hotspring,75,24'; put '41.834,-112.054,Cutler Warm Spring,Brigham City,Hotspring,73,23'; put '40.614,-112.709,Horseshoe Springs,Tooele,Hotspring,73,23'; put '41.239,-112.413,Compton Spring,Brigham City,Hotspring,72,22'; put '40.743,-112.642,Big Warm Springs,Tooele,Hotspring,72,22'; put '40.558,-112.739,Deseret Livestock South Spring,Tooele,Hotspring,72,22'; put '40.39,-112.424,Russells Warm Springs,Tooele,Hotspring,72,22'; put '41.831,-113.391,Pugsley,Brigham City,Hotspring,73,23'; put '41.449,-112.442,Poulsen Spring (Salt),Brigham City,Hotspring,72,22'; put '40.167,-111.622,Wood Springs,Salt Lake City,Hotspring,73,23'; put '40.234,-111.865,Warm Springs,Salt Lake City,Hotspring,77,25'; put '39.955,-111.858,Goshen Warm Srings,Price,Hotspring,73,23'; put '39.334,-113.518,South Tule Spring,Delta,Hotspring,77,25'; put '39.616,-112.803,Fumarole Butte,Delta,Hotspring,73,23'; put '40.545,-111.928,East Jordan Canal,Salt Lake City,Hotspring,73,23'; put '41.643,-112.281,Springs,Brigham City,Hotspring,72,22'; put '37.29,-80.619,New River White Sulphur Springs,Bluefield,Hotspring,85,29'; put '37.997,-79.83,Hot Springs,Roanoke,Hotspring,106,41'; put '37.898,-79.462,Rockbridge Baths,Roanoke,Hotspring,72,22'; put '38.055,-79.78,Warm Springs,Charlottesvill,Hotspring,95,35'; put '37.963,-79.861,Healing Springs,Roanoke,Hotspring,86,30'; put '38.238,-79.65,Bragg Spring,Charlottesvill,Hotspring,75,24'; put '37.645,-80.238,Sweet Chalybeate Spring,Bluefield,Hotspring,75,24'; put '38.218,-79.673,Bolar Spring,Charlottesvill,Hotspring,73,23'; put '37.86,-79.988,Layton Spring,Roanoke,Hotspring,72,22'; put '37.87,-79.933,Falling Spring,Roanoke,Hotspring,77,25'; put '37.16,-80.806,Alum Springs,Bluefield,Hotspring,72,22'; put '46.852,-121.758,Mt Rainier Fumaroles,Yakima,Hotspring,162,72'; put '46.738,-121.562,Ohanapecosh Hot Springs,Yakima,Hotspring,122,50'; put '47.707,-121.155,Scenic Hot Springs,Wenatchee,Hotspring,122,50'; put '47.969,-123.864,Sol Duc Hot Springs,Seattle,Hotspring,122,50'; put '48.974,-119.475,Hot Lake,Okanogan,Hotspring,122,50'; put '45.658,-121.962,Moffetts (Bonneville) Hot Springs,The Dalles,Hotspring,97,36'; put '48.906,-119.455,Poison Lake,Okanogan,Hotspring,122,50'; put '45.701,-121.728,Collins Hot Springs,The Dalles,Hotspring,122,50'; put '47.484,-121.391,Goldmeyer Hot Springs,Wenatchee,Hotspring,127,53'; put '46.202,-121.492,Mount Adams Fumaroles,Yakima,Hotspring,150,66'; put '46.198,-122.197,Mt St Helens Fumaroles,Hoquiam,Hotspring,190,88'; put '48.789,-121.804,Dorr Fumarole Field,Concrete,Hotspring,194,90'; put '48.77,-121.813,Sherman Crater Fumaroles,Concrete,Hotspring,266,130'; put '45.723,-121.927,Rock Creek Hot Springs,The Dalles,Hotspring,H,H'; put '48.15,-121.062,Gamma Hot Springs,Concrete,Hotspring,140,60'; put '46.378,-122.265,Green River Soda Spring,Hoquiam,Hotspring,86,30'; put '46.575,-121.706,Packwood Hot Spring,Yakima,Hotspring,100,38'; put '47.201,-121.536,Lester Hot Springs,Wenatchee,Hotspring,120,49'; put '46.024,-118.771,Warm Springs Canyon Warm Spring,Walla Walla,Hotspring,72,22'; put '46.345,-121.6,Orr Creek Warm Springs,Yakima,Hotspring,72,22'; put '46.041,-121.181,Fish Hatchery Warm Spring,Yakima,Hotspring,75,24'; put '46.752,-121.814,Longmire Mineral Springs,Yakima,Hotspring,77,25'; put '47.892,-121.342,Garland Mineral Springs,Wenatchee,Hotspring,84,29'; put '46.452,-120.956,Simcoe Soda Springs,Yakima,Hotspring,90,32'; put '48.254,-121.17,Sulphur Creek Hot Springs,Concrete,Hotspring,99,37'; put '48.118,-121.192,Kennedy Hot Spring,Concrete,Hotspring,100,38'; put '48.763,-121.667,Baker Hot Spring,Concrete,Hotspring,108,42'; put '47.977,-123.682,Olympic Hot Springs,Seattle,Hotspring,118,48'; put '45.728,-121.8,St Martins Hot Springs,The Dalles,Hotspring,120,49'; put '45.821,-121.133,Klickitat Mineral Springs,The Dalles,Hotspring,81,27'; put '38.163,-79.975,Minnehaha Springs,Charlottesvill,Hotspring,70,21'; put '37.63,-80.24,Old Sweet Spring,Bluefield,Hotspring,73,23'; put '39.618,-78.23,Berkeley Springs,Cumberland,Hotspring,72,22'; put '38.605,-79.353,Thorn Spring,Charlottesvill,Hotspring,72,22'; put '39.471,-77.877,Swan Pond Spring,Baltimore,Hotspring,72,22'; put '44.29,-110.504,"Hot Springs,heart Lake Geyser Basi",Ashton,Hotspring,201,94'; put '44.691,-110.728,Geyser Springs Group,Ashton,Hotspring,201,94'; put '44.554,-110.812,Fountain Group,Ashton,Hotspring,201,94'; put '44.543,-110.859,Fairy Springs,Ashton,Hotspring,201,94'; put '44.485,-110.852,"Biscuit Basin, Sapphire Pool",Ashton,Hotspring,201,94'; put '44.48,-110.85,Cascade Group,Ashton,Hotspring,201,94'; put '44.46,-110.844,Black Sand Basin,Ashton,Hotspring,201,94'; put '44.459,-110.835,Myriad Group,Ashton,Hotspring,201,94'; put '44.307,-110.526,"Hot Springs,heart Lake Geyser Basi",Ashton,Hotspring,201,94'; put '44.354,-110.8,Shoshone Geyser Basin,Ashton,Hotspring,203,95'; put '44.568,-110.805,Quagmire Group,Ashton,Hotspring,203,95'; put '44.537,-110.801,"White Dome Geyser, Surprise Pool",Ashton,Hotspring,203,95'; put '44.52,-110.828,Flood Group,Ashton,Hotspring,203,95'; put '44.471,-110.843,"Daisy Group, Sentinel Geysers",Ashton,Hotspring,203,95'; put '44.466,-110.839,"Middle Group,tortoise Shell,inkwel",Ashton,Hotspring,203,95'; put '44.46,-110.828,"Geyser Hill Group, Old Faithful Ge",Ashton,Hotspring,203,95'; put '44.908,-110.393,Calcite Springs,Ashton,Hotspring,201,94'; put '44.417,-110.57,West Thumb Geyser Basin,Ashton,Hotspring,203,95'; put '44.459,-110.817,Southeastern Group,Ashton,Hotspring,198,92'; put '44.433,-110.581,Potts Hot Spring Basin,Ashton,Hotspring,203,95'; put '44.421,-110.952,Smoke Jumper Hot Springs,Ashton,Hotspring,198,92'; put '44.684,-110.753,Monument Geyser Basin,Ashton,Hotspring,197,92'; put '44.679,-110.746,Beryl Spring,Ashton,Hotspring,198,92'; put '44.544,-110.258,Turbid Springs,Ashton,Hotspring,198,92'; put '44.53,-110.297,Steamboat Springs,Ashton,Hotspring,198,92'; put '44.518,-110.813,"Hot Springs, Rabbit Creek Group",Ashton,Hotspring,198,92'; put '44.514,-110.828,Rabbit Creek Group,Ashton,Hotspring,198,92'; put '44.484,-110.873,Mystic Falls Springs,Ashton,Hotspring,198,92'; put '44.739,-110.324,Josephs Coat Springs,Ashton,Hotspring,199,93'; put '44.75,-110.714,Gas Vent,Ashton,Hotspring,H,H'; put '44.282,-110.506,Rustic Geyser,Ashton,Hotspring,199,93'; put '44.571,-110.811,Morning Mist Springs,Ashton,Hotspring,205,96'; put '44.733,-110.703,Cistern Spring,Ashton,Hotspring,199,93'; put '44.697,-110.724,Gibbon Hill Geyser,Ashton,Hotspring,199,93'; put '44.693,-110.738,Artists Paintpots,Ashton,Hotspring,199,93'; put '44.69,-110.384,Hot Springs on Bog Creek,Ashton,Hotspring,199,93'; put '44.526,-110.835,Excelsior Geyser Crater,Ashton,Hotspring,199,93'; put '44.418,-110.805,Lone Star Geyser,Ashton,Hotspring,199,93'; put '44.309,-110.654,Hot Springs on Lewis Lake,Ashton,Hotspring,199,93'; put '44.469,-110.828,Solitary Geyser,Ashton,Hotspring,198,92'; put '44.433,-110.813,Hot Springs,Ashton,Hotspring,H,H'; put '44.766,-110.3,Hot Springs,Ashton,Hotspring,H,H'; put '44.61,-110.438,Hot Springs,Ashton,Hotspring,H,H'; put '44.607,-110.617,Hot Springs East of Mary Lake,Ashton,Hotspring,H,H'; put '44.601,-110.632,Gas Vent East of Mary Lake,Ashton,Hotspring,H,H'; put '44.595,-110.622,Gas Vents Southeast of Mary Lake,Ashton,Hotspring,H,H'; put '44.572,-110.691,Hot Springs,Ashton,Hotspring,H,H'; put '44.553,-110.301,Beach Springs,Ashton,Hotspring,H,H'; put '44.551,-110.85,Springs on Fairy Creek,Ashton,Hotspring,H,H'; put '44.616,-110.616,Highland Hot Springs,Ashton,Hotspring,H,H'; put '44.438,-110.977,Hot Springs on Continental Divide,Ashton,Hotspring,H,H'; put '44.617,-110.432,Mud Geysers,Ashton,Hotspring,H,H'; put '44.404,-110.824,Hot Springs on Upper Firehole Rive,Ashton,Hotspring,H,H'; put '44.498,-109.193,Buffalo Bill Reservoir Springs,Cody,Hotspring,W,W'; put '44.495,-109.222,Buffalo Bill Reservoir Springs,Cody,Hotspring,W,W'; put '44.482,-109.204,Buffalo Bill Reservoir Springs,Cody,Hotspring,W,W'; put '44.841,-110.167,"Hot, on Lamar River",Ashton,Hotspring,W,W'; put '44.734,-110.029,Hot Springs,Ashton,Hotspring,W,W'; put '44.708,-110.471,Warm Spring,Ashton,Hotspring,W,W'; put '44.701,-110.036,Hot Springs,Ashton,Hotspring,W,W'; put '44.508,-110.832,Midway Picnic Ground,Ashton,Hotspring,H,H'; put '44.715,-110.555,Gas Vents,Ashton,Hotspring,H,H'; put '44.563,-110.834,River Group,Ashton,Hotspring,205,96'; put '44.544,-110.788,"Black Warrior Group, Shelf Spring",Ashton,Hotspring,205,96'; put '44.115,-110.684,Huckleberry Hot Springs,Ashton,Hotspring,B,B'; put '44.842,-110.732,Apollinaris Spring,Ashton,Hotspring,H,H'; put '44.825,-110.675,Gas Vents at Horseshoe Hill,Ashton,Hotspring,H,H'; put '44.781,-110.738,Steam Vents at Roaring Mountain,Ashton,Hotspring,H,H'; put '44.743,-110.242,Hot Spring Basin Group,Ashton,Hotspring,198,92'; put '44.752,-110.256,Hot Spring,Ashton,Hotspring,H,H'; put '44.612,-110.618,Gas Vent,Ashton,Hotspring,H,H'; put '44.741,-110.699,Gas Vent,Ashton,Hotspring,H,H'; put '44.566,-110.871,"Flat Cone Spring, Steep Cone",Ashton,Hotspring,205,96'; put '44.711,-110.468,Hot Springs,Ashton,Hotspring,H,H'; put '44.708,-110.461,Forest Springs,Ashton,Hotspring,H,H'; put '44.672,-110.236,Hot Springs,Ashton,Hotspring,H,H'; put '44.667,-110.282,Hot Springs,Ashton,Hotspring,H,H'; put '44.656,-110.572,Violet Springs,Ashton,Hotspring,H,H'; put '44.642,-110.238,Hot Spring,Ashton,Hotspring,H,H'; put '44.634,-110.234,The Mudkettles,Ashton,Hotspring,H,H'; put '44.634,-110.226,The Mushpots,Ashton,Hotspring,H,H'; put '44.532,-110.874,"Imperial Geyser, Spray Geyser",Ashton,Hotspring,192,89'; put '42.545,-106.725,Alcova Hot Springs,Casper,Hotspring,129,54'; put '42.75,-109.616,Steele Hot Springs,Lander,Hotspring,102,39'; put '43.37,-110.445,Granite Hot Spring,Driggs,Hotspring,106,41'; put '43.008,-108.835,Washakie Mineral Hot Springs,Thermopolis,Hotspring,111,44'; put '43.907,-110.198,North Buffalo Fork Springs,Driggs,Hotspring,113,45'; put '43.365,-110.443,Granite Falls Hot Springs,Driggs,Hotspring,112,45'; put '42.817,-110.997,Johnson Springs,Preston,Hotspring,115,46'; put '44.723,-110.358,Hot Spring on Moss Creek,Ashton,Hotspring,115,46'; put '44.681,-110.326,Hot Springs on Upper Sour Creek,Ashton,Hotspring,194,90'; put '41.45,-106.804,Saratoga Hot Springs,Rawlins,Hotspring,129,54'; put '44.671,-110.786,Secret Valley Hot Springs,Ashton,Hotspring,95,35'; put '44.625,-110.433,Mud Volcano,Ashton,Hotspring,131,55'; put '43.654,-108.194,Thermopolis Hot Springs,Thermopolis,Hotspring,133,56'; put '44.985,-110.689,Hot River,Ashton,Hotspring,136,58'; put '44.588,-110.341,Ebro Springs,Ashton,Hotspring,136,58'; put '44.55,-110.805,Fountain Paint Pot,Ashton,Hotspring,136,58'; put '44.169,-110.583,Snake Hot Springs,Ashton,Hotspring,136,58'; put '44.157,-110.699,Crawfish Creek Hot Springs,Ashton,Hotspring,136,58'; put '44.165,-110.723,Crawfish Creek Hot Springs,Ashton,Hotspring,138,59'; put '44.711,-110.741,Chocolate Pots,Ashton,Hotspring,124,51'; put '43.56,-109.732,Geyser (Warm Spring Creek Springs),Thermopolis,Hotspring,84,29'; put '43.489,-109.605,Jakeys Fork Spring,Thermopolis,Hotspring,68,20'; put '44.749,-108.188,Little Sheep Mountain Spring,Cody,Hotspring,68,20'; put '42.249,-104.781,Warm Springs (Immigrants Washtub),Torrington,Hotspring,70,21'; put '44.608,-108.138,Sheep Mountain Springs,Cody,Hotspring,70,21'; put '43.583,-108.213,Wind River Canyon Spring,Thermopolis,Hotspring,72,22'; put '42.702,-107.105,Horse Creek Springs,Casper,Hotspring,75,24'; put '44.511,-109.156,Needle Hot Springs,Cody,Hotspring,75,24'; put '43.52,-109.669,Little Warm Spring,Thermopolis,Hotspring,77,25'; put '43.3,-110.775,Astoria Mineral Hot Springs,Driggs,Hotspring,99,37'; put '43.543,-110.741,Abercrombie Warm Springs,Driggs,Hotspring,81,27'; put '44.513,-109.115,De Maris Springs,Cody,Hotspring,97,36'; put '42.665,-105.394,Douglas Hot Springs,Torrington,Hotspring,86,30'; put '43.471,-110.835,Boyles Hill Springs,Driggs,Hotspring,86,30'; put '43.282,-110.019,Kendall Warm Spring,Driggs,Hotspring,86,30'; put '44.662,-110.768,Iron Spring,Ashton,Hotspring,86,30'; put '42.492,-108.172,Sweetwater Station Warm Springs,Lander,Hotspring,90,32'; put '44.742,-110.579,Wolf Lake Springs,Ashton,Hotspring,91,33'; put '44.513,-109.129,Shoshone Hot Springs,Cody,Hotspring,95,35'; put '42.828,-110.999,Auburn Hot Springs,Preston,Hotspring,144,62'; put '43.639,-110.615,Kelly Warm Spring,Driggs,Hotspring,81,27'; put '44.532,-110.796,Five Sisters Springs,Ashton,Hotspring,192,89'; put '44.582,-110.314,Vermilion Springs,Ashton,Hotspring,140,60'; put '44.521,-110.275,Butte Springs,Ashton,Hotspring,187,86'; put '44.478,-110.867,Hillside Springs,Ashton,Hotspring,187,86'; put '44.752,-110.418,Hot Springs at Sevenmile Hole,Ashton,Hotspring,189,87'; put '44.401,-110.936,Hot Springs on Continental Divide,Ashton,Hotspring,189,87'; put '44.769,-110.269,Rainbow Springs,Ashton,Hotspring,190,88'; put '44.628,-110.433,Sulphur Caldron,Ashton,Hotspring,190,88'; put '44.702,-110.767,Sylvan Springs,Ashton,Hotspring,192,89'; put '44.529,-110.791,White Creek Group,Ashton,Hotspring,185,85'; put '44.564,-110.869,Queens Laundry,Ashton,Hotspring,192,89'; put '44.697,-110.375,Hot Springs on Bog Creek,Ashton,Hotspring,185,85'; put '44.285,-110.9,Bechler River Hot Springs,Ashton,Hotspring,194,90'; put '44.797,-110.725,Amphitheater Springs,Ashton,Hotspring,196,91'; put '44.766,-110.429,Washburn Hot Springs,Ashton,Hotspring,196,91'; put '44.756,-110.308,Coffee Pot Hot Springs,Ashton,Hotspring,196,91'; put '44.591,-110.321,Hot Springs at Sulphur Hills,Ashton,Hotspring,196,91'; put '44.556,-110.832,River Group,Ashton,Hotspring,196,91'; put '44.422,-110.574,West Thumb Geyser Basin,Ashton,Hotspring,196,91'; put '44.786,-110.74,Semi-Centennial Geyser,Ashton,Hotspring,198,92'; put '44.653,-110.482,Sulphur Springs,Ashton,Hotspring,194,89'; put '44.41,-110.953,Summit Lake Hot Springs,Ashton,Hotspring,162,72'; put '44.761,-110.73,Bijah Spring,Ashton,Hotspring,198,92'; put '44.781,-110.699,Whiterock Springs,Ashton,Hotspring,144,62'; put '44.739,-110.258,Hot Spring Basin Group,Ashton,Hotspring,153,67'; put '44.754,-110.403,Sevenmile Hole,Ashton,Hotspring,154,68'; put '44.276,-110.636,Hot Springs on Lewis Lake,Ashton,Hotspring,154,68'; put '44.598,-110.236,Hot Springs In Pelican Valley,Ashton,Hotspring,156,69'; put '44.142,-110.656,South Entrance Hot Springs,Ashton,Hotspring,156,69'; put '44.753,-110.724,"Roadside Springs, Frying Pan Sprin",Ashton,Hotspring,158,70'; put '44.733,-110.712,Horseshoe Spring,Ashton,Hotspring,187,86'; put '43.958,-110.696,Jackson Lake Hot Springs,Driggs,Hotspring,162,72'; put '44.187,-110.726,Hot Springs,Ashton,Hotspring,142,61'; put '44.967,-110.708,Mammoth Hot Springs,Ashton,Hotspring,163,73'; put '44.475,-110.843,Morning Glory Pool,Ashton,Hotspring,163,73'; put '44.204,-110.486,Hot Springs on Upper Snake River,Ashton,Hotspring,167,75'; put '44.299,-110.517,"Heart Lake Geyser Basin, Middle Gr",Ashton,Hotspring,174,79'; put '44.671,-110.29,Ponuntpa Springs Group,Ashton,Hotspring,180,82'; put '44.244,-111.022,Boundary Creek Hot Springs,Ashton,Hotspring,181,83'; put '44.414,-110.817,"Lone Star Geyser Basin, Footbridge",Ashton,Hotspring,183,84'; put '44.722,-110.701,Echinus Geyser,Ashton,Hotspring,185,85'; put '44.461,-110.854,Emerald Pool,Ashton,Hotspring,158,70'; put ';;;;'; put 'run;'; put '* ServiceInit end;'; put '* Service start;'; put '%mp_abort(iftrue= (%mf_isdir(&path) = 0)'; put ',mac=&_program..sas'; put ',msg=%str(File path (&path) is not a valid directory)'; put ')'; put '%mp_webin()'; put '/* setup the output destination */'; put '%let outloc=&path/&_webin_filename1;'; put 'filename fileout "&outloc";'; put '/* send the data */'; put '%mp_binarycopy(inref=&_webin_fileref1, outref=fileout)'; put '%mp_abort(iftrue= (&syscc ge 4)'; put ',mac=&_program..sas'; put ',msg=%str(Error occurred reading &_webin_fileref1 and writing to &outloc)'; put ')'; put '/* success - lets create a directory listing */'; put '%mp_dirlist(path=&path,outds=dirlist)'; put 'proc sort data=dirlist;'; put 'by filepath;'; put 'run;'; put '/* now send it back to the frontend */'; put '%webout(OPEN)'; put '%webout(OBJ,dirlist)'; put '%webout(CLOSE)'; put '* Service end;'; run; %mm_createwebservice(path=&appLoc/&path, name=&service, code=sascode, server=&serverName, replace=yes) filename sascode clear;