1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no, shrink-to-fit=no"> 6 <meta name="csrf-token" content="rbNHE6FkrR9ANpD2w3XTVQuqEnZ1EOb3RNo49jAa"> 7 8 <title>Rodnik.today â public water sources map</title> 9<meta name="description" content="Explore public springs, wells, taps, fountains, and other water sources with recent community reports."> 10<link rel="canonical" href="https://rodnik.today/login"> 11 12 <meta name="robots" content="noindex, nofollow"> 13 14<meta property="og:type" content="website"> 15<meta property="og:title" content="Rodnik.today â public water sources map"> 16<meta property="og:description" content="Explore public springs, wells, taps, fountains, and other water sources with recent community reports."> 17<meta property="og:url" content="https://rodnik.today/login"> 18<meta property="og:locale" content="en_US"> 19 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png"> 20 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png"> 21 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png"> 22 <link rel="manifest" href="/site.webmanifest"> 23 <link rel="mask-icon" href="/safari-pinned-tab.svg" color="#5bbad5"> 24 <meta name="msapplication-TileColor" content="#ffffff"> 25 <meta name="theme-color" content="#ffffff"> 26 27 <!-- Fonts --> 28 29 <!-- Styles --> 30 <!-- Livewire Styles --><style >[wire\:loading][wire\:loading], [wire\:loading\.delay][wire\:loading\.delay], [wire\:loading\.list-item][wire\:loading\.list-item], [wire\:loading\.inline-block][wire\:loading\.inline-block], [wire\:loading\.inline][wire\:loading\.inline], [wire\:loading\.block][wire\:loading\.block], [wire\:loading\.flex][wire\:loading\.flex], [wire\:loading\.table][wire\:loading\.table], [wire\:loading\.grid][wire\:loading\.grid], [wire\:loading\.inline-flex][wire\:loading\.inline-flex] {display: none;}[wire\:loading\.delay\.none][wire\:loading\.delay\.none], [wire\:loading\.delay\.shortest][wire\:loading\.delay\.shortest], [wire\:loading\.delay\.shorter][wire\:loading\.delay\.shorter], [wire\:loading\.delay\.short][wire\:loading\.delay\.short], [wire\:loading\.delay\.default][wire\:loading\.delay\.default], [wire\:loading\.delay\.long][wire\:loading\.delay\.long], [wire\:loading\.delay\.longer][wire\:loading\.delay\.longer], [wire\:loading\.delay\.longest][wire\:loading\.delay\.longest] {display: none;}[wire\:offline][wire\:offline] {display: none;}[wire\:dirty]:not(textarea):not(input):not(select) {display: none;}:root {--livewire-progress-bar-color: #2563eb;}[x-cloak] {display: none !important;}[wire\:cloak] {display: none !important;}dialog#livewire-error::backdrop {background-color: rgba(0, 0, 0, .6);}</style> 31 32 <!-- Scripts --> 33 34
34<script defer src="/js/@alpinejs/[email protected]"></script>
34 35
35<script defer src="/js/@alpinejs/[email protected]"></script>
35 36 <link rel="preload" as="style" href="https://rodnik.today/build/assets/app-vKJdd-JZ.css" /><link rel="preload" as="style" href="https://rodnik.today/build/assets/app-BUyVyjDW.css" /><link rel="modulepreload" as="script" href="https://rodnik.today/build/assets/app-CycT0mrL.js" /><link rel="modulepreload" as="script" href="https://rodnik.today/build/assets/rolldown-runtime-BHe-jwch.js" /><link rel="modulepreload" as="script" href="https://rodnik.today/build/assets/exifr-CEN3i9mE.js" /><link rel="modulepreload" as="script" href="https://rodnik.today/build/assets/turf-Cul8zmX7.js" /><link rel="modulepreload" as="script" href="https://rodnik.today/build/assets/ol-Djqkn0K8.js" /><link rel="stylesheet" href="https://rodnik.today/build/assets/app-vKJdd-JZ.css" data-navigate-track="reload" /><link rel="stylesheet" href="https://rodnik.today/build/assets/app-BUyVyjDW.css" data-navigate-track="reload" />
36<script type="module" src="https://rodnik.today/build/assets/app-CycT0mrL.js" data-navigate-track="reload"></script>
vendor: 1 bytes, line 36
36
37<script> 38 window.addEventListener('load', () => window.setTimeout(() => { 39 const makeLink = (asset) => { 40 const link = document.createElement('link') 41 42 Object.keys(asset).forEach((attribute) => { 43 link.setAttribute(attribute, asset[attribute]) 44 }) 45 46 return link 47 } 48 49 const loadNext = (assets, count) => window.setTimeout(() => { 50 if (count > assets.length) { 51 count = assets.length 52 53 if (count === 0) { 54 return 55 } 56 } 57 58 const fragment = new DocumentFragment 59 60 while (count > 0) { 61 const link = makeLink(assets.shift()) 62 fragment.append(link) 63 count-- 64 65 if (assets.length) { 66 link.onload = () => loadNext(assets, 1) 67 link.onerror = () => loadNext(assets, 1) 68 } 69 } 70 71 document.head.append(fragment) 72 }) 73 74 loadNext(JSON.parse('[{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022script\u0022,\u0022href\u0022:\u0022https:\\\/\\\/rodnik.today\\\/build\\\/assets\\\/heic2any-CyPDSdSN.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022},{\u0022rel\u0022:\u0022prefetch\u0022,\u0022as\u0022:\u0022script\u0022,\u0022href\u0022:\u0022https:\\\/\\\/rodnik.today\\\/build\\\/assets\\\/photoswipe.esm-CuKPvLY9.js\u0022,\u0022fetchpriority\u0022:\u0022low\u0022}]'), 1) 75 })) 76</script>
76
76<script data-navigate-once="true">window.livewireScriptConfig = {"csrf":"rbNHE6FkrR9ANpD2w3XTVQuqEnZ1EOb3RNo49jAa","uri":"https:\/\/rodnik.today\/livewire-9e2eeec0\/update","moduleUrl":"https:\/\/rodnik.today\/livewire-9e2eeec0","progressBar":"","nonce":""};</script>
76 77 78 <!-- Yandex.Metrika counter --> 79
79<script type="text/javascript" > 80 (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; 81 var z = null;m[i].l=1*new Date(); 82 for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }} 83 k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) 84 (window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym"); 85 86 ym(90143259, "init", { 87 clickmap:true, 88 trackLinks:true, 89 accurateTrackBounce:true 90 }); 91 92 </script>
92 93 <noscript><div><img src="https://mc.yandex.ru/watch/90143259" style="position:absolute; left:-9999px;" alt="" /></div></noscript> 94 <!-- /Yandex.Metrika counter --> 95 </head> 96 <body class="w-full min-h-screen bg-stone-100 flex flex-col" 97 x-data="{ dragover: false, dragoverTimeout: null }" 98 @dragover.window="dragover = true; if (dragoverTimeout) {clearTimeout(dragoverTimeout)}" 99 @dragleave.window="dragoverTimeout = setTimeout(() => { dragover = false; }, 10)" 100 @drop="dragover = false; if (dragoverTimeout) {clearTimeout(dragoverTimeout)}" 101 x-bind:class="{ 'dragover': dragover }" 102 > 103 <div class="grow-0"> 104 <nav class=""> 105 <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> 106 <div class="flex justify-between items-center flex-nowrap pt-4 pb-2 107 108"> 109 <div class="flex items-center flex-wrap"> 110 <!-- Logo --> 111 <div class="shrink-0 flex items-center"> 112 <a href="/" data-rodnik-navigate class="flex mr-2 sm:mr-4 cursor-pointer"> 113 <img src="/rodnik-nunito-logo.svg" class="h-6" alt="Rodnik.today" /> 114 </a> 115 </div> 116 </div> 117 118 <div class="flex items-center gap-2 sm:gap-3"> 119 <div 120 x-data="{ languageMenuOpen: false }" 121 @keydown.escape.window="languageMenuOpen = false" 122 @click.outside="languageMenuOpen = false" 123 class="relative" 124> 125 <button 126 type="button" 127 @click="languageMenuOpen = ! languageMenuOpen" 128 :aria-expanded="languageMenuOpen ? 'true' : 'false'" 129 aria-haspopup="listbox" 130 aria-label="Language" 131 class="flex items-center gap-1 rounded-md px-2 py-1 text-xs font-semibold text-gray-600 transition-colors hover:bg-stone-200 hover:text-gray-950 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-blue-700" 132 > 133 <span>EN</span> 134 <svg 135 class="h-3 w-3 shrink-0 transition-transform" 136 :class="languageMenuOpen && 'rotate-180'"
137 viewBox="0 0 20 20" 138 fill="currentColor" 139 aria-hidden="true" 140 > 141 <path fill-rule="evenodd" d="M5.22 7.22a.75.75 0 0 1 1.06 0L10 10.94l3.72-3.72a.75.75 0 1 1 1.06 1.06l-4.25 4.25a.75.75 0 0 1-1.06 0L5.22 8.28a.75.75 0 0 1 0-1.06Z" clip-rule="evenodd" /> 142 </svg> 143 </button> 144 145 <div 146 x-cloak 147 x-show="languageMenuOpen" 148 x-transition.opacity.duration.100ms 149 role="listbox" 150 class="absolute top-full z-30 mt-1 w-40 overflow-hidden rounded-lg border border-stone-300 bg-white p-1 shadow-lg 151 right-0 origin-top-right" 152 > 153 <form 154 data-rodnik-locale="en" 155 method="POST" 156 action="https://rodnik.today/locale/en" 157 x-data 158 @submit="$refs.localeRedirect.value = $refs.localeRedirect.value.split(/[?#]/)[0] 159 + window.location.search 160 + window.location.hash" 161 162> 163 <input type="hidden" name="_token" value="rbNHE6FkrR9ANpD2w3XTVQuqEnZ1EOb3RNo49jAa" autocomplete="off"> <input type="hidden" name="redirect" x-ref="localeRedirect" value="/login"> 164 <button 165 type="submit" 166 role="option" 167 aria-selected="true" 168 title="Switch to English" 169 class="flex w-full items-center justify-between gap-2 rounded-md px-3 py-2 text-left text-sm font-medium transition-colors hover:bg-stone-200 hover:text-gray-950 170 bg-stone-100 text-gray-900" 171 > 172 <span>English</span> 173 <svg class="h-4 w-4 shrink-0 text-blue-700" viewBox="0 0 20 20" fill="currentColor" aria-hidden="true"> 174 <path fill-rule="evenodd" d="M16.704 5.29a.75.75 0 0 1 .006 1.06l-7.5 7.6a.75.75 0 0 1-1.07-.004l-3.85-3.9a.75.75 0 1 1 1.068-1.054l3.317 3.36 6.968-7.062a.75.75 0 0 1 1.06-.006Z" clip-rule="evenodd" /> 175 </svg> 176 </button> 177</form> 178 <form 179 data-rodnik-locale="ru" 180 method="POST" 181 action="https://rodnik.today/locale/ru" 182 x-data 183 @submit="$refs.localeRedirect.value = $refs.localeRedirect.value.split(/[?#]/)[0] 184 + window.location.search 185 + window.location.hash" 186 187> 188 <input type="hidden" name="_token" value="rbNHE6FkrR9ANpD2w3XTVQuqEnZ1EOb3RNo49jAa" autocomplete="off"> <input type="hidden" name="redirect" x-ref="localeRedirect" value="/login"> 189 <button 190 type="submit" 191 role="option" 192 aria-selected="false" 193 title="Switch to Ð ÑÑÑкий" 194 class="flex w-full items-center justify-between gap-2 rounded-md px-3 py-2 text-left text-sm font-medium transition-colors hover:bg-stone-200 hover:text-gray-950 195 text-gray-600" 196 > 197 <span>Ð ÑÑÑкий</span> 198 </button> 199</form> 200 </div> 201</div> 202 <div class="flex items-center gap-3 sm:gap-4"> 203 <a href="https://rodnik.today/login" data-rodnik-navigate class="block text-sm text-gray-500">Login</a> 204 <a href="https://rodnik.today/register" data-rodnik-navigate class="block text-sm text-gray-500">Register</a> 205 </div> 206 </div> 207</div> 208 </div> 209 </nav> 210 </div> 211 <div class="grow h-full flex flex-col"> 212 <div class="h-full flex flex-col justify-center items-center pt-6 sm:pt-0 bg-gray-100"> 213 <div> 214 <a data-rodnik-navigate href="/" aria-label="Rodnik.today"> 215 <svg aria-hidden="true" focusable="false" class="w-16 h-16" width="387px" height="380px" viewBox="0 0 387 380" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> 216 <!-- Generator: Sketch 57.1 (83088) - https://sketch.com --> 217 <g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd"> 218 <g id="Artboard" transform="translate(-872.000000, -879.000000)" fill="#67BFFF" fill-rule="nonzero"> 219 <g id="Group" transform="translate(538.000000, 251.000000)"> 220 <g id="Combined-Shape-2" transform="translate(334.000000, 628.000000)"> 221 <path d="M193.5,0 C300.367099,0 387,85.0658975 387,190 C387,294.934102 300.367099,380 193.5,380 C86.6329009,380 0,294.934102 0,190 C0,85.0658975 86.6329009,0 193.5,0 Z M194.716981,102.307692 C146.324332,102.307692 107.09434,141.023582 107.09434,188.782051 C107.09434,236.540521 146.324332,275.25641 194.716981,275.25641 C243.10963,275.25641 282.339623,236.540521 282.339623,188.782051 C282.339623,141.023582 243.10963,102.307692 194.716981,102.307692 Z" id="Combined-Shape"></path> 222 </g> 223 </g> 224 </g> 225 </g> 226 </svg> 227</a> 228 </div> 229 230 <div class="w-full sm:max-w-md mt-6 px-6 py-4 bg-white shadow-md overflow-hidden sm:rou
230nded-lg"> 231 <form method="POST" action="https://rodnik.today/login"> 232 <input type="hidden" name="_token" value="rbNHE6FkrR9ANpD2w3XTVQuqEnZ1EOb3RNo49jAa" autocomplete="off"> 233 <div> 234 <label class="block font-medium text-sm text-gray-700" for="email"> 235 Email 236</label> 237 <input class="border-gray-300 focus:border-indigo-300 focus:ring-3 focus:ring-indigo-200 focus:ring-opacity-50 rounded-md shadow-xs block mt-1 w-full" id="email" type="email" name="email" required="required" autofocus="autofocus"> 238 </div> 239 240 <div class="mt-4"> 241 <label class="block font-medium text-sm text-gray-700" for="password"> 242 Password 243</label> 244 <input class="border-gray-300 focus:border-indigo-300 focus:ring-3 focus:ring-indigo-200 focus:ring-opacity-50 rounded-md shadow-xs block mt-1 w-full" id="password" type="password" name="password" required="required" autocomplete="current-password"> 245 </div> 246 247 <input type="hidden" id="remember_me" name="remember" value="true" /> 248 249 250 251 <div class="flex items-center justify-end mt-4"> 252 <a data-rodnik-navigate class="underline text-sm text-gray-600 hover:text-gray-900" href="https://rodnik.today/forgot-password"> 253 Forgot your password? 254 </a> 255 256 <button type="submit" class="inline-flex items-center px-4 py-2 bg-gray-800 border border-transparent rounded-md font-semibold text-xs text-white uppercase tracking-widest hover:bg-gray-700 active:bg-gray-900 focus:outline-hidden focus:border-gray-900 focus:ring-3 focus:ring-gray-300 disabled:opacity-25 transition ml-4"> 257 Log in 258</button> 259 </div> 260 </form> 261 </div> 262</div> 263 </div> 264
264<script id="rodnik-translations" type="application/json">{"locale":"en","ownerId":null,"publicBaseUrl":"https:\/\/rodnik.today","mapTranslations":{"track_uploading":"Uploading track\u2026","track_uploaded":"Track ready to share","track_upload_failed":"Track upload failed","track_deleted":"This track was deleted. The map still works without it.","retry_track":"Try again","guest_upload_notice":"Guest uploads cannot be deleted later.","filters":{"all":"All water sources","springs":"Springs","water_wells":"Water wells","water_taps":"Water taps","drinking_water_sources":"Drinking water sources","fountains":"Fountains","other":"Other","with_reports":"Only with reports","along_track":"Only along uploaded track"},"layers":{"terrain":"Terrain","satellite":"Satellite","strava_heatmap":"Strava Heatmap","osm_traces":"OpenStreetMap Traces"},"upload_track":"Upload GPX track","remove_track":"Remove track","upload_new_track_or_photo":"Upload a new track or photo","download_waypoints":"Download water sources as GPX waypoints","drop_track":"Drop a GPX track","display_route":"to display the route on the map","or":"or","drop_photo":"Drop a photo","locate_from_photo":"to locate the map using its coordinates"},"translations":{"shared_track_deleted":"This track was deleted. The map still works without it.","shared_track_failed":"The track could not be loaded or saved. Please try again.","shared_track_timed_out":"The track request timed out. Please try again.","shared_track_too_large":"The track is too large. Please choose a file smaller than 10 MiB.","shared_track_too_complex":"The track is too complex to share. Simplify the track or reduce its metadata.","upload_failed":"Upload failed","upload_timed_out":"Upload timed out","network_error":"Network error","upload_cancelled":"Upload cancelled","please_upload_gpx":"Please upload a GPX file","photo_no_coordinates":"This photo doesn\u0027t have coordinates","zoom_in_to_export":"Please zoom in to export GPX","zoom_in":"Zoom in","zoom_out":"Zoom out","reset_rotation":"Reset rotation","attributions":"Attributions","photo_close":"Close","photo_zoom":"Zoom","photo_previous":"Previous","photo_next":"Next","photo_load_error":"The image cannot be loaded"}}</script>
264 265 </body> 266</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.