diff --git a/ogn.js b/ogn.js new file mode 100644 index 0000000..afea332 --- /dev/null +++ b/ogn.js @@ -0,0 +1,2527 @@ +/* + ____ _____ _ _ _ _ _ _ _ + / __ \ / ____| (_) | | | \ | | | | | | + | | | |_ __ ___ _ __ | | __| |_ __| | ___ _ __ | \| | ___| |___ _____ _ __| | __ + | | | | '_ \ / _ \ '_ \ | | |_ | | |/ _` |/ _ \ '__| | . ` |/ _ \ __\ \ /\ / / _ \| '__| |/ / + | |__| | |_) | __/ | | | | |__| | | | (_| | __/ | | |\ | __/ |_ \ V V / (_) | | | < + \____/| .__/ \___|_| |_| \_____|_|_|\__,_|\___|_| |_| \_|\___|\__| \_/\_/ \___/|_| |_|\_\ + | | + |_| +*/ + +// Extend Number object with methods to convert between degrees & radians +Number.prototype.toRadians = function() { return this * Math.PI / 180; }; +Number.prototype.toDegrees = function() { return this * 180 / Math.PI; }; + + +var map; +var map_id = 0; +var autoc = ""; +var acaff = ""; +var cton = false; +//var tcolor = ["000000", "FF0000", "00FF00", "0000FF", "FFFF00", "00FFFF", "FF00FF", "C0C0C0", "FFFFFF"]; +var tcolor = ["000000","FF0000","00B000","0000FF","808000","008080","FF00FF","606060","505028","500000","800080","FF8040","80B000","4040FF","804000","000080"]; +var ccolor = 0; +var aflist = true; +var vallpolon = true; +var vallpoloff = true; +var vallmaron = true; +var vallmaroff = true; +var lside = 0; // 0=right 1=left +var online = []; // ([cn,alt*1,cn+"_"+ps,colcn,afdif]); +var offline = []; // ([cn,alt*1,cn+"_"+ps,colcn,afdif]); +var receivers = []; +var all = 0; +var stick = 0; +var barogram = 0; +var pathl = 30; // path length 5' (30points) +var polwidth = 2; // polyline width (path) +var polwidth2 = 4; // polyline width mouseover +var lastpol; // last polyline name display in divInfo +var lastpolon; // last polyline highlighted +var unit = "m"; // metric units +var onoff = 1; // 1: online, 2: offline, 3: Menu +var onoffaff = "OnLine"; +var triasc = 1; // 1: asc 2: desc +var tricol = 0; // 0:tri sur cn 1: tri sur alti +var ett1 = "
      
"; +var w = 0; // watchdog variable +var tmgm, tmwd; +var nbreq = 0; // nb request launch +var wlt = 0; // tasks white list +var wlist = []; +var vasp = false; +var vrec = false; +var vrecl = false; +var vstm = false; +var vapt = false; +var vwin = false; +var vpre = false; +var vtem = false; +var vrai = false; +var hnew = false; +selrec = ""; +var ftype = ["unknown", "Glider/MotorGlider", "Tow Plane", "Helicopter", "Parachute", "Drop Plane", "Hangglider", "Paraglider", "Plane", "Jet", "UFO", "Balloon", "Airship", "Drone", "unknown", "Static Object"]; +var ftypec = ["_b", "", "_g", "_r", "_b", "_b", "_p", "_p", "_b", "_b", "_b", "_b", "_b", "_k", "_b", "_b"]; +var initialResolution = 2 * Math.PI * 6378137 / 256; // == 156543.0339 +var originShift = 2 * Math.PI * 6378137 / 2.0; // == 20037508.34 +var m2ft={"m":1, "i":3.2808}; +var am2ft={"m":"m", "i":"ft"}; +var kh2kt={"m":1, "i":0.53996}; +var akh2kt={"m":"km/h", "i":"kt"}; +var m2kt={"m":1, "i":1.94384}; +var am2kt={"m":"m/s", "i":"kt"}; +var unitlist = {"m":"metric", "i":"nautical"} + + +var hashc="",hashz="",hashm="",hasho="",hashb="",hashs="",hashl="",hasht="",hl=" ",hashw="",hashu="",hashp="",hashn="",hashy="",hasha="", hashg=""; +// center zoom maptype offline bound autoset2ma layers tasks warning units pathlength nolist devtype altitudestick barogram + + +// close popup +function cp() { + clearTimeout(tmop); + var d = document.getElementById('popup'); + d.style.display = 'none'; +} + +// open popup +function op(maxw) { + var d = document.getElementById('popup'); + d.style.display = 'block'; + d.style.width = maxw + 'px'; + d.style.height = maxw + 'px'; + tmop = setTimeout(cp, 15000); +} + +function chunit() { // change units + if (document.getElementById('uni').checked === true) { // units imperial + unit = 'i'; + hashu = "&u=i"; + } else { // units metric + unit = 'm'; + hashu = ""; + } + scaleLineControl.setUnits(unitlist[unit]); + rehash(); +} + +function chstick() { // change altitude stick + if (document.getElementById('stick').checked === true) { // stick visible + stick = 1; + hasha = "&a=1"; + sticksLayer.setVisible(true); + } else { // no altitude stick + stick = 0; + hasha = ""; + sticksLayer.setVisible(false); + } + rehash(); +} + +function chbaro() { // change barogram + if (document.getElementById('baro').checked === true) { // barogram visible + document.getElementById('dbaro').style.display = "block"; + document.getElementById('dbaro').style.visibility = "visible"; + barogram = 1; + hashg = "&g=1"; + } else { // no barogram + document.getElementById('dbaro').style.display = "none"; + barogram = 0; + hashg = ""; + } + rehash(); +} + +function chpl() { // change path length + var prevPathl = pathl; + if (document.getElementById('rp1').checked === true) { // 5 minutes + pathl = 30; + hashp = ""; + } else if (document.getElementById('rp2').checked === true) { // 10 minutes + pathl = 60; + hashp = "&p=2"; + } else { // all points + pathl = 99999; + hashp = "&p=3"; + } + // only delete paths if new path is smaller + if (pathl < prevPathl) { + delpon(); + delpoff(); + } + baro_reSize(); + + rehash(); +} + +function chmap(mid) { // change map + OSMLayer.setVisible(false); + MapsForFreeLayer.setVisible(false); + MapsForFreeLayerW.setVisible(false); + OSMTopoLayer.setVisible(false); + IGNSatelliteLayer.setVisible(false); + l4UMapsLayer.setVisible(false); + StamenTerrainLayer.setVisible(false); + switch(mid) + { + case 1: + OSMTopoLayer.setVisible(true); + break; + case 2: + MapsForFreeLayer.setVisible(true); + MapsForFreeLayerW.setVisible(true); + break; + case 3: + IGNSatelliteLayer.setVisible(true); + break; + case 4: + l4UMapsLayer.setVisible(true); + break; + case 5: + StamenTerrainLayer.setVisible(true); + break; + default: + mid = 0; + OSMLayer.setVisible(true); + } + hashm = "&m=" + mid; + rehash(); +} + + +function devtype() { // devices types selected + var dt = 0; + if (document.getElementById('ICAObox').checked) { + dt += 1; + } + if (document.getElementById('Flarmbox').checked) { + dt += 2; + } + if (document.getElementById('OGNbox').checked) { + dt += 4; + } + if (dt == 7) hashy = ""; // all devices + else hashy = "&y=" + dt; + reseton(); + resetoff(); + rehash(); +} + + +function onofff() { + switch (onoff) { + case 1: + if (all == 1) { + onoffaff = "OffLine"; + onoff = 2; + } else { + onoffaff = "Menu"; + onoff = 3; + document.getElementById("ett2").style.display = "none"; + document.getElementById("dtlist").style.display = "none"; + document.getElementById("menu").style.display = "block"; + } + break; + case 2: + onoffaff = "Menu"; + onoff = 3; + document.getElementById("ett2").style.display = "none"; + document.getElementById("dtlist").style.display = "none"; + document.getElementById("menu").style.display = "block"; + break; + case 3: + onoffaff = "OnLine"; + onoff = 1; + document.getElementById("ett2").style.display = "block"; + document.getElementById("dtlist").style.display = "block"; + document.getElementById("menu").style.display = "none"; + break; + } + afftab(); +} + +function delpon() { // delete all online path + var j = -1; + while (online[++j]) { + // * window["P_" + online[j][2]].getPath().clear(); + window["P_" + online[j][2]].getGeometry().setCoordinates([]); + window["M_" + online[j][2]].set('tra', 0); + window["B_" + online[j][2]] =[]; + } +} + +function delpoff() { // delete all offline path + var j = -1; + while (offline[++j]) { + // * window["P_" + offline[j][2]].getPath().clear(); + window["P_" + offline[j][2]].getGeometry().setCoordinates([]); + window["M_" + offline[j][2]].set('tra', 0); + window["B_" + offline[j][2]] =[]; + } +} + +function deletepath(pol) { + // * window[pol].getPath().clear(); + window[pol].getGeometry().setCoordinates([]); + + window["M_" + pol.substring(2)].set('tra', 0); + window["B_" + pol.substring(2)] =[]; +} + +function deleteallpath() { + if (onoff == 1) { + delpon(); + } else { + delpoff(); + } +} + + +function allpath() { + var j = -1; + if (onoff == 1) { + if (vallpolon === true) vallpolon = false; + else vallpolon = true; + while (online[++j]) { + setvisipol(vallpolon, "P_" + online[j][2]); + } + } else { + if (vallpoloff === true) vallpoloff = false; + else vallpoloff = true; + while (offline[++j]) { + setvisipol(vallpoloff, "P_" + offline[j][2]); + } + } + afftab(); +} + +function allmarker() { + var j = -1; + var opa = true; + if (onoff == 1) { + if (vallmaron === true) { + vallmaron = false; + opa = false; + } + else vallmaron = true; + while (online[++j]) { + setvisimar(opa, "M_" + online[j][2]); + setvisipol(opa, "S_" + online[j][2]); + } + } else { + if (vallmaroff === true) { + vallmaroff = false; + opa = false; + } + else vallmaroff = true; + while (offline[++j]) { + setvisimar(opa, "M_" + offline[j][2]); + setvisipol(opa, "S_" + offline[j][2]); + } + } + //map.render(); + afftab(); +} + + + + +function tricn() { + if (tricol == 1) triasc = 1; + else if (triasc == 1) triasc = 2; + else triasc = 1; + tricol = 0; + afftab(); +} + +function trialti() { + if (tricol === 0) triasc = 1; + else if (triasc == 1) triasc = 2; + else triasc = 1; + tricol = 1; + afftab(); +} + + +function highlight(poly,wid) { + var p = poly.substring(2); + var colactive = window["M_" + p].get('icol'); + var ncol = tcolor[colactive]; + var visib = window[poly].get('visi'); + window[poly].setStyle(new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: [parseInt(ncol.substring(0,2), 16), parseInt(ncol.substring(2,4), 16), parseInt(ncol.substring(4), 16), visib ], // version avec canal alpha pour cacher/afficher + width: wid + }) + })); +} + + +function focuson(poly) { + focusoff(lastpolon); + if (document.getElementById(poly) !== null) document.getElementById(poly).className = 'yel'; + highlight(poly,polwidth2); + lastpolon = poly; +} + +function focusoff(poly) { + if (document.getElementById(poly) !== null) document.getElementById(poly).className = 'whi'; + + if (document.getElementById(poly) !== null) document.getElementById(poly).className = 'whi'; + if ( typeof(window[poly]) != 'undefined' ) { + highlight(poly,polwidth); + } + + +} + +function asp() { + if (document.getElementById('aspbox').checked) { + vasp = true; + airspaceoverlay.setVisible(true); + rempl(4, "z"); + } else { + vasp = false; + airspaceoverlay.setVisible(false); + rempl(4, " "); + } + rehash(); +} + +function apt() { + if (document.getElementById('aptbox').checked) { + vapt = true; + airportoverlay.setVisible(true); + rempl(5, "a"); + } else { + vapt = false; + airportoverlay.setVisible(false); + rempl(5, " "); + } + rehash(); +} + +function wind() { + if (document.getElementById('winbox').checked) { + vwin = true; + windoverlay.setVisible(true); + if (map.getView().getZoom() > 7 ) map.getView().setZoom(7); + rempl(2, "v"); + } else { + vwin = false; + windoverlay.setVisible(false); + rempl(2, " "); + } + rehash(); +} + +function pres() { + if (document.getElementById('prebox').checked) { + vpre = true; + presoverlay.setVisible(true); + if (map.getView().getZoom() > 7 ) map.getView().setZoom(7); + rempl(3, "p"); + } else { + vpre = false; + presoverlay.setVisible(false); + rempl(3, " "); + } + rehash(); +} + +function tempe() { + if (document.getElementById('tembox').checked) { + vtem = true; + tempoverlay.setVisible(true); + if (map.getView().getZoom() > 7 ) map.getView().setZoom(7); + rempl(1, "t"); + } else { + vtem = false; + tempoverlay.setVisible(false); + rempl(1, " "); + } + rehash(); +} + +function rain() { + if (document.getElementById('raibox').checked) { + vrai = true; + rainoverlay.setVisible(true); + if (map.getView().getZoom() > 7 ) map.getView().setZoom(7); + rempl(7, "n"); + } else { + vrai = false; + rainoverlay.setVisible(false); + rempl(7, " "); + } + rehash(); +} + +function hidenew() { + if (document.getElementById('hnewbox').checked) hnew = true; + else hnew = false; +} + +function reseton() { // delete all online markers and their path + var j = -1; + while (online[++j]) { + iconLayerSource.removeFeature(window["M_" + online[j][2]]); + delete window["M_" + online[j][2]]; + + sticksLayerSource.removeFeature(window["S_" + online[j][2]]); + delete window["S_" + online[j][2]]; + + traceLayerSource.removeFeature(window["P_" + online[j][2]]); + delete window["P_" + online[j][2]]; + + delete window["B_" + online[j][2]]; + } +map.render(); +} + +function resetoff() { // delete all offline markers and their path + var j = -1; + while (offline[++j]) { + iconLayerSource.removeFeature(window["M_" + offline[j][2]]); + delete window["M_" + offline[j][2]]; + + sticksLayerSource.removeFeature(window["S_" + offline[j][2]]); + delete window["S_" + offline[j][2]]; + + traceLayerSource.removeFeature(window["P_" + offline[j][2]]); + delete window["P_" + offline[j][2]]; + + delete window["B_" + offline[j][2]]; + } +map.render(); +} + + +function lineoff() { + if (document.getElementById('offl').checked) { + all = 0; + resetoff(); + hasho = ""; + } else { + all = 1; + hasho = "&o=1"; + } + rehash(); +} + +function bounds() { + if (document.getElementById('boundsbox').checked) { + bound = true; + if (document.getElementById('astmbox').checked) { + vstm = false; + hashs = ""; + document.getElementById('astmbox').checked = false; + } + amax = parseFloat(document.getElementById('latmax').value); + amin = parseFloat(document.getElementById('latmin').value); + if (amin > amax) { + var tmp = amax; + amax = amin; + amin = tmp; + } + omax = parseFloat(document.getElementById('lonmax').value); + omin = parseFloat(document.getElementById('lonmin').value); + if (omin > omax) { + var tmp = omax; + omax = omin; + omin = tmp; + } + if (amax > 85) amax = 85; + if (amin < -85) amin = -85; + if (omax > 180) omax = 180; + if (omin < -180) omin = -180; + boundc = "&b=" + amax + "&c=" + amin + "&d=" + omax + "&e=" + omin; + document.getElementById('latmax').value = amax; + document.getElementById('latmin').value = amin; + document.getElementById('lonmax').value = omax; + document.getElementById('lonmin').value = omin; + reseton(); + resetoff(); + hashb = "&b=" + amax.toFixed(4) + "," + amin.toFixed(4) + "," + omax.toFixed(4) + "," + omin.toFixed(4); + } else { + bound = false; + if (vstm === false) boundc = ""; + hashb = ""; + } + rehash(); +} + +function afftab() { + var j = -1; + var dlistd = ""; + var mar = ""; + var pol = ""; + var affcpt = ""; + + switch (onoff) { + case 1: + online.sort(ASC); + if (triasc == 2) online.reverse(); + while (online[++j]) { + mar = "M_" + online[j][2]; + pol = "P_" + online[j][2]; + stk = "S_" + online[j][2]; + + dlistd += "" + + "" + + "" + + "" + + "" + + ""; + } + affcpt = " (" + online.length + ")"; + break; + case 2: + offline.sort(ASC); + if (triasc == 2) offline.reverse(); + while (offline[++j]) { + mar = "M_" + offline[j][2]; + pol = "P_" + offline[j][2]; + stk = "S_" + offline[j][2]; + dlistd += ""; + } + affcpt = " (" + offline.length + ")"; + break; + case 3: + affcpt = "         "; + break; + } + dlistd += "
" + online[j][0] + "  "; + + if (unit == "i") { + dlistd += (online[j][1] * m2ft[unit]).toFixed(); + } // { var tv=online[j][1]*m2ft[unit]; dlistd+= tv.toFixed(); } + else dlistd += online[j][1] + "m"; + dlistd += "
" + offline[j][0] + "  "; +// dlistd += "
" + offline[j][0] + "  "; + if (unit == "i") { + dlistd += (offline[j][1] * m2ft[unit]).toFixed(); + } else dlistd += offline[j][1] + "m"; + dlistd += "
"; + document.getElementById("dtlist").innerHTML = dlistd; + if (aflist === true) document.getElementById("onoff").innerHTML = "" + onoffaff + "" + affcpt; + +} + +function ASC(a, b) { + a = a[tricol]; + b = b[tricol]; + if (a > b) + return 1; + if (a < b) + return -1; + return 0; +} + + +function alist() { + if (aflist === true) { + document.getElementById("ett1").innerHTML = "
"; + document.getElementById('dlist').style.width = "20px"; + document.getElementById('dlist').style.height = "20px"; + if (lside == 1) document.getElementById('ac').style.left = "0px"; + else document.getElementById('ac').style.right = "0px"; + centeroff(); + document.getElementById('dbaro').style.display = "none"; + aflist = false; + hashn = "&n=0"; + } else { + document.getElementById("ett1").innerHTML = ett1; + document.getElementById('dlist').style.width = "180px"; + document.getElementById('dlist').style.height = "90%"; + if (lside == 1) document.getElementById('ac').style.left = "180px"; + else document.getElementById('ac').style.right = "180px"; + if (document.getElementById('baro').checked) document.getElementById('dbaro').style.display = "block"; + aflist = true; + afftab(); + hashn = ""; + } + rehash(); +} + +function sideclick() { // change list position (left<->right) + if (lside === 0) { + document.getElementById('dlist').className = "lleft"; + document.getElementById('dbaro').className = "baroright"; + document.getElementById('ac').className = "acleft"; + document.getElementById('ac').style.right = ""; + lside = 1; + + } else { + document.getElementById('dlist').className = "lright"; + document.getElementById('dbaro').className = "baroleft"; + document.getElementById('ac').className = "acright"; + document.getElementById('ac').style.left = ""; + lside = 0; + + } +} + + +function autocenter(mark) { + // ### + document.getElementById("divInfoac").innerHTML = "AC: " + window[mark].get('title'); + autoc = mark; + // ### + document.getElementById("divInfoac").style.display = "block"; + map.getView().setCenter(ol.proj.fromLonLat([window[mark].get('lon'), window[mark].get('lat')])); +} + + + +function centeron(mark) { + cton = true; + map.getView().setCenter(ol.proj.fromLonLat([window[mark].get('lon'), window[mark].get('lat')])); +} + + +function centeroff() { + if (autoc !== "") { + map.getView().setCenter(ol.proj.fromLonLat([window[autoc].get('lon'), window[autoc].get('lat')], 'EPSG:4326', 'EPSG:3857')); + } + cton = false; +} + + +function setvisimar(chk, mar) { + var vis = ((chk === true)?1:0); + window[mar].getStyle().getImage().setOpacity(vis); + window[mar].changed(); + window[mar].set('visi', vis); +} + +function setvisistk(chk, stk) { + setvisipol(chk, stk); +} + + +function setvisipol(chk, pol) { + var vis = ((chk === true)?1:0); + var hcol = window[pol].get('col'); + window[pol].setStyle( + new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: [parseInt(hcol.substring(0,2), 16), parseInt(hcol.substring(2,4), 16), parseInt(hcol.substring(4), 16), vis], + width: polwidth + }) + }) + ); + + window[pol].changed(); + window[pol].set('visi', vis); +} + + +function isvisib(pol) { + if (window[pol].get('visi') == 1) return "checked"; + else return ""; +} + + + +function dec2dms(dec) { + dec = Math.abs(dec); + var decd = Math.floor(dec); + var decm = Math.floor((dec - decd) * 60); + var decs = Math.floor((dec - decd - (decm / 60)) * 3600); + return "" + decd + "° " + decm + "' " + decs + "\""; +} + +function changecolor(mark) { + var colactive = window[mark].get('icol'); + if (++colactive == tcolor.length) colactive = 0; + var ncol = tcolor[colactive]; + var visib = window[window[mark].get('poly')].get('visi'); + + + window[window[mark].get('poly')].setStyle(new ol.style.Style({ + stroke: new ol.style.Stroke({ + //color: '#' + hcol, // version courte initiale + color: [parseInt(ncol.substring(0,2), 16), parseInt(ncol.substring(2,4), 16), parseInt(ncol.substring(4), 16), visib ], // version avec canal alpha pour cacher/afficher + width: polwidth + }) + + })); + + + + window[mark].set('icol', "" + colactive); + window[window[mark].get('poly')].set('col', "" + ncol); + return "#" + ncol; + +} + +function redraw(pol) { + var p = pol.substring(2); + var mrk = window["M_" + p]; + var fi = mrk.get('fid'); + var lo = mrk.get('lon'); + + mrk.set('tra', 1); + downloadUrl(tld + '/' + cxml1 + '?id=' + p + "&l=" + lo, function(data) { + var vtrace = data.documentElement.getElementsByTagName("m"); + var err = parseFloat(vtrace[0].getAttribute("e")); + var idd = vtrace[0].getAttribute("i"); + var encodedt = vtrace[0].getAttribute("r"); + + if (err === 0 && encodedt.length > 2) { + + var format = new ol.format.Polyline({ + //factor: 1e6 + }); + + var line = format.readGeometry(encodedt, { + dataProjection: 'EPSG:4326', + featureProjection: 'EPSG:900913' + }); + + window['P_' + idd].getGeometry().setCoordinates([]); + window['P_' + idd].setGeometry(line); + + } + }); +} + + +function taskbox() { + var vtas = false; + if (document.getElementById('taskbox').checked) { + vtas = true; + if (wlt == 2) { + --wlt; + reseton(); + resetoff(); + } + } else { + if (wlt == 1) { + ++wlt; + reseton(); + resetoff(); + } + } + + taskLayer.setVisible(vtas); +} + + +function reclbox() { + if (document.getElementById('reclbox').checked) { + vrecl = true; + rempl(6, "r"); + } else { + vrecl = false; + rempl(6, " "); + } + + receiverLayer.setVisible(vrecl); + rehash(); +} + + +function checkrec() { + + downloadUrl(tld + '/' + rxml, function(data) { + var vlrec = data.documentElement.getElementsByTagName("m"); + var err = parseFloat(vlrec[0].getAttribute("e")); + if (err === 0 && vlrec.length > 1) { + selrec = ""; + // effacer markers + var j = -1; + while (receivers[++j]) { + receiverLayerSource.removeFeature(window["R_" + receivers[j][0]]); + delete window["R_" + receivers[j][0]]; + } + receivers.length = 0; + for (var i = 1; i < vlrec.length; i++) { + var re = vlrec[i].getAttribute("a"); + var rlat = parseFloat(vlrec[i].getAttribute("b")); + var rlon = parseFloat(vlrec[i].getAttribute("c")); + var ract = parseInt(vlrec[i].getAttribute("d")); + var rind = 2000 * ract; + selrec += ""; + receivers.push([re, rlat, rlon]); // lat et lon stockées mais jamais utilisées ? + + + window["R_" + re] = new ol.Feature({ + geometry: new ol.geom.Point(ol.proj.fromLonLat([rlon,rlat])), + lat: rlat, + lon: rlon, + mark: "R", + info: re + }); + + window["R_" + re].setStyle(new ol.style.Style({ + image: new ol.style.Icon({ + anchor: [0.5, 1], + opacity: 1, + src: "" + tld + "/pict/rec" + ract + ".png", + }) + })); + + receiverLayerSource.addFeature(window["R_" + re]); + } + setTimeout(checkrec, 120000); + } else { + selrec = ""; + setTimeout(checkrec, 20000); + } + reclbox(); + }); +} + + + + +function receiv() { + if (document.getElementById('recbox').checked) { + vrec = true; + } else { + vrec = false; + } +} + + +function affinfodata(mark) { + var mrk = window[mark]; + var vz = mrk.get('vz') * m2kt[unit]; + var vx = mrk.get('speed') * kh2kt[unit]; + var al = mrk.get('alt') * m2ft[unit]; + document.getElementById("aclt").innerHTML = mrk.get('tim'); + document.getElementById("acla").innerHTML = mrk.get('lat'); + document.getElementById("aclo").innerHTML = mrk.get('lon'); + document.getElementById("acal").innerHTML = al.toFixed() + " " + am2ft[unit]; + document.getElementById("acsp").innerHTML = vx.toFixed() + " " + akh2kt[unit]; + document.getElementById("actr").innerHTML = mrk.get('track'); + document.getElementById("acvz").innerHTML = ((vz >= 0) ? "+" : "–") + Math.abs(vz).toFixed(1) + " " + am2kt[unit]; + var re = mrk.get('rec'); + var red = "" + re + ""; + if (typeof(window["R_" + re]) != 'undefined') { + var mre = window["R_" + re]; + var di = dist(mrk.get('lat'), mrk.get('lon'), mre.get('lat'), mre.get('lon')); + red += " (" + di.toFixed() + " Km)"; + } else { + red += " (?)"; + } + document.getElementById("acrx").innerHTML = red; +} + +function affinfodata2(mark) { + var mrk = window[mark]; + document.getElementById("acmo").innerHTML = mrk.get('model'); +} + +function affinfo(mark) { + affinfodata(mark); + var mrk = window[mark]; + var rg = mrk.get('reg'); + var fi = mrk.get('fid'); + var vd = "block"; + if (fi == rg) vd = "none"; + document.getElementById("ac1").style.display = vd; + document.getElementById("accn").innerHTML = mrk.get('cn'); + document.getElementById("acre").innerHTML = rg; + document.getElementById("acty").innerHTML = ftype[mrk.get('type') * 1]; + document.getElementById("acmo").innerHTML = ""; + if (fi != "hidden") { + //document.getElementById("acfi").innerHTML = "" + fi + ""; + document.getElementById("acfi").innerHTML = "" + fi + ""; + document.getElementById("acif").innerHTML = "Infos    Pictures"; + if (mrk.get('dinfo') === "") { + downloadUrl(tld + '/' + dxml + '?i=' + mark + '&f=' + fi, function(data) { + var dat = data.documentElement.getElementsByTagName("m"); + var err = parseFloat(dat[0].getAttribute("g")); + var mrk = dat[0].getAttribute("i"); + if (err === 0) { + window[mrk].set('model', "" + dat[0].getAttribute("c")); + affinfodata2(mrk); + document.getElementById("ac2").style.display = "block"; + window[mrk].set('dinfo', "ok"); + } else { + window[mrk].set('dinfo', "_"); + document.getElementById("ac2").style.display = "none"; + } + }); + + + } else { + if (mrk.get('dinfo') != "_") { + affinfodata2(mark); + document.getElementById("ac2").style.display = "block"; + } else { + document.getElementById("ac2").style.display = "none"; + } + } + } else { + document.getElementById("acfi").innerHTML = fi; + document.getElementById("ac2").style.display = "none"; + document.getElementById("acif").innerHTML = ""; + document.getElementById("acmo").innerHTML = ""; + } + acaff = mark; + document.getElementById("ac").style.display = "block"; +} + +function settomap() { + + + var extent = map.getView().calculateExtent(map.getSize()); + var bottomLeft = ol.proj.transform(ol.extent.getBottomLeft(extent),'EPSG:3857', 'EPSG:4326'); + var topRight = ol.proj.transform(ol.extent.getTopRight(extent),'EPSG:3857', 'EPSG:4326'); + + amax = topRight[1]; + amin = bottomLeft[1]; + omax = topRight[0]; + omin = bottomLeft[0]; + + if (amax > 85) amax = 85; + if (amin < -85) amin = -85; + if (omax > 180) omax = 180; + if (omin < -180) omin = -180; + document.getElementById('latmax').value = amax; + document.getElementById('latmin').value = amin; + document.getElementById('lonmax').value = omax; + document.getElementById('lonmin').value = omin; + if (bound === true) bounds(); + if (vstm === true) { + boundc = "&b=" + amax + "&c=" + amin + "&d=" + omax + "&e=" + omin; + hashs = "&s=1"; + rehash(); + } + +} + +function astm() { + if (document.getElementById('astmbox').checked) { + vstm = true; + if (document.getElementById('boundsbox').checked) { + bound = false; + document.getElementById('boundsbox').checked = false; + hashb = ""; + } + settomap(); + + } else { + vstm = false; + if (bound === false) boundc = ""; + hashs = ""; + rehash(); + } +} + +function dist(lat1, lon1, lat2, lon2) { + var torad = Math.PI / 180; + lat1 *= torad; + lon1 *= torad; + lat2 *= torad; + lon2 *= torad; + var dt = Math.acos((Math.sin(lat1) * Math.sin(lat2)) + (Math.cos(lat1) * Math.cos(lat2) * Math.cos(lon1 - lon2))); + dt *= 6366; + return dt; +} + +function baro_reSize() { + switch(pathl) { + case 30: + document.getElementById('dbaro').style.width = "155px"; // 70+85 + // weird behaviour for canvas sizing versus scaling + document.getElementById('div_baro').style.width = "70px"; + document.getElementById('div_baro').width = 70; + X_lines = 5+1; + break; + case 60: + document.getElementById('dbaro').style.width = "225px"; // 140+85 + // weird behaviour for canvas sizing versus scaling + document.getElementById('div_baro').style.width = "140px"; + document.getElementById('div_baro').width = 140; + X_lines = 10+1; + break; + default: + document.getElementById('dbaro').style.width = "295px" ; //210+85 + // weird behaviour for canvas sizing versus scaling + document.getElementById('div_baro').style.width = "210px"; + document.getElementById('div_baro').width = 210; + X_lines = 15+1; + } +} + +function baro_plot() { + + var j = -1; + while (online[++j]) { + // * if (window["P_" + online[j][2]].getVisible() === true) { + if (window["P_" + online[j][2]].get('visi') == 1) { + baro_plotData(online[j][0],online[j][3],window["B_" + online[j][2]]); + } + } + +} + +function gesmark() { + if (nbreq > 0) { + --nbreq; + return; + } + + ++nbreq; + downloadUrl(tld + '/' + cxml + "?a=" + all + boundc + recc + parc + tz + hashy, function(data) { + ++w; + var planeurs = data.documentElement.getElementsByTagName("m"); + online.length = 0; + offline.length = 0; + var colcn; + var del = "N"; + + for (var i = 0; i < planeurs.length; i++) { + // récupération des données transmises pour ce planeur + var tab = planeurs[i].getAttribute("a").split(","); + + + var fid = tab[12]; + if (wlt == 1) { + if (wlist.indexOf(fid) == -1) continue; + } + var ps = tab[3]; + var lat = parseFloat(tab[0]); + var lon = parseFloat(tab[1]); + var cn = tab[2]; + if (cn == "") cn = "_"; + + var alt = tab[4]; + var tim = tab[5]; + var ddf = tab[6]; + var track = tab[7]; + var speed = tab[8]; + var vz = tab[9]; + var typ = tab[10]; + var rec = tab[11]; + + var crc = tab[13]; + + + var posi = new ol.geom.Point(ol.proj.fromLonLat([lon,lat])); + var te = 0; //altitude sol +// elevator.getElevationForLocations({'locations': [posi]}, function(results, status) { +// if (status == google.maps.ElevationStatus.OK) { +// if (results[0]) { +// te = Math.round(results[0].elevation); +// } +// } +// }); + var posiBaton = new ol.geom.Point(ol.proj.fromLonLat([lon,lat+(0.00001*(alt-te))])); + + + var polyvar = "P_" + crc; + var markvar = "M_" + crc; + var stickvar = "S_" + crc; + var barovar = "B_" + crc; + var visib = 1; + + + if (typeof(window[polyvar]) == 'undefined') // If aircraft not already created + { + // create path color for array + hcol = tcolor[ccolor]; + if (hnew === true) visib = 0; // * false; + + // create polyline + + window[polyvar] = new ol.Feature({ + geometry: new ol.geom.LineString([ol.proj.fromLonLat([lon,lat])]) + }); + window[polyvar].setStyle(new ol.style.Style({ + stroke: new ol.style.Stroke({ + //color: '#' + hcol, // version courte initiale + color: [parseInt(hcol.substring(0,2), 16), parseInt(hcol.substring(2,4), 16), parseInt(hcol.substring(4), 16), visib ], // version avec canal alpha pour cacher/afficher + width: polwidth + }) + + })); + try { + traceLayerSource.addFeature(window[polyvar]); + } catch(err) { + console.log("Pol:"); + console.log(window[polyvar]); + } + window[polyvar].set('poly', "" + polyvar); + window[polyvar].set('visi', visib); + window[polyvar].set('col', "" + hcol); + window[polyvar].set('nom', "" + cn + " - " + ps); + + + // création du Baton d'altitude + + + window[stickvar] = new ol.Feature({ + geometry: new ol.geom.LineString([ol.proj.fromLonLat([lon,lat])]) + }); + window[stickvar].setStyle(new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: [0, 0, 0, visib ], // version avec canal alpha pour cacher/afficher // black for now + // color: [parseInt(hcol.substring(0,2), 16), parseInt(hcol.substring(2,4), 16), parseInt(hcol.substring(4), 16), visib ], // version avec canal alpha pour cacher/afficher + width: polwidth + }) + + })); + window[stickvar].set('nom', "" + cn + " - " + ps); + window[stickvar].set('baton', "" + stickvar); + window[stickvar].set('col', "000000"); // stick color is black + sticksLayerSource.addFeature(window[stickvar]); + + // création du Marker + + + + window[markvar] = new ol.Feature({ + geometry: posi, + title: cn + " - " + ps + " @ " + alt + "m", + // id: markvar + lat: lat, + lon: lon + }); + + window[markvar].setStyle(new ol.style.Style({ + image: new ol.style.Icon({ + anchor: [0.5, 1], + opacity: visib, + src: "" + tld + "/markers/" + cn + ftypec[typ * 1] + ".png" + }) + })); + + window[markvar].set('poly', "" + polyvar); + window[markvar].set('mark', "" + markvar); + window[markvar].set('stick', "" + stickvar); + window[markvar].set('nom', "" + cn + " - " + ps); + window[markvar].set('cn', "" + cn); + window[markvar].set('reg', "" + ps); + if (fid == "0") fid = "hidden"; + window[markvar].set('fid', "" + fid); + window[markvar].set('type', "" + typ); + window[markvar].set('icol', "" + ccolor); + window[markvar].set('off', 0); + window[markvar].set('dinfo', ""); + // * window[markvar].setTitle("" + cn + " - " + ps + " @ " + (alt * m2ft[unit]).toFixed() + am2ft[unit] + " @ " + tim); + window[markvar].set('speed', "" + speed); + window[markvar].set('track', "" + track); + window[markvar].set('vz', "" + vz); + window[markvar].set('tim', "" + tim); + window[markvar].set('rec', "" + rec); + window[markvar].set('alt', "" + alt); + window[markvar].set('tra', 0); + window[markvar].set('visi', visib); + + iconLayerSource.addFeature(window[markvar]); + + + // create array and add barogram time and altitude + window[barovar] = []; + window[barovar].push([tim.toSeconds(),alt]); + // reset the time scale on the barogram + Set_XY_Scale(tim,alt); + + if (++ccolor == tcolor.length) ccolor = 0; + } // fin du if typeof... + + var difalt = vz * 1; + + colcn = window[polyvar].get('col'); + + if (ddf < 600) { // if online (active during 10 last minutes) + if (ddf > 120) afdif = "n"; + else if (difalt === 0) afdif = "z"; + else if (difalt < -4) afdif = "mmm"; + else if (difalt < -1) afdif = "mm"; + else if (difalt < 0) afdif = "m"; + else if (difalt > 4) afdif = "ppp"; + else if (difalt > 1) afdif = "pp"; + else afdif = "p"; + + + + online.push([cn, alt * 1, crc, '#'+colcn, afdif]); + + if (window[markvar].get('off') == 1) { + window[markvar].setStyle(new ol.style.Style({ + image: new ol.style.Icon({ + anchor: [0.5, 1], + src: "" + tld + "/markers/" + cn + ftypec[typ * 1] + ".png" + }) + })); + window[markvar].set('off', 0); + window[markvar].changed(); + map.render(); + } + + if (window[markvar].get('tra') === 0) { // partial path, not whole path + // * if (window[polyvar].getPath().getLength() >= pathl) window[polyvar].getPath().removeAt(0); // remove first point of the trace + if (window[polyvar].getGeometry().getCoordinates().length >= pathl) { + window[polyvar].getGeometry().setCoordinates( window[polyvar].getGeometry().getCoordinates().slice(1) ); + } + } + + // * window[polyvar].getPath().push(posi); // ajout d'une position sur le tracé + window[polyvar].getGeometry().appendCoordinate(ol.proj.fromLonLat([lon, lat])); + window[polyvar].changed(); + map.render(); + + + if (typeof(window[markvar]) != 'undefined') { + if (stick === 1) { + + window[stickvar].getGeometry().setCoordinates([ol.proj.fromLonLat([lon,lat]),ol.proj.fromLonLat([lon,lat+(0.00001*(alt-te))])]); + window[markvar].setGeometry(posiBaton); // déplace le marker + + + } else { + + try { + window[markvar].setGeometry(posi); // déplace le marker + } + catch(err) { + console.log("err maj posi du marker " + markvar + " : " + err.message); + } + + } + try { + window[markvar].changed(); + } catch (err) { + console.log("Mar ch"); + console.log(window[markvar]); + } + map.render(); + + + // change l'altitude affichée + + // * window[markvar].setTitle("" + cn + " - " + ps + " @ " + (alt * m2ft[unit]).toFixed() + am2ft[unit] + " @ " + tim); + window[markvar].set('title', "" + cn + " - " + ps + " @ " + (alt * m2ft[unit]).toFixed() + am2ft[unit] + " @ " + tim); + window[markvar].set('speed', "" + speed); + window[markvar].set('track', "" + track); + window[markvar].set('vz', "" + vz); + window[markvar].set('tim', "" + tim); + window[markvar].set('rec', "" + rec); + window[markvar].set('alt', "" + alt); + window[markvar].set('lat', lat); + window[markvar].set('lon', lon); + } + + + // check display time and remove old data + if (window[barovar].length >= pathl) window[barovar].shift(); // remove first point of the trace + // add barogram data + window[barovar].push([tim.toSeconds(),alt]); + Set_XY_Scale(tim,alt); + + } else { // offline + if (all === 0) { // if offline not displayed + // if (typeof(window[polyvar]) != 'undefined') { // si pas déjà effacé + if (typeof(window[markvar]) != 'undefined') { // si pas déjà effacé +// // efface et détruit le PolyLine et le Marker + // efface et détruit le baton, le PolyLine et le Marker + + /// ### window[stickvar].setMap(null); + delete window[stickvar]; + + delete window[barovar]; + + iconLayerSource.removeFeature(window[markvar]); + traceLayerSource.removeFeature(window[polyvar]); + map.render(); + delete window[markvar]; + delete window[polyvar]; + + if (autoc == markvar) { + autoc = ""; + document.getElementById("divInfoac").innerHTML = " "; + document.getElementById("divInfoac").style.display = "none"; + } + if (acaff == markvar) acaff = ""; + + } + } else { // if offline displayed + offline.push([cn, alt * 1, crc, '#'+colcn, "n"]); + if (window[markvar].get('off') === 0) { + + + window[markvar].setStyle(new ol.style.Style({ + image: new ol.style.Icon({ + anchor: [0.5, 1], + src: "" + tld + "/markers/" + cn + "_o.png" + }) + })); + window[markvar].set('off', 1); + window[markvar].changed(); + map.render(); + } + } + } + + + if (autoc == markvar) { + document.getElementById("divInfoac").innerHTML = "AC: " + cn + " - " + ps + " @ " + (alt * m2ft[unit]).toFixed() + am2ft[unit]; + if (cton === false) map.getView().setCenter(ol.proj.transform([lon, lat], 'EPSG:4326', 'EPSG:3857')); + } + + if (acaff == markvar) affinfodata(markvar); + + + } // fin du for (var i = 0; i < planeurs.length; i++) + // tri et affichage du tableau + + afftab(); + + baro_plotRefresh(); + baro_plot(); + + if (--nbreq < 0) { + nbreq = 0; + } else { + tmgm = setTimeout(gesmark, 10000); + } + }); + +} + +function wd() { + if (w === 0) { + clearTimeout(tmgm); + gesmark(); + } + w = 0; + tmwd = setTimeout(wd, 30000); +} + +function rehash() { +// window.location.replace("#" + hashc + hashz + hashm + hasho + hashb + hashs + hashl + hashw + hashp + hashu + hashn + hashy); + window.location.replace("#" + hashc + hashz + hashm + hasho + hashb + hashs + hashl + hashw + hashp + hashu + hashn + hashy + hasha + hashg); +} + +function rempl(po, c) { + var thl = hl; + hl = thl.substring(0, po) + c + thl.substring(po + 1); + thl = hl.replace(/ /g, ''); + if (thl === '') hashl = ''; + else hashl = "&l=" + thl; +} + +function taskclic() { + document.getElementById("chfile").click(); +} + +function deg2rad(deg) { + var pi = Math.PI; + return deg * (pi/180); +} + + +function discap(latdep,londep,latarr,lonarr) { // retourne la distance en km et le cap en degrés (les latitudes et longitudes fournies sont en radian, ouest et sud sont négatifs. + var varc = Math.acos( (Math.sin(latdep)*Math.sin(latarr)) + (Math.cos(latdep)*Math.cos(latarr)*Math.cos(londep-lonarr)) ); + distance = 6371 * varc; + if (londep == lonarr) { + if (latarr == latdep) { + cap = 0; + } else { + if (latarr > latdep) { + cap = 0; + } else { + cap = 180; + } + } + } else { + // ********* calcul cap ************ + var radpole = 1.57079633; // 90°=1.57... rad + var vara = radpole - latarr; + var varb = radpole - latdep; + var res = (Math.cos(vara)-(Math.cos(varb)*Math.cos(varc)))/(Math.sin(varb)*Math.sin(varc)); + if (res > 1) { + res=1; + } else { + if (res < -1) { + res = -1; + } + } + cap=Math.acos(res)*57.29577951; // car 1 rad= 57.29577951 degrés + if (londep > lonarr) { + cap = 360 - cap; + } + } + cap = Math.round(cap); +} + + +function loadtask(cont) { + var tasks = []; + try { + tasks = tasks.concat(parseJSONTasks(cont)); + } catch (err) { + tasks.push(parseXCSoarTask(cont)); + } + + for (var i = 0; i < tasks.length; i++) { + showTask(tasks[i]); + filterDevices(tasks[i].wlist); + } + taskLayer.setVisible(true); +} + +function parseJSONTasks(cont) { + var res = JSON.parse(cont); + + var tasks = []; + + for (var i = 0; i < res.tasks.length; i++) { + var task = {}; + task.name = res.tasks[i].name; + task.color = res.tasks[i].color; + + var tp = []; + if (typeof res.tasks[i].legs != 'undefined') { + for (var ii = 0; ii < res.tasks[i].legs.length; ii++) { + if (res.tasks[i].legs[ii][0] == 'C') { // Circle + console.log("Circle 1"); + tp[tp.length - 1].type = "circle"; + tp[tp.length - 1].radius = res.tasks[i].legs[ii][1]; + } else if (res.tasks[i].legs[ii][0] == 'L') { // Line + console.log("Line"); + tp[tp.length - 1].type = "line"; + tp[tp.length - 1].radius = res.tasks[i].legs[ii][1]; + } else if (res.tasks[i].legs[ii][0][0] == 'Q') { // Quadrant + console.log("Quadrant"); + tp[tp.length - 1].type = "quadrant"; + if (res.tasks[i].legs[ii][0].length > 1) + tp[tp.length - 1].angle = Number(res.tasks[i].legs[ii][0].substr(1)); + else + tp[tp.length - 1].angle = 90; + tp[tp.length - 1].radius = res.tasks[i].legs[ii][1]; + } else if (res.tasks[i].legs[ii][0] == 'K') { // Key hole + console.log("Keyhole"); + tp[tp.length - 1].type = "keyhole"; + tp[tp.length - 1].radius = res.tasks[i].legs[ii][1]; + } else if (typeof res.tasks[i].legs[ii][1] == 'undefined') { // circle (old method) + console.log("Circle old"); + tp[tp.length - 1].type = "circle"; + tp[tp.length - 1].radius = res.tasks[i].legs[ii][0]; + } else { // turn point + tp.push({ + lat: res.tasks[i].legs[ii][0], + lon: res.tasks[i].legs[ii][1] + }); + } + } + } + task.turnpoints = tp; + + if (typeof res.tasks[i].wlist != 'undefined') { + task.wlist = []; + for (var ii = 0; ii < res.tasks[i].wlist.length; ii++) { + task.wlist.push(res.tasks[i].wlist[ii]); + } + } + tasks.push(task); + } + return tasks; +} + +function parseXCSoarTask(cont) { + var ltp; + var tp = []; + var wl = []; + + tp.length = 0; + + var oParser = new DOMParser(); + var oDOM = oParser.parseFromString(cont, "text/xml"); + + var points = oDOM.getElementsByTagName("Point"); + for (var i = 0; i < points.length; i++) { + var loc = points[i].getElementsByTagName("Waypoint")[0].getElementsByTagName("Location")[0]; + var ltp = { + lat: loc.getAttribute("latitude"), + lon: loc.getAttribute("longitude") + }; + + if (points[i].getElementsByTagName("ObservationZone")[0].getAttribute("type") == "Cylinder") { + ltp.type = "circle"; + ltp.radius = parseFloat(points[i].getElementsByTagName("ObservationZone")[0].getAttribute("radius")); + } + tp.push(ltp); + } + + var task = { + turnpoints: tp + }; + return task; +} + +/* - Next function from : - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ +/* Latitude/longitude spherical geodesy tools (c) Chris Veness 2002-2019 */ +/* MIT Licence */ +/* www.movable-type.co.uk/scripts/latlong.html */ +/* www.movable-type.co.uk/scripts/geodesy-library.html#latlon-spherical */ +/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ +function destinationPoint(slat, slon, distance, bearing) { + var radius=6371e3; + var δ,θ,φ1,λ1,sinφ2,φ2,y,x,λ2,lat,lon; + + δ = distance / radius; // angular distance in radians + θ = Number(bearing).toRadians(); + + φ1 = slat.toRadians(); // latitude + λ1 = slon.toRadians(); // longitude + + sinφ2 = Math.sin(φ1) * Math.cos(δ) + Math.cos(φ1) * Math.sin(δ) * Math.cos(θ); + φ2 = Math.asin(sinφ2); + y = Math.sin(θ) * Math.sin(δ) * Math.cos(φ1); + x = Math.cos(δ) - Math.sin(φ1) * sinφ2; + λ2 = λ1 + Math.atan2(y, x); + + lat = φ2.toDegrees(); + lon = λ2.toDegrees(); + + return [lat, lon]; +} + + +function showTask(task) { + var tc, tn, ltp; + var tp = []; + var capOut, capIn, capRetour, bis, azim, radius; + var angledeb, anglefin; + var cx1,cy1,cx2,cy2; + var angle,result; + + tn = task.name || 'task ' + task.length; + tc = task.color || 'FF0000'; + + for (var ii = 0; ii < task.turnpoints.length; ii++) { + if (ii == 0) { // départ + discap(deg2rad(task.turnpoints[ii].lat), deg2rad(task.turnpoints[ii].lon), deg2rad(task.turnpoints[ii+1].lat), deg2rad(task.turnpoints[ii+1].lon)); // cap vers le point suivant + capOut = Math.round(cap); // cap vers le point suivant + bis = ( capOut + 180 ) % 360; + azim = bis; + } else if (ii == (task.turnpoints.length - 1) ) { // arrivée + discap(deg2rad(task.turnpoints[ii].lat), deg2rad(task.turnpoints[ii].lon), deg2rad(task.turnpoints[ii-1].lat), deg2rad(task.turnpoints[ii-1].lon)); // cap vers le point précédent + capOut = Math.round(cap); // cap vers le point précédent + bis = ( capOut + 180 ) % 360; + azim = bis; + } else { // point entre départ et arrivée + discap(deg2rad(task.turnpoints[ii-1].lat), deg2rad(task.turnpoints[ii-1].lon), deg2rad(task.turnpoints[ii].lat), deg2rad(task.turnpoints[ii].lon)); + capIn = Math.round(cap); // cap arrivant au TP + discap(deg2rad(task.turnpoints[ii].lat), deg2rad(task.turnpoints[ii].lon), deg2rad(task.turnpoints[ii+1].lat), deg2rad(task.turnpoints[ii+1].lon)); + capOut = Math.round(cap); // cap partant du TP + capRetour = (capOut + 180) % 360; + bis = Math.round( capIn + (capRetour - capIn) / 2 ); + azim = (bis + 90) % 360; + if (Math.abs(capRetour - capIn) > 180) bis = ( bis +180 ) % 360; + } + + console.log("capout:"+capOut); + console.log("bis:"+bis); + + + if ((task.turnpoints[ii].type == 'circle')) { // circle + + + var cc = ol.geom.Polygon.circular( + /* WGS84 Sphere */ // ### IGC is 6371000 ? + new ol.Sphere(6378137), + [task.turnpoints[ii].lon, task.turnpoints[ii].lat], + task.turnpoints[ii].radius, + /* Number of verticies */ + 64 + ); + cc.transform('EPSG:4326', 'EPSG:3857'); + + var circle = new ol.Feature({ + geometry: cc + }); + + circle.setStyle(new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: '#' + tc, + width: polwidth + }), + fill: new ol.style.Fill({ + color: [parseInt(tc.substring(0,2), 16), parseInt(tc.substring(2,4), 16), parseInt(tc.substring(4), 16), 0.1 ] + }) + })); + + taskLayerSource.addFeature(circle); + + } else if ((task.turnpoints[ii].type == 'line')) { // line + angledeb = (azim - 90 ) % 360; + anglefin = (azim + 90 ) % 360; + + result = destinationPoint(task.turnpoints[ii].lat, task.turnpoints[ii].lon, task.turnpoints[ii].radius, angledeb); + cy1 = result[0]; + cx1 = result[1]; + + result = destinationPoint(task.turnpoints[ii].lat, task.turnpoints[ii].lon, task.turnpoints[ii].radius, anglefin); + cy2 = result[0]; + cx2 = result[1]; + + var tpline = []; + + // #### + console.log("adeb:"+angledeb); console.log("afin:"+anglefin); console.log("cx1:"+cx1); console.log("cy1:"+cy1); console.log("cx2:"+cx2); console.log("cy2:"+cy2); + + tpline.push(ol.proj.fromLonLat([cx1, cy1])); + tpline.push(ol.proj.fromLonLat([cx2, cy2])); + + var dline = new ol.Feature({ + geometry: new ol.geom.LineString( tpline ) + }); + dline.setStyle(new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: '#' + tc, + width: polwidth + }) + })); + taskLayerSource.addFeature(dline); + + } else if ((task.turnpoints[ii].type == 'quadrant')) { // quadrant + var pointList = [], + i, + dAngle = 64 + 1, + azimuth; + + pointList.push(ol.proj.fromLonLat([task.turnpoints[ii].lon, task.turnpoints[ii].lat])); + + console.log("Q bis:"+bis); + angle = task.turnpoints[ii].angle; + angledeb = (bis - (angle/2) ) % 360; + anglefin = (bis + (angle/2) ) % 360; + + console.log("Q deb:"+angledeb); + console.log("Q fin:"+anglefin); + + for (i = 0; i < dAngle; i++) { + azimuth = angledeb + (angle) * i / (dAngle - 1); + + result = destinationPoint(task.turnpoints[ii].lat, task.turnpoints[ii].lon, task.turnpoints[ii].radius, azimuth); + cy2 = result[0]; + cx2 = result[1]; + + pointList.push(ol.proj.fromLonLat([cx2, cy2])); + } + + pointList.push(ol.proj.fromLonLat([task.turnpoints[ii].lon, task.turnpoints[ii].lat])); + + var dline = new ol.Feature({ + geometry: new ol.geom.Polygon( [pointList] ) + }); + dline.setStyle(new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: '#' + tc, + width: polwidth + }), + fill: new ol.style.Fill({ + color: [parseInt(tc.substring(0,2), 16), parseInt(tc.substring(2,4), 16), parseInt(tc.substring(4), 16), 0.1 ] + }) + })); + taskLayerSource.addFeature(dline); + } + point = ol.proj.fromLonLat([task.turnpoints[ii].lon, task.turnpoints[ii].lat]); + tp.push(point); + } + + var taskpath = new ol.Feature({ + geometry: new ol.geom.LineString( tp ) + }); + taskpath.setStyle(new ol.style.Style({ + stroke: new ol.style.Stroke({ + color: '#' + tc, + width: polwidth + }) + })); + taskpath.set('nom', '' + tn); + + taskLayerSource.addFeature(taskpath); + + document.getElementById('dtaskbox').innerHTML = ''; + +} + +function filterDevices(wl) { + if (typeof wl != 'undefined') { + for (var i = 0; i < wl.length; i++) { + wlist.push(wl[i]); + } + } + + if (wlist.length > 0) { + wlt = 1; + + reseton(); + resetoff(); + } +} + +function rtask() { // select a task file + var files = document.getElementById('chfile').files; + if (!files.length) { + alert('Please select a file!'); + return; + } + var file = files[0]; + var reader = new FileReader(); + reader.onloadend = function(evt) { + if (evt.target.readyState == FileReader.DONE) { + var cont = evt.target.result; + cont = cont.trim(); + loadtask(cont); + } + }; + reader.readAsText(file); +} + + +function initialize() { + var has = window.location.hash.substring(1).split('&'); // parse the parameters + var parh = []; + var cent = []; + var gmdelay = 0; // to delay first call to gesmark if task file required + for (var i = 0; i < has.length; i++) { + var x = has[i].split('='); + parh[x[0]] = x[1]; + } + + // parameter c=lat,lon (center of the map) + if (typeof(parh.c) != 'undefined') { + cent = parh.c.split(','); + vlat = parseFloat(cent[0]); + vlon = parseFloat(cent[1]); + hashc = "c=" + vlat.toFixed(5) + "," + vlon.toFixed(5); + } + + // parameter o=1 (display offline) + if (typeof(parh.o) != 'undefined') { + if (parh.o == "1") { + all = 1; + hasho = "&o=1"; + } + } + + airspaceoverlay = new ol.layer.Tile({ + source: new ol.source.XYZ({ + tileUrlFunction: function(tileCoord, projection) { + var z = tileCoord[0]; + var x = tileCoord[1]; + var y = (1 << z) + tileCoord[2]; + return 'http://1.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_approved_airspaces_geometries@png/' + z + '/' + x + '/' + y + '.png'; + }, + wrapx: false + }), + opacity: 1, + visible: false + }); + + airportoverlay = new ol.layer.Tile({ + source: new ol.source.XYZ({ + tileUrlFunction: function(tileCoord, projection) { + var z = tileCoord[0]; + var x = tileCoord[1]; + var y = (1 << z) + tileCoord[2]; + return 'http://1.tile.maps.openaip.net/geowebcache/service/tms/1.0.0/openaip_approved_airports@png/' + z + '/' + x + '/' + y + '.png'; + }, + wrapx: false + }), + opacity: 1, + visible: false + }); + + windoverlay = new ol.layer.Tile({ + source: new ol.source.XYZ({ + /* + tileUrlFunction: function(tileCoord, projection) { + var z = tileCoord[0]; + var x = tileCoord[1]; + var y = (1 << z) + tileCoord[2]; + return "http://weather.openportguide.de/tiles/actual/wind_stream/0h/" + z + "/" + x + "/" + y + ".png"; + }, + */ + url: 'http://weather.openportguide.de/tiles/actual/wind_stream/0h/{z}/{x}/{y}.png', + wrapx: false + }), + opacity: 1, + visible: false + }); + + presoverlay = new ol.layer.Tile({ + source: new ol.source.XYZ({ + /* + tileUrlFunction: function(tileCoord, projection) { + var z = tileCoord[0]; + var x = tileCoord[1]; + var y = (1 << z) + tileCoord[2]; + return "http://weather.openportguide.de/tiles/actual/surface_pressure/0h/" + z + "/" + x + "/" + y + ".png"; + }, + */ + url: 'http://weather.openportguide.de/tiles/actual/surface_pressure/0h/{z}/{x}/{y}.png', + wrapx: false + }), + opacity: 1, + visible: false + }); + + tempoverlay = new ol.layer.Tile({ + source: new ol.source.XYZ({ + /* + tileUrlFunction: function(tileCoord, projection) { + var z = tileCoord[0]; + var x = tileCoord[1]; + var y = (1 << z) + tileCoord[2]; + return "http://weather.openportguide.de/tiles/actual/air_temperature/0h/" + z + "/" + x + "/" + y + ".png"; + }, + */ + url: 'http://weather.openportguide.de/tiles/actual/air_temperature/0h/{z}/{x}/{y}.png', + wrapx: false + }), + opacity: 1, + visible: false + }); + + rainoverlay = new ol.layer.Tile({ + source: new ol.source.XYZ({ + /* + tileUrlFunction: function(tileCoord, projection) { + var z = tileCoord[0]; + var x = tileCoord[1]; + var y = (1 << z) + tileCoord[2]; + return "http://weather.openportguide.de/tiles/actual/precipitation_shaded/0h/" + z + "/" + x + "/" + y + ".png"; + }, + */ + url: 'http://weather.openportguide.de/tiles/actual/precipitation_shaded/0h/{z}/{x}/{y}.png', + wrapx: false + }), + opacity: 0.4, + visible: false + }); + + OSMLayer = new ol.layer.Tile({ + source: new ol.source.OSM(), + visible: true + }); + + + MapsForFreeLayer = new ol.layer.Tile({ + source: new ol.source.XYZ({ + attributions: [ + new ol.Attribution({ + html: '
Background map: Maps-For-Free.com
' + }) + ], + url: 'https://maps-for-free.com/layer/relief/z{z}/row{y}/{z}_{x}-{y}.jpg', + + wrapx: false + }), + opacity: 1, + visible: false + }); + + MapsForFreeLayerW = new ol.layer.Tile({ + source: new ol.source.XYZ({ + url: 'https://maps-for-free.com/layer/water/z{z}/row{y}/{z}_{x}-{y}.gif', + wrapx: false + }), + opacity: 1, + visible: false + }); + + OSMTopoLayer = new ol.layer.Tile({ + source: new ol.source.XYZ({ + attributions: [ + new ol.Attribution({ + html: '
Background map: OpenTopoMap
' + }) + ], + url: '//{a-c}.tile.opentopomap.org/{z}/{x}/{y}.png', + wrapx: false + }), + opacity: 1, + visible: false + }); + + + IGNSatelliteLayer = new ol.layer.Tile({ + source: new ol.source.XYZ({ + attributions: [ + new ol.Attribution({ + html: '
Background map: IGN
' + }) + ], + url: '//wxs.ign.fr/pratique/wmts/?SERVICE=WMTS&REQUEST=GetTile&VERSION=1.0.0&LAYER=ORTHOIMAGERY.ORTHOPHOTOS&STYLE=normal&TILEMATRIXSET=PM&TILEMATRIX={z}&TILEROW={y}&TILECOL={x}&FORMAT=image%2Fjpeg', + wrapx: false + }), + opacity: 1, + visible: false + }); + + l4UMapsLayer = new ol.layer.Tile({ + source: new ol.source.XYZ({ + attributions: [ + new ol.Attribution({ + html: '
Background map: 4UMaps.com
' + }) + ], + url: 'https://tileserver.4umaps.com/{z}/{x}/{y}.png', + wrapx: false + }), + opacity: 1, + visible: false + }); + + + StamenTerrainLayer = new ol.layer.Tile({ + source: new ol.source.XYZ({ + attributions: [ + new ol.Attribution({ + html: '
Background map: Map tiles by Stamen Design
' + }) + ], + url: '//{a-d}.tile.stamen.com/terrain/{z}/{x}/{y}.jpg', + wrapx: false + }), + opacity: 1, + visible: false + }); + + iconLayerSource = new ol.source.Vector({ + attributions: [ + new ol.Attribution({html:'
Powered by Open Glider Network'}) + ], + features: [] + }); + + iconLayer = new ol.layer.Vector({ + source: iconLayerSource, + zIndex: 200 + }); + + + sticksLayerSource = new ol.source.Vector({ + features: [] + }); + + sticksLayer = new ol.layer.Vector({ + source: sticksLayerSource, + zIndex: 150, + opacity: 1, + visible: false + }); + + traceLayerSource = new ol.source.Vector({ + features: [] + }); + + traceLayer = new ol.layer.Vector({ + source: traceLayerSource, + zIndex: 100 + }); + + taskLayerSource = new ol.source.Vector({ + features: [] + }); + + taskLayer = new ol.layer.Vector({ + source: taskLayerSource, + zIndex: 70 + }); + + + receiverLayerSource = new ol.source.Vector({ + features: [] + }); + + receiverLayer = new ol.layer.Vector({ + source: receiverLayerSource, + zIndex: 50, + opacity: 1, + visible: false + }); + + attribution = new ol.control.Attribution({ + collapsed: true, + tipLabel: 'Show credits' + }); + + scaleLineControl = new ol.control.ScaleLine(); + + + + map = new ol.Map({ + interactions: ol.interaction.defaults().extend([ + new ol.interaction.DragRotateAndZoom() + ]), + layers: [ + MapsForFreeLayer, + MapsForFreeLayerW, + OSMTopoLayer, + IGNSatelliteLayer, + l4UMapsLayer, + StamenTerrainLayer, + OSMLayer, + receiverLayer, + airportoverlay, + airspaceoverlay, + windoverlay, + presoverlay, + tempoverlay, + rainoverlay, + taskLayer, + traceLayer, + sticksLayer, + iconLayer + ], + target: 'map_canvas', + controls: ol.control.defaults({ + attributionOptions: { + //collapsible: false + collapsible: true + } + }).extend([ + scaleLineControl, + attribution + ]), + view: new ol.View({ + center: ol.proj.fromLonLat([vlon,vlat]), + zoom: 10 + }) + }); + + map.on('singleclick', function(event) { + var receiver = false; + var recinfo = ""; + var coord; + map.forEachFeatureAtPixel(event.pixel, function(feature,layer) { + if(typeof(feature.get('mark'))!='undefined'){ + if ( feature.get('mark').substring(0,1) == "M" ) { + affinfo(feature.get('mark')); + document.getElementById('lonlatoverlay').style.display = "none"; + return; + } + if ( feature.get('mark').substring(0,1) == "R" ) { + receiver = true; + recinfo = feature.get("info"); + coord = feature.getGeometry().getCoordinates(); + } + } + }); + if (receiver) { + document.getElementById("lonlatoverlay").innerHTML = recinfo; + lonlatoverlay.setPosition(coord); + document.getElementById('lonlatoverlay').style.display = "block"; + } else + document.getElementById('lonlatoverlay').style.display = "none"; + }); + + map.on('moveend', function(event) { + // get zoom level + hashz = "&z=" + map.getView().getZoom(); + + // get center + var nc = ol.proj.toLonLat( map.getView().getCenter() ); + hashc = "c=" + nc[1].toFixed(5) + "," + nc[0].toFixed(5); + + // get rotate + var rotation = map.getView().getRotation(); + if (rotation == 0) { + document.getElementById('NorthButton').style.display = "none"; + } else { + document.getElementById('NorthButton').style.display = "block"; + document.getElementById('NorthButton').style.transform = "rotate("+ rotation +"rad)"; + } + + rehash(); + + if (vstm === true) settomap(); + + document.getElementById('lonlatoverlay').style.display = "none"; + }); + + map.on('pointermove', function(event) { + var changed = false; + map.forEachFeatureAtPixel(event.pixel, function(feature,layer) { + if(typeof(feature.get('col'))!='undefined'){ + lastpol = feature.get('poly'); + focuson(lastpol); + document.getElementById("divInfo").innerHTML = "    " + feature.get('nom'); + changed = true; + return; + } + }); + if (!changed) { + focusoff(lastpol); + document.getElementById("divInfo").innerHTML = " ... "; + } + + + }); + + map.getViewport().addEventListener('contextmenu', function (evt) { + evt.preventDefault(); + var nb = 0; + map.forEachFeatureAtPixel([evt.layerX,evt.layerY], function(feature,layer) { + ++nb; + if ( feature.get('mark').substring(0,1) == "M" ) { + redraw('P_' + feature.get('mark').substring(2)); + } + }); + + if (nb == 0) { + var coord = map.getEventCoordinate(evt); + // transform it to decimal degrees + var degrees = ol.proj.transform(coord, 'EPSG:3857', 'EPSG:4326'); + // format a human readable version + var hdms = ol.coordinate.toStringHDMS(degrees); + // update the overlay element's content + document.getElementById("lonlatoverlay").innerHTML = hdms; + // position the element (using the coordinate in the map's projection) + lonlatoverlay.setPosition(coord); + document.getElementById('lonlatoverlay').style.display = "block"; + + } + + + + }); + + northbutton = document.createElement('button'); + northbutton.setAttribute("id", "NorthButton"); + northbutton.style.display = "none"; + northbutton.innerHTML = '↑'; + + handleRotateNorth = function(e) { + map.getView().setRotation(0); + }; + + // add button to rotate noth up + northbutton.addEventListener('click', handleRotateNorth, false); + + // add button to switch map + mapbutton = document.createElement('button'); + mapbutton.innerHTML = 'M'; + map_selector = function(e) { // select map layer + if (++map_id == 6) map_id = 0; + chmap(map_id); + } + + mapbutton.addEventListener('click', map_selector, false); + + + divInfo = document.createElement("div"); + divInfo.id = "divInfo"; + divInfo.className = "divInfoclass"; + divInfo.style.width = "120px"; + divInfo.style.float = "left"; + divInfo.style.display = "block"; + + divInfo.appendChild(document.createTextNode("...")); + + // add fullscrenn button + fullsbutton = document.createElement('button'); + fullsbutton.innerHTML = "⛶"; + + screen_mode = function(e) { // switch fullscreen mode /normal mode + if (1 >= outerHeight - innerHeight) { // test if fullscreen mode + if(document.exitFullscreen) { + document.exitFullscreen(); + } else if(document.mozCancelFullScreen) { + document.mozCancelFullScreen(); + } else if(document.webkitExitFullscreen) { + document.webkitExitFullscreen(); + } else if (document.msExitFullscreen) { + window.top.document.msExitFullscreen(); + } + } else { + var el = document.documentElement; + if(el.requestFullscreen) { + el.requestFullscreen(); + } else if(el.mozRequestFullScreen) { + el.mozRequestFullScreen(); + } else if(el.webkitRequestFullscreen) { + el.webkitRequestFullscreen(); + } else if(el.msRequestFullscreen) { + el.msRequestFullscreen(); + } + } + + } + + fullsbutton.addEventListener('click', screen_mode, false); + + + + + zoomdiv = document.getElementsByClassName('ol-zoom ol-unselectable ol-control')[0]; + zoomdiv.appendChild(fullsbutton); + zoomdiv.appendChild(mapbutton); + zoomdiv.appendChild(northbutton); + zoomdiv.appendChild(divInfo); + + // displays credits over the list + credits = document.getElementsByClassName('ol-attribution ol-unselectable ol-control')[0]; + credits.style.zIndex = "1000"; + + // parameter m= map type + if (typeof(parh.m) != 'undefined') { + map_id = parseInt(parh.m); + chmap(map_id); + hashm = "&m=" + map_id; + } + + + + + + /* * + // parameter z= zoom level + if (typeof(parh.z) != 'undefined') map.setZoom(parseInt(parh.z)); + */ + if (typeof(parh.z) != 'undefined') map.getView().setZoom(parseInt(parh.z)); + + + // overlay to display coordinate on a right-clic + lonlatoverlay = new ol.Overlay({ + element: document.getElementById('lonlatoverlay'), + positioning: 'bottom-center' + }); + + map.addOverlay(lonlatoverlay); + + + + + + divInfoac = document.createElement("div"); + divInfoac.id = "divInfoac"; + divInfoac.className = "divInfoclass"; + divInfoac.style.width = "170px"; + divInfoac.style.cursor = 'pointer'; + divInfoac.style.float = "left"; + divInfoac.style.left = "10px"; + divInfoac.style.top = "1px"; + divInfoac.style.position = "absolute"; + divInfoac.style.display = "none"; + divInfoac.appendChild(document.createTextNode("...")); + autoc = ""; + + coverlay = document.getElementsByClassName('ol-overlaycontainer-stopevent')[0]; + coverlay.appendChild(divInfoac); + + document.getElementById("divInfoac").addEventListener("click", function(){ + document.getElementById("divInfoac").innerHTML = " "; + autoc = ""; + document.getElementById("divInfoac").style.display = "none"; + }); + + + + + document.getElementById("ett1").innerHTML = ett1; + document.getElementById("ett2").innerHTML = "
CNAlti.Vz
"; + document.getElementById("ac").innerHTML = "   ..::Aircraft::..
CN:
Regist.:
Device Id:
Type:
Model:
Last time:
Latitude:
Longitude:
Altitude:
G.Speed:
Track:  °
Vz:
Receiver:
"; + document.getElementById("dtable").innerHTML = "
"; +// document.getElementById("menu").innerHTML = "
Hide new gliders
Ignore Offline
Bounds

       
Auto Set to map
..:: Devices ::..
ICAO
Flarm
OGN Trackers
..:: Layers ::..
Temperature
Wind \"\"
Pressure
Precipitation
AirSpaces ( openaip.net )
Airports ( openaip.net )
Receivers
Tasks

..::Units::..
Met. Imp.
..::Path length::..
5' 10' All
Join the
OGN DataBase

Sources
"; +// document.getElementById("menu").innerHTML = "
Hide new gliders
Ignore Offline
Bounds

       
Auto Set to map
..:: Devices ::..
ICAO
Flarm
OGN Trackers
..:: Layers ::..
Temperature
Wind \"\"
Pressure
Precipitation
AirSpaces ( openaip.net )
Airports ( openaip.net )
Receivers
Tasks

..::Units::..
Met. Imp.
..::Path length::..
5' 10' All
..:: Altitude ::..
Altitude stick
Join the
OGN DataBase

Sources
"; + document.getElementById("menu").innerHTML = "
Hide new gliders
Ignore Offline"+ + "
Bounds

       
Auto Set to map"+ + "
..:: Devices ::..
ICAO
Flarm
OGN Trackers"+ + "
..:: Layers ::..
Temperature
Wind \"\"
Pressure
Precipitation
AirSpaces ( openaip.net )
Airports ( openaip.net )
Receivers
Tasks
"+ + "
..::Units::..
Met. Imp."+ + "
..::Path length::..
5' 10' All"+ + "
..:: Altitude ::..
Altitude stick
Barogram"+ + "
Join the
OGN DataBase

Sources
"; + + // parameter b=lat1,lon1,lat2,lon2 bounds + if (typeof(parh.b) != 'undefined') { + cent = parh.b.split(','); + document.getElementById('latmax').value = parseFloat(cent[0]); + document.getElementById('latmin').value = parseFloat(cent[1]); + document.getElementById('lonmax').value = parseFloat(cent[2]); + document.getElementById('lonmin').value = parseFloat(cent[3]); + boundc = "&b=" + cent[0] + "&c=" + cent[1] + "&d=" + cent[2] + "&e=" + cent[3]; + document.getElementById('boundsbox').checked = true; + bound = true; + hashb = "&b=" + cent[0] + "," + cent[1] + "," + cent[2] + "," + cent[3]; + } + else { + // force auto set to map to avoid problem when there is too much aircrafts + document.getElementById('astmbox').checked = true; + vstm = true; + hashs = "&s=1"; + } + + // parameter l= active layers + if (typeof(parh.l) != 'undefined') { + for (var i = 0; i < parh.l.length; i++) { + switch (parh.l[i]) { + case 't': // temperature + document.getElementById('tembox').checked = true; + tempe(); + break; + case 'v': // wind + document.getElementById('winbox').checked = true; + wind(); + break; + case 'p': // pressure + document.getElementById('prebox').checked = true; + pres(); + break; + case 'n': // precipitation + document.getElementById('raibox').checked = true; + rain(); + break; + case 'z': // airspace + document.getElementById('aspbox').checked = true; + asp(); + break; + case 'a': // airport + document.getElementById('aptbox').checked = true; + apt(); + break; + case 'r': // receivers + document.getElementById('reclbox').checked = true; + break; + } + } + } + + if (typeof(parh.t) != 'undefined') { + gmdelay = 1; + var xhr = new XMLHttpRequest(); + xhr.open("GET", parh.t, true); + xhr.onreadystatechange = function() { + if (xhr.readyState === 4) { + var status = xhr.status; + if ((status >= 200 && status < 300) || status === 304) { + loadtask(xhr.responseText); + } else { + alert("Task Request unsuccessful" + status); + } + } + gesmark(); + }; + + xhr.send(null); + } + + // parameter w=0 (Don't display the warning) + var warn = 1; + if (typeof(parh.w) != 'undefined') { + if (parh.w == "0") { + warn = 0; + hashw = "&w=0"; + } + } + + // parameter n=0 (Hide the panel) + if (typeof(parh.n) != 'undefined') { + if (parh.n == "0") { + alist(); + } + } + + if (warn == 1) { + document.getElementById("popup").innerHTML = "\"close\"

Warning!


The data on this site can be ambiguous in certain situations and the displayed position of an aircraft or glider can be displaced relative to the actual position.
Before raising an alert please contact us so we can interpret the data correctly.


If you want your devices to be identified, join the OGN DataBase.

"; + op(300); + } + + + + // parameter u=i units imperial ou metric (default)) + if (typeof(parh.u) != 'undefined') { + if (parh.u == "i") { + document.getElementById('uni').checked = true; + unit = "i"; + hashu = "&u=i"; + scaleLineControl.setUnits(unitlist[unit]); + } + } + + // parameter a=0 (Display an altitude stick) + if (typeof(parh.a) != 'undefined') { + if (parh.a == "1") { + document.getElementById('stick').checked = true; + stick = 1; + hasha = "&a=1"; + sticksLayer.setVisible(true); + } + } + + // parameter g=0 (Display a barogram) + if (typeof(parh.g) != 'undefined') { + if (parh.g == "1") { + document.getElementById('baro').checked = true; + document.getElementById('dbaro').style.display = "block"; + document.getElementById('dbaro').style.visibility = "visible"; + barogram = 1; + hashg = "&g=1"; + } + } + + // parameter p=1,2 or 3 path length 5", 10" or all points + if (typeof(parh.p) != 'undefined') { + if (parh.p == "2") { // 10 minutes + pathl = 60; + document.getElementById('rp2').checked = true; + hashp = "&p=2"; + } else if (parh.p == "3") { // all points + pathl = 99999; + document.getElementById('rp3').checked = true; + hashp = "&p=3"; + } + baro_reSize(); + } + + // parameter device type d=1 ICAO ,2 Flarm or 3 OGN tracker + if (typeof(parh.y) != 'undefined') { + if ((parh.y & 1) == 1) { + document.getElementById('ICAObox').checked = true; + } + if ((parh.y & 2) == 2) { + document.getElementById('Flarmbox').checked = true; + } + if ((parh.y & 4) == 4) { + document.getElementById('OGNbox').checked = true; + } + devtype(); + } else { + document.getElementById('ICAObox').checked = true; + document.getElementById('Flarmbox').checked = true; + document.getElementById('OGNbox').checked = true; + } + + + + tz = "&z=" + (tz / -60); // the javascript gettimezone function return negative value in minutes then /-60 to have correct hours + + rehash(); + checkrec(); + + + const body = document.querySelector('body'); + body.onkeydown = function(e) { + if (e.keyCode == 9) { + if (document.getElementById('latmin')===document.activeElement || document.getElementById('latmax')===document.activeElement || document.getElementById('lonmin')===document.activeElement || document.getElementById('lonmax')===document.activeElement) { + // nothing + } else { // swap menu + e.preventDefault(); + onofff(); + } + } + + }; + + + tmwd = setTimeout(wd, 30000); + if (gmdelay == 0) gesmark(); + + // barogram plotting + baro_Init(); +} diff --git a/ol.css b/ol.css new file mode 100644 index 0000000..1719726 --- /dev/null +++ b/ol.css @@ -0,0 +1 @@ +.ol-box{box-sizing:border-box;border-radius:2px;border:2px solid #00f}.ol-mouse-position{top:8px;right:8px;position:absolute}.ol-scale-line{background:rgba(0,60,136,.3);border-radius:4px;bottom:8px;left:8px;padding:2px;position:absolute}.ol-scale-line-inner{border:1px solid #eee;border-top:none;color:#eee;font-size:10px;text-align:center;margin:1px;will-change:contents,width}.ol-overlay-container{will-change:left,right,top,bottom}.ol-unsupported{display:none}.ol-unselectable,.ol-viewport{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.ol-selectable{-webkit-touch-callout:default;-webkit-user-select:auto;-moz-user-select:auto;-ms-user-select:auto;user-select:auto}.ol-grabbing{cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.ol-grab{cursor:move;cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.ol-control{position:absolute;background-color:rgba(255,255,255,.4);border-radius:4px;padding:2px}.ol-control:hover{background-color:rgba(255,255,255,.6)}.ol-zoom{top:.5em;left:.5em}.ol-rotate{top:.5em;right:.5em;transition:opacity .25s linear,visibility 0s linear}.ol-rotate.ol-hidden{opacity:0;visibility:hidden;transition:opacity .25s linear,visibility 0s linear .25s}.ol-zoom-extent{top:4.643em;left:.5em}.ol-full-screen{right:.5em;top:.5em}@media print{.ol-control{display:none}}.ol-control button{display:block;margin:1px;padding:0;color:#fff;font-size:1.14em;font-weight:700;text-decoration:none;text-align:center;height:1.375em;width:1.375em;line-height:.4em;background-color:rgba(0,60,136,.5);border:none;border-radius:2px}.ol-control button::-moz-focus-inner{border:none;padding:0}.ol-zoom-extent button{line-height:1.4em}.ol-compass{display:block;font-weight:400;font-size:1.2em;will-change:transform}.ol-touch .ol-control button{font-size:1.5em}.ol-touch .ol-zoom-extent{top:5.5em}.ol-control button:focus,.ol-control button:hover{text-decoration:none;background-color:rgba(0,60,136,.7)}.ol-zoom .ol-zoom-in{border-radius:2px 2px 0 0}.ol-zoom .ol-zoom-out{border-radius:0 0 2px 2px}.ol-attribution{text-align:right;bottom:.5em;right:.5em;max-width:calc(100% - 1.3em)}.ol-attribution ul{margin:0;padding:0 .5em;font-size:.7rem;line-height:1.375em;color:#000;text-shadow:0 0 2px #fff}.ol-attribution li{display:inline;list-style:none;line-height:inherit}.ol-attribution li:not(:last-child):after{content:" "}.ol-attribution img{max-height:2em;max-width:inherit;vertical-align:middle}.ol-attribution button,.ol-attribution ul{display:inline-block}.ol-attribution.ol-collapsed ul{display:none}.ol-attribution.ol-logo-only ul{display:block}.ol-attribution:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-attribution.ol-uncollapsible{bottom:0;right:0;border-radius:4px 0 0;height:1.1em;line-height:1em}.ol-attribution.ol-logo-only{background:0 0;bottom:.4em;height:1.1em;line-height:1em}.ol-attribution.ol-uncollapsible img{margin-top:-.2em;max-height:1.6em}.ol-attribution.ol-logo-only button,.ol-attribution.ol-uncollapsible button{display:none}.ol-zoomslider{top:4.5em;left:.5em;height:200px}.ol-zoomslider button{position:relative;height:10px}.ol-touch .ol-zoomslider{top:5.5em}.ol-overviewmap{left:.5em;bottom:.5em}.ol-overviewmap.ol-uncollapsible{bottom:0;left:0;border-radius:0 4px 0 0}.ol-overviewmap .ol-overviewmap-map,.ol-overviewmap button{display:inline-block}.ol-overviewmap .ol-overviewmap-map{border:1px solid #7b98bc;height:150px;margin:2px;width:150px}.ol-overviewmap:not(.ol-collapsed) button{bottom:1px;left:2px;position:absolute}.ol-overviewmap.ol-collapsed .ol-overviewmap-map,.ol-overviewmap.ol-uncollapsible button{display:none}.ol-overviewmap:not(.ol-collapsed){background:rgba(255,255,255,.8)}.ol-overviewmap-box{border:2px dotted rgba(0,60,136,.7)}.ol-overviewmap .ol-overviewmap-box:hover{cursor:move} \ No newline at end of file diff --git a/ol.js b/ol.js new file mode 100644 index 0000000..90c3d05 --- /dev/null +++ b/ol.js @@ -0,0 +1,1073 @@ +// OpenLayers. See https://openlayers.org/ +// License: https://raw.githubusercontent.com/openlayers/openlayers/master/LICENSE.md +// Version: v4.6.5 +;(function (root, factory) { + if (typeof exports === "object") { + module.exports = factory(); + } else if (typeof define === "function" && define.amd) { + define([], factory); + } else { + root.ol = factory(); + } +}(this, function () { + var OPENLAYERS = {}; + var k,aa=this;function t(a,b){var c=OPENLAYERS;a=a.split(".");c=c||aa;a[0]in c||!c.execScript||c.execScript("var "+a[0]);for(var d;a.length&&(d=a.shift());)a.length||void 0===b?c[d]&&c[d]!==Object.prototype[d]?c=c[d]:c=c[d]={}:c[d]=b};var ba,da;function w(a,b){a.prototype=Object.create(b.prototype);a.prototype.constructor=a}function ea(){}function x(a){return a.xp||(a.xp=++fa)}var fa=0;function ha(a){this.message="Assertion failed. See https://openlayers.org/en/v4.6.5/doc/errors/#"+a+" for details.";this.code=a;this.name="AssertionError"}w(ha,Error);function ja(a,b,c,d){this.fa=a;this.la=b;this.ea=c;this.ka=d}function ka(a,b,c,d,e){return void 0!==e?(e.fa=a,e.la=b,e.ea=c,e.ka=d,e):new ja(a,b,c,d)}function ma(a,b,c){return a.fa<=b&&b<=a.la&&a.ea<=c&&c<=a.ka}function na(a,b){return a.fa==b.fa&&a.ea==b.ea&&a.la==b.la&&a.ka==b.ka};function oa(a,b){if(!a)throw new ha(b);};function pa(a,b,c){return Math.min(Math.max(a,b),c)}var qa=function(){var a;"cosh"in Math?a=Math.cosh:a=function(a){a=Math.exp(a);return(a+1/a)/2};return a}();function ra(a){oa(0a*b?a+b:a}function ya(a,b,c){return a+c*(b-a)};function za(a,b,c){void 0===c&&(c=[0,0]);c[0]=a[0]+2*b;c[1]=a[1]+2*b;return c}function Aa(a,b,c){void 0===c&&(c=[0,0]);c[0]=a[0]*b+.5|0;c[1]=a[1]*b+.5|0;return c}function Ba(a,b){if(Array.isArray(a))return a;void 0===b?b=[a,a]:b[0]=b[1]=a;return b};function Ca(a){for(var b=Da(),c=0,d=a.length;cd&&(g|=4);be&&(g|=2);0===g&&(g=1);return g}function Da(){return[Infinity,Infinity,-Infinity,-Infinity]}function Na(a,b,c,d,e){return e?(e[0]=a,e[1]=b,e[2]=c,e[3]=d,e):[a,b,c,d]}function Oa(a){return Na(Infinity,Infinity,-Infinity,-Infinity,a)}function Pa(a,b){var c=a[0];a=a[1];return Na(c,a,c,a,b)} +function Qa(a,b,c,d,e){e=Oa(e);return Ra(e,a,b,c,d)}function Sa(a,b){return a[0]==b[0]&&a[2]==b[2]&&a[1]==b[1]&&a[3]==b[3]}function Ta(a,b){b[0]a[2]&&(a[2]=b[2]);b[1]a[3]&&(a[3]=b[3]);return a}function Ea(a,b){b[0]a[2]&&(a[2]=b[0]);b[1]a[3]&&(a[3]=b[1])} +function Ra(a,b,c,d,e){for(;cb[0]?a[0]:b[0],c[1]=a[1]>b[1]?a[1]:b[1],c[2]=a[2]=b[0]&&a[1]<=b[3]&&a[3]>=b[1]}function bb(a){return a[2]Ab?f=Ab:f<-Ab&&(f=-Ab);b[e+1]=f}return b}function Db(a,b,c){var d=a.length;c=1b?1:ac)for(c=1;c>>0,d,e=0;e>=1}return c.join("")};function qc(a){this.minZoom=void 0!==a.minZoom?a.minZoom:0;this.b=a.resolutions;oa(nc(this.b,function(a,b){return b-a}),17);if(!a.origins)for(var b=0,c=this.b.length-1;b=a.minZoom;){2===a.l?(h=Math.floor(h/2),l=Math.floor(l/2),b=ka(h,h,l,l,d)):b=tc(a,f,g,d);if(c.call(null,g,b))return!0;--g}return!1}k.G=function(){return this.o};k.mj=function(){return this.maxZoom};k.nj=function(){return this.minZoom};k.Ic=function(a){return this.g?this.g:this.c[a]};k.Ta=function(a){return this.b[a]}; +k.oj=function(){return this.b};function vc(a,b,c,d){if(b[0]=Math.abs(c-f[0])&&25>=g)return!0}return!1}function Ed(a){var b=Fd(a,a),c=b.preventDefault;b.preventDefault=function(){a.preventDefault();c()};b.pointerId=1;b.isPrimary=!0;b.pointerType="mouse";return b}k=Cd.prototype; +k.Jm=function(a){if(!Dd(this,a)){(1).toString()in this.a&&this.cancel(a);var b=Ed(a);this.a[(1).toString()]=a;Gd(this.b,"pointerdown",b,a)}};k.Km=function(a){if(!Dd(this,a)){var b=Ed(a);Gd(this.b,"pointermove",b,a)}};k.Nm=function(a){if(!Dd(this,a)){var b=this.a[(1).toString()];b&&b.button===a.button&&(b=Ed(a),Gd(this.b,"pointerup",b,a),delete this.a[(1).toString()])}};k.Mm=function(a){if(!Dd(this,a)){var b=Ed(a);Hd(this.b,b,a)}};k.Lm=function(a){if(!Dd(this,a)){var b=Ed(a);Jd(this.b,b,a)}}; +k.cancel=function(a){var b=Ed(a);this.b.cancel(b,a);delete this.a[(1).toString()]};function Kd(a){Bd.call(this,a,{MSPointerDown:this.Sm,MSPointerMove:this.Tm,MSPointerUp:this.Wm,MSPointerOut:this.Um,MSPointerOver:this.Vm,MSPointerCancel:this.Rm,MSGotPointerCapture:this.Pm,MSLostPointerCapture:this.Qm});this.a=a.g;this.g=["","unavailable","touch","pen","mouse"]}w(Kd,Bd);function Ld(a,b){var c=b;"number"===typeof b.pointerType&&(c=Fd(b,b),c.pointerType=a.g[b.pointerType]);return c}k=Kd.prototype; +k.Sm=function(a){this.a[a.pointerId.toString()]=a;var b=Ld(this,a);Gd(this.b,"pointerdown",b,a)};k.Tm=function(a){var b=Ld(this,a);Gd(this.b,"pointermove",b,a)};k.Wm=function(a){var b=Ld(this,a);Gd(this.b,"pointerup",b,a);delete this.a[a.pointerId.toString()]};k.Um=function(a){var b=Ld(this,a);Jd(this.b,b,a)};k.Vm=function(a){var b=Ld(this,a);Hd(this.b,b,a)};k.Rm=function(a){var b=Ld(this,a);this.b.cancel(b,a);delete this.a[a.pointerId.toString()]}; +k.Qm=function(a){this.b.b(new Md("lostpointercapture",a,a))};k.Pm=function(a){this.b.b(new Md("gotpointercapture",a,a))};function Nd(a){Bd.call(this,a,{pointerdown:this.Kp,pointermove:this.Lp,pointerup:this.Op,pointerout:this.Mp,pointerover:this.Np,pointercancel:this.Jp,gotpointercapture:this.Wl,lostpointercapture:this.Hm})}w(Nd,Bd);k=Nd.prototype;k.Kp=function(a){Od(this.b,a)};k.Lp=function(a){Od(this.b,a)};k.Op=function(a){Od(this.b,a)};k.Mp=function(a){Od(this.b,a)};k.Np=function(a){Od(this.b,a)};k.Jp=function(a){Od(this.b,a)};k.Hm=function(a){Od(this.b,a)};k.Wl=function(a){Od(this.b,a)};function Md(a,b,c){Qc.call(this,a);this.b=b;a=c?c:{};this.buttons=Pd(a);this.pressure=Qd(a,this.buttons);this.bubbles="bubbles"in a?a.bubbles:!1;this.cancelable="cancelable"in a?a.cancelable:!1;this.view="view"in a?a.view:null;this.detail="detail"in a?a.detail:null;this.screenX="screenX"in a?a.screenX:0;this.screenY="screenY"in a?a.screenY:0;this.clientX="clientX"in a?a.clientX:0;this.clientY="clientY"in a?a.clientY:0;this.ctrlKey="ctrlKey"in a?a.ctrlKey:!1;this.altKey="altKey"in a?a.altKey:!1;this.shiftKey= +"shiftKey"in a?a.shiftKey:!1;this.metaKey="metaKey"in a?a.metaKey:!1;this.button="button"in a?a.button:0;this.relatedTarget="relatedTarget"in a?a.relatedTarget:null;this.pointerId="pointerId"in a?a.pointerId:0;this.width="width"in a?a.width:0;this.height="height"in a?a.height:0;this.tiltX="tiltX"in a?a.tiltX:0;this.tiltY="tiltY"in a?a.tiltY:0;this.pointerType="pointerType"in a?a.pointerType:"";this.isPrimary="isPrimary"in a?a.isPrimary:!1;b.preventDefault&&(this.preventDefault=function(){b.preventDefault()})} +w(Md,Qc);function Pd(a){if(a.buttons||Rd)a=a.buttons;else switch(a.which){case 1:a=1;break;case 2:a=4;break;case 3:a=2;break;default:a=0}return a}function Qd(a,b){var c=0;a.pressure?c=a.pressure:c=b?.5:0;return c}var Rd=!1;try{Rd=1===(new MouseEvent("click",{buttons:1})).buttons}catch(a){};function Sd(a,b){Bd.call(this,a,{touchstart:this.Qq,touchmove:this.Pq,touchend:this.Oq,touchcancel:this.Nq});this.a=a.g;this.j=b;this.g=void 0;this.f=0;this.c=void 0}w(Sd,Bd);k=Sd.prototype;k.Ej=function(){this.f=0;this.c=void 0}; +function Td(a,b,c){b=Fd(b,c);b.pointerId=c.identifier+2;b.bubbles=!0;b.cancelable=!0;b.detail=a.f;b.button=0;b.buttons=1;b.width=c.webkitRadiusX||c.radiusX||0;b.height=c.webkitRadiusY||c.radiusY||0;b.pressure=c.webkitForce||c.force||.5;b.isPrimary=a.g===c.identifier;b.pointerType="touch";b.clientX=c.clientX;b.clientY=c.clientY;b.screenX=c.screenX;b.screenY=c.screenY;return b} +function Ud(a,b,c){function d(){b.preventDefault()}var e=Array.prototype.slice.call(b.changedTouches),f=e.length,g;for(g=0;g=b.length){var e=[],f;for(f=0;fa.D||Math.abs(b.clientY-a.c.clientY)>a.D}k.ia=function(){this.v&&(Gc(this.v),this.v=null);this.s&&(Gc(this.s),this.s=null);this.i.forEach(Gc);this.i.length=0;this.a&&(Pc(this.a),this.a=null);this.f&&(Pc(this.f),this.f=null);Sc.prototype.ia.call(this)};function ge(a,b){this.s=a;this.c=b;this.b=[];this.g=[];this.a={}}ge.prototype.clear=function(){this.b.length=0;this.g.length=0;lb(this.a)};function he(a){var b=a.b,c=a.g,d=b[0];1==b.length?(b.length=0,c.length=0):(b[0]=b.pop(),c[0]=c.pop(),ie(a,0));b=a.c(d);delete a.a[b];return d}ge.prototype.i=function(a){oa(!(this.c(a)in this.a),31);var b=this.s(a);return Infinity!=b?(this.b.push(a),this.g.push(b),this.a[this.c(a)]=!0,je(this,0,this.b.length-1),!0):!1}; +function ie(a,b){for(var c=a.b,d=a.g,e=c.length,f=c[b],g=d[b],h=b;b>1;){var l=2*b+1,m=2*b+2;l=mb;){var g=c-1>>1;if(a[g]>f)d[c]=d[g],a[c]=a[g],c=g;else break}d[c]=e;a[c]=f} +function ke(a){var b=a.s,c=a.b,d=a.g,e=0,f=c.length,g;for(g=0;g>1)-1;0<=b;b--)ie(a,b)};function le(a,b){ge.call(this,function(b){return a.apply(null,b)},function(a){return a[0].lb()});this.v=b;this.j=0;this.f={}}w(le,ge);le.prototype.i=function(a){var b=ge.prototype.i.call(this,a);b&&y(a[0],"change",this.l,this);return b};le.prototype.l=function(a){a=a.target;var b=a.getState();if(2===b||3===b||4===b||5===b)Mc(a,"change",this.l,this),a=a.lb(),a in this.f&&(delete this.f[a],--this.j),this.v()}; +function me(a,b,c){for(var d=0,e=!1,f,g,h;a.je)return 1;if(e>d)return-1}return 0};function ze(a,b){a[0]+=b[0];a[1]+=b[1];return a}function Ae(a,b){var c=b.Bd(),d=b.xa();b=d[0];d=d[1];var e=a[0]-b;a=a[1]-d;0===e&&0===a&&(e=1);var f=Math.sqrt(e*e+a*a);return[b+c*e/f,d+c*a/f]}function Be(a,b){var c=a[0];a=a[1];var d=b[0],e=b[1];b=d[0];d=d[1];var f=e[0];e=e[1];var g=f-b,h=e-d;c=0===g&&0===h?0:(g*(c-b)+h*(a-d))/(g*g+h*h||0);0>=c?(a=b,c=d):1<=c?(a=f,c=e):(a=b+c*g,c=d+c*h);return[a,c]} +function Ce(a,b,c){b=wa(b+180,360)-180;var d=Math.abs(3600*b);c=c||0;var e=Math.pow(10,c),f=Math.floor(d/3600),g=Math.floor((d-3600*f)/60);d=Math.ceil((d-3600*f-60*g)*e)/e;60<=d&&(d=0,g+=1);60<=g&&(g=0,f+=1);return f+"\u00b0 "+xe(g)+"\u2032 "+xe(d,c)+"\u2033"+(0==b?"":" "+a.charAt(0>b?1:0))}function De(a,b,c){return a?b.replace("{x}",a[0].toFixed(c)).replace("{y}",a[1].toFixed(c)):""}function Ee(a,b){for(var c=!0,d=a.length-1;0<=d;--d)if(a[d]!=b[d]){c=!1;break}return c} +function Fe(a,b){var c=Math.cos(b);b=Math.sin(b);var d=a[1]*c+a[0]*b;a[0]=a[0]*c-a[1]*b;a[1]=d;return a}function Ge(a,b){a[0]*=b;a[1]*=b}function He(a,b){var c=a[0]-b[0];a=a[1]-b[1];return c*c+a*a}function Ie(a,b){return Math.sqrt(He(a,b))}function Je(a,b){return He(a,Be(a,b))}function Ke(a,b){return De(a,"{x}, {y}",b)};function Me(a){return Math.pow(a,3)}function Oe(a){return 1-Me(1-a)}function Pe(a){return 3*a*a-2*a*a*a}function Qe(a){return a};function Re(){return!0}function Se(){return!1};function Te(a,b,c,d,e,f){for(var g=f?f:[],h=0;ba||0!==this.f&&a<=this.f)return this;var b=a.toString();if(this.i.hasOwnProperty(b))return this.i[b];var c=this.xd(a);if(c.da().lengthe&&(e=f);f=h;g=l}return e}function qf(a,b,c,d,e){var f;var g=0;for(f=c.length;gh){for(;br&&(m=n,r=E)}r>e&&(l[(m-b)/d]=1,q+dla&&iala)&&(0>ca&&xaca)||(v[z++]=S,v[z++]=g,A=S,E=g);S=Ia;g=ta}}v[z++]=S;v[z++]=g}g=z}h.push(g);b=n}return g};function Df(a,b){hf.call(this);this.c=this.j=-1;this.na(a,b)}w(Df,hf);k=Df.prototype;k.clone=function(){var a=new Df(null);Ef(a,this.ja,this.A.slice());return a};k.Nb=function(a,b,c,d){if(df&&0<(m-h)*(f-l)-(e-h)*(n-l)&&g++:n<=f&&0>(m-h)*(f-l)-(e-h)*(n-l)&&g--;h=m;l=n}return 0!==g}function Hf(a,b,c,d,e,f){if(0===c.length||!Gf(a,b,c[0],d,e,f))return!1;var g;b=1;for(g=c.length;bv&&(m=(m+n)/2,Hf(a,b,c,d,m,q)&&(u=m,v=z)),m=n;isNaN(u)&&(u=e[f]);return g?(g.push(u,q,v),g):[u,q,v]};function Jf(a,b,c,d,e,f){for(var g=[a[b],a[b+1]],h=[],l;b+d=e[0]&&f[2]<=e[2]||f[1]>=e[1]&&f[3]<=e[3]?!0:Jf(a,b,c,d,function(a,b){var c=!1,d=Ma(e,a),f=Ma(e,b);if(1===d||1===f)c=!0;else{var g=e[0],h=e[1],r=e[2],u=e[3],v=b[0];b=b[1];a=(b-a[1])/(v-a[0]);f&2&&!(d&2)&&(c=v-(b-u)/a,c=c>=g&&c<=r);c||!(f&4)||d&4||(c=b-(v-r)*a,c=c>=h&&c<=u);c||!(f&8)||d&8||(c=v-(b-h)/a,c=c>=g&&c<=r);c||!(f&16)||d&16||(c=b-(v-g)*a,c=c>=h&&c<=u)}return c}):!1} +function Lf(a,b,c,d,e){var f=c[0];if(!(Kf(a,b,f,d,e)||Gf(a,b,f,d,e[0],e[1])||Gf(a,b,f,d,e[0],e[3])||Gf(a,b,f,d,e[2],e[1])||Gf(a,b,f,d,e[2],e[3])))return!1;if(1===c.length)return!0;b=1;for(f=c.length;ba||this.c.length<=a)return null;var b=new Df(null);Ef(b,this.ja,this.A.slice(0===a?0:this.c[a-1],this.c[a]));return b};k.Ud=function(){var a=this.ja,b=this.A,c=this.c,d=[],e=0,f;var g=0;for(f=c.length;g=a.minResolution&&ba.b.length)return!1;var b=Date.now()-a.f,c=a.b.length-3;if(a.b[c+2]b;)d-=3;b=a.b[c+2]-a.b[d+2];if(b<1E3/60)return!1;var e=a.b[c]-a.b[d];c=a.b[c+1]-a.b[d+1];a.g=Math.atan2(c,e);a.a=Math.sqrt(e*e+c*c)/b;return a.a>a.c};function Jg(a){Vc.call(this);this.v=null;this.Ha(!0);this.handleEvent=a.handleEvent}w(Jg,Vc);Jg.prototype.c=function(){return this.get("active")};Jg.prototype.i=function(){return this.v};Jg.prototype.Ha=function(a){this.set("active",a)};Jg.prototype.setMap=function(a){this.v=a};function Kg(a,b,c,d){if(void 0!==b){var e=a.Sa(),f=a.xa();void 0!==e&&f&&0=this.o}function vh(a){if(dh(a)){var b=this.a,c=a.pixel;b.c=this.f;b.g=c;sh(b);rh(b);this.b(new yh(zh,a.coordinate,a))}}th.prototype.U=function(){return this.a.U()}; +th.prototype.j=ea;function wh(a){if(!dh(a))return!0;this.a.setMap(null);this.s(a,this.f,a.pixel)&&(this.j(a),this.b(new yh(Ah,a.coordinate,a)));return!1}function uh(a){if(dh(a)&&Yg(a)&&this.C(a)){this.f=a.pixel;this.a.setMap(a.map);var b=this.a,c=this.f;b.c=this.f;b.g=c;sh(b);rh(b);this.b(new yh(Bh,a.coordinate,a));return!0}return!1}var Bh="boxstart",zh="boxdrag",Ah="boxend";function yh(a,b,c){Qc.call(this,a);this.coordinate=b;this.mapBrowserEvent=c}w(yh,Qc);function Ch(a){a=a?a:{};var b=a.condition?a.condition:bh;this.B=void 0!==a.duration?a.duration:200;this.T=void 0!==a.out?a.out:!1;th.call(this,{condition:b,className:a.className||"ol-dragzoom"})}w(Ch,th); +Ch.prototype.j=function(){var a=this.v,b=a.aa(),c=a.Cb(),d=this.U().G();if(this.T){var e=b.qd(c);d=[a.Ia(Wa(d)),a.Ia(Za(d))];a=Oa(void 0);var f;var g=0;for(f=d.length;gMath.abs(d)?Ph:Qh;if(this.l===Ph){b=b.aa();this.s?clearTimeout(this.s): +bg(b,1,1);this.s=setTimeout(this.B.bind(this),400);c=b.Pa()*Math.pow(2,d/300);var e=b.i,f=b.a,g=0;cf&&(c=Math.min(c,1.5*f),g=-1);if(this.a){var h=cg(b,c,this.a);b.ub(b.Sc(h))}b.gd(c);0===g&&this.O&&b.animate({resolution:b.constrainResolution(c,0g&&b.animate({resolution:f,easing:Oe,anchor:this.a,duration:500});this.f=a;return!1}this.j+=d;d=Math.max(this.$- +(a-this.f),0);clearTimeout(this.o);this.o=setTimeout(this.T.bind(this,b),d);return!1}Hh.prototype.B=function(){this.s=void 0;bg(this.v.aa(),1,-1)};Hh.prototype.T=function(a){a=a.aa();a.Ac()&&a.rd();Lg(a,-pa(this.j,-1,1),this.a,this.D);this.l=void 0;this.j=0;this.a=null;this.o=this.f=void 0};Hh.prototype.V=function(a){this.C=a;a||(this.a=null)};var Ph="trackpad",Qh="wheel";function Rh(a){fh.call(this,{handleDownEvent:Sh,handleDragEvent:Th,handleUpEvent:Uh});a=a||{};this.f=null;this.j=void 0;this.a=!1;this.s=0;this.C=void 0!==a.threshold?a.threshold:.3;this.o=void 0!==a.duration?a.duration:250}w(Rh,fh); +function Th(a){var b=0,c=this.l[0],d=this.l[1];c=Math.atan2(d.clientY-c.clientY,d.clientX-c.clientX);void 0!==this.j&&(b=c-this.j,this.s+=b,!this.a&&Math.abs(this.s)>this.C&&(this.a=!0));this.j=c;a=a.map;c=a.aa();if(c.l.rotation!==re){d=a.a.getBoundingClientRect();var e=hh(this.l);e[0]-=d.left;e[1]-=d.top;this.f=a.Ra(e);this.a&&(d=c.Sa(),a.render(),Kg(c,d+b,this.f))}} +function Uh(a){if(2>this.l.length){a=a.map.aa();bg(a,1,-1);if(this.a){var b=a.Sa(),c=this.f,d=this.o;b=a.constrainRotation(b,0);Kg(a,b,c,d)}return!1}return!0}function Sh(a){return 2<=this.l.length?(a=a.map,this.f=null,this.j=void 0,this.a=!1,this.s=0,this.D||bg(a.aa(),1,1),!0):!1}Rh.prototype.jd=Se;function Vh(a){fh.call(this,{handleDownEvent:Wh,handleDragEvent:Xh,handleUpEvent:Yh});a=a?a:{};this.s=a.constrainResolution||!1;this.f=null;this.o=void 0!==a.duration?a.duration:400;this.a=void 0;this.j=1}w(Vh,fh); +function Xh(a){var b=1,c=this.l[0],d=this.l[1],e=c.clientX-d.clientX;c=c.clientY-d.clientY;e=Math.sqrt(e*e+c*c);void 0!==this.a&&(b=this.a/e);this.a=e;a=a.map;e=a.aa();d=e.Pa();var f=e.a,g=e.i;c=d*b;c>f?(b=f/d,c=f):cthis.l.length){a=a.map.aa();bg(a,1,-1);var b=a.Pa();if(this.s||ba.a){var c=this.f,d=this.o;b=a.constrainResolution(b,0,this.j-1);Tg(a,b,c,d)}return!1}return!0}function Wh(a){return 2<=this.l.length?(a=a.map,this.f=null,this.a=void 0,this.j=1,this.D||bg(a.aa(),1,1),!0):!1}Vh.prototype.jd=Se;function Zh(a){a=a?a:{};var b=new B,c=new Gg(-.005,.05,100);(void 0!==a.altShiftDragRotate?a.altShiftDragRotate:1)&&b.push(new mh);(void 0!==a.doubleClickZoom?a.doubleClickZoom:1)&&b.push(new Ug({delta:a.zoomDelta,duration:a.zoomDuration}));(void 0!==a.dragPan?a.dragPan:1)&&b.push(new ih({kinetic:c}));(void 0!==a.pinchRotate?a.pinchRotate:1)&&b.push(new Rh);(void 0!==a.pinchZoom?a.pinchZoom:1)&&b.push(new Vh({constrainResolution:a.constrainResolution,duration:a.zoomDuration}));if(void 0!==a.keyboard? +a.keyboard:1)b.push(new Dh),b.push(new Fh({delta:a.zoomDelta,duration:a.zoomDuration}));(void 0!==a.mouseWheelZoom?a.mouseWheelZoom:1)&&b.push(new Hh({constrainResolution:a.constrainResolution,duration:a.zoomDuration}));(void 0!==a.shiftDragZoom?a.shiftDragZoom:1)&&b.push(new Ch({duration:a.zoomDuration}));return b};function $h(a,b,c,d){Sc.call(this);this.extent=a;this.a=c;this.resolution=b;this.state=d}w($h,Sc);$h.prototype.u=function(){this.b("change")};$h.prototype.G=function(){return this.extent};$h.prototype.getState=function(){return this.state};function ai(a,b,c,d,e){this.c=void 0!==e?e:null;$h.call(this,a,b,c,void 0!==e?0:2);this.g=d}w(ai,$h);ai.prototype.i=function(a){this.state=a?3:2;this.u()};ai.prototype.load=function(){0==this.state&&(this.state=1,this.u(),this.c(this.i.bind(this)))};ai.prototype.Y=function(){return this.g};function bi(a,b,c,d,e){Qc.call(this,a);this.vectorContext=b;this.frameState=c;this.context=d;this.glContext=e}w(bi,Qc);function ci(a){Sc.call(this);this.highWaterMark=void 0!==a?a:2048;this.i=0;this.a={};this.c=this.g=null}w(ci,Sc);function di(a){return a.i>a.highWaterMark}k=ci.prototype;k.clear=function(){this.i=0;this.a={};this.c=this.g=null;this.b("clear")};k.forEach=function(a,b){for(var c=this.g;c;)a.call(b,c.Pc,c.jc,this),c=c.kb}; +k.get=function(a){a=this.a[a];oa(void 0!==a,15);if(a===this.c)return a.Pc;a===this.g?(this.g=this.g.kb,this.g.Pb=null):(a.kb.Pb=a.Pb,a.Pb.kb=a.kb);a.kb=null;a.Pb=this.c;this.c=this.c.kb=a;return a.Pc};k.remove=function(a){var b=this.a[a];oa(void 0!==b,15);if(b===this.c){if(this.c=b.Pb)this.c.kb=null}else if(b===this.g){if(this.g=b.kb)this.g.Pb=null}else b.kb.Pb=b.Pb,b.Pb.kb=b.kb;delete this.a[a];--this.i;return b.Pc}; +k.pop=function(){var a=this.g;delete this.a[a.jc];a.kb&&(a.kb.Pb=null);this.g=a.kb;this.g||(this.c=null);--this.i;return a.Pc};k.replace=function(a,b){this.get(a);this.a[a].Pc=b};k.set=function(a,b){oa(!(a in this.a),16);b={jc:a,kb:null,Pb:this.c,Pc:b};this.c?this.c.kb=b:this.g=b;this.c=b;this.a[a]=b;++this.i};var ei=[0,0,0,1],fi=[],gi=[0,0,0,1],hi=[0,0,0,0],ii=new ci,ji={},ki=null,li={},ni=function(){function a(a){var b=mi();b.font="32px monospace";f=b.measureText("wmytzilWMYTZIL@#/&?$%10").width;var c=!0;"monospace"!=a&&(b.font="32px "+a+",monospace",c=b.measureText("wmytzilWMYTZIL@#/&?$%10").width!=f);return c}function b(){var b=!0,f;for(f in c)60>c[f]&&(a(f)?(c[f]=60,lb(li),ki=null,d.clear()):(++c[f],b=!1));b&&(window.clearInterval(e),e=void 0)}var c=ji,d=ii,e,f;return function(d){if(d=wg(d))for(var f= +0,g=d.length;f=e?1:2;var g=4===e||8===e;e=parseInt(d.substr(1+0*f,f),16);var h=parseInt(d.substr(1+1*f,f),16);var l=parseInt(d.substr(1+2*f,f),16);d=g?parseInt(d.substr(1+3*f,f), +16):255;1==f&&(e=(e<<4)+e,h=(h<<4)+h,l=(l<<4)+l,g&&(d=(d<<4)+d));f=[e,h,l,d/255]}else 0==d.indexOf("rgba(")?(d=d.slice(5,-1).split(",").map(Number),f=yi(d)):0==d.indexOf("rgb(")?(d=d.slice(4,-1).split(",").map(Number),d.push(1),f=yi(d)):oa(!1,14);d=f;a[c]=d;++b}return d}}();function yi(a){var b=[];b[0]=pa(a[0]+.5|0,0,255);b[1]=pa(a[1]+.5|0,0,255);b[2]=pa(a[2]+.5|0,0,255);b[3]=pa(a[3],0,1);return b};function zi(a){return"string"===typeof a||a instanceof CanvasPattern||a instanceof CanvasGradient?a:xi(a)};function Ai(){}k=Ai.prototype;k.Hh=function(){};k.Hb=function(){};k.Dd=function(){};k.cc=function(){};k.Ce=function(){};k.De=function(){};k.uc=function(){};k.vc=function(){};k.wc=function(){};k.xc=function(){};k.yc=function(){};k.zc=function(){};k.Wb=function(){};k.Oa=function(){};k.Zb=function(){};k.nb=function(){};function Bi(a,b,c,d,e){this.g=a;this.f=b;this.c=c;this.N=d;this.ob=e;this.M=this.b=this.a=this.Wa=this.O=this.T=null;this.$=this.V=this.v=this.B=this.C=this.D=0;this.ca=!1;this.i=this.ab=0;this.ra=!1;this.oa=0;this.ta="";this.Ub=this.ua=0;this.Ea=!1;this.s=this.La=0;this.qa=this.l=this.j=null;this.o=[];this.bb=We()}w(Bi,Ai); +function Ci(a,b,c){if(a.M){b=Te(b,0,c,2,a.N,a.o);c=a.g;var d=a.bb,e=c.globalAlpha;1!=a.v&&(c.globalAlpha=e*a.v);var f=a.ab;a.ca&&(f+=a.ob);var g;var h=0;for(g=b.length;ha.la&&(a.la=d.la),d.eaa.ka&&(a.ka=d.ka)):a[b][c]=d:(a[b]={},a[b][c]=d)} +function Wi(a,b,c,d,e,f,g,h,l,m){var n=x(b).toString();n in a.wantedTiles||(a.wantedTiles[n]={});var p=a.wantedTiles[n];a=a.tileQueue;var q,r,u;for(u=c.minZoom;u<=g;++u){var v=tc(c,f,u,v);var z=c.Ta(u);for(q=v.fa;q<=v.la;++q)for(r=v.ea;r<=v.ka;++r)if(g-u<=h){var A=b.ad(u,q,r,d,e);0==A.getState()&&(p[A.lb()]=!0,A.lb()in a.a||a.i([A,n,yc(c,A.ya),z]));void 0!==l&&l.call(m,A)}else b.kh(u,q,r,e)}};function Xi(a){Ki.call(this,a);this.V=We()}w(Xi,Ki);function Yi(a,b,c){var d=b.pixelRatio,e=b.size[0]*d,f=b.size[1]*d,g=b.viewState.rotation,h=$a(c),l=Za(c),m=Ya(c);c=Wa(c);af(b.coordinateToPixelTransform,h);af(b.coordinateToPixelTransform,l);af(b.coordinateToPixelTransform,m);af(b.coordinateToPixelTransform,c);a.save();qi(a,-g,e/2,f/2);a.beginPath();a.moveTo(h[0]*d,h[1]*d);a.lineTo(l[0]*d,l[1]*d);a.lineTo(m[0]*d,m[1]*d);a.lineTo(c[0]*d,c[1]*d);a.clip();qi(a,g,e/2,f/2)} +function Zi(a,b,c,d,e){var f=a.a;if(Tc(f,b)){var g=d.size[0]*d.pixelRatio,h=d.size[1]*d.pixelRatio,l=d.viewState.rotation;qi(c,-l,g/2,h/2);a=void 0!==e?e:$i(a,d,0);f.b(new bi(b,new Bi(c,d.pixelRatio,d.extent,a,d.viewState.rotation),d,c,null));qi(c,l,g/2,h/2)}}Xi.prototype.s=function(a,b,c,d){if(this.wa(a,b,0,Re,this))return c.call(d,this.a,null)};Xi.prototype.pf=function(a,b,c,d){Zi(this,"postcompose",a,b,d)}; +function $i(a,b,c){var d=b.viewState,e=b.pixelRatio,f=e/d.resolution;return ef(a.V,e*b.size[0]/2,e*b.size[1]/2,f,-f,-d.rotation,-d.center[0]+c,-d.center[1])};function aj(a){Xi.call(this,a);this.l=We();this.j=null}w(aj,Xi);aj.prototype.df=function(a,b,c){Zi(this,"precompose",c,a,void 0);var d=this.Y();if(d){var e=b.extent,f=void 0!==e&&!La(e,a.extent)&&hb(e,a.extent);f&&Yi(c,a,e);e=this.v();var g=c.globalAlpha;c.globalAlpha=b.opacity;c.drawImage(d,0,0,+d.width,+d.height,Math.round(e[4]),Math.round(e[5]),Math.round(d.width*e[0]),Math.round(d.height*e[3]));c.globalAlpha=g;f&&c.restore()}this.pf(c,a,b)}; +aj.prototype.wa=function(a,b,c,d,e){var f=this.a;return f.ha().wa(a,b.viewState.resolution,b.viewState.rotation,c,b.skippedFeatureUids,function(a){return d.call(e,a,f)})}; +aj.prototype.s=function(a,b,c,d){if(this.Y()){if(this.a.ha().wa!==ea)return Xi.prototype.s.apply(this,arguments);var e=af(this.l,a.slice());Ge(e,b.viewState.resolution/this.i);this.j||(this.j=hg(1,1));this.j.clearRect(0,0,1,1);this.j.drawImage(this.Y(),e[0],e[1],1,1,0,0,1,1);e=this.j.getImageData(0,0,1,1).data;if(0a.g){var b=0,c;for(c in a.b){var d=a.b[c];0!==(b++&3)||Tc(d)||(delete a.b[c],--a.a)}}}cj.prototype.get=function(a,b,c){a=b+":"+a+":"+(c?xi(c):"null");return a in this.b?this.b[a]:null};cj.prototype.set=function(a,b,c,d){this.b[b+":"+a+":"+(c?xi(c):"null")]=d;++this.a};cj.prototype.c=function(a){this.g=a;dj(this)};var ej=new cj;function fj(a,b){this.l=b;this.c={};this.v={}}w(fj,Oc);function gj(a){var b=a.viewState,c=a.coordinateToPixelTransform,d=a.pixelToCoordinateTransform;ef(c,a.size[0]/2,a.size[1]/2,1/b.resolution,-1/b.resolution,-b.rotation,-b.center[0],-b.center[1]);ff($e(d,c))}function hj(){dj(ej)}k=fj.prototype; +k.wa=function(a,b,c,d,e,f,g){function h(a,c){var f=x(a).toString(),g=b.layerStates[x(c)].Te;if(!(f in b.skippedFeatureUids)||g)return d.call(e,a,g?c:null)}var l,m=b.viewState,n=m.resolution,p=m.projection;m=a;if(p.g){p=p.G();var q=cb(p),r=a[0];if(rp[2])m=[r+q*Math.ceil((p[0]-r)/q),a[1]]}p=b.layerStatesArray;for(q=p.length-1;0<=q;--q){var u=p[q];r=u.layer;if(yg(u,n)&&f.call(g,r)&&(u=ij(this,r),r.ha()&&(l=u.wa(r.ha().D?m:a,b,c,h,e)),l))return l}}; +k.Ui=function(a,b,c,d,e){return void 0!==this.wa(a,b,c,Re,this,d,e)};function ij(a,b){var c=x(b).toString();if(c in a.c)return a.c[c];for(var d,e=a.S(),f=0,g=pg.length;fb?1:ae;){if(600l-h/2?-1:1);c(a,b,Math.max(e,Math.floor(b-l*n/h+m)),Math.min(f,Math.floor(b+(h-l)*n/h+m)),g)}h=a[b];l=e;n=f;d(a,e,b);for(0g(a[l],h);)l++;for(;0b?1:0}function f(a,b){if(!(this instanceof f))return new f(a,b);this.Lf=Math.max(4,a||9);this.wh=Math.max(2,Math.ceil(.4*this.Lf));b&&this.Ak(b);this.clear()}function g(a,b){h(a,0,a.children.length,b,a)}function h(a,b,c,d,e){e||(e=v(null));e.fa=Infinity;e.ea=Infinity;e.la=-Infinity;e.ka=-Infinity;for(var f;b=a.fa&&b.ka>=a.ea}function v(a){return{children:a,height:1,fb:!0,fa:Infinity,ea:Infinity,la:-Infinity,ka:-Infinity}}function z(a,b,c,d,e){for(var f=[b,c],g;f.length;)c=f.pop(),b=f.pop(),c-b<=d||(g= +b+Math.ceil((c-b)/d/2)*d,A(a,g,b,c,e),f.push(b,g,g,c))}var A=b;A.default=b;f.prototype={all:function(){return this.rh(this.data,[])},search:function(a){var b=this.data,c=[],d=this.xb;if(!u(a,b))return c;for(var e=[],f,g,h,l;b;){f=0;for(g=b.children.length;fthis.Lf)this.Dk(d, +b),b--;else break;this.uk(c,d,b)},Dk:function(a,b){var c=a[b],d=c.children.length,e=this.wh;this.vk(c,e,d);d=this.wk(c,e,d);d=v(c.children.splice(d,c.children.length-d));d.height=c.height;d.fb=c.fb;g(c,this.xb);g(d,this.xb);b?a[b-1].children.push(d):this.yh(c,d)},yh:function(a,b){this.data=v([a,b]);this.data.height=a.height+1;this.data.fb=!1;g(this.data,this.xb)},wk:function(a,b,c){var d,e;var f=e=Infinity;for(d=b;d<=c-b;d++){var g=h(a,0,d,this.xb);var l=h(a,d,c,this.xb);var m=Math.max(0,Math.min(g.la, +l.la)-Math.max(g.fa,l.fa))*Math.max(0,Math.min(g.ka,l.ka)-Math.max(g.ea,l.ea));g=p(g)+p(l);if(m=b;m--)n=a.children[m],l(f,a.fb?d(n):n),g+=q(f);return g}, +uk:function(a,b,c){for(;0<=c;c--)l(b[c],a)},yk:function(a){for(var b=a.length-1,c;0<=b;b--)0===a[b].children.length?0e.width?e.width-n:v;l=l+p>e.height?e.height-p:l;v=a.La;var ta=z[3]+u*r+z[1],la=z[0]+l*r+z[2],ca=c-z[3],ia=d-z[0];if(S||0!==q){var xa=[ca,ia];var Va=[ca+ta,ia];var ic=[ca+ta,ia+la];var Xa=[ca,ia+la]}z=null;0!==q?(f=c+f,g=d+g,z=ef(Ia,f,g,1,1,q,-f,-g),Oa(v),Ea(v,af(Ia,xa)),Ea(v,af(Ia,Va)),Ea(v,af(Ia,ic)),Ea(v,af(Ia,Xa))):Na(ca,ia,ca+ta,ia+la,v);q=b.canvas;q=v[0]<=q.width&& +0<=v[2]&&v[1]<=q.height&&0<=v[3];if(h){if(q||1!=h[4])Ta(h,v),(a=q?[b,z?z.slice(0):null,m,e,n,p,u,l,c,d,r]:null)&&S&&a.push(A,E,xa,Va,ic,Xa),h.push(a)}else q&&(S&&xj(a,b,xa,Va,ic,Xa,A,E),si(b,z,m,e,n,p,u,l,c,d,r))}function Aj(a,b){var c=a.pixelRatio;return 1==c?b:b.map(function(a){return a*c})} +function Bj(a,b,c,d,e,f,g){var h=a.coordinates.length,l=Cj(a);g&&(c+=e);g=[b[c],b[c+1]];var m=[NaN,NaN],n=!0,p;for(p=c+e;pXa&&(a.Xa(b),ta= +0);la>Xa&&(b.stroke(),la=0);ta||la||(b.beginPath(),v=z=NaN);++m;break;case 2:p=Z[1];var Le=h[p],Uf=h[p+1],Id=h[p+2]-Le,te=h[p+3]-Uf,Jh=Math.sqrt(Id*Id+te*te);b.moveTo(Le+Jh,Uf);b.arc(Le,Uf,Jh,0,2*Math.PI,!0);++m;break;case 3:b.closePath();++m;break;case 4:p=Z[1];q=Z[2];var Mg=Z[4],Ng=6==Z.length?Z[5]:void 0;ic.geometry=Z[3];ic.feature=Zb;m in xa||(xa[m]=[]);var Wf=xa[m];Ng?Ng(h,p,q,2,Wf):(Wf[0]=h[p],Wf[1]=h[p+1],Wf.length=2);Mg(Wf,ic);++m;break;case 6:p=Z[1];q=Z[2];Ia=Z[3];r=Z[4];u=Z[5];S=f?null: +Z[6];var rf=Z[7],yu=Z[8],zu=Z[9],Au=Z[10],Bu=Z[11],jp=Z[12],Cu=Z[13],Du=Z[14],Eu=Z[15];if(16sf[zp-2],Cp=Ap.length,Lh=sf[ve],Mh=sf[ve+1];ve+=2;for(var Og=sf[ve],Pg=sf[ve+1],Ok=0,Oi=Math.sqrt(Math.pow(Og-Lh,2)+Math.pow(Pg-Mh,2)),Yf="",Pk=0,Pi=0;PiMath.PI?-2*Math.PI:Qi<-Math.PI?2*Math.PI:0;if(Math.abs(Qi)>Iu){var Sg=null;break a}}var Ep=Ju/Oi,Fp=ya(Lh,Og,Ep),Gp=ya(Mh,Pg,Ep);Ni==Rg?(Kh&&(Xf[0]=Fp,Xf[1]=Gp,Xf[2]=Qg/2),Xf[4]=Yf):(Yf=Qk,Pk=Qg,Xf=[Fp,Gp,Qg/2,Rg,Yf],Kh?Nk.unshift(Xf):Nk.push(Xf),Ni=Rg);Bp+=Qg}Sg=Nk}if(Sg){var Ri;if(sp){var Zf=0;for(Ri=Sg.length;Zfthis.Wa&&(this.Wa=c.lineWidth,this.i=null)):(c.strokeStyle=void 0,c.lineCap=void 0,c.lineDash=null,c.lineDashOffset=void 0,c.lineJoin=void 0,c.lineWidth=void 0,c.miterLimit= +void 0)};k.Ah=function(a,b){var c=a.fillStyle;a=[10,c];"string"!==typeof c&&(b=b.G(),a.push([b[0],b[3]]));this.a.push(a)};k.pd=function(a){this.a.push([11,a.strokeStyle,a.lineWidth*this.pixelRatio,a.lineCap,a.lineJoin,a.miterLimit,Aj(this,a.lineDash),a.lineDashOffset*this.pixelRatio])};function Kj(a,b,c,d){var e=b.fillStyle;if("string"!==typeof e||b.Pk!=e)c.call(a,b,d),b.Pk=e} +function Lj(a,b,c){var d=b.strokeStyle,e=b.lineCap,f=b.lineDash,g=b.lineDashOffset,h=b.lineJoin,l=b.lineWidth,m=b.miterLimit;if(b.Vk!=d||b.Qk!=e||f!=b.Fh&&!jc(b.Fh,f)||b.Rk!=g||b.Sk!=h||b.Tk!=l||b.Uk!=m)c.call(a,b),b.Vk=d,b.Qk=e,b.Fh=f,b.Rk=g,b.Sk=h,b.Tk=l,b.Uk=m}function Fj(a,b){a.qa[2]=a.a.length;a.qa=null;a.T[2]=a.b.length;a.T=null;b=[7,b];a.a.push(b);a.b.push(b)}k.bf=ea;function Cj(a){a.i||(a.i=Ga(a.Ea),0e.maxAngle&&(S>E&&(E=S,n=Ia,A=m),S=0,Ia=m-h)),z=g,v=r,u=q);r=ta;q=la}g=S+g>E?[Ia,m]:[n,A];m=g[0];n=g[1]}else n=l[f];for(g=m;g=p)&&d.push(n[g],n[g+1]);g=d.length;if(0==g)return}g=Bj(this,d,0,g,h,!1,!1);Ej(this,b);if(e.backgroundFill||e.backgroundStroke)this.Oa(e.backgroundFill,e.backgroundStroke),Kj(this,this.state, +this.Ah,a),Lj(this,this.state,this.pd);Uj(this,l,c,g)}Fj(this,b)}}; +Sj.prototype.Y=function(a,b,c,d){var e=d+b+a+c+this.pixelRatio;if(!ii.a.hasOwnProperty(e)){var f=d?this.ab[d]||this.g:null,g=c?this.o[c]||this.c:null,h=this.s[b]||this.f,l=h.scale*this.pixelRatio,m=vj[h.textAlign||"center"];b=d&&f.lineWidth?f.lineWidth:0;a=a.split("\n");var n=a.length,p=[],q=h.font;var r=a.length;var u=0;var v;for(v=0;v=e)for(d=e;d=d;)Xj(c,a+b,a+d),Xj(c,a+d,a+b),Xj(c,a-d,a+b),Xj(c,a-b,a+d),Xj(c,a-b,a-d),Xj(c,a-d,a-b),Xj(c,a+d,a-b),Xj(c,a+b,a-d),d++,e+=1+2*d,0<2*(e-b)+1&&(--b,e+=1-2*b);return Wj[a]=c}k=Vj.prototype;k.Vb=function(a){var b=null;this.a&&(a?(b=this.g,b[4]++):(b=this.g=Da(),b.push(1)));return b};function Zj(a){for(var b in a.b){var c=a.b[b],d;for(d in c)c[d].bf()}} +k.wa=function(a,b,c,d,e,f,g){function h(a){for(var b=n.getImageData(0,0,l,l).data,c=0;cm[2];)++Ia,p=n*Ia,p=$i(this,a,p),r.Na(A,p,l,f),h-=n;p=$i(this,a,0)}qi(A,l,S/2,e/2);A!=c&&(z&&Zi(this,"render",A,a,p),v?(d=c.globalAlpha,c.globalAlpha=b.opacity,c.drawImage(A.canvas,-q,-u),c.globalAlpha=d):c.drawImage(A.canvas, +-q,-u),A.translate(-q,-u));v||(A.globalAlpha=E)}g&&c.restore();this.pf(c,a,b,p)};k.wa=function(a,b,c,d,e){if(this.c){var f=this.a,g={};return this.c.wa(a,b.viewState.resolution,b.viewState.rotation,c,{},function(a){var b=x(a).toString();if(!(b in g))return g[b]=!0,d.call(e,a,f)},null)}};k.Vi=function(){var a=this.a;a.Jb()&&this.c&&a.u()};k.Wi=function(){Mi(this)}; +k.$c=function(a){var b=this.a,c=b.ha();Ui(a,c);var d=a.viewHints[0],e=a.viewHints[1],f=b.ca,g=b.ra;if(!this.i&&!f&&d||!g&&e)return!0;f=a.extent;var h=a.viewState;g=h.projection;var l=h.resolution,m=a.pixelRatio;d=b.g;var n=b.f;e=b.get(ik);void 0===e&&(e=ck);f=Fa(f,n*l);n=h.projection.G();c.D&&h.projection.g&&!La(n,a.extent)&&(a=Math.max(cb(f)/2,cb(n)),f[0]=n[0]-a,f[2]=n[2]+a);if(!this.i&&this.o==l&&this.N==d&&this.v==e&&La(this.l,f))return this.j=!1,!0;this.c=null;this.i=!1;var p=new Vj(.5*l/m,f, +l,m,c.$,this.f,b.f);c.ae(f,l,g);a=function(a){var c=a.ib();if(c)var d=c.call(a,l);else(c=b.ib())&&(d=c(a,l));if(d){if(d){c=!1;if(Array.isArray(d))for(var e=0,f=d.length;e>1),h=+dc(g[e],c),0>h?l=e+1:(m=e,n=!h);e=n?l:~l;0>e?(c=(c-g[-e-2])/(g[-e-1]-g[-e-2]),b+=(-e-2)*d,g=ya(a[b],a[b+d],c),h=ya(a[b+1],a[b+d+1],c)):(g=a[b+e*d],h=a[b+e*d+1])}return f? +(f[0]=g,f[1]=h,f):[g,h]}function Sk(a,b,c,d,e,f){if(c==b)return null;if(e>1,e=a.j?1:Me(b/a.j)};function el(a,b,c,d,e,f){cl.call(this,a,b,f);this.f=d;this.l=c;this.M=new Image;null!==d&&(this.M.crossOrigin=d);this.c=null;this.v=e}w(el,cl);k=el.prototype;k.ia=function(){1==this.state&&(fl(this),this.M=gl());this.g&&Pc(this.g);this.state=5;this.u();cl.prototype.ia.call(this)};k.Y=function(){return this.M};k.lb=function(){return this.l};k.hn=function(){this.state=3;fl(this);this.M=gl();this.u()};k.jn=function(){this.state=this.M.naturalWidth&&this.M.naturalHeight?2:4;fl(this);this.u()}; +k.load=function(){3==this.state&&(this.state=0,this.M=new Image,null!==this.f&&(this.M.crossOrigin=this.f));0==this.state&&(this.state=1,this.u(),this.c=[Lc(this.M,"error",this.hn,this),Lc(this.M,"load",this.jn,this)],this.v(this,this.l))};function fl(a){a.c.forEach(Gc);a.c=null}function gl(){var a=hg(1,1);a.fillStyle="rgba(0,0,0,0)";a.fillRect(0,0,1,1);return a.canvas};function hl(a){this.b=a};function il(a){this.b=a}w(il,hl);il.prototype.S=function(){return 35632};function jl(a){this.b=a}w(jl,hl);jl.prototype.S=function(){return 35633};var kl=new il("precision mediump float;varying vec2 a;varying vec2 b;varying float c;varying float d;uniform float m;uniform vec4 n;uniform vec4 o;uniform vec2 p;void main(void){vec2 windowCenter=vec2((a.x+1.0)/2.0*p.x*d,(a.y+1.0)/2.0*p.y*d);vec2 windowOffset=vec2((b.x+1.0)/2.0*p.x*d,(b.y+1.0)/2.0*p.y*d);float radius=length(windowCenter-windowOffset);float dist=length(windowCenter-gl_FragCoord.xy);if(dist>radius+c){if(o.a==0.0){gl_FragColor=n;}else{gl_FragColor=o;}gl_FragColor.a=gl_FragColor.a-(dist-(radius+c));}else if(n.a==0.0){gl_FragColor=o;if(diststrokeDist){gl_FragColor=o;}else if(dist>=strokeDist-antialias){float step=smoothstep(strokeDist-antialias,strokeDist,dist);gl_FragColor=mix(n,o,step);}} gl_FragColor.a=gl_FragColor.a*m;if(gl_FragColor.a<=0.0){discard;}}"), +ll=new jl("varying vec2 a;varying vec2 b;varying float c;varying float d;attribute vec2 e;attribute float f;attribute float g;uniform mat4 h;uniform mat4 i;uniform mat4 j;uniform float k;uniform float l;void main(void){mat4 offsetMatrix=i*j;a=vec4(h*vec4(e,0.0,1.0)).xy;d=l;float lineWidth=k*l;c=lineWidth/2.0;if(lineWidth==0.0){lineWidth=2.0*l;}vec2 offset;float radius=g+3.0*l;//Until we get gl_VertexID in WebGL,we store an instruction.if(f==0.0){//Offsetting the edges of the triangle by lineWidth/2 is necessary,however//we should also leave some space for the antialiasing,thus we offset by lineWidth.offset=vec2(-1.0,1.0);}else if(f==1.0){offset=vec2(-1.0,-1.0);}else if(f==2.0){offset=vec2(1.0,-1.0);}else{offset=vec2(1.0,1.0);}gl_Position=h*vec4(e+offset*radius,0.0,1.0)+offsetMatrix*vec4(offset*lineWidth,0.0,0.0);b=vec4(h*vec4(e.x+g,e.y,0.0,1.0)).xy;if(distance(a,b)>20000.0){gl_Position=vec4(a,0.0,1.0);}}");function ml(a,b){this.g=a.getUniformLocation(b,"h");this.i=a.getUniformLocation(b,"i");this.c=a.getUniformLocation(b,"j");this.oa=a.getUniformLocation(b,"k");this.qa=a.getUniformLocation(b,"l");this.a=a.getUniformLocation(b,"m");this.C=a.getUniformLocation(b,"n");this.O=a.getUniformLocation(b,"o");this.T=a.getUniformLocation(b,"p");this.b=a.getAttribLocation(b,"e");this.j=a.getAttribLocation(b,"f");this.N=a.getAttribLocation(b,"g")};function nl(){return[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1]}function pl(a,b){a[0]=b[0];a[1]=b[1];a[4]=b[2];a[5]=b[3];a[12]=b[4];a[13]=b[5];return a};function ql(a,b){this.origin=eb(b);this.bb=We();this.Ea=We();this.La=We();this.V=nl();this.b=[];this.j=null;this.g=[];this.i=[];this.a=[];this.s=null;this.f=void 0}w(ql,Ai); +ql.prototype.Na=function(a,b,c,d,e,f,g,h,l,m,n){var p=a.b;if(this.f){var q=p.isEnabled(p.STENCIL_TEST);var r=p.getParameter(p.STENCIL_FUNC);var u=p.getParameter(p.STENCIL_VALUE_MASK);var v=p.getParameter(p.STENCIL_REF);var z=p.getParameter(p.STENCIL_WRITEMASK);var A=p.getParameter(p.STENCIL_FAIL);var E=p.getParameter(p.STENCIL_PASS_DEPTH_PASS);var S=p.getParameter(p.STENCIL_PASS_DEPTH_FAIL);p.enable(p.STENCIL_TEST);p.clear(p.STENCIL_BUFFER_BIT);p.stencilMask(255);p.stencilFunc(p.ALWAYS,1,255);p.stencilOp(p.KEEP, +p.KEEP,p.REPLACE);this.f.Na(a,b,c,d,e,f,g,h,l,m,n);p.stencilMask(0);p.stencilFunc(p.NOTEQUAL,1,255)}rl(a,34962,this.s);rl(a,34963,this.j);f=this.Bf(p,a,e,f);var Ia=Xe(this.bb);cf(Ia,2/(c*e[0]),2/(c*e[1]));bf(Ia,-d);df(Ia,-(b[0]-this.origin[0]),-(b[1]-this.origin[1]));b=Xe(this.La);cf(b,2/e[0],2/e[1]);e=Xe(this.Ea);0!==d&&bf(e,-d);p.uniformMatrix4fv(f.g,!1,pl(this.V,Ia));p.uniformMatrix4fv(f.i,!1,pl(this.V,b));p.uniformMatrix4fv(f.c,!1,pl(this.V,e));p.uniform1f(f.a,g);if(void 0===l)this.Od(p,a,h,!1); +else{m?a=this.Ee(p,a,h,l,n):(p.clear(p.COLOR_BUFFER_BIT|p.DEPTH_BUFFER_BIT),this.Od(p,a,h,!0),a=(a=l(null))?a:void 0);var ta=a}this.Cf(p,f);this.f&&(q||p.disable(p.STENCIL_TEST),p.clear(p.STENCIL_BUFFER_BIT),p.stencilFunc(r,v,u),p.stencilMask(z),p.stencilOp(A,S,E));return ta};function sl(a,b,c,d){a.drawElements(4,d-c,b.f?5125:5123,c*(b.f?4:2))};var tl=[0,0,0,1],ul=[],vl=[0,0,0,1];function wl(a,b,c,d,e,f){a=(c-a)*(f-b)-(e-a)*(d-b);return a<=xl&&a>=-xl?void 0:0f;f+=d)this.a[b++]=a[f],this.a[b++]=a[f+1],this.a[b++]=0,this.a[b++]=this.N,this.a[b++]=a[f],this.a[b++]=a[f+1],this.a[b++]=1,this.a[b++]=this.N,this.a[b++]=a[f],this.a[b++]=a[f+1],this.a[b++]=2,this.a[b++]=this.N,this.a[b++]=a[f],this.a[b++]= +a[f+1],this.a[b++]=3,this.a[b++]=this.N,this.b[c++]=e,this.b[c++]=e+1,this.b[c++]=e+2,this.b[c++]=e+2,this.b[c++]=e+3,this.b[c++]=e,e+=4}else this.c.u&&(this.l.pop(),this.l.length&&(d=this.l[this.l.length-1],this.c.fillColor=d[0],this.c.strokeColor=d[1],this.c.lineWidth=d[2],this.c.u=!1))};k.gb=function(){this.s=new yl(this.a);this.j=new yl(this.b);this.g.push(this.b.length);0===this.o.length&&0=h;){var l=this.g[g];var m=this.i[g];m=x(m).toString();c[m]&&(d!==f&&sl(a,b,d,f),f=l);g--;d=l}d!==f&&sl(a,b,d,f);d=f=h}}}; +k.Ee=function(a,b,c,d,e){var f,g;var h=this.g.length-2;var l=this.g[h+1];for(f=this.o.length-1;0<=f;--f){var m=this.l[f];a.uniform4fv(this.v.C,m[0]);Dl(this,a,m[1],m[2]);for(g=this.o[f];0<=h&&this.g[h]>=g;){m=this.g[h];var n=this.i[h];var p=x(n).toString();if(void 0===c[p]&&n.U()&&(void 0===e||hb(e,n.U().G()))&&(a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER_BIT),sl(a,b,m,l),l=d(n)))return l;h--;l=m}}};function Dl(a,b,c,d){b.uniform4fv(a.v.O,c);b.uniform1f(a.v.oa,d)} +k.Oa=function(a,b){if(b){var c=b.g;this.c.lineDash=c?c:ul;c=b.i;this.c.lineDashOffset=c?c:0;c=b.a;c instanceof CanvasGradient||c instanceof CanvasPattern?c=vl:c=vi(c).map(function(a,b){return 3!=b?a/255:a})||vl;b=b.c;b=void 0!==b?b:1}else c=[0,0,0,0],b=0;a=a?a.b:[0,0,0,0];a instanceof CanvasGradient||a instanceof CanvasPattern?a=tl:a=vi(a).map(function(a,b){return 3!=b?a/255:a})||tl;this.c.strokeColor&&jc(this.c.strokeColor,c)&&this.c.fillColor&&jc(this.c.fillColor,a)&&this.c.lineWidth===b||(this.c.u= +!0,this.c.fillColor=a,this.c.strokeColor=c,this.c.lineWidth=b,this.l.push([a,c,b]))};var El=new il("precision mediump float;varying vec2 a;varying float b;uniform float k;uniform sampler2D l;void main(void){vec4 texColor=texture2D(l,a);gl_FragColor.rgb=texColor.rgb;float alpha=texColor.a*b*k;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}"),Fl=new jl("varying vec2 a;varying float b;attribute vec2 c;attribute vec2 d;attribute vec2 e;attribute float f;attribute float g;uniform mat4 h;uniform mat4 i;uniform mat4 j;void main(void){mat4 offsetMatrix=i;if(g==1.0){offsetMatrix=i*j;}vec4 offsets=offsetMatrix*vec4(e,0.0,0.0);gl_Position=h*vec4(c,0.0,1.0)+offsets;a=d;b=f;}");function Gl(a,b){this.g=a.getUniformLocation(b,"h");this.i=a.getUniformLocation(b,"i");this.c=a.getUniformLocation(b,"j");this.a=a.getUniformLocation(b,"k");this.b=a.getAttribLocation(b,"c");this.B=a.getAttribLocation(b,"d");this.v=a.getAttribLocation(b,"e");this.o=a.getAttribLocation(b,"f");this.D=a.getAttribLocation(b,"g")};function Hl(a,b){this.j=a;this.b=b;this.a={};this.c={};this.g={};this.s=this.v=this.i=this.l=null;(this.f=ec(da,"OES_element_index_uint"))&&b.getExtension("OES_element_index_uint");y(this.j,"webglcontextlost",this.zp,this);y(this.j,"webglcontextrestored",this.Ap,this)}w(Hl,Oc); +function rl(a,b,c){var d=a.b,e=c.b,f=String(x(c));if(f in a.a)d.bindBuffer(b,a.a[f].buffer);else{var g=d.createBuffer();d.bindBuffer(b,g);var h;34962==b?h=new Float32Array(e):34963==b&&(h=a.f?new Uint32Array(e):new Uint16Array(e));d.bufferData(b,h,c.a);a.a[f]={tc:c,buffer:g}}}function Bl(a,b){var c=a.b;b=String(x(b));var d=a.a[b];c.isContextLost()||c.deleteBuffer(d.buffer);delete a.a[b]}k=Hl.prototype; +k.ia=function(){Nc(this.j);var a=this.b;if(!a.isContextLost()){for(var b in this.a)a.deleteBuffer(this.a[b].buffer);for(b in this.g)a.deleteProgram(this.g[b]);for(b in this.c)a.deleteShader(this.c[b]);a.deleteFramebuffer(this.i);a.deleteRenderbuffer(this.s);a.deleteTexture(this.v)}};k.yp=function(){return this.b}; +function Il(a){if(!a.i){var b=a.b,c=b.createFramebuffer();b.bindFramebuffer(b.FRAMEBUFFER,c);var d=Jl(b,1,1),e=b.createRenderbuffer();b.bindRenderbuffer(b.RENDERBUFFER,e);b.renderbufferStorage(b.RENDERBUFFER,b.DEPTH_COMPONENT16,1,1);b.framebufferTexture2D(b.FRAMEBUFFER,b.COLOR_ATTACHMENT0,b.TEXTURE_2D,d,0);b.framebufferRenderbuffer(b.FRAMEBUFFER,b.DEPTH_ATTACHMENT,b.RENDERBUFFER,e);b.bindTexture(b.TEXTURE_2D,null);b.bindRenderbuffer(b.RENDERBUFFER,null);b.bindFramebuffer(b.FRAMEBUFFER,null);a.i=c; +a.v=d;a.s=e}return a.i}function Kl(a,b){var c=String(x(b));if(c in a.c)return a.c[c];var d=a.b,e=d.createShader(b.S());d.shaderSource(e,b.b);d.compileShader(e);return a.c[c]=e}function Cl(a,b,c){var d=x(b)+"/"+x(c);if(d in a.g)return a.g[d];var e=a.b,f=e.createProgram();e.attachShader(f,Kl(a,b));e.attachShader(f,Kl(a,c));e.linkProgram(f);return a.g[d]=f}k.zp=function(){lb(this.a);lb(this.c);lb(this.g);this.s=this.v=this.i=this.l=null};k.Ap=function(){}; +k.cd=function(a){if(a==this.l)return!1;this.b.useProgram(a);this.l=a;return!0};function Ll(a,b,c){var d=a.createTexture();a.bindTexture(a.TEXTURE_2D,d);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MAG_FILTER,a.LINEAR);a.texParameteri(a.TEXTURE_2D,a.TEXTURE_MIN_FILTER,a.LINEAR);void 0!==b&&a.texParameteri(3553,10242,b);void 0!==c&&a.texParameteri(3553,10243,c);return d}function Jl(a,b,c){var d=Ll(a,void 0,void 0);a.texImage2D(a.TEXTURE_2D,0,a.RGBA,b,c,0,a.RGBA,a.UNSIGNED_BYTE,null);return d} +function Ml(a,b){var c=Ll(a,33071,33071);a.texImage2D(a.TEXTURE_2D,0,a.RGBA,a.RGBA,a.UNSIGNED_BYTE,b);return c};function Nl(a,b){ql.call(this,a,b);this.C=this.D=void 0;this.v=[];this.o=[];this.qa=this.oa=this.height=void 0;this.Wa=null;this.width=this.scale=this.rotation=this.rotateWithView=this.O=this.T=this.opacity=void 0}w(Nl,ql);k=Nl.prototype;k.Db=function(a){var b=this.s,c=this.j,d=this.ig(!0),e=a.b;return function(){if(!e.isContextLost()){var f;var g=0;for(f=d.length;g=m;){var n=this.g[h];var p=this.i[h];var q=x(p).toString();if(void 0===c[q]&&p.U()&&(void 0===e||hb(e,p.U().G()))&&(a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER_BIT),sl(a,b,n,g),g=d(p)))return g;g=n;h--}}}; +k.gb=function(){this.qa=this.oa=this.height=this.C=this.D=void 0;this.b=null;this.scale=this.rotation=this.rotateWithView=this.O=this.T=this.opacity=void 0;this.a=null;this.width=void 0};function Ql(a,b){Nl.call(this,a,b);this.l=[];this.c=[];this.B=[];this.N=[]}w(Ql,Nl);k=Ql.prototype;k.wc=function(a,b){this.g.push(this.b.length);this.i.push(b);b=a.da();Ol(this,b,b.length,a.pa())};k.yc=function(a,b){this.g.push(this.b.length);this.i.push(b);b=a.da();Ol(this,b,b.length,a.pa())}; +k.gb=function(a){var b=a.b;this.v.push(this.b.length);this.o.push(this.b.length);this.s=new yl(this.a);this.j=new yl(this.b);var c={};Pl(this.B,this.l,c,b);Pl(this.N,this.c,c,b);this.c=this.l=null;Nl.prototype.gb.call(this,a)}; +k.Zb=function(a){var b=a.Vc(),c=a.Y(1),d=a.He(),e=a.Eg(),f=a.i,g=a.bd(),h=a.s,l=a.f,m=a.oc();a=a.a;if(0===this.l.length)this.l.push(c);else{var n=this.l[this.l.length-1];x(n)!=x(c)&&(this.v.push(this.b.length),this.l.push(c))}0===this.c.length?this.c.push(e):(n=this.c[this.c.length-1],x(n)!=x(e)&&(this.o.push(this.b.length),this.c.push(e)));this.D=b[0];this.C=b[1];this.height=m[1];this.oa=d[1];this.qa=d[0];this.opacity=f;this.T=g[0];this.O=g[1];this.rotation=l;this.rotateWithView=h;this.scale=a;this.width= +m[0]};k.ig=function(a){return a?this.B.concat(this.N):this.B};k.ag=function(){return this.N};function Rl(a,b,c){var d=b-c;return a[0]===a[d]&&a[1]===a[d+1]&&3<(b-0)/c?!!mf(a,0,b,c):!1};var Sl=new il("precision mediump float;varying float a;varying vec2 aVertex;varying float c;uniform float m;uniform vec4 n;uniform vec2 o;uniform float p;void main(void){if(a>0.0){vec2 windowCoords=vec2((aVertex.x+1.0)/2.0*o.x*p,(aVertex.y+1.0)/2.0*o.y*p);if(length(windowCoords-gl_FragCoord.xy)>c*p){discard;}} gl_FragColor=n;float alpha=n.a*m;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}"),Tl=new jl("varying float a;varying vec2 aVertex;varying float c;attribute vec2 d;attribute vec2 e;attribute vec2 f;attribute float g;uniform mat4 h;uniform mat4 i;uniform mat4 j;uniform float k;uniform float l;bool nearlyEquals(in float value,in float ref){float epsilon=0.000000000001;return value>=ref-epsilon&&value<=ref+epsilon;}void alongNormal(out vec2 offset,in vec2 nextP,in float turnDir,in float direction){vec2 dirVect=nextP-e;vec2 normal=normalize(vec2(-turnDir*dirVect.y,turnDir*dirVect.x));offset=k/2.0*normal*direction;}void miterUp(out vec2 offset,out float round,in bool isRound,in float direction){float halfWidth=k/2.0;vec2 tangent=normalize(normalize(f-e)+normalize(e-d));vec2 normal=vec2(-tangent.y,tangent.x);vec2 dirVect=f-e;vec2 tmpNormal=normalize(vec2(-dirVect.y,dirVect.x));float miterLength=abs(halfWidth/dot(normal,tmpNormal));offset=normal*direction*miterLength;round=0.0;if(isRound){round=1.0;}else if(miterLength>l+k){offset=halfWidth*tmpNormal*direction;}} bool miterDown(out vec2 offset,in vec4 projPos,in mat4 offsetMatrix,in float direction){bool degenerate=false;vec2 tangent=normalize(normalize(f-e)+normalize(e-d));vec2 normal=vec2(-tangent.y,tangent.x);vec2 dirVect=d-e;vec2 tmpNormal=normalize(vec2(-dirVect.y,dirVect.x));vec2 longOffset,shortOffset,longVertex;vec4 shortProjVertex;float halfWidth=k/2.0;if(length(f-e)>length(d-e)){longOffset=tmpNormal*direction*halfWidth;shortOffset=normalize(vec2(dirVect.y,-dirVect.x))*direction*halfWidth;longVertex=f;shortProjVertex=h*vec4(d,0.0,1.0);}else{shortOffset=tmpNormal*direction*halfWidth;longOffset=normalize(vec2(dirVect.y,-dirVect.x))*direction*halfWidth;longVertex=d;shortProjVertex=h*vec4(f,0.0,1.0);}vec4 p1=h*vec4(longVertex,0.0,1.0)+offsetMatrix*vec4(longOffset,0.0,0.0);vec4 p2=projPos+offsetMatrix*vec4(longOffset,0.0,0.0);vec4 p3=shortProjVertex+offsetMatrix*vec4(-shortOffset,0.0,0.0);vec4 p4=shortProjVertex+offsetMatrix*vec4(shortOffset,0.0,0.0);float denom=(p4.y-p3.y)*(p2.x-p1.x)-(p4.x-p3.x)*(p2.y-p1.y);float firstU=((p4.x-p3.x)*(p1.y-p3.y)-(p4.y-p3.y)*(p1.x-p3.x))/denom;float secondU=((p2.x-p1.x)*(p1.y-p3.y)-(p2.y-p1.y)*(p1.x-p3.x))/denom;float epsilon=0.000000000001;if(firstU>epsilon&&firstU<1.0-epsilon&&secondU>epsilon&&secondU<1.0-epsilon){shortProjVertex.x=p1.x+firstU*(p2.x-p1.x);shortProjVertex.y=p1.y+firstU*(p2.y-p1.y);offset=shortProjVertex.xy;degenerate=true;}else{float miterLength=abs(halfWidth/dot(normal,tmpNormal));offset=normal*direction*miterLength;}return degenerate;}void squareCap(out vec2 offset,out float round,in bool isRound,in vec2 nextP,in float turnDir,in float direction){round=0.0;vec2 dirVect=e-nextP;vec2 firstNormal=normalize(dirVect);vec2 secondNormal=vec2(turnDir*firstNormal.y*direction,-turnDir*firstNormal.x*direction);vec2 hypotenuse=normalize(firstNormal-secondNormal);vec2 normal=vec2(turnDir*hypotenuse.y*direction,-turnDir*hypotenuse.x*direction);float length=sqrt(c*c*2.0);offset=normal*length;if(isRound){round=1.0;}} void main(void){bool degenerate=false;float direction=float(sign(g));mat4 offsetMatrix=i*j;vec2 offset;vec4 projPos=h*vec4(e,0.0,1.0);bool round=nearlyEquals(mod(g,2.0),0.0);a=0.0;c=k/2.0;aVertex=projPos.xy;if(nearlyEquals(mod(g,3.0),0.0)||nearlyEquals(mod(g,17.0),0.0)){alongNormal(offset,f,1.0,direction);}else if(nearlyEquals(mod(g,5.0),0.0)||nearlyEquals(mod(g,13.0),0.0)){alongNormal(offset,d,-1.0,direction);}else if(nearlyEquals(mod(g,23.0),0.0)){miterUp(offset,a,round,direction);}else if(nearlyEquals(mod(g,19.0),0.0)){degenerate=miterDown(offset,projPos,offsetMatrix,direction);}else if(nearlyEquals(mod(g,7.0),0.0)){squareCap(offset,a,round,f,1.0,direction);}else if(nearlyEquals(mod(g,11.0),0.0)){squareCap(offset,a,round,d,-1.0,direction);}if(!degenerate){vec4 offsets=offsetMatrix*vec4(offset,0.0,0.0);gl_Position=projPos+offsets;}else{gl_Position=vec4(offset,0.0,1.0);}}");function Ul(a,b){this.g=a.getUniformLocation(b,"h");this.i=a.getUniformLocation(b,"i");this.c=a.getUniformLocation(b,"j");this.oa=a.getUniformLocation(b,"k");this.O=a.getUniformLocation(b,"l");this.a=a.getUniformLocation(b,"m");this.C=a.getUniformLocation(b,"n");this.T=a.getUniformLocation(b,"o");this.qa=a.getUniformLocation(b,"p");this.l=a.getAttribLocation(b,"d");this.b=a.getAttribLocation(b,"e");this.s=a.getAttribLocation(b,"f");this.f=a.getAttribLocation(b,"g")};function Vl(a,b){ql.call(this,a,b);this.v=null;this.o=[];this.l=[];this.c={strokeColor:null,lineCap:void 0,lineDash:null,lineDashOffset:void 0,lineJoin:void 0,lineWidth:void 0,miterLimit:void 0,u:!1}}w(Vl,ql); +function Wl(a,b,c,d){var e,f=a.a.length,g=a.b.length,h="bevel"===a.c.lineJoin?0:"miter"===a.c.lineJoin?1:2,l="butt"===a.c.lineCap?0:"square"===a.c.lineCap?1:2,m=Rl(b,c,d),n=g,p=1;for(e=0;ec&&(this.g.push(c),this.i.push(b),this.c.u&&(this.l.push(c),this.c.u=!1))}; +function gm(a,b,c,d){Rl(b,b.length,d)||(b.push(b[0]),b.push(b[1]));Wl(a,b,b.length,d);if(c.length){var e;b=0;for(e=c.length;b=n;){var p=this.g[m]; +var q=this.i[m];q=x(q).toString();c[q]&&(g!==l&&(sl(a,b,g,l),a.clear(a.DEPTH_BUFFER_BIT)),l=p);m--;g=p}g!==l&&(sl(a,b,g,l),a.clear(a.DEPTH_BUFFER_BIT));g=l=n}}d||(a.disable(a.DEPTH_TEST),a.clear(a.DEPTH_BUFFER_BIT),a.depthMask(f),a.depthFunc(e))}; +k.Ee=function(a,b,c,d,e){var f,g;var h=this.g.length-2;var l=this.g[h+1];for(f=this.l.length-1;0<=f;--f){var m=this.o[f];im(this,a,m[0],m[1],m[2]);for(g=this.l[f];0<=h&&this.g[h]>=g;){m=this.g[h];var n=this.i[h];var p=x(n).toString();if(void 0===c[p]&&n.U()&&(void 0===e||hb(e,n.U().G()))&&(a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER_BIT),sl(a,b,m,l),l=d(n)))return l;h--;l=m}}};function im(a,b,c,d,e){b.uniform4fv(a.v.C,c);b.uniform1f(a.v.oa,d);b.uniform1f(a.v.O,e)} +k.Oa=function(a,b){a=b.f;this.c.lineCap=void 0!==a?a:"round";a=b.g;this.c.lineDash=a?a:ul;a=b.i;this.c.lineDashOffset=a?a:0;a=b.j;this.c.lineJoin=void 0!==a?a:"round";a=b.a;a instanceof CanvasGradient||a instanceof CanvasPattern?a=vl:a=vi(a).map(function(a,b){return 3!=b?a/255:a})||vl;var c=b.c;c=void 0!==c?c:1;b=b.l;b=void 0!==b?b:10;this.c.strokeColor&&jc(this.c.strokeColor,a)&&this.c.lineWidth===c&&this.c.miterLimit===b||(this.c.u=!0,this.c.strokeColor=a,this.c.lineWidth=c,this.c.miterLimit=b, +this.o.push([a,c,b]))};var Zl=3,$l=5,Yl=7,am=11,bm=13,cm=17,dm=19,em=23;var jm=new il("precision mediump float;uniform vec4 e;uniform float f;void main(void){gl_FragColor=e;float alpha=e.a*f;if(alpha==0.0){discard;}gl_FragColor.a=alpha;}"),km=new jl("attribute vec2 a;uniform mat4 b;uniform mat4 c;uniform mat4 d;void main(void){gl_Position=b*vec4(a,0.0,1.0);}");function lm(a,b){this.g=a.getUniformLocation(b,"b");this.i=a.getUniformLocation(b,"c");this.c=a.getUniformLocation(b,"d");this.C=a.getUniformLocation(b,"e");this.a=a.getUniformLocation(b,"f");this.b=a.getAttribLocation(b,"a")};function mm(){this.b=this.a=this.g=void 0;this.c=0}function nm(a){var b=a.b;if(b){var c=b.next,d=b.Eb;c&&(c.Eb=d);d&&(d.next=c);a.b=c||d;a.g===a.a?(a.b=void 0,a.g=void 0,a.a=void 0):a.g===b?a.g=a.b:a.a===b&&(a.a=d?a.b.Eb:a.b);a.c--}}function om(a){a.b=a.g;if(a.b)return a.b.data}function pm(a){if(a.b&&a.b.next)return a.b=a.b.next,a.b.data}function qm(a){if(a.b&&a.b.next)return a.b.next.data}function rm(a){if(a.b&&a.b.Eb)return a.b=a.b.Eb,a.b.data}function sm(a){if(a.b&&a.b.Eb)return a.b.Eb.data} +function tm(a){if(a.b)return a.b.data}mm.prototype.concat=function(a){if(a.b){if(this.b){var b=this.b.next;this.b.next=a.g;a.g.Eb=this.b;b.Eb=a.a;a.a.next=b;this.c+=a.c}else this.b=a.b,this.g=a.g,this.a=a.a,this.c=a.c;a.b=void 0;a.g=void 0;a.a=void 0;a.c=0}};function um(){this.a=rj.Jc(void 0);this.b={}}k=um.prototype;k.Ca=function(a,b){a={fa:a[0],ea:a[1],la:a[2],ka:a[3],value:b};this.a.Ca(a);this.b[x(b)]=a};k.load=function(a,b){for(var c=Array(b.length),d=0,e=b.length;d=g;p-=c)q=Im(a,b[p],b[p+1],h++),m.push(Jm(n,q,d)),l.push([Math.min(n.x,q.x),Math.min(n.y,q.y),Math.max(n.x,q.x),Math.max(n.y,q.y)]),n=q;m.push(Jm(q,f,d));l.push([Math.min(n.x,q.x), +Math.min(n.y,q.y),Math.max(n.x,q.x),Math.max(n.y,q.y)]);e.load(l,m)}function Dm(a){var b=om(a),c=b,d=[c.Z.x,c.Z.y];do c=pm(a),c.Z.x>d[0]&&(d=[c.Z.x,c.Z.y]);while(c!==b);return d}function Em(a,b,c){var d=om(a),e=d,f=pm(a),g=!1;do{var h=c?wl(f.X.x,f.X.y,e.X.x,e.X.y,e.Z.x,e.Z.y):wl(e.Z.x,e.Z.y,e.X.x,e.X.y,f.X.x,f.X.y);void 0===h?(Km(e,f,a,b),g=!0,f===d&&(d=qm(a)),f=e,rm(a)):e.X.Kb!==h&&(e.X.Kb=h,g=!0);e=f;f=pm(a)}while(e!==d);return g} +function Gm(a,b,c,d,e){for(var f=om(a);f.X.x!==b;)f=pm(a);b=f.X;d={x:d,y:b.y,qb:-1};var g=Infinity,h;var l=Fm({Z:b,X:d},e,!0);var m=0;for(h=l.length;mxl&&d<1-xl&&c>xl&&c<1-xl||e&&0<=d&&1>=d&&0<=c&&1>=c))return[a.x+d*(b.x-a.x),a.y+d*(b.y-a.y)]} +function Qm(a,b,c,d,e){if(void 0===b.Kb||void 0===d.Kb)return!1;var f=(c.x-d.x)*(b.y-d.y)>(c.y-d.y)*(b.x-d.x);e=(e.x-d.x)*(b.y-d.y)<(e.y-d.y)*(b.x-d.x);a=(a.x-b.x)*(d.y-b.y)>(a.y-b.y)*(d.x-b.x);c=(c.x-b.x)*(d.y-b.y)<(c.y-b.y)*(d.x-b.x);b=b.Kb?c||a:c&&a;return(d.Kb?e||f:e&&f)&&b}k=Am.prototype; +k.xc=function(a,b){var c=a.td(),d=a.pa(),e=this.b.length,f=this.f.b.length;a=a.da();var g,h,l;var m=h=0;for(g=c.length;me&&(this.g.push(e),this.i.push(b),this.l.u&&(this.c.push(e),this.l.u=!1));this.f.b.length>f&&hm(this.f, +b,f)};k.zc=function(a,b){var c=a.pb(),d=a.pa();if(0=n;){var p=this.g[m];var q=this.i[m];q=x(q).toString(); +c[q]&&(g!==l&&(sl(a,b,g,l),a.clear(a.DEPTH_BUFFER_BIT)),l=p);m--;g=p}g!==l&&(sl(a,b,g,l),a.clear(a.DEPTH_BUFFER_BIT));g=l=n}}d||(a.disable(a.DEPTH_TEST),a.clear(a.DEPTH_BUFFER_BIT),a.depthMask(f),a.depthFunc(e))}; +k.Ee=function(a,b,c,d,e){var f,g;var h=this.g.length-2;var l=this.g[h+1];for(f=this.c.length-1;0<=f;--f){var m=this.o[f];a.uniform4fv(this.v.C,m);for(g=this.c[f];0<=h&&this.g[h]>=g;){m=this.g[h];var n=this.i[h];var p=x(n).toString();if(void 0===c[p]&&n.U()&&(void 0===e||hb(e,n.U().G()))&&(a.clear(a.COLOR_BUFFER_BIT|a.DEPTH_BUFFER_BIT),sl(a,b,m,l),l=d(n)))return l;h--;l=m}}}; +k.Oa=function(a,b){a=a?a.b:[0,0,0,0];a instanceof CanvasGradient||a instanceof CanvasPattern?a=tl:a=vi(a).map(function(a,b){return 3!=b?a/255:a})||tl;this.l.fillColor&&jc(a,this.l.fillColor)||(this.l.fillColor=a,this.l.u=!0,this.o.push(a));b?this.f.Oa(null,b):this.f.Oa(null,new Ak({color:[0,0,0,0],lineWidth:0}))};function Rm(a,b){this.b=b;this.a=[{x:0,y:0,width:a,height:a}];this.c={};this.g=hg(a,a);this.i=this.g.canvas}Rm.prototype.get=function(a){return this.c[a]||null}; +Rm.prototype.add=function(a,b,c,d,e){var f;var g=0;for(f=this.a.length;g=b+this.b&&h.height>=c+this.b)return f={offsetX:h.x+this.b,offsetY:h.y+this.b,image:this.i},this.c[a]=f,d.call(e,this.g,h.x+this.b,h.y+this.b),a=g,b+=this.b,d=c+this.b,h.width-b>h.height-d?(c={x:h.x+b,y:h.y,width:h.width-b,height:h.height},b={x:h.x,y:h.y+d,width:b,height:h.height-d},Sm(this,a,c,b)):(c={x:h.x+b,y:h.y,width:h.width-b,height:d},b={x:h.x,y:h.y+d,width:h.width,height:h.height-d}, +Sm(this,a,c,b)),f}return null};function Sm(a,b,c,d){b=[b,1];0this.g||c+this.b>this.g)return null;d=Wm(this,!1,a,b,c,d,f);if(!d)return null;a=Wm(this,!0,a,b,c,void 0!==e?e:ea,f);return Vm(d,a)};function Wm(a,b,c,d,e,f,g){var h=b?a.i:a.f,l;var m=0;for(l=h.length;ma[0]||a[0]>e[0]||0>a[1]||a[1]>e[1])&&(this.i|| +(this.i=hg(1,1)),this.i.clearRect(0,0,1,1),this.i.drawImage(this.M.Y(),a[0],a[1],1,1,0,0,1,1),e=this.i.getImageData(0,0,1,1).data,0d?b[0]=d-c:0>e&&(b[0]=Math.abs(e)+c),0>f?b[1]=f-c:0>g&&(b[1]=Math.abs(g)+c),0=== +b[0]&&0===b[1])||(c=a.aa().xa(),c=a.Ia(c),b=[c[0]+b[0],c[1]+b[1]],a.aa().animate({center:a.Ra(b),duration:this.autoPanAnimation.duration,easing:this.autoPanAnimation.easing}))}}};k.rm=function(){Hn(this)};k.Hj=function(a){this.set(Cn,a)};k.setMap=function(a){this.set(Dn,a)};k.Mj=function(a){this.set(En,a)};k.We=function(a){this.set(Fn,a)};function In(a,b){var c=a.getBoundingClientRect();a=c.left+window.pageXOffset;c=c.top+window.pageYOffset;return[a,c,a+b[0],c+b[1]]}k.Pj=function(a){this.set(Gn,a)}; +function Jn(a,b){a.a.visible!==b&&(a.element.style.display=b?"":"none",a.a.visible=b)} +function Hn(a){var b=a.Ve(),c=a.pi();if(b&&b.c&&c){c=b.Ia(c);var d=b.Cb();b=a.element.style;var e=a.Xh(),f=a.Yh();Jn(a,!0);var g=e[0];e=e[1];if("bottom-right"==f||"center-right"==f||"top-right"==f)""!==a.a.Se&&(a.a.Se=b.left=""),g=Math.round(d[0]-c[0]-g)+"px",a.a.xf!=g&&(a.a.xf=b.right=g);else{""!==a.a.xf&&(a.a.xf=b.right="");if("bottom-center"==f||"center-center"==f||"top-center"==f)g-=a.element.offsetWidth/2;g=Math.round(c[0]+g)+"px";a.a.Se!=g&&(a.a.Se=b.left=g)}if("bottom-left"==f||"bottom-center"== +f||"bottom-right"==f)""!==a.a.Ef&&(a.a.Ef=b.top=""),c=Math.round(d[1]-c[1]-e)+"px",a.a.ze!=c&&(a.a.ze=b.bottom=c);else{""!==a.a.ze&&(a.a.ze=b.bottom="");if("center-left"==f||"center-center"==f||"center-right"==f)e-=a.element.offsetHeight/2;c=Math.round(c[1]+e)+"px";a.a.Ef!=c&&(a.a.Ef=b.top=c)}}else Jn(a,!1)}var Cn="element",Dn="map",En="offset",Fn="position",Gn="positioning";function Kn(a,b,c,d,e,f){cl.call(this,a,b,f);this.c=0;this.l=null;this.v=d;this.a=null;this.f={};this.C=e;this.N=c}w(Kn,cl);k=Kn.prototype;k.ia=function(){this.a=null;this.f={};this.state=5;this.u();cl.prototype.ia.call(this)};k.G=function(){return this.l||Ln};k.qn=function(){return this.v};k.pn=function(){return this.a};k.lb=function(){return this.N};k.rn=function(){return this.o};function ok(a,b,c){return a.f[x(b)+","+c]} +k.load=function(){0==this.state&&(oj(this,1),this.C(this,this.N),this.D(null,NaN,null))};k.Cp=function(a,b,c){this.vg(b);this.Ij(a);this.ri(c)};k.Bp=function(){oj(this,3)};k.ri=function(a){this.l=a};k.Ij=function(a){this.a=a;oj(this,2)};k.vg=function(a){this.o=a};k.ug=function(a){this.D=a};var Ln=[0,0,4096,4096];function Mn(a){a=a?a:{};this.c=void 0!==a.className?a.className:"ol-full-screen";var b=void 0!==a.label?a.label:"\u2922";this.l="string"===typeof b?document.createTextNode(b):b;b=void 0!==a.labelActive?a.labelActive:"\u00d7";this.v="string"===typeof b?document.createTextNode(b):b;var c=a.tipLabel?a.tipLabel:"Toggle full-screen";b=document.createElement("button");b.className=this.c+"-"+Nn();b.setAttribute("type","button");b.title=c;b.appendChild(this.l);y(b,"click",this.C,this);c=document.createElement("div"); +c.className=this.c+" ol-unselectable ol-control "+(On()?"":"ol-unsupported");c.appendChild(b);vg.call(this,{element:c,target:a.target});this.D=void 0!==a.keys?a.keys:!1;this.j=a.source}w(Mn,vg); +Mn.prototype.C=function(a){a.preventDefault();On()&&(a=this.a)&&(Nn()?document.exitFullscreen?document.exitFullscreen():document.msExitFullscreen?document.msExitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen&&document.webkitExitFullscreen():(a=this.j?"string"===typeof this.j?document.getElementById(this.j):this.j:a.Cc(),this.D?a.mozRequestFullScreenWithKeys?a.mozRequestFullScreenWithKeys():a.webkitRequestFullscreen?a.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT): +Pn(a):Pn(a)))};Mn.prototype.o=function(){var a=this.element.firstElementChild,b=this.a;Nn()?(a.className=this.c+"-true",ig(this.v,this.l)):(a.className=this.c+"-false",ig(this.l,this.v));b&&b.Oc()};Mn.prototype.setMap=function(a){vg.prototype.setMap.call(this,a);a&&this.s.push(y(document,Qn(),this.o,this))}; +function On(){var a=document.body;return!!(a.webkitRequestFullscreen||a.mozRequestFullScreen&&document.mozFullScreenEnabled||a.msRequestFullscreen&&document.msFullscreenEnabled||a.requestFullscreen&&document.fullscreenEnabled)}function Nn(){return!!(document.webkitIsFullScreen||document.mozFullScreen||document.msFullscreenElement||document.fullscreenElement)} +function Pn(a){a.requestFullscreen?a.requestFullscreen():a.msRequestFullscreen?a.msRequestFullscreen():a.mozRequestFullScreen?a.mozRequestFullScreen():a.webkitRequestFullscreen&&a.webkitRequestFullscreen()}var Qn=function(){var a;return function(){if(!a){var b=document.body;b.webkitRequestFullscreen?a="webkitfullscreenchange":b.mozRequestFullScreen?a="mozfullscreenchange":b.msRequestFullscreen?a="MSFullscreenChange":b.requestFullscreen&&(a="fullscreenchange")}return a}}();function Rn(a){a=a?a:{};var b=document.createElement("DIV");b.className=void 0!==a.className?a.className:"ol-mouse-position";vg.call(this,{element:b,render:a.render?a.render:Sn,target:a.target});y(this,Xc(Tn),this.En,this);a.coordinateFormat&&this.Gj(a.coordinateFormat);a.projection&&this.ti(a.projection);this.o=void 0!==a.undefinedHTML?a.undefinedHTML:"";this.v=b.innerHTML;this.l=this.j=this.c=null}w(Rn,vg); +function Sn(a){a=a.frameState;a?this.c!=a.viewState.projection&&(this.c=a.viewState.projection,this.j=null):this.c=null;Un(this,this.l)}k=Rn.prototype;k.En=function(){this.j=null};k.Qh=function(){return this.get(Vn)};k.si=function(){return this.get(Tn)};k.mm=function(a){this.l=this.a.ud(a);Un(this,this.l)};k.nm=function(){Un(this,null);this.l=null};k.setMap=function(a){vg.prototype.setMap.call(this,a);a&&(a=a.a,this.s.push(y(a,"mousemove",this.mm,this),y(a,"mouseout",this.nm,this)))}; +k.Gj=function(a){this.set(Vn,a)};k.ti=function(a){this.set(Tn,Ob(a))};function Un(a,b){var c=a.o;if(b&&a.c){if(!a.j){var d=a.si();a.j=d?Pb(a.c,d):$b}if(b=a.a.Ra(b))a.j(b,b),c=(c=a.Qh())?c(b):b.toString()}a.v&&c==a.v||(a.element.innerHTML=c,a.v=c)}var Tn="projection",Vn="coordinateFormat";function Wn(a){function b(a){a=h.Sd(a);l.a.aa().ub(a);window.removeEventListener("mousemove",c);window.removeEventListener("mouseup",b)}function c(a){a=h.Sd({clientX:a.clientX-n.offsetWidth/2,clientY:a.clientY+n.offsetHeight/2});m.We(a)}a=a?a:{};this.j=void 0!==a.collapsed?a.collapsed:!0;this.l=void 0!==a.collapsible?a.collapsible:!0;this.l||(this.j=!1);var d=void 0!==a.className?a.className:"ol-overviewmap",e=void 0!==a.tipLabel?a.tipLabel:"Overview map",f=void 0!==a.collapseLabel?a.collapseLabel: +"\u00ab";"string"===typeof f?(this.o=document.createElement("span"),this.o.textContent=f):this.o=f;f=void 0!==a.label?a.label:"\u00bb";"string"===typeof f?(this.D=document.createElement("span"),this.D.textContent=f):this.D=f;var g=this.l&&!this.j?this.o:this.D;f=document.createElement("button");f.setAttribute("type","button");f.title=e;f.appendChild(g);y(f,"click",this.Hn,this);this.C=document.createElement("DIV");this.C.className="ol-overviewmap-map";var h=this.c=new G({controls:new B,interactions:new B, +view:a.view});a.layers&&a.layers.forEach(function(a){h.xe(a)},this);e=document.createElement("DIV");e.className="ol-overviewmap-box";e.style.boxSizing="border-box";this.v=new Bn({position:[0,0],positioning:"bottom-left",element:e});this.c.ye(this.v);e=document.createElement("div");e.className=d+" ol-unselectable ol-control"+(this.j&&this.l?" ol-collapsed":"")+(this.l?"":" ol-uncollapsible");e.appendChild(this.C);e.appendChild(f);vg.call(this,{element:e,render:a.render?a.render:Xn,target:a.target}); +var l=this,m=this.v,n=this.v.Rd();n.addEventListener("mousedown",function(){window.addEventListener("mousemove",c);window.addEventListener("mouseup",b)})}w(Wn,vg);k=Wn.prototype;k.setMap=function(a){var b=this.a;a!==b&&(b&&((b=b.aa())&&Mc(b,Xc("rotation"),this.Qe,this),this.c.Ad(null)),vg.prototype.setMap.call(this,a),a&&(this.c.Ad(this.C),this.s.push(y(a,"propertychange",this.lm,this)),0===this.c.Xe().kc()&&this.c.zf(a.hc()),a=a.aa()))&&(y(a,Xc("rotation"),this.Qe,this),ag(a)&&(this.c.Oc(),Yn(this)))}; +k.lm=function(a){"view"===a.key&&((a=a.oldValue)&&Mc(a,Xc("rotation"),this.Qe,this),a=this.a.aa(),y(a,Xc("rotation"),this.Qe,this))};k.Qe=function(){this.c.aa().ce(this.a.aa().Sa())};function Xn(){var a=this.a,b=this.c;if(a.c&&b.c){var c=a.Cb();a=a.aa().qd(c);var d=b.Cb();c=b.aa().qd(d);var e=b.Ia($a(a)),f=b.Ia(Ya(a));b=Math.abs(e[0]-f[0]);e=Math.abs(e[1]-f[1]);f=d[0];d=d[1];b<.1*f||e<.1*d||b>.75*f||e>.75*d?Yn(this):La(c,a)||(a=this.c,c=this.a.aa(),a.aa().ub(c.xa()))}Zn(this)} +function Yn(a){var b=a.a;a=a.c;var c=b.Cb();b=b.aa().qd(c);a=a.aa();ib(b,1/(.1*Math.pow(2,Math.log(7.5)/Math.LN2/2)));a.Uf(b)}function Zn(a){var b=a.a,c=a.c;if(b.c&&c.c){var d=b.Cb(),e=b.aa(),f=c.aa();c=e.Sa();b=a.v;var g=a.v.Rd(),h=e.qd(d);d=f.Pa();e=Wa(h);f=Za(h);if(a=a.a.aa().xa()){var l=[e[0]-a[0],e[1]-a[1]];Fe(l,c);ze(l,a)}b.We(l);g&&(g.style.width=Math.abs((e[0]-f[0])/d)+"px",g.style.height=Math.abs((f[1]-e[1])/d)+"px")}}k.Hn=function(a){a.preventDefault();$n(this)}; +function $n(a){a.element.classList.toggle("ol-collapsed");a.j?ig(a.o,a.D):ig(a.D,a.o);a.j=!a.j;var b=a.c;a.j||b.c||(b.Oc(),Yn(a),Lc(b,"postrender",function(){Zn(this)},a))}k.Gn=function(){return this.l};k.Jn=function(a){this.l!==a&&(this.l=a,this.element.classList.toggle("ol-uncollapsible"),!a&&this.j&&$n(this))};k.In=function(a){this.l&&this.j!==a&&$n(this)};k.Fn=function(){return this.j};k.Hl=function(){return this.c};function ao(a){a=a?a:{};var b=void 0!==a.className?a.className:"ol-scale-line";this.l=document.createElement("DIV");this.l.className=b+"-inner";this.c=document.createElement("DIV");this.c.className=b+" ol-unselectable";this.c.appendChild(this.l);this.o=null;this.v=void 0!==a.minWidth?a.minWidth:64;this.j=!1;this.B=void 0;this.D="";vg.call(this,{element:this.c,render:a.render?a.render:bo,target:a.target});y(this,Xc(co),this.V,this);this.O(a.units||"metric")}w(ao,vg);var eo=[1,2,5];ao.prototype.C=function(){return this.get(co)}; +function bo(a){(a=a.frameState)?this.o=a.viewState:this.o=null;fo(this)}ao.prototype.V=function(){fo(this)};ao.prototype.O=function(a){this.set(co,a)}; +function fo(a){var b=a.o;if(b){var c=b.center,d=b.projection,e=a.C();b=Nb(d,b.resolution,c,"degrees"==e?"degrees":"m");"degrees"!=e&&(b*=d.Bc());var f=a.v*b;c="";"degrees"==e?(c=ub.degrees,"degrees"==d.a?f*=c:b/=c,ff?(c="in",b/=.0254):1609.344>f?(c="ft",b/=.3048):(c="mi",b/=1609.344):"nautical"==e?(b/=1852,c="nm"):"metric"==e?.001>f?(c="\u03bcm",b*=1E6):1>f?(c="mm",b*=1E3):1E3>f?c="m":(c="km",b/=1E3):"us"==e?.9144>f? +(c="in",b*=39.37):1609.344>f?(c="ft",b/=.30480061):(c="mi",b/=1609.3472):oa(!1,33);for(e=3*Math.floor(Math.log(a.v*b)/Math.log(10));;){f=eo[(e%3+3)%3]*Math.pow(10,Math.floor(e/3));d=Math.round(f/b);if(isNaN(d)){a.c.style.display="none";a.j=!1;return}if(d>=a.v)break;++e}b=f+" "+c;a.D!=b&&(a.l.innerHTML=b,a.D=b);a.B!=d&&(a.l.style.width=d+"px",a.B=d);a.j||(a.c.style.display="",a.j=!0)}else a.j&&(a.c.style.display="none",a.j=!1)}var co="units";function go(a){a=a?a:{};this.c=void 0;this.j=ho;this.D=this.v=0;this.O=null;this.$=!1;this.V=void 0!==a.duration?a.duration:200;var b=void 0!==a.className?a.className:"ol-zoomslider",c=document.createElement("button");c.setAttribute("type","button");c.className=b+"-thumb ol-unselectable";var d=document.createElement("div");d.className=b+" ol-unselectable ol-control";d.appendChild(c);this.l=new Xd(d);y(this.l,"pointerdown",this.$l,this);y(this.l,"pointermove",this.Yl,this);y(this.l,"pointerup",this.Zl, +this);y(d,"click",this.Xl,this);y(c,"click",Rc);vg.call(this,{element:d,render:a.render?a.render:io})}w(go,vg);go.prototype.ia=function(){Pc(this.l);vg.prototype.ia.call(this)};var ho=0;k=go.prototype;k.setMap=function(a){vg.prototype.setMap.call(this,a);a&&a.render()}; +function io(a){if(a.frameState){if(!this.$){var b=this.element,c=b.offsetWidth,d=b.offsetHeight,e=b.firstElementChild,f=getComputedStyle(e);b=e.offsetWidth+parseFloat(f.marginRight)+parseFloat(f.marginLeft);e=e.offsetHeight+parseFloat(f.marginTop)+parseFloat(f.marginBottom);this.O=[b,e];c>d?(this.j=1,this.D=c-b):(this.j=ho,this.v=d-e);this.$=!0}a=a.frameState.viewState.resolution;a!==this.c&&(this.c=a,jo(this,a))}} +k.Xl=function(a){var b=this.a.aa();a=ko(this,pa(1===this.j?(a.offsetX-this.O[0]/2)/this.D:(a.offsetY-this.O[1]/2)/this.v,0,1));b.animate({resolution:b.constrainResolution(a),duration:this.V,easing:Oe})};k.$l=function(a){this.o||a.b.target!==this.element.firstElementChild||(bg(this.a.aa(),1,1),this.C=a.clientX,this.B=a.clientY,this.o=!0)}; +k.Yl=function(a){if(this.o){var b=this.element.firstElementChild;this.c=ko(this,pa(1===this.j?(a.clientX-this.C+parseInt(b.style.left,10))/this.D:(a.clientY-this.B+parseInt(b.style.top,10))/this.v,0,1));this.a.aa().gd(this.c);jo(this,this.c);this.C=a.clientX;this.B=a.clientY}};k.Zl=function(){if(this.o){var a=this.a.aa();bg(a,1,-1);a.animate({resolution:a.constrainResolution(this.c),duration:this.V,easing:Oe});this.o=!1;this.B=this.C=void 0}}; +function jo(a,b){b=1-gg(a.a.aa())(b);var c=a.element.firstElementChild;1==a.j?c.style.left=a.D*b+"px":c.style.top=a.v*b+"px"}function ko(a,b){return fg(a.a.aa())(1-b)};function lo(a){a=a?a:{};this.extent=a.extent?a.extent:null;var b=void 0!==a.className?a.className:"ol-zoom-extent",c=void 0!==a.label?a.label:"E",d=void 0!==a.tipLabel?a.tipLabel:"Fit to extent",e=document.createElement("button");e.setAttribute("type","button");e.title=d;e.appendChild("string"===typeof c?document.createTextNode(c):c);y(e,"click",this.c,this);c=document.createElement("div");c.className=b+" ol-unselectable ol-control";c.appendChild(e);vg.call(this,{element:c,target:a.target})} +w(lo,vg);lo.prototype.c=function(a){a.preventDefault();a=this.a.aa();var b=this.extent?this.extent:a.v.G();a.Uf(b)};var mo=document.implementation.createDocument("","",null);function no(a,b){return mo.createElementNS(a,b)}function oo(a,b){return po(a,b,[]).join("")}function po(a,b,c){if(a.nodeType==Node.CDATA_SECTION_NODE||a.nodeType==Node.TEXT_NODE)b?c.push(String(a.nodeValue).replace(/(\r\n|\r|\n)/g,"")):c.push(a.nodeValue);else for(a=a.firstChild;a;a=a.nextSibling)po(a,b,c);return c}function qo(a){return a instanceof Document}function ro(a){return a instanceof Node} +function so(a){return(new DOMParser).parseFromString(a,"application/xml")}function to(a,b){return function(c,d){c=a.call(b,c,d);void 0!==c&&gc(d[d.length-1],c)}}function uo(a,b){return function(c,d){c=a.call(void 0!==b?b:this,c,d);void 0!==c&&d[d.length-1].push(c)}}function vo(a,b){return function(c,d){c=a.call(void 0!==b?b:this,c,d);void 0!==c&&(d[d.length-1]=c)}} +function wo(a){return function(b,c){var d=a.call(this,b,c);if(void 0!==d){c=c[c.length-1];b=b.localName;var e;b in c?e=c[b]:e=c[b]=[];e.push(d)}}}function L(a,b){return function(c,d){var e=a.call(this,c,d);void 0!==e&&(d[d.length-1][void 0!==b?b:c.localName]=e)}}function M(a,b){return function(c,d,e){a.call(void 0!==b?b:this,c,d,e);e[e.length-1].node.appendChild(c)}} +function xo(a){var b,c;return function(d,e,f){if(void 0===b){b={};var g={};g[d.localName]=a;b[d.namespaceURI]=g;c=yo(d.localName)}zo(b,c,e,f)}}function yo(a,b){return function(c,d,e){c=d[d.length-1].node;d=a;void 0===d&&(d=e);e=b;void 0===b&&(e=c.namespaceURI);return no(e,d)}}var Ao=yo();function Bo(a,b){for(var c=b.length,d=Array(c),e=0;eh.status){var a=b.S();if("json"==a||"text"==a)var e=h.responseText;else"xml"==a?(e=h.responseXML)||(e=so(h.responseText)):"arraybuffer"==a&&(e=h.response);e?c.call(this,b.Qa(e,{featureProjection:g}),b.sb(e),b.cg()):d.call(this)}else d.call(this)}.bind(this);h.onerror=function(){d.call(this)}.bind(this); +h.send()}}function Fo(a,b){return Eo(a,b,function(a){this.Qc(a)},ea)};function Go(){this.i=this.defaultDataProjection=null}function Ho(a,b,c){var d;c&&(d={dataProjection:c.dataProjection?c.dataProjection:a.sb(b),featureProjection:c.featureProjection});return Io(a,d)}function Io(a,b){return kb({dataProjection:a.defaultDataProjection,featureProjection:a.i},b)}Go.prototype.cg=function(){return null}; +function Jo(a,b,c){var d=c?Ob(c.featureProjection):null,e=c?Ob(c.dataProjection):null,f;d&&e&&!Xb(d,e)?a instanceof gf?f=(b?a.clone():a).mb(b?d:e,b?e:d):f=bc(a,e,d):f=a;if(b&&c&&void 0!==c.decimals){var g=Math.pow(10,c.decimals);f===a&&(f=f.clone());f.Rc(function(a){for(var b=0,c=a.length;ba||this.c.length<=a)return null;var b=new I(null);b.ba(this.ja,this.A.slice(0===a?0:this.c[a-1],this.c[a]));return b}; +k.wd=function(){var a=this.A,b=this.c,c=this.ja,d=[],e=0,f;var g=0;for(f=b.length;ga||b<=a)return null;b=new C(null);b.ba(this.ja,this.A.slice(a*this.a,(a+1)*this.a));return b};k.de=function(){var a=this.A,b=this.ja,c=this.a,d=[],e;var f=0;for(e=a.length;fa||this.c.length<=a)return null;if(0===a)var b=0;else b=this.c[a-1],b=b[b.length-1];a=this.c[a].slice();var c=a[a.length-1];if(0!==b){var d;var e=0;for(d=a.length;ea||0!==this.f&&ac;++c){var d=parseInt(b[c],10).toString(16);b[c]=1==d.length?"0"+d:d}ip(a,b.join(""))}function us(a,b,c){a={node:a};var d=b.S();if("GeometryCollection"==d){var e=b.vd();var f=vs}else"MultiPoint"==d?(e=b.de(),f=ws):"MultiLineString"==d?(e=b.wd(),f=xs):"MultiPolygon"==d?(e=b.Vd(),f=ys):oa(!1,39);Do(a,zs,f,e,c)}function As(a,b,c){Do({node:a},Bs,Cs,[b],c)} +function Ds(a,b,c){var d={node:a};b.c&&a.setAttribute("id",b.c);a=b.L();var e={address:1,description:1,name:1,open:1,phoneNumber:1,styleUrl:1,visibility:1};e[b.a]=1;var f=Object.keys(a||{}).sort().filter(function(a){return!e[a]});if(0>4;if(128>f)return d(a,g,b);f=e[c.ga++];g|=(f&127)<<3;if(128>f)return d(a,g,b);f=e[c.ga++];g|=(f&127)<<10;if(128>f)return d(a,g,b);f=e[c.ga++];g|=(f&127)<<17;if(128>f)return d(a,g,b);f=e[c.ga++];g|=(f&127)<<24;if(128>f)return d(a,g,b);f=e[c.ga++];if(128>f)return d(a,g|(f&1)<<31,b);throw Error("Expected varint not more than 10 bytes"); +}function d(a,b,c){return c?4294967296*b+(a>>>0):4294967296*(b>>>0)+(a>>>0)}var e={read:function(a,b,c,d,e){var f=8*e-d-1;var g=(1<>1,l=-7;e=c?e-1:0;var m=c?-1:1,v=a[b+e];e+=m;c=v&(1<<-l)-1;v>>=-l;for(l+=f;0>=-l;for(l+=d;0>1,m=23===e?Math.pow(2, +-24)-Math.pow(2,-77):0;n=d?0:n-1;var z=d?1:-1,A=0>b||0===b&&0>1/b?1:0;b=Math.abs(b);isNaN(b)||Infinity===b?(b=isNaN(b)?1:0,d=h):(d=Math.floor(Math.log(b)/Math.LN2),1>b*(f=Math.pow(2,-d))&&(d--,f*=2),b=1<=d+l?b+m/f:b+m*Math.pow(2,1-l),2<=b*f&&(d++,f/=2),d+l>=h?(b=0,d=h):1<=d+l?(b=(b*f-1)*Math.pow(2,e),d+=l):(b=b*Math.pow(2,l-1)*Math.pow(2,e),d=0));for(;8<=e;a[c+n]=b&255,n+=z,b/=256,e-=8);d=d<>3,f=this.ga;this.type=d&7;a(e,b,this);this.ga===f&&this.Lq(d)}return b},Zp:function(){var a=e.read(this.tc,this.ga,!0,23,4);this.ga+=4;return a},Vp:function(){var a=e.read(this.tc,this.ga,!0,52,8);this.ga+=8;return a},Ua:function(a){var b=this.tc;var d=b[this.ga++];var e=d&127;if(128>d)return e;d=b[this.ga++];e|=(d&127)<<7;if(128>d)return e;d=b[this.ga++];e|=(d&127)<<14;if(128>d)return e;d=b[this.ga++];e|=(d&127)<<21;if(128>d)return e;d=b[this.ga]; +return c(e|(d&15)<<28,a,this)},lq:function(){return this.Ua(!0)},Ug:function(){var a=this.Ua();return 1===a%2?(a+1)/-2:a/2},Tp:function(){return!!this.Ua()},Vg:function(){for(var a=this.Ua()+this.ga,b=this.tc,c="",d=this.ga;da)break;if(1===p)128>e&&(n=e);else if(2===p){var q=b[d+1];128===(q&192)&&(n=(e&31)<<6|q&63,127>=n&&(n=null))}else if(3===p){q=b[d+1];var r=b[d+2];128===(q&192)&&128===(r&192)&&(n=(e&15)<<12|(q&63)<<6|r&63,2047>=n||55296<= +n&&57343>=n)&&(n=null)}else if(4===p){q=b[d+1];r=b[d+2];var u=b[d+3];128===(q&192)&&128===(r&192)&&128===(u&192)&&(n=(e&15)<<18|(q&63)<<12|(r&63)<<6|u&63,65535>=n||1114112<=n)&&(n=null)}null===n?(n=65533,p=1):65535>>10&1023|55296),n=56320|n&1023);c+=String.fromCharCode(n);d+=p}this.ga=a;return c},Lq:function(a){a&=7;if(a===b.c)for(;127>3,a=1===a?c.Vg():2===a?c.Zp():3===a?c.Vp():4===a?c.lq():5===a?c.Ua():6===a?c.Ug():7===a?c.Tp():null;b.values.push(a)}} +function mt(a,b,c){if(1==a)b.id=c.Ua();else if(2==a)for(a=c.Ua()+c.ga;c.ga>=3),n--,1===m||2===m?(p+=b.Ug(),q+=b.Ug(),1===m&&r>u&&(l.push(r),u=r),g.push(p,q),r+=2):7===m?r>u&&(g.push(g[u],g[u+1]),r+=2):oa(!1,59);r>u&&l.push(r);b=h.length;var v;1===d?v=1===b?"Point":"MultiPoint":2===d?v=1===b?"LineString":"MultiLineString":3===d&&(v="Polygon");d=v;if(a.b===it)g=new a.b(d, +g,h,f,e);else{if("Polygon"==d){d=[];l=b=v=0;for(c=h.length;lc?~(c<<1):c<<1;b="";d=0;for(c=a.length;d>=5;g+=String.fromCharCode(f+63);b+=g}return b} +function zt(a,b){b=b?b:1E5;var c=[],d=0,e=0,f;var g=0;for(f=a.length;gh?(c.push(d),e=d=0):e+=5}a=0;for(d=c.length;a>1):e>>1;a=0;for(d=c.length;a=b||"."==b||"-"==b){c.type=4;b=a.b;var d=!1,e=!1;do{if("."==f)d=!0;else if("e"==f||"E"==f)e=!0;var f=a.a.charAt(++a.b)}while("0"<=f&&"9">=f||"."==f&&(void 0===d||!d)||!e&&("e"==f||"E"==f)||e&&("-"==f||"+"==f));a=parseFloat(a.a.substring(b,a.b--));c.value=a}else if("a"<=b&&"z">=b||"A"<=b&&"Z">=b){c.type=1;b=a.b;do f=a.a.charAt(++a.b);while("a"<=f&&"z">= +f||"A"<=f&&"Z">=f);a=a.a.substring(b,a.b--).toUpperCase();c.value=a}else{if(" "==b||"\t"==b||"\r"==b||"\n"==b)return Uu(a);if(""===b)c.type=6;else throw Error("Unexpected character: "+b);}return c}function Qu(a){this.g=a;this.a="XY"}function Su(a){a.b=Uu(a.g)}function Vu(a,b){(b=a.b.type==b)&&Su(a);return b} +function Tu(a){var b=a.b;if(Vu(a,1)){b=b.value;var c="XY",d=a.b;1==a.b.type&&(d=d.value,"Z"===d?c="XYZ":"M"===d?c="XYM":"ZM"===d&&(c="XYZM"),"XY"!==c&&Su(a));a.a=c;if("GEOMETRYCOLLECTION"==b){a:{if(Vu(a,2)){b=[];do b.push(Tu(a));while(Vu(a,5));if(Vu(a,3)){a=b;break a}}else if(Wu(a)){a=[];break a}throw Error(Xu(a));}return new Mq(a)}d=Yu[b];c=Zu[b];if(!d||!c)throw Error("Invalid geometry type: "+b);b=d.call(a);return new c(b,a.a)}throw Error(Xu(a));}k=Qu.prototype; +k.Hg=function(){if(Vu(this,2)){var a=$u(this);if(Vu(this,3))return a}else if(Wu(this))return null;throw Error(Xu(this));};k.Gg=function(){if(Vu(this,2)){var a=av(this);if(Vu(this,3))return a}else if(Wu(this))return[];throw Error(Xu(this));};k.Ig=function(){if(Vu(this,2)){var a=bv(this);if(Vu(this,3))return a}else if(Wu(this))return[];throw Error(Xu(this));}; +k.Hp=function(){if(Vu(this,2)){var a;if(2==this.b.type)for(a=[this.Hg()];Vu(this,5);)a.push(this.Hg());else a=av(this);if(Vu(this,3))return a}else if(Wu(this))return[];throw Error(Xu(this));};k.Gp=function(){if(Vu(this,2)){var a=bv(this);if(Vu(this,3))return a}else if(Wu(this))return[];throw Error(Xu(this));};k.Ip=function(){if(Vu(this,2)){for(var a=[this.Ig()];Vu(this,5);)a.push(this.Ig());if(Vu(this,3))return a}else if(Wu(this))return[];throw Error(Xu(this));}; +function $u(a){for(var b=[],c=a.a.length,d=0;d=b[0]||a[1]<=b[1]&&a[3]>=b[1]?!0:Ua(a,this.Bb,this)):!1}; +k.ub=function(a){var b=this.a,c=a.slice();c[b]=c[0]+(this.A[b]-this.A[0]);var d;for(d=1;da.sc:e<=a.sc}a.s?(e=b.coordinate,c=a.j.U(),a.f===Kw?d=a.a:a.f===Jw?(d=a.a[0],d=d[d.length-1],Rw(a,b)&&(e=a.s.slice())):(d=a.a,d=d[d.length-1]),d[0]=e[0],d[1]=e[1],a.cb(a.a,c),a.B&&a.B.U().na(e),c instanceof D&&a.f!==Jw?(a.C||(a.C=new Hk(new I(null))),e=c.Wh(0),b=a.C.U(),b.ba(e.ja,e.da())):a.T&&(b=a.C.U(),b.na(a.T)),Tw(a)):(b=b.coordinate.slice(),a.B?a.B.U().na(b):(a.B=new Hk(new C(b)), +Tw(a)));return!0}function Rw(a,b){var c=!1;if(a.j){var d=!1,e=[a.s];a.f===Lw?d=a.a.length>a.Ea:a.f===Jw&&(d=a.a[0].length>a.Ea,e=[a.a[0][0],a.a[0][a.a[0].length-2]]);if(d){d=b.map;for(var f=0,g=e.length;f=a.ua&&(a.o?e.pop():d=!0);e.push(b.slice());a.cb(e,c)}else a.f===Jw&&(e=a.a[0],e.length>=a.ua&&(a.o?e.pop():d=!0),e.push(b.slice()),d&&(a.s=e[0]),a.cb(a.a,c));Tw(a);d&&a.Pd()} +k.nq=function(){if(this.j){var a=this.j.U();if(this.f===Lw){var b=this.a;b.splice(-2,1);this.cb(b,a);2<=b.length&&(this.s=b[b.length-2].slice())}else if(this.f===Jw){b=this.a[0];b.splice(-2,1);var c=this.C.U();c.na(b);this.cb(this.a,a)}0===b.length&&(this.s=null);Tw(this)}}; +k.Pd=function(){var a=Sw(this),b=this.a,c=a.U();this.f===Lw?(b.pop(),this.cb(b,c)):this.f===Jw&&(b[0].pop(),this.cb(b,c),b=c.W());"MultiPoint"===this.O?a.Va(new No([b])):"MultiLineString"===this.O?a.Va(new P([b])):"MultiPolygon"===this.O&&a.Va(new Q([b]));this.b(new Uw("drawend",a));this.La&&this.La.push(a);this.ob&&this.ob.Gb(a)};function Sw(a){a.s=null;var b=a.j;b&&(a.j=null,a.B=null,a.C=null,a.ra.ha().clear(!0));return b} +k.Zn=function(a){var b=a.U();this.j=a;this.a=b.W();a=this.a[this.a.length-1];this.s=a.slice();this.a.push(a.slice());Tw(this);this.b(new Uw("drawstart",this.j))};k.jd=Se;function Tw(a){var b=[];a.j&&b.push(a.j);a.C&&b.push(a.C);a.B&&b.push(a.B);a=a.ra.ha();a.clear(!0);a.Qc(b)}k.Ki=function(){var a=this.v,b=this.c();a&&b||Sw(this);this.ra.setMap(b?a:null)}; +function Iw(a){var b;"Point"===a||"MultiPoint"===a?b=Kw:"LineString"===a||"MultiLineString"===a?b=Lw:"Polygon"===a||"MultiPolygon"===a?b=Jw:"Circle"===a&&(b=Qw);return b}var Kw="Point",Lw="LineString",Jw="Polygon",Qw="Circle";function Uw(a,b){Qc.call(this,a);this.feature=b}w(Uw,Qc);function Vw(a){var b=a||{};this.a=this.j=null;this.C=void 0!==b.pixelTolerance?b.pixelTolerance:10;this.B=!1;this.T=this.s=null;a||(a={});fh.call(this,{handleDownEvent:Ww,handleDragEvent:Xw,handleEvent:Yw,handleUpEvent:Zw});this.o=new T({source:new U({useSpatialIndex:!1,wrapX:!!a.wrapX}),style:a.boxStyle?a.boxStyle:$w(),updateWhileAnimating:!0,updateWhileInteracting:!0});this.O=new T({source:new U({useSpatialIndex:!1,wrapX:!!a.wrapX}),style:a.pointerStyle?a.pointerStyle:ax(),updateWhileAnimating:!0, +updateWhileInteracting:!0});a.extent&&this.f(a.extent)}w(Vw,fh);function Yw(a){if(!(a instanceof Ad))return!0;if("pointermove"==a.type&&!this.D){var b=a.pixel,c=a.map,d=bx(this,b,c);d||(d=c.Ra(b));cx(this,d)}gh.call(this,a);return!1} +function Ww(a){function b(a){var b=null,c=null;a[0]==e[0]?b=e[2]:a[0]==e[2]&&(b=e[0]);a[1]==e[1]?c=e[3]:a[1]==e[3]&&(c=e[1]);return null!==b&&null!==c?[b,c]:null}var c=a.pixel,d=a.map,e=this.G();(a=bx(this,c,d))&&e?(c=a[0]==e[0]||a[0]==e[2]?a[0]:null,d=a[1]==e[1]||a[1]==e[3]?a[1]:null,null!==c&&null!==d?this.a=dx(b(a)):null!==c?this.a=ex(b([c,e[1]]),b([c,e[3]])):null!==d&&(this.a=ex(b([e[0],d]),b([e[2],d])))):(a=d.Ra(c),this.f([a[0],a[1],a[0],a[1]]),this.a=dx(a));return!0} +function Xw(a){this.a&&(a=a.coordinate,this.f(this.a(a)),cx(this,a));return!0}function Zw(){this.a=null;var a=this.G();a&&0!==ab(a)||this.f(null);return!1}function $w(){var a=Gk();return function(){return a.Polygon}}function ax(){var a=Gk();return function(){return a.Point}}function dx(a){return function(b){return Ca([a,b])}}function ex(a,b){return a[0]==b[0]?function(c){return Ca([a,[c[0],b[1]]])}:a[1]==b[1]?function(c){return Ca([a,[b[0],c[1]]])}:null} +function bx(a,b,c){function d(a,b){return Je(e,a)-Je(e,b)}var e=c.Ra(b),f=a.G();if(f){f=[[[f[0],f[1]],[f[0],f[3]]],[[f[0],f[3]],[f[2],f[3]]],[[f[2],f[3]],[f[2],f[1]]],[[f[2],f[1]],[f[0],f[1]]]];f.sort(d);f=f[0];var g=Be(e,f),h=c.Ia(g);if(Ie(b,h)<=a.C)return b=c.Ia(f[0]),c=c.Ia(f[1]),b=He(h,b),c=He(h,c),a.B=Math.sqrt(Math.min(b,c))<=a.C,a.B&&(g=b>c?f[1]:f[0]),g}return null}function cx(a,b){var c=a.T;c?c.U().na(b):(c=new Hk(new C(b)),a.T=c,a.O.ha().Gb(c))} +Vw.prototype.setMap=function(a){this.o.setMap(a);this.O.setMap(a);fh.prototype.setMap.call(this,a)};Vw.prototype.G=function(){return this.j};Vw.prototype.f=function(a){this.j=a?a:null;var b=this.s;b?a?b.Va(Rf(a)):b.Va(void 0):(this.s=b=a?new Hk(Rf(a)):new Hk({}),this.o.ha().Gb(b));this.b(new fx(this.j))};function fx(a){Qc.call(this,"extentchanged");this.extent=a}w(fx,Qc);function gx(a){fh.call(this,{handleDownEvent:hx,handleDragEvent:ix,handleEvent:jx,handleUpEvent:kx});this.Md=a.condition?a.condition:eh;this.bb=function(a){return Wg(a)&&$g(a)};this.ob=a.deleteCondition?a.deleteCondition:this.bb;this.sc=a.insertVertexCondition?a.insertVertexCondition:Re;this.La=this.f=null;this.Ea=[0,0];this.C=this.T=!1;this.a=new um;this.ra=void 0!==a.pixelTolerance?a.pixelTolerance:10;this.s=this.ua=!1;this.j=[];this.B=new T({source:new U({useSpatialIndex:!1,wrapX:!!a.wrapX}),style:a.style? +a.style:lx(),updateWhileAnimating:!0,updateWhileInteracting:!0});this.ca={Point:this.io,LineString:this.Mi,LinearRing:this.Mi,Polygon:this.jo,MultiPoint:this.fo,MultiLineString:this.eo,MultiPolygon:this.ho,Circle:this.bo,GeometryCollection:this.co};this.V=null;a.source?(this.V=a.source,a=new B(this.V.ee()),y(this.V,"addfeature",this.vm,this),y(this.V,"removefeature",this.xm,this)):a=a.features;if(!a)throw Error("The modify interaction requires features or a source");this.o=a;this.o.forEach(this.xg, +this);y(this.o,"add",this.$n,this);y(this.o,"remove",this.ao,this);this.O=null}w(gx,fh);k=gx.prototype;k.xg=function(a){var b=a.U();b&&b.S()in this.ca&&this.ca[b.S()].call(this,a,b);(b=this.v)&&b.c&&this.c()&&mx(this,this.Ea,b);y(a,"change",this.Li,this)};function nx(a,b){a.C||(a.C=!0,a.b(new ox("modifystart",a.o,b)))}function px(a,b){qx(a,b);a.f&&0===a.o.kc()&&(a.B.ha().Lb(a.f),a.f=null);Mc(b,"change",a.Li,a)} +function qx(a,b){a=a.a;var c=[];a.forEach(function(a){b===a.feature&&c.push(a)});for(var d=c.length-1;0<=d;--d)a.remove(c[d])}k.Ha=function(a){this.f&&!a&&(this.B.ha().Lb(this.f),this.f=null);fh.prototype.Ha.call(this,a)};k.setMap=function(a){this.B.setMap(a);fh.prototype.setMap.call(this,a)};k.vm=function(a){a.feature&&this.o.push(a.feature)};k.xm=function(a){a.feature&&this.o.remove(a.feature)};k.$n=function(a){this.xg(a.element)};k.Li=function(a){this.s||(a=a.target,px(this,a),this.xg(a))}; +k.ao=function(a){px(this,a.element)};k.io=function(a,b){var c=b.W();a={feature:a,geometry:b,ma:[c,c]};this.a.Ca(b.G(),a)};k.fo=function(a,b){var c=b.W(),d;var e=0;for(d=c.length;em?h[1]:h[0]),rx(a,l),m=1,c=f.length;mn&&(n=0);f=g.geometry;var p=d=f.W();var q=!1;switch(f.S()){case "MultiLineString":2c&&(a.index+=e)})}function lx(){var a=Gk();return function(){return a.Point}}function ox(a,b,c){Qc.call(this,a);this.features=b;this.mapBrowserEvent=c}w(ox,Qc);function wx(a){Jg.call(this,{handleEvent:xx});a=a?a:{};this.C=a.condition?a.condition:$g;this.D=a.addCondition?a.addCondition:Se;this.B=a.removeCondition?a.removeCondition:Se;this.T=a.toggleCondition?a.toggleCondition:bh;this.s=a.multi?a.multi:!1;this.l=a.filter?a.filter:Re;this.j=a.hitTolerance?a.hitTolerance:0;this.f=new T({source:new U({useSpatialIndex:!1,features:a.features,wrapX:a.wrapX}),style:a.style?a.style:yx(),updateWhileAnimating:!0,updateWhileInteracting:!0});if(a.layers)if("function"=== +typeof a.layers)a=a.layers;else{var b=a.layers;a=function(a){return ec(b,a)}}else a=Re;this.o=a;this.a={};a=this.f.ha().i;y(a,"add",this.ko,this);y(a,"remove",this.oo,this)}w(wx,Jg);k=wx.prototype;k.lo=function(){return this.f.ha().i};k.mo=function(){return this.j};k.no=function(a){a=x(a);return this.a[a]}; +function xx(a){if(!this.C(a))return!0;var b=this.D(a),c=this.B(a),d=this.T(a),e=!b&&!c&&!d,f=a.map,g=this.f.ha().i,h=[],l=[];if(e){lb(this.a);f.Tc(a.pixel,function(a,b){if(this.l(a,b))return l.push(a),a=x(a),this.a[a]=b,!this.s}.bind(this),{layerFilter:this.o,hitTolerance:this.j});for(e=g.kc()-1;0<=e;--e){f=g.item(e);var m=l.indexOf(f);-1b?m[1]:m[0],l=d.Ia(f)}else a.C&&(f=h?Ae(c,g[0].feature.U()):Be(c,m),l=d.Ia(f),Ie(b,l)<=a.f&&(e=!0,a.O&& +!h&&(c=d.Ia(m[0]),h=d.Ia(m[1]),c=He(l,c),b=He(l,h),h=Math.sqrt(Math.min(c,b)),h=h<=a.f)))&&(f=c>b?m[1]:m[0],l=d.Ia(f));e&&(l=[Math.round(l[0]),Math.round(l[1])])}return{Mq:e,vertex:f,Vq:l}}k.$j=function(a){this.Lb(a,!1);this.Gb(a,!1)};k.ro=function(a,b){b=Sf(b).W()[0];var c;var d=0;for(c=b.length-1;dXa&&(Xa=Zb,m=Z)}if(0===Xa){g=null;break a}Xa=g[m];g[m]=g[l];g[l]=Xa;for(m=l+1;mthis.b/2){var b=[[a.source[0][0],a.source[0][1]],[a.source[1][0],a.source[1][1]],[a.source[2][0],a.source[2][1]]];b[0][0]-n>this.b/2&&(b[0][0]-=this.b);b[1][0]-n>this.b/2&&(b[1][0]-=this.b);b[2][0]-n>this.b/2&&(b[2][0]-=this.b);Math.max(b[0][0],b[1][0],b[2][0])-Math.min(b[0][0],b[1][0],b[2][0])p,u=!1;if(0a.v),u)){Math.abs(b[0]-d[0])<=Math.abs(b[1]-d[1])?(r=[(c[0]+d[0])/2,(c[1]+d[1])/2],q=a.a(r),n=[(e[0]+b[0])/2,(e[1]+b[1])/2],p=a.a(n),fy(a,b,c,r,n,f,g,q,p,m-1),fy(a,n,r,d,e,p,q,h,l,m-1)):(r=[(b[0]+c[0])/2,(b[1]+c[1])/2],q=a.a(r),n=[(d[0]+e[0])/2,(d[1]+e[1])/2],p=a.a(n),fy(a,b,r,n,e,f,q,p,l,m-1),fy(a,r,c,d,n,q,g,h,p,m-1));return}if(r){if(!a.s)return;a.l=!0}a.c.push({source:[f,h,l],target:[b,d,e]});a.c.push({source:[f,g,h],target:[b,c,d]})}} +function gy(a){var b=Da();a.c.forEach(function(a){a=a.source;Ea(b,a[0]);Ea(b,a[1]);Ea(b,a[2])});return b};function hy(a,b,c,d,e,f,g,h,l,m,n){cl.call(this,e,0);this.B=void 0!==n?n:!1;this.C=g;this.D=h;this.N=null;this.c=b;this.l=d;this.v=f?f:e;this.a=[];this.Id=null;this.f=0;f=d.Ma(this.v);h=this.l.G();e=this.c.G();f=h?gb(f,h):f;if(0===ab(f))this.state=4;else if((h=a.G())&&(e?e=gb(e,h):e=h),d=by(a,c,eb(f),d.Ta(this.v[0])),!isFinite(d)||0>=d)this.state=4;else if(this.o=new ey(a,c,f,e,d*(void 0!==m?m:.5)),0===this.o.c.length)this.state=4;else if(this.f=b.Dc(d),c=gy(this.o),e&&(a.g?(c[1]=pa(c[1],e[1],e[3]), +c[3]=pa(c[3],e[1],e[3])):c=gb(c,e)),ab(c)){a=tc(b,c,this.f);for(b=a.fa;b<=a.la;b++)for(c=a.ea;c<=a.ka;c++)(m=l(this.f,b,c,g))&&this.a.push(m);0===this.a.length&&(this.state=4)}else this.state=4}w(hy,cl);hy.prototype.ia=function(){1==this.state&&(this.Id.forEach(Gc),this.Id=null);cl.prototype.ia.call(this)};hy.prototype.Y=function(){return this.N}; +hy.prototype.he=function(){var a=[];this.a.forEach(function(b){b&&2==b.getState()&&a.push({extent:this.c.Ma(b.ya),image:b.Y()})},this);this.a.length=0;if(0===a.length)this.state=3;else{var b=this.v[0],c=this.l.Za(b),d="number"===typeof c?c:c[0];c="number"===typeof c?c:c[1];b=this.l.Ta(b);var e=this.c.Ta(this.f),f=this.l.Ma(this.v);this.N=dy(d,c,this.C,e,this.c.G(),b,f,this.o,a,this.D,this.B);this.state=2}this.u()}; +hy.prototype.load=function(){if(0==this.state){this.state=1;this.u();var a=0;this.Id=[];this.a.forEach(function(b){var c=b.getState();if(0==c||1==c){a++;var d=y(b,"change",function(){var c=b.getState();if(2==c||3==c||4==c)Gc(d),a--,0===a&&(this.Id.forEach(Gc),this.Id=null,this.he())},this);this.Id.push(d)}},this);this.a.forEach(function(a){0==a.getState()&&a.load()});0===a&&setTimeout(this.he.bind(this),0)}};function iy(a){uw.call(this,{attributions:a.attributions,extent:a.extent,logo:a.logo,projection:a.projection,state:a.state,wrapX:a.wrapX});this.bb=void 0!==a.opaque?a.opaque:!1;this.sc=void 0!==a.tilePixelRatio?a.tilePixelRatio:1;this.tileGrid=void 0!==a.tileGrid?a.tileGrid:null;this.a=new $x(a.cacheSize);this.j=[0,0];this.jc="";this.Ea={transition:a.transition}}w(iy,uw);k=iy.prototype;k.cj=function(){return di(this.a)};k.sd=function(a,b){(a=this.Yd(a))&&a.sd(b)}; +function Li(a,b,c,d,e){a=a.Yd(b);if(!a)return!1;b=!0;for(var f,g,h=d.fa;h<=d.la;++h)for(var l=d.ea;l<=d.ka;++l)f=c+"/"+h+"/"+l,g=!1,a.a.hasOwnProperty(f)&&(f=a.get(f),(g=2===f.getState())&&(g=!1!==e(f))),g||(b=!1);return b}k.Zf=function(){return 0};function jy(a,b){a.jc!==b&&(a.jc=b,a.u())}k.eg=function(){return this.bb};k.jb=function(){return this.tileGrid};k.eb=function(a){return this.tileGrid?this.tileGrid:zc(a)};k.Yd=function(a){var b=this.c;return b&&!Xb(b,a)?null:this.a};k.Xc=function(){return this.sc}; +k.Zd=function(a,b,c){c=this.eb(c);b=this.Xc(b);a=Ba(c.Za(a),this.j);return 1==b?a:Aa(a,b,this.j)};function ky(a,b,c){var d=void 0!==c?c:a.c;c=a.eb(d);if(a.D&&d.c){var e=b;b=e[0];a=yc(c,e);d=Dc(d);Ja(d,a)?b=e:(e=cb(d),a[0]+=e*Math.ceil((d[0]-a[0])/e),b=c.jg(a,b))}e=b[0];d=b[1];a=b[2];if(c.minZoom>e||e>c.maxZoom)c=!1;else{var f=c.G();c=(c=f?tc(c,f,e):c.a?c.a[e]:null)?ma(c,d,a):!0}return c?b:null}k.sa=function(){this.a.clear();this.u()};k.kh=ea;function ly(a,b){Qc.call(this,a);this.tile=b}w(ly,Qc);function my(a){iy.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,extent:a.extent,logo:a.logo,opaque:a.opaque,projection:a.projection,state:a.state,tileGrid:a.tileGrid,tilePixelRatio:a.tilePixelRatio,wrapX:a.wrapX,transition:a.transition});this.tileLoadFunction=a.tileLoadFunction;this.tileUrlFunction=this.dc?this.dc.bind(this):Xx;this.urls=null;a.urls?this.vb(a.urls):a.url&&this.rb(a.url);a.tileUrlFunction&&this.hb(a.tileUrlFunction);this.V={}}w(my,iy);k=my.prototype;k.yb=function(){return this.tileLoadFunction}; +k.zb=function(){return this.tileUrlFunction};k.Ab=function(){return this.urls};k.dj=function(a){a=a.target;var b=x(a),c=a.getState();if(1==c){this.V[b]=!0;var d="tileloadstart"}else b in this.V&&(delete this.V[b],d=3==c?"tileloaderror":2==c||5==c?"tileloadend":void 0);void 0!=d&&this.b(new ly(d,a))};k.Fb=function(a){this.a.clear();this.tileLoadFunction=a;this.u()};k.hb=function(a,b){this.tileUrlFunction=a;ay(this.a);"undefined"!==typeof b?jy(this,b):this.u()}; +k.rb=function(a){var b=this.urls=Yx(a);this.hb(this.dc?this.dc.bind(this):Vx(b,this.tileGrid),a)};k.vb=function(a){this.urls=a;var b=a.join("\n");this.hb(this.dc?this.dc.bind(this):Vx(a,this.tileGrid),b)};k.kh=function(a,b,c){a=a+"/"+b+"/"+c;this.a.a.hasOwnProperty(a)&&this.a.get(a)};function ny(a){my.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,extent:a.extent,logo:a.logo,opaque:a.opaque,projection:a.projection,state:a.state,tileGrid:a.tileGrid,tileLoadFunction:a.tileLoadFunction?a.tileLoadFunction:oy,tilePixelRatio:a.tilePixelRatio,tileUrlFunction:a.tileUrlFunction,url:a.url,urls:a.urls,wrapX:a.wrapX,transition:a.transition});this.crossOrigin=void 0!==a.crossOrigin?a.crossOrigin:null;this.tileClass=void 0!==a.tileClass?a.tileClass:el;this.f={};this.s={};this.ob= +a.reprojectionErrorThreshold;this.O=!1}w(ny,my);k=ny.prototype;k.cj=function(){if(di(this.a))return!0;for(var a in this.f)if(di(this.f[a]))return!0;return!1};k.sd=function(a,b){a=this.Yd(a);this.a.sd(this.a==a?b:{});for(var c in this.f){var d=this.f[c];d.sd(d==a?b:{})}};k.Zf=function(a){return this.c&&a&&!Xb(this.c,a)?0:this.$f()};k.$f=function(){return 0};k.eg=function(a){return this.c&&a&&!Xb(this.c,a)?!1:my.prototype.eg.call(this,a)}; +k.eb=function(a){var b=this.c;return!this.tileGrid||b&&!Xb(b,a)?(b=x(a).toString(),b in this.s||(this.s[b]=zc(a)),this.s[b]):this.tileGrid};k.Yd=function(a){var b=this.c;if(!b||Xb(b,a))return this.a;a=x(a).toString();a in this.f||(this.f[a]=new $x(this.a.highWaterMark));return this.f[a]}; +function py(a,b,c,d,e,f,g){b=[b,c,d];e=(c=ky(a,b,f))?a.tileUrlFunction(c,e,f):void 0;e=new a.tileClass(b,void 0!==e?0:4,void 0!==e?e:"",a.crossOrigin,a.tileLoadFunction,a.Ea);e.key=g;y(e,"change",a.dj,a);return e} +k.ad=function(a,b,c,d,e){var f=this.c;if(f&&e&&!Xb(f,e)){var g=this.Yd(e);c=[a,b,c];var h;a=c[0]+"/"+c[1]+"/"+c[2];g.a.hasOwnProperty(a)&&(h=g.get(a));b=this.jc;if(h&&h.key==b)return h;var l=this.eb(f),m=this.eb(e),n=ky(this,c,e);d=new hy(f,l,e,m,c,n,this.Xc(d),this.$f(),function(a,b,c,d){return qy(this,a,b,c,d,f)}.bind(this),this.ob,this.O);d.key=b;h?(d.g=h,dl(d),g.replace(a,d)):g.set(a,d);return d}return qy(this,a,b,c,d,f||e)}; +function qy(a,b,c,d,e,f){var g=b+"/"+c+"/"+d,h=a.jc;if(a.a.a.hasOwnProperty(g)){var l=a.a.get(g);if(l.key!=h){var m=l;l=py(a,b,c,d,e,f,h);0==m.getState()?l.g=m.g:l.g=m;dl(l);a.a.replace(g,l)}}else l=py(a,b,c,d,e,f,h),a.a.set(g,l);return l}k.Qb=function(a){if(this.O!=a){this.O=a;for(var b in this.f)this.f[b].clear();this.u()}};k.Rb=function(a,b){if(a=Ob(a))a=x(a).toString(),a in this.s||(this.s[a]=b)};function oy(a,b){a.Y().src=b};function ry(a){this.i=void 0!==a.hidpi?a.hidpi:!1;ny.call(this,{cacheSize:a.cacheSize,crossOrigin:"anonymous",opaque:!0,projection:Ob("EPSG:3857"),reprojectionErrorThreshold:a.reprojectionErrorThreshold,state:"loading",tileLoadFunction:a.tileLoadFunction,tilePixelRatio:this.i?2:1,wrapX:void 0!==a.wrapX?a.wrapX:!0,transition:a.transition});this.o=void 0!==a.culture?a.culture:"en-us";this.$=void 0!==a.maxZoom?a.maxZoom:-1;this.l=a.key;this.B=a.imagerySet;Zx("https://dev.virtualearth.net/REST/v1/Imagery/Metadata/"+ +this.B+"?uriScheme=https&include=ImageryProviders&key="+this.l+"&c="+this.o,this.La.bind(this),void 0,"jsonp")}w(ry,ny);ry.prototype.ca=function(){return this.l};ry.prototype.ua=function(){return this.B}; +ry.prototype.La=function(a){if(200!=a.statusCode||"OK"!=a.statusDescription||"ValidCredentials"!=a.authenticationResultCode||1!=a.resourceSets.length||1!=a.resourceSets[0].resources.length)ww(this,"error");else{var b=a.brandLogoUri;-1==b.indexOf("https")&&(b=b.replace("http","https"));var c=a.resourceSets[0].resources[0];a=-1==this.$?c.zoomMax:this.$;var d=Dc(this.c);this.tileGrid=Bc({extent:d,minZoom:c.zoomMin,maxZoom:a,tileSize:(c.imageWidth==c.imageHeight?c.imageWidth:[c.imageWidth,c.imageHeight])/ +(this.i?2:1)});var e=this.o,f=this.i;this.tileUrlFunction=Wx(c.imageUrlSubdomains.map(function(a){var b=[0,0,0],d=c.imageUrl.replace("{subdomain}",a).replace("{culture}",e);return function(a){if(a)return oc(a[0],a[1],-a[2]-1,b),a=d,f&&(a+="&dpi=d1&device=mobile"),a.replace("{quadkey}",pc(b))}}));if(c.imageryProviders){var g=Pb(Ob("EPSG:4326"),this.c);this.va(function(a){var b=[],d=a.viewState.zoom;c.imageryProviders.map(function(c){for(var e=!1,f=c.coverageAreas,h=0,l=f.length;h=m.zoomMin&&d<=m.zoomMax&&(m=m.bbox,m=jb([m[1],m[0],m[3],m[2]],g),hb(m,a.extent))){e=!0;break}}e&&b.push(c.attribution)});b.push('Terms of Use');return b})}this.T=b;ww(this,"ready")}};function sy(a){a=a||{};var b=void 0!==a.projection?a.projection:"EPSG:3857",c=void 0!==a.tileGrid?a.tileGrid:Bc({extent:Dc(b),maxZoom:a.maxZoom,minZoom:a.minZoom,tileSize:a.tileSize});ny.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,opaque:a.opaque,projection:b,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileGrid:c,tileLoadFunction:a.tileLoadFunction,tilePixelRatio:a.tilePixelRatio,tileUrlFunction:a.tileUrlFunction,url:a.url,urls:a.urls, +wrapX:void 0!==a.wrapX?a.wrapX:!0,transition:a.transition})}w(sy,ny);function ty(a){this.o=a.account;this.B=a.map||"";this.i=a.config||{};this.l={};sy.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,maxZoom:void 0!==a.maxZoom?a.maxZoom:18,minZoom:a.minZoom,projection:a.projection,state:"loading",wrapX:a.wrapX});uy(this)}w(ty,sy);k=ty.prototype;k.nl=function(){return this.i};k.Sq=function(a){kb(this.i,a);uy(this)};k.uq=function(a){this.i=a||{};uy(this)}; +function uy(a){var b=JSON.stringify(a.i);if(a.l[b])vy(a,a.l[b]);else{var c="https://"+a.o+".carto.com/api/v1/map";a.B&&(c+="/named/"+a.B);var d=new XMLHttpRequest;d.addEventListener("load",a.em.bind(a,b));d.addEventListener("error",a.dm.bind(a));d.open("POST",c);d.setRequestHeader("Content-type","application/json");d.send(JSON.stringify(a.i))}} +k.em=function(a,b){b=b.target;if(!b.status||200<=b.status&&300>b.status){try{var c=JSON.parse(b.responseText)}catch(d){ww(this,"error");return}vy(this,c);this.l[a]=c;ww(this,"ready")}else ww(this,"error")};k.dm=function(){ww(this,"error")};function vy(a,b){a.rb("https://"+b.cdn_url.https+"/"+a.o+"/api/v1/map/"+b.layergroupid+"/{z}/{x}/{y}.png")};function X(a){U.call(this,{attributions:a.attributions,extent:a.extent,logo:a.logo,projection:a.projection,wrapX:a.wrapX});this.resolution=void 0;this.distance=void 0!==a.distance?a.distance:20;this.features=[];this.geometryFunction=a.geometryFunction||function(a){a=a.U();oa(a instanceof C,10);return a};this.source=a.source;this.source.I("change",X.prototype.sa,this)}w(X,U);k=X.prototype;k.Eo=function(){return this.distance};k.Fo=function(){return this.source}; +k.ae=function(a,b,c){this.source.ae(a,b,c);b!==this.resolution&&(this.clear(),this.resolution=b,wy(this),this.Qc(this.features))};k.vq=function(a){this.distance=a;this.sa()};k.sa=function(){this.clear();wy(this);this.Qc(this.features);U.prototype.sa.call(this)}; +function wy(a){if(void 0!==a.resolution){a.features.length=0;for(var b=Da(),c=a.distance*a.resolution,d=a.source.ee(),e={},f=0,g=d.length;fm*l?h*g/(m*p):l*g/(n*p),SETVIEWCENTERX:f[0],SETVIEWCENTERY:f[1]};kb(e,this.f);d=Gy(d,e);d=new bl(a,b,c,d,this.V,this.a);y(d,"change",this.j,this)}else d=null;this.M=d;this.B=this.g;return d};k.Mo=function(){return this.a};k.Po=function(a){kb(this.f,a);this.u()};k.Oo=function(a){this.M=null;this.a=a;this.u()};function Ky(a){var b=a.imageExtent,c=void 0!==a.crossOrigin?a.crossOrigin:null,d=void 0!==a.imageLoadFunction?a.imageLoadFunction:Fy;zy.call(this,{attributions:a.attributions,logo:a.logo,projection:Ob(a.projection)});this.M=new bl(b,void 0,1,a.url,c,d);this.a=a.imageSize?a.imageSize:null;y(this.M,"change",this.j,this)}w(Ky,zy);Ky.prototype.Wc=function(a){return hb(a,this.M.G())?this.M:null}; +Ky.prototype.j=function(a){if(2==this.M.getState()){var b=this.M.G(),c=this.M.Y();if(this.a){var d=this.a[0];var e=this.a[1]}else d=c.width,e=c.height;b=Math.ceil(cb(b)/(db(b)/e));if(b!=d){b=hg(b,e);var f=b.canvas;b.drawImage(c,0,0,d,e,0,0,f.width,f.height);this.M.ih(f)}}zy.prototype.j.call(this,a)};function Ly(a){this.a=a.source;this.ob=We();this.f=hg();this.l=[0,0];this.ca=rj.Jc(9);this.bb=void 0==a.renderBuffer?100:a.renderBuffer;this.B=null;Iy.call(this,{attributions:a.attributions,canvasFunction:this.Mk.bind(this),logo:a.logo,projection:a.projection,ratio:a.ratio,resolutions:a.resolutions,state:this.a.getState()});this.O=null;this.s=void 0;this.aj(a.style);y(this.a,"change",this.To,this)}w(Ly,Iy);k=Ly.prototype; +k.Mk=function(a,b,c,d,e){var f=new Vj(.5*b/c,a,b,c,this.a.$,this.ca,this.bb);this.a.ae(a,b,e);var g=!1;this.a.ec(a,function(a){var d;if(!(d=g)){var e;(d=a.ib())?e=d.call(a,b):this.s&&(e=this.s(a,b));if(e){var h,p=!1;Array.isArray(e)||(e=[e]);d=0;for(h=e.length;dOpenStreetMap contributors.'];sy.call(this,{attributions:b,cacheSize:a.cacheSize,crossOrigin:void 0!==a.crossOrigin?a.crossOrigin:"anonymous",opaque:void 0!==a.opaque?a.opaque:!0,maxZoom:void 0!==a.maxZoom?a.maxZoom:19,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileLoadFunction:a.tileLoadFunction,url:void 0!==a.url?a.url:"https://{a-c}.tile.openstreetmap.org/{z}/{x}/{y}.png", +wrapX:a.wrapX})}w(Ry,sy);rj.nf={};rj.nf.Hf=function(){}; +(function(a){function b(a,b,c){if(g)return new ImageData(a,b,c);b=h.createImageData(b,c);b.data.set(a);return b}function c(a){var b=!0;try{new ImageData(10,10)}catch(n){b=!1}return function(c){var d=c.buffers,e=c.meta,f=c.width,g=c.height,h=d.length,l=d[0].byteLength;if(c.imageOps){l=Array(h);for(c=0;cthis.Bk;)this.Nd.shift().callback(null,null)};f.prototype.uh=function(){if(0===this.ve&&0Stamen Design, under CC BY 3.0.','© OpenStreetMap contributors.'],az={terrain:{Ob:"jpg",opaque:!0},"terrain-background":{Ob:"jpg",opaque:!0},"terrain-labels":{Ob:"png",opaque:!1},"terrain-lines":{Ob:"png",opaque:!1},"toner-background":{Ob:"png",opaque:!0},toner:{Ob:"png",opaque:!0},"toner-hybrid":{Ob:"png",opaque:!1},"toner-labels":{Ob:"png", +opaque:!1},"toner-lines":{Ob:"png",opaque:!1},"toner-lite":{Ob:"png",opaque:!0},watercolor:{Ob:"jpg",opaque:!0}},$y={terrain:{minZoom:4,maxZoom:18},toner:{minZoom:0,maxZoom:20},watercolor:{minZoom:1,maxZoom:16}};function cz(a){a=a||{};ny.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,projection:a.projection,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileGrid:a.tileGrid,tileLoadFunction:a.tileLoadFunction,url:a.url,urls:a.urls,wrapX:void 0!==a.wrapX?a.wrapX:!0,transition:a.transition});this.i=a.params||{};this.l=Da();jy(this,dz(this))}w(cz,ny);function dz(a){var b=0,c=[],d;for(d in a.i)c[b++]=d+"-"+a.i[d];return c.join("/")}cz.prototype.o=function(){return this.i}; +cz.prototype.Xc=function(a){return a}; +cz.prototype.dc=function(a,b,c){var d=this.tileGrid;d||(d=this.eb(c));if(!(d.b.length<=a[0])){var e=d.Ma(a,this.l),f=Ba(d.Za(a[0]),this.j);1!=b&&(f=Aa(f,b,this.j));d={F:"image",FORMAT:"PNG32",TRANSPARENT:!0};kb(d,this.i);var g=this.urls;g?(c=c.wb.split(":").pop(),d.SIZE=f[0]+","+f[1],d.BBOX=e.join(","),d.BBOXSR=c,d.IMAGESR=c,d.DPI=Math.round(d.DPI?d.DPI*b:90*b),a=(1==g.length?g[0]:g[wa((a[1]<a.status){try{var b=JSON.parse(a.responseText)}catch(c){this.ef();return}this.Cg(b)}else this.ef()};k.ap=function(){this.ef()};k.Sl=function(){return this.i}; +k.Cg=function(a){var b=Ob("EPSG:4326"),c=this.c;if(void 0!==a.bounds){var d=Pb(b,c);d=jb(a.bounds,d)}var e=a.minzoom||0,f=a.maxzoom||22;this.tileGrid=c=Bc({extent:Dc(c),maxZoom:f,minZoom:e});this.tileUrlFunction=Vx(a.tiles,c);if(void 0!==a.attribution&&!this.C){var g=void 0!==d?d:b.G();this.va(function(b){return hb(g,b.extent)?[a.attribution]:null})}this.i=a;ww(this,"ready")};k.ef=function(){ww(this,"error")};function hz(a){iy.call(this,{projection:Ob("EPSG:3857"),state:"loading"});this.s=void 0!==a.preemptive?a.preemptive:!0;this.l=Xx;this.f=void 0;this.i=a.jsonp||!1;if(a.url)if(this.i)Zx(a.url,this.Dg.bind(this),this.ff.bind(this));else{var b=new XMLHttpRequest;b.addEventListener("load",this.gp.bind(this));b.addEventListener("error",this.fp.bind(this));b.open("GET",a.url);b.send()}else a.tileJSON?this.Dg(a.tileJSON):oa(!1,51)}w(hz,iy);k=hz.prototype; +k.gp=function(a){a=a.target;if(!a.status||200<=a.status&&300>a.status){try{var b=JSON.parse(a.responseText)}catch(c){this.ff();return}this.Dg(b)}else this.ff()};k.fp=function(){this.ff()};k.Pl=function(){return this.f};k.al=function(a,b,c,d,e){this.tileGrid?(b=this.tileGrid.Le(a,b),iz(this.ad(b[0],b[1],b[2],1,this.c),a,c,d,e)):!0===e?setTimeout(function(){c.call(d,null)},0):c.call(d,null)};k.ff=function(){ww(this,"error")}; +k.Dg=function(a){var b=Ob("EPSG:4326"),c=this.c;if(void 0!==a.bounds){var d=Pb(b,c);d=jb(a.bounds,d)}var e=a.minzoom||0,f=a.maxzoom||22;this.tileGrid=c=Bc({extent:Dc(c),maxZoom:f,minZoom:e});this.f=a.template;if(e=a.grids){this.l=Vx(e,c);if(void 0!==a.attribution){var g=void 0!==d?d:b.G();this.va(function(b){return hb(g,b.extent)?[a.attribution]:null})}ww(this,"ready")}else ww(this,"error")}; +k.ad=function(a,b,c,d,e){var f=a+"/"+b+"/"+c;if(this.a.a.hasOwnProperty(f))return this.a.get(f);a=[a,b,c];b=ky(this,a,e);d=this.l(b,d,e);d=new jz(a,void 0!==d?0:4,void 0!==d?d:"",this.tileGrid.Ma(a),this.s,this.i);this.a.set(f,d);return d};k.kh=function(a,b,c){a=a+"/"+b+"/"+c;this.a.a.hasOwnProperty(a)&&this.a.get(a)};function jz(a,b,c,d,e,f){cl.call(this,a,b);this.v=c;this.a=d;this.N=e;this.c=this.l=this.f=null;this.o=f}w(jz,cl);k=jz.prototype;k.Y=function(){return null}; +k.getData=function(a){if(!this.f||!this.l)return null;var b=this.f[Math.floor((1-(a[1]-this.a[1])/(this.a[3]-this.a[1]))*this.f.length)];if("string"!==typeof b)return null;b=b.charCodeAt(Math.floor((a[0]-this.a[0])/(this.a[2]-this.a[0])*b.length));93<=b&&b--;35<=b&&b--;b-=32;a=null;b in this.l&&(b=this.l[b],this.c&&b in this.c?a=this.c[b]:a=b);return a}; +function iz(a,b,c,d,e){0==a.state&&!0===e?(Lc(a,"change",function(){c.call(d,this.getData(b))},a),kz(a)):!0===e?setTimeout(function(){c.call(d,this.getData(b))}.bind(a),0):c.call(d,a.getData(b))}k.lb=function(){return this.v};k.Ne=function(){this.state=3;this.u()};k.bj=function(a){this.f=a.grid;this.l=a.keys;this.c=a.data;this.state=4;this.u()}; +function kz(a){if(0==a.state)if(a.state=1,a.o)Zx(a.v,a.bj.bind(a),a.Ne.bind(a));else{var b=new XMLHttpRequest;b.addEventListener("load",a.ep.bind(a));b.addEventListener("error",a.cp.bind(a));b.open("GET",a.v);b.send()}}k.ep=function(a){a=a.target;if(!a.status||200<=a.status&&300>a.status){try{var b=JSON.parse(a.responseText)}catch(c){this.Ne();return}this.bj(b)}else this.Ne()};k.cp=function(){this.Ne()};k.load=function(){this.N&&kz(this)};function lz(a){a=a||{};var b=a.params||{};ny.call(this,{attributions:a.attributions,cacheSize:a.cacheSize,crossOrigin:a.crossOrigin,logo:a.logo,opaque:!("TRANSPARENT"in b?b.TRANSPARENT:1),projection:a.projection,reprojectionErrorThreshold:a.reprojectionErrorThreshold,tileClass:a.tileClass,tileGrid:a.tileGrid,tileLoadFunction:a.tileLoadFunction,url:a.url,urls:a.urls,wrapX:void 0!==a.wrapX?a.wrapX:!0,transition:a.transition});this.o=void 0!==a.gutter?a.gutter:0;this.i=b;this.l=!0;this.B=a.serverType; +this.$=void 0!==a.hidpi?a.hidpi:!0;this.ca=Da();mz(this);jy(this,nz(this))}w(lz,ny);k=lz.prototype; +k.hp=function(a,b,c,d){c=Ob(c);var e=this.c,f=this.tileGrid;f||(f=this.eb(c));b=f.Le(a,b);if(!(f.b.length<=b[0])){var g=f.Ta(b[0]),h=f.Ma(b,this.ca);f=Ba(f.Za(b[0]),this.j);var l=this.o;0!==l&&(f=za(f,l,this.j),h=Fa(h,g*l,h));e&&e!==c&&(g=by(e,c,a,g),h=bc(h,c,e),a=ac(a,c,e));l={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetFeatureInfo",FORMAT:"image/png",TRANSPARENT:!0,QUERY_LAYERS:this.i.LAYERS};kb(l,this.i,d);d=Math.floor((h[3]-a[1])/g);l[this.l?"I":"X"]=Math.floor((a[0]-h[0])/g);l[this.l?"J":"Y"]= +d;return oz(this,b,f,h,1,e||c,l)}};k.$f=function(){return this.o};k.ip=function(){return this.i}; +function oz(a,b,c,d,e,f,g){var h=a.urls;if(h){g.WIDTH=c[0];g.HEIGHT=c[1];g[a.l?"CRS":"SRS"]=f.wb;"STYLES"in a.i||(g.STYLES="");if(1!=e)switch(a.B){case "geoserver":c=90*e+.5|0;g.FORMAT_OPTIONS="FORMAT_OPTIONS"in g?g.FORMAT_OPTIONS+(";dpi:"+c):"dpi:"+c;break;case "mapserver":g.MAP_RESOLUTION=90*e;break;case "carmentaserver":case "qgis":g.DPI=90*e;break;default:oa(!1,52)}f=f.b;a.l&&"ne"==f.substr(0,2)&&(a=d[0],d[0]=d[1],d[1]=a,a=d[2],d[2]=d[3],d[3]=a);g.BBOX=d.join(",");return Gy(1==h.length?h[0]:h[wa((b[1]<< +b[0])+b[2],h.length)],g)}}k.Xc=function(a){return this.$&&void 0!==this.B?a:1};function nz(a){var b=0,c=[],d;for(d in a.i)c[b++]=d+"-"+a.i[d];return c.join("/")} +k.dc=function(a,b,c){var d=this.tileGrid;d||(d=this.eb(c));if(!(d.b.length<=a[0])){1==b||this.$&&void 0!==this.B||(b=1);var e=d.Ta(a[0]),f=d.Ma(a,this.ca);d=Ba(d.Za(a[0]),this.j);var g=this.o;0!==g&&(d=za(d,g,this.j),f=Fa(f,e*g,f));1!=b&&(d=Aa(d,b,this.j));e={SERVICE:"WMS",VERSION:"1.3.0",REQUEST:"GetMap",FORMAT:"image/png",TRANSPARENT:!0};kb(e,this.i);return oz(this,a,d,f,b,c,e)}};k.jp=function(a){kb(this.i,a);mz(this);jy(this,nz(this))};function mz(a){a.l=0<=ye(a.i.VERSION||"1.3.0")};function pz(a,b,c,d,e,f,g,h,l,m,n,p,q,r,u){cl.call(this,a,b,u);this.v={};this.o={};this.c=m;this.a=[];this.D=c;this.l=f;this.f=[];this.N=[];if(f){var v=l.Ma(f),z=l.Ta(a[0]);h.Vf(v,h.Dc(z),function(a){var b=gb(v,h.Ma(a)),c=h.G();c&&(b=gb(b,c));.5<=cb(b)/z&&.5<=db(b)/z&&(b=a.toString(),c=m[b],c||(c=g(a,n,p),c=m[b]=new q(a,void 0==c?4:0,void 0==c?"":c,d,e),this.N.push(y(c,"change",r))),c.c++,this.a.push(b))}.bind(this))}}w(pz,cl);k=pz.prototype; +k.ia=function(){for(var a=0,b=this.a.length;ag||d>g;)e.push([Math.ceil(c/g),Math.ceil(d/g)]),g+=g;break;case xz:for(;c>g||d>g;)e.push([Math.ceil(c/g),Math.ceil(d/g)]),c>>=1,d>>=1;break;default:oa(!1,53)}e.push([1,1]);e.reverse();d=[1];var h=[0];g=1;for(c=e.length;ga?Pe(2*a):1-Pe(2*(a-.5))}); +t("ol.extent.boundingExtent",Ca);t("ol.extent.buffer",Fa);t("ol.extent.containsCoordinate",Ja);t("ol.extent.containsExtent",La);t("ol.extent.containsXY",Ka);t("ol.extent.createEmpty",Da);t("ol.extent.equals",Sa);t("ol.extent.extend",Ta);t("ol.extent.getArea",ab);t("ol.extent.getBottomLeft",Wa);t("ol.extent.getBottomRight",Ya);t("ol.extent.getCenter",eb);t("ol.extent.getHeight",db);t("ol.extent.getIntersection",gb);t("ol.extent.getSize",function(a){return[a[2]-a[0],a[3]-a[1]]}); +t("ol.extent.getTopLeft",$a);t("ol.extent.getTopRight",Za);t("ol.extent.getWidth",cb);t("ol.extent.intersects",hb);t("ol.extent.isEmpty",bb);t("ol.extent.applyTransform",jb);t("ol.Feature",Hk);Hk.prototype.clone=Hk.prototype.clone;Hk.prototype.getGeometry=Hk.prototype.U;Hk.prototype.getId=Hk.prototype.an;Hk.prototype.getGeometryName=Hk.prototype.sl;Hk.prototype.getStyle=Hk.prototype.bn;Hk.prototype.getStyleFunction=Hk.prototype.ib;Hk.prototype.setGeometry=Hk.prototype.Va;Hk.prototype.setStyle=Hk.prototype.sg; +Hk.prototype.setId=Hk.prototype.qc;Hk.prototype.setGeometryName=Hk.prototype.Lc;t("ol.featureloader.xhr",Fo);t("ol.Geolocation",Jk);Jk.prototype.getAccuracy=Jk.prototype.el;Jk.prototype.getAccuracyGeometry=Jk.prototype.fl;Jk.prototype.getAltitude=Jk.prototype.gl;Jk.prototype.getAltitudeAccuracy=Jk.prototype.hl;Jk.prototype.getHeading=Jk.prototype.cn;Jk.prototype.getPosition=Jk.prototype.dn;Jk.prototype.getProjection=Jk.prototype.mi;Jk.prototype.getSpeed=Jk.prototype.Ol;Jk.prototype.getTracking=Jk.prototype.ni; +Jk.prototype.getTrackingOptions=Jk.prototype.ai;Jk.prototype.setProjection=Jk.prototype.oi;Jk.prototype.setTracking=Jk.prototype.Ue;Jk.prototype.setTrackingOptions=Jk.prototype.Rj;t("ol.Graticule",Xk);Xk.prototype.getMap=Xk.prototype.gn;Xk.prototype.getMeridians=Xk.prototype.Cl;Xk.prototype.getParallels=Xk.prototype.Jl;Xk.prototype.setMap=Xk.prototype.setMap;t("ol.has.DEVICE_PIXEL_RATIO",nd);t("ol.has.CANVAS",pd);t("ol.has.DEVICE_ORIENTATION",qd);t("ol.has.GEOLOCATION",rd);t("ol.has.TOUCH",sd); +t("ol.has.WEBGL",hd);bl.prototype.getImage=bl.prototype.Y;bl.prototype.load=bl.prototype.load;el.prototype.getImage=el.prototype.Y;t("ol.inherits",w);t("ol.interaction.defaults",Zh);t("ol.Kinetic",Gg);t("ol.loadingstrategy.all",tw);t("ol.loadingstrategy.bbox",function(a){return[a]});t("ol.loadingstrategy.tile",function(a){return function(b,c){c=a.Dc(c);b=tc(a,b,c);var d=[];c=[c,0,0];for(c[1]=b.fa;c[1]<=b.la;++c[1])for(c[2]=b.ea;c[2]<=b.ka;++c[2])d.push(a.Ma(c));return d}});t("ol.Map",K); +ed.prototype.originalEvent=ed.prototype.originalEvent;ed.prototype.pixel=ed.prototype.pixel;ed.prototype.coordinate=ed.prototype.coordinate;ed.prototype.dragging=ed.prototype.dragging;dd.prototype.map=dd.prototype.map;dd.prototype.frameState=dd.prototype.frameState;t("ol.Object",Vc);Vc.prototype.get=Vc.prototype.get;Vc.prototype.getKeys=Vc.prototype.P;Vc.prototype.getProperties=Vc.prototype.L;Vc.prototype.set=Vc.prototype.set;Vc.prototype.setProperties=Vc.prototype.H;Vc.prototype.unset=Vc.prototype.R; +Zc.prototype.key=Zc.prototype.key;Zc.prototype.oldValue=Zc.prototype.oldValue;t("ol.Observable",Uc);t("ol.Observable.unByKey",function(a){if(Array.isArray(a))for(var b=0,c=a.length;bb||180Terms of Use');ry.prototype.getApiKey=ry.prototype.ca;ry.prototype.getImagerySet=ry.prototype.ua;t("ol.source.CartoDB",ty);ty.prototype.getConfig=ty.prototype.nl;ty.prototype.updateConfig=ty.prototype.Sq;ty.prototype.setConfig=ty.prototype.uq;t("ol.source.Cluster",X);X.prototype.getDistance=X.prototype.Eo; +X.prototype.getSource=X.prototype.Fo;X.prototype.setDistance=X.prototype.vq;t("ol.source.Image",zy);By.prototype.image=By.prototype.image;t("ol.source.ImageArcGISRest",Hy);Hy.prototype.getParams=Hy.prototype.Ho;Hy.prototype.getImageLoadFunction=Hy.prototype.Go;Hy.prototype.getUrl=Hy.prototype.Io;Hy.prototype.setImageLoadFunction=Hy.prototype.Jo;Hy.prototype.setUrl=Hy.prototype.Ko;Hy.prototype.updateParams=Hy.prototype.Lo;t("ol.source.ImageCanvas",Iy);t("ol.source.ImageMapGuide",Jy); +Jy.prototype.getParams=Jy.prototype.No;Jy.prototype.getImageLoadFunction=Jy.prototype.Mo;Jy.prototype.updateParams=Jy.prototype.Po;Jy.prototype.setImageLoadFunction=Jy.prototype.Oo;t("ol.source.ImageStatic",Ky);t("ol.source.ImageVector",Ly);Ly.prototype.getSource=Ly.prototype.Qo;Ly.prototype.getStyle=Ly.prototype.Ro;Ly.prototype.getStyleFunction=Ly.prototype.ib;Ly.prototype.setStyle=Ly.prototype.aj;t("ol.source.ImageWMS",Ny);Ny.prototype.getGetFeatureInfoUrl=Ny.prototype.Uo; +Ny.prototype.getParams=Ny.prototype.Wo;Ny.prototype.getImageLoadFunction=Ny.prototype.Vo;Ny.prototype.getUrl=Ny.prototype.Xo;Ny.prototype.setImageLoadFunction=Ny.prototype.Yo;Ny.prototype.setUrl=Ny.prototype.Zo;Ny.prototype.updateParams=Ny.prototype.$o;t("ol.source.OSM",Ry);t("ol.source.OSM.ATTRIBUTION",'© OpenStreetMap contributors.');t("ol.source.Raster",Sy);Sy.prototype.setOperation=Sy.prototype.s;Wy.prototype.extent=Wy.prototype.extent; +Wy.prototype.resolution=Wy.prototype.resolution;Wy.prototype.data=Wy.prototype.data;t("ol.source.Source",uw);uw.prototype.getAttributions=uw.prototype.za;uw.prototype.getLogo=uw.prototype.Aa;uw.prototype.getProjection=uw.prototype.Da;uw.prototype.getState=uw.prototype.getState;uw.prototype.refresh=uw.prototype.sa;uw.prototype.setAttributions=uw.prototype.va;t("ol.source.Stamen",Zy);t("ol.source.Tile",iy);iy.prototype.getTileGrid=iy.prototype.jb;ly.prototype.tile=ly.prototype.tile; +t("ol.source.TileArcGISRest",cz);cz.prototype.getParams=cz.prototype.o;cz.prototype.updateParams=cz.prototype.B;t("ol.source.TileDebug",ez);t("ol.source.TileImage",ny);ny.prototype.setRenderReprojectionEdges=ny.prototype.Qb;ny.prototype.setTileGridForProjection=ny.prototype.Rb;t("ol.source.TileJSON",gz);gz.prototype.getTileJSON=gz.prototype.Sl;t("ol.source.TileUTFGrid",hz);hz.prototype.getTemplate=hz.prototype.Pl;hz.prototype.forDataAtCoordinateAndResolution=hz.prototype.al; +t("ol.source.TileWMS",lz);lz.prototype.getGetFeatureInfoUrl=lz.prototype.hp;lz.prototype.getParams=lz.prototype.ip;lz.prototype.updateParams=lz.prototype.jp;my.prototype.getTileLoadFunction=my.prototype.yb;my.prototype.getTileUrlFunction=my.prototype.zb;my.prototype.getUrls=my.prototype.Ab;my.prototype.setTileLoadFunction=my.prototype.Fb;my.prototype.setTileUrlFunction=my.prototype.hb;my.prototype.setUrl=my.prototype.rb;my.prototype.setUrls=my.prototype.vb;t("ol.source.Vector",U); +U.prototype.addFeature=U.prototype.Gb;U.prototype.addFeatures=U.prototype.Qc;U.prototype.clear=U.prototype.clear;U.prototype.forEachFeature=U.prototype.Lh;U.prototype.forEachFeatureInExtent=U.prototype.ec;U.prototype.forEachFeatureIntersectingExtent=U.prototype.Mh;U.prototype.getFeaturesCollection=U.prototype.Th;U.prototype.getFeatures=U.prototype.ee;U.prototype.getFeaturesAtCoordinate=U.prototype.Sh;U.prototype.getFeaturesInExtent=U.prototype.Yf;U.prototype.getClosestFeatureToCoordinate=U.prototype.Oh; +U.prototype.getExtent=U.prototype.G;U.prototype.getFeatureById=U.prototype.Rh;U.prototype.getFormat=U.prototype.ej;U.prototype.getUrl=U.prototype.fj;U.prototype.removeLoadedExtent=U.prototype.Cj;U.prototype.removeFeature=U.prototype.Lb;U.prototype.setLoader=U.prototype.hj;Bw.prototype.feature=Bw.prototype.feature;t("ol.source.VectorTile",rz);rz.prototype.clear=rz.prototype.clear;t("ol.source.WMTS",Y);Y.prototype.getDimensions=Y.prototype.ol;Y.prototype.getFormat=Y.prototype.kp; +Y.prototype.getLayer=Y.prototype.lp;Y.prototype.getMatrixSet=Y.prototype.Al;Y.prototype.getRequestEncoding=Y.prototype.Nl;Y.prototype.getStyle=Y.prototype.mp;Y.prototype.getVersion=Y.prototype.Ul;Y.prototype.updateDimensions=Y.prototype.Tq; +t("ol.source.WMTS.optionsFromCapabilities",function(a,b){var c=hc(a.Contents.Layer,function(a){return a.Identifier==b.layer});if(null===c)return null;var d=a.Contents.TileMatrixSet;var e=1e&&(e=0);var f=c.TileMatrixSetLink[e].TileMatrixSet;var g=c.TileMatrixSetLink[e].TileMatrixSetLimits;var h=c.Format[0];"format"in b&&(h=b.format);e=mc(c.Style,function(a){return"style"in b?a.Title==b.style:a.isDefault});0>e&&(e=0);e=c.Style[e].Identifier;var l={};"Dimension"in c&&c.Dimension.forEach(function(a){var b=a.Identifier,c=a.Default;void 0===c&&(c=a.Value[0]);l[b]=c});var m=hc(a.Contents.TileMatrixSet,function(a){return a.Identifier==f}),n,p=m.SupportedCRS;p&&(n=Ob(p.replace(/urn:ogc:def:crs:(\w+):(.*:)?(\w+)$/, +"$1:$3"))||Ob(p));"projection"in b&&(p=Ob(b.projection),!p||n&&!Xb(p,n)||(n=p));p=c.WGS84BoundingBox;if(void 0!==p){var q=Ob("EPSG:4326").G();q=p[0]==q[0]&&p[2]==q[2];var r=bc(p,"EPSG:4326",n);(p=n.G())&&(La(p,r)||(r=void 0))}g=tz(m,r,g);var u=[];m=b.requestEncoding;m=void 0!==m?m:"";if("OperationsMetadata"in a&&"GetTile"in a.OperationsMetadata)for(a=a.OperationsMetadata.GetTile.DCP.HTTP.Get,r=0,p=a.length;r