CINXE.COM

GeoLit | Devpost

<!DOCTYPE html> <!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7 lte-ie9"> <![endif]--> <!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8 lte-ie9"> <![endif]--> <!--[if IE 8]> <html class="no-js lt-ie9 lte-ie9"> <![endif]--> <!--[if IE 9]> <html class="no-js lte-ie9"> <![endif]--> <!--[if gt IE 9]><!--> <html lang="en" class="no-js" xmlns:fb="http://ogp.me/ns/fb#" xmlns:fb="http://www.facebook.com/2008/fbml" xmlns:og="http://opengraphprotocol.org/schema/" itemscope="itemscope" itemtype="http://schema.org/SoftwareApplication"> <!--<![endif]--> <head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# challengepost: http://ogp.me/ns/fb/challengepost#"> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-WCFRZ3V');</script> <!-- End Google Tag Manager --> <script type="text/javascript"> window.awsWafCookieDomainList = ['devpost.com'] </script> <script type="text/javascript" src="https://1723d2289425.us-east-1.sdk.awswaf.com/1723d2289425/7d12beff1256/challenge.js" defer></script> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <script>window.NREUM||(NREUM={});NREUM.info={"beacon":"bam.nr-data.net","errorBeacon":"bam.nr-data.net","licenseKey":"f9082fa052","applicationID":"7341974","transactionName":"IQpdERFeXFVVRhpbCw8AHBYMV0ROUUZQQEsRDVwS","queueTime":1,"applicationTime":158,"agent":""}</script> <script>(window.NREUM||(NREUM={})).init={ajax:{deny_list:["bam.nr-data.net"]}};(window.NREUM||(NREUM={})).loader_config={licenseKey:"f9082fa052",applicationID:"7341974"};;/*! For license information please see nr-loader-rum-1.283.2.min.js.LICENSE.txt */ (()=>{var e,t,r={122:(e,t,r)=>{"use strict";r.d(t,{a:()=>i});var n=r(944);function i(e,t){try{if(!e||"object"!=typeof e)return(0,n.R)(3);if(!t||"object"!=typeof t)return(0,n.R)(4);const r=Object.create(Object.getPrototypeOf(t),Object.getOwnPropertyDescriptors(t)),o=0===Object.keys(r).length?e:r;for(let a in o)if(void 0!==e[a])try{if(null===e[a]){r[a]=null;continue}Array.isArray(e[a])&&Array.isArray(t[a])?r[a]=Array.from(new Set([...e[a],...t[a]])):"object"==typeof e[a]&&"object"==typeof t[a]?r[a]=i(e[a],t[a]):r[a]=e[a]}catch(e){(0,n.R)(1,e)}return r}catch(e){(0,n.R)(2,e)}}},555:(e,t,r)=>{"use strict";r.d(t,{Vp:()=>c,fn:()=>s,x1:()=>u});var n=r(384),i=r(122);const o={beacon:n.NT.beacon,errorBeacon:n.NT.errorBeacon,licenseKey:void 0,applicationID:void 0,sa:void 0,queueTime:void 0,applicationTime:void 0,ttGuid:void 0,user:void 0,account:void 0,product:void 0,extra:void 0,jsAttributes:{},userAttributes:void 0,atts:void 0,transactionName:void 0,tNamePlain:void 0},a={};function s(e){try{const t=c(e);return!!t.licenseKey&&!!t.errorBeacon&&!!t.applicationID}catch(e){return!1}}function c(e){if(!e)throw new Error("All info objects require an agent identifier!");if(!a[e])throw new Error("Info for ".concat(e," was never set"));return a[e]}function u(e,t){if(!e)throw new Error("All info objects require an agent identifier!");a[e]=(0,i.a)(t,o);const r=(0,n.nY)(e);r&&(r.info=a[e])}},217:(e,t,r)=>{"use strict";r.d(t,{D0:()=>m,gD:()=>v,xN:()=>h});r(860).K7.genericEvents;const n="experimental.marks",i="experimental.measures",o="experimental.resources",a=e=>{if(!e||"string"!=typeof e)return!1;try{document.createDocumentFragment().querySelector(e)}catch{return!1}return!0};var s=r(614),c=r(944),u=r(384),l=r(122);const d="[data-nr-mask]",f=()=>{const e={feature_flags:[],experimental:{marks:!1,measures:!1,resources:!1},mask_selector:"*",block_selector:"[data-nr-block]",mask_input_options:{color:!1,date:!1,"datetime-local":!1,email:!1,month:!1,number:!1,range:!1,search:!1,tel:!1,text:!1,time:!1,url:!1,week:!1,textarea:!1,select:!1,password:!0}};return{ajax:{deny_list:void 0,block_internal:!0,enabled:!0,autoStart:!0},distributed_tracing:{enabled:void 0,exclude_newrelic_header:void 0,cors_use_newrelic_header:void 0,cors_use_tracecontext_headers:void 0,allowed_origins:void 0},get feature_flags(){return e.feature_flags},set feature_flags(t){e.feature_flags=t},generic_events:{enabled:!0,autoStart:!0},harvest:{interval:30},jserrors:{enabled:!0,autoStart:!0},logging:{enabled:!0,autoStart:!0},metrics:{enabled:!0,autoStart:!0},obfuscate:void 0,page_action:{enabled:!0},page_view_event:{enabled:!0,autoStart:!0},page_view_timing:{enabled:!0,autoStart:!0},performance:{get capture_marks(){return e.feature_flags.includes(n)||e.experimental.marks},set capture_marks(t){e.experimental.marks=t},get capture_measures(){return e.feature_flags.includes(i)||e.experimental.measures},set capture_measures(t){e.experimental.measures=t},capture_detail:!0,resources:{get enabled(){return e.feature_flags.includes(o)||e.experimental.resources},set enabled(t){e.experimental.resources=t},asset_types:[],first_party_domains:[],ignore_newrelic:!0}},privacy:{cookies_enabled:!0},proxy:{assets:void 0,beacon:void 0},session:{expiresMs:s.wk,inactiveMs:s.BB},session_replay:{autoStart:!0,enabled:!1,preload:!1,sampling_rate:10,error_sampling_rate:100,collect_fonts:!1,inline_images:!1,fix_stylesheets:!0,mask_all_inputs:!0,get mask_text_selector(){return e.mask_selector},set mask_text_selector(t){a(t)?e.mask_selector="".concat(t,",").concat(d):""===t||null===t?e.mask_selector=d:(0,c.R)(5,t)},get block_class(){return"nr-block"},get ignore_class(){return"nr-ignore"},get mask_text_class(){return"nr-mask"},get block_selector(){return e.block_selector},set block_selector(t){a(t)?e.block_selector+=",".concat(t):""!==t&&(0,c.R)(6,t)},get mask_input_options(){return e.mask_input_options},set mask_input_options(t){t&&"object"==typeof t?e.mask_input_options={...t,password:!0}:(0,c.R)(7,t)}},session_trace:{enabled:!0,autoStart:!0},soft_navigations:{enabled:!0,autoStart:!0},spa:{enabled:!0,autoStart:!0},ssl:void 0,user_actions:{enabled:!0,elementAttributes:["id","className","tagName","type"]}}},g={},p="All configuration objects require an agent identifier!";function m(e){if(!e)throw new Error(p);if(!g[e])throw new Error("Configuration for ".concat(e," was never set"));return g[e]}function h(e,t){if(!e)throw new Error(p);g[e]=(0,l.a)(t,f());const r=(0,u.nY)(e);r&&(r.init=g[e])}function v(e,t){if(!e)throw new Error(p);var r=m(e);if(r){for(var n=t.split("."),i=0;i<n.length-1;i++)if("object"!=typeof(r=r[n[i]]))return;r=r[n[n.length-1]]}return r}},371:(e,t,r)=>{"use strict";r.d(t,{V:()=>f,f:()=>d});var n=r(122),i=r(384),o=r(154),a=r(324);let s=0;const c={buildEnv:a.F3,distMethod:a.Xs,version:a.xv,originTime:o.WN},u={customTransaction:void 0,disabled:!1,isolatedBacklog:!1,loaderType:void 0,maxBytes:3e4,onerror:void 0,ptid:void 0,releaseIds:{},appMetadata:{},session:void 0,denyList:void 0,timeKeeper:void 0,obfuscator:void 0,harvester:void 0},l={};function d(e){if(!e)throw new Error("All runtime objects require an agent identifier!");if(!l[e])throw new Error("Runtime for ".concat(e," was never set"));return l[e]}function f(e,t){if(!e)throw new Error("All runtime objects require an agent identifier!");l[e]={...(0,n.a)(t,u),...c},Object.hasOwnProperty.call(l[e],"harvestCount")||Object.defineProperty(l[e],"harvestCount",{get:()=>++s});const r=(0,i.nY)(e);r&&(r.runtime=l[e])}},324:(e,t,r)=>{"use strict";r.d(t,{F3:()=>i,Xs:()=>o,xv:()=>n});const n="1.283.2",i="PROD",o="CDN"},154:(e,t,r)=>{"use strict";r.d(t,{OF:()=>c,RI:()=>i,WN:()=>l,bv:()=>o,gm:()=>a,mw:()=>s,sb:()=>u});var n=r(863);const i="undefined"!=typeof window&&!!window.document,o="undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self.navigator instanceof WorkerNavigator||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis.navigator instanceof WorkerNavigator),a=i?window:"undefined"!=typeof WorkerGlobalScope&&("undefined"!=typeof self&&self instanceof WorkerGlobalScope&&self||"undefined"!=typeof globalThis&&globalThis instanceof WorkerGlobalScope&&globalThis),s=Boolean("hidden"===a?.document?.visibilityState),c=/iPad|iPhone|iPod/.test(a.navigator?.userAgent),u=c&&"undefined"==typeof SharedWorker,l=((()=>{const e=a.navigator?.userAgent?.match(/Firefox[/\s](\d+\.\d+)/);Array.isArray(e)&&e.length>=2&&e[1]})(),Date.now()-(0,n.t)())},687:(e,t,r)=>{"use strict";r.d(t,{Ak:()=>c,Ze:()=>d,x3:()=>u});var n=r(836),i=r(606),o=r(860),a=r(646);const s={};function c(e,t){const r={staged:!1,priority:o.P3[t]||0};l(e),s[e].get(t)||s[e].set(t,r)}function u(e,t){e&&s[e]&&(s[e].get(t)&&s[e].delete(t),g(e,t,!1),s[e].size&&f(e))}function l(e){if(!e)throw new Error("agentIdentifier required");s[e]||(s[e]=new Map)}function d(e="",t="feature",r=!1){if(l(e),!e||!s[e].get(t)||r)return g(e,t);s[e].get(t).staged=!0,f(e)}function f(e){const t=Array.from(s[e]);t.every((([e,t])=>t.staged))&&(t.sort(((e,t)=>e[1].priority-t[1].priority)),t.forEach((([t])=>{s[e].delete(t),g(e,t)})))}function g(e,t,r=!0){const o=e?n.ee.get(e):n.ee,s=i.i.handlers;if(!o.aborted&&o.backlog&&s){if(r){const e=o.backlog[t],r=s[t];if(r){for(let t=0;e&&t<e.length;++t)p(e[t],r);Object.entries(r).forEach((([e,t])=>{Object.values(t||{}).forEach((t=>{t[0]?.on&&t[0]?.context()instanceof a.y&&t[0].on(e,t[1])}))}))}}o.isolatedBacklog||delete s[t],o.backlog[t]=null,o.emit("drain-"+t,[])}}function p(e,t){var r=e[1];Object.values(t[r]||{}).forEach((t=>{var r=e[0];if(t[0]===r){var n=t[1],i=e[3],o=e[2];n.apply(i,o)}}))}},836:(e,t,r)=>{"use strict";r.d(t,{P:()=>c,ee:()=>u});var n=r(384),i=r(990),o=r(371),a=r(646),s=r(607);const c="nr@context:".concat(s.W),u=function e(t,r){var n={},s={},l={},d=!1;try{d=16===r.length&&(0,o.f)(r).isolatedBacklog}catch(e){}var f={on:p,addEventListener:p,removeEventListener:function(e,t){var r=n[e];if(!r)return;for(var i=0;i<r.length;i++)r[i]===t&&r.splice(i,1)},emit:function(e,r,n,i,o){!1!==o&&(o=!0);if(u.aborted&&!i)return;t&&o&&t.emit(e,r,n);for(var a=g(n),c=m(e),l=c.length,d=0;d<l;d++)c[d].apply(a,r);var p=v()[s[e]];p&&p.push([f,e,r,a]);return a},get:h,listeners:m,context:g,buffer:function(e,t){const r=v();if(t=t||"feature",f.aborted)return;Object.entries(e||{}).forEach((([e,n])=>{s[n]=t,t in r||(r[t]=[])}))},abort:function(){f._aborted=!0,Object.keys(f.backlog).forEach((e=>{delete f.backlog[e]}))},isBuffering:function(e){return!!v()[s[e]]},debugId:r,backlog:d?{}:t&&"object"==typeof t.backlog?t.backlog:{},isolatedBacklog:d};return Object.defineProperty(f,"aborted",{get:()=>{let e=f._aborted||!1;return e||(t&&(e=t.aborted),e)}}),f;function g(e){return e&&e instanceof a.y?e:e?(0,i.I)(e,c,(()=>new a.y(c))):new a.y(c)}function p(e,t){n[e]=m(e).concat(t)}function m(e){return n[e]||[]}function h(t){return l[t]=l[t]||e(f,t)}function v(){return f.backlog}}(void 0,"globalEE"),l=(0,n.Zm)();l.ee||(l.ee=u)},646:(e,t,r)=>{"use strict";r.d(t,{y:()=>n});class n{constructor(e){this.contextId=e}}},908:(e,t,r)=>{"use strict";r.d(t,{d:()=>n,p:()=>i});var n=r(836).ee.get("handle");function i(e,t,r,i,o){o?(o.buffer([e],i),o.emit(e,t,r)):(n.buffer([e],i),n.emit(e,t,r))}},606:(e,t,r)=>{"use strict";r.d(t,{i:()=>o});var n=r(908);o.on=a;var i=o.handlers={};function o(e,t,r,o){a(o||n.d,i,e,t,r)}function a(e,t,r,i,o){o||(o="feature"),e||(e=n.d);var a=t[o]=t[o]||{};(a[r]=a[r]||[]).push([e,i])}},878:(e,t,r)=>{"use strict";function n(e,t){return{capture:e,passive:!1,signal:t}}function i(e,t,r=!1,i){window.addEventListener(e,t,n(r,i))}function o(e,t,r=!1,i){document.addEventListener(e,t,n(r,i))}r.d(t,{DD:()=>o,jT:()=>n,sp:()=>i})},607:(e,t,r)=>{"use strict";r.d(t,{W:()=>n});const n=(0,r(566).bz)()},566:(e,t,r)=>{"use strict";r.d(t,{LA:()=>s,bz:()=>a});var n=r(154);const i="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";function o(e,t){return e?15&e[t]:16*Math.random()|0}function a(){const e=n.gm?.crypto||n.gm?.msCrypto;let t,r=0;return e&&e.getRandomValues&&(t=e.getRandomValues(new Uint8Array(30))),i.split("").map((e=>"x"===e?o(t,r++).toString(16):"y"===e?(3&o()|8).toString(16):e)).join("")}function s(e){const t=n.gm?.crypto||n.gm?.msCrypto;let r,i=0;t&&t.getRandomValues&&(r=t.getRandomValues(new Uint8Array(e)));const a=[];for(var s=0;s<e;s++)a.push(o(r,i++).toString(16));return a.join("")}},614:(e,t,r)=>{"use strict";r.d(t,{BB:()=>a,H3:()=>n,g:()=>u,iL:()=>c,tS:()=>s,uh:()=>i,wk:()=>o});const n="NRBA",i="SESSION",o=144e5,a=18e5,s={STARTED:"session-started",PAUSE:"session-pause",RESET:"session-reset",RESUME:"session-resume",UPDATE:"session-update"},c={SAME_TAB:"same-tab",CROSS_TAB:"cross-tab"},u={OFF:0,FULL:1,ERROR:2}},863:(e,t,r)=>{"use strict";function n(){return Math.floor(performance.now())}r.d(t,{t:()=>n})},944:(e,t,r)=>{"use strict";function n(e,t){"function"==typeof console.debug&&console.debug("New Relic Warning: https://github.com/newrelic/newrelic-browser-agent/blob/main/docs/warning-codes.md#".concat(e),t)}r.d(t,{R:()=>n})},284:(e,t,r)=>{"use strict";r.d(t,{t:()=>c,B:()=>s});var n=r(836),i=r(154);const o="newrelic";const a=new Set,s={};function c(e,t){const r=n.ee.get(t);s[t]??={},e&&"object"==typeof e&&(a.has(t)||(r.emit("rumresp",[e]),s[t]=e,a.add(t),function(e={}){try{i.gm.dispatchEvent(new CustomEvent(o,{detail:e}))}catch(e){}}({loaded:!0})))}},990:(e,t,r)=>{"use strict";r.d(t,{I:()=>i});var n=Object.prototype.hasOwnProperty;function i(e,t,r){if(n.call(e,t))return e[t];var i=r();if(Object.defineProperty&&Object.keys)try{return Object.defineProperty(e,t,{value:i,writable:!0,enumerable:!1}),i}catch(e){}return e[t]=i,i}},389:(e,t,r)=>{"use strict";function n(e,t=500,r={}){const n=r?.leading||!1;let i;return(...r)=>{n&&void 0===i&&(e.apply(this,r),i=setTimeout((()=>{i=clearTimeout(i)}),t)),n||(clearTimeout(i),i=setTimeout((()=>{e.apply(this,r)}),t))}}function i(e){let t=!1;return(...r)=>{t||(t=!0,e.apply(this,r))}}r.d(t,{J:()=>i,s:()=>n})},289:(e,t,r)=>{"use strict";r.d(t,{GG:()=>o,sB:()=>a});var n=r(878);function i(){return"undefined"==typeof document||"complete"===document.readyState}function o(e,t){if(i())return e();(0,n.sp)("load",e,t)}function a(e){if(i())return e();(0,n.DD)("DOMContentLoaded",e)}},384:(e,t,r)=>{"use strict";r.d(t,{NT:()=>o,US:()=>l,Zm:()=>a,bQ:()=>c,dV:()=>s,nY:()=>u,pV:()=>d});var n=r(154),i=r(863);const o={beacon:"bam.nr-data.net",errorBeacon:"bam.nr-data.net"};function a(){return n.gm.NREUM||(n.gm.NREUM={}),void 0===n.gm.newrelic&&(n.gm.newrelic=n.gm.NREUM),n.gm.NREUM}function s(){let e=a();return e.o||(e.o={ST:n.gm.setTimeout,SI:n.gm.setImmediate,CT:n.gm.clearTimeout,XHR:n.gm.XMLHttpRequest,REQ:n.gm.Request,EV:n.gm.Event,PR:n.gm.Promise,MO:n.gm.MutationObserver,FETCH:n.gm.fetch,WS:n.gm.WebSocket}),e}function c(e,t){let r=a();r.initializedAgents??={},t.initializedAt={ms:(0,i.t)(),date:new Date},r.initializedAgents[e]=t}function u(e){let t=a();return t.initializedAgents?.[e]}function l(e,t){a()[e]=t}function d(){return function(){let e=a();const t=e.info||{};e.info={beacon:o.beacon,errorBeacon:o.errorBeacon,...t}}(),function(){let e=a();const t=e.init||{};e.init={...t}}(),s(),function(){let e=a();const t=e.loader_config||{};e.loader_config={...t}}(),a()}},843:(e,t,r)=>{"use strict";r.d(t,{u:()=>i});var n=r(878);function i(e,t=!1,r,i){(0,n.DD)("visibilitychange",(function(){if(t)return void("hidden"===document.visibilityState&&e());e(document.visibilityState)}),r,i)}},434:(e,t,r)=>{"use strict";r.d(t,{Jt:()=>o,YM:()=>c});var n=r(836),i=r(607);const o="nr@original:".concat(i.W);var a=Object.prototype.hasOwnProperty,s=!1;function c(e,t){return e||(e=n.ee),r.inPlace=function(e,t,n,i,o){n||(n="");const a="-"===n.charAt(0);for(let s=0;s<t.length;s++){const c=t[s],u=e[c];l(u)||(e[c]=r(u,a?c+n:n,i,c,o))}},r.flag=o,r;function r(t,r,n,s,c){return l(t)?t:(r||(r=""),nrWrapper[o]=t,function(e,t,r){if(Object.defineProperty&&Object.keys)try{return Object.keys(e).forEach((function(r){Object.defineProperty(t,r,{get:function(){return e[r]},set:function(t){return e[r]=t,t}})})),t}catch(e){u([e],r)}for(var n in e)a.call(e,n)&&(t[n]=e[n])}(t,nrWrapper,e),nrWrapper);function nrWrapper(){var o,a,l,d;try{a=this,o=[...arguments],l="function"==typeof n?n(o,a):n||{}}catch(t){u([t,"",[o,a,s],l],e)}i(r+"start",[o,a,s],l,c);try{return d=t.apply(a,o)}catch(e){throw i(r+"err",[o,a,e],l,c),e}finally{i(r+"end",[o,a,d],l,c)}}}function i(r,n,i,o){if(!s||t){var a=s;s=!0;try{e.emit(r,n,i,t,o)}catch(t){u([t,r,n,i],e)}s=a}}}function u(e,t){t||(t=n.ee);try{t.emit("internal-error",e)}catch(e){}}function l(e){return!(e&&"function"==typeof e&&e.apply&&!e[o])}},993:(e,t,r)=>{"use strict";r.d(t,{A$:()=>o,ET:()=>a,p_:()=>i});var n=r(860);const i={ERROR:"ERROR",WARN:"WARN",INFO:"INFO",DEBUG:"DEBUG",TRACE:"TRACE"},o={OFF:0,ERROR:1,WARN:2,INFO:3,DEBUG:4,TRACE:5},a="log";n.K7.logging},773:(e,t,r)=>{"use strict";r.d(t,{z_:()=>o,XG:()=>s,TZ:()=>n,rs:()=>i,xV:()=>a});r(154),r(566),r(384);const n=r(860).K7.metrics,i="sm",o="cm",a="storeSupportabilityMetrics",s="storeEventMetrics"},630:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewEvent},782:(e,t,r)=>{"use strict";r.d(t,{T:()=>n});const n=r(860).K7.pageViewTiming},344:(e,t,r)=>{"use strict";r.d(t,{G4:()=>i});var n=r(614);r(860).K7.sessionReplay;const i={RECORD:"recordReplay",PAUSE:"pauseReplay",REPLAY_RUNNING:"replayRunning",ERROR_DURING_REPLAY:"errorDuringReplay"};n.g.ERROR,n.g.FULL,n.g.OFF},234:(e,t,r)=>{"use strict";r.d(t,{W:()=>o});var n=r(836),i=r(687);class o{constructor(e,t){this.agentIdentifier=e,this.ee=n.ee.get(e),this.featureName=t,this.blocked=!1}deregisterDrain(){(0,i.x3)(this.agentIdentifier,this.featureName)}}},603:(e,t,r)=>{"use strict";r.d(t,{j:()=>K});var n=r(860),i=r(555),o=r(371),a=r(908),s=r(836),c=r(687),u=r(289),l=r(154),d=r(944),f=r(773),g=r(384),p=r(344);const m=["setErrorHandler","finished","addToTrace","addRelease","recordCustomEvent","addPageAction","setCurrentRouteName","setPageViewName","setCustomAttribute","interaction","noticeError","setUserId","setApplicationVersion","start",p.G4.RECORD,p.G4.PAUSE,"log","wrapLogger"],h=["setErrorHandler","finished","addToTrace","addRelease"];var v=r(863),b=r(614),y=r(993);var w=r(646),R=r(434);const A=new Map;function E(e,t,r,n){if("object"!=typeof t||!t||"string"!=typeof r||!r||"function"!=typeof t[r])return(0,d.R)(29);const i=function(e){return(e||s.ee).get("logger")}(e),o=(0,R.YM)(i),a=new w.y(s.P);a.level=n.level,a.customAttributes=n.customAttributes;const c=t[r]?.[R.Jt]||t[r];return A.set(c,a),o.inPlace(t,[r],"wrap-logger-",(()=>A.get(c))),i}function _(){const e=(0,g.pV)();m.forEach((t=>{e[t]=(...r)=>function(t,...r){let n=[];return Object.values(e.initializedAgents).forEach((e=>{e&&e.api?e.exposed&&e.api[t]&&n.push(e.api[t](...r)):(0,d.R)(38,t)})),n.length>1?n:n[0]}(t,...r)}))}const x={};function N(e,t,g=!1){t||(0,c.Ak)(e,"api");const m={};var w=s.ee.get(e),R=w.get("tracer");x[e]=b.g.OFF,w.on(p.G4.REPLAY_RUNNING,(t=>{x[e]=t}));var A="api-",_=A+"ixn-";function N(t,r,n,o){const a=(0,i.Vp)(e);return null===r?delete a.jsAttributes[t]:(0,i.x1)(e,{...a,jsAttributes:{...a.jsAttributes,[t]:r}}),j(A,n,!0,o||null===r?"session":void 0)(t,r)}function k(){}m.log=function(e,{customAttributes:t={},level:r=y.p_.INFO}={}){(0,a.p)(f.xV,["API/log/called"],void 0,n.K7.metrics,w),function(e,t,r={},i=y.p_.INFO){(0,a.p)(f.xV,["API/logging/".concat(i.toLowerCase(),"/called")],void 0,n.K7.metrics,e),(0,a.p)(y.ET,[(0,v.t)(),t,r,i],void 0,n.K7.logging,e)}(w,e,t,r)},m.wrapLogger=(e,t,{customAttributes:r={},level:i=y.p_.INFO}={})=>{(0,a.p)(f.xV,["API/wrapLogger/called"],void 0,n.K7.metrics,w),E(w,e,t,{customAttributes:r,level:i})},h.forEach((e=>{m[e]=j(A,e,!0,"api")})),m.addPageAction=j(A,"addPageAction",!0,n.K7.genericEvents),m.recordCustomEvent=j(A,"recordCustomEvent",!0,n.K7.genericEvents),m.setPageViewName=function(t,r){if("string"==typeof t)return"/"!==t.charAt(0)&&(t="/"+t),(0,o.f)(e).customTransaction=(r||"http://custom.transaction")+t,j(A,"setPageViewName",!0)()},m.setCustomAttribute=function(e,t,r=!1){if("string"==typeof e){if(["string","number","boolean"].includes(typeof t)||null===t)return N(e,t,"setCustomAttribute",r);(0,d.R)(40,typeof t)}else(0,d.R)(39,typeof e)},m.setUserId=function(e){if("string"==typeof e||null===e)return N("enduser.id",e,"setUserId",!0);(0,d.R)(41,typeof e)},m.setApplicationVersion=function(e){if("string"==typeof e||null===e)return N("application.version",e,"setApplicationVersion",!1);(0,d.R)(42,typeof e)},m.start=()=>{try{(0,a.p)(f.xV,["API/start/called"],void 0,n.K7.metrics,w),w.emit("manual-start-all")}catch(e){(0,d.R)(23,e)}},m[p.G4.RECORD]=function(){(0,a.p)(f.xV,["API/recordReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.RECORD,[],void 0,n.K7.sessionReplay,w)},m[p.G4.PAUSE]=function(){(0,a.p)(f.xV,["API/pauseReplay/called"],void 0,n.K7.metrics,w),(0,a.p)(p.G4.PAUSE,[],void 0,n.K7.sessionReplay,w)},m.interaction=function(e){return(new k).get("object"==typeof e?e:{})};const T=k.prototype={createTracer:function(e,t){var r={},i=this,o="function"==typeof t;return(0,a.p)(f.xV,["API/createTracer/called"],void 0,n.K7.metrics,w),g||(0,a.p)(_+"tracer",[(0,v.t)(),e,r],i,n.K7.spa,w),function(){if(R.emit((o?"":"no-")+"fn-start",[(0,v.t)(),i,o],r),o)try{return t.apply(this,arguments)}catch(e){const t="string"==typeof e?new Error(e):e;throw R.emit("fn-err",[arguments,this,t],r),t}finally{R.emit("fn-end",[(0,v.t)()],r)}}}};function j(e,t,r,i){return function(){return(0,a.p)(f.xV,["API/"+t+"/called"],void 0,n.K7.metrics,w),i&&(0,a.p)(e+t,[r?(0,v.t)():performance.now(),...arguments],r?null:this,i,w),r?void 0:this}}function I(){r.e(296).then(r.bind(r,778)).then((({setAPI:t})=>{t(e),(0,c.Ze)(e,"api")})).catch((e=>{(0,d.R)(27,e),w.abort()}))}return["actionText","setName","setAttribute","save","ignore","onEnd","getContext","end","get"].forEach((e=>{T[e]=j(_,e,void 0,g?n.K7.softNav:n.K7.spa)})),m.setCurrentRouteName=g?j(_,"routeName",void 0,n.K7.softNav):j(A,"routeName",!0,n.K7.spa),m.noticeError=function(t,r){"string"==typeof t&&(t=new Error(t)),(0,a.p)(f.xV,["API/noticeError/called"],void 0,n.K7.metrics,w),(0,a.p)("err",[t,(0,v.t)(),!1,r,!!x[e]],void 0,n.K7.jserrors,w)},l.RI?(0,u.GG)((()=>I()),!0):I(),m}var k=r(217),T=r(122);const j={accountID:void 0,trustKey:void 0,agentID:void 0,licenseKey:void 0,applicationID:void 0,xpid:void 0},I={};var O=r(284);const S=e=>{const t=e.startsWith("http");e+="/",r.p=t?e:"https://"+e};let P=!1;function K(e,t={},r,n){let{init:a,info:c,loader_config:u,runtime:d={},exposed:f=!0}=t;d.loaderType=r;const p=(0,g.pV)();c||(a=p.init,c=p.info,u=p.loader_config),(0,k.xN)(e.agentIdentifier,a||{}),function(e,t){if(!e)throw new Error("All loader-config objects require an agent identifier!");I[e]=(0,T.a)(t,j);const r=(0,g.nY)(e);r&&(r.loader_config=I[e])}(e.agentIdentifier,u||{}),c.jsAttributes??={},l.bv&&(c.jsAttributes.isWorker=!0),(0,i.x1)(e.agentIdentifier,c);const m=(0,k.D0)(e.agentIdentifier),h=[c.beacon,c.errorBeacon];P||(m.proxy.assets&&(S(m.proxy.assets),h.push(m.proxy.assets)),m.proxy.beacon&&h.push(m.proxy.beacon),_(),(0,g.US)("activatedFeatures",O.B),e.runSoftNavOverSpa&&=!0===m.soft_navigations.enabled&&m.feature_flags.includes("soft_nav")),d.denyList=[...m.ajax.deny_list||[],...m.ajax.block_internal?h:[]],d.ptid=e.agentIdentifier,(0,o.V)(e.agentIdentifier,d),e.ee=s.ee.get(e.agentIdentifier),void 0===e.api&&(e.api=N(e.agentIdentifier,n,e.runSoftNavOverSpa)),void 0===e.exposed&&(e.exposed=f),P=!0}},374:(e,t,r)=>{r.nc=(()=>{try{return document?.currentScript?.nonce}catch(e){}return""})()},860:(e,t,r)=>{"use strict";r.d(t,{$J:()=>u,K7:()=>s,P3:()=>c,XX:()=>i,qY:()=>n,v4:()=>a});const n="events",i="jserrors",o="browser/blobs",a="rum",s={ajax:"ajax",genericEvents:"generic_events",jserrors:i,logging:"logging",metrics:"metrics",pageAction:"page_action",pageViewEvent:"page_view_event",pageViewTiming:"page_view_timing",sessionReplay:"session_replay",sessionTrace:"session_trace",softNav:"soft_navigations",spa:"spa"},c={[s.pageViewEvent]:1,[s.pageViewTiming]:2,[s.metrics]:3,[s.jserrors]:4,[s.spa]:5,[s.ajax]:6,[s.sessionTrace]:7,[s.softNav]:8,[s.sessionReplay]:9,[s.logging]:10,[s.genericEvents]:11},u={[s.pageViewEvent]:a,[s.pageViewTiming]:n,[s.ajax]:n,[s.spa]:n,[s.softNav]:n,[s.metrics]:i,[s.jserrors]:i,[s.sessionTrace]:o,[s.sessionReplay]:o,[s.logging]:"browser/logs",[s.genericEvents]:"ins"}}},n={};function i(e){var t=n[e];if(void 0!==t)return t.exports;var o=n[e]={exports:{}};return r[e](o,o.exports,i),o.exports}i.m=r,i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>"nr-rum-1.283.2.min.js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),e={},t="NRBA-1.283.2.PROD:",i.l=(r,n,o,a)=>{if(e[r])e[r].push(n);else{var s,c;if(void 0!==o)for(var u=document.getElementsByTagName("script"),l=0;l<u.length;l++){var d=u[l];if(d.getAttribute("src")==r||d.getAttribute("data-webpack")==t+o){s=d;break}}if(!s){c=!0;var f={296:"sha512-2Y8GMAOGF658KnXzOZ/v+DlLch8TBFvV0tTNnOy9wrpvtDa1t5CdZMyX+LubTymBlzPp6NUjllBghMCZqXBPmg=="};(s=document.createElement("script")).charset="utf-8",s.timeout=120,i.nc&&s.setAttribute("nonce",i.nc),s.setAttribute("data-webpack",t+o),s.src=r,0!==s.src.indexOf(window.location.origin+"/")&&(s.crossOrigin="anonymous"),f[a]&&(s.integrity=f[a])}e[r]=[n];var g=(t,n)=>{s.onerror=s.onload=null,clearTimeout(p);var i=e[r];if(delete e[r],s.parentNode&&s.parentNode.removeChild(s),i&&i.forEach((e=>e(n))),t)return t(n)},p=setTimeout(g.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=g.bind(null,s.onerror),s.onload=g.bind(null,s.onload),c&&document.head.appendChild(s)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="https://js-agent.newrelic.com/",(()=>{var e={374:0,840:0};i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var o=new Promise(((r,i)=>n=e[t]=[r,i]));r.push(n[2]=o);var a=i.p+i.u(t),s=new Error;i.l(a,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var o=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+o+": "+a+")",s.name="ChunkLoadError",s.type=o,s.request=a,n[1](s)}}),"chunk-"+t,t)}};var t=(t,r)=>{var n,o,[a,s,c]=r,u=0;if(a.some((t=>0!==e[t]))){for(n in s)i.o(s,n)&&(i.m[n]=s[n]);if(c)c(i)}for(t&&t(r);u<a.length;u++)o=a[u],i.o(e,o)&&e[o]&&e[o][0](),e[o]=0},r=self["webpackChunk:NRBA-1.283.2.PROD"]=self["webpackChunk:NRBA-1.283.2.PROD"]||[];r.forEach(t.bind(null,0)),r.push=t.bind(null,r.push.bind(r))})(),(()=>{"use strict";i(374);var e=i(944),t=i(344),r=i(566);class n{agentIdentifier;constructor(){this.agentIdentifier=(0,r.LA)(16)}#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}addPageAction(e,t){return this.#e("addPageAction",e,t)}recordCustomEvent(e,t){return this.#e("recordCustomEvent",e,t)}setPageViewName(e,t){return this.#e("setPageViewName",e,t)}setCustomAttribute(e,t,r){return this.#e("setCustomAttribute",e,t,r)}noticeError(e,t){return this.#e("noticeError",e,t)}setUserId(e){return this.#e("setUserId",e)}setApplicationVersion(e){return this.#e("setApplicationVersion",e)}setErrorHandler(e){return this.#e("setErrorHandler",e)}addRelease(e,t){return this.#e("addRelease",e,t)}log(e,t){return this.#e("log",e,t)}}class o extends n{#e(t,...r){if("function"==typeof this.api?.[t])return this.api[t](...r);(0,e.R)(35,t)}start(){return this.#e("start")}finished(e){return this.#e("finished",e)}recordReplay(){return this.#e(t.G4.RECORD)}pauseReplay(){return this.#e(t.G4.PAUSE)}addToTrace(e){return this.#e("addToTrace",e)}setCurrentRouteName(e){return this.#e("setCurrentRouteName",e)}interaction(){return this.#e("interaction")}wrapLogger(e,t,r){return this.#e("wrapLogger",e,t,r)}}var a=i(860),s=i(217);const c=Object.values(a.K7);function u(e){const t={};return c.forEach((r=>{t[r]=function(e,t){return!0===(0,s.gD)(t,"".concat(e,".enabled"))}(r,e)})),t}var l=i(603);var d=i(687),f=i(234),g=i(289),p=i(154),m=i(384);const h=e=>p.RI&&!0===(0,s.gD)(e,"privacy.cookies_enabled");function v(e){return!!(0,m.dV)().o.MO&&h(e)&&!0===(0,s.gD)(e,"session_trace.enabled")}var b=i(389);class y extends f.W{constructor(e,t,r=!0){super(e.agentIdentifier,t),this.auto=r,this.abortHandler=void 0,this.featAggregate=void 0,this.onAggregateImported=void 0,!1===e.init[this.featureName].autoStart&&(this.auto=!1),this.auto?(0,d.Ak)(e.agentIdentifier,t):this.ee.on("manual-start-all",(0,b.J)((()=>{(0,d.Ak)(e.agentIdentifier,this.featureName),this.auto=!0,this.importAggregator(e)})))}importAggregator(t,r={}){if(this.featAggregate||!this.auto)return;let n;this.onAggregateImported=new Promise((e=>{n=e}));const o=async()=>{let o;try{if(h(this.agentIdentifier)){const{setupAgentSession:e}=await i.e(296).then(i.bind(i,861));o=e(t)}}catch(t){(0,e.R)(20,t),this.ee.emit("internal-error",[t]),this.featureName===a.K7.sessionReplay&&this.abortHandler?.()}try{if(!this.#t(this.featureName,o))return(0,d.Ze)(this.agentIdentifier,this.featureName),void n(!1);const{lazyFeatureLoader:e}=await i.e(296).then(i.bind(i,103)),{Aggregate:a}=await e(this.featureName,"aggregate");this.featAggregate=new a(t,r),t.runtime.harvester.initializedAggregates.push(this.featAggregate),n(!0)}catch(t){(0,e.R)(34,t),this.abortHandler?.(),(0,d.Ze)(this.agentIdentifier,this.featureName,!0),n(!1),this.ee&&this.ee.abort()}};p.RI?(0,g.GG)((()=>o()),!0):o()}#t(e,t){switch(e){case a.K7.sessionReplay:return v(this.agentIdentifier)&&!!t;case a.K7.sessionTrace:return!!t;default:return!0}}}var w=i(630);class R extends y{static featureName=w.T;constructor(e,t=!0){super(e,w.T,t),this.importAggregator(e)}}var A=i(908),E=i(843),_=i(878),x=i(782),N=i(863);class k extends y{static featureName=x.T;constructor(e,t=!0){super(e,x.T,t),p.RI&&((0,E.u)((()=>(0,A.p)("docHidden",[(0,N.t)()],void 0,x.T,this.ee)),!0),(0,_.sp)("pagehide",(()=>(0,A.p)("winPagehide",[(0,N.t)()],void 0,x.T,this.ee))),this.importAggregator(e))}}var T=i(773);class j extends y{static featureName=T.TZ;constructor(e,t=!0){super(e,T.TZ,t),this.importAggregator(e)}}new class extends o{constructor(t){super(),p.gm?(this.features={},(0,m.bQ)(this.agentIdentifier,this),this.desiredFeatures=new Set(t.features||[]),this.desiredFeatures.add(R),this.runSoftNavOverSpa=[...this.desiredFeatures].some((e=>e.featureName===a.K7.softNav)),(0,l.j)(this,t,t.loaderType||"agent"),this.run()):(0,e.R)(21)}get config(){return{info:this.info,init:this.init,loader_config:this.loader_config,runtime:this.runtime}}run(){try{const t=u(this.agentIdentifier),r=[...this.desiredFeatures];r.sort(((e,t)=>a.P3[e.featureName]-a.P3[t.featureName])),r.forEach((r=>{if(!t[r.featureName]&&r.featureName!==a.K7.pageViewEvent)return;if(this.runSoftNavOverSpa&&r.featureName===a.K7.spa)return;if(!this.runSoftNavOverSpa&&r.featureName===a.K7.softNav)return;const n=function(e){switch(e){case a.K7.ajax:return[a.K7.jserrors];case a.K7.sessionTrace:return[a.K7.ajax,a.K7.pageViewEvent];case a.K7.sessionReplay:return[a.K7.sessionTrace];case a.K7.pageViewTiming:return[a.K7.pageViewEvent];default:return[]}}(r.featureName).filter((e=>!(e in this.features)));n.length>0&&(0,e.R)(36,{targetFeature:r.featureName,missingDependencies:n}),this.features[r.featureName]=new r(this)}))}catch(t){(0,e.R)(22,t);for(const e in this.features)this.features[e].abortHandler?.();const r=(0,m.Zm)();delete r.initializedAgents[this.agentIdentifier]?.api,delete r.initializedAgents[this.agentIdentifier]?.features,delete this.sharedAggregator;return r.ee.get(this.agentIdentifier).abort(),!1}}}({features:[R,k,j],loaderType:"lite"})})()})();</script> <meta name="viewport" content="width=device-width"> <title>GeoLit | Devpost</title> <meta name="description" content="GeoLit - GeoLit, pour rester connect茅 avec sa ville et son environnement" /> <meta property="fb:app_id" content="115745995110194" /> <meta property="og:title" content="GeoLit" /> <meta property="og:description" content="GeoLit, pour rester connect茅 avec sa ville et son environnement" /> <meta property="og:type" content="challengepost:app" /> <meta property="og:site_name" content="Devpost" /> <meta property="og:image" content="https://d112y698adiu2z.cloudfront.net/photos/production/software_thumbnail_photos/000/643/343/datas/medium.png" /> <meta property="og:url" content="https://devpost.com/software/geolit" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:site" content="@Devpost" /> <meta name="twitter:title" content="GeoLit" /> <meta name="twitter:description" content="GeoLit, pour rester connect茅 avec sa ville et son environnement" /> <meta name="twitter:image" content="https://d112y698adiu2z.cloudfront.net/photos/production/software_thumbnail_photos/000/643/343/datas/medium.png" /> <meta name="twitter:domain" content="devpost.com" /> <meta name="twitter:url" content="https://devpost.com/software/geolit" /> <meta itemprop="name" content="GeoLit" /> <meta itemprop="description" content="GeoLit, pour rester connect茅 avec sa ville et son environnement" /> <meta itemprop="image" content="https://d112y698adiu2z.cloudfront.net/photos/production/software_thumbnail_photos/000/643/343/datas/medium.png" /> <meta itemprop="screenshot" content="https://d112y698adiu2z.cloudfront.net/photos/production/software_thumbnail_photos/000/643/343/datas/medium.png" /> <meta name="csrf-param" content="authenticity_token" /> <meta name="csrf-token" content="XF4NiwJ4pK894vaI2M0JZnD9cxi/L0MbazCl8fYS8jcigseDZkKq+r8/PwEErGGfarcEq9iAe5UVOJ7pLxEOdA==" /> <!--[if gt IE 7]><!--> <script src="https://kit.fontawesome.com/0c13a9f144.js" crossorigin="anonymous"></script> <link rel="stylesheet" media="screen" href="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2-f0b5d68d5a825bebf7210a882eab77c86960fa3bcd1d5e6a901bf97d2b7f33a0.css" /> <link rel="stylesheet" media="screen" href="https://d2dmyh35ffsxbl.cloudfront.net/assets/home/home_application-2e297cd58707524989edc9b409ea77ae3625d77ae5c5ed40567469a2a306b492.css" /> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/modernizr-58ea6a8d3054105c74975c648df5d77247ea7b62e2c3ed291aace5e4139d5eb5.js"></script> <!--<![endif]--> </head> <body id="body-softwares" class="foundation-grid action-show controller-softwares engine-home"> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-WCFRZ3V" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <!--googleoff: anchor--> <!--[if lte IE 9 ]> <div id="unsupported_browser_version" class="persistent_message alert-box alert"> <p> We've detected that you are using an unsupported browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to Internet Explorer 10 or higher. </p> </div> <![endif]--> <!--googleon: anchor--> <header id="global-nav"> <div class="contain-to-grid hide-for-large-up"> <nav class="top-bar" data-topbar> <ul class="title-area top-bar-section"> <li> <a class="toggle-topbar has-dropdown text-center" data-target-menu="world" id="hamburger" href="#"> <i class="ss-icon ss-rows"></i> </a> </li> <li class="name"> <span id="logo"> <a href="https://devpost.com"> <img alt="Devpost" class="show-for-small" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <img alt="Devpost" class="show-for-medium-up" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-25d0005ec83e3b9ef6fce93235bb6d642d7c828f31758ebdb5b7ee87de7d45c3.svg" /> </a></span> </li> <li id="mobile-search-form-container" class="search-form-container mobile hide"> <form class="flex-row align-items-center search-form" action="https://devpost.com/hackathons" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" /> <div class="search-field-wrapper flex-row align-items-stretch mx-4"> <span class="align-items-center"> <i class="fas fa-search search-icon"></i> </span> <input type="search" name="search" id="search" title="Search" placeholder="Search hackathons..." /> <a href="#" class="align-items-center close-icon" data-toggle-mobile-search> <i class="fas fa-times"></i> </a> </div> </form> </li> <li class="right logged-out"> <ul> <li> <a id="main-link" href="https://secure.devpost.com/users/login?ref=top-nav-login"> Log in </a> </li> <li class="show-for-medium-up"> <a id="signup-link" href="https://secure.devpost.com/users/register?ref_content=signup_global_nav&amp;ref_feature=signup&amp;ref_medium=button"> <span class="inner-button"> Sign up </span> </a> </li> </ul> </li> <li class="search-expand-container mobile right"> <a data-toggle-mobile-search><i class="fas fa-search"></i></a> </li> </ul> <section class="top-bar-section" data-top-nav-menu="user"> </section> <section class="top-bar-section" data-top-nav-menu="world"> <ul class="right"> <div class="mobile"> <a class="accordion-tab" data-accordion-tab href="#join-a-hackathon"> <span>Join a hackathon</span> <i class="fa-angle-down fas" aria-hidden="true"></i> <i class="fa-angle-up fas" aria-hidden="true"></i> </a> <div class="accordion-section" data-accordion-section="join-a-hackathon"> <div class="floating-menu-wrapper"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://devpost.com/hackathons"> <img alt="Devpost logo" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <div> <p class="title bold">Devpost</p> <p class="subtitle">Participate in our public hackathons</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://devpost.com/hackathons"> Hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://devpost.com/software"> Projects <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> <div class="floating-menu-wrapper"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://devpost.team"> <img alt="Devpost for Teams" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/dft-logo-mobile-ab66dd5a4f4b2f045ad86d0e5f432dc85974c3d778b353d32213c24ca176484b.svg" /> <div> <p class="title bold">Devpost for Teams</p> <p class="subtitle">Access your company's private hackathons</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://devpost.team"> Login <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> </div> <a class="accordion-tab" data-accordion-tab href="#host-a-hackathon"> Host a hackathon <i class="fa-angle-down fas" aria-hidden="true"></i> <i class="fa-angle-up fas" aria-hidden="true"></i> </a> <div class="accordion-section" data-accordion-section="host-a-hackathon"> <div class="floating-menu-wrapper"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://info.devpost.com/product/public-hackathons"> <img alt="Devpost" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <div> <p class="title bold">Devpost</p> <p class="subtitle">Grow your developer ecosystem and promote your platform</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://info.devpost.com/product/public-hackathons"> Host a public hackathon <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> <div class="floating-menu-wrapper"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://info.devpost.com/product/devpost-for-teams"> <img alt="Devpost for Teams logo" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/dft-logo-mobile-ab66dd5a4f4b2f045ad86d0e5f432dc85974c3d778b353d32213c24ca176484b.svg" /> <div> <p class="title bold">Devpost for Teams</p> <p class="subtitle">Drive innovation, collaboration, and retention within your organization</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://info.devpost.com/product/devpost-for-teams"> Host an internal hackathon <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> <div class="floating-menu-wrapper"> <div class="panel-section "> <div class="panel-content"> <p class="title bold">By use case</p> <a href="https://info.devpost.com/product/ai-hackathons"> AI hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://info.devpost.com/product/customer-hackathons"> Customer hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://info.devpost.com/product/devpost-for-teams"> Employee hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://info.devpost.com/product/public-hackathons"> Public hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> </div> <a class="accordion-tab" data-accordion-tab href="#resources"> Resources <i class="fa-angle-down fas" aria-hidden="true"></i> <i class="fa-angle-up fas" aria-hidden="true"></i> </a> <div class="accordion-section" data-accordion-section="resources"> <div class="floating-menu-wrapper"> <div class="panel-content"> <div class="panel-section"> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/blog"> <p class="resource-title"> Blog </p> <p class="subtitle"> Insights into hackathon planning and participation </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/customer-stories"> <p class="resource-title"> Customer stories </p> <p class="subtitle"> Inspiration from peers and other industry leaders </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/guides"> <p class="resource-title"> Planning guides </p> <p class="subtitle"> Best practices for planning online and in-person hackathons </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/webinar-events"> <p class="resource-title"> Webinars &amp; events </p> <p class="subtitle"> Upcoming events and on-demand recordings </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://help.devpost.com/"> <p class="resource-title"> Help desk </p> <p class="subtitle"> Common questions and support documentation </p> </a> </div> </div> </div> </div> </div> </div> </ul> </section> </nav> </div> <div class="contain-to-grid hide-for-small hide-for-medium"> <nav class="top-bar" data-topbar> <ul class="title-area"> <li class="name"> <span id="logo"> <a href="https://devpost.com"> <img alt="Devpost" class="show-for-small" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <img alt="Devpost" class="show-for-medium-up" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-25d0005ec83e3b9ef6fce93235bb6d642d7c828f31758ebdb5b7ee87de7d45c3.svg" /> </a></span> </li> </ul> <section class="top-bar-section"> <ul class="left"> <li class="divider"></li> <li class="has-dropdown"> <a class="main-link" href="#"> Join a hackathon <i class="fa-angle-down fas" aria-hidden="true"></i> <i class="fa-angle-up fas" aria-hidden="true"></i> </a> <ul class="dropdown float-left main-menu-dropdown" id="join-a-hackathon-dropdown"> <li class="floating-menu-wrapper"> <div class="floating-menu display-flex align-stretch"> <div class="panel-container bordered"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://devpost.com/hackathons"> <img alt="Devpost logo" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <div> <p class="title bold">Devpost</p> <p class="subtitle">Participate in our public hackathons</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://devpost.com/hackathons"> Hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://devpost.com/software"> Projects <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> <div class="panel-container bordered"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://devpost.team"> <img alt="Devpost for Teams" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/dft-logo-mobile-ab66dd5a4f4b2f045ad86d0e5f432dc85974c3d778b353d32213c24ca176484b.svg" /> <div> <p class="title bold">Devpost for Teams</p> <p class="subtitle">Access your company's private hackathons</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://devpost.team"> Login <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> </div> </li> </ul> </li> <li class="divider"></li> <li class="has-dropdown"> <a class="main-link" href="#"> Host a hackathon <i class="fa-angle-down fas" aria-hidden="true"></i> <i class="fa-angle-up fas" aria-hidden="true"></i> </a> <ul class="dropdown float-left main-menu-dropdown" id="host-a-hackathon-dropdown"> <li class="floating-menu-wrapper"> <div class="floating-menu flex-row align-start"> <div class="panel-container bordered"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://info.devpost.com/product/public-hackathons"> <img alt="Devpost" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/devpost-logo-mobile-f3aff76bfc0b6ada9bb4ddd773bfc534769ed793f962612804a1e84c305a5f94.svg" /> <div> <p class="title bold">Devpost</p> <p class="subtitle">Grow your developer ecosystem and promote your platform</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://info.devpost.com/product/public-hackathons"> Host a public hackathon <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> <div class="panel-container bordered"> <div class="panel-section"> <a class="panel-product panel-product-content" href="https://info.devpost.com/product/devpost-for-teams"> <img alt="Devpost for Teams logo" src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2/dft-logo-mobile-ab66dd5a4f4b2f045ad86d0e5f432dc85974c3d778b353d32213c24ca176484b.svg" /> <div> <p class="title bold">Devpost for Teams</p> <p class="subtitle">Drive innovation, collaboration, and retention within your organization</p> </div> </a> <div class="panel-content with-icon-offset"> <a href="https://info.devpost.com/product/devpost-for-teams"> Host an internal hackathon <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> <div class="panel-container"> <div class="panel-section pt-0"> <div class="panel-content"> <p class="title bold">By use case</p> <a href="https://info.devpost.com/product/ai-hackathons"> AI hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://info.devpost.com/product/customer-hackathons"> Customer hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://info.devpost.com/product/devpost-for-teams"> Employee hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> <a href="https://info.devpost.com/product/public-hackathons"> Public hackathons <i class="fa-arrow-right fas" aria-hidden="true" aria-label="Arrow icon"></i> </a> </div> </div> </div> </div> </li> </ul> </li> <li class="divider"></li> <li class="has-dropdown"> <a class="main-link" href="#"> Resources <i class="fa-angle-down fas" aria-hidden="true"></i> <i class="fa-angle-up fas" aria-hidden="true"></i> </a> <ul class="dropdown float-left main-menu-dropdown" id="resources-dropdown"> <li class="floating-menu-wrapper"> <div class="floating-menu"> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/blog"> <p class="resource-title"> Blog </p> <p class="subtitle"> Insights into hackathon planning and participation </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/customer-stories"> <p class="resource-title"> Customer stories </p> <p class="subtitle"> Inspiration from peers and other industry leaders </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/guides"> <p class="resource-title"> Planning guides </p> <p class="subtitle"> Best practices for planning online and in-person hackathons </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://info.devpost.com/webinar-events"> <p class="resource-title"> Webinars &amp; events </p> <p class="subtitle"> Upcoming events and on-demand recordings </p> </a> </div> <div class="panel-container mr-0 is-flex-grow-1 mb-4"> <a class="bordered bordered-hover panel-section padded" href="https://help.devpost.com/"> <p class="resource-title"> Help desk </p> <p class="subtitle"> Common questions and support documentation </p> </a> </div> </div> </li> </ul> </li> </ul> <div class="right"> <ul> <li class="search-expand-container desktop main-link"> <a data-toggle-desktop-search><i class="fas fa-search"></i></a> </li> <li id="desktop-search-form-container" class="search-form-container hide"> <form class="flex-row align-items-center search-form" action="https://devpost.com/hackathons" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="&#x2713;" /> <div class="search-field-wrapper flex-row align-items-stretch mx-4"> <span class="align-items-center"> <i class="fas fa-search search-icon"></i> </span> <input type="search" name="search" id="search" title="Search" placeholder="Search hackathons..." /> <a href="#" class="align-items-center close-icon" data-toggle-desktop-search> <i class="fas fa-times"></i> </a> </div> </form> </li> </ul> <ul> <li> <a id="main-link" href="https://secure.devpost.com/users/login?ref=top-nav-login"> Log in </a> </li> <li class="show-for-medium-up"> <a id="signup-link" href="https://secure.devpost.com/users/register?ref_content=signup_global_nav&amp;ref_feature=signup&amp;ref_medium=button"> <span class="inner-button"> Sign up </span> </a> </li> </ul> </div> </section> </nav> </div> </header> <section id="container" class=""> <header class="page-header text-center" id="software-header"> <div class="row"> <div class="small-12 columns"> <h1 id="app-title">GeoLit</h1> <p class="large"> GeoLit, pour rester connect茅 avec sa ville et son environnement </p> </div> </div> <div class="row"> <div class="small-12 columns"> <div class="software-likes"> <div data-like="base"> <a class="like-button button radius secondary" href="https://secure.devpost.com/users/register?flow%5Bdata%5D%5Bsoftware_id%5D=175192&amp;flow%5Bname%5D=like_software&amp;return_to=https%3A%2F%2Fdevpost.com%2Fsoftware%2Fgeolit"> <span class="ss-icon ss-heart"></span> Like </a> </div> </div> <a id="software-comment-button" class="button radius comment-button" href="/software/geolit#updates"> <span class="ss-icon ss-quote"></span> Comment </a> </div> </div> </header> <nav id="software-nav"> <div class="row"> <div class="large-12 columns"> <ul class="left no-bullet"> <li> <h4> <a class="active" href="/software/geolit">Story</a> </h4> </li> <li> <h4> <a href="/software/geolit#updates">Updates</a> </h4> </li> </ul> </div> </div> </nav> <article id="app-details" class="content-section"> <div class="row"> <div class="large-9 columns" id="app-details-left"> <div> <h2>GeoLit</h2> <p>GeoLit est une application permet de re莽evoir des informations ouvertes de _ <a href="https://www.donneesquebec.ca/fr/" rel="nofollow">https://www.donneesquebec.ca/fr/</a> _. Elle g茅n茅re des graphes et interpr锚tre les donn茅es bruts pour donner aux habitants de la ville de Montr茅al et la ville de Laval des informations sur la qualit茅 de l'air de la ville, la foresterie urbaine et la temp茅rature de surface de la ville. GeoLit vise la prise en conscience de l'environnement de ses utilisateurs. Ceux-ci sont en mesure de prendre connaissance du score attribu茅 au quartier o霉 ils habitent, ce qui les sensibilise davantage 脿 prendre des actions pour am茅liorer directement leur r茅gion et leur qualit茅 de vie, pour ainsi 锚tre t茅moin des changements.</p> <h2>Conception</h2> <p>GeoLit est programm茅 en Java avec l'utilisation de JavaFx comme librairie graphique. Nous avec 茅galement utilis茅 une librairie TileFx.</p> <h2>D茅fi</h2> <p>La contrainte de temps nous a forc茅 脿 abandonner des fonctionnalit茅s que nous voulions ajouter pour rendre l'application plus utile et esth茅tique. Nous avons 茅galement eu de la difficult茅 脿 travailler avec certaines donn茅es du portail 脿 cause de leur taille immense.</p> <p><strong>#Geotiff</strong></p> </div> <div id="built-with" class=""> <h2>Built With</h2> <ul class="no-bullet inline-list"><li><span class="cp-tag recognized-tag"><a href="https://devpost.com/software/built-with/css">css</a></span></li><li><span class="cp-tag recognized-tag"><a href="https://devpost.com/software/built-with/html">html</a></span></li><li><span class="cp-tag recognized-tag"><a href="https://devpost.com/software/built-with/java">java</a></span></li><li><span class="cp-tag recognized-tag"><a href="https://devpost.com/software/built-with/javascript">javascript</a></span></li><li><span class="cp-tag recognized-tag"><a href="https://devpost.com/software/built-with/python">python</a></span></li></ul> </div> <nav class="app-links section"> <h2>Try it out</h2> <ul data-role="software-urls" class="no-bullet"> <li><a target="_blank" title="https://github.com/bloc97/HackQC2018_7/tree/fe08ec175b9e1eb7dd24ad04d4f457aaec82158d" rel="nofollow" href="https://github.com/bloc97/HackQC2018_7/tree/fe08ec175b9e1eb7dd24ad04d4f457aaec82158d"> <i class="ss-icon ss-link"></i> <span>github.com</span> </a></li> </ul> </nav> </div> <aside class="large-3 columns" id="app-details-right"> <div id="submissions" class="section"> <h4 class="clearfix"> Submitted to </h4> <ul class="software-list-with-thumbnail"> <li> <figure class="software-list-thumbnail challenge_avatar"> <a href="https://hackqc.devpost.com/"><img alt="image" class="thumbnail_image image-replacement" onerror="this.onerror=null;this.src=&#39;https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png&#39;;" src="//d112y698adiu2z.cloudfront.net/photos/production/challenge_thumbnails/000/638/286/datas/medium.png" /></a> </figure> <div class="software-list-content"> <p> <a href="https://hackqc.devpost.com/">HackQC 2018</a> </p> </div> </li> </ul> </div> <section id="app-team"> <h4 class="clearfix"> Created by </h4> <ul class="no-bullet"> <li class="software-team-member" itemprop="member"> <div class="row"> <div class="small-2 large-4 columns"> <figure> <a class="user-profile-link" href="https://devpost.com/Amba"><img alt="Bei Ning Pan" class="software-member-photo user-photo facebook_avatar_image image-replacement" title="Bei Ning Pan" onerror="this.onerror=null;this.src=&#39;https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png&#39;;" src="https://graph.facebook.com/1750919051652192/picture?height=180&amp;width=180" /></a> </figure> </div> <div class="small-10 large-8 columns"> <a class="user-profile-link" href="https://devpost.com/Amba">Bei Ning Pan</a> <span class="follow-button-wrapper" data-context="software-detail" data-layout="condensed" data-follow-through-id="340142"></span> <br> <small></small> </div> </div> </li> <li class="software-team-member" itemprop="member"> <div class="row"> <div class="small-2 large-4 columns"> <figure> <a class="user-profile-link" href="https://devpost.com/MagicHack"><img alt="MagicHack" class="software-member-photo user-photo facebook_avatar_image image-replacement" title="MagicHack" onerror="this.onerror=null;this.src=&#39;https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png&#39;;" src="https://avatars0.githubusercontent.com/u/24930768?height=180&amp;v=4&amp;width=180" /></a> </figure> </div> <div class="small-10 large-8 columns"> <a class="user-profile-link" href="https://devpost.com/MagicHack">MagicHack</a> <span class="follow-button-wrapper" data-context="software-detail" data-layout="condensed" data-follow-through-id="340146"></span> <br> <small></small> </div> </div> </li> </ul> </section> </aside> </div> </article> <section id="share-and-like"> <div class="row"> <div class="small-12 columns"> <div class="clearfix"> <div class="left"> <div class="software-likes"> <div data-like="base"> <a class="like-button button radius secondary" href="https://secure.devpost.com/users/register?flow%5Bdata%5D%5Bsoftware_id%5D=175192&amp;flow%5Bname%5D=like_software&amp;return_to=https%3A%2F%2Fdevpost.com%2Fsoftware%2Fgeolit"> <span class="ss-icon ss-heart"></span> Like </a> </div> <span class="like-counts"> </span> <ul class="like-users inline-list"> </ul> </div> </div> <div class="right hide-for-small"> <div id="software-share" class="hide" data-add-this-buttons="true"> Share this project: <ul class="h-nav clearfix inline-list" id="social-links"> <li id="promote-twitter"> <div class="social-icon"> <div class="addthis_32x32_style addthis_toolbox addthis_default_style" addthis:url="https://devpost.com/software/geolit?utm_campaign=portfolio-share&amp;utm_medium=twitter&amp;utm_source=cp" addthis:title="Check out GeoLit" addthis:description="https://devpost.com/software/geolit"> <a class="addthis_button_twitter" tw:count="false" tw:counturl="https://devpost.com/software/geolit" tw:url="https://devpost.com/software/geolit?utm_campaign=portfolio-share&amp;utm_medium=twitter&amp;utm_source=cp" tw:via="Devpost" tw:text="Check out GeoLit"> </a> </div> </div> </li> <li id="promote-fb-li"> <div class="social-icon"> <div class="addthis_32x32_style addthis_toolbox addthis_default_style" addthis:url="https://devpost.com/software/geolit" addthis:title="GeoLit" addthis:description=""> <div class="custom_images"> <a class="addthis_button_facebook" fb:like:show_faces="false"> </a> </div> </div> </div> </li> <li id="promote-reddit-li"> <div class="social-icon"> <a class="addthis_32x32_style addthis_button_reddit" addthis:url="https://devpost.com/software/geolit?utm_campaign=portfolio-share&amp;utm_medium=reddit&amp;utm_source=cp" addthis:title="GeoLit" ></a> </div> </li> </ul> </div> </div> </div> </div> </div> </section> <article class="content-section"> <div class="row"> <div class="large-12 columns software-updates"> <h2 id="updates">Updates</h2> <article class="content-section software-update with-sidebar" data-commentable-id="139411"> <div class="row"> <div class="large-8 small-12 columns"> <div data-region="actions"></div> <div class="media"> <div class="media-left"> <a class="update-user-avatar user-profile-link" href="https://devpost.com/Amba"><img alt="Bei Ning Pan" class="user-avatar user-photo facebook_avatar_image image-replacement" title="Bei Ning Pan" onerror="this.onerror=null;this.src=&#39;https://d2dmyh35ffsxbl.cloudfront.net/assets/defaults/no-avatar-100-b164b29ca37cbce6b6dbcf4d61d40ba7a3081dfd121a32e2a773eb8f018f0a1f.png&#39;;" src="https://graph.facebook.com/1750919051652192/picture?height=180&amp;width=180" /></a> </div> <div class="media-content"> <p class="author small"> <a class="user-profile-link" href="https://devpost.com/Amba">Bei Ning Pan</a> started this project <span class="light-text"> &mdash; <a class="timestamp light-text" href="/software/geolit/updates/139411"> <time class="timeago" datetime="2018-05-06T11:14:35-04:00"> May 06, 2018 11:14 AM EDT </time> </a> </span> </p> <p><i>Leave feedback in the comments!</i></p> <section class="software-update-comments" data-layout="comments"> <div data-region="load-more"></div> <div data-region="comments"></div> <p class="join-the-conversation"> <strong><a href="https://secure.devpost.com/users/login">Log in</a></strong> or <strong><a href="https://secure.devpost.com/users/register?flow%5Bdata%5D%5Bcommentable_id%5D=139411&amp;flow%5Bname%5D=comment_on_software_update&amp;return_to=https%3A%2F%2Fdevpost.com%2Fsoftware%2Fgeolit">sign up for Devpost</a></strong> to join the conversation. </p> </section> </div> </div> </div> <div class="columns"></div> </div> </article> </div> </div> </article> </section> <footer id="devpost-footer"> <div class="row body"> <div class="small-6 large-3 columns with-bottom-margin"> <nav> <h4>Devpost</h4> <ul> <li><a href="https://info.devpost.com/about">About</a></li> <li><a href="https://info.devpost.com/careers">Careers</a></li> <li><a href="https://info.devpost.com/contact">Contact</a></li> <li><a href="https://help.devpost.com/">Help</a></li> </ul> </nav> </div> <div class="small-6 large-3 columns with-bottom-margin"> <nav> <h4>Hackathons</h4> <ul> <li><a href="https://devpost.com/hackathons">Browse hackathons</a></li> <li><a href="https://devpost.com/software">Explore projects</a></li> <li><a href="https://info.devpost.com">Host a hackathon</a></li> <li><a href="https://info.devpost.com/guides">Hackathon guides</a></li> </ul> </nav> </div> <div class="small-6 large-3 columns"> <nav> <h4>Portfolio</h4> <ul> <li><a href="https://devpost.com/portfolio/redirect?page=projects">Your projects</a></li> <li><a href="https://devpost.com/portfolio/redirect?page=hackathons">Your hackathons</a></li> <li><a href="https://devpost.com/settings">Settings</a></li> </ul> </nav> </div> <div class="small-6 large-3 columns"> <nav> <h4>Connect</h4> <ul class="social-links"> <li> <a href="https://twitter.com/devpost"> <div class="icon"> <i class="fab fa-twitter"></i> </div> <span> Twitter </span> </a> </li> <li> <a href="https://discord.com/invite/HP4BhW3hnp"> <div class="icon"> <i class="fab fa-discord"></i> </div> <span> Discord </span> </a> </li> <li> <a href="https://www.facebook.com/devposthacks" target="_blank"> <div class="icon"> <i class="fab fa-facebook-f"></i> </div> <span> Facebook </span> </a> </li> <li> <a href="https://www.linkedin.com/company/devpost/" target="_blank"> <div class="icon"> <i class="fab fa-linkedin-in"></i> </div> <span> LinkedIn </span> </a> </li> </ul> </nav> </div> </div> <div class="legal-bar-container"> <nav class="row"> <div class="columns"> <div class="legal-bar"> <div class="copyright-notice">&#169; 2025 Devpost, Inc. All rights reserved.</div> <ul> <li><a href="https://info.devpost.com/legal/community-guidelines">Community guidelines</a></li> <li><a href="https://info.devpost.com/legal/security">Security</a></li> <li><a href="https://info.devpost.com/legal/california-consumer-privacy-act">CA notice</a></li> <li><a href="https://info.devpost.com/legal/privacy-policy">Privacy policy</a></li> <li><a href="https://info.devpost.com/legal/terms-of-service">Terms of service</a> </ul> </div> </div> </nav> </div> </footer> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/platform-880b32e6224574219a6262682bf30232e6d3cf413fbad0b34ef1dc688bcd0e81.js"></script> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/reimagine2-98b0f0901310b2f498690f2ce84296694fa08ed5e35c0906d5e2e23b6e9af6d3.js"></script> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/home/home_application-0dbf2c6bbe8e88a45ae9fcc471fb499fc7a3e7b01f2f9a530e92566522736d96.js"></script> <script type="text/javascript" charset="utf-8"> (function() { mixpanel.identify("95585d7d6efdf718d813b1429bfd36f46dd0ebb15272d339769d579860a90f594d2a1fc48b0c001c353e7c7f87a34611c983"); mixpanel.register({}); })(); </script> <script src="https://d2dmyh35ffsxbl.cloudfront.net/assets/slick-be61a9e761cc4aeb92940d6e5e9745b77acadbdaedada42659083117c28c4d00.js"></script> <script type="text/javascript"> (function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); </script> <script type="text/javascript"> (function (d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "https://connect.facebook.net/en_US/sdk.js"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk')); var addthis_config = { data_ga_property: "UA-2233558-21", ui_508_compliant: true, ui_use_addressbook: true, ui_email_note: "I thought you might be interested in GeoLit - GeoLit, pour rester connect茅 avec sa ville et son environnement. It was built with java, javascript, python, html, and css.", ui_email_from: "" }; var addthis_share = { url_transforms: { shorten: { twitter: 'bitly' } }, shorteners: { bitly: {} }, email_template: "software_share_template", email_vars: { Title: "GeoLit", Subject: "Check out this project on Devpost", HomepageLink: "https://devpost.com/?utm_campaign=friends_share&utm_medium=email" }, passthrough : { twitter: { via: "Devpost", text: "Check out GeoLit" }, facebook: { app_id: 115745995110194, redirect_uri: "https://devpost.com/software/geolit" } } }; var DEVPOST_ADDTHIS = { show: function() { $('[data-add-this-buttons]').each(function() {$(this).removeClass("hide")}); }, hide: function() { $('[data-add-this-buttons]').each(function() {$(this).addClass("hide")}); } } </script> <script type="text/javascript" charset="utf-8"> CP.env.addRoutes({ follows_url: "https://devpost.com/follows", search_softwares_url: "https://devpost.com/software/search", new_software_url: "https://devpost.com/software/new", search_hackathons_url: "https://devpost.com/api/hackathons", notifications_url: "https://devpost.com/notifications", api: { users_url: "https://api.devpost.com/users" } }) new Reimagine2(); $(function onDocumentReady() { CP.Home.SoftwareCommentButton.setup(); new CP.ChallengeStateInfoTzConverter( '#app-details', '[data-date-info-tag]', '[data-dates-text]', '' ).convert("Edit up to the submission deadline: "); new CP.GifPlayer CP.Carousel.setup() new CP.Home.EditableContribution('[data-contribution="editable-contribution"]') new CP.Home.LikesModal() CP.Historic.setup(".software-updates"); ventChannel().trigger("updates:list", "geolit"); CP.LinkCollectionTracker.setup(".recognized-tag a", "#app-details-right").track( "Tag Gallery", { "Tag displayed on": "software details page"} ); new CP.Home.SoftwareLinks("[data-role=software-urls]").enhance(); CP.Home.DismissableMessage.setup("[data-alert]"); CP.ChallengeStateInfoTimeago.setup('#submissions, #draft-submissions'); CP.SendFormOnCommandEnter.setup($("#masqueradee")); (function(inputs) { if (typeof inputs.cp_autocomplete === "function") inputs.cp_autocomplete(); inputs.on('click', function(event) { return false; }); })($("#masqueradee")); var FollowButtonApp = new CP.FollowButtonApp({ user: { screen_name: "", follow_through_id: 0 }, urls: { register_url: "https://secure.devpost.com/users/register", user_follows_url: "https://devpost.com//follows", follow_through_url: "https://devpost.com/software_members/follows", follow_request_url: "https://devpost.com/follow_requests" }, follow_through_scope: "software_member" }); FollowButtonApp.start(); var appOptions = {}; CP.Mn.app.start(appOptions); }); </script> <!--[if lt IE 9 ]> <script type="text/javascript"> $(function onDocumentReady() { CP.IE.Notifications.setup(); }); </script> <![endif]--> <script type="application/ld+json"> { "@context": "http://schema.org", "@type": "WebSite", "url": "https://devpost.com/", "potentialAction": { "@type": "SearchAction", "target": "https://devpost.com/software/search?query={query}", "query-input": "name=query" } } </script> </body></html>

Pages: 1 2 3 4 5 6 7 8 9 10