From 7a07f622de6c6d6c9a597c39bbf467766fa6f54e Mon Sep 17 00:00:00 2001 From: Mike Castle Date: Tue, 26 Nov 2013 23:55:08 -0800 Subject: [PATCH 001/109] Fix a variety of typos. --- code/chat.js | 2 +- code/hooks.js | 6 +++--- mobile/smartphone.css | 4 ++-- plugins/portal-defense.user.js | 4 ++-- plugins/show-linked-portals.user.js | 18 +++++++++--------- 5 files changed, 17 insertions(+), 17 deletions(-) diff --git a/code/chat.js b/code/chat.js index 59e398bb..b5774ec6 100644 --- a/code/chat.js +++ b/code/chat.js @@ -106,7 +106,7 @@ window.chat.genPostData = function(isFaction, storageHash, getOlderMsgs) { // Currently this edge case is not handled. Let’s see if this is a // problem in crowded areas. $.extend(data, {minTimestampMs: min}); - // when requesting with an acutal minimum timestamp, request oldest rather than newest first. + // when requesting with an actual minimum timestamp, request oldest rather than newest first. // this matches the stock intel site, and ensures no gaps when continuing after an extended idle period if (min > -1) $.extend(data, {ascendingTimestampOrder: true}); } diff --git a/code/hooks.js b/code/hooks.js index b6a7ef6c..11c9b95c 100644 --- a/code/hooks.js +++ b/code/hooks.js @@ -64,18 +64,18 @@ window.runHooks = function(event, data) { if(VALID_HOOKS.indexOf(event) === -1) throw('Unknown event type: ' + event); if(!_hooks[event]) return true; - var interupted = false; + var interrupted = false; $.each(_hooks[event], function(ind, callback) { try { if (callback(data) === false) { - interupted = true; + interrupted = true; return false; //break from $.each } } catch(err) { console.error('error running hook '+event+', error: '+err); } }); - return !interupted; + return !interrupted; } diff --git a/mobile/smartphone.css b/mobile/smartphone.css index bec0a5e8..be95476e 100644 --- a/mobile/smartphone.css +++ b/mobile/smartphone.css @@ -198,14 +198,14 @@ body { .linkdetails aside { padding: 5px; margin-top: 3px; - margin-botton: 3px; + margin-bottom: 3px; border: 2px outset #0e3d4e; } #toolbox > a { padding: 5px; margin-top: 3px; - margin-botton: 3px; + margin-bottom: 3px; border: 2px outset #0e3d4e; } diff --git a/plugins/portal-defense.user.js b/plugins/portal-defense.user.js index 9f95ce4d..574fb033 100644 --- a/plugins/portal-defense.user.js +++ b/plugins/portal-defense.user.js @@ -68,7 +68,7 @@ window.plugin.portalDefense.renderAttackRegion = function(portal) { } var region = L.marker(portal.getLatLng(), { icon: L.divIcon({ - className: 'plugin-iic-defense', + className: 'plugin-iitc-defense', clickable: false, iconAnchor: [-10,10], html: "
"+display+"
" @@ -127,7 +127,7 @@ var setup = function() { $('#toolbox').append(' Reload Defense'); $("'); + // Setup sorting + $(document).on('click.portalslist', '#portalslist table th', function() { + $('#portalslist').html(window.plugin.portalslist.portalTable($(this).data('sort'),window.plugin.portalslist.sortOrder,window.plugin.portalslist.filter)); + }); + $(document).on('click.portalslist', '#portalslist .filterAll', function() { + $('#portalslist').html(window.plugin.portalslist.portalTable($(this).data('sort'),window.plugin.portalslist.sortOrder,0)); + }); + $(document).on('click.portalslist', '#portalslist .filterRes', function() { + $('#portalslist').html(window.plugin.portalslist.portalTable($(this).data('sort'),window.plugin.portalslist.sortOrder,1)); + }); + $(document).on('click.portalslist', '#portalslist .filterEnl', function() { + $('#portalslist').html(window.plugin.portalslist.portalTable($(this).data('sort'),window.plugin.portalslist.sortOrder,2)); + }); +} + +// PLUGIN END ////////////////////////////////////////////////////////// + +@@PLUGINEND@@ From b783ef9cf6f277a92f50c78045bfdceee90725c0 Mon Sep 17 00:00:00 2001 From: Mike Castle Date: Mon, 2 Dec 2013 23:15:02 -0800 Subject: [PATCH 018/109] Spell check and found a bunch of new comments with typos. --- code/map_data_calc_tools.js | 2 +- code/map_data_render.js | 2 +- code/portal_detail.js | 4 ++-- plugins/guess-player-levels.user.js | 2 +- plugins/keys.user.js | 2 +- 5 files changed, 6 insertions(+), 6 deletions(-) diff --git a/code/map_data_calc_tools.js b/code/map_data_calc_tools.js index 884acc40..a2c3369c 100644 --- a/code/map_data_calc_tools.js +++ b/code/map_data_calc_tools.js @@ -6,7 +6,7 @@ // tile and a quadkey. Both the bounds and the quadkey are “somewhat” // required to get complete data. // -// Convertion functions courtesy of +// Conversion functions courtesy of // http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames diff --git a/code/map_data_render.js b/code/map_data_render.js index 6606a022..53ce23a4 100644 --- a/code/map_data_render.js +++ b/code/map_data_render.js @@ -470,7 +470,7 @@ window.Render.prototype.addPortalToMapLayer = function(portal) { this.portalClusters[cid].push(portal.options.guid); - // now, at this point, we could match the above re-clustr code - sorting, and adding/removing as necessary + // now, at this point, we could match the above re-cluster code - sorting, and adding/removing as necessary // however, it won't make a lot of visible difference compared to just pushing to the end of the list, then // adding to the visible layer if the list is below the limit if (this.portalClusters[cid].length < this.CLUSTER_PORTAL_LIMIT || portal.options.guid == selectedPortal || artifact.isInterestingPortal(portal.options.guid)) { diff --git a/code/portal_detail.js b/code/portal_detail.js index e99d5b7a..0f5557ab 100644 --- a/code/portal_detail.js +++ b/code/portal_detail.js @@ -1,5 +1,5 @@ /// PORTAL DETAIL ////////////////////////////////////// -// code to retrieve the new potal detail data from the servers +// code to retrieve the new portal detail data from the servers // NOTE: the API for portal detailed information is NOT FINAL // this is a temporary measure to get things working again after a major change to the intel map @@ -54,6 +54,6 @@ window.portalDetail.request = function(guid) { -})(); // anonumous wrapper function end +})(); // anonymous wrapper function end diff --git a/plugins/guess-player-levels.user.js b/plugins/guess-player-levels.user.js index b51de2cd..1fa5f44e 100644 --- a/plugins/guess-player-levels.user.js +++ b/plugins/guess-player-levels.user.js @@ -317,7 +317,7 @@ window.plugin.guessPlayerLevels.sort = function(playerHash) { var setup = function() { - // we used to sture level guesses as one localStorage key per player, named 'level-PLAYER_GUID' + // we used to store level guesses as one localStorage key per player, named 'level-PLAYER_GUID' // they're now stored in a single storage key - 'plugin-guess-player-levels' - so clear these old entries $.each(Object.keys(localStorage), function(ind,key) {// legacy code - should be removed in the future if(key.lastIndexOf('level-',0)===0) { diff --git a/plugins/keys.user.js b/plugins/keys.user.js index 7ba1697b..26921db1 100644 --- a/plugins/keys.user.js +++ b/plugins/keys.user.js @@ -155,7 +155,7 @@ window.plugin.keys.loadLocal = function(mapping) { : JSON.parse(objectJSON); } -// For backward compitable, will change to use loadLocal after a few version +// For backward compatibility, will change to use loadLocal after a few version window.plugin.keys.loadKeys = function() { var keysObjectJSON = localStorage[plugin.keys.KEY.key]; if(!keysObjectJSON) return; From 7b69693a3ffad5dd1bcdc57b98786bbaf3a7354b Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Tue, 3 Dec 2013 13:49:38 +0100 Subject: [PATCH 019/109] - don't push current pane to backstack if it was called via back button - fixes endless loop of while toggling panes --- mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java index 92bcc447..dfda5290 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java @@ -370,6 +370,7 @@ public class IITC_Mobile extends Activity implements OnSharedPreferenceChangeLis // Pop last item from backstack and pretend the relevant menu item was clicked if (!mBackStack.isEmpty()) { backStackPop(); + mBackButtonPressed = true; return; } @@ -405,8 +406,10 @@ public class IITC_Mobile extends Activity implements OnSharedPreferenceChangeLis // map pane is top-lvl. clear stack. if (pane == Pane.MAP) mBackStack.clear(); - else mBackStack.push(mCurrentPane); + // don't push current pane to backstack if this method was called via back button + else if (!mBackButtonPressed) mBackStack.push(mCurrentPane); + mBackButtonPressed = false; mCurrentPane = pane; mNavigationHelper.switchTo(pane); } From 7e0cfd0159ddabf684e1d013d728113ac7870bc8 Mon Sep 17 00:00:00 2001 From: fkloft Date: Tue, 3 Dec 2013 16:15:17 +0100 Subject: [PATCH 020/109] Fix ipas-link --- plugins/broken/ipas-link.user.js | 111 ------------------------------- plugins/ipas-link.user.js | 105 ++++++++++++++++++++++++++++- 2 files changed, 102 insertions(+), 114 deletions(-) delete mode 100644 plugins/broken/ipas-link.user.js diff --git a/plugins/broken/ipas-link.user.js b/plugins/broken/ipas-link.user.js deleted file mode 100644 index 02db5180..00000000 --- a/plugins/broken/ipas-link.user.js +++ /dev/null @@ -1,111 +0,0 @@ -// ==UserScript== -// @id iitc-plugin-ipas-link@graphracer -// @name IITC Plugin: simulate an attack on portal -// @category Portal Info -// @version 0.2.0.@@DATETIMEVERSION@@ -// @namespace https://github.com/xosofox/IPAS -// @updateURL @@UPDATEURL@@ -// @downloadURL @@DOWNLOADURL@@ -// @description [@@BUILDNAME@@-@@BUILDDATE@@] Adds a link to the portal details to open the portal in IPAS - Ingress Portal Attack Simulator on http://ipas.graphracer.com -// @include https://www.ingress.com/intel* -// @include http://www.ingress.com/intel* -// @match https://www.ingress.com/intel* -// @match http://www.ingress.com/intel* -// @grant none -// ==/UserScript== - -@@PLUGINSTART@@ - -// PLUGIN START //////////////////////////////////////////////////////// - -// use own namespace for plugin -window.plugin.ipasLink = function() {}; - -window.plugin.ipasLink.setupCallback = function() { - addHook('portalDetailsUpdated', window.plugin.ipasLink.addLink); -} - -window.plugin.ipasLink.addLink = function(d) { - $('.linkdetails').append(''); -} - -window.plugin.ipasLink.getHash = function (d) { - var hashParts = []; - $.each(d.resonatorArray.resonators, function (ind, reso) { - if (reso) { - hashParts.push(reso.level + "," + reso.distanceToPortal + "," + reso.energyTotal); - } else { - hashParts.push("1,20,0"); - } - }); - var resos = hashParts.join(";"); - - hashParts = []; - $.each(d.portalV2.linkedModArray, function (ind, mod) { - // s - shields - // h - heat sink - // i - intentionally left in - // t - turret - // - // f - force amp - // m - multi-hack - // l - link-amp - // - var modCodes = { - "RES_SHIELD": "s", - "HEATSINK": "h", - "TURRET": "t", - "FORCE_AMP": "f", - "MULTIHACK": "m", - "LINK_AMPLIFIER": "l" - } - - var mc = "0"; - if (mod) { - if (mod.type in modCodes) { - mc = modCodes[mod.type] + mod.rarity.charAt(0).toLowerCase(); - - //special for shields to distinguish old/new mitigation - if (mod.type == "RES_SHIELD") { - mc += mod.stats.MITIGATION; - } - } - } - hashParts.push(mc); - }); - var shields = hashParts.join(","); - - var linkParts = []; - var edges = d.portalV2.linkedEdges; - - var portalL = new L.LatLng(d.locationE6.latE6 / 1E6, d.locationE6.lngE6 / 1E6) - $.each(edges, function (ind, edge) { - //calc distance in m here - var distance = 1; //default to 1m, so a low level portal would support it - - //Try to find other portals details - var guid = edge.otherPortalGuid - if (window.portals[guid] !== undefined) { - //get other portals details as o - var o = window.portals[guid].options.details; - var otherPortalL = new L.LatLng(o.locationE6.latE6 / 1E6, o.locationE6.lngE6 / 1E6); - var distance = Math.round(portalL.distanceTo(otherPortalL)); - } - - if (!(edge.isOrigin)) { - distance = distance * -1; - } - linkParts.push(distance); - }); - var links = linkParts.join(","); - - return resos + "/" + shields + "/" + links; //changed with IPAS 1.1 to / instead of | - } - -var setup = function () { - window.plugin.ipasLink.setupCallback(); -} - -// PLUGIN END ////////////////////////////////////////////////////////// - -@@PLUGINEND@@ diff --git a/plugins/ipas-link.user.js b/plugins/ipas-link.user.js index 06352f63..cab444d6 100644 --- a/plugins/ipas-link.user.js +++ b/plugins/ipas-link.user.js @@ -1,15 +1,114 @@ // ==UserScript== // @id iitc-plugin-ipas-link@graphracer // @name IITC Plugin: simulate an attack on portal -// @category Deleted -// @version 0.2.0.@@DATETIMEVERSION@@ +// @category Portal Info +// @version 0.2.1.@@DATETIMEVERSION@@ // @namespace https://github.com/xosofox/IPAS // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ -// @description PLUGIN CURRENTLY UNAVAILABLE +// @description [@@BUILDNAME@@-@@BUILDDATE@@] Adds a link to the portal details to open the portal in IPAS - Ingress Portal Attack Simulator on http://ipas.graphracer.com // @include https://www.ingress.com/intel* // @include http://www.ingress.com/intel* // @match https://www.ingress.com/intel* // @match http://www.ingress.com/intel* // @grant none // ==/UserScript== + +@@PLUGINSTART@@ + +// PLUGIN START //////////////////////////////////////////////////////// + +// use own namespace for plugin +window.plugin.ipasLink = function() {}; + +window.plugin.ipasLink.setupCallback = function() { + addHook('portalDetailsUpdated', window.plugin.ipasLink.addLink); +} + +window.plugin.ipasLink.addLink = function(p) { + $('.linkdetails').append(''); +} + +window.plugin.ipasLink.getHash = function (p) { + var details = p.portalDetails; + + var hashParts = []; + $.each(details.resonatorArray.resonators, function (ind, reso) { + if (reso) + hashParts.push(reso.level + "," + reso.distanceToPortal + "," + reso.energyTotal); + else + hashParts.push("1,20,0"); + }); + var resos = hashParts.join(";"); + + hashParts = []; + $.each(details.portalV2.linkedModArray, function (ind, mod) { + // s - shields + // h - heat sink + // i - intentionally left in + // t - turret + // + // f - force amp + // m - multi-hack + // l - link-amp + // + var modCodes = { + "RES_SHIELD": "s", + "HEATSINK": "h", + "TURRET": "t", + "FORCE_AMP": "f", + "MULTIHACK": "m", + "LINK_AMPLIFIER": "l" + } + + var mc = "0"; + if (mod) { + if (mod.type in modCodes) { + mc = modCodes[mod.type] + mod.rarity.charAt(0).toLowerCase(); + + //special for shields to distinguish old/new mitigation + if (mod.type == "RES_SHIELD") + mc += mod.stats.MITIGATION; + } + } + hashParts.push(mc); + }); + var shields = hashParts.join(","); + + var linkParts = []; + var portalLL = p.portal.getLatLng(); + var edges = getPortalLinks(p.guid); + edges["in"].forEach(function (guid) { + //calc distance in m here + var distance = 1; //default to 1m, so a low level portal would support it + + //Try to find other portals details + var o = window.portals[guid]; + if (o) + distance = Math.round(portalLL.distanceTo(o.getLatLng())); + + linkParts.push(distance); + }); + edges["out"].forEach(function (guid) { + //calc distance in m here + var distance = 1; //default to 1m, so a low level portal would support it + + //Try to find other portals details + var o = window.portals[guid]; + if (o) + distance = Math.round(portalLL.distanceTo(o.getLatLng())); + + linkParts.push(-distance); // "-" to mark outgoing links + }); + var links = linkParts.join(","); + + return resos + "/" + shields + "/" + links; //changed with IPAS 1.1 to / instead of | +} + +var setup = function () { + window.plugin.ipasLink.setupCallback(); +} + +// PLUGIN END ////////////////////////////////////////////////////////// + +@@PLUGINEND@@ From fd24fad6417b815258700c155a4af51f67af79f5 Mon Sep 17 00:00:00 2001 From: fkloft Date: Tue, 3 Dec 2013 16:48:40 +0100 Subject: [PATCH 021/109] Change background colors --- mobile/smartphone.css | 10 ++++------ plugins/bookmarks-css.css | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/mobile/smartphone.css b/mobile/smartphone.css index be95476e..60c1109f 100644 --- a/mobile/smartphone.css +++ b/mobile/smartphone.css @@ -1,5 +1,4 @@ body { - background: #000; color: #fff; } @@ -81,7 +80,7 @@ body { } #sidebar, #chatcontrols, #chat, #chatinput { - background: #0B3351 !important; + background: transparent !important; } .leaflet-top .leaflet-control { @@ -199,19 +198,18 @@ body { padding: 5px; margin-top: 3px; margin-bottom: 3px; - border: 2px outset #0e3d4e; + border: 2px outset #20A8B1; } #toolbox > a { padding: 5px; margin-top: 3px; margin-bottom: 3px; - border: 2px outset #0e3d4e; + border: 2px outset #20A8B1; } #portaldetails .close { padding: 4px; - border: 1px outset #0e3d4e; + border: 1px outset #20A8B1; margin-top: 2px; - background: #0e3d4e; } diff --git a/plugins/bookmarks-css.css b/plugins/bookmarks-css.css index d051677f..9c160667 100644 --- a/plugins/bookmarks-css.css +++ b/plugins/bookmarks-css.css @@ -367,7 +367,7 @@ margin: 0 !important; padding: 0 !important; border: 0 !important; - background: #0E3D4E; + background: transparent !important;; } #bookmarksBox.mobile .bookmarkList ul, #bookmarksBox.mobile .bookmarkList ul li, From 7a12681fab4c1fc712654a06fd4df74d42665def Mon Sep 17 00:00:00 2001 From: maubry Date: Tue, 3 Dec 2013 11:11:10 -0500 Subject: [PATCH 022/109] Iteration two, using TEAM_* constant, level with 0 base, getLatLng and fields/links count. plugin: portals list - fix for changes to Niantc data Issue #668 --- plugins/portals-list.user.js | 42 ++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 16 deletions(-) diff --git a/plugins/portals-list.user.js b/plugins/portals-list.user.js index e98e60e1..931fbf5a 100644 --- a/plugins/portals-list.user.js +++ b/plugins/portals-list.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-portals-list@teo96 // @name IITC plugin: show list of portals // @category Info -// @version 0.0.19.@@DATETIMEVERSION@@ +// @version 0.1.0.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -19,7 +19,7 @@ // PLUGIN START //////////////////////////////////////////////////////// /* whatsnew - * 0.0.19: Using the new data format + * 0.1.0 : Using the new data format * 0.0.15: Add 'age' column to display how long each portal has been controlled by its current owner. * 0.0.14: Add support to new mods (S:Shield - T:Turret - LA:Link Amp - H:Heat-sink - M:Multi-hack - FA:Force Amp) * 0.0.12: Use dialog() instead of alert so the user can drag the box around @@ -64,30 +64,36 @@ window.plugin.portalslist.getPortals = function() { retval=true; var d = portal.options.data; - var teamN = 0; + var teamN = window.TEAM_NONE; switch (d.team){ case 'RESISTANCE' : window.plugin.portalslist.resP++; - teamN = 1 + teamN = window.TEAM_RES break; case 'ENLIGHTENED' : window.plugin.portalslist.enlP++; - teamN = 2; + teamN = window.TEAM_ENL; break; } + var l = window.getPortalLinks(i); + var f = window.getPortalFields(i); var thisPortal = { + 'portal': portal, 'guid': i, 'teamN': teamN, 'name': d.title, 'team': d.team, - 'level': d.level, + 'level': portal.options.level, 'health': d.health, 'resCount': d.resCount, - 'lat': d.latE6, - 'lng': d.lngE6, - 'img': d.img}; + 'img': d.img, + 'linkCount': l.in.length + l.out.length, + 'link' : l, + 'fieldCount': f.length, + 'field' : f + }; window.plugin.portalslist.listPortals.push(thisPortal); }); @@ -126,7 +132,7 @@ window.plugin.portalslist.portalTable = function(sortBy, sortOrder, filter) { //Array sort window.plugin.portalslist.listPortals.sort(function(a, b) { var retVal = 0; - switch (sortBy) { + switch (sortBy) { win case 'names': retVal = a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1; break; @@ -146,17 +152,21 @@ window.plugin.portalslist.portalTable = function(sortBy, sortOrder, filter) { + 'Team' + 'Health' + 'Resonator Count' + + 'Link Count' + + 'Field Count' $.each(portals, function(ind, portal) { - if (filter === 0 || filter === portal.teamN) { - html += '' + if (filter === TEAM_NONE || filter === portal.teamN) { + html += '' + '' + window.plugin.portalslist.getPortalLink(portal, portal.guid) + '' + '' + portal.level + '' + '' + portal.team + ''; html += '' + portal.health + '' - + '' + portal.resCount + ''; + + '' + portal.resCount + '' + + '' + portal.linkCount + '' + + '' + portal.fieldCount + ''; html+= ''; } @@ -195,11 +205,11 @@ window.plugin.portalslist.portalTableSort = function(name, by) { // hover: show address // code from getPortalLink function by xelio from iitc: AP List - https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/ap-list.user.js window.plugin.portalslist.getPortalLink = function(portal,guid) { - - var latlng = [portal.latE6/1E6, portal.lngE6/1E6].join(); + var coord = portal.portal.getLatLng(); + var latlng = [coord.lat, coord.lng].join(); var jsSingleClick = 'window.renderPortalDetails(\''+guid+'\');return false'; var jsDoubleClick = 'window.zoomToAndShowPortal(\''+guid+'\', ['+latlng+']);return false'; - var perma = '/intel?latE6='+portal.latE6+'&lngE6='+portal.lngE6+'&z=17&pguid='+guid; + var perma = '/intel?latE6='+coord.lat+'&lngE6='+coord.lng+'&z=17&pguid='+guid; //Use Jquery to create the link, which escape characters in TITLE and ADDRESS of portal var a = $('',{ From c1434db0dc54cb3f371180ffd2d6b0b195972320 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Tue, 3 Dec 2013 17:37:41 +0100 Subject: [PATCH 023/109] drawable changes part1 --- mobile/res/drawable-hdpi/action_about.png | Bin 1629 -> 0 bytes mobile/res/drawable-hdpi/action_search.png | Bin 1764 -> 0 bytes mobile/res/drawable-hdpi/action_settings.png | Bin 1540 -> 0 bytes .../drawable-hdpi/alerts_and_states_warning.png | Bin 1618 -> 0 bytes mobile/res/drawable-hdpi/av_full_screen.png | Bin 1810 -> 0 bytes mobile/res/drawable-hdpi/browser.png | Bin 2516 -> 0 bytes mobile/res/drawable-hdpi/ic_action_about.png | Bin 0 -> 646 bytes .../res/drawable-hdpi/ic_action_full_screen.png | Bin 0 -> 587 bytes mobile/res/drawable-hdpi/ic_action_search.png | Bin 0 -> 639 bytes mobile/res/drawable-hdpi/ic_action_settings.png | Bin 0 -> 892 bytes mobile/res/drawable-hdpi/ic_action_warning.png | Bin 0 -> 515 bytes mobile/res/drawable-hdpi/ic_action_web_site.png | Bin 0 -> 1154 bytes mobile/res/drawable-mdpi/action_about.png | Bin 1333 -> 0 bytes mobile/res/drawable-mdpi/action_search.png | Bin 1394 -> 0 bytes mobile/res/drawable-mdpi/action_settings.png | Bin 1339 -> 0 bytes .../drawable-mdpi/alerts_and_states_warning.png | Bin 1362 -> 0 bytes mobile/res/drawable-mdpi/av_full_screen.png | Bin 1479 -> 0 bytes mobile/res/drawable-mdpi/browser.png | Bin 1842 -> 0 bytes mobile/res/drawable-mdpi/ic_action_about.png | Bin 0 -> 434 bytes .../res/drawable-mdpi/ic_action_full_screen.png | Bin 0 -> 461 bytes mobile/res/drawable-mdpi/ic_action_search.png | Bin 0 -> 449 bytes mobile/res/drawable-mdpi/ic_action_settings.png | Bin 0 -> 601 bytes mobile/res/drawable-mdpi/ic_action_warning.png | Bin 0 -> 410 bytes mobile/res/drawable-mdpi/ic_action_web_site.png | Bin 0 -> 733 bytes mobile/res/drawable-xhdpi/action_about.png | Bin 2040 -> 0 bytes mobile/res/drawable-xhdpi/action_search.png | Bin 2127 -> 0 bytes mobile/res/drawable-xhdpi/action_settings.png | Bin 1641 -> 0 bytes .../drawable-xhdpi/alerts_and_states_warning.png | Bin 1813 -> 0 bytes mobile/res/drawable-xhdpi/av_full_screen.png | Bin 2065 -> 0 bytes mobile/res/drawable-xhdpi/browser.png | Bin 3307 -> 0 bytes mobile/res/drawable-xhdpi/ic_action_about.png | Bin 0 -> 787 bytes .../res/drawable-xhdpi/ic_action_full_screen.png | Bin 0 -> 774 bytes mobile/res/drawable-xhdpi/ic_action_search.png | Bin 0 -> 827 bytes mobile/res/drawable-xhdpi/ic_action_settings.png | Bin 0 -> 1204 bytes mobile/res/drawable-xhdpi/ic_action_warning.png | Bin 0 -> 682 bytes mobile/res/drawable-xhdpi/ic_action_web_site.png | Bin 0 -> 1532 bytes mobile/res/drawable-xxhdpi/ic_action_about.png | Bin 0 -> 1231 bytes .../drawable-xxhdpi/ic_action_full_screen.png | Bin 0 -> 1009 bytes mobile/res/drawable-xxhdpi/ic_action_search.png | Bin 0 -> 1152 bytes .../res/drawable-xxhdpi/ic_action_settings.png | Bin 0 -> 1734 bytes mobile/res/drawable-xxhdpi/ic_action_warning.png | Bin 0 -> 888 bytes .../res/drawable-xxhdpi/ic_action_web_site.png | Bin 0 -> 2461 bytes mobile/res/menu/main.xml | 8 ++++---- .../iitc_mobile/IITC_NavigationHelper.java | 2 +- .../cradle/iitc_mobile/share/ShareActivity.java | 2 +- 45 files changed, 6 insertions(+), 6 deletions(-) delete mode 100644 mobile/res/drawable-hdpi/action_about.png delete mode 100644 mobile/res/drawable-hdpi/action_search.png delete mode 100644 mobile/res/drawable-hdpi/action_settings.png delete mode 100644 mobile/res/drawable-hdpi/alerts_and_states_warning.png delete mode 100644 mobile/res/drawable-hdpi/av_full_screen.png delete mode 100644 mobile/res/drawable-hdpi/browser.png create mode 100644 mobile/res/drawable-hdpi/ic_action_about.png create mode 100644 mobile/res/drawable-hdpi/ic_action_full_screen.png create mode 100644 mobile/res/drawable-hdpi/ic_action_search.png create mode 100644 mobile/res/drawable-hdpi/ic_action_settings.png create mode 100644 mobile/res/drawable-hdpi/ic_action_warning.png create mode 100644 mobile/res/drawable-hdpi/ic_action_web_site.png delete mode 100644 mobile/res/drawable-mdpi/action_about.png delete mode 100644 mobile/res/drawable-mdpi/action_search.png delete mode 100644 mobile/res/drawable-mdpi/action_settings.png delete mode 100644 mobile/res/drawable-mdpi/alerts_and_states_warning.png delete mode 100644 mobile/res/drawable-mdpi/av_full_screen.png delete mode 100644 mobile/res/drawable-mdpi/browser.png create mode 100644 mobile/res/drawable-mdpi/ic_action_about.png create mode 100644 mobile/res/drawable-mdpi/ic_action_full_screen.png create mode 100644 mobile/res/drawable-mdpi/ic_action_search.png create mode 100644 mobile/res/drawable-mdpi/ic_action_settings.png create mode 100644 mobile/res/drawable-mdpi/ic_action_warning.png create mode 100644 mobile/res/drawable-mdpi/ic_action_web_site.png delete mode 100644 mobile/res/drawable-xhdpi/action_about.png delete mode 100644 mobile/res/drawable-xhdpi/action_search.png delete mode 100644 mobile/res/drawable-xhdpi/action_settings.png delete mode 100644 mobile/res/drawable-xhdpi/alerts_and_states_warning.png delete mode 100644 mobile/res/drawable-xhdpi/av_full_screen.png delete mode 100644 mobile/res/drawable-xhdpi/browser.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_about.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_full_screen.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_search.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_settings.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_warning.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_web_site.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_about.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_full_screen.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_search.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_settings.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_warning.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_web_site.png diff --git a/mobile/res/drawable-hdpi/action_about.png b/mobile/res/drawable-hdpi/action_about.png deleted file mode 100644 index 6eaf08aecf51320ff4c77bba1249ca972992b076..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1629 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi)z{tqN#L3ju$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1OzjUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnqfY zG!Lpb1-DyFaO%|uIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1zemFsXG6MtCc~2L| zkcwMxW}eL!c9b|a+az9MsZyJV3(vPlj@m&Q84Ed@G(tYUy4cLo^p~6E^}*o&x`vJl zfmfkh#90HoT{SvFY_}}&3hbHYu(j@p+SOzC4+v}Qe514b=BzaKx(zKezt2p!zc;g7 zXyw%`*|m2T$?D#7VqVyI!673dH~P%;3hM;^5@)t;FTS&C9JH?BmjAELtadEXg7No4 zZZn4^3+G1~)*mddVEz8k@XtpjxsN-90u=E7X_+|~2Wncd)-8_+nt zKsJsg_dt#H^M@u&5+&mfD_5*Lsc+ij=_to{Nbp7Dj(MkYcQ9!?O5ETOf4HM(Py1|x zWxKO3pSdj6V!XjyxSnD9gXODlN-*nn9OO82$Rwt9&S{C&CpC|4N$T@BY}FQhP_a`| z&-u{dC$CjRR?C&Ih-CYfz?Jqu>WJ*GyO!l7VCh9_6b`hiXH!Q z?<#vWKlDx0mPuyCn`1lKr)aG%V1A~1>`ln7H&?a>&kldHY75(+J6>}_o>eT)Nxtls z7}OKhCpp@$E;^Uir^tGHyJqHdroXe`M0(YWp=aOf!A9`3BzqbX+U9a>G`=KC$a( sAHJIl3^w)^1&PVosU-?Y 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 n^W^zu`z%`IzHgoi(2{R{xf+Eh)OD%bumGAd+p diff --git a/mobile/res/drawable-hdpi/av_full_screen.png b/mobile/res/drawable-hdpi/av_full_screen.png deleted file mode 100644 index 52601b036becaff1b5ca33344de6f0dee57957a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1810 zcmaJ?X;2eq7!CpDRuR-HMVC+uDoHjW0d~uo14ImR%>X0Uk}M&G-Hpk{grk&F5E-kb zQ)LiPKst)xH3L#ms1UShMWG%bwJOwFDk5St2p*MgP_#cvcV_qdzIWc|d9UZ2Ee;P0 zwzXPiMWfMdLpF*csTDN777M9w4E=c#wX7t?v1AmHN@@`mN(+<`DJT$vA#yYlMP!-V zE}=d&n(0T1=vXpVvKf{V7z;7_uymM`LepqI{yHThO-D%}1(hpsU&fQO=NN!O=F5oT zOF)TIh^8qvW~tDqtgvWlR=O0DG5q}iA012)U?_Ef=*8rKFy9LXIl$Y8K}A!^ zQsGEZ(A!wl$(NBvl1iA()@rpZtp|%x$=MtTg4iIJ&E+yF52iX3ClMVJSG&wHh)}gu zrBIRz0tbwYND84LeHm1yZ%V+F?`U!L+cr@RW9twlo5KQ)CCxcXB>(Ski!vkARY%2^8~`cAU?;7C*aIs zMTAs?p*T5*mA%LE=fxVufGMfSB2=Z=j>>{m1P06&4J+o)g*z|bTdZvUTs-E*vZ-X) z#?k(3)N>|EKgR7l;Zlcp(noPh?;wA=Dw_gYKyd8A(l7 zE@He3bjzeAM;G@c3?yhCh{wd@lGwm1!6_E~C_Y+W-SC4T35aeAs3~poy#3Qn4S(wR zNC%NzmYOQpeqF#b&m9}#s`Ygx%MNDpM<bPLVQ|Exm?ZxTntGt7EhjYK$TRv%*vlDJ?Dn_K{73R}*2LA?OhgYRI{u&}_S$B;0 z&65pHaa}v2;w$=^Y5X*QL-|a(*`J*P>o1!FZlCIEbn`R7W*Hvg2Y%d@^}t@=mdvwj z3#_or@ZNpJHs^b0z=Pjm)2o{+!Y-@#HGHdgsbbiShF$A-KTt~64>#5e19q;9f~Hm`+KYNiSSE3!^@;oK4i}1@A2JU0b_P|2PK0Dgq}fhMaR=zl zWg~L;r2A*}`4Uk?%Xy!wrUg)UCJ!LI@mc-di8X;`Bkgc>mt5O+?&mIhmMUW zxc04IbDR}A0ae^_AdX%GxofK>HpBZ)t#`MITCF)!*SN{CHem)fD`O;Dtz4t=xWOl< z`&%phSg-sF&UEGuowJ+R66tnmosNINZw1$HG_@{0?P<=9BR{*$I2$SiA^EE&W6KJ+ z)oqW9nda}BOe{QuTX#f^uhlF{IX#%$wdmpUtsUJgYmb`^Qw1j%?P@Jrjg4E}(c3#S z<0l)d4I75I?MtPOY0nZbp-5>u0%0thBFHU#``yt^HMx7>O>MiMF3(^5v`4XQtNxEA z1KV;w-5*q2X}e!@xfx6TRX!2M_^tV|VsPm|-etcwg^8=TPE~Gq!&6y&{cOB_qjryH zX!GNvaqFjjYJ_?4xFb1O)qm+;v~^Xr1NMmZaw3qL7+}jUlA{anL?OqDhq}`|##9b* zT_Y=<=sPan1fju8GkBJAjeN29lZ@!Bx{AXXee1T2V5Z0QOecBm{Wjd7ochGjczYPH zjg;Mcq-m)DW`fBab3A#veZtb@xzHzZ%XNcGWq6PI%P(fH!4eA#vzC4SbQ@Yp@Uy=~ S+PXgDUn)c#CORQV&i@Df@x@jE diff --git a/mobile/res/drawable-hdpi/browser.png b/mobile/res/drawable-hdpi/browser.png deleted file mode 100644 index e154afdbcbe8ec4e9fd4354e13ac118dade86ac6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2516 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 diff --git a/mobile/res/drawable-hdpi/ic_action_about.png b/mobile/res/drawable-hdpi/ic_action_about.png new file mode 100644 index 0000000000000000000000000000000000000000..b1f140623976979e6b284f462d7e2646e99db549 GIT binary patch literal 646 zcmV;10(t$3P)|oTDhJUWNb|E#X6ftU;#C*DfFjkOIhDMJ7A6@wf=zEKY7)y|v#!F}ElH}(m|-Ig&(Fds!>?03TbvR2(lQPQ z1&+U`R}L~9FYsV=Qy!2|NQ7rJI*7iRixr?JXl`jpief{Yp30wXgFhG(&a^n?Vs0oO z+V;X32>;RDX9Z~99}1PG+sQ$89gqN9*F^ktyea|dl0fyOp7#azzT*(6Now>?Leo*Z zAaEkjY5?ymgYIqwATQT=_4}=fZ0q$7m!?(`KpSYsOco<9*sH zJ{ntPQxZQpq|~U5Eq!APb8E38Ri!kP#^baWAFPHF_RZZruGV?jHnBuJ1T zTb5W-Xxlc|AEjHZ+ar$SuQ?skczgZXJux-jeMmnAY?7gO1Asncv|&=z8VRUpVluX` zxSv~UAB;7LK;1F+1bQ zl7hK^UM$zqjM3`o_Q|ar&@BzUt4rouibM(MmjB9mtH$xJ8)P%G>JVD>CVq7qO{Oe+ z&uM(>BEe%Puh2h$1eACTIK`xmbSj0DSOD5~)m#K7UF^{dy>9}U59b|8cnzUET3&K5 z1c018*Q*3{9v~~Q14FDr09mI3Lqx<*M{eNJkGp&(9Kpw3B|UJh{&_t}kRU;VY+Jqs Z7ywhGh57>;H-7*C002ovPDHLkV1h~e@ZkUe literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-hdpi/ic_action_search.png b/mobile/res/drawable-hdpi/ic_action_search.png new file mode 100644 index 0000000000000000000000000000000000000000..a70393b50c1dcf17de5ab7e98fa3b6bca6de9e05 GIT binary patch literal 639 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 j@~k{{1EsZVJ5yV%dgYXNWc z{u&?8V;Szg2?tg^6P>nd#e|R7(kf)Htm+Bmw_;8?>QN@LJhA!GWs9z@;*0GykKc;- v=;4r8i;6$F>|0RQk@;zbOuK}Ch$S$X>PoKli8&MkD#$!t{an^LB{Ts5qQ}~& diff --git a/mobile/res/drawable-mdpi/action_search.png b/mobile/res/drawable-mdpi/action_search.png deleted file mode 100644 index 587d9e0bf392fc928947f04293ba009f7fc77b29..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1394 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi)(9*=*)zI10$-vFf5X3XIbTx5uc62i} zG&gZFgz0t3PcF?(%`1WFO+n~&!KoLN7;+1MHoK%2WtOF;xE1B+Du6w0m5JLejyTPO z>P^Az7AKr~^?{Dj2SqJXRKtXT=?BDwCtM&0p7c}mfa$#mn6M+i2Q6b@V0_}~;uunK z>&^AE+Ae`I$3E`tm@-`{zx9(?>dU1k*tm~+ZG0%dVMD+vFR`R_eQ9k~)lEW^HhtI? zB&0NvW8=gpsXg!4y8B+<@$PBQ%`+>{C%wC~^SkBqd7pQuuW?X#(4E%(*>&epCKp?W zrqiE|F7`;J9Gc@U;Ny}9H~GSBM$UJ2|47y7x^EaYbO zm=^RUfnEK@zlTwYmbEt*&h}S4{%}u`&SQ?!WlSjvv9{-n3Kw#{NfhghW2)KCHS6mc z^@8V*Jmr$4uC6fJ$dg^zU&?d@|$3_EuOa%?|q_h0a*8dJ>+>(i$vUCaNY#uTIE zul#VEs1omUHKv?ZC$?1V2%BBCKXsA7(geZX8pRvuyee!cJTgs9KN2D`QS`=`xX%9*}?nyAhK z_Nf-Z4{Ui>oBh!|a6Nmso8l+YBlF(g-ZfEwMbWdDrE^;>d8}GD@Z@>D4V>xD8CRkc zdVC*mVv&1FrpctHKHIFmo)(#Y4~A;Ho~#?e&Q2v6MQ%0zKUO`Q$Im5rVUFgn)AKHP zSBG=VuX=ZVUZK&Y$p$gc*{*!{ocg_l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi)$k4*r&A`;u$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1OzjUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnqfY zG!Lpb1-DyFaO%|uIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1zzTW#wpMimKt*47) zNX4x;(`~&EJ4hU#eM=~Qh3+e*AEGP=FItrrTsY|WOZ1EJjvdw(oa_9oZXR?!=qWq3 zDc-Rl$fx$;g=0VJAIMucT~d2m6!_%<`}Cr{HsA03uk3vKyH4?Zpw1JUBJ%}HD)(!x zD6V6UWBYsX(wau*4TpZR-Y}|UE&5gYfy*j^@ysj}hnSn8^Y$O`h~hOlpeFH@&9n6n z+cyXQpRvy#C&-_`sd!|u1&Gh3b zxiZf4FKbLh*2~7ZL CljEBJ diff --git a/mobile/res/drawable-mdpi/alerts_and_states_warning.png b/mobile/res/drawable-mdpi/alerts_and_states_warning.png deleted file mode 100644 index a39f97d4ae7cb75ea89dd4f0b747cf285174bde1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1362 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsViq$=TJ&!pY3k$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1POzUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnv1= zG!Lpb1-DyFaq86vIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1z{{3gSF#`kR5l9ku9 zT7rXLUX~1=zr8`pg4I@jqwO)V=c)<^?X+vW^o=EMKe%y$>72vKPq#Q{Tg3RspB6ga zCNzQddP2^}?z8IbWuAR@n|m$IUhi66Su^Qwv-F3z1rt^-J6SS&M(78gd1-2m2#f0elF{r5}E+$0qRl! diff --git a/mobile/res/drawable-mdpi/av_full_screen.png b/mobile/res/drawable-mdpi/av_full_screen.png deleted file mode 100644 index 6fdcd5fc4418b053eb53a0db0dd6e3d7d56ba9f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1479 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 literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-mdpi/ic_action_settings.png b/mobile/res/drawable-mdpi/ic_action_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..04f61deaf51f92b3c10078fa7544f7877124c8e5 GIT binary patch literal 601 zcmV-f0;c_mP)Fr@#b-Vt3{{X6Gh9y-aCMc4jAco6YXt z-gn={^Lpv!z;e{(qc9A8dc2ViVJb-{N~yJLtmBS_ha$O$@wiK%t_57z6y+=@Ev+8< zzJH~){t)v=8s1j8pVK>!bWQ$0!hc}q&KRHouUHxHG4F4HcJsIpt|hi0z&OWuJYN$w z?wt#undg@1&1IeeR9H5Y(mc4nDV zBsQy4u%#HA(-6ZZ<$_`cTZ525QxbSqG`t}lu!)p`bZLsAmd?pfL30Km_MQE|3^2tO ztemz0q%y&DDUKe4Dy{IBorncUYxm!U2TIZUqQOsD->__UK}6sGbr-Z1Fft$#D~ehu zTGDfOCbW2f5w-%cFyr|Iyu$KN#C>3hh(Q=JpvnJpYa+stSyUXuJFzm!h7pRBWc6&} z;eo)oabdzGS}%jVkUllE*N|0g`DjW$cEx~w)P_i&A&D({1zFX_a=wfdbd0WOaDx^g zHQT_pck$0ai&vAn9H%WHoq}Xa6qEr6Ne#dAN;Bafh$46TOSTZ8`@0P(@pNB*L`4e= n?xg_PTHUpPUV1sW{0cAtZ|k!lqDBg&00000NkvXXu0mjfn@I(Z literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-mdpi/ic_action_warning.png b/mobile/res/drawable-mdpi/ic_action_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..9a04694a8d8fd20557a5e92db59a6ac26ba6ba0b GIT binary patch literal 410 zcmV;L0cHM)P);n<96%Rf02zP*@Gf~K4FTE$4Kd**mp13ozWaD!5F9x0&*=L;X4~s> zMfQTJrRRhzI9w+7{s~aVDJ_ZSO5k&bSV-VOOEhq|LWtaZ1?ci}0We}>r2D^U7~4K1_J2eLCE!87X# z&_UeSYJplSJiEFAg*JFDkOsw=2|!X){ggax7`Q2drAd~;K;TBpqF1bjCn@FXTmfV@ zcX>zlhIKP>>6|P>%dg!S8p`a<#(Re^r2F%U#9o<{)d07!uQ z9|1rB-2LHy_8<70`?CRf|AqjT05*XQfDK^%$1`@Tsy!#|>g;m)9-bAo55Qvh4}ett6mQLJI!Q>ayHg#Sf>bKhydM(D->RgiVe##MrGm7Ek-0O9wIX#Q!` z=-M8-(g7gs-uMag4zq^2@X-+OS{T>;8L8P4pgnXZM_>)~w_;!;Bd2eV%m;Y)fNN>6 zd_<&F{y^6{2>=K+VJ6GkobI+H0BZD}IFivGHMkTV2SjWF-MtZ5;I7&0GuBR`aA&>^ z4Cz$v04gUAwb1=ah5;p-=SRI;v;Iq!AmkaPB1?m_yH~09!jlvD6ORCes0@Jm0Z{sT z88H6LdNrBiT_1~V!|ZC4uBbQKRMD0u>aLubQruAmgGqY*%7V?NBNvK_EC4W!dt&eia) z?P@-@O%Ege+}`&$I#>cEgUC>PJcm|+_rNTW-oZ*(1lB6!#RiS$7;$uJNbT!J(F*{` zt1g8^va$~V3XyD>a3_#ZRB>UG#X@hi3DNyf!l>Qgb@{j&w@+F@xPXY`8DXK7I{QmHo P00000NkvXXu0mjf(~?Ys literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xhdpi/action_about.png b/mobile/res/drawable-xhdpi/action_about.png deleted file mode 100644 index 4ee903f071bbd86118d23e3e348af5ff8190171f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2040 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 diff --git a/mobile/res/drawable-xhdpi/action_settings.png b/mobile/res/drawable-xhdpi/action_settings.png deleted file mode 100644 index 09b01483454788c435acf715c57d92fc0ead0a7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1641 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

j<(xDrq%>}x_OTIa0dTU@|3 1pe9XFcLlNGCaS`R0 zom+J**YT|cb?JU~iqgRDMkfz=o!cXgZIv6@wR?6PzY_mz|H0sDd+Bs)=a|>>V|r^L zHFrDLwDpgy3}RzFQ4jtW`pVaKw;_A3)deS{Mo%SvIGUQJr~G7Ra&F zI)bEYoCj_}ZH2tX@VAx~Ez;i@V74eUa}^Cdwk5#_26ycnO6mWZE5P zw1pI(2#!@(88-PdRGpo;xL8oNY<;%py*?__%HWs!;?IxI#gPN&TqmwL%?;!M^<{|T z&*Bk5#-ZQ{r;(4|ri12{9j6}>Zbxc1gy5k*+dmCIo+ozn9!`+*aBZOY?#DAnc~Nt`=LUtU^B4MaoLgOmNylOR z8#QIQ#)1G#NFaLU)59hV{XtCG#q#I`&21+6q#}x;0EH(s+*{POrQ@x3HCx>Xeic99 z?w2}!E+7Sd`C(<C{r^RbY5V8hO4+r;(mzPh5Z7*O?wgz}=#g67z)Uo9hYZfa)iu8;)>Q8(#&drCev zpcBWQ`~}60w!our!u$M(?45=px5Jw>Nq>1kFT_YSpp0Eb=`PO0>Xf(}f359X@#Z7D%B8_B-vcqE)wQUoz0&dSWp%puAGAD#x=2|Eu#D`mQu#s( z{uf(g+V1r2NtulfaC-W9zR&k2W&3r@)r}u!`(Ipr$XQU=j8ysZe3T# lgWyD4g$wY?h;s=*T>z}91AnP{Y1c-AFQ{2$mxl4$?{ diff --git a/mobile/res/drawable-xhdpi/ic_action_about.png b/mobile/res/drawable-xhdpi/ic_action_about.png new file mode 100644 index 0000000000000000000000000000000000000000..4536a8d1513f964c7730fe6dc173e69db7c5cd54 GIT binary patch literal 787 zcmV+u1MK{XP)&KVvOoq%2FL)#28A;^hpQFKO^M!}E*uAr{PZNtc19zC zKp+qZ1OkCzkcdLOYLC)3?u_HBNpr|Dn9{brxN<^L}zqjPPrnI6u}7qdA_2Y*9GdpytHBxbWM1qrrBKwUlKI=%ysfw zL7<|`BlfMX%=lFdOKvy?Sn^(XZL1FIagL%IV~=VAsUA=j@PzVk>-hh3q@I}2EpFl6 zHlO$ifasgdAAMDO$5bd`nf+;`z&CaUEG%oiD^4JLvyhz#;~bF+7OXV@a`z2If7h{x z7RYPDs?w8cm7 z1dyvOGsvrxD*<^=6+rG!TnYHK+_)ZQZ~%OWTYO|y0BQHdfCXxe-`NO&6C3k5Y7RTZ zYej#I4pOoZ%V3I@pXC*!kM9dob^>7gYNo;x&h0}-e}c%*L!Jp9kP6m>)-^}w+Rm;~ z^hw9@UG4=oIRCgVL@szY`DDuX#RxkIy}1~H7bZx$b8s-!B1^@=?PSru* RGok1YR;yL}N&`kyW)6j^8&h*rGo$G&0)WiF z_XOB;jRU2&*BKE_WTV!kHCsAnyK`>2h>ZX;*)N@_zTkwwSU^_;Hs}lx0-){B^F$wpz%<_stP|QP z0bGX`Ii3)b0O>AP7Io}t4w?vUH@k$$$Vhl<0&O?jVxOp~pHvI!c5{YM zOx2EC*3uoILwBknuUTOQpa7N~1Q$OIrjq8JRUNt;3{I-N1i;9W7TpbsLP$Y_Tlyr$ z-O{4F!G9rGE%YH}vJtQ&L0P0s4xCvc4Hapc3_$nA<`)98p9i+m4-g#l1qvMnP&h{` zs0=X=LMR>ct|r-h0MY-5k<0+{3D3$KcMp+*!(YsNU}h~!H<#- z(0bridH7K>(K3UKkOEKu3P1rU00p1`6o3MldHE4w0G`6X^rLkZ*#H0l07*qoM6N<$ Eg7v>U;Q#;t literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xhdpi/ic_action_search.png b/mobile/res/drawable-xhdpi/ic_action_search.png new file mode 100644 index 0000000000000000000000000000000000000000..19658e4a2acbe30df1aeb743ba5ac5e16a5edd21 GIT binary patch literal 827 zcmV-B1H}A^P))F4ccon= z%S0lPNF)-8M88uiMW>g`Wde^Gv^o6>KYu~1pq-(elv3sB0Kmi-@VJMzXz@CNI6~V4 zjMJb2z{GK-H_)bmT@=vX07Nx705JJAJeCcwp}FS`fY2gd0YWhd0OaRe!_Vy%Me{E0 zRfX^A*zkA-2txQ60)VZ<*Grl})zNi&gP`q(K{z<_bpcCl9s z`rTL%YIGCm_nZ>IUBGuXj+O6huF%JZVu#kWMR4sG0Ibr3<*#Lk+5ezd+6}apKBO)E(gmB7F;Y~X8n9j5|zKL!0da@1;E^~=ciKX zI6Sf01@ua#Jh$6@PqyYy60G#^@OpbtCa{zE^7-T8{=ad1r zH2})YOe=UyF(9z4+yZdq;sW+yrj!}R){~>S!Un+J&J1HFD+KhvlsI*X%nJZjZ$GWw zU>#}l6Gy83&MF-?24%*Adn#sho&3&`YJac;KoQwagAu|u#2v`&_l{(%&U#Rnq9_(e zUL0oyOlJ>Gr7Vi}PYwD0Csm600r&xe263dUu5#@0bB}XGQV20FM!Mb#nJI96#UgMg z$jMFcz2{iP(pXnx==)1*zHtC2{jLL^qdI);RJw`*A@=2{uHh{jOkBH2;o9f>grHIe z7)qFIi>TY2?XTQCMTd|SKu374tuZ=;yNs`99`Ef!kK~*Il%BAHAaDloocYxrgCHoz z0L&c0r~2d-6F6Idz9d-%Si*7)F3<%+J{kal5Xw;j@Ptrj9%Zz_0B8vT|GxG)6b%YM z1B9BQzt^>$$_6SU1I@|ji`4&5Boc{4B9TZW8k7DBFaWjb9TtHJeu)48002ovPDHLk FV1n6#bKn2~ literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xhdpi/ic_action_settings.png b/mobile/res/drawable-xhdpi/ic_action_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..3f2f394f7d8b2d97eaa64f3d9d95f4048724e3e3 GIT binary patch literal 1204 zcmV;l1WWsgP)8VoRe5ts!9zisSk#l5(OfOs%ca)NevkACBBEMI#)v!m_$|GKhXDPeqomD?%jSQI|261 z?1Z^}`|jRv-@dOUiUI`+6ev)jK!F0iOnT+}g-Mbe(@#S&y`XWKW!cQv_iTGsKB1p> z1>2m4HvnGyHh>lJJZ}JqYR?V;D3z=bs3&Iutu^s(J^-})v4-;#=>yhmb{M3OOnV(nZUV3`k$A#1dvZ?gvg zVW(cfHY3v=!6X}Hd^q!2Me)Nj`WywoTSj&Gr}a5O9D#lbO9vtCn@MaJlBIUZk;>p7 z%0N9N+4(L6ycS~&J$Q6J`rl=@M8xHbi=DpY?0O}G&iyv4+iEGnE zDz3``a-!G-e*nM%jthxOq)1o07O&_k%H^U}^<4nia#a42)1w52cjJ!6`@)hvlS+-` zbGSQ_OkI$iS|Jf)*)`50y;y*tyv(fINO)xDw2wMMM|s(&$07II%@#9mpnih zX|{w*BryAMWT_&@&oMUy?;K}d_eyPGqlnAJNSTvcNSqocF;`+=VA;PDuhkF+Taj5a zl{-;A-vHDQ5$bSMDRjvS@m$s#n@KXp`6>7S literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xhdpi/ic_action_warning.png b/mobile/res/drawable-xhdpi/ic_action_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..5cd44b97625d367e59560bca3aa5c25200aa6ffb GIT binary patch literal 682 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 literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xxhdpi/ic_action_full_screen.png b/mobile/res/drawable-xxhdpi/ic_action_full_screen.png new file mode 100644 index 0000000000000000000000000000000000000000..e8dff1e4d118d7ed50a1c8560718d234d6181bb0 GIT binary patch literal 1009 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 literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xxhdpi/ic_action_warning.png b/mobile/res/drawable-xxhdpi/ic_action_warning.png new file mode 100644 index 0000000000000000000000000000000000000000..b0ad5b2d5c3f4ae0c61003f422126d75c36410a1 GIT binary patch literal 888 zcmV-;1Bd*HP)i z0Tm$muF0Lbiv>sxq=4ie`)<38r~wyX7oY+Z(1tyeOd^8dE_MOFZ$`uMh(Ff8UF;HA z(ii{$0000000000000000KiI>>pyuf_&09z z@Sm@5T_n8Z^m}ZEPIHL-4gwI5`~RZx`(OxS65!EomIJ%Jx?yOG2%tCqF2MLbOTRB7 zfYA80PrP;DA!nbE&ximTx)H`Ve%}s55RLb*+-4JT=*Axl0SLTb;#dgaJa|1&b`H__ zb07&bmYqYWE=#Rq2B<8uAc~g$T0am0 zf0mso$LCf{S*m3S+Rx;g`ULQ$;acF*YYk zXjv*50o3z7v4}c?74m-S+0M!LAW~(iR0L@3U^~o0fPn5cDMY&JBqHEw^l~g(0K#QP zE|M=_+Jwfhl_lP53ArvY0>*Z?NtUHuQ36cpZj&NeSDj7h{khQbnvrOL4)!impmNq#>Kx@i_%Zz_;WA47|H- zZbZMUZb}X~!0yv+VI#d?Yj>Lz(Oq@15wL~LX>1ZJz!LVRu}Q1|udp|bO=1POGw)Ng z;GMI#NzyX3zv0=KvZtRzjsKLx8yW!s0000000000000000A|T=0R{kv12pg$PAj(n O0000e9)0J#~45B zNZA~9b5!(mqnI)(K;N=20d(g1@&y$0^_)CqbSA(P*s}njcPZnsQAF{k70>`bZ$5Gf zpARL+=GZlgIJ_wZz~Wb$z#l;!6D}5z^==d~gMq@P_|(0}_7om58W?y2Wo-~lDUdFk zgFNM$18dQMRU6zhMQrJ#I8yZOkTGI3Ao$myo3REzr#O#({zI^0Qozy%BzVZ3hSG_a z_Cw%uF#z!6=J*848F##NYtdhuYv&VPbZxBR(tqT!Zg({7zSK zI)UHRqMzRZ@A7&Sz=1!OP|X$;Ljms*JYU08=<_piFpj=pod&XgQOUuS@NPix$+}nM z&fwN5&Y|;fD6=62@Hsio%ll$XUq*!MxD_IxV(N3%O?x1xLlq! z=aU!Qc4aJ@;NKa%#u46E4dDqF9>E`jMr5=@mS0m&j*Mu=UYcb)&dQ&us5$4pRRla@ ztGMmnQyglAim^Eqzf>q;<1;%Nc~rnBiJP}sOa-n_@N)_NEqg-{N#D6AjR7dKMDQzE5dnLYPzB#2UgGaRN|e`vDb@p32l#WO zvnI6j3)R7E>Dlgu`)BmdK8m#q58zKFfs(+xp%)+v*JvAD1F$jQg5Y{HTLrbro+p=p z-}1UDo~-z1NU$B?43>7v(6p%`+$i5l%q6nqO zAwaqYIJBLJ)i>+ehZwJp?8|z{n0zb7q!2sGxDJgnS#aG-I5S}mqerIcXMk%a znrjk{-WAXh)pJP&*|qR486fQpvNjkU)I{>WV@<4_TM?@2c;!-#zY^{L2=eo8_9lVp+!fH?2VS4JbOKZ6vO-1a^DIohQPT2l|LiJPHTydxX>A}GeFLu^xs70kSCJVE8#J9iXrJ$GnR z(E48L|7=}`A2lVDV8cRtz_la|Gg6?=>XMGtDJBWSqarAJ$&@6kg0`l!Eo>A(H1Xi@ z+}g8=EtVOXD(Hjlz7R6{VI51RycJ@&!5|#VO=Aop1mLB^-(O2S+gO>lm9WcP&4Zy5 z4lLXZ>CB@7tT3@&pdneDp(}sc1V?VMb-SgRFIqBw9!VUuUZmmD3$m$hOWVu@Qy34J z&-oYoxw^g{+6xq`_pK{^YXyKBOsiXe3!H!E`d1zD=aN6$d}ALTw|>bD7G&S5(hAwPHc_rd~ELLWw#WR-^IXQaLN2hqFS$jnG$PB(dDH! z@ws0RxuZ!heC2q*IrA%*il8fkU-_UO?+QSEzcGjhiR}Vs{GIP{=Tx{yJ7-m##Jlm? zW%asa7J4^J10~E1fgfYEEySd*tex$kSf9}D;No@5GVfCpu>sSPdG2CLHunf2ZEO;A z{UG2w^@213>r(>d(MwO)3MIk7_fA0yI;tEMsoINf2&qDXA5;N?5(aNm^YudZvJ$qR;G?e_l+t*8~%OO_B z=*rvp0tZDw6~Dsd)DpkM=S(Dijn$b+{35sWRm^YmRfbWbM2Qk5N|Y#3qC|-jCCb~9 be+3u-Qw4Eh80&l{00000NkvXXu0mjfeeIG; literal 0 HcmV?d00001 diff --git a/mobile/res/menu/main.xml b/mobile/res/menu/main.xml index 941cd9bc..921217aa 100644 --- a/mobile/res/menu/main.xml +++ b/mobile/res/menu/main.xml @@ -1,7 +1,7 @@

@@ -28,7 +28,7 @@ @@ -41,9 +41,9 @@ - \ No newline at end of file + diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java b/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java index 0d15cc85..8db99742 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java @@ -66,7 +66,7 @@ public class IITC_NavigationHelper extends ActionBarDrawerToggle implements OnIt icon = R.drawable.location_map; break; case INFO: - icon = R.drawable.action_about; + icon = R.drawable.ic_action_about; break; case FULL: icon = R.drawable.collections_view_as_list; diff --git a/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java b/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java index 3ba21fa2..3b330757 100644 --- a/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java +++ b/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java @@ -84,7 +84,7 @@ public class ShareActivity extends FragmentActivity implements ActionBar.TabList addTab(intents, R.string.tab_map, R.drawable.location_map); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(getUrl())); - addTab(intent, R.string.tab_browser, R.drawable.browser); + addTab(intent, R.string.tab_browser, R.drawable.ic_action_web_site); } private void setupShareIntent(String str) { From aff4a9f9f98f3b895972d57efcbfbc29dcaa1e07 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Tue, 3 Dec 2013 22:12:25 +0100 Subject: [PATCH 024/109] drawable changes part 2 --- mobile/AndroidManifest.xml | 2 +- .../drawable-hdpi/collections_view_as_list.png | Bin 1386 -> 0 bytes mobile/res/drawable-hdpi/content_remove.png | Bin 1285 -> 0 bytes mobile/res/drawable-hdpi/copy.png | Bin 1373 -> 0 bytes .../device_access_location_found.png | Bin 1784 -> 0 bytes mobile/res/drawable-hdpi/drawer_shadow.9.png | Bin 171 -> 0 bytes mobile/res/drawable-hdpi/ic_action_cc_bcc.png | Bin 0 -> 707 bytes mobile/res/drawable-hdpi/ic_action_copy.png | Bin 0 -> 375 bytes mobile/res/drawable-hdpi/ic_action_group.png | Bin 0 -> 769 bytes .../drawable-hdpi/ic_action_location_found.png | Bin 0 -> 638 bytes mobile/res/drawable-hdpi/ic_action_map.png | Bin 0 -> 799 bytes mobile/res/drawable-hdpi/ic_action_refresh.png | Bin 0 -> 677 bytes mobile/res/drawable-hdpi/ic_action_share.png | Bin 0 -> 561 bytes .../res/drawable-hdpi/ic_action_view_as_list.png | Bin 0 -> 307 bytes ...ct.png => ic_action_view_as_list_compact.png} | Bin mobile/res/drawable-hdpi/location_map.png | Bin 2077 -> 0 bytes mobile/res/drawable-hdpi/navigation_refresh.png | Bin 3138 -> 0 bytes mobile/res/drawable-hdpi/share.png | Bin 1606 -> 0 bytes mobile/res/drawable-hdpi/social_cc_bcc.png | Bin 1915 -> 0 bytes mobile/res/drawable-hdpi/social_group.png | Bin 2075 -> 0 bytes .../drawable-mdpi/collections_view_as_list.png | Bin 1253 -> 0 bytes mobile/res/drawable-mdpi/content_remove.png | Bin 1138 -> 0 bytes mobile/res/drawable-mdpi/copy.png | Bin 1321 -> 0 bytes .../device_access_location_found.png | Bin 1409 -> 0 bytes mobile/res/drawable-mdpi/drawer_shadow.9.png | Bin 158 -> 0 bytes mobile/res/drawable-mdpi/ic_action_cc_bcc.png | Bin 0 -> 497 bytes mobile/res/drawable-mdpi/ic_action_copy.png | Bin 0 -> 288 bytes mobile/res/drawable-mdpi/ic_action_group.png | Bin 0 -> 543 bytes .../drawable-mdpi/ic_action_location_found.png | Bin 0 -> 460 bytes mobile/res/drawable-mdpi/ic_action_map.png | Bin 0 -> 603 bytes mobile/res/drawable-mdpi/ic_action_refresh.png | Bin 0 -> 492 bytes mobile/res/drawable-mdpi/ic_action_share.png | Bin 0 -> 418 bytes .../res/drawable-mdpi/ic_action_view_as_list.png | Bin 0 -> 246 bytes ...ct.png => ic_action_view_as_list_compact.png} | Bin mobile/res/drawable-mdpi/location_map.png | Bin 1648 -> 0 bytes mobile/res/drawable-mdpi/navigation_refresh.png | Bin 3033 -> 0 bytes mobile/res/drawable-mdpi/share.png | Bin 1341 -> 0 bytes mobile/res/drawable-mdpi/social_cc_bcc.png | Bin 1522 -> 0 bytes mobile/res/drawable-mdpi/social_group.png | Bin 1594 -> 0 bytes .../drawable-xhdpi/collections_view_as_list.png | Bin 1446 -> 0 bytes mobile/res/drawable-xhdpi/content_remove.png | Bin 1348 -> 0 bytes mobile/res/drawable-xhdpi/copy.png | Bin 1438 -> 0 bytes .../device_access_location_found.png | Bin 2204 -> 0 bytes mobile/res/drawable-xhdpi/drawer_shadow.9.png | Bin 182 -> 0 bytes mobile/res/drawable-xhdpi/ic_action_cc_bcc.png | Bin 0 -> 925 bytes mobile/res/drawable-xhdpi/ic_action_copy.png | Bin 0 -> 350 bytes mobile/res/drawable-xhdpi/ic_action_group.png | Bin 0 -> 1067 bytes .../drawable-xhdpi/ic_action_location_found.png | Bin 0 -> 854 bytes mobile/res/drawable-xhdpi/ic_action_map.png | Bin 0 -> 1022 bytes mobile/res/drawable-xhdpi/ic_action_refresh.png | Bin 0 -> 876 bytes mobile/res/drawable-xhdpi/ic_action_share.png | Bin 0 -> 666 bytes .../drawable-xhdpi/ic_action_view_as_list.png | Bin 0 -> 353 bytes ...ct.png => ic_action_view_as_list_compact.png} | Bin mobile/res/drawable-xhdpi/location_map.png | Bin 2510 -> 0 bytes mobile/res/drawable-xhdpi/navigation_refresh.png | Bin 3219 -> 0 bytes mobile/res/drawable-xhdpi/share.png | Bin 1780 -> 0 bytes mobile/res/drawable-xhdpi/social_cc_bcc.png | Bin 2310 -> 0 bytes mobile/res/drawable-xhdpi/social_group.png | Bin 2541 -> 0 bytes mobile/res/drawable-xxhdpi/ic_action_cc_bcc.png | Bin 0 -> 1384 bytes mobile/res/drawable-xxhdpi/ic_action_copy.png | Bin 0 -> 464 bytes mobile/res/drawable-xxhdpi/ic_action_group.png | Bin 0 -> 1475 bytes .../drawable-xxhdpi/ic_action_location_found.png | Bin 0 -> 1148 bytes mobile/res/drawable-xxhdpi/ic_action_map.png | Bin 0 -> 1529 bytes mobile/res/drawable-xxhdpi/ic_action_refresh.png | Bin 0 -> 1248 bytes mobile/res/drawable-xxhdpi/ic_action_share.png | Bin 0 -> 969 bytes .../drawable-xxhdpi/ic_action_view_as_list.png | Bin 0 -> 431 bytes .../ic_action_view_as_list_compact.png | Bin 0 -> 385 bytes mobile/res/menu/main.xml | 4 ++-- .../iitc_mobile/IITC_NavigationHelper.java | 10 +++++----- .../cradle/iitc_mobile/share/ShareActivity.java | 4 ++-- 70 files changed, 10 insertions(+), 10 deletions(-) delete mode 100644 mobile/res/drawable-hdpi/collections_view_as_list.png delete mode 100644 mobile/res/drawable-hdpi/content_remove.png delete mode 100644 mobile/res/drawable-hdpi/copy.png delete mode 100644 mobile/res/drawable-hdpi/device_access_location_found.png delete mode 100644 mobile/res/drawable-hdpi/drawer_shadow.9.png create mode 100644 mobile/res/drawable-hdpi/ic_action_cc_bcc.png create mode 100644 mobile/res/drawable-hdpi/ic_action_copy.png create mode 100644 mobile/res/drawable-hdpi/ic_action_group.png create mode 100644 mobile/res/drawable-hdpi/ic_action_location_found.png create mode 100644 mobile/res/drawable-hdpi/ic_action_map.png create mode 100644 mobile/res/drawable-hdpi/ic_action_refresh.png create mode 100644 mobile/res/drawable-hdpi/ic_action_share.png create mode 100644 mobile/res/drawable-hdpi/ic_action_view_as_list.png rename mobile/res/drawable-hdpi/{collections_view_as_list_compact.png => ic_action_view_as_list_compact.png} (100%) delete mode 100644 mobile/res/drawable-hdpi/location_map.png delete mode 100644 mobile/res/drawable-hdpi/navigation_refresh.png delete mode 100644 mobile/res/drawable-hdpi/share.png delete mode 100644 mobile/res/drawable-hdpi/social_cc_bcc.png delete mode 100644 mobile/res/drawable-hdpi/social_group.png delete mode 100644 mobile/res/drawable-mdpi/collections_view_as_list.png delete mode 100644 mobile/res/drawable-mdpi/content_remove.png delete mode 100644 mobile/res/drawable-mdpi/copy.png delete mode 100644 mobile/res/drawable-mdpi/device_access_location_found.png delete mode 100644 mobile/res/drawable-mdpi/drawer_shadow.9.png create mode 100644 mobile/res/drawable-mdpi/ic_action_cc_bcc.png create mode 100644 mobile/res/drawable-mdpi/ic_action_copy.png create mode 100644 mobile/res/drawable-mdpi/ic_action_group.png create mode 100644 mobile/res/drawable-mdpi/ic_action_location_found.png create mode 100644 mobile/res/drawable-mdpi/ic_action_map.png create mode 100644 mobile/res/drawable-mdpi/ic_action_refresh.png create mode 100644 mobile/res/drawable-mdpi/ic_action_share.png create mode 100644 mobile/res/drawable-mdpi/ic_action_view_as_list.png rename mobile/res/drawable-mdpi/{collections_view_as_list_compact.png => ic_action_view_as_list_compact.png} (100%) delete mode 100644 mobile/res/drawable-mdpi/location_map.png delete mode 100644 mobile/res/drawable-mdpi/navigation_refresh.png delete mode 100644 mobile/res/drawable-mdpi/share.png delete mode 100644 mobile/res/drawable-mdpi/social_cc_bcc.png delete mode 100644 mobile/res/drawable-mdpi/social_group.png delete mode 100644 mobile/res/drawable-xhdpi/collections_view_as_list.png delete mode 100644 mobile/res/drawable-xhdpi/content_remove.png delete mode 100644 mobile/res/drawable-xhdpi/copy.png delete mode 100644 mobile/res/drawable-xhdpi/device_access_location_found.png delete mode 100644 mobile/res/drawable-xhdpi/drawer_shadow.9.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_cc_bcc.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_copy.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_group.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_location_found.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_map.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_refresh.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_share.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_view_as_list.png rename mobile/res/drawable-xhdpi/{collections_view_as_list_compact.png => ic_action_view_as_list_compact.png} (100%) delete mode 100644 mobile/res/drawable-xhdpi/location_map.png delete mode 100644 mobile/res/drawable-xhdpi/navigation_refresh.png delete mode 100644 mobile/res/drawable-xhdpi/share.png delete mode 100644 mobile/res/drawable-xhdpi/social_cc_bcc.png delete mode 100644 mobile/res/drawable-xhdpi/social_group.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_cc_bcc.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_copy.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_group.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_location_found.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_map.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_refresh.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_share.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_view_as_list.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_view_as_list_compact.png diff --git a/mobile/AndroidManifest.xml b/mobile/AndroidManifest.xml index 874ec60a..ec9dc817 100644 --- a/mobile/AndroidManifest.xml +++ b/mobile/AndroidManifest.xml @@ -99,7 +99,7 @@ android:enabled="true" android:excludeFromRecents="true" android:exported="false" - android:icon="@drawable/copy" + android:icon="@drawable/ic_action_copy" android:label="@string/activity_share_to_clipboard" android:noHistory="false"> diff --git a/mobile/res/drawable-hdpi/collections_view_as_list.png b/mobile/res/drawable-hdpi/collections_view_as_list.png deleted file mode 100644 index e45ea1fd95e1358024f67772968143164462c87c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1386 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi)(#YA^#MRZ*$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1O$kUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnrq& zG!Lpb1-DyVaO%|uIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1zu6S6tl7WHoj;D)b zNX4x;GxvKPaS%ARxx89VJxP&6Eb4~Fin&Y8%J#Li7H#ddYv@nVOj`WNxMS}RK6Ng! zuxbAslP7iGKOl1=G4Wd(+o89I)_a$IzkSAhre{p#G|##2$}4|%FfD4(Sn%v{_>MA3 z9Y*#oMeh^dRbQAawt;ik9*=lKC65C$+Zc9jOIA6M-6G%{qrt6Fuc-H6eZ|y!dscO} zo8K1``yi`yh`p)T0YddvTarCi6fsMI2}Ba zIoEei-2ZtVb?ppa%XVqxeG!;&4Qwk$7adUDtz z^=~%miGogBUPcyZylLdu7Phuq8Q%JDN#IrHsb+~^z(G}b6Mw<&;$U$7x5hc diff --git a/mobile/res/drawable-hdpi/content_remove.png b/mobile/res/drawable-hdpi/content_remove.png deleted file mode 100644 index 094eea589246b46e26d3cf02285f26c1abb33700..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1285 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsViu&CG&eP`1g19yq1ObbUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnqfX zG!Lpb1-Dy_aO%|uIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1z-u2mO3IhXUxu=U` zNX4x;5!QK!97IeyTqnMNpmcm8%M>G3-WWwz*F`c-$_jIgzI(VH*9}NfITIn}t^Miq zt^CxuFJV%VoA!QA+cW?BwdPGa!e?_6*v>Ra8Zf6F;K|54eBit62Bu9MQAS0(7sOrV zFmd6sVXA&0TEJNQze)M|Ji|-NYMq;OBp)a(&?%=8T3fK(ZA-OjPsrn-ICl#d^bMbWd5M3Yv*PdK6^%G=gKVBqt7Qj zN)BD@+%+et!bv%QPyM^iQh&ccXS^D`V!EqMm&!fysN*xMLvxC}Z?AaevTWCsfY>uD z^_GXqXN1UWzHe-uzC=arVY%9>ll3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVip(a_b<&Bf8w$-u=B$h0&uv~)Fba&~kx zH8eMIGKA@M$xklLP0cHT=}kfCb;79^lo)agfHu3N7G;*DrnnX5=PH0bZIy}JEfzS< zgX&Ge?G{U%di8;h(Fa8>QdGl)fawRsgeP1e2cGm(^ML8S2$-;$RILs%Ffg9?ba4!+ zxb-F~*6WCYfZwWj{5!OiAx%f8IgnHIH~}KKm}*SHX~a&^=J(ZtGRE za}PugU&?!}7Hn?CEPuEC!jscA#*=-*rISNWh^;)}%fZ3u9=%3N;P^*1n{6Fy-gjJY z;3;615aacjbflL-w@&=RqLVe+2|N;01Pi_~_+Hw?p;Hl6ljRw)*|Q^MvS83H&Bu;b zxxeOaJl2r9<8yw4^MTdP>IK5n7~LC0Z%tUi$+WZAW4qorCJWWbea!P_sZ6*nl#uN9 zcM*%QcbDyftb;S2uX<3X*wB4H`J7+v0abCvyAEYt7OG36PWZLWW^gaNwfxNyxg#<+ zGgX!cDjMV;e<{hseTk2C^UN8q{~&jPu9-uYM48>YM#x^sP|Xru$*xz`&4^G@_OZZZbloUFQV^{@4tPj l@l!anq5{jIZT^gG3|ppF2!DIDbn2{ diff --git a/mobile/res/drawable-hdpi/device_access_location_found.png b/mobile/res/drawable-hdpi/device_access_location_found.png deleted file mode 100644 index d7fae7e988bbaa7f6d6f51e27738e00f7818b1fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1784 zcmaJ?Yfuwc6b?j!Xrd^Hh$uV3qKHX$dBqKcM-oufPzWg~Y9%BK1la7dS;#}BfLaHn zRTKe>wkirLD$Y2HE%5;kYDE~pS3yS+5Mg`)RVrhVZcwy8N_S@W-h1YJ-}%nt&gMph zFJnz{nnI(|SYgX0GHM0Q?_>t`jjd68b3?brQ0ZND>$DcsiYqtMlSwL?RD@VVDPc@;p5`lm|y^(2xo}N27HeXOJLT zC85SiHKqZ~jEZ@-zI1l22=9I=ArPBX*MbXdRT2h95 z(fgmoTDbv7crrwbr4vf3aS5*GP`E%$APN#AJZ!aHtQ&_ZC6p zSP7;~M-dG+ZNe+_)%k}Lq_BEtL1>0Z4+Wno{ z4@U1eL`J&QTgOfce(rK`){0HQxsXE^vz_>P>yv$RUWT{q-MN=*FP9vxjOCxs&)IoR zv?Sz(%>7 zR)5W+8XIS87@u>?fLax8DeC|y8`G>lQj3)12up z!Hi7=0sbOBw6%Xg2r$mKj$XZ@+B`2t#W2yu9l7!i(e#Y$+i`xZeU^LTM8p9`Gb7d@ zu&LjW?a^U?SxaqZ#?6_P$qen~me(&nWl>X`>GX!Rjvj-i0L(Mlpude<5QCYO@WY43 z7kdunFF=x?$KTJIWIdmrR_e(dnpbvGa-7*qE8BnZlI2SgAQD-%zm2@N2ubNHtFab! zIP}u0YvCQfb=A|e=f!<>d9wwtmi}tiIcAP4VAUC`*j`@0e%-4X&8o=9Q)O|^M{4Kp z?y0taaBSpohdZL{>pim3?z;Xb|IRe`;`zI}her=oG`qwPt}Q{0g_k;sjmz7hYEkap zg9q}ad!#=P3f$Z1u&V$m%^WId0Fi3#lIyHLZp_WtedB0pdKO^?=~Mx`xQ}7h0-YN@xoW*XoejJ{|VG$kL9kxU+AN zx8I|xcPH(V`HLBjt&ej5l%G&IvcpXl>*<#3wmDmqUb={tKb|gnc43Vlm!v-|8x&o! zz!{RljQDHiwNo0eD%;uL=HacUwW(Vwv4$-7`qz(g9-EH+-5OxK!bB_esq3hj|xe%#kn|HMPQy{6O_i+#18y9^iY!ZsiO`J1iTDTb!1!)a9>Pu3i5z8Zb; z4cDo2Ahuxo+Nna$6dhb^`^3$$vb&;w+fA?Xg7^EQP4-o{S@{cCzwLSU!KFWP;7qCA y({c+pr7@6S<#$#-QgJCc=x){t3xqQ|$&t3>*3c2#xpyMX|Dv#vaLH*=T+Tl*{jMtj diff --git a/mobile/res/drawable-hdpi/drawer_shadow.9.png b/mobile/res/drawable-hdpi/drawer_shadow.9.png deleted file mode 100644 index 224cc4ff43a29c546ae50c654c20c58c2f4cdb75..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 171 zcmeAS@N?(olHy`uVBq!ia0vp^JV0#3!3HEVSgovp6icy_X9x!n)NrJ90QsB+9+AZi z4BVX{%xHe{^je^xucwP+h)3t!Yl?gg4m>OeUfNFiFU`@U5Xr+-Y2h+^&Fz!7ypldm za#4)fkaYOplLMWvd)czen2t>^YG&h=GRe5G;NW`))xgl;_^?U481>l1!)FR53IYvg N@O1TaS?83{1OO&fGZ_E? diff --git a/mobile/res/drawable-hdpi/ic_action_cc_bcc.png b/mobile/res/drawable-hdpi/ic_action_cc_bcc.png new file mode 100644 index 0000000000000000000000000000000000000000..3c6eb02bdccce23797a391e44c5d1665d3f79e90 GIT binary patch literal 707 zcmV;!0zCbRP)0PZ1o+(7Pu0-OS9fC8WZ9V??(+?07u3=_jVq!_=0>E{Y<3*96FLHaelvzpx~u@k&JYcSnGXAJWgvaQT8r ztnY?^rSX+WL=L3EdTwKiwY((*c6h!Ldbh!oshpyUhO?HZG&&cS9B3@bh>X_qx{>7( z8+v!{g@C0&CqpWdcr=MlO^?Pi2K0_5LzY5rric+{OVO|}zE|NE86&)#`Un&ai?vCO za}x5xDQW!)0c6l#jdOamM;8gpDVi2~tP74uL0F?W(;^|BdG}@=8Oni` zAn~gafq{v*3c9fm(#%2W@Q9M${&We p=*Ti3Enq-EKtMo1fWVgk0{{Zu2R=XbeIEb-002ovPDHLkV1nIKI1~T? literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-hdpi/ic_action_copy.png b/mobile/res/drawable-hdpi/ic_action_copy.png new file mode 100644 index 0000000000000000000000000000000000000000..f97df1d51e42e97e1c289984f0c20f76da0f9cfc GIT binary patch literal 375 zcmV--0f_#IP)+7(pa7{!8lV7Efd1n#!w17agph4ZAX;2(hr+_;o34R_ilq@F-JJ86h6K0eI3^<0I3M--iR6P#{Fe3 z?zAKVBHRfsq|Sw;xf3J=0!U)d;3RC;hr4CloQo#F_*fPnBR&E=!>`^xXHyayL(ar2 z4HB}ofrMg8$eSCjB_Sg=0$Z057BWa^f`pFzxXwA;GwCuKf%e2ySY)#2a-PwpNgS^g zLrJJ=Zxe7H@D+if8EwLzsUXnajFkhqAc6pnls$Js1pbZyEs%`ppML-VD8W~N0RU|A VUEvzg=U@N;002ovPDHLkV1m9pl$8Jg literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-hdpi/ic_action_group.png b/mobile/res/drawable-hdpi/ic_action_group.png new file mode 100644 index 0000000000000000000000000000000000000000..d043de6c84df9ae7dd99078d8b0df1ff24c10a2b GIT binary patch literal 769 zcmV+c1OEJpP)@Od!`CKOQn{(-NxM+M(QV(40d<@yQ(^h z0s;a80s{VH#6Fl_E|(!ahRW+Aj^pBP4Iria^q7G9nq?)?8xt8*-i-mId_s>U(ZF)c znJ6P8j{n>MD8DjzJu*aN*42pELE8MeL3wG!bC-1Lbqqk(LHP)KGj9<Ob3g!lZM+kHU z=4I*;Idrm)z{Hq$aeQh~GHoybPZK6>3`p*9YDj!kA(!LFP1UStsLxH+$>m&ASVX;6 zrw7gA11i9ta&xXRqD0xNFmEzkfh-hUF8d_wm!{Kipi`@mZiqgJ7BakC()b&GZ?T5y zwI%-*_H6~PS6OX1(nRl-yjG12O6Q_B7w{TapB;H?fmB+FZP)h}%JZ5L{_;FjzyWo# zI6A*|<3?;DEK$3o9Kh&%rj$6XK+#{Sy8?IFrL8P$1Bg+I{Jwe{9w{-qr0AT?cn$AK zk5&infPE);bEvG5QJmrsAK(C0))}()jRp|Isd6}*z~0`%=**(Qu`)|m1|ve=LKYjb z)*4Wg(@kY|r)mNvR1UW7`L2a=23s*jRR9}1+02VX9GMbf3p$2mdd9dm1m3~!%qY-w+te`I8zkH&Le;d;amCZ?aXus z?vg@J(f7ex)s%uK)u8lD$g12x8{100000NkvXXu0mjfHPlst literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-hdpi/ic_action_location_found.png b/mobile/res/drawable-hdpi/ic_action_location_found.png new file mode 100644 index 0000000000000000000000000000000000000000..4748e9016541f3bea4390d244691291d8237f851 GIT binary patch literal 638 zcmV-^0)hRBP)s?JgKqcTp>z z(vLYXJ{^PSbC55T3}e4{p5PokKfkx}DN&w|y^c8MZ7MaK*f`ArWSb96Mn#ExW{jfG z1jIB(C2Ik5DrQcGw5t;PRl-ivLKYJyIWUI2!6##k5Aa`xV@w=K`w_dW#9P7~XU6!X z#~O+01g=#YI_x@tETfB5-Vru^k>DH(z2;KFXp$4q3NH-LCpYA8Vw^&aIS@#?SV=FW zcfan4Zz;GrweF+f6ljQEx{70TC1kRD^z&E9f+n+KuKmNc(?_HEdXZAx0GuFXPJT5jtsq$}tGyGn}UhFvb0PIY1EvgZI6n}#bk*d9on;93g3 zW+S<^Nt0L?o7gNip!C?&i2}!R;rXjb&c2zOd^;_!19*omNhl4v(2&q6hu)9Jyi(r$ z{5bhb{bN6?%;I6IU;qFB07*qoM6N<$g3uWk2LJ#7 literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-hdpi/ic_action_map.png b/mobile/res/drawable-hdpi/ic_action_map.png new file mode 100644 index 0000000000000000000000000000000000000000..945cf8ced081640a0145ce7abfcc1cb560b61dc4 GIT binary patch literal 799 zcmV+)1K|9LP)H}aOy;cI^)`cHa9xH#R#F;iZjElKom-Dxb_NAeC1EIS2qO zw!s9uF4m!Ezw!oofpY+ zfJ1>s6<9Hso}SWqehZIZV27ACC)&FOT6SjlU+P4+l4xJD0sS|8nD(ccqN!df12SzpmvT<_1!2~ zl>^WU&-~+k+I;P+nOmV6zo|~rcsaKYC(VoO{tut!VeCrmir+mL$3?5s(g#Ubi1YlxDwYPFM`6` zfab8UdB}%GGtJetNGNC|KVnp38PL@IkK!4=WRx*NNNS7p6pB|K{gXccZrrfKN+FxB zOUh^Qr#OT*dSKmGSu`Gs-BV d3|W2)FaZAI0XaE>$1eZ?002ovPDHLkV1lSgYtH}x literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-hdpi/ic_action_refresh.png b/mobile/res/drawable-hdpi/ic_action_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..00d70792ae974ed4bb4360104bc4ba98c881ceae GIT binary patch literal 677 zcmV;W0$TlvP)?aoZsX z;_5`g5&-bZRbFeB6zB#z5J|*E6{&DR+yMRnwgnf+Ykoh5Y2_R()FPP}}nQlUriVO$9PRvKULEWpn-@I^zO&uj=JOaL2$ zKmp(okNJ;!Y-lv=^r zeb*CcDkXMI@DgPzmG|e|lErs#v@vU-Je}6K;<~Oa<0L5!05h0ojHQ`2OGf;Z81zCdG{`V*|&?uIV{x$#+blS}N{jc~^WBTfz$cSH~u`U8(u ztJ=lACQ5|iJ_>Yc6QIEq6WA87{x}Erin`%rbpPn?2wXdXZvh4X%CzC5ieaIg00000 LNkvXXu0mjfd7mm; literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-hdpi/ic_action_share.png b/mobile/res/drawable-hdpi/ic_action_share.png new file mode 100644 index 0000000000000000000000000000000000000000..d52b66ab6fa7663ca10f8f5a06d596915afe34dd GIT binary patch literal 561 zcmV-10?z%3P)0{IFc6LruNj~WzyevI zeTTjm-m^gZ4h)dKw*!;`=m24WERX@n03IN{lde)^IkC-;eNp{MRs=qx@3TMq&L&AB zA|fI}LU16_bzKUNC4Fp!5ONX%fcOF)J7}5G^#iT65h4PT#}WU8mJWm<`7MaJjJ;PihA(jTpsm?lt4y|(@L0?ts)rSG|E8S2l}E}KHklZ`4{bvhvbvEV(d?}a2s0rkCNg9xBJ&{&q}4Oa{84fepk z1KaZejqG;7BDhPv+GOL&|HTv$5fKp~)nR$@6*?@;(_N9Eb7fd=6)?G9`!7!ICt%-G) z8@osEm2~+n671cZMLu?l$e+A9@zR_*?#w{l3<0Kk-s;nW7S%*8-ZM|JWxCb@^`G}R z6i&~W=3`TB@5I265Zb!$$bvbiV~<_saX2+ct6|E^6fOnsJ`08eR-K!R^!n@9X|>;L zlw)UzxPBt}BIZ>ih*3+i*NMz)ri$V%{3L9VYZSmka@Xu=F$|Ikf z=6-)&(hhV&fc+u<(Ddp2GVhw*?SKwikhh0bg5iglexmSd8$XZ}Jzf1=);T3K0Ra4r Ba+Ux9 literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-hdpi/collections_view_as_list_compact.png b/mobile/res/drawable-hdpi/ic_action_view_as_list_compact.png similarity index 100% rename from mobile/res/drawable-hdpi/collections_view_as_list_compact.png rename to mobile/res/drawable-hdpi/ic_action_view_as_list_compact.png diff --git a/mobile/res/drawable-hdpi/location_map.png b/mobile/res/drawable-hdpi/location_map.png deleted file mode 100644 index e5907072f04b90d4119892dd0b37ec3a416e2beb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2077 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 MSl>bq2X&7AABcbM^#A|> diff --git a/mobile/res/drawable-hdpi/share.png b/mobile/res/drawable-hdpi/share.png deleted file mode 100644 index c329f58daae65d1f35d2959a5c2cac0a0cc7d218..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1606 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTC$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsViy$<^4@$kou)$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1OnfUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dPPe$Y z;WQ7bHwCv_3~=hz2RcR{6tzfE4HE*U9}p9saDg0n(of9;ruQOX!cO_L`zQkg(+*D; z$B>F!Z)TqL77dg*mi}kQ&sH|pEN=10#ExwmS&1DJbC-lVx$5Q!HqBnt%JG*ysC&iK z5SFc5!gOz`?A+0~wd;-BBDWBMRFo2ZJ?h$_;_~>Yj3X>4y?O2DIOwwA8(isoFihqz>bHwpL-Ua?$j-u~%8`2-x)myjA zC(328lpj#sz|r&cn$k1T9ZYqZvCPg3WY094ZtyGGQ_d5^Y%0aNrRnj5{>PF(-;2Ds zqTwKxyY;Erf2qn{LA%`;MQh40FzIX*+pfhZ^fyekV+Rw@{Fzrp+>UNmxy=}O)|DEvX7#2~~h>fMxd zGdZ@GD}*9tEx6A$s%am#W9>iS{`#ivg6_>K$9x(KKNz3s-lnubM26*e<=;-bS)1qG zWIWfv{eWSAme?MK?+$9KlKgt)SlVCCZ>zKB%nR_~-*IF|?5U(2raP?bomwZ;Vu5W89YpmiD`d{l1AAj`% z{~Q+gNL?|h*CziAcbxpNe3^1~;^Bv%j1NcHMdv);?&|-iG2YbY?4>g|gH#iG6gOBY z*mFETsIfV3RRmL#yxZZlM-l2qSC_UNOUj$o^n8)X1FhxtEK@GGWoONBbUC_j!s>;Z z`WG&&+0f&eee1@i=u;x6CpZPJ>dJnzYqhp^ncBGvscuehymXptON>jG9+65{@aes} zCh)+ft=bP+bMjJ6xn`tvzGJ_kcDp;@gzJRCt{rB1*%4h!wobb&^!&cj%c+sBiI(qA ze*2|+elMfU%by4CPb+1Zlc4#o+R*C3hR3zizq8KYek3?~{+ui7z@*dJ;BmZ-ftkT( Wl3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsViy+}zE@*wDz-$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19ytk>1R!pY47r(RHE$SnZc?2=lPS(cjOR+OKs0QR(1 zCT_PF;4}}aHwCL(!2U4AsaGH97=2LGB1JV!2$+6AOnAZta^OinH4m8Hi+~CHH=}?8 zFu%O@ba4!+xbUG%Ryv$!S(_y@TtxCTVAu)0pWd-_e*_o&$N1u8C}Q4_?i* zd_Mbs?Ny$`1z(?>e*5a-bmaqr4>$@~ESMhc3YxU%x`+WM54%(ar(DzT1&gh@B{-)w zTP7&HIC_73V^{#YUvt`O{%eyic!@O4P0;wz$iR`S6?VbVs)G4jbM{?N2g4ig-rJ8x zXe-@vTq-K~ao2^23CwLDi@7sceE-ujgn zzL(dpad!geinL?FoL6)Tcx3#hG%Q`v#Xfzz7|-WS^Sh2MGEC187;TuVCzO3S9PQJ2jH?eQ>}q_an*F278yz@L4;Ff$7WhvTs&$T)$GIj3uTt zajm<}YIjrjf#v3oExh_K*xY!$Peh+jd6k=39dOR6g1aWQ*}PdZ>ej2fJSDd`PuMdv z%3!9eo6%9x*56t`+WJ3#wm8SMbjt#p@1_wa9T*tMQ-qt8phzcWK2wE9X-*ePA2w_I#F+S>aioq(}c3&yZ>sY>Ls@ z+;DY!AFF=i=Z5KjFZlR{y+0uQLHNt^*`D|IADp9~{Fu>TdY#_J4~^$frPY4;B-fi4 zdOq(<;G$cZ=Iv9JCY(+v-CSLBpkigJ*exD2Bk59ucO}6Ke*4x2pHPw$+pM+i8Ry&+ zOU_Chm>+#}!%Th49LBp@Qo;>huKv$IpIRK6s?B6m^Sae$$)1PSf>qym_^ghKsNa0W zba`DwlB}+9z>Q#?YSElmIeh`56a0()o*Yw*pZcKIwYa@&63c6WW9^RICPtz6o@^Js znwTeiHnjEY+^g)OjNAw1!s6p2zH$8AoVRMv!dKZXJDn%ox0=I#`vBWfPTg+iz|?TA zNIBy^xrNgWeHd35ZCL*4toQojmbabj6dd})9xRGTNL zGV;G)y!%FDf4u%V?_(}uM-*)Yj_U|ynt7zR?OOA|u8=b$rSxsV&FZBaj$U{pu)y+v oS}8D}$uRaYxI6go`^Ra(V6MA7YX0TRnV{;>)78&qol`;+0G!F_cK`qY diff --git a/mobile/res/drawable-hdpi/social_group.png b/mobile/res/drawable-hdpi/social_group.png deleted file mode 100644 index dbf88a85bc4a268fbae72edf5a7818392e32810e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2075 zcmaJ?c~nzZ9?pmzwke`40y_E#i;83eLQD=zNkTASD25QAwMv#32#~y(JRmGuTTls$ zh(H94fOx=Cfhi)2l_DY$ixO$4EUgF#4l)){a2Jqyp+blic0hsdyq4&ma)|31klf z+24ao^J5SRBo8WK8B2!*2@+5WFJpy&VhJl^^=6RBkjivWE=~l63^^nLmYSxBSJdL? zzarmztZ+pwi0YO4z#(FA`m6n~t6mNv{?RW#7#G=mus$e7{4Pg~jXhXif3!dv z%!>ftwbGDdBjm2G&JXmr`SnHs6;yN2PwA$0cV5h;-)(!4^29CarLG#rr4^qpaep*F z^e9OuIxu`!qsu!AkD4}+e$-wtp6(Fk+|#1> zpNX;h$kN9A2mUo>Pz$E(+=*2M9b zf2lG&V#lV1Rj_I;+_f{s*Z%I5s4}yJVy$BR2J*kUyFPonow?5qX!3H9L3y6APVMN` zgH>m4FL}Os^cA>T8LDx3yTK!B_k7^!z4@eqfU{b{w|(bF&oM0Vzr!jO=eSEz^&$49 zThA&v0fTGQYeX|el>zY`HeltAmZzs8oDy#u+c(CZv)S@}jf<7@rP6n2n}69>kn7{a zC~xEn((o|I(ffkvm>?H)k5^^ zHzx+@X;kg_@ zjN7~_PtVHIrwc}7TFX{7ZEj}5Cnr4NW+ZmcuIb*ow$4$r2AWrH)TZn(^OW^qQ_;iJ z;-4S)+P)HK?Ft8&VV?(Qj%%8J+jg(~h+#!nj1hNlxp}HKy|VjFTK&X2aszjA?N#l< zT8012H#^!kzI>N3Q)u%jr(~OFc5t7MxNII!y>PT{4RY=1zO+z|8)~EAvd%Nx|HaAA zO;C<(YWUmTy0Jz{ys-bDo0~%ZJtXj*-7s}nXWg%A?69A)C9_kle~Rp*3JkD|+lBQr z{Esl1n0cG2gsFy7U&HHp>pYLziJh>Wvs|m8_4@>vP|=ZQXDk>QDWDao6h`{Hk{++J^+qd&zQy?h|F6h`Y9kL`L<)^n%;_Aefyj> zwfmBHrlITCy*e|$^~9B<4gN0Sq=jzNmLZ@FoZp`nsQQ-M1{lmshJ7ub4lqr2buMT> zNgpR)d2lA9$>K>CX0*b6`ZK!=i5a@eiA{Fb>w-%(8Kmy6(6z0P<3+t~K0Tk7rCC%R za{49B`VM1qP(AREk)NmAl6u?bS{e(uhPJ8B_NiL}!yQbr4_r3>^r*{sSv@uMi)*>% zzLxh+(^QcVw!Jm|a31~PV1yUEJy2rb8T&{T*O9x`T&*FS`F_FF+!|MumVVvt6Zl#0 z>%AL+NcX|uJ)cCdWH-l+v@aqO2aXl0n_uy3TFr4*$`_i5`W=!hn-o)I!yUqK3J*%=^D**fgfEJN3GkU-pH^@ahNdy0S)eu&`ry zlv)3lD(Afk>H(wZEvF6C8q0?bs13V^3wjO&!TR4d(?6JAPmTKeKV|b_3IG5A diff --git a/mobile/res/drawable-mdpi/collections_view_as_list.png b/mobile/res/drawable-mdpi/collections_view_as_list.png deleted file mode 100644 index 9c748b0b5c5cf2347e251b57633871f70eab218a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1253 zcmaJ>U2NM_7`YYmO{F zq!nmc8Ku+KX%c9_v^_vIgn+@=goIQHx>BU_!~pF9UMB4cBqTuaFd(#CcTL9w#gcvR z{rsKt{T=&wF1xR}X?GIL-RQII;_Ln#c}gTj-nq^m*E@d=hy1ET@xjg<{i8b>xPq7g-l5YvUQr0H>qk%`z7u(!-&0u|XJEUOcm#g?PQ1}}^Ej+rFjhKoHO zC2l7*DCA&LHxY~ksenZ7rQzOikPcH!nCXHcil#_9L{dEgnqnh8EJef3i@?!Ld6>;} z{AMhCiV~x?ZLlO+DwTqz?x1dtkTkSW}uUmIIpQt1)oMl1#<066UtzdCK7GkEa>_~t&6!)-PWy9-GIsdNRWntC@Gp_*+2*ao6#&=)FhPQ zq6Fp$DvHdem{77i%!eX<6i?GBnhDcPD%_V$@DaKv+(*~2oGwkONV98L`3|;wTdX4n z)xeQCWGc@gnKyM6ZWPTb+vh@U%eRS@x6g&%7E9t}NN2SF8gzJ)P;{6J?m|fhhhL&n1ceZ8e?vJbO7Y;6g=Ir5J4=knUCsrE|^?O!EGU+)u z^j`h1_850{2%c&vmhkI+7yW=)-aYqS`s7S(<<<5TKJlpcM#tB#%kifV_ygYi>w2$2 z)JZq_v&Sxlb7{V%I>TQ*vVQ@{OT%z2y-I~&SdRb1&4+vFzjBv!Z`(!U@L0;#_{%GA zxcx!TW0luWEO)kf9^478SK8mX=KtdSD!(|4dpGI<4XuFv^uQ-S&d*WKk0+DLav$_P GGxHCI=$M88 diff --git a/mobile/res/drawable-mdpi/content_remove.png b/mobile/res/drawable-mdpi/content_remove.png deleted file mode 100644 index 3336760d5f3efdfefefd6899317c3a09264430f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1138 zcmaJ>U1$_X9AA6!D{>-O1V0|eJyDC^?#_9aWVd(G`!pxn5HHtyB?hy%JIO7{?re4^ zxy=>PXrxrIMX-W>4j7>*6vaXxn)qO8p(L~w;Yw*^d=VlMT0s=V*_ewycrNVD%%9)y z_y3&zva{o`zj0e5!!Z7ATPjCa;JxeC(63Xe{7;vyBwZj~xQ~<-8!>SW7ZJ!BN1`DobyYg@YGptbHTGaDh`JILFc49IYYdu>7#po2~Upxm0G^7d^$; z5+Rnv^W}1xD<9yn-Ooc&6nP=UheAP$2s)!CQQV;E1ZoN?FX2>Yem*{mdiv7#=DBeLr(BgssUyB{ZPYLK|3Ue-o*P(VJAOoAwGv3JZ!79aeV>L zl_e!@q!4W9F&?Z{v9p8;c1qX+$*u?ofvl*y=~TfLJTV1#uZ@eRHN^hT;mAAysZrJ&>qq3vt&*SmMxy)?HVwt>5|Kw*#N*A@?K`5dj8%Q7oWF` vOgVUDW_-_uZ1>R1kA7S8{aE&X&*@dne`UUN{`beD-d`Y_?nqrv^qzSISl3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVip(bCPt&DG7+$-u?X(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yuGh@~r(RHE$SnZc?2=lPS(cjOR+OKs0QR(1CRVoq z9pL8TjMF@*-V~f}adpM1S0CsYeNfaQMKw$an0`P^c)|s8;7LC<518JIfC>B1(*$M) z2FBT*E{-7;x88)G^*Zbzkhf{&+KF7Owv`$$w4XTENZ7tQdi;apmvC! ztessOoGlLSTFTFu>Fr?^UUBsE^omcnst+laspUH_IPfg})Qk=DX1n>s2bvpw8(i`siRduQIC$tl{|rt0gm?8$TChdcS1rn%fx z_;7PN(`=@^#$Soqj>~rH#vXIH=+?TznMrY7y4JB{wOR+x`LqW$G=G@*;g`A9BDY_6 z!^9S}zE~8;@!gJ#Wrx$8)Bb_ay(cpBc)i_sK<58_*NdNm7C7uP&)zj#;Om2D>ir6? z{^Ct1L|j(wOH#-$(T{#q-t+jvl*c<(XJ;fgB|p5g(X)49(gWuOVzv$0?;;pm`5E7} pth2Qbk-O&iuYL}n?*s1!Mh2^WiB8;)*Ixn^UY@RgF6*2UngHK1)U*Hq diff --git a/mobile/res/drawable-mdpi/device_access_location_found.png b/mobile/res/drawable-mdpi/device_access_location_found.png deleted file mode 100644 index 9d1f4403a931ada4c33f5fab6123e5869c913804..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1409 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVi;#m&XQ(Amh;$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1PCvUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dR=1d2 z7#ld@HV>*d1*==YdQEV;MIY!GeNfaQMKw$an0`P^c)|s8;7LC<518JIfC>Bek$Ykc z42+*WT^vIyZoQel+n>o%;F#rsQ{DVgCIY%VT)kpWN@80)lDBNxa5O49xx4p&!_>8N zxx%*HkWl`?W!KcXZHB}OfphOCy`Q9eZujGNPq=PAnf~VNxpREGt&O{vXmp)F{p@?? z9X39T(ggM=b0s*eN)qI1sE&$m&fqgi_cyPQsBsO$y@sXGly5loZ%`i^W=D!m+*6CGK@7IHvwg6@mc zSJoD+Te$D0;EKQ^mSYF3GJ@ooA`Onew=Q6l`ZMjIp>j&|^sCndQw|7waBZ@%U^o5X zku~Kg>t2!PX+75rxDU&$_;e_9e~rA$0rB!BC+k|06<-r{1ycWsY{OZ~jAYF#(gZ}r-4r>|^` z>A9nETKbLh*2~7ZF9Rj2P diff --git a/mobile/res/drawable-mdpi/drawer_shadow.9.png b/mobile/res/drawable-mdpi/drawer_shadow.9.png deleted file mode 100644 index 3797f99c0ef9f657c2b0a1f84a4d0f16cc8ee5f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^96+qZ!3HFgEN0vWQY^(zo*^7SP{WbZ0pxQQctjR6 zFmQK*Fr)d&(`$i(4xTQKAr`%FuWaOOaA06QaQd;(yN7D;?7i2paNm#nvBfgTEqd~o zcU{8lWjX#P6K=BftS@S075ic65$zclza&>r_mjZQ`zwzw1DeI)>FVdQ&MBb@0Ae69 AivR!s diff --git a/mobile/res/drawable-mdpi/ic_action_cc_bcc.png b/mobile/res/drawable-mdpi/ic_action_cc_bcc.png new file mode 100644 index 0000000000000000000000000000000000000000..8e6d3ce97698f2caa6f14d8bbbb48597b5ef8148 GIT binary patch literal 497 zcmVPBc|F1g9Mi` zb2JYGjs;iZK(-v%d5)P$CXj-hdc474$|}|%a87PPA}qw{XLynP83Wjkser|L@eEmx zW60lbacWw$uk%fR>@hqb$%z8hjw7nbx2ESpOnY||DW;$~l4KB_BZ3=+)gcbTJapDpOgi48uyb=jJMhQ8%-<8mw}1B}lL`^GIyu{P+L=d~uJJff?U)-Q13yZxPw} zK!82cZn6{m66TMQPF*wDthgdLjtMF+=G0_kTKt|TRMx?5mWTVLbRP}h4FZ`OXD=Oj z;Lp6pPncPb$yuLk!9gw7B{dgX&ND53{^kS+qs##b-TV2BZ6`JhiZX4;vC2NOtnp$@ z!yN8;%+ATip-v4~e$CZWWH@_&bH>Yt=o7r$yV@DHJS`G)Kb@AaxZzf2(t*v2%Dhrb jMM^{581FJVG%zw)oVE9#d@EfW=o<(h=4_*_cmUWKadIV2fjD*mm~pPnI2f4x8-&&|j+rBe zwF7HIn?=von?@lFw%f6HU@G}h%+gS;d`_yZ(Vm)1R^W#QXKQT?!Uf=!bce%7eo8d6 z6o=#}m~cwRbLBg9qa=Dz;zY<{9svksj|wh)d%<{Ymq|0SZ%jNv`iRR{;!L2$+3O_b z>rarDEznC^O%UjW?yO-hix literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-mdpi/ic_action_location_found.png b/mobile/res/drawable-mdpi/ic_action_location_found.png new file mode 100644 index 0000000000000000000000000000000000000000..9251ee49676d56bb11f7461d33765db2c6697415 GIT binary patch literal 460 zcmV;-0W$Skg#=U0@bKgzejh)4?XUb=IJOWD~wwBL84t#}SSPdQkoQu;8kRZgt5h%GF z0SmRZK@j_&^?Ws>s*a4(=I#oHE(4?38jG?5k!VW&w&axZ&nJE*$sc6GFfSBEGB<+wmt#fP` z*V{};YSj!^_GG@RZ((z1dIg!;{wXHB%7BhgnusJ5sBVv2Y!>R>^uvp551h$xM)ocG zm8G+w4d*5lI-QyE;+${jsLA=O;(~>BF4-LohoYNsC zy8zp+$MNVF65rD76wCe3JE8BbxS0N&OyVm)0t^5Eks>mBk2KK$0000puTGX@}5ut7GMK5a0NgCmv{4RW-oKOx#dulWG2~}6_8{1+n@Uu9+DrH zhd&QM(a-sO9^)_@*!N*H8r6y~GU#Gp04L}d04oNn@9cO2O}~}E5skDg@97=o-s6x< z0Io4e{WFJ7xs(mGfIdRsp_Q||2{vKCXvH-us8NJ9Q%+~X05k(2T{%nL<}RWDV0g|( z=)noDOMs{X7%Twe)b=JkU>n51@v{&;t*II4*lS{QF%JZUQdQE45PixSXn37rK=l8% zFMxwocTX~QxDxI+yyoH(P~Bssv~c%wz_BgI(q^(V07QR;7QDUMqHnvWEvdoQ&gqR~ zmtFA05oS22Xm$k3FOzeg3v9Q+bG9Kj45o(7XbCbWLOO2o(3(5nW~m~^WY#Q%KB~N| z)_uk?al)H4)dD@R>%#+Oz^I*GNuXzHk7DV1ij3t~0ie1;*B3_Rf;)EEez94Qd+he& zG*n0`E|cc$r5(9MWI_vo46b3U^&J8CPXJA{-7rui(0AGufOWo%MDBvnk&(R(@qn}o zK1rji^A^V`v+AofEtL>W>F)a;GK;-ys+N?R8vxKAQJs9|RDnUXzvC-m?w3LZ=6s$E pD9Rz4V&LzBCixBW|8e>uzyLe@v9}u|4I%&l002ovPDHLkV1j%h3yA;# literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-mdpi/ic_action_refresh.png b/mobile/res/drawable-mdpi/ic_action_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..c2920a7a04e069523bb7ba7578f5e282ca0b4615 GIT binary patch literal 492 zcmVg{EnKz99 zM&01z)Ow6GLNNM05uT?J5WrnJUwK+_?jAh#Wad3I13LolBCY^fTI|^a9=-(-Q2|3i zz@Grz3Uf=`d!MOC(I^C35>XA{2W6Ww5kNTs+TLg2pXlwHdT}SbFUa%$8U%RNuVzva zCS(uoOi8{c1zPj0i}7z#H^fiA+a8<|KQ+w|J!;lEtS>} z%nxdyVU^6u^?1~Lt+={SBa^q_$bh6S*!fg1lt70W7+W$*>*-ROvU%gBbgq1#T}H8@ i|KXpDoBf7;3ormMYncI1h z03DzUz`Y%S3Cg`0puLw4zyd6g1v)?mppNvA5K2IR!=*&BB9b_M4$mLY+sD5T-^HbE z+a763@%iD0hYdhI zqEiq@GLY060Aca81~)WE-Uv50}1B}lL?PH13MwmbR%|Nrw#x>S35Uha4j!STX$ zSt*ABZ;1%c4(5oCkm-Cq$2TvL;PJ6v@M5;7F8di4DT_^u7l?P{Pt4dRB_JMrnsJ}Q zpP4S~AA*couCQ5gZDaUoEOd4nQ_}pz$sDz8w-~pd@M+1qQgk3KD%IKP>PJbf(Bo>0 sr(VoRHA%UAAhIpcfUC`#fy017>at4Mx~uA6fo^2*boFyt=akR{0BOxw)&Kwi literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-mdpi/collections_view_as_list_compact.png b/mobile/res/drawable-mdpi/ic_action_view_as_list_compact.png similarity index 100% rename from mobile/res/drawable-mdpi/collections_view_as_list_compact.png rename to mobile/res/drawable-mdpi/ic_action_view_as_list_compact.png diff --git a/mobile/res/drawable-mdpi/location_map.png b/mobile/res/drawable-mdpi/location_map.png deleted file mode 100644 index 21de2011439aa4d2e5205504523020decc79cc8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1648 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 IFo%f$0VKS%G5`Po diff --git a/mobile/res/drawable-mdpi/share.png b/mobile/res/drawable-mdpi/share.png deleted file mode 100644 index 056deb57b92875e9361c4ee2a769023e55aec274..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1341 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsViy+1$*~)y&z{$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1OecUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dHn%vr z8k-scF;2HY^rm2Q3q-F8PQCg-$LNEi7AdM>LcsI`V!{(HkONQpsd>QkUIa|oY=Ude z85kJXd%8G=RNQ)V-Cn~rQR4W=>Iwg!+|Ni*WNYr69dv4uOJs^bv(n~+4rZxFnoD?6 zl6HFG>y>EV?T>6lD9{=aW!tiT&*Nv0Zd_AabLq(3ibHBr0Sz_)S7gB_S8S&CY@E#&-=7Qv+6>((cSq+1C{(AiaT&F`>J(+ z%d+he?%Jz1F7DjEe^Xr@V^4wr|2)~ePk($~O9mB$c@+lie7)~X%K8~c?yY~{R(&e= zeZH?(?;_jCgTHwi(z6vN-rl3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsViy+||Is$<4{s$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1PFwUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZns$C zG!Lpb1-Dxqaq86vIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1z-r*$4$-uyr;_2cT zQgQ3e_1F&HLW$!a=f<+ju5ab8aj%Ko)f=
b1nbR{BL~z z%;z(f^WOg!ZMM|XW~-dStif*ZM1O9&&a?!+HEZTQ=G*tDn;~qWWbmB7>kB2WFXHyI~Y-d|3dHnTtDXyn}d17|lidBn7B z-Y6HZ{465MJR@+o?BglDdvY{G4gA%A2pS$2lUun{e2f0`n7w!Rg=aEJtetgk{)!79 zramg(@w8^Upy`h3Y7O(FZd~89LE+byx0i(fM}J-$W4=&uH&>{`Mh3Zz-yH5trE}%~ z&gl93;t1oJqt$0Z6t?~7-O_tv-45Q@8-&B1e;xLWovXXW;e1oC`VPq;!A|LkUwinN|cx*}Be|_~68T>9*I!n@??w6@4`C#xvV1 zuC8nen)Yiqz3%-v>zu~duT|zDVwv|R)+TVPWj?yVvS0MrYNaTzzn*E|e?~O^j(8Ij r`-=Z>A^)dS|9eg`{`t=MM=*iGYwHrj)2SU7K&7y!tDnm{r-UW|uJBBy diff --git a/mobile/res/drawable-mdpi/social_group.png b/mobile/res/drawable-mdpi/social_group.png deleted file mode 100644 index a19796c36ae2938d89ab94c169b0cbbe4844fcf8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1594 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsViy(%jg{*vZ7y$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1P0rUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnqfW zG!Lpb1-Dy_aq86vIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1z4tTdwmw|z4ji-xa zNX4x;)BQVq17(iC-)pRxKQGOgcVBJ4R+jGC`};7oNkAQP6Zig28{F`dyFJA1zUFnx)_x{|n_bI>D zieElrc3b(Ph>q~vN5;&&oppwCrdr>oNvN|)98Nz|_N*f`p^GDOr}w*AN2S;CE*4Vz z_VcgmF}F|e7kcC{yr1ye=DPBcV8at$bsfJKDY{KmtTFQ6v-Q`E`}31TlaI0$NI(9w z?1|5D(KXLlD{Z?MKDy;N(eY&DBaX?^FK-{2yF|-ltdES zhJMouiZ?`@Ehp?hXU+0sjgHCj2RZ=N*4k!!}4t>1n(ymtF@ae9e{ zDrrRKD#l^e}P&s%jYVh?GX^m=Pe&{y$5bD?L+e)jg0;&(sg+_O83_0pV{;L~dr z7WRs)KXPkF|CFNnDbIK+&a?%+-Y+gbb@pSXg4h3hUNQdp&iF?#fq|*&baY9{TP9Fx N?&<31vd$@?2>|ITYQO*h diff --git a/mobile/res/drawable-xhdpi/collections_view_as_list.png b/mobile/res/drawable-xhdpi/collections_view_as_list.png deleted file mode 100644 index 95708234a40b97eff42dc08540e2f86637278758..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1446 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh**NZ(?$0 z9!LbN!`Ii!Gq1QLF)umQ)5TT^Xog;9W{Q=orIE9-iL0ZjlYyI|p{t>#iJ_&diIcOV zo2j9>iIX8ruSMv>2~2MaLa!4}y`aR9TL84#CABECEH%ZgC_h&L>}jh^Y;Lh| zG_^E0bHQmIRBsA4w?Oo|;?%1Tbc{YIYLTKECIn1BASOKF0y*%cpPC0u??u3bowaoB zA_fK~2~QWtkcwMxX4!f(I|{UYFA{eS2oMOlaL7+!qlmP<*2l%yj>RvqKMccJ%tyKf3HCou3dFd8th z9bk}PVE#}a-TrJr*~#}49Q!YsTU$}Jw=PUmH)4wGfySOo-c z;Q;PiZDP#Nr{32(w_{u4iO-Bj*935Ek=!-a(U;*BQ*6TZS+k@TzWd@X`oNLn0Na+A zOfjchKQS~F@ZaU+bGDwv5FixO=oa&_T_<;)nXK<+g`0Y-UoZ>)*L}IltI1wmB35*T z#coNVosx^D&u>w4Drs)6GA=ogmC40;a`wWIU_OnXY@ASoz~0zpY$TtCNcySpq9-ISm-ZOIJ?zGK}>F7Mu*8u6{1- HoD!M<*h&8R diff --git a/mobile/res/drawable-xhdpi/content_remove.png b/mobile/res/drawable-xhdpi/content_remove.png deleted file mode 100644 index f391760ef134adb96dcce85abb2c5ab776f8e6bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1348 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh**NZ(?$0 z9!LbN!`Ii!Gq1QLF)umQ)5TT^Xog;9W{Q=Qn~{aNsiT3ZlYyI|p{t>#iJ_&diIcOV zo2j9>iIX8ruSMv>2~2MaSg)mpp`{ycy`aR9TL84#CABECEH%ZgC_h&L>}jh^ zoNlpn#qAb|-W05E0r|ty4X0jxpkwqwQHvDSFd<<20WskT7s!Dp{nR{QdM^Sd?B#VK zwhRo6+dN$yLn>~)nYG{Vuz|p_xtDr9Y}g(Z&X{o2E!^$jnl&PB*UFqlh1Xx=-J0LX z5}o-&XYSP%L8^~_ob&jpQyVnp;J)8?Rd;R^iVpWMvC(79@%=9ac;6W$w!hgU`x>zZ9zS^V{6gJua|t<&QJLRD>XQY zHM_w1h41cCAG249C%AqIJvT4Xmv|;R_xq-{$)?AX4zIdmePH{E{~GCs>YnsR&D^2! zQ#8Qv3|Gmz^9$0{Rxq85WY3UT^{?ZpUQ3Zw&c}?EAx)M%=G8m1rXH%5G3eamsz2dT z$J6wyOC(=CnvnTKclW{l7HM*ougiW+Xznk1f6wZZ>NnMkLr(=hh-akT<(u!c_4eFLR-Jp&{_dM#I_LIWuj@(P tw;u2dG5>dMv-cEaU=%<_JcWO_3>bt2co&(3gwFt#Yo4xtF6*2UngBR*-eUj& diff --git a/mobile/res/drawable-xhdpi/copy.png b/mobile/res/drawable-xhdpi/copy.png deleted file mode 100644 index 00bff33c74d93b8074203580dfb90bcdd7de4264..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1438 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh**NZ(?$0 z9!LbN!`Ii!Gq1QLF)umQ)5TT^Xog;9W{Q=GqoJ#zn~RyLlYxsNkZEaRXz6O=ryA&s6|>+A0&bTTF18 z2i2Q`+byOz_38s1qYsK&q^O1o0n-nN2~W5{4m|0n<^j`t5inu@^|SlMz`!Kn>Eakt zaqG?O{eFiH1dh!WSYdUDVa*=rd8`{h33$j#Xp5=MYnaNo@sm)XxY&#d5n3t^Ng5sY zy*qc30oZ4?B~MAxMJH~anmge&oOeevdE}Z4bW(7%} z@_-*XuZ$aXFV&r%X{EbUnuS~Fi+1KCE}(Ts3g;GhO6_F2u+z#>iM?c%--d}Sd)Eo8 zFy2@t+_ux|;OW~7O6ES;*0_!xtrz|-69QYcT!>rkJCcX36UcgYqAk&b}Xu)8~!1v)AqmBOg;47hN zb>*Jzyz^L{F8|}re8b&vg=gON_m%hR7fjQS{rs~`is{F+AE&onOxS;{{5V_0p8u|plh&!hh9*;F|nIG+9Xl2tWf*{Qp1UfB$4Ss&kZpJQ~8O?W61 zIagt$&Arc(4%ZGYR6WqRp6>gKP!S6P*UbO1NHDzFyRi1IlfizFh^MQc%Q~loCICpS08Ib@ diff --git a/mobile/res/drawable-xhdpi/device_access_location_found.png b/mobile/res/drawable-xhdpi/device_access_location_found.png deleted file mode 100644 index 52ca8ab7f3a772adb94abdc33910558ec42e2f6a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2204 zcmaJ@X;>528V(3TSOipdsUg9IEgNCU81@MeE(sbaf(sDBfT>9)CV>P*rR*rdA|j}O zy`pF>Du_y1Bp9exz^g4N2na?r+*%ius;DSUtZ08+?wn`lobx^J`+n<>DO}44Ha4&^ zKp+stv=ES~-u*PM{zCQl6ldG0db1W&qs0+$l32nLLJ0pvH~~V@c&ucI39%B>wq1iL z2*d&hPGqz=njQwQVIG#H!C<94ftrm#P<*8V7JDlsMkPSW9KJXDS*sk4;v{;b*Spj4 zbU`4rg%gr4gd)-zk?i!XY;q#n*9S$B0%`#sBxa$cJT6}ZNWIY?bpiERW5%ITA0gtc z-sr!Bil(nc1;RoI<&MR>vhf}Slm`h*AmPa*vI~lcC*W}eA`b8AO27l|o&cVJ`t+dH z-h_!s022)Q|1pp2wkw~x-H!Lhn#u3P5G7e9~5s9v9gsUixFJ?(y`6A4m z0tkuNLXJSpf%zznA}aw-5qqQ6k^Y?mPw-imFZxs_b-{2_mHUx{60`Vhhz5G2)f!k1ClLq)J-yuU{-ApRK8Qe|638S1nMw)> z^bc|;c#;ALb6gN+r|=-Yc#fO+g-e~6s~HBKK9IP=F6Ft6Sx zZsPp01kTIFse{33TKkVy&zaQoqd9&aT=nJi=tF$Codt zF$J5bOY`2P-cWhjnCCg<(MWr`RzHgGEf_v*rCWnLw0gIxK#L0c>(=N{Nm)maqMWj< z9Iz%>lfvm^@dX6px&WgquE-@zRF_vUh#MvEmd{|9mJj#!@LF3=Jp1;@!Qt0YRj1^P zD&WMatb~RNPBN0I{m+&03srGEAZpNQ=24BA-B;I|{^PsyLC%rkl1xYCa{Y=|w+gtm z*MDB6b!N)(ysehU%a^bGpdpwrs7?@Z-Bl+M0UF!OV^DJ_)}R#ScWASUc0pmj+h zQ`|De>*ZU5VZMJvXU8bwOedQsO9XA^$Y|G*&XB_=ZuB*?6=tmd=L>>DfB#hhg0MhS9^vjgU>q^(>?c*KRKb28(nmSG2jfTs}W*8f$sc^v`~Dl>$&=mEzjn zRM~4ox%(0=)kv%v_R1y`BC|6EEivuc@XP+UQ9qd^-&wk?BTx|v>?)X00*uqFN0gl6 zGKy!e?j{T+KW(UB#5p6bwuoNpR^`<(^E0b=`^siNsrjD9JYSa#RViZQ#Mtq`B>Ihe zlcCoj#q}H- zx?Zx+{IYC;Vsh}PB0QI_hz{HA?KRxvIJjnh6O z^EbSr*#Ty)XRS})ON*$|8skeo`q6og6G&m|l^83GJa0t4ukLI|)7I6tT^Wr_s?vt) zd-b$f+%Z~?u#?fa zVHWlMbO%)YA;6+O?q29gi6gJsR&kDDbt(IOE~v9<6}N-XEUfEod%AEO*>t_7O3JE* zzbcp+4W6#7$keVma)Z?LAfdYPWrg;dcwx7FS8azKbbAbG8riH3mj7Bv>|5Q@?E%in z%qH31`h%MlMQ0owf7ip5yvBI_@ImKyfnG{cSDWF>h12<`WwE-8*v6`3sw-{2e%!G# zzhKLhWd&)TmUneiD{R`0c3#!5>VEZgqNoT z@ki%)_2D6TSxyt}WpBO%?hjqExvN|x>_iUky}zuc;Z)b+3&_Q9o%+ikZgif?K-+<`dAxl%q}!&Lo7{!g-f8Fxxj~HmA^8I}ZsE3VPxL@fu-bf- zbHcdf;@D!thcxBNu-`nePvRfs1HtJNNgvi&S;s%!g`$+4|1JHA!QsXs>W&2zliLkb z+5P0q;?0y*2WH>JKQIn@1jh`15%vnm4x{WK_zdyS%q3_tWZ`oS0*nhokTU8-*2t1gI`QGtZXX8_!11*d= z*<{-04_xJj%J@4AitdE?MTCURzs!=6``kWq@Y_;9s(?2u~Ns5RcBc*A@8=2k^;BD$vKZ(B+Ju<=2igh OVDNPHb6Mw<&;$UPn>!5v diff --git a/mobile/res/drawable-xhdpi/ic_action_cc_bcc.png b/mobile/res/drawable-xhdpi/ic_action_cc_bcc.png new file mode 100644 index 0000000000000000000000000000000000000000..124ddcb35521d70466ebeb6d5eb4b535341e27ea GIT binary patch literal 925 zcmV;O17iG%P)Zs40OSBZ z06qYoJ(E4`arTfslReqbum|=r`}hFE0h|N)08DqPRi)CHAf&bpnSNC&Lt@G5*FSZe zAP@)y0)apv5C{bSBf@Ll*ztJm!DT>S4`CQqU!DLEI)+OMV+f;X{2K|_!`K2D#g`%g z1V>G0Fk;IoNWf1Z;&Af>fbgjCS&hce0WIPgNZ8&i0VMp~bD1X}62cCJ@5AMngXZfj z;Q>e}J12mI8j&x@HGYdeyH=a^F#msI0<1ahi~vem83}KL9R;z90^o{)gsDq*h?pYy z<^tgZx_5(fDUwgglzou8Oo|wUchw%wS!pCZc@hw}N&uO?ujwih`anVspL373zO`)u za|XXvB+TgZbKBV{a@0OX`-E{H3AsY)X$7rWz_@|E{GjXp76^zN*h{RP7hLe}GU?9o zVS@$;_y}U?2H*}a7sL-`jd_~{G*%U2N`&!Zd4HyT-L~lh*FaXPX}@qSjjxITTOo`p zvhq1Zxw^o+>%rqpRi_SEy}Ig-((lYj!H=$$pbr6sarR$(oaHA*`onCn1Yr+GU^6Ss ziiG!SkGT@CHH#nHz-4H3Toc3+Ez_LJHaT^JN?)_PbM(~$HeYBO8KcH7>C9+-Ko!K4 zCQIrYn8F{(^0pkkK$esR<4qf{6r615zG`y^!7Ty>Hb}scQ6Q_WAYn|5`%{PK#xRz& zR^Kc0Fy-TUO+?3__J>TjPwry&`#&0*MA&c5ztPl7W$I)hYK^2O139~v)INSh9Shr4qVGYAiN@djUUJsTqXT@Ax?O^>yCj``3g);Z*GxMZZViQIp ztSuq*6tbuJ@}AWhXf=| zKOnSlfw)5g0?uEA2?PRxKp+qZ1OkD=UjYUHG?Ja<=&@N600000NkvXXu0mjfCa<2& literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xhdpi/ic_action_copy.png b/mobile/res/drawable-xhdpi/ic_action_copy.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa5778ed192fc861660af364750ec2a8c6bfba3 GIT binary patch literal 350 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+7#TcW978H@y_tQRx7mQlweV>E^@PSUb+!aPwikY9nbsU+ zSgD-KkRkg>?YUQne9MKWKW;rVP|7?}bc?Edp5)@{DW@ri;Cj`3qvxfC0wf>FVdQ&MBb@0PUTC_y7O^ literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xhdpi/ic_action_group.png b/mobile/res/drawable-xhdpi/ic_action_group.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6efaf6c3d76ce3de6b8f74cf07b892f82f2fa7 GIT binary patch literal 1067 zcmV+`1l0S9P)x9`@?r9Y93Nmf035&vU|U5bpSX38~_dg2Y>^>0pI{|05||1Q+`}x($ncQpo>qVkFO3i@=m9-zgqy{^fQei zoG-g4r^}Ycsx2@&EjZ3r`4^2*%||yheiIOfo2>!lJahU@!+8(Syg|q90YHXN=rTVS z?ux>mokQ2{0Dyc?EUHYP^ZEfGL)oe=8nAT%-B%w0A&p)GdVA1)nQf5J59l%xwy|Q{ zN?EnW3WZ*C64D&+G*^z@B|2lzn(oQ0MF33}(`89xEEF{#-z~Yy?KcR3&+RCc_K?ky z6#(G8Y*h=igBG|;Ak2AABG|4E0K#4+q`z<-v;e?>qt7ZS6PQGR>i)aG005cd{Sy-a zhIeq_8=3&%-vI!A8$6&0%VP@;9c`wY41iowPhTj8P0E)rr)T1Wj0kP9uQDZ5g-J5u zzG5z!JuBQl&`tr+ z$rK;Qq-+ifDsqJn_B)yvpMsj1;UOmB3fU*4!Qdv$p5+;PmWY5<)>)FC1xP_kN^w-?;(V1Oi3qGGAl?Kow_7eVwG9oMD?vdHU z=6SD5g-%5X&J9j?tXR#sqBPTJk}xo5#kn5!V616RhV;u-cY)aOX!}%zD06@YTe(+7 zrg%iYPdMk9t|!AIbgUEs+%}>kDOUd=DW*Y5MEomY3eScHU8fhZQ&a}P+^gTm&#-EZ zzQhoKNHn5!LpDxj0PJciWkqIDV&D*GaaK=O9Enk4f5`V|6f#y+w<5rb-71mS{M6zB zH4Kj{iWOhAkA*`3tXERSzZF*+i@Jo$3K3Fpek9P=rX)v2&ul2`T5{gTYp^;Ej-{>F zWnD|oCtmxK*m!Z;HFUms^?fNxswiU)2zyaU@Z~!;} l8~_dg2Y>_MLFKOi0|1vv69blQE0+KO002ovPDHLkV1lHQ-EaT^ literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xhdpi/ic_action_location_found.png b/mobile/res/drawable-xhdpi/ic_action_location_found.png new file mode 100644 index 0000000000000000000000000000000000000000..f50318924398cf4504ee83dc348bf8699c7da0da GIT binary patch literal 854 zcmV-c1F8IpP)eQD(+ArJ@z z0)ensq_HNx-EK_0F!;#RH03eYafnF16uyMUVlCpZcM~82hyaQLt9kugycFQ@B5ka(8M1^ki1PGy}kT0U0MLSLG-iy|V_9@61Hb;OE{slr@W_aYjxd;#{H8y@LkjMmd91e-#N=%C~d zo+pMz6RaUmjMpg9A;{5&`T$kn+9LdQ;+g-yszcu~)P^;zM*xJqld}7b#X;sXrpQf> z4(96N;|bQXx&{==`_^LfA=MrRV~n9StYtL!>q(9Nbm6IGjRlRhCtfdKHhIzQMIi(?5@HJB5 z&B8|mxFN=u4hMu;(&8SDxSr6@p8&8SZa4$j`~W5az2o;`ZZ;TV0-fe4b>e=INa)56 zN!pyV=Q$v$W#N&s&PDB!i18Q%I5ROg)rHgrTFc4MnTak+0Fxy)2i+2_rW zo1C?CNE8#0Xj~~P9BHeGyVOEqW$;Lkn-Br0AQI}Kc3l!v7N!#6rO3q_b_KL=wf66HT_6_UuR)njmfcIAM$EUiwyg`936=crQ^WF z9Vg1W%5Ud-d_)`e`3DJue<+d%`-@C8NbfG%H?%U=I_Ph5L;w-6ZyY1etyY_PLLd+b g1OkDuGX4oL08vnJeE?)60000007*qoM6N<$f`uV`umAu6 literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xhdpi/ic_action_map.png b/mobile/res/drawable-xhdpi/ic_action_map.png new file mode 100644 index 0000000000000000000000000000000000000000..537c5a49c6b2cd48308429f3420d64757321af3a GIT binary patch literal 1022 zcmVN(we1wFVu9_11PrvDY{boe3 z7c5w?V8Mdjto7y2*Vor0Z63e5&q=@EPl}x%w;lljfLjM(P;q`mExU3bC)8qF05T$s z-8Fkp#2!+>B?T@$T4UPWQ;Vo6acWDE_>60YI5&~y?5Y7Erxf&u(wxqz?VwR2^QHfk7u{w3%Ww){YKy2OsD;3;cfN4i~(G-y`e~&ybip0os4j-;r zbPDusEe4o90)ZWV7S2CW+jmL_kh60!LOqPm8y$Z|PMYSqD)JdX@-q$q;G<$xTOq-y zw9k3>iM)L$Ct{3bT{{58m(sJR*P;X?ayX?nL!QO8XJ7sP9`|iDz+O!mTnmR%+N1{I z&s=gRNbZ39XX03Kdh?Cv;MkMmi!{!g+7<+QxMUT0 zff97J*y5f9a#%*oJ1WTowPopiBLMJA6lAN5{2f``I>(6jgfwRDp_r3EqDi9wpmr}D zNpR?J-&`Z4a?!uFCMA}Q=zxL`7?cb1)fW0=T$Ij|r9v+(Ph4XM0K&JJibgob(ZEa0 z+nNq!7&Y5Sh|uyA!fOqFNK96-1_tD%G;?mA4DEpUz9Nlsy7rgQ`rpBck&w|V=05VTMEHp#a zs4~N^+MEvOhS6|uI!CCuBz2g8c@sh=x%X+&mt92#IWB@aF2z|3p&ZN7b#gVUTZ0V% z*b7ytTH^p#gEdlRVcC~c0OUe}sHXYX1Zn0G9|@T`~jJtpET307*qoM6N<$f=bxXTL1t6 literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xhdpi/ic_action_refresh.png b/mobile/res/drawable-xhdpi/ic_action_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..6aa33d59ac15bce59056e13f6334d2f4b4087c0d GIT binary patch literal 876 zcmV-y1C#uTP)IiF4v`ZBh#-pr0k#+Ln_c2`&JkhXBa~KRScU3)l~^1=tcS?cCCUUBIqjzroJ4 z+3X@{2cP@u{w=z16av7kFmMYh;v3s4tuPoq}PzQ zU>g}-mjAh%bMZ;9`Lc%z+}|7QHrhk%Ma zy7z~o$5p~saM7LSW-bKg4!vJ0+z(y-&4Ikh@VR)n0OX!)1^LRdT~qSTu=RjamdG5) zuWiY@B)LSEKpU4jz%~iWTz_Md>A9@mNXU;X1ZaE~WoNA1 zP9c`ora9n6^8bCPYYV0V2xC9g-uERyu;h&d=w#~u;(rnXC}w?i$O1T5gRbMS$8tR7 zLiDV&Qk1agKq<&iJDu>Hvx&pR1Fod%b%b%B^)3LFw!4vb5Q3=+Q5P->7 zp)XSrpb(MQtxV^EyMHE`plQ!eL-zpLviafZ1)!Cwm83e=o}DJ1K15VE$d=2~j@#~R zHa0t(uOb)?)jp=eTg&H;4!gRtC3)=qgGoa^Lf~pizOwYVipf`xjob7gKs^%jRvz`} zYS3!mfQGwYcP2fXLDmE4<+uD!PG7V%EM~?QOWYdRB^&x=t;9_TMU6ttC1bOa@ zbRU)3fetShY>EKl+sTseOk5%&A|fIpBErHS0R{kaQ#JhFunA%S0000xD z!_|(6O+=Ux*Z_M?@(N0<#N_5P$G!gmmyO}H0OoCd*#VD3&vRXXmF2vJF9IxwUchw$ zipdIqNzc}Dx^@_xJ4!t2NP4=EkrMzz-ZR*`=dChGguclLfW)JgcweJ8YfOl`plX8D zWc~Sw#1~lD>{`NB4tDtSCXBC8gk_shF!n&A7y>epF7cK#B5WLZ1&pspsRr?Ze!b9D zgkXvqwRo{W;>A6kAuUMnq#0#PP)#yHQ$@S6+P4DNAvSw}rF{ zJ$@7;LJmM)r)F2gGvNTF0eR)k50gTpC8TAx2i6cU34@y+FddOg;>9BE+dM7eibQyVej<(dLazL!^fYrY*5+ zuMw@5SVM?gH$@Xt0yKoURa-nICqUyJ@B3loN%z};bH$K~0$?%b5tZd_cI2x;42QN! zQb1k+L^$*Ut_x62U4XA11(z2BoQ9s~v;Y{&a>Hq*Nrg$FCzuNTwwl`diBD&Mz#=CW z-Tw=z12gvSSJ?|$;!S^+W-u5G27|$vEPezS0Ffm2y!BjF4FCWD07*qoM6N<$g0})1 A$p8QV literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xhdpi/ic_action_view_as_list.png b/mobile/res/drawable-xhdpi/ic_action_view_as_list.png new file mode 100644 index 0000000000000000000000000000000000000000..45a3fc706b40bd1165949c86df98c3835be5209c GIT binary patch literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+7@0j?978H@y}5Of^RR+Q>qCiME}Po2kC@7=%D!P5qbzy& zp3}WwK`wgBe{fG)?)2x?*C%GN(@!1;SquRNuPeUPZP+^P&8E&ZkGT{@!WpF7&uTCQ z;|$R0o-en0d-{Z&={}qtZyRdrjb)k`7!00Eet4DZ zVdb`KwxMRj<)jT(M-xKsFkUodHDPS2lYbz<(va4X)*^SFftUaQ literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xhdpi/collections_view_as_list_compact.png b/mobile/res/drawable-xhdpi/ic_action_view_as_list_compact.png similarity index 100% rename from mobile/res/drawable-xhdpi/collections_view_as_list_compact.png rename to mobile/res/drawable-xhdpi/ic_action_view_as_list_compact.png diff --git a/mobile/res/drawable-xhdpi/location_map.png b/mobile/res/drawable-xhdpi/location_map.png deleted file mode 100644 index f5ce90a33e6bd7d9f6c34223550bea2bd6d6007e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2510 zcmaJ@c{r478=n|ik|s_h#hB*c!>ndFCfh8Qk+G$ykTLUO4zrkfF_Vhskge#H8Xaqv za*Z}56)IOrog7KZ5?R`Oc4;BeH#+Hje|&xKb-nNNJok0~e)sQw?%yA8nzyIxYK;vV z5C~*7-Hqm}Se=$$wUvsmoD=j z1fq=O_yvFg3=a~E&qXtra?oO~K!Jup>>R}cCMyyE;h{h{hi8wNtheM65Aub@{$z$r7#8o|C$0u z+9UoJ6~OR@Q~5#wPDEo-EUYySZcRYr2v}Q!ttA|f#bGfxJO*on!eL278xj@=|Mnmh z)r9OYk}u8WTP?-O9uWb80ulxj7Z-<)vqJNQ;TW8)tt|$N$KdfOMFvVF;ekvsiYMB< z%s>M~EFnh#a`-&>5+gH|9|PJW6iWYYfh+h<%M*ROCdGwe#7qGOhsG|ow4BIb{Qp!g z_j|So^acLW`#*_Aei8wI@dZTu7$HkBxUkJjr356Z5MY9Qp&y?gwS0@-5qyv@ir@?2 z)NMpG4$fe*IJ~9ER|JDWqVq%`lg9$+G<$@C1I^*ENiH-T;TJraNTgt0a5!h2Edgii zOrTK7E<~ISfr4Ac()g?xF2DnqvFv}a)<489nSm=%RHgw!PAtH75%Rh4uT7IUKh|RP zL%wfV_K&p?eu%{=#9)?2`(LA84k`SzwEb>e#o@d40iMF|LWQx1!>8jQkd;n!8re_W zGnOk!HHi7C*|hHX*!7r-zU@&#O(h)_DYZ}K!$v)n?X-^c^weTqpDBlFihG@znZ|aX zXrD*A^{C6c)^>_^>&4V$%PVTi-j`q5RofSJj1jvp>%bu`7XH+IWNy?k)jd}j_~Uc? z6DDVG*c?va6g7jzx`DbtXr6h_&+9L= zug=oAF@*@xfR@TTltZOA>nTophH zc5c#^x~e!HneKD+5vUf7=O(JDUR?JXdzTu*$9O%|Q(^%1Qzouj?N|?8aY2qh#l|A4 zR%_kHjAx!Y9*L#9AW9j@o~_lk*TPh~pE|f;E;lngtv|O8dB&u)4EDkm?S)v} z;&wn;`b6qQk8u6vC1R%g=Z8+@otLo2NIBK&!$`VCra_!OFPSf-9%b6Sb2(>BnR zA4)XkN^@ZZljld-Deos;?0CgR>nQE$w5XIlq=@cS?uq+{lvQ%moo-DhJqo@sVM)nM zEB-KM=&)i1BQyP7W=O*TSYMv}@a)!|D!jFU`o5%!oNK?ol(pb4uQx`vXUb>(C|aZK z0VbI=S3qZ=8PEjZGu6p_Go`VQh0z4#uebBwtNBX8~f${RJX%Nu! zZuiNBrxQj@Qj4JUNR(k|cG<8&Yw^aOc1ixI-2=&AV9Ubw&q)$*S?hp0rx%^t6usbf ztMtU3@$CZp)@h5NUwx?I$(51v2J#dPxDr7MAx%`Mk9Y)37(2x8E1*`-f4uwUY%ARe zKs%dlJaTNT6(N(ASY_v3%s?ewDADPC9pU`O>Ci+=sFC4mp2UXMqaXC3Tassbs(HqQ z(nEPmzA_Vc(p~*-8u{!7gU}T-!+pfH4R3C*vc4WXTGrsuOC2Xx&ALJhkAzvhG&R*M z*3o^`>7^#lOc=IoaF-qG&5-)L)){~kPDrofs-ssh>Yf_nO@-oY*Dd{)XlMUnSt2U) zThnE{3OqVdWewb8M^*)iz{ySY{~jJ>Qdp(eVEdoSJ4nkdlM2K zVMX|@ig3?)F`Y1uZhs#Y7FN_hQ@MFw*3yz#I3DsQW}4Je|Ilo4d}cNL@DWqy2i@a| z)tw(z^Hqs2xS+L|h$2^-EIHIG%(oQgx~6uaXa93^R$ zkvz_t!1KPaqPV0m?Ug5{ESXj#0&Bb^NB(G++QD3ot?@8vR&@CXlK6A?9@4(tbO!ch!S`}Aj%}t4)?_s_y*t33xsx| zCjCn4v;LerwK>4>=in_5{uTVT`(4gNc}5?{ueqdZnnHz#`E}lIm#ANQQo!+>eDM~C zQToKOt(a5QSqO&iYh|D5Nx)anH+{mmM)rAbO4oYSf-JqIT>ZMa>ws z*Tt>TQ0wdd3E%U2J?H()IX|4|`Q^l!7->^euu%X2K&`8zVRlQk|3pS~+tH2T|J;Jy zN5|S904N#$6KG;F>=FPdjNPG76B9S@0B?UcZy#=5D3sgB&)e1gg$n?@nn#->VCFl_ z%7mp8h<+^cqrSHp6B)M|Bp%6_%n#-vr_+n&$(v&`?WEV#BxWDTjU`G!NDm6ns7a9a-Ho9{(#|5O5Zzr1a2QWNb8 z%4C%cm!|!BJOTi@$xOG`9$&q}(Ny7ZvWXZPdy(A^lA8xkPHWd2W92@#!L0;@jb96k z)v+NJNsyk``410>-JVkB{!NH?t)*3K0CIQct&V;E^F}l8L(|;c#`^lKUJu09amXt4 z8qsBswYqw79;S3jIQ`ka$`>wa7p_fw_Ool`#GsI4EQLJMX<;)-`?8Vp=8|*rL65Fe z6CBLAX3F53sF9U$ELr#<4w53&`*7ms+3K?J1(C|K3{dl21r(AjQex*!^jlwm4jzDA zB>=!ti+AS_K{6twTg1v(;LV}xm3Hn!0O_im;tK#zHTXnfLv^bCWB{O%8xF2fXFut@ zFN`JO=)AkoNqOlY8wug->4MNfD4roX{2YWT-a-VUM{7924q`vlIHj?sZqcbeG@@M= z-)NM5X#Y5p<#YJT%;^KlQxGMYZnPnOY< zFnb5%w$R}`QuezeAM-@3IazT4kbHX?-Ks6|F}&7P`3F@4w5ddnEmA9=^82#@iL4~% z-0bgu^=!%svUywI%iU<_lT@Jn;@Iu`q*6UE#6|nMAzvR0lczcle|=CvRo=%|V_8Ae z5_jr6_BD{0AzTwnE=wE;;dbOw*MS?rjb?R9xHF3Gi$cZ9Ny96Gjmgv{>H`AZ@ z+;@_ch=J<}^G-7)-4mk=iG}va@iD|fB?X#3+|m8|1vbGjp*7)U#=9e2nk}uv#+y1g z|IDM7RQ{td_oIQRb@Y1oy3{)RI?s_U1=>l?_sg02s-W4>b3N7#x((?K5|<1~b&G;5 zv&E7;7`;rA4Wu#;V^(b%Q*uxG?=1Pz2xeXV!pi)#Nj5hYH-dZhc0e=zVj7nb>bup% z@Q(I2YMbaJkcv8*DWX3XA;_A2pY%S0HSm6QhCvbQWISs>Ok7T4FJmi{Hq+Yz4#t3A zGbImEr0J#cr?G>@V5Mb6WlLq07RMIDu%yzb=Al(u7E#CVS@W=7>_o zl9)0?i8oC3OPKXl9Eo+eLANpVi)rpx`?c0SZc1m?x>v$H9@OR0e}~KT@P8ehd;JpJ zl5xe^60clVnkNsH(vz~PGduq1s!F<+;d}Nez=(WHuo!h5_HK#sP-s<%y-3=iNy6oc zM_D>59bT?eZd$Ir*Ct!FUyLql(`>Q62&Yl+*AsXmpp8hv-9>Mi&zUb4Qxr2BDl42; ziI#a3vgfsE1a^28A7tdTKSkykco#1PwQc?32o<}6U3vZ~KGmjzlhjf1k>IIt_mz5O ze7%)8#rpBTOrdt&YS2Q*G)L4*WOCEEQo)qgdo9`o_r51X)5`i8rP z2U%u@O+`XQiUx`X{i7qJ`J>aBGTF)!Gm=}`TiG+&%Z&~;uWW=dC75q6y0z;zMb-zH zR<9@n=Fs<7%B0jWb2R0gHk@Jp^?r;BmI_N*xK9VFp}i;RJ7Ng<7~R;c z)EegAuuzXX+B|zw8^MBT@{c% zapCIWws$Vhf?xA=B&sUlU4GZj?W-r`HmNhIC%vtFyU|(6<2LZmhe{s8Rt7E^=S~x4 z61F}4oz!vDF}^#DN+2pG$|_nl(I*zpHZFmZ2^?R5`Y&tz(MZ==%0@^S%U6r&$$(YL zM4v0o%QZ_ktM-YyT8~V@(Qw@t`W*72;3`?K7wyZJ`^Pb>=vB(K5S9$F0Xv_dJY3gF zR55d@D1)#m=hiz-3xq}NDpq1AxeU@==EhdJvdx2L4CLYqWHO7aI^NEwe|Dh9EO*mQk4 zT;UQ`d)@05-zdhFMmp$G_o3phwFm_UQnU@T5u5>&)*@W2TsubNhUC-Ba~_TEkJJs} zKgfML{Cu;|(8aKlf+>vFw-VumZ?;uDm#5bG2ML>ZAnt0^z9u6>^WszzHf!9 z3TxvJHuMO8+Bx*LvjOC>M`=N^5f!?(FtcxG3>ULrZgBh)jb>M2ihEbZh-X1Dy_pqU zc(uVE<2}@ox$v>Rw7jS3*_i8u>(1tqNRBN{dKqdHMdL+1H(yV^Y+1j5`dbq(h8h*b zw?tr|O$8lF-&$RY2XUi{s<1Dx6WAY^?7_rhgX7GZ*Z2W@Nb7Iuf2Q!Zt%NI;!FId_ z$ii^Sb;{*J_o9xVS`}BebC!PLX;*3F>AT-gG(mJl%1eWpY5Fn6IiUkFi?bAmfGU|r@mEQAB~{(9Rm3>fs0yU{$)Z)#R}=}@)4NN-m)iKhXg^6SSqJGI!v@{wciv8>B96uq&}rz<2_1$)okfL*2Q)Jfz1mQO8NRZUMk znht{78bVwNJM1}fxW$vUpkK^4(^EO}%8PBs!QO;k!s#;eVwj)66>hj?E>Pg0vemfN z{zPqGeGa-9Go@;Ky)b*Y@a8!-F!y+TL7PAl6)|?5e40cHy_=MoG#pJGy_fS?MP7bY z)$eNOvKTt{Y>YpLF`kDyLZxuf0RZPWx7-1Mzr_Jy*8u<&G5~vmSk!~mvw^Z(Zd-M04aI(>kd zkvTxk#xJF2XyfXSe4kZRhaIVIA1nj_kdv;4It<>uZ#9@6$xU}ph`#>g<;@HZG~=EQ zdD zc0>Gar)F|$Qix5mKC^6h=Zp|2@9-ec+e?JhCOUaQyT9t$)zfP;K)@K$wh~}4b{_hL z*n%5Si|}Au`L-FFyZzWX7-is~bCKfc`ZE79s`@W!A}^+Y-|uscxSzEIk?-RwL9mhd zL>F!k`K-*$ppN*W4CVRSN>0?Dt45!ls&mGrGqCGe6dV7!>zbl&dDu~0LGcj9C%JG* zjwG<%&UZ2VG19!a?9FF`G7tKHwY(~?SGEHE<%TYUODipR3H7w`nAZNz#PziTk0Pbsy(z@yh0KA0s`i@Q2@G{MjBNRhqwO&HJc!< diff --git a/mobile/res/drawable-xhdpi/share.png b/mobile/res/drawable-xhdpi/share.png deleted file mode 100644 index 15549b04eff0aaf80ecd4f5989785bd8bcb1d5fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmaJ?c~BE)9NmO+j!-OM6)g=xDM*ve2__~8Bmq(h#c+s%l8|g*3&}3YB0-=6K}56+ z9z{hIv#Rb$5CMW6Di5eYO&nHjma`Cxw8zhsaAXoyQ z{648jNeD@RXdx1tN~0)fo^+BYi%MtFI4sVWBnFL61L+Kq=0%~?xNI*jjZT_=$aplZ zQpJ@D{ikE$D?T|M!%!{=rlh1$QH8AY=&Y1zcw`}@g*QP;e=VXWO%=_B=g!4%PQ7Waa_(FNb88x?_#jN!q4eoa>ZtMo1*Z};#sKi3wFn#Z{;;1~ynuXUUII4mh zc}K(wSFJ~V&S+*{qs5+G=Enm4oLWs%C(6osqtC_%zTL9t1*5%A$a91D2OcOP?+apf zKpo@no-`fo8(DI$yYSp^y-!cXgm(R|8=r{jU*8W!{4$XNwijuMD+nb(Fz`jDU9+X^ z=G$yo#;7t~Hab5Y$PnAg=siHOdv4FCcWg$8{Skz#Stc_6LUBMwexaG^sQnVcbG4n! zeuY(cwo`6KeT{Qzn)x^y73tFK{a2`S>$S|Zfx;&TY*Pr1SHij7r}cq0m9pXGF@*)M zpMWMW9e%!C(*8|%=CSG+9HL_MJ-V45&%Vf^F z#*PJrl(D-HSu4yFO%sNKyzP4p>&((kR{HLPi8q0RSNuo*j;^{pcED`4K{#fCE-7KV z6R#SE%N&A$re<0NlVcLhtbJ~tY+uo|^TFWtMX2yeDGrV8=BL-qsqsmFOstp(p|@Ih2)-~-1pv5@G2TQ{_?cpp2PSV-pYNcmk)Q2nl;8A zpX|SPKQ|H~Vrol6+mHH%d=mk>^fm&g9#eo0mN6dt_f-Q|;m^Aw*=` z9dT|g9e*8{n_=?V?U0h%0bX58e_DkFtq4|m4uzk*p8n^EEYjKI+m^+Hlc#!#=e3Nk z$~DCmsXwm%ddrSD;mMQ!56<1Vl(nv8cirUMPev*Sd(k15;5**0Snu6=UFC5GAfmVc zSa*wJXV2}sXmQ84QtB90cAXdx?q3){h<3!b7J6*mzI}cDI>{ZjKjP3)+4t>e;eWNa-2df%z48>gJU&FD*_dZp_K|2;bwV zI7}HvnI8)d(I`oqj|9tMM-E5~`vQN>N zf!pR*IByi-G3#ye)(?VT<(saBq8hUrfbI3m7kk#ftEI9GwyRsA$Ia#9Vk_5F%S%+G n&8O9J;3M?C*E9F`AOthOrR959nu@X4_#YCBf`zC2WZC}!HVLh* diff --git a/mobile/res/drawable-xhdpi/social_cc_bcc.png b/mobile/res/drawable-xhdpi/social_cc_bcc.png deleted file mode 100644 index 4153807eea29e8a1bf8ca3f68760fef99e5a1547..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2310 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 N%+=9@Bq0Qg{{vV@A5#DT diff --git a/mobile/res/drawable-xxhdpi/ic_action_cc_bcc.png b/mobile/res/drawable-xxhdpi/ic_action_cc_bcc.png new file mode 100644 index 0000000000000000000000000000000000000000..b66fd656220e1860d478bb2fe8229530ed9eb652 GIT binary patch literal 1384 zcmV-u1(*7XP)VZx`%zkzOXMjfDaH300(gQsU{h{3dII&Yh;Ve_nsboA@$GqX?`>s zMF<9i!C){L3klD!iEJX?rP=*X8a{2ay+`Q zhTsOs2hx`nX8k#97)ufMEP#9Rorw^5Og^}sUxeiAB7CQEM=g&HVB~;&f%lkGUHq;A zIl9Wz!;I7r#)}-!8M*obKl=_IH19&HnQjp%>fC`#n%TC3mLu{b449z}cL3MIng2eE-mPNh;8pIu3&Kd0 z?b!*}niwMNw75Wp2umG)2;jg!n_EMS1Sy(_eFVWzMqwu0sgfHQGa!@CSH)fHGa*nU=g{f-=VOQwe}Bpi|@fbg)FN@Ir8pq{$Z0Yrv%Xs{Pw~9p9`)RmI&63eeHW zTFH-9#f0Lwwu-mD$n$wWAP-%O*E07Uwk$va3#b^+A|s;G73qd z?-m8vTOi-u=-*MyehL9npDh3@t0ws%DA`_v?JOv1k_BLubbqO%0e=qyZkQn^X@i#a zElK$@f5gYl7g&)}HNc)U-Ab~)Y0vV6LHQXc#{mWE;Qs-_qnz}4kK~g!?oxC`z{{GQ z3J3WjV*;_en5XOa*1uE4_C>Mo3Gnwb7p;jDLHH@-XCXGu+J>2_=moek`?p}J&@^RwdN?t_ z_A=s9iUGRT#DT0Y2wl!YjtHe2UUSG_Vco|&kTzyXvZgt~FGbSU1+LXb;v?g$t-Q|E z@^ix0A)wWqBGLUFm24jIzacFb_u8ycYtsoGig;T#td zx)g5qBcLR`u$87d?T)_SPOc$-jV>$It_h@1h1<=b6W8aB0EQ3|`rPo07|J!l3ODlz zsl3($y0^CD*RUc&BaSHLY~~-Y4Wyc&BjL6wpt1{ z2Mg8$GyO}RYdW)Lpu)Ipc0^f<80Dm%31$*W2^Z7PNlUj`;+|QJ+eT8h+8Yqe_>s82 zJy9LRJBa^(KtpIbx+*DOo8hcci1b3~qA^wwSR@}vT8Mf(0*GfjUDLX(B8HL93#Hd#3`R;>!kSr4wTl zXi9v)!dX{PQGlhed}fMbu_R~zu&EE%szCn01M=T8Dx&>pD+o%GZ*~ng9i)Hpqz(({ zdqlnp%8j&wvH}c+e~52F0L&^n9tzMg4s?5K0kQBGQPUo%Y-?g77z_r3!C){L3VNW0000qRr literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xxhdpi/ic_action_copy.png b/mobile/res/drawable-xxhdpi/ic_action_copy.png new file mode 100644 index 0000000000000000000000000000000000000000..a381cdc3fd657126d2e0424d08ed32d628d1a6a6 GIT binary patch literal 464 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGok|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+7>hhz978H@y}5JO_ppJ8!$XO$Q%xfp-d&lQpti|@eF1Yx z!-EyI4_F<&W#ez(pSWn>(N+EL`g1KWvj8n%VAvq}Qcyo~+EdH_dra)ak59Q&`P#9Z zzv{fz&-`9)izn&#sxGK|F3@8UaA4q&m>&C*u_$|c|CjdS(|;7191a+0YTUVGAK@j! zsO;9TckwUH6Za;HEMaS4VB#=f6-!zu?zQxLpG$*?3j>D&1B(Dq_`nP8hw@>Izso(C z^Xb&D$qoOD-!q>3{dHo~g#wl*CY$8`zO5EfVB(n2RQ0YYZ{bUAufW|4q6=I-xh}D4 z9@?eg;mEpsK|!_i;!?+l-`bWa2rl4eVhjpcA3H&K<0&9v_@YT95$M)idCu|6i`0{f z*BQ3wvDWNQ7Jd6~I>!&|<1dTSqMM8v_itbLTIH;*TZ57h1LKPYY*Tb5vGl~KELC7~ zU|^I;Q_U8KS)XnxN?kRog$ zKr#6dSw1I}C#)gBA^8i6^~b=o6k!1Yx*^{y5qchwKk0ycg)u$*>w17BU?_jA7&cs+ zjrm8HX=>LVFz=9jLC?Pbk|BuF&Cr7_D5NU86MS=2tzOAt5}HzbU`rdGSp-dmKTxUf zET@K5T1_ece$rz9qh~eXjhtUX^PAGz>V(HuRd%lh`6~-6 zR=>Kns zB@M4%vI;T_+FQB62KU@8Eo9Q7=$W6&aW_#XdVg`xL*5LeDU zAp8Q>dts!`E;e*$0`wg%%xCDN4_e%(&mn*-*Y^2kdE&_6gl__fQ}TeOMHROIuN|j& z?8sUX4(gQJT-h|^;+%)rG@>pHSNE+Li;ehiYbg3zrP#Rus_Q4MSSM~T|8CZBu^aL6 zF2KZAd^ER?fw^G>TWzfynxl<}uSkG|?FEnO;mh$)8&Sji42=8eW5CV43Wr6{Rq>zR zQQO=v((W^2+l1*%jqY9%wQlQ7a*>tkWFbXvde2P03WX-YTg_?}f#bR&Xszq_&|`b< zs7V%dXQXR$If-SF<&w3j-v3y9KJ&9K>8C`@p~p-y^{|&cTZ!;k)Vm@tUTUEs>(4v*_33yD#quzxKG+(SZfN}btjSB6z`=s1 zH7eatZ^R5C|CC(sOauxQ^PG8Io5WeX5mVPawK-`QI9OQGyHk~>zR0no7@L;V2dk1t zv^q*i^P7wOvq!U{x`eJ%Yf|sKFSW2$^{)H40ywhHNyX-?NcyQ2N;bvcqM)tdJj5ME z09w?9EMrF&y05rKdBzRJ&8^5evtL7m_js-H^Qvl^Qo*Sx?n)kzuYHR!BEcW41gC2v zjf;(Kr5{)jKOlm_g3>#t$~d7g)Tin&EU>_5vg*_j;kIV%jm2TlJ`{&XNX+Yg>Eu_0 zD1BY8T9dA9T`>u~cP0Synf;k=Y2+;nhE|1o#v8t=7k{5**DXeu; z&{-?OQ7E_-{+$&%sFKf4fQ~*#wN8+s002ovPDHLkV1f}1vAzHR literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xxhdpi/ic_action_location_found.png b/mobile/res/drawable-xxhdpi/ic_action_location_found.png new file mode 100644 index 0000000000000000000000000000000000000000..e5179540055759b55ca157bc131a44ad9812f71c GIT binary patch literal 1148 zcmV-?1cUpDP)MI902-+9_TmQF9(2rlRl;o2fzn_1NZ<$%D$cPYGv!$ShBqSz8Q}hW-RHwPkKN4 z3jzQD0000000000005vX2;11`>-E|bui+a(!te+J+z}9o*ONlP=Qhgn2}S?}fB*ml zfB*mlfB*n_KvCQuQS#NJ-#W--EEP{8f43ny3q4l)y?BkqGr6&-SUd+o#xD@Sn_`&K z)2q37IWqS05oDww;JxzamK3igLXfZp0WXS|c6}WvlWQ7W$i|=Pt%LLp1A6xjRN zm>uVKxWNB7HAkTb0&kj1k|^0*HQ6CTM}iJ1n(;>Y3=(E8LR41->@;zHqv0Q8bS9#G zv(^(p8SY$lxI(yP1?M@T*nXsm?Pbnzk~ssFpO!5DLF1UWwln6?vhtkP;QQ>N8dbC8Rnk&(xyjEIny?efIo`j*l~7& zbF2ckv)AM)srdFw>qY=6Q0=wb29z(cqB1#9+t@4dtyd;!tU5`~+)ie?pl+-<=7`#O zG04&i0#splC8h~%VMTSAurtWwHvu&JsNzu3Y1av^Q#~+c@^%D78uN2zhMTrAHH`vl z>%}0G*953pFK1qV64+mkd>sWGlX5i3v_b)5||)q*=mCWtcvMh*!W zRTu#g!w)27v*ywS=nhBJguX)ps@7$ad%^5%&ZZ&&5C8&znw@Y$w(b^Nsl&ygAGlQc z$i_jyy9$j+O^!x5>Z1|~MGWV3a!A0*QY7b%2~tC`L6!91A~Qin>-=|SC)B1hI(n=uppGgrG1V_`K$c3XyX<3 z*qR6eKmY&&KmY&&KmdR|pmcJUMdH&G0{{R30000000000005}?C%^!NbqTGn^My$O O0000E2apfI zxBtjKWKRxY_JO_49Iab zo&hT*5C{YUfj}S-2m}JbCE?0;=llD6pl?PJ9#$k*S69cP1U&1TiNuT*u_j=Vz4Kb) z(k_GmAwUQaw1}HBRa_rO30Wabd=PN7RdIn;MgEZ#BsD-F1PrVQ_bm@oD`kp;7~n9m z(=~19IG3J#(vK%XK>5H^(7z)1d5SK{1bku~L|&+mtq@Q=@H2h$ppS6@IsH=~xB8qX z1l)Gc9Aq9$vT_jV8S~aS0s2kOF=7t3Zl9;rLe~t_6ru0iI7WPI(d2agW5LUfajhbt zYn3M8x@ItF#4R!MUMLXyxbw`x2G=ul`r2X=SMV*JHji~x&@A&ejlx$D<74y(#)v)> zjhV1A3DNf*^z$c{;yVl#gq-Wjw-3mlPt0j)mPrrFAmL44GfMM(U)D5kDh8iM-w(&b zRJ86f@+d7i*(j+C%Bh`2}LtOd&Jc+H(T3&aWM2W_u!_9&nnMR){dlc?$&2kM;LX#yf+ zbY_V-)(rgCk!E6CH%48u`GF%IPmjk>oN})SNMPGTkG&I{TaD4riB0Vf>3M!{S>i$F zbSNo^3gWT>2OJqa8oK6->zWxtY%cm~2sMC$u*mzc%yr~!v@pU`pJ7cg*_mi`Mt`V| zZ8*EB7?8IreGi5ryma(t(suJ4&r4HO>XE)d0v$OFM=%`7VHXXkoB7$K{k z5ul75pX8WJTT8{2ilVBL{F1k&OcBt;aMqNXzERW9an9Zm{HIoCK-TPdD#~7!78P54 z{D+kE*}{6n8T{Hl01h+lt&mI{!2})98;Y3-@TIl_tSO{vZVQ#KkbSmbb+BPokw-IS|uQw61q^m7ldT_+dsATia@2{=!6+A_kqfeWc4 zs&Hz=xMQO?1f;d$7xMWg|AS+5Q?hR7gEZp9$b9TDOd8=vdrl&(8>O z?cj@hOF#()QM-R$P+q#y;mOjr_%LKmZ8GyU1Ma&Jd;@z&>iMVRi7oG;Y6)BfOga>N zg;9RY1b@+1$1@K%4G_?D@ITa$PK#s|=brpVcL;!v9_Of?R$9GCH9OUDaHOEXk#84m z_Su^PHX|&%L_iw+_yU4YpZ!_Y*uBS51F{=fJ6Y^J1fS~OM%CQF%e^SSyO7}1LK4ej z64!Uc&WdN?fv08EN5!~BhNA}jHk8NPKm$L*sQ;yy_a||*qbcZXBQFju@Z@1$k#g9- zu)$ITNN(ykdQijr#r2Ky{8cBmA`Ih`3~2NRs)6sB$*(55G3|>J7Ier53<(Dzphdt? zdN-Alf_jvK0{jk}pd|uEO8&8rq#z+cAOr{j0zSEGyHoy^p%)~VuvjG!2m}IwKp+qZ f1Oh=m{t7SvM#&ydtJi}g00000NkvXXu0mjfVK&0o literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xxhdpi/ic_action_refresh.png b/mobile/res/drawable-xxhdpi/ic_action_refresh.png new file mode 100644 index 0000000000000000000000000000000000000000..145c9df47cdd7969b57c46e7358608b63af93bdf GIT binary patch literal 1248 zcmV<61Rwi}P)I0igu^~k-A2?a1F+XG`QaJ@;@%j5B%MC3 zqz4rehMvj))*z%)mXd!o{xxl`uQTRaVa&&<;jP~XFGCxUpR!UpXu{786c#IQ#u-aKyAYY{5 zan#wQ$T@`;0ZYq}r`-M|QSSR}E7!%HkoQk5b$%w*YjI4zm~0*j4BWQFC-P@?)s5jE z9vpjq6jB5%EN+-cUkH-F45bjeb3FLi((|4qUUCSMKMo}Y*`%J0P|nW_uH%JhOAXTZ zS|pw&--bD@gqeWvCY`SbG*f^`3bOJ3H7J)ez!$^!d&yUOH*ElZxnfd28_+Em0j8qs zDAh}W0qkVj9#jh%fYpzw=W_tnauHzi{-Z?23j@5t$4Qy1g)f872cX zYBs_E<=#&Pm}#Qf0S1u6)Z%9l0fOFdGQhs++ddfJI%uMqsRz_}KOq?4viHXp-k-Uc zXy#*)-g^xlmv~mB$`?cYw>^!-JX20RD~lg>GSSS(I^h@PzMV^j&s^w!Z5H%p#oboA zo`PIA>*%337h2q5yIa=E)ipzV21t_sVYjSny5Hp_V;?Cfb4-3Jpeb?BE^}^S8SS*fuTkC?S>5Bq08K)6 z?Mm(yS_{*PvN&~}_d`lSkD9no?16`x#3$-+OLl)yRNL-Z!-m5 z)YzPZ4_r7Us`>t(nR?s4zH=)!eaTQF^5vb{sMK65tVhnZ{kWu7PZ zg{%|+000000000000000070NZ!C#zCr#rgLF8G01_+>#n_u6On+vc8iPx7CniZVI@;+GZ+ zEGB+;Swu0(xlM=Bz#%6WW5mK)9VzjpA-=Tet?Z}w-??qmWqZOcINcr2in~xa2oA%sWt1G>ghjDAOfH9FxZArYi ze~wZBae(JO|-If z89CVs(6i_FSpeM(DPzM_fc!E5`McDJ7ZX6a?J!F!qzo>AhkZ6thm=E%fXc%&9f>tn$M0c;}{56@Ilc>7{f(8*7^`Z@bSE zMR|{6Vq3~cgb2Mc>r?Vzj_3urm}f$6O>B&f1_Jy`95&~UL`_DrwP*VC(S)SFFq05D`2(AL|4dam9@>0IsVt-PW+tW>9X6ImHD^(rC3motQhrva_D@;ZtM(~&T r000000000000000000mOe*_o+wkw8z3EcqJ00000NkvXXu0mjfg|(hV literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xxhdpi/ic_action_view_as_list.png b/mobile/res/drawable-xxhdpi/ic_action_view_as_list.png new file mode 100644 index 0000000000000000000000000000000000000000..46004164086edec3c8b6e95541e90817db41aa08 GIT binary patch literal 431 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGok|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+7y~_B978H@y}5fa_mF`I>xCVUrZXlmh@Fty;5M_3an{TP zMz#hGrWNo89;R7}E^7*$(H*o@pw;b zP>!@KXAyq^zec7{@SltuXBik3fT-bJm}9Yc&59bIvcvC<->Nb1SnBs9q*C2R%h4;q z?DVDZ8}@6W`4T4g$zR_qq{6_Wz`%0huF;n#6PHLXU|A@9jdL*zC(w2WhLWv3bA!}v zuG%PM&a_#7$<5e-bJ0;D6FalrC5PT~El8;iZ4zi;5NHU!a9MrNGOPTV`q8`(gyVv* za_(loP@?|EG}PFE0cZ{oF&VHh2{16dm}Xz_W4BKI0|qc)y~8TO5M^(FDfCj$2at%T LtDnm{r-UW|l+l=o literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xxhdpi/ic_action_view_as_list_compact.png b/mobile/res/drawable-xxhdpi/ic_action_view_as_list_compact.png new file mode 100644 index 0000000000000000000000000000000000000000..d04f2c3ef6286e175473cddccc8bf0efd1ed67df GIT binary patch literal 385 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoY)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP)53{g@dXK~Pr3?&=e4Z|jAr-gY-gOK-93awm@xRes zr3S784!I4zi`W=Lge5u{1OgbRvvMRXct6qe{LGhTZ};f$%$(#Z1T>FQva3zHB1TKBT|9oydJ5W;sO{Ryue*QG=-eLIqwt*JdBaS;yMME8$}%!3G%#=!l>Tp;rgC08e)91e z+spS-8j3^ruKnZnBY{QI@$j8<_YT)3?tjYg-81gZcee=)U~6Dj0d*6>tbfGHXK((5 dl@IJ0gM;d3WlG)6X7P(ad{0+Dmvv4FO#l@+f`b46 literal 0 HcmV?d00001 diff --git a/mobile/res/menu/main.xml b/mobile/res/menu/main.xml index 921217aa..2b77b4d6 100644 --- a/mobile/res/menu/main.xml +++ b/mobile/res/menu/main.xml @@ -7,7 +7,7 @@ android:actionViewClass="android.widget.SearchView" /> @@ -21,7 +21,7 @@ diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java b/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java index 8db99742..ab423fdb 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java @@ -63,22 +63,22 @@ public class IITC_NavigationHelper extends ActionBarDrawerToggle implements OnIt int icon = 0; switch (item) { case MAP: - icon = R.drawable.location_map; + icon = R.drawable.ic_action_map; break; case INFO: icon = R.drawable.ic_action_about; break; case FULL: - icon = R.drawable.collections_view_as_list; + icon = R.drawable.ic_action_view_as_list; break; case COMPACT: - icon = R.drawable.collections_view_as_list_compact; + icon = R.drawable.ic_action_view_as_list_compact; break; case PUBLIC: - icon = R.drawable.social_group; + icon = R.drawable.ic_action_group; break; case FACTION: - icon = R.drawable.social_cc_bcc; + icon = R.drawable.ic_action_cc_bcc; break; case DEBUG: icon = R.drawable.ic_debug; diff --git a/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java b/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java index 3b330757..24523eeb 100644 --- a/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java +++ b/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java @@ -81,7 +81,7 @@ public class ShareActivity extends FragmentActivity implements ActionBar.TabList String geoUri = "geo:" + mLl; Intent geoIntent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(geoUri)); intents.add(geoIntent); - addTab(intents, R.string.tab_map, R.drawable.location_map); + addTab(intents, R.string.tab_map, R.drawable.ic_action_map); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(getUrl())); addTab(intent, R.string.tab_browser, R.drawable.ic_action_web_site); @@ -93,7 +93,7 @@ public class ShareActivity extends FragmentActivity implements ActionBar.TabList intent.setType("text/plain"); intent.putExtra(Intent.EXTRA_TEXT, str); intent.putExtra(Intent.EXTRA_SUBJECT, mTitle); - addTab(intent, R.string.tab_share, R.drawable.share); + addTab(intent, R.string.tab_share, R.drawable.ic_action_share); } @Override From b434b8175706ebe4b97f11c6a4410e556d7175c9 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Tue, 3 Dec 2013 22:57:15 +0100 Subject: [PATCH 025/109] drawable changes part 3 --- mobile/res/drawable-hdpi/ic_action_error.png | Bin 0 -> 345 bytes mobile/res/drawable-hdpi/ic_debug.png | Bin 1412 -> 0 bytes mobile/res/drawable-hdpi/ic_drawer.png | Bin 2842 -> 2826 bytes mobile/res/drawable-mdpi/ic_action_error.png | Bin 0 -> 299 bytes mobile/res/drawable-mdpi/ic_debug.png | Bin 1269 -> 0 bytes mobile/res/drawable-mdpi/ic_drawer.png | Bin 2837 -> 2816 bytes mobile/res/drawable-xhdpi/ic_action_error.png | Bin 0 -> 433 bytes mobile/res/drawable-xhdpi/ic_debug.png | Bin 1580 -> 0 bytes mobile/res/drawable-xhdpi/ic_drawer.png | Bin 1056 -> 1038 bytes .../res/drawable-xxhdpi/ic_action_error.png | Bin 0 -> 476 bytes mobile/res/drawable-xxhdpi/ic_drawer.png | Bin 0 -> 202 bytes .../iitc_mobile/IITC_NavigationHelper.java | 2 +- 12 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 mobile/res/drawable-hdpi/ic_action_error.png delete mode 100644 mobile/res/drawable-hdpi/ic_debug.png create mode 100644 mobile/res/drawable-mdpi/ic_action_error.png delete mode 100644 mobile/res/drawable-mdpi/ic_debug.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_error.png delete mode 100644 mobile/res/drawable-xhdpi/ic_debug.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_error.png create mode 100644 mobile/res/drawable-xxhdpi/ic_drawer.png diff --git a/mobile/res/drawable-hdpi/ic_action_error.png b/mobile/res/drawable-hdpi/ic_action_error.png new file mode 100644 index 0000000000000000000000000000000000000000..7837289c03f2ab80fb4fcd2a01028d03ec11f212 GIT binary patch literal 345 zcmV-f0jBgG}QA92G7&Uy1}tmO1`wI0~EpFg`2|0{{SkGea7a-m zJt~A>_%iJrdu55mZ3QIZH$;g9IfoZZPzT{f64Xif-4bLN{$1VQEF{S4&2xx*HGZ{N ziAx8c%{Qjl3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsViq(Z$To*xbz2$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq}R#B*u}ue2&Z09V#qB3+U$~Alv$RV;#QQOs{r=2 zRVHq?nBX)Isy79jTOj^0#i>^x=oo!a)FMSSObD2MKumbT1#;j?KQ#}S-iv?~)i9G0a*g?S8$EUmM!s_}9tJ(iM>~}cQ{6JmAWyQC3k6b^oAn-yt;i9&@ovw}xi`08HaNX$!MR-B6_uY^Y#99y z2(Q?7w6E^5Oa`OySwl_(mUoSrS6TcTj2Cb&nU$=RAYZ{+HR+`DL(dwnk{jJCAKvJY ztx#7K3{R<9(DSn3ezYp%%8%zfj;Kn?GfCeGUR?X@=-yzVLe68sS#r$&USW&Y6mys~ z%=8vgb6m4K_k?Et0mcu9?_Xq-fSo6=>4g6D01>*TeiLR97EF*R$`iaf(cPsayS@1|K@I>A}k7nyC zsZ-yPXu0(T8(N6kKImL829eotgJihyw(cdToNcO zv{Xvpl09akK=^YN_L);$o-TErdL%Rf(A&&0#P#4(j;x5=fMpmNdE)z4*}Q$iB}sDlEl diff --git a/mobile/res/drawable-hdpi/ic_drawer.png b/mobile/res/drawable-hdpi/ic_drawer.png index ff7b1def9ac3f86488a855f502b965ac75b633fb..6614ea4f4da2ffd9534f0ef5f20bcb00194005b2 100644 GIT binary patch delta 82 zcmbOw)+M�GF4kr;B5V$MNJJ|Nq-F>l!kj)y>Gs`s=SJx3wWlY(g)4JFBz3d{5ez mi#=wuF1i`tTEQB!fq`MicYgCpmfI>AfWXt$&t;ucLK6U36(7|A delta 98 zcmeAYnoN*6_cD417fauaTd{g=l1za-Pc3(Z1Q4`u y;g@Kyv6DEPu~;(KWN~lWmWw@ZybM6_|35Q>m8huUOY`YBL3~eFKbLh*2~7a^J|bxV diff --git a/mobile/res/drawable-mdpi/ic_action_error.png b/mobile/res/drawable-mdpi/ic_action_error.png new file mode 100644 index 0000000000000000000000000000000000000000..57274d77e4092eb64184a9ca1fd39a1feef6ff7a GIT binary patch literal 299 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1GXFXjULn>}1B}lL?PH13M*6jNK|Nnc2C095!b{{=)qN3py zA4AkT?j^4}L+){u97$Vc+2C^8vxr5xS4aJpV2?<|KS`1M0cIMpA0|EKP~)oM^U8Ut z(DOtfXMtRn*hjvGW#6i_o^7jIG1H~JL5g?N9x2a22YrKA4UFXs+^kiVjheS5j>&Pb zHw1k>)7Zll@NhEU(d{c_nT|;Okc{A(*D4k>zq7>PV=1GctKr5{#(TdSCY|cgGJW)5 tT_3w^b4q~8$&8yCvOuRFV036;WH88x`mx);lpW|X22WQ%mvv4FO#sr*aBlzr literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-mdpi/ic_debug.png b/mobile/res/drawable-mdpi/ic_debug.png deleted file mode 100644 index ac20ea13025fd07dd380e50fd056e42f015b36bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1269 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsViq$;8;jz{u3p$-vFf(ACh=#L&{!#L3yw z&D7A`#K{n**Cju>G&eP`1g19yq1OzjUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dZnqfY zG!Lpb1-DyFaO%|uIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1z?tM1zF9QQ(x~Gd{ zNX4x;(>LZFG7xbsT(ISCxDzdyHwY5QL`or66(H^1#S=zAHM{3hGM@AsXL=ak$1t{s^(D~tKlN?uuZ zztR&c4VNstZS<}5mj*%MEMBg6l`ue-c zWbG;Tg(p4OVxMk$nE!64mSpR)$D1Ba?K3S*@Ljm$iBCwC;>q_duf4Wi_j{MUV3POB j%zv{?*bP0l+XkKNq@>@ diff --git a/mobile/res/drawable-mdpi/ic_drawer.png b/mobile/res/drawable-mdpi/ic_drawer.png index fb681ba2639897cc4646d3784b97bbe16f5d4e91..b05c026c18ac30b1852ca8fd2a3e3efb42369bc8 100644 GIT binary patch delta 72 zcmbO#)*!aw0GETdr;B5V#p&c9|Nq-FtIk-saphNg!-@iF2a#i$3`ZL+q_{&mS{wV1 cEtKbG2#H(%_Hh5&r3^se>FVdQ&MBb@07RD^3jhEB delta 93 zcmZn=n<}>909UAkr;B4q#jT`2|Nq-Ft2QiMxwBV8_*K?wiH)7ch5;NJW(}>4jg1q9 vm?boMT~6&akm8=QyP?oT-+%!K{{LrYDBK~c_|M>MFNp8y>gTe~DWM4f&TArz diff --git a/mobile/res/drawable-xhdpi/ic_action_error.png b/mobile/res/drawable-xhdpi/ic_action_error.png new file mode 100644 index 0000000000000000000000000000000000000000..0933154a2dcad6488b1c709625cb14d2687acfa5 GIT binary patch literal 433 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+7=t}s978H@y_t28x7mQl^>LRrw}FFrg1Qx363>m5+#B53 z7IeJODRC6jXZ@Bid zeJj&HK8^+k7;4DMY^mGsUtiza_Noq@EITjG zVB-9AIM9)^>eyo@p)au$G&CIFi_Qcx<0mCeIUqF8_kds1ukK0U@L&iz<=nu?uy5a* UNpX|1Zi2)-UHx3vIVCg!09JdiH2?qr literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xhdpi/ic_debug.png b/mobile/res/drawable-xhdpi/ic_debug.png deleted file mode 100644 index aeb96b06d76af52c888f866851987f1a79927719..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1580 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+m{l@EB1$5BeXNr6bM+EIYV;~{3xK*A7;Nk-3KEmEQ%e+* zQqwc@Y?a>c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxKsVXI%uvD1M9IxIyg#@@$ndN=gc>^!3Zj z%k|2Q_413-^$jg8E%gnI^o@*kfhu&1EAvVcD|GXUm0>2hq!uR^WfqiV=I1GZOiWD5 zFD$Tv3bSNU;+l1ennz|zM-B0$V)JVzP|XC=H|jx7ncO3BHWAB;NpiyW)Z+ZoqGVvir744~DzI`cN=+=uFAB-e&w+(vKt_H^esM;Afr4|esh**NZ(?$0 z9!LbN!`Ii!Gq1QLF)umQ)5TT^Xog;9W{Q=Iql=lFvAL0{lYyI|p{t>#iJ_&diIcOV zo2j9>iIX8ruSMv>2~2MaLa#ASy`aR9TL84#CABECEH%ZgC_h&L>}jh^+-@3U0R;;?%1Tbc{YIYLTKECIn1BASOKF0y*%cpPC0u??u3by>!L4R0am7d7dtg zAr-gY%--)O?I>`pd@Xa+Ty}-LU{|gs-ZN(%>R96G?>d?5qUs?wRoPS8PXvWne4|!q zto+30@KT9QecPU&Zf88zUklyby}A7Pot`hA({#V()!%=!f9GMV=RR{6CuYfUIWTH4 zur6Q_XlXH3c&o&i;rRQ4nn_~~zl_+ehPD84DIKN; zwJXh50r4x&@;R$;l!wk^KJimI!~4cs#_g3yuCGX8OPTv$ljmCD>_;;%tl07SqOsyi zFezB@Z$f^CfxCLx&s%!NxBC}X|Fg+fyK&*FqUOQMSARIaFh@OnU*~v!L2le9uG1|` z9G+iZ;8)*%Zu!1?*1dBD8zR(HRC_9qTkqKuJ72rXZ-)2*;f(bSH}92~F8IN7_XyL6 zdE2+w2Cwxne#m>?@O{!-=39HVug~)NA-6cU#f_1D_9CN15#a_g7qDj`J{J)Brmw#5 zVb4~EiymGK22YCrf9_%2(pqcvJg{ORW6rab`%8LsJiMfs9@qc*c0Zj#HhjNB_{`VB z6T~m{Rj%L;6FV@e!TaLiOgs!m W$-5fdj76=L;K%v- z2IH%k-`Q-7%>@}5{M{?U{TM!WFf3@>!N3sHzzt!T9}rAnkcbp@6bdy-U;qM7S3j3^ HP6&OLAXu5KOxG zkY89)Ozxk6VA98j%iTE+pYIiDn=h@%V{h&xQJ2?Z@aGOk;*XtzhdvZ5yBvJD|NWl& z)gli=-rD~+>{vfH`}>YJPoKa4)=}`~#?SDU&lecg;%2;ZiM>-( zo82O^Gw&w|UW Date: Tue, 3 Dec 2013 23:03:58 +0100 Subject: [PATCH 026/109] drawable changes part 4 --- .../res/drawable-hdpi/ic_action_add_to_queue.png | Bin 0 -> 356 bytes mobile/res/drawable-hdpi/ic_layer_chooser.png | Bin 1714 -> 0 bytes .../res/drawable-mdpi/ic_action_add_to_queue.png | Bin 0 -> 303 bytes mobile/res/drawable-mdpi/ic_layer_chooser.png | Bin 1426 -> 0 bytes .../drawable-xhdpi/ic_action_add_to_queue.png | Bin 0 -> 416 bytes mobile/res/drawable-xhdpi/ic_layer_chooser.png | Bin 1839 -> 0 bytes .../drawable-xxhdpi/ic_action_add_to_queue.png | Bin 0 -> 493 bytes mobile/res/menu/main.xml | 2 +- 8 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 mobile/res/drawable-hdpi/ic_action_add_to_queue.png delete mode 100644 mobile/res/drawable-hdpi/ic_layer_chooser.png create mode 100644 mobile/res/drawable-mdpi/ic_action_add_to_queue.png delete mode 100644 mobile/res/drawable-mdpi/ic_layer_chooser.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_add_to_queue.png delete mode 100644 mobile/res/drawable-xhdpi/ic_layer_chooser.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_add_to_queue.png diff --git a/mobile/res/drawable-hdpi/ic_action_add_to_queue.png b/mobile/res/drawable-hdpi/ic_action_add_to_queue.png new file mode 100644 index 0000000000000000000000000000000000000000..ecebce715eec46f545ff7a0b7c71c5421ce8dedb GIT binary patch literal 356 zcmV-q0h|7bP)mN~yPN z;3~9GdgJ?zZ{QMp3W-F3!e6aOJ3}|K^jx|TpcT>#x$QG-E0IDvB*ZHX8!RAc6W4R) z?N1(bm7)S{p0*r+Pk!pzBS4cDbjx=xug#t*blb_Kzf@Z%h~C5y@U7jpU3i_c7h)*W zU33CM%QQR?V=FP{=Ja^i&$Jh%Z50k9p!MybuDqok{csU5_OvuDqxaBL)alCTC>}d8 z1Vk>Num;xB0=P_^OIM#HcH)ll&<+3q000*s0R{m6?mkEuO=hP600005UY-W3gd+%w%s6L|0vy=-S^&azVG{;Z?-f+ z6yxORN=XKs2uox+ zySm{>9FDL?kt{~V!Z?-`QIaKA3|X&KV{9BQa)Vwik!HdukPc@kRBY0-wu>Y{A!CzL z=t5Aa=E8DCY_0}Q$`vI`b2Ft(8EM0MAX3l51e7o;0rbi&m6oMvlV){U*xqWUkbqeT zn#m@;4@xXd0Jw+-2IyokL<)vcfiN1GN&}fR<~jfZsUU?4QNZvJD#)UTvp^~^_mD7e z8re=(A}@N*7j|NkHsr_v?e55<*;OvRYjWUV59Zjt0_k z*NS}4ksxDB%~1T*iJ{mb|D!w9xEY&^9c$!v@6!CI@lW?V5&IjK80`36Uluxi)t^3o z%&}Wc(>6_Sd8sSdH$r4^q+_~$Mr6cAk4xbciS=S#*|G7ep7WvS$Az?%*%Vb8z-0PVkWNb0`b*FOVbF#f#5U4 zm!ED-v<%h`;WwqZ8u2&t*WEZd?Pv3cd2KJDuGi?&?roqyDX#xXKUnOZ4pB2RFSQiv zv)8Di9-7m8ZC{-T+_5Uk%&r@6N%Lg%*!~KI^Ss*~d=y5fxS%tnH&_33{t@R}lb|Sn zedz4?8{HLskH@QnV*_2xzLd(~Mt;|+zUBnC?cEdcnLXhzc*n+QNrrpzFAF}~_Rg^K zZHn_Ane(;Kl#r>*rhzy+TG4jH+Za<&X+N!M`JKv=$Fkt+K3bgpRDF(LasD82>NcVC zQDNub&jf~Kk^9j1r3a?V+T%-gmY~CJJ=GldDro~@#!~gx-1vffWT|kQTjHMZyjqg4 zkytk#>1+D9%(HS>blx{7=?*&5^e(fQi*R7vn&sBAjW^Kf85Q^5MMgHT0j zQ(5bUffVRy`Ecj;^cD5ODASW>{$1W3V6S&u&v%=C_}aq0HGR`)x&KRQ7XG$*t9t3# zPoL+RwUY;sseubC)gC5?{U@(C^Esh`1?QGLU)8WSO=Q~Zha0!ZuNgo8nMJsnA3Cy( eK{yxrmpzChK((p<0r+<7Uqrwc@lHjh75)Q!?vo7w diff --git a/mobile/res/drawable-mdpi/ic_action_add_to_queue.png b/mobile/res/drawable-mdpi/ic_action_add_to_queue.png new file mode 100644 index 0000000000000000000000000000000000000000..1262bcf5bd3bee97622f28d0166387a08adbc4aa GIT binary patch literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWw1G7d>4ZLn>}1B}lL?PFTY1=EeKt|Ns4l6J~iX`LwyGr|0Df zCLd*`8IB8Cj-)q8C@+cd;7Ch0dV9age^RT5v%|FI6JIuLzEZ$&VnU=!)En+2lUhUs zpE4wzvh_ZpZn3Dhgxx{7%aApbPkHr2X6AXkCkq{{Ol1!^tzrwPVsH~)c`MIR_TS7T z_6ec)jE(A!P3>T};S~^OdU+wI6Q$=pBZ&K*zPbcP7vu~TE*1Bz|3H~$VUA3#{7*y&oOwq`njxgN@xNAgVJta literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-mdpi/ic_layer_chooser.png b/mobile/res/drawable-mdpi/ic_layer_chooser.png deleted file mode 100644 index 8ba65bd86acce8b7c87d371468539a1ffd28650d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1426 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz$r9IylHmNblJdl&R0hYC{G?O` z&)mfH)S%SFl*+=BsWuD@%qp275hW46K32*3xq68pHF_1f1wh>l3^w)^1&PVosU-?Y zsp*+{wo31J?^jaDOtDo8H}y5}EpSfF$n>ZxN)4{^3rViZPPR-@vbR&PsjvbXkegbP zs8ErclUHn2VXFi-*9yo63F|8hm3bwJ6}oxF$}kgLQj3#|G7CyF^YauyCMG83 zmzLNn0bL65LT&-v*t}wBFaZNhzap_f-%!s00+w{G(#^lGsVil(#^@l#n95i&B)l$(ACh<+11q5+0@a= z)y&Pv)yNX2*Cju>G&eP`1g19yq1O?oUQlAlEdbi=l3J8mmYU*Ll%J~r_Ow+dR<~G~ znYbER;4}}aHwCv_aO>3vIz}H9wMbD769T3m5EGtofgE_!Pt60S_ab1z_Sz5u%oa>6 zo-U3d6}R3@_ttj~6lwh`xL)87qp+dbWIh)UuR~{If;yF=QXN<}^G$JEqI=LK*wn~a z*-&*NhwGmB&i#!+uT@^3DlDGAb_uiX$?4m)w^y&Tr`1A|ACMD=V!MWmlg${oxP-MhEX4wrSCxCCjNi0ePAjq%t}Eb> z3Q-gBo$+E@)&ZTJw_JKY+cWXaFgUoX{h-}e)eGrq2eOK8wn*z3Kh(IvT$(U3v_DYT z@Nky!JElpieRUYvIRf7^3f76=(%NdUHTI?hyKMMvpLIPt$*wzM)g_ltKXzr7K_Fw< z6wQn$HmTe@R@ZH6NK+H~-lEUE*7Mx~v)ksp_ax7pD=2t1X^q8+uL_UyvobWZ_Fr?D zHNVVP<7DuhV+<0{nf$Xdq7(i-KQGmvVkfQUazJatIajlzfAx>Cy%!cXnXvfeihFt+ zZgZ+XFKT5=JD~8~V&THI7neNUe1JXgz|ImrjgHL^QoqAaH^_2!>6n(TtDqj z7voKrw&k~FIhe#}Ocu(_RNVX{Ox~lVGx~!9YcA{g2Nzw8k0d@mdgT0DvFTzD8CE=9 t6uhPGrGwG^!%NK($m$?Wt~$(69C!^|H=RW diff --git a/mobile/res/drawable-xhdpi/ic_action_add_to_queue.png b/mobile/res/drawable-xhdpi/ic_action_add_to_queue.png new file mode 100644 index 0000000000000000000000000000000000000000..8190ee04bd2d88ad3b0dfe0d5f7a760c8cacf145 GIT binary patch literal 416 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=k|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+7@a&_978H@y_s>5x5+@Dt?|bx2Au;;>lCveFq}Kcu&b?a zA-6#T-vfpU6&n+~En06yUw&7ep5-LK zTXObh+|;MFk0rA29AlFEmZ5Y1ezoP#a~7$yS^tGKWO0e_3;OdqF+H^Tg8pGXQwBx> z2F4`OgSRgJ3)4R!WVa%Tk!40^zopr03lnb-~a#s literal 0 HcmV?d00001 diff --git a/mobile/res/drawable-xhdpi/ic_layer_chooser.png b/mobile/res/drawable-xhdpi/ic_layer_chooser.png deleted file mode 100644 index 46089e5ba85999496abba3dc93a66f7373cc8793..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1839 zcmaJ?Yfuwc6b?y10nteS5fohmDkx+(5dv8rLP(IP$zX_@DpEqSKn%$)$!Y>c3rbaL zr3j87K6nW&S_-uwIt>NvU_q1_rM5r;qoOE9p->&2j@pd^_DAW??7ionIp25Az4tqF zbE3uT9qiofNFyVgqu~d<+R&bS!b)i785he&U2rdVVniQ=bHij_X@xp{{af1xt zT?noYVZ1L&CW;0kP#psJGa+9E#9;v(KPJl$;`(uY05-&eKo%Q>0(@Bz>>mI_EMV$m z5ZQFfL|DR)oXSP4LKw+7j=>;kFc_GIwMrdTAPlfD%NH?$#-Yi%aydq{83`9U{k3ofJh=rcW_C8O2e3GKv8aG5$;z zAd)LoT8rl$LL`EPT0Jh;Di9$*gh6mHRVpP6aRWJi0yaA^lD(G260pJ}1pa~u|8Smw z6Ui2^xzkuas@SbTwD>eu`2o9jR;)z~8jQ%yM|7$^h%!=#YJhi}hE=oI0?o=dg;ma8 z3u{&^NE8EFuJ&J7J?$d&V=-rhODtxjk7xj+_g-2@&Z`lU?B50@JIMt20Mox>Lm zG!0d{Y|OE7ZoB5Sy6Pg$nszkVF86 z(CWu&juH9K=bc_t@TYdqi>}dUQI8IE`>c}xsPF2!vF{f2d3ii%n|IN}ht}g{qm_vi zM*=flTI|ilvZv;CSmU*^#+!OxCa2V~$EJR`oiMkW;W`@`ssD?Q{^FU71!o<}^{H8Z zWPaSTsBZ3KtF1!Ql@{0drWJ%=dS=X=aAC#5CRwUDcri7UB3fwt%)S(^Ju%YnG@kwJ z4XM~6Ez;RdoW1=@-sMLRcUgs6?QDTcG-M`uGBefQ6ziBblp&$>9aM1e@h$WbQJCBC z88Od$j%Dnl76pze=^MCk3CGsg%{11s1dtfrFIgWB8rB?+4*6}{WN(bwXDGNl_l5ye?ESrOHf$@I?A>l=*EubssVjlInGag*C;GfgZ>SSt zW!z43PsZ?W{>u)*x|re}JOgFWZvDtmWx91r^Q7?kVlPVJxuPRCN9T@b-L;_wG^MBY z*|vA5HEdcUK9ikK>AK*5Hi`ZV)#*t_EIn7axMFnND=LELN?+yW4$RSx@0}mG zWS}FFL5Umnj=q=cy)VAJGGUdU&wa30sF3}`*y+t z%HPMUHW_mQS{eCyrzYWmR#QRr{h;&koh?7zx>!A_3OzUx#miwVm?&~n6dcNI>Tj=V zS5udgk~-9$W2LuEFL@bG!x?>9?Muy6LwC-+VwYt+Lz?X=WlG!4ngT<9)cxm_#@=tt zXFN~|y*kJC*}aE9U*~%r@szqhEzGTAf2nAA6*#zu<2`8;*jxwGE;g-_y1Sc8E8t)0 zB2CS`j3wwfo7#ZR>bj$zJy>W?VXw5u&-T*kk{lQ1Nm7Al-~*G8JR;g3)Af5)Sg~i| zu<0oE@yfCjG3C{hZn+~9`x%Z<41E`O1)u)uo!&NDqc`XUTcrw%I;tCS>7jt@RWfCF)erSF?7h9FpXf3O5U4t)p33k5S lxOt{2rh25sr)C{_9tpc&JKt47-)DKkgaR@DTVDMBe*lI@!G!<- diff --git a/mobile/res/drawable-xxhdpi/ic_action_add_to_queue.png b/mobile/res/drawable-xxhdpi/ic_action_add_to_queue.png new file mode 100644 index 0000000000000000000000000000000000000000..c30aade6e3a8f9d2a5d7b1c04da431801a5e10d7 GIT binary patch literal 493 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGok|nMYCBgY=CFO}lsSJ)O`AMk? zp1FzXsX?iUDV2pMQ*9U+82de4978H@y}5PQ_fUWY+k|*Ol z6fa@`$MIr4CP%8QA`323?3O~z7}U3Zgm*1yS`FtpWp%(P6oz| zLmRjA-s9foo}2MuE>K93fze?4)DO{Z-ydzX%E>%$-(ax%gkFPzar80{2hK~(EDo8z z7R}5bqI<0z&adQLZpX0y>I&u(RS$j#2Brl+rhZs@({sl*^?LJ%Q5*{MzP>a&I>ldJ z!%@VL$!nwKI@NQhmop^IC=y-E@{*AWsKbHb8e{#_>^hs0Ti1AJoV9@g=w}c*@PG1cr<|+b|DNIi+sLGFJMzMX!=GZ_y6^*o e5C{xwxC|Il6J5&-H4oK+1Uy~+T-G@yGywon4#)if literal 0 HcmV?d00001 diff --git a/mobile/res/menu/main.xml b/mobile/res/menu/main.xml index 2b77b4d6..8ddb56e3 100644 --- a/mobile/res/menu/main.xml +++ b/mobile/res/menu/main.xml @@ -14,7 +14,7 @@ From 6c0327b01c2e492e93880f0a83a455a4813ab0ce Mon Sep 17 00:00:00 2001 From: fkloft Date: Tue, 3 Dec 2013 23:07:05 +0100 Subject: [PATCH 027/109] Show a hint that plugins are now in the nav drawer --- mobile/res/values/strings.xml | 6 ++++++ .../src/com/cradle/iitc_mobile/IITC_NavigationHelper.java | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/mobile/res/values/strings.xml b/mobile/res/values/strings.xml index 1babb023..7fe993dd 100644 --- a/mobile/res/values/strings.xml +++ b/mobile/res/values/strings.xml @@ -68,6 +68,12 @@ • tap and hold a portal for a second
• tap on the left half of the status bar]]> + +
+ Some plugins (e.g. portals list and bookmarks) now appear in the navigation drawer for quick access.
+ They won\'t appear in the info pane any more.

+ Swipe from the left edge of your screen (or click the app icon) to seem them.]]> +
UI Misc diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java b/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java index e8aaa085..0b61a00d 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java @@ -36,6 +36,7 @@ public class IITC_NavigationHelper extends ActionBarDrawerToggle implements OnIt public static final int NOTICE_DRAWERS = 1 << 0; public static final int NOTICE_INFO = 1 << 1; + public static final int NOTICE_PANES = 1 << 2; // next one would be 1<<2; (this results in 1,2,4,8,...) private final IITC_Mobile mIitc; @@ -87,6 +88,9 @@ public class IITC_NavigationHelper extends ActionBarDrawerToggle implements OnIt case NOTICE_INFO: text = mIitc.getText(R.string.notice_info).toString(); break; + case NOTICE_PANES: + text = mIitc.getText(R.string.notice_panes).toString(); + break; default: return; } @@ -169,6 +173,8 @@ public class IITC_NavigationHelper extends ActionBarDrawerToggle implements OnIt } public void addPane(String name, String label, String icon) { + showNotice(NOTICE_PANES); + int resId = mIitc.getResources().getIdentifier(icon, "drawable", mIitc.getPackageName()); mNavigationAdapter.add(new Pane(name, label, resId)); } From 18bacd956a84f5813b17460e64e77a0be4a911a0 Mon Sep 17 00:00:00 2001 From: maubry Date: Tue, 3 Dec 2013 17:47:28 -0500 Subject: [PATCH 028/109] accidental copy and pasta! plugin: portals list - fix for changes to Niantc data Issue #668 --- plugins/portals-list.user.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/portals-list.user.js b/plugins/portals-list.user.js index 931fbf5a..fcddc4ff 100644 --- a/plugins/portals-list.user.js +++ b/plugins/portals-list.user.js @@ -132,7 +132,7 @@ window.plugin.portalslist.portalTable = function(sortBy, sortOrder, filter) { //Array sort window.plugin.portalslist.listPortals.sort(function(a, b) { var retVal = 0; - switch (sortBy) { win + switch (sortBy) { case 'names': retVal = a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1; break; @@ -165,7 +165,7 @@ window.plugin.portalslist.portalTable = function(sortBy, sortOrder, filter) { html += '' + portal.health + '' + '' + portal.resCount + '' - + '' + portal.linkCount + '' + + '' + portal.linkCount + '' + '' + portal.fieldCount + ''; html+= ''; From 99a0b3e975350579a6dcdb80a4022821574b51d2 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Tue, 3 Dec 2013 23:29:48 +0000 Subject: [PATCH 029/109] delete the old broken version of portals-list --- plugins/broken/portals-list.user.js | 453 ---------------------------- 1 file changed, 453 deletions(-) delete mode 100644 plugins/broken/portals-list.user.js diff --git a/plugins/broken/portals-list.user.js b/plugins/broken/portals-list.user.js deleted file mode 100644 index 2b439f92..00000000 --- a/plugins/broken/portals-list.user.js +++ /dev/null @@ -1,453 +0,0 @@ -// ==UserScript== -// @id iitc-plugin-portals-list@teo96 -// @name IITC plugin: show list of portals -// @category Info -// @version 0.0.18.@@DATETIMEVERSION@@ -// @namespace https://github.com/jonatkins/ingress-intel-total-conversion -// @updateURL @@UPDATEURL@@ -// @downloadURL @@DOWNLOADURL@@ -// @description [@@BUILDNAME@@-@@BUILDDATE@@] Display a sortable list of all visible portals with full details about the team, resonators, shields, etc. -// @include https://www.ingress.com/intel* -// @include http://www.ingress.com/intel* -// @match https://www.ingress.com/intel* -// @match http://www.ingress.com/intel* -// @grant none -// ==/UserScript== - -@@PLUGINSTART@@ - -// PLUGIN START //////////////////////////////////////////////////////// - -/* whatsnew -* 0.0.15: Add 'age' column to display how long each portal has been controlled by its current owner. -* 0.0.14: Add support to new mods (S:Shield - T:Turret - LA:Link Amp - H:Heat-sink - M:Multi-hack - FA:Force Amp) -* 0.0.12: Use dialog() instead of alert so the user can drag the box around -* 0.0.11: Add nominal energy column and # links, fix sort bug when opened even amounts of times, nits -* 0.0.10: Fixed persistent css problem with alert -* 0.0.9 : bugs hunt -* 0.0.8 : Aborted to avoid problems with Niantic (export portals informations as csv or kml file) -* 0.0.7 : more informations available via tooltips (who deployed, energy, ...), new E/AP column -* 0.0.6 : Add power charge information into a new column + bugfix -* 0.0.5 : Filter portals by clicking on 'All portals', 'Res Portals' or 'Enl Portals' -* 0.0.4 : Add link to portals name, one click to display full information in portal panel, double click to zoom on portal, hover to show address -* 0.0.3 : sorting ascending/descending and add numbers of portals by faction on top on table -* 0.0.2 : add sorting feature when click on header column -* 0.0.1 : initial release, show list of portals with level, team, resonators and shield information -* -* Display code inspired from @vita10gy's scoreboard plugin : iitc-plugin-scoreboard@vita10gy - https://github.com/breunigs/ingress-intel-total-conversion -* Portal link code from xelio - iitc: AP List - https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/ap-list.user.js -* -* todo : export as GPX, Open in Google Maps, more statistics in the header, what else ? -*/ - -// use own namespace for plugin -window.plugin.portalslist = function() {}; - -window.plugin.portalslist.listPortals = []; // structure : name, team, level, resonators = Array, Shields = Array, APgain, Age -window.plugin.portalslist.sortOrder=-1; -window.plugin.portalslist.enlP = 0; -window.plugin.portalslist.resP = 0; -window.plugin.portalslist.filter=0; - -//fill the listPortals array with portals avaliable on the map (level filtered portals will not appear in the table) -window.plugin.portalslist.getPortals = function() { - //filter : 0 = All, 1 = Res, 2 = Enl - //console.log('** getPortals'); - var retval=false; - - var displayBounds = map.getBounds(); - - window.plugin.portalslist.listPortals = []; - //get portals informations from IITC - $.each(window.portals, function(i, portal) { - // eliminate offscreen portals (selected, and in padding) - if(!displayBounds.contains(portal.getLatLng())) return true; - - retval=true; - var d = portal.options.details; - var name = d.portalV2.descriptiveText.TITLE; - var address = d.portalV2.descriptiveText.ADDRESS; - var img = getPortalImageUrl(d); - var team = portal.options.team; - var now = new Date(); - var now_ms = now.getTime();// + (now.getTimezoneOffset() * 60000); - var age_in_seconds = 0; - var age_string_long = 'This portal is not captured.'; - var age_string_short = 'n/a'; - if(portal.options.details.hasOwnProperty('captured') && portal.options.details.captured.hasOwnProperty('capturedTime')) { - var age_in_seconds = Math.floor((now_ms - portal.options.details.captured.capturedTime)/1000); - var age_string_long = window.plugin.portalslist.secondsToString(age_in_seconds, 'l'); - var age_string_short = window.plugin.portalslist.secondsToString(age_in_seconds, 's'); - } - - switch (team){ - case 1 : - window.plugin.portalslist.resP++; - break; - case 2 : - window.plugin.portalslist.enlP++; - break; - } - var level = getPortalLevel(d).toFixed(2); - var guid = portal.options.guid; - - - //get resonators informations - var resonators = []; // my local resonator array : reso level, reso deployed by, distance to portal, energy total, max - var energy = 0; - var maxenergy=0; - $.each(portal.options.details.resonatorArray.resonators, function(ind, reso) { - if(reso) { - resonators[ind] = [reso.level, window.getPlayerName(reso.ownerGuid), reso.distanceToPortal, reso.energyTotal, RESO_NRG[reso.level]]; - energy += reso.energyTotal; - maxenergy += RESO_NRG[reso.level]; - } else { resonators[ind] = [0,'',0,0,0]; } - }); - // Sort resonators array by resonator level - resonators.sort(function (a, b) {return b[0] - a[0]}); - - //get mods informations - var mods = []; - $.each(d.portalV2.linkedModArray, function(ind, mod) { - var modShortName=''; - if (mod) { - switch (mod.displayName) { - case 'Portal Shield': - modShortName = 'S'; - break; - case 'Force Amp': - modShortName = 'FA'; - break; - case 'Link Amp': - modShortName = 'LA'; - break; - case 'Heat Sink': - modShortName = 'H'; - break; - case 'Multi-hack': - modShortName = 'M'; - break; - case 'Turret': - modShortName = 'T'; - break; - default: - modShortName = ''; - break; - } - if (modShortName === '') { - mods[ind] = ['', '', '']; - } else { - if ((modShortName === 'S') && - ((mod.rarity=='COMMON' && mod.stats.MITIGATION == 6) || - (mod.rarity=='RARE' && mod.stats.MITIGATION == 8) || - (mod.rarity=='VERY_RARE' && mod.stats.MITIGATION == 10))) - modShortName=modShortName+'!'; - mods[ind] = [mod.rarity, getPlayerName(mod.installingUser), modShortName, mod.displayName]; - } - }else { mods[ind] = ['', '', '']; } - }); - - var APgain= getAttackApGain(d).enemyAp; - var thisPortal = {'portal': d, - 'name': name, - 'team': team, - 'level': level, - 'guid': guid, - 'resonators': resonators, - 'energyratio': maxenergy ? Math.floor(energy/maxenergy*100) : 0, - 'mods': mods, - 'APgain': APgain, - 'EAP': (energy/APgain).toFixed(2), - 'energy': energy, - 'maxenergy': maxenergy, - 'links': d.portalV2.linkedEdges.length, - 'lat': portal._latlng.lat, - 'lng': portal._latlng.lng, - 'address': address, - 'img': img, - 'age': age_in_seconds, - 'age_string_long': age_string_long, - 'age_string_short': age_string_short}; - window.plugin.portalslist.listPortals.push(thisPortal); - }); - - return retval; -} - -window.plugin.portalslist.displayPL = function() { - // debug tools - //var start = new Date().getTime(); - //console.log('***** Start ' + start); - - var html = ''; - window.plugin.portalslist.sortOrder=-1; - window.plugin.portalslist.enlP = 0; - window.plugin.portalslist.resP = 0; - - if (window.plugin.portalslist.getPortals()) { - html += window.plugin.portalslist.portalTable('level', window.plugin.portalslist.sortOrder,window.plugin.portalslist.filter); - } else { - html = '
Nothing to show!
'; - }; - - dialog({ - html: '
' + html + '
', - dialogClass: 'ui-dialog-portalslist', - title: 'Portal list: ' + window.plugin.portalslist.listPortals.length + ' ' + (window.plugin.portalslist.listPortals.length == 1 ? 'portal' : 'portals'), - id: 'portal-list', - width: 800 - }); - - //run the name resolving process - resolvePlayerNames(); - - //debug tools - //end = new Date().getTime(); - //console.log('***** end : ' + end + ' and Elapse : ' + (end - start)); -} - -window.plugin.portalslist.portalTable = function(sortBy, sortOrder, filter) { - // sortOrder <0 ==> desc, >0 ==> asc, i use sortOrder * -1 to change the state - window.plugin.portalslist.filter=filter; - var portals=window.plugin.portalslist.listPortals; - - //Array sort - window.plugin.portalslist.listPortals.sort(function(a, b) { - var retVal = 0; - switch (sortBy) { - case 'names': - retVal = a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1; - break; - case 'r1': - retVal = b.resonators[0][0] - a.resonators[0][0]; - if (retVal) - break; - case 'r2': - retVal = b.resonators[1][0] - a.resonators[1][0]; - if (retVal) - break; - case 'r3': - retVal = b.resonators[2][0] - a.resonators[2][0]; - if (retVal) - break; - case 'r4': - retVal = b.resonators[3][0] - a.resonators[3][0]; - if (retVal) - break; - case 'r5': - retVal = b.resonators[4][0] - a.resonators[4][0]; - if (retVal) - break; - case 'r6': - retVal = b.resonators[5][0] - a.resonators[5][0]; - if (retVal) - break; - case 'r7': - retVal = b.resonators[6][0] - a.resonators[6][0]; - if (retVal) - break; - case 'r8': - retVal = b.resonators[7][0] - a.resonators[7][0]; - break; - case 's1': - retVal = a.mods[0][2] > b.mods[0][2] ? -1 : 1; - break; - case 's2': - retVal = a.mods[1][2] > b.mods[1][2] ? -1 : 1; - break; - case 's3': - retVal = a.mods[2][2] > b.mods[2][2] ? -1 : 1; - break; - case 's4': - retVal = a.mods[3][2] > b.mods[3][2] ? -1 : 1; - break; - default: - retVal = b[sortBy] - a[sortBy]; - break; - } - if (sortOrder > 0) retVal = -retVal; //thx @jonatkins - return retVal; - }); - - var sort = window.plugin.portalslist.portalTableSort; - var html = window.plugin.portalslist.stats(); - html += '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + ''; - - - $.each(portals, function(ind, portal) { - - if (filter === 0 || filter === portal.team) { - html += '' - + '' - + '' - + ''; - - var mitigationDetails = getPortalMitigationDetails(portal.portal); - portal.mitigation = mitigationDetails.total + mitigationDetails.excess; - - var title; - var percent; - $.each([0, 1, 2, 3 ,4 ,5 ,6 ,7], function(ind, slot) { - percent = portal.resonators[slot][4] ? Math.floor(portal.resonators[slot][3]/portal.resonators[slot][4]*100) : 0; - title = 'title="owner: ' + portal.resonators[slot][1] + '
' - + 'energy: ' + portal.resonators[slot][3] + ' / ' + portal.resonators[slot][4] + ' (' + percent + '%)
' - + 'distance: ' + portal.resonators[slot][2] + 'm'; - - html += ''; - - }); - - html += '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' - + ''; - - html+= ''; - } - }); - html += '
PortalLevelTR1R2R3R4R5R6R7R8Energy%LinksM1M2M3M4Mit.AP GainE/APAge
' + window.plugin.portalslist.getPortalLink(portal.portal, portal.guid) + '' + portal.level + '' + portal.team + '' + portal.resonators[slot][0] + '' + prettyEnergy(portal.energy) + '' + portal.energyratio + '%' + portal.links + '' + portal.mods[0][2] + '' + portal.mods[1][2] + '' + portal.mods[2][2] + '' + portal.mods[3][2] + '' + portal.mitigation + '' + portal.APgain + '' + portal.EAP + '' + portal.age_string_short + '
'; - - html += '
'; - - window.plugin.portalslist.sortOrder = window.plugin.portalslist.sortOrder*-1; - return html; -} - -window.plugin.portalslist.stats = function(sortBy) { - //console.log('** stats'); - var html = '' - + '' - + '' - + '' - + '' - + '
All Portals : (click to filter)' + window.plugin.portalslist.listPortals.length + 'Resistance Portals : ' + window.plugin.portalslist.resP +' (' + Math.floor(window.plugin.portalslist.resP/window.plugin.portalslist.listPortals.length*100) + '%)Enlightened Portals : '+ window.plugin.portalslist.enlP +' (' + Math.floor(window.plugin.portalslist.enlP/window.plugin.portalslist.listPortals.length*100) + '%)
'; - return html; -} - -// A little helper function so the above isn't so messy -window.plugin.portalslist.portalTableSort = function(name, by) { - var retVal = 'data-sort="' + name + '"'; - if(name === by) { - retVal += ' class="sorted"'; - } - return retVal; -}; - -// portal link - single click: select portal -// double click: zoom to and select portal -// hover: show address -// code from getPortalLink function by xelio from iitc: AP List - https://raw.github.com/breunigs/ingress-intel-total-conversion/gh-pages/plugins/ap-list.user.js -window.plugin.portalslist.getPortalLink = function(portal,guid) { - - var latlng = [portal.locationE6.latE6/1E6, portal.locationE6.lngE6/1E6].join(); - var jsSingleClick = 'window.renderPortalDetails(\''+guid+'\');return false'; - var jsDoubleClick = 'window.zoomToAndShowPortal(\''+guid+'\', ['+latlng+']);return false'; - var perma = '/intel?latE6='+portal.locationE6.latE6+'&lngE6='+portal.locationE6.lngE6+'&z=17&pguid='+guid; - - //Use Jquery to create the link, which escape characters in TITLE and ADDRESS of portal - var a = $('',{ - "class": 'help', - text: portal.portalV2.descriptiveText.TITLE, - title: portal.portalV2.descriptiveText.ADDRESS, - href: perma, - onClick: jsSingleClick, - onDblClick: jsDoubleClick - })[0].outerHTML; - var div = '
'+a+'
'; - return div; -} - -// length can be "s" or "l" for "short" or "long" -window.plugin.portalslist.secondsToString = function(seconds, length) { - var numdays = Math.floor(seconds / 86400); - var numhours = Math.floor((seconds % 86400) / 3600); - var numminutes = Math.floor(((seconds % 86400) % 3600) / 60); - var numseconds = ((seconds % 86400) % 3600) % 60; - if(length === "l") { - return numdays + " days " + numhours + " hours " + numminutes + " minutes " + numseconds + " seconds"; - } else { - return numdays + "d" + numhours + "h"; - } -} - -var setup = function() { - $('#toolbox').append('
Portals list'); - $('head').append(''); - // Setup sorting - $(document).on('click.portalslist', '#portalslist table th', function() { - $('#portalslist').html(window.plugin.portalslist.portalTable($(this).data('sort'),window.plugin.portalslist.sortOrder,window.plugin.portalslist.filter)); - }); - $(document).on('click.portalslist', '#portalslist .filterAll', function() { - $('#portalslist').html(window.plugin.portalslist.portalTable($(this).data('sort'),window.plugin.portalslist.sortOrder,0)); - }); - $(document).on('click.portalslist', '#portalslist .filterRes', function() { - $('#portalslist').html(window.plugin.portalslist.portalTable($(this).data('sort'),window.plugin.portalslist.sortOrder,1)); - }); - $(document).on('click.portalslist', '#portalslist .filterEnl', function() { - $('#portalslist').html(window.plugin.portalslist.portalTable($(this).data('sort'),window.plugin.portalslist.sortOrder,2)); - }); -} - -// PLUGIN END ////////////////////////////////////////////////////////// - -@@PLUGINEND@@ From 89b23e8fbc0fb83358d6a4d28c10c1eb01585693 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Tue, 3 Dec 2013 23:34:53 +0000 Subject: [PATCH 030/109] decrease width from 800 to 700 pixels - resolves issues on mobile --- plugins/portals-list.user.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/plugins/portals-list.user.js b/plugins/portals-list.user.js index fcddc4ff..ce61c6a6 100644 --- a/plugins/portals-list.user.js +++ b/plugins/portals-list.user.js @@ -117,7 +117,7 @@ window.plugin.portalslist.displayPL = function() { dialogClass: 'ui-dialog-portalslist', title: 'Portal list: ' + window.plugin.portalslist.listPortals.length + ' ' + (window.plugin.portalslist.listPortals.length == 1 ? 'portal' : 'portals'), id: 'portal-list', - width: 800 + width: 700 }); //run the name resolving process @@ -227,9 +227,6 @@ window.plugin.portalslist.getPortalLink = function(portal,guid) { var setup = function() { $('#toolbox').append(' Portals list'); $('head').append(''); - - }; var setup = window.plugin.miniMap.setup; From 0df056f083e6331d5eb5262c48fb55e68728323c Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Wed, 4 Dec 2013 19:49:03 +0100 Subject: [PATCH 040/109] renamed drawer notice since it is used as howto now --- .../src/com/cradle/iitc_mobile/IITC_NavigationHelper.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java b/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java index 00f55636..79ce1b9f 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java @@ -36,7 +36,7 @@ public class IITC_NavigationHelper extends ActionBarDrawerToggle implements OnIt // Makes the icon/title clickable // getActionBar().setHomeButtonEnabled(enabled); - public static final int NOTICE_DRAWERS = 1 << 0; + public static final int NOTICE_HOWTO = 1 << 0; public static final int NOTICE_INFO = 1 << 1; public static final int NOTICE_PANES = 1 << 2; // next one would be 1<<2; (this results in 1,2,4,8,...) @@ -77,7 +77,7 @@ public class IITC_NavigationHelper extends ActionBarDrawerToggle implements OnIt onPrefChanged(); // also calls updateActionBar() - showNotice(NOTICE_DRAWERS); + showNotice(NOTICE_HOWTO); } private void showNotice(final int which) { @@ -85,7 +85,7 @@ public class IITC_NavigationHelper extends ActionBarDrawerToggle implements OnIt int text; switch (which) { - case NOTICE_DRAWERS: + case NOTICE_HOWTO: text = R.string.notice_how_to; break; case NOTICE_INFO: From c537811e9b996bdcda80510d4e04e17fd3654796 Mon Sep 17 00:00:00 2001 From: fkloft Date: Wed, 4 Dec 2013 19:58:15 +0100 Subject: [PATCH 041/109] Remove zoom slider from minimap --- plugins/zoom-slider.user.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/plugins/zoom-slider.user.js b/plugins/zoom-slider.user.js index d54e4be0..0b5a96a9 100644 --- a/plugins/zoom-slider.user.js +++ b/plugins/zoom-slider.user.js @@ -27,6 +27,11 @@ window.plugin.zoomSlider.setup = function() { @@INCLUDERAW:external/L.Control.Zoomslider.js@@ try { console.log('done loading Leaflet.zoomslider JS'); } catch(e) {} + // prevent Zoomslider from being activated by default (e.g. in minimap) + L.Map.mergeOptions({ + zoomsliderControl: false + }); + if(map.zoomControl._map) { window.map.removeControl(map.zoomControl); } @@ -35,7 +40,7 @@ window.plugin.zoomSlider.setup = function() { $('head').append(''); }; -var setup = window.plugin.zoomSlider.setup; +var setup = window.plugin.zoomSlider.setup; // PLUGIN END ////////////////////////////////////////////////////////// From c70b7ac1ca250f031664a68b54f8c6862cfdbe68 Mon Sep 17 00:00:00 2001 From: fkloft Date: Thu, 5 Dec 2013 19:03:55 +0100 Subject: [PATCH 042/109] Fix guess-player-levels (Under certain circumstances, flipped portals weren't detected correctly. Also, guessing has improved: Resonators not deployed by the owner can safely be used for level guessing) --- plugins/guess-player-levels.user.js | 52 ++++++++++++++++++----------- 1 file changed, 33 insertions(+), 19 deletions(-) diff --git a/plugins/guess-player-levels.user.js b/plugins/guess-player-levels.user.js index 920a2295..78089cba 100644 --- a/plugins/guess-player-levels.user.js +++ b/plugins/guess-player-levels.user.js @@ -119,33 +119,47 @@ window.plugin.guessPlayerLevels.extractPortalData = function(data) { var r = data.details.resonatorArray.resonators; - //due to the Jarvis Virus/ADA Refactor it's possible for a player to own resonators on a portal - //at a higher level than the player themselves. It is not possible to detect for sure when this - //has happened, but in many cases it will result in an impossible deployment arrangement - //(over 1 L8/7 res, over 2 L6/5 res, etc). if we detect this case, ignore all resonators owned - //by that player on the portal + /* Due to the Jarvis Virus/ADA Refactor it's possible for a player to own resonators on a portal at a higher level + than the player themselves. It is not possible to detect for sure when this has happened, but in many cases it will + result in an impossible deployment arrangement (more than 1 L8/7 res, more than 2 L6/5 res, etc). If we detect this + case, we ignore all resonators owned by that player on the portal + Hint: This can only happen to the owner of the portal, so resonators by other players can be used to determine + their minimal level */ -// TODO? go further, and just ignore all resonators owned by the portal owner? -// or; have a 'guessed' level and a 'certain' level. 'certain' comes from res from non-owner, and COMM deploy -// while 'guessed' comes from resonators of the portal owner + var owner = data.details.captured && data.details.captured.capturingPlayerId || ""; - var perPlayerResMaxLevel = {}; - var perPlayerResMaxLevelCount = {}; + var players = {}; $.each(r, function(ind, reso) { if(!reso) return true; - if(!perPlayerResMaxLevel[reso.ownerGuid] || reso.level > perPlayerResMaxLevel[reso.ownerGuid]) { - perPlayerResMaxLevel[reso.ownerGuid] = reso.level; - perPlayerResMaxLevelCount[reso.ownerGuid] = 0; - } - if (reso.level == perPlayerResMaxLevel[reso.ownerGuid]) perPlayerResMaxLevelCount[reso.ownerGuid]++; + if(!players[reso.ownerGuid]) players[reso.ownerGuid] = []; + + if(players[reso.ownerGuid][reso.level] === undefined) + players[reso.ownerGuid][reso.level] = 1 + else + players[reso.ownerGuid][reso.level]++; }); - $.each(perPlayerResMaxLevel, function(guid, level) { - if (perPlayerResMaxLevelCount[guid] <= window.MAX_RESO_PER_PLAYER[level]) { - window.plugin.guessPlayerLevels.savePlayerLevel(guid, level); - } + for(nickname in players) { + var ignore = false; + var minLevel = 0; + + players[nickname].forEach(function(count, level) { + if(MAX_RESO_PER_PLAYER[level] < count) { + ignore = true; + + if(count > 0) + minLevel = level; + }); + + if(ignore) + return; + + if(nickname == owner) + window.plugin.guessPlayerLevels.savePlayerLevel(nickname, minLevel); + else // not deployed by owner - player must be at least that level + window.plugin.guessPlayerLevels.savePlayerLevel(nickname, minLevel, true); }); } From 82705a14fcdf557813f98c7e4dd957c8cc3ec8d4 Mon Sep 17 00:00:00 2001 From: fkloft Date: Thu, 5 Dec 2013 19:13:38 +0100 Subject: [PATCH 043/109] bump version --- plugins/guess-player-levels.user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/guess-player-levels.user.js b/plugins/guess-player-levels.user.js index 78089cba..570415cf 100644 --- a/plugins/guess-player-levels.user.js +++ b/plugins/guess-player-levels.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-guess-player-levels@breunigs // @name IITC plugin: guess player level // @category Info -// @version 0.5.0.@@DATETIMEVERSION@@ +// @version 0.5.1.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ From 74518673244dd4d5c8f33ad324d8c87e6852a450 Mon Sep 17 00:00:00 2001 From: fkloft Date: Thu, 5 Dec 2013 23:06:26 +0100 Subject: [PATCH 044/109] Count mods by capturing player; more than two --> portal was flipped --- plugins/guess-player-levels.user.js | 60 +++++++++++++++++------------ 1 file changed, 35 insertions(+), 25 deletions(-) diff --git a/plugins/guess-player-levels.user.js b/plugins/guess-player-levels.user.js index 570415cf..4e24bbc0 100644 --- a/plugins/guess-player-levels.user.js +++ b/plugins/guess-player-levels.user.js @@ -127,6 +127,11 @@ window.plugin.guessPlayerLevels.extractPortalData = function(data) { their minimal level */ var owner = data.details.captured && data.details.captured.capturingPlayerId || ""; + var ownerModCount = 0; + data.details.portalV2.linkedModArray.forEach(function(mod) { + if(mod && mod.installingUser == owner) + ownerModCount++; + }); var players = {}; @@ -145,8 +150,16 @@ window.plugin.guessPlayerLevels.extractPortalData = function(data) { var ignore = false; var minLevel = 0; + if(nickname == owner) { + if(ownerModCount > 2) // more than 2 mods by capturing player --> portal was flipped, ignore their resonators + continue; + var certain = false; + } else { // not deployed by owner - player must be at least that level + var certain = true; + } + players[nickname].forEach(function(count, level) { - if(MAX_RESO_PER_PLAYER[level] < count) { + if(MAX_RESO_PER_PLAYER[level] < count) ignore = true; if(count > 0) @@ -154,35 +167,32 @@ window.plugin.guessPlayerLevels.extractPortalData = function(data) { }); if(ignore) - return; + continue; - if(nickname == owner) - window.plugin.guessPlayerLevels.savePlayerLevel(nickname, minLevel); - else // not deployed by owner - player must be at least that level - window.plugin.guessPlayerLevels.savePlayerLevel(nickname, minLevel, true); - }); + window.plugin.guessPlayerLevels.savePlayerLevel(nickname, minLevel, certain); + } } window.plugin.guessPlayerLevels.extractChatData = function(data) { - data.raw.result.forEach(function(msg) { - var plext = msg[2].plext; - if(plext.plextType == 'SYSTEM_BROADCAST' - && plext.markup.length==5 - && plext.markup[0][0] == 'PLAYER' - && plext.markup[1][0] == 'TEXT' - && plext.markup[1][1].plain == ' deployed an ' - && plext.markup[2][0] == 'TEXT' - && plext.markup[2][0] == 'TEXT' - && plext.markup[3][0] == 'TEXT' - && plext.markup[3][1].plain == ' Resonator on ') { - var nick = plext.markup[0][1].plain; - var lvl = parseInt(plext.markup[2][1].plain.substr(1)); - window.plugin.guessPlayerLevels.savePlayerLevel(nick, lvl, true); - } - }); + data.raw.result.forEach(function(msg) { + var plext = msg[2].plext; + if(plext.plextType == 'SYSTEM_BROADCAST' + && plext.markup.length==5 + && plext.markup[0][0] == 'PLAYER' + && plext.markup[1][0] == 'TEXT' + && plext.markup[1][1].plain == ' deployed an ' + && plext.markup[2][0] == 'TEXT' + && plext.markup[2][0] == 'TEXT' + && plext.markup[3][0] == 'TEXT' + && plext.markup[3][1].plain == ' Resonator on ') { + var nick = plext.markup[0][1].plain; + var lvl = parseInt(plext.markup[2][1].plain.substr(1)); + window.plugin.guessPlayerLevels.savePlayerLevel(nick, lvl, true); + } + }); }; -window.plugin.guessPlayerLevels.savePlayerLevel = function(nick, level, safe) { +window.plugin.guessPlayerLevels.savePlayerLevel = function(nick, level, certain) { var cache = window.plugin.guessPlayerLevels._loadLevels(); var details = cache['#' + nick]; @@ -191,7 +201,7 @@ window.plugin.guessPlayerLevels.savePlayerLevel = function(nick, level, safe) { if(typeof details === 'number') details = {min: 1, guessed: details}; - if(safe) { + if(certain) { if(details.min >= level) return; From aae16d2c1b7a12b700de936ced699cf16d473efe Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Fri, 6 Dec 2013 08:36:50 +0000 Subject: [PATCH 045/109] basemap-bing plugin: dynamic creation of bing map layer - in theory should reduce usage --- plugins/basemap-bing.user.js | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/plugins/basemap-bing.user.js b/plugins/basemap-bing.user.js index 43d0fea8..52944b49 100644 --- a/plugins/basemap-bing.user.js +++ b/plugins/basemap-bing.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-bing-maps // @name IITC plugin: Bing maps // @category Map Tiles -// @version 0.1.1.@@DATETIMEVERSION@@ +// @version 0.1.2.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -23,7 +23,7 @@ window.plugin.mapBing = function() {}; window.plugin.mapBing.setupBingLeaflet = function() { @@INCLUDERAW:external/Bing.js@@ } - + window.plugin.mapBing.setup = function() { window.plugin.mapBing.setupBingLeaflet(); @@ -37,12 +37,35 @@ window.plugin.mapBing.setup = function() { 'AerialWithLabels': "Aerial with labels", }; + // bing maps has an annual usage limit, which will likely be hit in 6 months at this time. + // it seems that the usage is counted on initialising the L.BingLayer, when the metadata is retrieved. + // so, we'll create some dummy layers and add those to the map, then, the first time a layer is added, + // create the L.BingLayer. This will eliminate all usage for users who install but don't use the map, + // and only create usage for the map layers actually selected in use + + var bingMapContainers = []; + for (type in bingTypes) { var name = bingTypes[type]; - var bingMap = new L.BingLayer(bingApiKey, {type: type, maxZoom:20}); - layerChooser.addBaseLayer(bingMap, 'Bing '+name); + + bingMapContainers[type] = new L.LayerGroup(); + layerChooser.addBaseLayer(bingMapContainers[type], 'Bing '+name); } + // now a leaflet event to catch base layer changes and create a L.BingLayer when needed + map.on('baselayerchange', function(e) { + for (type in bingMapContainers) { + if (e.layer == bingMapContainers[type]) { + if (bingMapContainers[type].getLayers().length == 0) { + // dummy layer group is empty - create the bing layer + console.log('basemap-bing: creating '+type+' layer'); + var bingMap = new L.BingLayer (bingApiKey, {type: type, maxZoom:20}); + bingMapContainers[type].addLayer(bingMap); + } + } + } + }); + }; var setup = window.plugin.mapBing.setup; From 32af38906a636f851497157e15eb73764d9e2b73 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Fri, 6 Dec 2013 22:28:45 +0000 Subject: [PATCH 046/109] update munge set for 2013-12-06 - for #689 --- code/munge.js | 56 +++++++++++++++++++++++++++------------------------ 1 file changed, 30 insertions(+), 26 deletions(-) diff --git a/code/munge.js b/code/munge.js index f696cce0..7e886e8a 100644 --- a/code/munge.js +++ b/code/munge.js @@ -12,49 +12,53 @@ ;(function(){ var requestParameterMunges = [ - // obsolete munge sets (they don't have some of the new parameters) deleted + // all old munge sets deleted - there's no sign that any old ones will become active again - // set 10 - 2013-11-27 + // set 11 - 2013-12-06 { 'dashboard.getArtifactInfo': 'artifacts', // GET_ARTIFACT_INFO 'dashboard.getGameScore': '4oid643d9zc168hs', // GET_GAME_SCORE 'dashboard.getPaginatedPlexts': 's1msyywq51ntudpe', // GET_PAGINATED_PLEXTS 'dashboard.getThinnedEntities': '4467ff9bgxxe4csa', // GET_THINNED_ENTITIES 'dashboard.getPortalDetails': 'c00thnhf1yp3z6mn', // GET_PORTAL_DETAILS - 'dashboard.redeemReward': '66l9ivg39ygfqqjm', // REDEEM_REWARD - 'dashboard.sendInviteEmail': 'cgb7hi5hglv0xx8k', // SEND_INVITE_EMAIL - 'dashboard.sendPlext': 'etn9xq7brd6947kq', // SEND_PLEXT + 'dashboard.redeemReward': 'ivshfv9zvyfxyqcd', // REDEEM_REWARD + 'dashboard.sendInviteEmail': '1rsx15vc0m8wwdax', // SEND_INVITE_EMAIL + 'dashboard.sendPlext': 'tods2imd0xcfsug6', // SEND_PLEXT // common parameters - method: 'yyngyttbmmbuvdpa', - version: 'avz401t36lzrapis', - version_parameter: 'c5d0a5d608f729a1232bebdc12fb86ba5fb6c43f', + method: '0wvzluo8av4sk17f', + version: 'paeh4g353xu06kfg', + version_parameter: '4acc1e3230c3fd66be3422c0df8dc637336bbd7c', // GET_THINNED_ENTITIES - quadKeys: '1mpmxz2yun22rwnn', + quadKeys: 'ilgv0w4dlldky1yh', + + // GET_PORTAL_DETAILS + guid: '7o8tzmj6oxz1n5w3', + + // REDEEM_REWARD + passcode: 'passcode', // no munging on this parameter + + // SEND_INVITE_EMAIL + inviteeEmailAddress: 'p4rwszdfovuwfdgp', // GET_PAGINATED_PLEXTS - desiredNumItems: 'nzd23jqm9k1cnnij', - minLatE6: '0dod6onpa1s4fezp', - minLngE6: 'soass3t7mm7anneo', - maxLatE6: 'cvarmr3o00ngylo1', - maxLngE6: 'udzwnlx07hzd3bfo', - minTimestampMs: '9iiiks138gkf8xho', - maxTimestampMs: '94wm0u3sc3sgzq7x', - chatTab: 'tqfj4a3okzn5v5o1', - ascendingTimestampOrder: '5jv1m90sq35u6utq', + desiredNumItems: 'kxsbuvc90l6f40xn', + minLatE6: 'llizye3i5dbapxac', + minLngE6: 'w01zpiba1mn5tsab', + maxLatE6: 'd5phhqzj2tbsq599', + maxLngE6: 'avq5srnvg431aehn', + minTimestampMs: 'mhsav5by25wi4s46', + maxTimestampMs: 'hpu7l8h7eccwytyt', + chatTab: 'q9343nem7hs1v37b', + ascendingTimestampOrder: '7pc5c9ggh03pig1b', // SEND_PLEXT message: '8exta9k7y8huhqmc', - latE6: 'kqek161gza3kjcry', - lngE6: '3dlxsqrjj2vcmhbc', -// chatTab: 'efaznrayv5n3jxs0', //guessed parameter name - only seen munged + latE6: '7ffwyf3zd2yf8xam', + lngE6: 'n7ewiach2v22iy20', +// chatTab: 'q9343nem7hs1v37b', // duplicate from GET_PAGINATED_PLEXTS - // GET_PORTAL_DETAILS - guid: 'seg6ohxgnqf9xu9w', - - // SEND_INVITE_EMAIL - inviteeEmailAddress: '8exta9k7y8huhqmc', }, ]; From e215910de5d2ac8882358f72d7799398808c6464 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 7 Dec 2013 02:41:19 +0000 Subject: [PATCH 047/109] website: news post on stock intel update --- website/page/home.php | 8 ++++++++ website/page/news.php | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/website/page/home.php b/website/page/home.php index 51329455..c39dffda 100644 --- a/website/page/home.php +++ b/website/page/home.php @@ -13,6 +13,14 @@ offers many more features. It is available for

Latest news

+

6th December 2013

+

+Niantic have just released a minor update to the standard intel site. Good news - recent IITC changes have made it +successfully detect the protocol changes in most cases, so no update is needed. You may need to reload the page, +and for IITC Mobile you may need to change a cache setting. See +this G+ post for more details. +

+

2nd December 2013

IITC 0.16.0 and IITC Mobile 0.10.0 have been released. This update is required to work with the latest changes to diff --git a/website/page/news.php b/website/page/news.php index 2dc0c9fc..ec3aaf9a 100644 --- a/website/page/news.php +++ b/website/page/news.php @@ -1,5 +1,13 @@

News

+

6th December 2013

+

+Niantic have just released a minor update to the standard intel site. Good news - recent IITC changes have made it +successfully detect the protocol changes in most cases, so no update is needed. You may need to reload the page, +and for IITC Mobile you may need to change a cache setting. See +this G+ post for more details. +

+

2nd December 2013

IITC 0.16.0 and IITC Mobile 0.10.0 have been released. This update is required to work with the latest changes to From 614435fb0eac80813be83e88a80c998edda65d96 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Sat, 7 Dec 2013 12:04:58 +0100 Subject: [PATCH 048/109] removed settings icon...it's not needed --- mobile/res/drawable-hdpi/ic_action_settings.png | Bin 892 -> 0 bytes mobile/res/drawable-mdpi/ic_action_settings.png | Bin 601 -> 0 bytes mobile/res/drawable-xhdpi/ic_action_settings.png | Bin 1204 -> 0 bytes .../res/drawable-xxhdpi/ic_action_settings.png | Bin 1734 -> 0 bytes mobile/res/menu/main.xml | 1 - 5 files changed, 1 deletion(-) delete mode 100644 mobile/res/drawable-hdpi/ic_action_settings.png delete mode 100644 mobile/res/drawable-mdpi/ic_action_settings.png delete mode 100644 mobile/res/drawable-xhdpi/ic_action_settings.png delete mode 100644 mobile/res/drawable-xxhdpi/ic_action_settings.png diff --git a/mobile/res/drawable-hdpi/ic_action_settings.png b/mobile/res/drawable-hdpi/ic_action_settings.png deleted file mode 100644 index f50c2d3aad494c6a6d06343b1ebfcd1e90472ffc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 892 zcmV-?1B3jDP)c=)n1q9y>#KO!~#=eD}Ke z0G7Tdz9;KDfM@@80F*vsdOWub8C&piklgp^{FEN=NFO&0os#@4%hC&&M=hP)&|^({ zMVgW3idE3Qkyr=MQ0PnO-GqI)IlkVny4`C4V3*Gg!z!?h3a(_1t3W1jaE0Fi##BOp zr)p(<)9ALLU#(h-FBCH;1Lmv>>o@ z_f3GExKQq>1%P+j3M=rvA^oJaE62Bl!9rMwOAWBf#;IUiNlG@hUNAtpctbgPt>NGs zIRB~Uykd}2uu+kX?-+lAW|jZ9cyHF$`BpnIR`h~3Wx}o-+p10U>5eHIdv4d&`PQWb z8Q!zsxt0!v3wL87czR8=bW7U!)G7cDD&+KEzO^uw33f}yQoR&&UJoXHRilNL&#q;3 zAmn|Zr6VsdItw7uK0D9d(1o`_$s9W++5*d-a(p>WlWb82@IB;*MxzU&%9JSc)^c8m z8I9JP;f&Gf+_j8w{sM4*DV(mZG%Tnz*hyakZ98EjO9k5z>aXL=X*RK`l*qBeN_fc` zK0-qs6{3QbBy8daoqsSH3`;H~{84?FC;mH~HXXLhKs5A=71T_=Zn$2*~@;a;c)Z|v)i)a&K0Fr@#b-Vt3{{X6Gh9y-aCMc4jAco6YXt z-gn={^Lpv!z;e{(qc9A8dc2ViVJb-{N~yJLtmBS_ha$O$@wiK%t_57z6y+=@Ev+8< zzJH~){t)v=8s1j8pVK>!bWQ$0!hc}q&KRHouUHxHG4F4HcJsIpt|hi0z&OWuJYN$w z?wt#undg@1&1IeeR9H5Y(mc4nDV zBsQy4u%#HA(-6ZZ<$_`cTZ525QxbSqG`t}lu!)p`bZLsAmd?pfL30Km_MQE|3^2tO ztemz0q%y&DDUKe4Dy{IBorncUYxm!U2TIZUqQOsD->__UK}6sGbr-Z1Fft$#D~ehu zTGDfOCbW2f5w-%cFyr|Iyu$KN#C>3hh(Q=JpvnJpYa+stSyUXuJFzm!h7pRBWc6&} z;eo)oabdzGS}%jVkUllE*N|0g`DjW$cEx~w)P_i&A&D({1zFX_a=wfdbd0WOaDx^g zHQT_pck$0ai&vAn9H%WHoq}Xa6qEr6Ne#dAN;Bafh$46TOSTZ8`@0P(@pNB*L`4e= n?xg_PTHUpPUV1sW{0cAtZ|k!lqDBg&00000NkvXXu0mjfn@I(Z diff --git a/mobile/res/drawable-xhdpi/ic_action_settings.png b/mobile/res/drawable-xhdpi/ic_action_settings.png deleted file mode 100644 index 3f2f394f7d8b2d97eaa64f3d9d95f4048724e3e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1204 zcmV;l1WWsgP)8VoRe5ts!9zisSk#l5(OfOs%ca)NevkACBBEMI#)v!m_$|GKhXDPeqomD?%jSQI|261 z?1Z^}`|jRv-@dOUiUI`+6ev)jK!F0iOnT+}g-Mbe(@#S&y`XWKW!cQv_iTGsKB1p> z1>2m4HvnGyHh>lJJZ}JqYR?V;D3z=bs3&Iutu^s(J^-})v4-;#=>yhmb{M3OOnV(nZUV3`k$A#1dvZ?gvg zVW(cfHY3v=!6X}Hd^q!2Me)Nj`WywoTSj&Gr}a5O9D#lbO9vtCn@MaJlBIUZk;>p7 z%0N9N+4(L6ycS~&J$Q6J`rl=@M8xHbi=DpY?0O}G&iyv4+iEGnE zDz3``a-!G-e*nM%jthxOq)1o07O&_k%H^U}^<4nia#a42)1w52cjJ!6`@)hvlS+-` zbGSQ_OkI$iS|Jf)*)`50y;y*tyv(fINO)xDw2wMMM|s(&$07II%@#9mpnih zX|{w*BryAMWT_&@&oMUy?;K}d_eyPGqlnAJNSTvcNSqocF;`+=VA;PDuhkF+Taj5a zl{-;A-vHDQ5$bSMDRjvS@m$s#n@KXp`6>7S diff --git a/mobile/res/drawable-xxhdpi/ic_action_settings.png b/mobile/res/drawable-xxhdpi/ic_action_settings.png deleted file mode 100644 index 6725c082b751e3b47d2af3f3c434876c0d68960b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1734 zcmV;%208hOP)YCU6-7cFl0UX-IO?a`_Oh88nI4=R(ZwLVl_W#5&$+7|Z_!0eF@6qjBnEAGd z8SqLyd!94q7Lwn=*{8$bNhlIR67WC}1_<*j3a(7+H+iHLJhx>Cu#0`?0SKJq7(d`| z(RksRHz5}HE&>Uks?BA9mtCQ@riA3|pziyTLq-qBa_u>ujp~0^dje26kDlGE&}pVd zpIsED%|B=px6_0m5d#LLxaD@_AqZG_I8iW3W9=l-kBmH`p%>8)_BV^%S4yF)+u9O< z;p4)wd4d|2qQ;IHlPH)GpNzhz9;8A)>$)alGX~-7=!r9f1z|seg1|G>H9^Pjf)S^{ zeqoOJ`<}vwK7LczuK{9%E69r5?e;+-QP)=e4P?Ks*iTFMQMVc3q8VvM_|uZGkqc9N z*3q1x0-S9YTrz2Y>=@=v46}20!WDq2Hb;(T^IA1$Sthw)G(oe9Cg>Pfqf>k!5_l+D z)<6;=2pAIkdP=Sw^A=drSozA0tttYA84*cHqvwi+0YP9XhLfw3=O<`RR%l}GEapr{ zS~JW$1{KWTl0*2cPWY&vKOI|}5NH1hYb%&w-4mQNn5tccaU^OOf8&fObLg?U4`Tao z>i3G6zkK2neuywM!gSph;;o3z?0`->aTo_=!M6k_JIIXbWH~?(0t^z0UOWNepzXKq z_l|uQz_9HkdR{fn%@JTG;=Nmo*;#YTD&&sXEoyKU`XxFRo4a(;{DPVA*>am!gk4F% zunZxjU<9B>jSJRiBFj=hN;C=7v8)S}Au^P~99wq%XBJ9MLHC67G}!pJGDp1&u=c*S z5rDHL``k%L8J&7l-XtV;6jlfVS_NaYjkDeaU~-f-Emeu)nvHwQSkF?#6?z7=h{WVM z&U0b^ng}SuKat=h1f(t+e&%w*&Z{9HCkmnpmfi8$YL4YjU)i~2RaqAPBVHMF^*+qS@zhK*#A3Q z)K)tJ@P+$jrT|O*%IxcaBQ{6j4Twovw?G-@0cK?{KKu0;qEE&~XEO1O1s5Rh6-(ZYoUqrAn|c1iFN+Bvh6z_}+pCQNk`H@GiA z-H!!9t%$|B)H1|ll{B__jA&buPh~WgR>k-$ZOYeDYB*c<*M3SSds5_#O}^eCrfDb!{00jP;CgMs>-*x0{4)yFkH zqwrgiy(l1e_Hb26b2?#{ExTis0)oJdGc*a%_ii9U5lGRrmnbPvCGDW*vxyS$Tj0s=jLe zU3K$KU3>NS22BJcLRSubZqU*HrTY699q#WDeN{GZqJODn9*~KMd?T7II!ZIl>|vN$ zc9>3|!rWt+n;Pvo4t(5j@7C4%ke=4yW!_6?4(c6B?&(L>>OKq2YlzyQa~xAm(aG+k z=d-@H!yRzn8cl%huy-82JnLI%POx8nKPhQz5&^Lh<|SxWwnYLYRy3Q!%k733ivF*< z*&wc$)6X!}#!To>6|{{+jdDNt;XJZQ%NYj{0n5|75H+DEA;6Qk5hD>K!Jh-Q{%)w} znd6|&v#yC)2$NBVKHe+=ThI1M9nDT-2p}Aquwh+u1#84d`*uDY3IPlg!LeN$x~S?+ z5P&xP@EWzhDKh}@RS0OF8A_V)Vom!G94H^<+c(Aj3j_jzKp+qZ1OkCTAP@)y0)aqq cBK#-70A_66$Yml?hX4Qo07*qoM6N<$f`d98`~Uy| diff --git a/mobile/res/menu/main.xml b/mobile/res/menu/main.xml index 8ddb56e3..ac0f3948 100644 --- a/mobile/res/menu/main.xml +++ b/mobile/res/menu/main.xml @@ -41,7 +41,6 @@ From 90cb29a58bd121e15f7fc8beb3076b15e8a9581d Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Sat, 7 Dec 2013 12:14:25 +0100 Subject: [PATCH 049/109] show reload button if room --- mobile/res/menu/main.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/mobile/res/menu/main.xml b/mobile/res/menu/main.xml index ac0f3948..63790b3f 100644 --- a/mobile/res/menu/main.xml +++ b/mobile/res/menu/main.xml @@ -19,20 +19,20 @@ android:showAsAction="ifRoom" android:title="@string/layer_chooser"> - - + + Date: Sat, 7 Dec 2013 13:36:39 +0100 Subject: [PATCH 050/109] show portal title in share activity --- mobile/res/drawable-hdpi/ic_action_place.png | Bin 0 -> 555 bytes mobile/res/drawable-mdpi/ic_action_place.png | Bin 0 -> 393 bytes mobile/res/drawable-xhdpi/ic_action_place.png | Bin 0 -> 712 bytes mobile/res/drawable-xxhdpi/ic_action_place.png | Bin 0 -> 958 bytes mobile/res/values/strings.xml | 4 ++-- .../cradle/iitc_mobile/share/ShareActivity.java | 5 ++++- 6 files changed, 6 insertions(+), 3 deletions(-) create mode 100644 mobile/res/drawable-hdpi/ic_action_place.png create mode 100644 mobile/res/drawable-mdpi/ic_action_place.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_place.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_place.png diff --git a/mobile/res/drawable-hdpi/ic_action_place.png b/mobile/res/drawable-hdpi/ic_action_place.png new file mode 100644 index 0000000000000000000000000000000000000000..dba994d8a7f0b5a8d113467b2ccabe2c1338e34b GIT binary patch literal 555 zcmV+`0@VG9P)Q2BcO>9fKqQieJO92Dt@E4WI5n3Lx?w3;|Gn3B#jB@h-F% zHbA1BoB%5S;`#dRi$B6{@~l(QF5SUB;Y+4g}@ghft@%3ba};~d`&qUP|N5i0|C+;Bm%g*HpJwu zCL_RL!6K9+Woc_K&RBm*U7M?wD5kJJ_pQVbFR)mjyO}GbtF6XV1NN5sT%(O|8ESW ze1X^=hLU%LO901MF zq!h8Yh$#a|O@v!WP`jK~b-`vFS(4<$M{YKpMI|*9Rmb>3fh6CPTM*5nmhZ_50X(5V zvhOJ=iW{(q^^#){Sq^|UyO7I;vp}%}4D09hcsHv^ObV1O_H1JnbM0n+zWKJ<{w<$_!+St-_?FLyv3`O|M%HZYw$ zxlJR02p|H803v`0AOeU0p4Dbj4{Dkwh06-s65G7ZWC=NLr8iJit(sB}6*wiT=g`fbr$@%rgLLc7B5azjo>X zmrc`ED*zWu9hT0nT{KRCQgG^?)d9dlMgoF?XI(Waz-wd%?C7&I-vCO76 z03%jujy|^nd_|6PRpABTK?SVQmr%f?5iGc!V+Vi{G#aBXr2uQW#^{Ryz`DStiZc?? zmsEgjL~|*p!~mcQC|lVJ=PyD+DuAkjT+$&?0Ju{u?(Fx?zXj0R)%6`})Y8!p0sv2R z_I+Taej6BC0e!`hEqaO&zJ&aCxGncAloPX154KBP(=>KjoJ%fyY5=rUkcM<1C;&`) ubx0rL{{0000ES_G;v+i=t>LfM4KUz!&!V z*z+xFd+n?c2MW+V@GHsqA#je^A_`G}1%4`lUygJO=ZG&zrKtc4{@ng~l=?mnr8BZyFB731A1k z9I(yw;YK>Id`ggXJYSWw|0Q>}6g}tSfE8Hq9iOsrfYjR`o^MmhqNW#6`(Ez^CmjyOa{8&j>F--|T9;OpdbK*>`pOo&vn4PcZw=1GAI`m<7<# z1U)Z)7g&Jf5T!`6yf&}*f`;f|nv?|?>ah?P=q31P#4ACvm^vC<+R)DqX-vX3umHgy z+?wPt$PWBWUI1(HI&`Oj>`tw9Km{25O5>45Edln-enkP~(4+wh{!vP!$;APV9gqNO zj+`i49%VAFvJ*fiJcP-((s&>X!2u{`NVOqQ6+kji(*+0ZuPse7&p>qtstX_)sF8(g zttXlT9Azf=#1ufm1upyd6hN;RFHr`K_B~;jm9qfZzd#u?+EWo_PT3FVfB-Il%6>!# zI5xRtKcoO7c0@3p54r=!%G45ZppXKL-~!0(M|Qx_8M{FpB&-19f*}@X2jpMOLVr5C z1anee0t|3oP$OqQOa6&S%Gc4o-IH!H+_Kb1+S}r>a}@+8>nw z;)1ec_O}#ZSP}MDF3#MdtBhq_F?~tz+Lm$~(}1E9;EKiB0pXxMWe1#H(58_6Q3@cf z7;2`~@+6JvxBLI@#*5JCtc ggb+gd@LPZZ00z4O$j^F$r~m)}07*qoM6N<$f)f{~B>(^b literal 0 HcmV?d00001 diff --git a/mobile/res/values/strings.xml b/mobile/res/values/strings.xml index e6e934f0..8d1ed63c 100644 --- a/mobile/res/values/strings.xml +++ b/mobile/res/values/strings.xml @@ -150,9 +150,9 @@ Copied to clipboard… Do not show again - Map + Locate Share - Browser + Intel Highlighter Base Layer diff --git a/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java b/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java index 24523eeb..b09e57f9 100644 --- a/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java +++ b/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java @@ -81,7 +81,7 @@ public class ShareActivity extends FragmentActivity implements ActionBar.TabList String geoUri = "geo:" + mLl; Intent geoIntent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(geoUri)); intents.add(geoIntent); - addTab(intents, R.string.tab_map, R.drawable.ic_action_map); + addTab(intents, R.string.tab_map, R.drawable.ic_action_place); Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(getUrl())); addTab(intent, R.string.tab_browser, R.drawable.ic_action_web_site); @@ -122,6 +122,9 @@ public class ShareActivity extends FragmentActivity implements ActionBar.TabList setupShareIntent(intent.getStringExtra("shareString")); } + // show portal name as action bar title, if available + if (mTitle != getString(R.string.app_name)) actionBar.setTitle(mTitle); + mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mFragmentAdapter); From bfc082401448d24d66a65316238f50f3ff34ee45 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Sat, 7 Dec 2013 15:07:48 +0100 Subject: [PATCH 051/109] scale listView icons of shareActivity to the same size --- .../cradle/iitc_mobile/share/IntentListView.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/mobile/src/com/cradle/iitc_mobile/share/IntentListView.java b/mobile/src/com/cradle/iitc_mobile/share/IntentListView.java index fdec0b86..e11fc766 100644 --- a/mobile/src/com/cradle/iitc_mobile/share/IntentListView.java +++ b/mobile/src/com/cradle/iitc_mobile/share/IntentListView.java @@ -9,6 +9,7 @@ import android.content.pm.PackageManager; import android.content.pm.ResolveInfo; import android.graphics.drawable.Drawable; import android.util.AttributeSet; +import android.util.DisplayMetrics; import android.util.Pair; import android.view.LayoutInflater; import android.view.View; @@ -37,6 +38,10 @@ public class IntentListView extends ListView { } private class IntentAdapter extends ArrayAdapter { + + // actually the mdpi pixel size is 48, but this ugly...so scale icons down for listView + private static final int MDPI_PX = 36; + private IntentAdapter() { super(IntentListView.this.getContext(), android.R.layout.simple_list_item_1); } @@ -48,11 +53,19 @@ public class IntentListView extends ListView { ActivityInfo info = getItem(position).activityInfo; CharSequence label = info.loadLabel(mPackageManager); + + // get icon and scale it manually to ensure that all have the same size Drawable icon = info.loadIcon(mPackageManager); + DisplayMetrics dm = new DisplayMetrics(); + ((Activity) getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm); + float densityScale = dm.density; + float scaledWidth = MDPI_PX * densityScale; + float scaledHeight = MDPI_PX * densityScale; + icon.setBounds(0,0,Math.round(scaledWidth),Math.round(scaledHeight)); view.setText(label); view.setCompoundDrawablePadding((int) getResources().getDimension(R.dimen.icon_margin)); - view.setCompoundDrawablesWithIntrinsicBounds(icon, null, null, null); + view.setCompoundDrawables(icon, null, null, null); return view; } From 1a25fd1c663d9339d36a07c36e46475e45171338 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Sat, 7 Dec 2013 15:08:36 +0100 Subject: [PATCH 052/109] unregister package installer broadcast receiver when iitc is stopped --- mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java | 1 + 1 file changed, 1 insertion(+) diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java index 3332f442..45ce2442 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java @@ -321,6 +321,7 @@ public class IITC_Mobile extends Activity implements OnSharedPreferenceChangeLis mLocMngr.removeUpdates(this); } + unregisterReceiver(mBroadcastReceiver); super.onStop(); } From 8e7e4ec14aa52d4cdaeea7e90bf446cf9873bf83 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Sat, 7 Dec 2013 15:37:51 +0100 Subject: [PATCH 053/109] receiver should be unregistered only onDestroy --- mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java index 45ce2442..ea2b4092 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java @@ -321,10 +321,15 @@ public class IITC_Mobile extends Activity implements OnSharedPreferenceChangeLis mLocMngr.removeUpdates(this); } - unregisterReceiver(mBroadcastReceiver); super.onStop(); } + @Override + protected void onDestroy() { + unregisterReceiver(mBroadcastReceiver); + super.onDestroy(); + } + @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); From 3e00645f4ad49768b09154266e9a25c24f6f79df Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Sat, 7 Dec 2013 21:27:11 +0100 Subject: [PATCH 054/109] boost performance on kitkat: ignore result of javascript. it's slow and we only can use it on kitkat. --- mobile/src/com/cradle/iitc_mobile/IITC_WebView.java | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java b/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java index c0c0fccf..4e5127cf 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java @@ -165,12 +165,7 @@ public class IITC_WebView extends WebView { public void loadJS(String js) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - evaluateJavascript(js, new ValueCallback() { - @Override - public void onReceiveValue(String value) { - // maybe we want to add stuff here - } - }); + evaluateJavascript(js, null); } else { // if in edit text mode, don't load javascript otherwise the keyboard closes. HitTestResult testResult = getHitTestResult(); From 04d521f71c1b53c9ac84a0ca397fe662b15bea59 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Sat, 7 Dec 2013 21:29:08 +0100 Subject: [PATCH 055/109] use kitkats new SYSTEM_UI_FLAG_IMMERSIVE on navbar hide (thx Simeon Mac) --- .../com/cradle/iitc_mobile/IITC_WebView.java | 20 ++++++++++++++----- .../iitc_mobile/share/IntentListView.java | 2 +- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java b/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java index 4e5127cf..f00cad8d 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_WebView.java @@ -71,7 +71,15 @@ public class IITC_WebView extends WebView { @Override public void run() { if (isInFullscreen() && (getFullscreenStatus() & (FS_NAVBAR)) != 0) { - setSystemUiVisibility(SYSTEM_UI_FLAG_HIDE_NAVIGATION); + int systemUiVisibility = SYSTEM_UI_FLAG_HIDE_NAVIGATION; + // in immersive mode the user can interact with the app while the navbar is hidden + // this mode is available since KitKat + // you can leave this mode by swiping down from the top of the screen. this does only work + // when the app is in total-fullscreen mode + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT && (mFullscreenStatus & FS_SYSBAR) != 0) { + systemUiVisibility |= SYSTEM_UI_FLAG_IMMERSIVE; + } + setSystemUiVisibility(systemUiVisibility); } } }; @@ -185,20 +193,22 @@ public class IITC_WebView extends WebView { @Override public boolean onTouchEvent(MotionEvent event) { getHandler().removeCallbacks(mNavHider); - getHandler().postDelayed(mNavHider, 2000); + getHandler().postDelayed(mNavHider, 3000); return super.onTouchEvent(event); } @Override public void setSystemUiVisibility(int visibility) { - getHandler().postDelayed(mNavHider, 2000); + if ((visibility & SYSTEM_UI_FLAG_HIDE_NAVIGATION) == 0) { + getHandler().postDelayed(mNavHider, 3000); + } super.setSystemUiVisibility(visibility); } @Override public void onWindowFocusChanged(boolean hasWindowFocus) { if (hasWindowFocus) { - getHandler().postDelayed(mNavHider, 2000); + getHandler().postDelayed(mNavHider, 3000); } else { getHandler().removeCallbacks(mNavHider); } @@ -220,7 +230,7 @@ public class IITC_WebView extends WebView { attrs.flags |= WindowManager.LayoutParams.FLAG_FULLSCREEN; } if ((mFullscreenStatus & FS_NAVBAR) != 0) { - setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION); + getHandler().post(mNavHider); } if ((mFullscreenStatus & FS_STATUSBAR) != 0) { loadUrl("javascript: $('#updatestatus').hide();"); diff --git a/mobile/src/com/cradle/iitc_mobile/share/IntentListView.java b/mobile/src/com/cradle/iitc_mobile/share/IntentListView.java index e11fc766..785c1edb 100644 --- a/mobile/src/com/cradle/iitc_mobile/share/IntentListView.java +++ b/mobile/src/com/cradle/iitc_mobile/share/IntentListView.java @@ -39,7 +39,7 @@ public class IntentListView extends ListView { private class IntentAdapter extends ArrayAdapter { - // actually the mdpi pixel size is 48, but this ugly...so scale icons down for listView + // actually the mdpi pixel size is 48, but this looks ugly...so scale icons down for listView private static final int MDPI_PX = 36; private IntentAdapter() { From b0e53ee618f34a31c8ad3437a379b10e8d240e32 Mon Sep 17 00:00:00 2001 From: enigmaquip Date: Sun, 8 Dec 2013 02:38:02 -0700 Subject: [PATCH 056/109] Update Draw Resonator plugin for new intel style --- plugins/draw-resonators.user.js | 105 +++++++++++++++++++++++++++++++- 1 file changed, 103 insertions(+), 2 deletions(-) diff --git a/plugins/draw-resonators.user.js b/plugins/draw-resonators.user.js index f85d3b2f..3b3d94c0 100644 --- a/plugins/draw-resonators.user.js +++ b/plugins/draw-resonators.user.js @@ -2,14 +2,115 @@ // @id iitc-plugin-draw-resonators@xelio // @name IITC plugin: Draw resonators // @category Deleted -// @version 0.4.0.@@DATETIMEVERSION@@ +// @version 0.4.1.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ -// @description PLUGIN CURRENTLY UNAVAILABLE +// @description [@@BUILDNAME@@-@@BUILDDATE@@] Draw resonators on map for currently selected portal. // @include https://www.ingress.com/intel* // @include http://www.ingress.com/intel* // @match https://www.ingress.com/intel* // @match http://www.ingress.com/intel* // @grant none // ==/UserScript== + +@@PLUGINSTART@@ + +// PLUGIN START //////////////////////////////////////////////////////// +window.RESONATOR_MIN_ZOOM = 16; + +// use own namespace for plugin +window.plugin.drawResonators = function() {}; + +window.plugin.drawResonators.levelLayerGroup = null; + +window.plugin.drawResonators.handledata = function(data) { +window.plugin.drawResonators.levelLayerGroup.clearLayers(); +window.plugin.drawResonators.drawData(data); +} + +window.plugin.drawResonators.drawData = function(portal) { +if(window.map.getZoom() < window.RESONATOR_MIN_ZOOM) return; + var portalDetails = portal.portalDetails; + var portalLatLng = [portalDetails.locationE6.latE6/1E6, portalDetails.locationE6.lngE6/1E6]; + for(var i in portalDetails.resonatorArray.resonators) { + resoData = portalDetails.resonatorArray.resonators[i]; + if(resoData === null) continue; + + var resoLatLng = window.plugin.drawResonators.getResonatorLatLng(resoData.distanceToPortal, resoData.slot, portalLatLng); + + var resoMarker = window.plugin.drawResonators.createResoMarker(resoData, resoLatLng); + var connMarker = window.plugin.drawResonators.createConnMarker(resoData, resoLatLng, portalLatLng); + + window.plugin.drawResonators.levelLayerGroup.addLayer(resoMarker); + window.plugin.drawResonators.levelLayerGroup.addLayer(connMarker); + } +} + +window.plugin.drawResonators.getResonatorLatLng = function(dist, slot, portalLatLng) { + // offset in meters + var dn = dist*SLOT_TO_LAT[slot]; + var de = dist*SLOT_TO_LNG[slot]; + + // Coordinate offset in radians + var dLat = dn/EARTH_RADIUS; + var dLon = de/(EARTH_RADIUS*Math.cos(Math.PI/180*portalLatLng[0])); + + // OffsetPosition, decimal degrees + var lat0 = portalLatLng[0] + dLat * 180/Math.PI; + var lon0 = portalLatLng[1] + dLon * 180/Math.PI; + + return [lat0, lon0]; +} + +window.plugin.drawResonators.createResoMarker = function(resoData, resoLatLng) { + var resoProperty = { + fillColor: COLORS_LVL[resoData.level], + fillOpacity: resoData.energyTotal/RESO_NRG[resoData.level], + color: '#aaa', + weight: 1, + radius: 3, + opacity: 1, + clickable: false}; + resoProperty.type = 'resonator'; + resoProperty.details = resoData; + var reso = L.circleMarker(resoLatLng, resoProperty); + return reso; +} + +window.plugin.drawResonators.createConnMarker = function(resoData, resoLatLng, portalLatLng) { + var connProperty = { + opacity: 0.25, + weight: 2, + color: '#FFA000', + dashArray: '0,10' + (new Array(25).join(',8,4')), + fill: false, + clickable: false}; + connProperty.type = 'connector'; + connProperty.details = resoData; + var conn = L.polyline([portalLatLng, resoLatLng], connProperty); + return conn; +} + +window.plugin.drawResonators.zoomListener = function() { + if(window.map.getZoom() < window.RESONATOR_MIN_ZOOM) { + window.plugin.drawResonators.levelLayerGroup.clearLayers(); + }; +} + +var setup = function() { + + window.plugin.drawResonators.levelLayerGroup = new L.LayerGroup(); + + window.addLayerGroup('Draw Reso', window.plugin.drawResonators.levelLayerGroup, true); + + window.addHook('portalDetailsUpdated', window.plugin.drawResonators.handledata); + + window.map.on('zoomend', function() { + window.plugin.drawResonators.zoomListener(); + }); + +} +// PLUGIN END ////////////////////////////////////////////////////////// + +@@PLUGINEND@@ \ No newline at end of file From 9254198715905f26247046fe41b87bfb1dfbff67 Mon Sep 17 00:00:00 2001 From: fkloft Date: Sun, 8 Dec 2013 19:29:49 +0100 Subject: [PATCH 057/109] Remove broken plugin, change category from "Deleted" to "Layer" --- plugins/broken/draw-resonators.user.js | 811 ------------------------- plugins/draw-resonators.user.js | 2 +- 2 files changed, 1 insertion(+), 812 deletions(-) delete mode 100644 plugins/broken/draw-resonators.user.js diff --git a/plugins/broken/draw-resonators.user.js b/plugins/broken/draw-resonators.user.js deleted file mode 100644 index 6e7ee025..00000000 --- a/plugins/broken/draw-resonators.user.js +++ /dev/null @@ -1,811 +0,0 @@ -// ==UserScript== -// @id iitc-plugin-draw-resonators@xelio -// @name IITC plugin: Draw resonators -// @category Layer -// @version 0.4.0.@@DATETIMEVERSION@@ -// @namespace https://github.com/jonatkins/ingress-intel-total-conversion -// @updateURL @@UPDATEURL@@ -// @downloadURL @@DOWNLOADURL@@ -// @description [@@BUILDNAME@@-@@BUILDDATE@@] Draw resonators on map. With stylers to highlight resonators with specific criteria. -// @include https://www.ingress.com/intel* -// @include http://www.ingress.com/intel* -// @match https://www.ingress.com/intel* -// @match http://www.ingress.com/intel* -// @grant none -// ==/UserScript== - -@@PLUGINSTART@@ - -// PLUGIN START //////////////////////////////////////////////////////// - -// use own namespace for plugin -window.plugin.drawResonators = function() {}; - - -window.plugin.drawResonators.options; -window.plugin.drawResonators.render; - - - -//////// Render for handling render of resonators //////// - -// As long as 'window.Render.prototype.createPortalEntity' delete and recreate portal -// on any change of data, this resonator render should make resonator create and remove -// with portal correctly. -// -// Resonators will create when -// 1.Portal added to map -// 2.Zooming in to enable zoom level -// -// Resonators will remove when -// 1.Portal removed from map -// 2.Zooming out beyond enable zoom level - -window.plugin.drawResonators.Render = function(options) { - this.enableZoomLevel = options['enableZoomLevel']; - this.useStyler = ''; - - this.stylers = {}; - this.resonators = {}; - this.resonatorLayerGroup = new L.LayerGroup(); - this.addStyler(new window.plugin.drawResonators.Styler()); - this.beforeZoomLevel = map.getZoom(); - - this.portalAdded = this.portalAdded.bind(this); - this.createResonatorEntities = this.createResonatorEntities.bind(this); - this.deleteResonatorEntities = this.deleteResonatorEntities.bind(this); - this.handleResonatorEntitiesBeforeZoom = this.handleResonatorEntitiesBeforeZoom.bind(this); - this.handleResonatorEntitiesAfterZoom = this.handleResonatorEntitiesAfterZoom.bind(this); - this.handleEnableZoomLevelChange = this.handleEnableZoomLevelChange.bind(this); - this.portalSelectionChange = this.portalSelectionChange.bind(this); - this.changeStyler = this.changeStyler.bind(this); - this.getStylersList = this.getStylersList.bind(this); -}; - -window.plugin.drawResonators.Render.prototype.registerHook = function() { - window.addHook('portalAdded', this.portalAdded); - window.addHook('portalSelected', this.portalSelectionChange); - window.map.on('zoomstart', this.handleResonatorEntitiesBeforeZoom); - window.map.on('zoomend', this.handleResonatorEntitiesAfterZoom); -} - -window.plugin.drawResonators.Render.prototype.portalAdded = function(data) { - var marker = data.portal; - var render = this; - - marker.on('add', function() { - render.createResonatorEntities(this); // the 'this' in here is the portal. - }); - - marker.on('remove', function() { - render.deleteResonatorEntities(this.options.guid); // the 'this' in here is the portal. - }); -} - -window.plugin.drawResonators.Render.prototype.createResonatorEntities = function(portal) { - // No need to check for existing resonators, as old resonators should be removed with the portal marker. - - if(!this.isResonatorsShow()) return; - var portalDetails = portal.options.details; - var resonatorsWithConnector = new L.LayerGroup() - - var portalLatLng = [portalDetails.locationE6.latE6/1E6, portalDetails.locationE6.lngE6/1E6]; - var portalSelected = selectedPortal === portal.options.guid; - - for(var i in portalDetails.resonatorArray.resonators) { - resoData = portalDetails.resonatorArray.resonators[i]; - if(resoData === null) continue; - - var resoLatLng = this.getResonatorLatLng(resoData.distanceToPortal, resoData.slot, portalLatLng); - - var resoMarker = this.createResoMarker(resoData, resoLatLng, portalSelected); - var connMarker = this.createConnMarker(resoData, resoLatLng, portalLatLng, portalSelected); - - resonatorsWithConnector.addLayer(resoMarker); - resonatorsWithConnector.addLayer(connMarker); - } - - resonatorsWithConnector.options = { - details: portalDetails.resonatorArray.resonators, - guid: portal.options.guid - }; - - this.resonators[portal.options.guid] = resonatorsWithConnector; - this.resonatorLayerGroup.addLayer(resonatorsWithConnector); - - // bring portal in front of resonator connector - portal.bringToFront(); -} - -window.plugin.drawResonators.Render.prototype.createResoMarker = function(resoData, resoLatLng, portalSelected) { - var resoProperty = this.getStyler().getResonatorStyle(resoData, portalSelected); - resoProperty.type = 'resonator'; - resoProperty.details = resoData; - var reso = L.circleMarker(resoLatLng, resoProperty); - return reso; -} - -window.plugin.drawResonators.Render.prototype.createConnMarker = function(resoData, resoLatLng, portalLatLng, portalSelected) { - var connProperty = this.getStyler().getConnectorStyle(resoData, portalSelected); - connProperty.type = 'connector'; - connProperty.details = resoData; - var conn = L.polyline([portalLatLng, resoLatLng], connProperty); - return conn; -} - -window.plugin.drawResonators.Render.prototype.getResonatorLatLng = function(dist, slot, portalLatLng) { - // offset in meters - var dn = dist*SLOT_TO_LAT[slot]; - var de = dist*SLOT_TO_LNG[slot]; - - // Coordinate offset in radians - var dLat = dn/EARTH_RADIUS; - var dLon = de/(EARTH_RADIUS*Math.cos(Math.PI/180*portalLatLng[0])); - - // OffsetPosition, decimal degrees - var lat0 = portalLatLng[0] + dLat * 180/Math.PI; - var lon0 = portalLatLng[1] + dLon * 180/Math.PI; - - return [lat0, lon0]; -} - -window.plugin.drawResonators.Render.prototype.deleteResonatorEntities = function(portalGuid) { - if (!(portalGuid in this.resonators)) return; - - var r = this.resonators[portalGuid]; - this.resonatorLayerGroup.removeLayer(r); - delete this.resonators[portalGuid]; -} - -// Save zoom level before zoom, use to determine redraw of resonator -window.plugin.drawResonators.Render.prototype.handleResonatorEntitiesBeforeZoom = function() { - this.beforeZoomLevel = map.getZoom(); -} - -window.plugin.drawResonators.Render.prototype.handleResonatorEntitiesAfterZoom = function() { - if(!this.isResonatorsShow()) { - this.clearAllResonators(); - return; - } - - // Draw all resonators if they were not drawn - if(!this.isResonatorsShowBeforeZoom()) { - this.drawAllResonators(); - } -} - -window.plugin.drawResonators.Render.prototype.handleEnableZoomLevelChange = function(zoomLevel) { - this.enableZoomLevel = zoomLevel; - - if(!this.isResonatorsShow()) { - this.clearAllResonators(); - return; - } - - // Draw all resonators if they were not drawn - if(!Object.keys(this.resonators).length > 0) { - this.drawAllResonators(); - } -} - -window.plugin.drawResonators.Render.prototype.clearAllResonators = function() { - this.resonatorLayerGroup.clearLayers(); - this.resonators = {}; -} - -window.plugin.drawResonators.Render.prototype.drawAllResonators = function() { - var render = this; - - // loop through level of portals, only draw if the portal is shown on map - for (var guid in window.portals) { - var portal = window.portals[guid]; - // FIXME: need to find a proper way to check if a portal is added to the map without depending on leaflet internals - // (and without depending on portalsLayers either - that's IITC internal) - if (portal._map) { - render.createResonatorEntities(portal); - } - } -} - -window.plugin.drawResonators.Render.prototype.portalSelectionChange = function(data) { - this.toggleSelectedStyle(data.selectedPortalGuid); - this.toggleSelectedStyle(data.unselectedPortalGuid); -} - -window.plugin.drawResonators.Render.prototype.toggleSelectedStyle = function(portalGuid) { - if (!(portalGuid in this.resonators)) return; - - var render = this; - var portalSelected = selectedPortal === portalGuid; - var r = this.resonators[portalGuid]; - - r.eachLayer(function(entity) { - var style; - if(entity.options.type === 'resonator') { - style = render.getStyler().getResonatorStyle(entity.options.details, portalSelected); - } else { - style = render.getStyler().getConnectorStyle(entity.options.details, portalSelected); - } - - entity.setStyle(style); - }); -} - -window.plugin.drawResonators.Render.prototype.addStyler = function(styler) { - this.stylers[styler.name] = styler; -} - -window.plugin.drawResonators.Render.prototype.getStylersList = function() { - return Object.keys(this.stylers); -} - -window.plugin.drawResonators.Render.prototype.getStyler = function() { - var stylerName = this.useStyler in this.stylers ? this.useStyler : 'Default'; - return this.stylers[stylerName]; -} - -// Change if styler need change, and redraw all resonators using new styler -window.plugin.drawResonators.Render.prototype.changeStyler = function(name) { - if (name === this.useStyler) return; - for(stylerName in this.stylers) { - if(stylerName === name) { - if(this.stylers[this.useStyler]) this.stylers[this.useStyler].onDisableFunc(); - this.useStyler = stylerName; - this.stylers[this.useStyler].onEnableFunc(); - this.clearAllResonators(); - this.drawAllResonators(); - return; - } - } -} - -window.plugin.drawResonators.Render.prototype.refreshStyler = function() { - this.clearAllResonators(); - this.drawAllResonators(); -} - -window.plugin.drawResonators.Render.prototype.isResonatorsShow = function() { - return map.getZoom() >= this.enableZoomLevel; -} - -window.plugin.drawResonators.Render.prototype.isResonatorsShowBeforeZoom = function() { - return this.beforeZoomLevel >= this.enableZoomLevel; -} - - - -//////// Styler for getting resonator and connector style //////// - - - -window.plugin.drawResonators.Styler = function(options) { - options = options || {}; - this.name = options['name'] || 'Default'; - this.otherOptions = options['otherOptions']; - this.getResonatorStyle = options['resonatorStyleFunc'] || this.defaultResonatorStyle; - this.getConnectorStyle = options['connectorStyleFunc'] || this.defaultConnectorStyle; - this.onEnableFunc = options['onEnableFunc'] || function() {}; - this.onDisableFunc = options['onDisableFunc'] || function() {}; -} - -window.plugin.drawResonators.Styler.prototype.DEFAULT_OPTIONS_RESONATOR_SELECTED = { - color: '#fff', - weight: 1.1, - radius: 4, - opacity: 1, - clickable: false}; - -window.plugin.drawResonators.Styler.prototype.DEFAULT_OPTIONS_RESONATOR_NON_SELECTED = { - color: '#aaa', - weight: 1, - radius: 3, - opacity: 1, - clickable: false}; - -window.plugin.drawResonators.Styler.prototype.DEFAULT_OPTIONS_RESONATOR_LINE_SELECTED = { - opacity: 0.7, - weight: 3, - color: '#FFA000', - dashArray: '0,10' + (new Array(25).join(',8,4')), - fill: false, - clickable: false}; - -window.plugin.drawResonators.Styler.prototype.DEFAULT_OPTIONS_RESONATOR_LINE_NON_SELECTED = { - opacity: 0.25, - weight: 2, - color: '#FFA000', - dashArray: '0,10' + (new Array(25).join(',8,4')), - fill: false, - clickable: false}; - -window.plugin.drawResonators.Styler.prototype.defaultResonatorStyle = function(resoDetail, selected) { - var resoSharedStyle = selected - ? this.DEFAULT_OPTIONS_RESONATOR_SELECTED - : this.DEFAULT_OPTIONS_RESONATOR_NON_SELECTED; - - var resoStyle = $.extend({ - fillColor: COLORS_LVL[resoDetail.level], - fillOpacity: resoDetail.energyTotal/RESO_NRG[resoDetail.level], - }, resoSharedStyle); - - return resoStyle; -} - -window.plugin.drawResonators.Styler.prototype.defaultConnectorStyle = function(resoDetail, selected) { - var connStyle = selected - ? this.DEFAULT_OPTIONS_RESONATOR_LINE_SELECTED - : this.DEFAULT_OPTIONS_RESONATOR_LINE_NON_SELECTED; - - return connStyle; -} - - - -//////// Options for storing and loading options //////// - - - -window.plugin.drawResonators.Options = function() { - this._options = {}; - this._callbacks = {}; -} - -window.plugin.drawResonators.Options.prototype.addCallback = function(name, callback) { - if (!this._callbacks[name]) { - this._callbacks[name] = []; - } - this._callbacks[name].push(callback); -} - -window.plugin.drawResonators.Options.prototype.newOption = function(name, defaultValue) { - this._options[name] = this.loadLocal(this.getStorageKey(name), defaultValue) -} - -window.plugin.drawResonators.Options.prototype.getOption = function(name) { - return this._options[name]; -} - -window.plugin.drawResonators.Options.prototype.removeOption = function(name) { - delete this._options[name]; - delete this._callbacks[name]; -} - -window.plugin.drawResonators.Options.prototype.changeOption = function(name, value) { - if(!(name in this._options)) return false; - if(value === this._options[name]) return false; - - this._options[name] = value; - this.storeLocal(this.getStorageKey(name), this._options[name]); - - if (this._callbacks[name] !== null) { - for(var i in this._callbacks[name]) { - this._callbacks[name][i](value); - } - } -} - -window.plugin.drawResonators.Options.prototype.getStorageKey = function(name) { - return 'plugin-drawResonators-option-' + name; -} - -window.plugin.drawResonators.Options.prototype.loadLocal = function(key, defaultValue) { - var objectJSON = localStorage[key]; - if(objectJSON) { - return JSON.parse(objectJSON); - } else { - return defaultValue; - } -} - -window.plugin.drawResonators.Options.prototype.storeLocal = function(key, value) { - if(typeof(value) !== 'undefined' && value !== null) { - localStorage[key] = JSON.stringify(value); - } else { - localStorage.removeItem(key); - } -} - - - -//////// Dialog - -window.plugin.drawResonators.Dialog = function() { - this._dialogEntries = {}; -} - -window.plugin.drawResonators.Dialog.prototype.addLink = function() { - $('#toolbox').append('Resonators '); -} - -window.plugin.drawResonators.Dialog.prototype.addEntry = function(name, dialogEntry) { - this._dialogEntries[name] = dialogEntry; - this.change(); -} - -window.plugin.drawResonators.Dialog.prototype.removeEntry = function(name) { - delete this._dialogEntries[name]; - this.change(); -} - -window.plugin.drawResonators.Dialog.prototype.show = function() { - window.dialog({html: this.getDialogHTML(), title: 'Resonators', modal: true, id: 'draw-reso-setting'}); - - // Attach entries event - for(var name in this._dialogEntries) { - var events = this._dialogEntries[name].getOnEvents(); - for(var i in events) { - var event = events[i]; - $('#draw-reso-dialog').on(event.event, '#' + event.id, event.callback); - } - } -} - -window.plugin.drawResonators.Dialog.prototype.change = function() { - if($('#draw-reso-dialog').length > 0) this.show(); -} - -window.plugin.drawResonators.Dialog.prototype.getDialogHTML = function() { - var html = '

' - for(var name in this._dialogEntries) { - html += '
' - + this._dialogEntries[name].getHTML() - + '
'; - } - html += '
'; - return html; -} - - - -//////// ListDialogEntry - - - -window.plugin.drawResonators.ListDialogEntry = function(options) { - this._name = options['name']; - this._label = options['label']; - this._valueFunc = options['valueFunc']; - this._valuesList = options['valuesList']; - this._valuesListFunc = options['valuesListFunc']; - this._onChangeCallback = options['onChangeCallback']; -} - -window.plugin.drawResonators.ListDialogEntry.prototype.getHTML = function() { - var curValue = this._valueFunc(); - var valuesList = this._valuesList ? this._valuesList : this._valuesListFunc(); - var html = '' - + ''; - return html; -} - -window.plugin.drawResonators.ListDialogEntry.prototype.getOnEvents = function() { - return [{'event': 'change', - 'id': this.getSelectId(), - 'callback': this._onChangeCallback - }]; -} - -window.plugin.drawResonators.ListDialogEntry.prototype.getSelectId = function() { - return 'draw-reso-option-' + this._name; -} - - - -//////// TextboxDialogEntry - - -window.plugin.drawResonators.TextboxDialogEntry = function(options) { - this._name = options['name']; - this._label = options['label']; - this._valueFunc = options['valueFunc']; - this._onChangeCallback = options['onChangeCallback']; -} - -window.plugin.drawResonators.TextboxDialogEntry.prototype.getHTML = function() { - var curValue = this._valueFunc(); - var html = '' - + ''; - return html; -} - - -window.plugin.drawResonators.TextboxDialogEntry.prototype.getOnEvents = function() { - return [{'event': 'change', - 'id': this.getInputId(), - 'callback': this._onChangeCallback - }]; -} - -window.plugin.drawResonators.TextboxDialogEntry.prototype.getInputId = function() { - return 'draw-reso-option-' + this._name; -} - - - -window.plugin.drawResonators.setupStyler = function() { - var thisPlugin = window.plugin.drawResonators; - - var highlightedReso = {color: '#fff', weight: 2, radius: 4, opacity: 1, clickable: false}; - var normalReso = {color: '#aaa', weight: 1, radius: 3, opacity: 1, clickable: false}; - var selectedReso = {color: '#eee', weight: 1.1, radius: 4, opacity: 1, clickable: false}; - var highlightedConn = {opacity: 0.7, weight: 3, color: '#FFA000', dashArray: '0,10,999', color: '#FFA000', fill: false, clickable: false}; - var normalConn = {opacity: 0.25, weight: 2, color: '#FFA000', dashArray: '0,10' + (new Array(25).join(',8,4')), fill: false, clickable: false}; - var selectedConn = {opacity: 0.7, weight: 3, color: '#FFA000', dashArray: '0,10' + (new Array(25).join(',8,4')), fill: false, clickable: false}; - - // Styler for highlighting resonators deployed by me - var myReso = { - name: 'Highlight my resonators', - otherOptions: { - 'highlightedReso' : highlightedReso, - 'normalReso' : normalReso, - 'selectedReso' : selectedReso, - 'highlightedConn' : highlightedConn, - 'normalConn' : normalConn, - 'selectedConn' : selectedConn - }, - resonatorStyleFunc: function(resoDetail, selected) { - var mine = resoDetail.ownerGuid === PLAYER.guid; - var resoSharedStyle = mine - ? this.otherOptions.highlightedReso - : (selected ? this.otherOptions.selectedReso : this.otherOptions.normalReso); - - var resoStyle = $.extend({ - fillColor: COLORS_LVL[resoDetail.level], - fillOpacity: resoDetail.energyTotal/RESO_NRG[resoDetail.level] * (mine ? 1 : 0.75) - }, resoSharedStyle); - return resoStyle; - }, - connectorStyleFunc: function(resoDetail, selected) { - var mine = resoDetail.ownerGuid === PLAYER.guid; - var connStyle = mine - ? this.otherOptions.highlightedConn - : (selected ? this.otherOptions.selectedConn : this.otherOptions.normalConn); - return connStyle; - } - }; - - thisPlugin.render.addStyler(new thisPlugin.Styler(myReso)); - - // Styler for highlighting L8 resonators - var l8Reso = { - name: 'Highlight L8 resonators', - otherOptions: { - 'highlightedReso' : highlightedReso, - 'normalReso' : normalReso, - 'selectedReso' : selectedReso, - 'highlightedConn' : highlightedConn, - 'normalConn' : normalConn, - 'selectedConn' : selectedConn - }, - resonatorStyleFunc: function(resoDetail, selected) { - var l8 = resoDetail.level === 8; - var resoSharedStyle = l8 - ? this.otherOptions.highlightedReso - : (selected ? this.otherOptions.selectedReso : this.otherOptions.normalReso); - - var resoStyle = $.extend({ - fillColor: COLORS_LVL[resoDetail.level], - fillOpacity: resoDetail.energyTotal/RESO_NRG[resoDetail.level] * (l8 ? 1 : 0.75) - }, resoSharedStyle); - return resoStyle; - }, - connectorStyleFunc: function(resoDetail, selected) { - var l8 = resoDetail.level === 8; - var connStyle = l8 - ? this.otherOptions.highlightedConn - : (selected ? this.otherOptions.selectedConn : this.otherOptions.normalConn); - return connStyle; - } - }; - - thisPlugin.render.addStyler(new thisPlugin.Styler(l8Reso)); - - // Styler for highlighting resonators with less than X% energy - var lessThanXPctReso = { - name: 'Highlight < X% resonators', - otherOptions: { - 'highlightedReso': highlightedReso, - 'normalReso': normalReso, - 'selectedReso': selectedReso, - 'highlightedConn': highlightedConn, - 'normalConn': normalConn, - 'selectedConn': selectedConn, - 'pct': 15, - 'dialogEntry': new thisPlugin.TextboxDialogEntry({ - name: 'resoLessThanPct-pct', - label: 'Percentage', - valueFunc: function() {return thisPlugin.options.getOption('styler-resoLessThanPct-pct')}, - onChangeCallback: function(event) {thisPlugin.options.changeOption('styler-resoLessThanPct-pct', parseInt(event.target.value));} - }) - }, - resonatorStyleFunc: function(resoDetail, selected) { - var highlight = (resoDetail.energyTotal * 100) < (RESO_NRG[resoDetail.level] * this.otherOptions.pct); - var resoSharedStyle = highlight - ? this.otherOptions.highlightedReso - : (selected ? this.otherOptions.selectedReso : this.otherOptions.normalReso); - - var resoStyle = $.extend({ - fillColor: COLORS_LVL[resoDetail.level], - fillOpacity: resoDetail.energyTotal/RESO_NRG[resoDetail.level] - }, resoSharedStyle); - return resoStyle; - }, - connectorStyleFunc: function(resoDetail, selected) { - var highlight = (resoDetail.energyTotal * 100) < (RESO_NRG[resoDetail.level] * this.otherOptions.pct); - var connStyle = highlight - ? this.otherOptions.highlightedConn - : (selected ? this.otherOptions.selectedConn : this.otherOptions.normalConn); - return connStyle; - }, - onEnableFunc: function() { - var thisPlugin = window.plugin.drawResonators; - var thisStyler = this; - // Add option - thisPlugin.options.newOption('styler-resoLessThanPct-pct', 15); - thisPlugin.options.addCallback('styler-resoLessThanPct-pct', function(value) { - thisStyler.otherOptions.pct = value; - thisPlugin.render.refreshStyler(); - }); - thisStyler.otherOptions.pct = thisPlugin.options.getOption('styler-resoLessThanPct-pct'); - // Add dialog entry - thisPlugin.dialog.addEntry('resoLessThanPct-pct', this.otherOptions.dialogEntry); - }, - onDisableFunc: function() { - var thisPlugin = window.plugin.drawResonators; - // Remove option - thisPlugin.options.removeOption('styler-resoLessThanPct-pct'); - // Remove dialog entry - thisPlugin.dialog.removeEntry('resoLessThanPct-pct'); - } - }; - - thisPlugin.render.addStyler(new thisPlugin.Styler(lessThanXPctReso)); - - // Styler for highlighting resonators deployed by specific player - var resoOfSpecificPlayer = { - name: 'Highlight resonators by player', - otherOptions: { - 'highlightedReso': highlightedReso, - 'normalReso': normalReso, - 'selectedReso': selectedReso, - 'highlightedConn': highlightedConn, - 'normalConn': normalConn, - 'selectedConn': selectedConn, - 'player': '', - 'playerGuid': '', - 'dialogEntry': new thisPlugin.TextboxDialogEntry({ - name: 'resoOfSpecificPlayer-player', - label: 'Player name', - valueFunc: function() {return thisPlugin.options.getOption('styler-resoOfSpecificPlayer-player')}, - onChangeCallback: function(event) {thisPlugin.options.changeOption('styler-resoOfSpecificPlayer-player', event.target.value);} - }) - }, - resonatorStyleFunc: function(resoDetail, selected) { - var highlight = resoDetail.ownerGuid === this.otherOptions.playerGuid; - var resoSharedStyle = highlight - ? this.otherOptions.highlightedReso - : (selected ? this.otherOptions.selectedReso : this.otherOptions.normalReso); - - var resoStyle = $.extend({ - fillColor: COLORS_LVL[resoDetail.level], - fillOpacity: resoDetail.energyTotal/RESO_NRG[resoDetail.level] * (highlight ? 1 : 0.75) - }, resoSharedStyle); - return resoStyle; - }, - connectorStyleFunc: function(resoDetail, selected) { - var highlight = resoDetail.ownerGuid === this.otherOptions.playerGuid; - var connStyle = highlight - ? this.otherOptions.highlightedConn - : (selected ? this.otherOptions.selectedConn : this.otherOptions.normalConn); - return connStyle; - }, - onEnableFunc: function() { - var thisPlugin = window.plugin.drawResonators; - var thisStyler = this; - // Add option - thisPlugin.options.newOption('styler-resoOfSpecificPlayer-player', ''); - thisPlugin.options.addCallback('styler-resoOfSpecificPlayer-player', function(value) { - thisStyler.otherOptions.player = value; - thisStyler.otherOptions.playerGuid = window.playerNameToGuid(value); - thisPlugin.render.refreshStyler(); - }); - thisStyler.otherOptions.player = thisPlugin.options.getOption('styler-resoOfSpecificPlayer-player'); - thisStyler.otherOptions.playerGuid = window.playerNameToGuid(thisStyler.otherOptions.player); - // Add dialog entry - thisPlugin.dialog.addEntry('resoOfSpecificPlayer-player', this.otherOptions.dialogEntry); - }, - onDisableFunc: function() { - var thisPlugin = window.plugin.drawResonators; - // Remove option - thisPlugin.options.removeOption('styler-resoOfSpecificPlayer-player'); - // Remove dialog entry - thisPlugin.dialog.removeEntry('resoOfSpecificPlayer-player'); - } - }; - - thisPlugin.render.addStyler(new thisPlugin.Styler(resoOfSpecificPlayer)); - - thisPlugin.render.changeStyler(thisPlugin.options.getOption('useStyler')); -} - - -window.plugin.drawResonators.setupOptions = function() { - var thisPlugin = window.plugin.drawResonators; - // Initialize options - thisPlugin.options = new thisPlugin.Options(); - thisPlugin.options.newOption('enableZoomLevel', 17); - thisPlugin.options.newOption('useStyler', 'Default'); -} - -window.plugin.drawResonators.setupDialog = function() { - var thisPlugin = window.plugin.drawResonators; - // Initialize dialog - thisPlugin.dialog = new thisPlugin.Dialog(); - - var enableZoomLevelDialogEntryOptions = { - name: 'enable-zoom-level', - label: 'Enable zoom level', - valueFunc: function() {return thisPlugin.options.getOption('enableZoomLevel')}, - valuesList: {'15':15, '16':16, '17':17, '18':18, '19':19, '20':20, 'None':99}, - onChangeCallback: function(event) {thisPlugin.options.changeOption('enableZoomLevel', parseInt(event.target.value));} - }; - var enableZoomLevelDialogEntry = new thisPlugin.ListDialogEntry(enableZoomLevelDialogEntryOptions); - thisPlugin.dialog.addEntry('enable-zoom-level', enableZoomLevelDialogEntry); - - var stylerDialogEntryOptions = { - name: 'use-styler', - label: 'Styler', - valueFunc: function() {return thisPlugin.options.getOption('useStyler')}, - valuesListFunc: thisPlugin.render.getStylersList, - onChangeCallback: function(event) {thisPlugin.options.changeOption('useStyler', event.target.value);} - }; - var stylerDialogEntry = new thisPlugin.ListDialogEntry(stylerDialogEntryOptions); - thisPlugin.dialog.addEntry('use-styler', stylerDialogEntry); - - thisPlugin.dialog.addLink(); -} - -var setup = function() { - var thisPlugin = window.plugin.drawResonators; - - // Initialize options - thisPlugin.setupOptions(); - - // Initialize render - var renderOptions = {'enableZoomLevel': thisPlugin.options.getOption('enableZoomLevel')}; - - thisPlugin.render = new thisPlugin.Render(renderOptions); - - // callback run at option change - thisPlugin.options.addCallback('enableZoomLevel', thisPlugin.render.handleEnableZoomLevelChange); - thisPlugin.options.addCallback('useStyler', thisPlugin.render.changeStyler); - - // Initialize Dialog - thisPlugin.setupDialog(); - // Initialize styler - thisPlugin.setupStyler(); - - thisPlugin.render.registerHook(); - window.addLayerGroup('Resonators', thisPlugin.render.resonatorLayerGroup, true); -} - -// PLUGIN END ////////////////////////////////////////////////////////// - -@@PLUGINEND@@ diff --git a/plugins/draw-resonators.user.js b/plugins/draw-resonators.user.js index 3b3d94c0..2aa1b7df 100644 --- a/plugins/draw-resonators.user.js +++ b/plugins/draw-resonators.user.js @@ -1,7 +1,7 @@ // ==UserScript== // @id iitc-plugin-draw-resonators@xelio // @name IITC plugin: Draw resonators -// @category Deleted +// @category Layer // @version 0.4.1.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ From 7fb9a1aef9c4bee3fd1e1ea14f2c7460f601417c Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Tue, 10 Dec 2013 19:17:36 +0000 Subject: [PATCH 058/109] leaflet 0.7.1 update --- external/leaflet-src.js | 53 ++++++++++++++++------------------------- external/leaflet.js | 8 +++---- 2 files changed, 25 insertions(+), 36 deletions(-) diff --git a/external/leaflet-src.js b/external/leaflet-src.js index fa26f6e2..0047c611 100644 --- a/external/leaflet-src.js +++ b/external/leaflet-src.js @@ -7,7 +7,7 @@ var oldL = window.L, L = {}; -L.version = '0.7'; +L.version = '0.7.1'; // define Leaflet for Node module pattern loaders, including Browserify if (typeof module === 'object' && typeof module.exports === 'object') { @@ -134,21 +134,16 @@ L.Util = { } return ((!existingUrl || existingUrl.indexOf('?') === -1) ? '?' : '&') + params.join('&'); }, - - compileTemplate: function (str, data) { - // based on https://gist.github.com/padolsey/6008842 - str = str.replace(/"/g, '\\\"'); - str = str.replace(/\{ *([\w_]+) *\}/g, function (str, key) { - return '" + o["' + key + '"]' + (typeof data[key] === 'function' ? '(o)' : '') + ' + "'; - }); - // jshint evil: true - return new Function('o', 'return "' + str + '";'); - }, - template: function (str, data) { - var cache = L.Util._templateCache = L.Util._templateCache || {}; - cache[str] = cache[str] || L.Util.compileTemplate(str, data); - return cache[str](data); + return str.replace(/\{ *([\w_]+) *\}/g, function (str, key) { + var value = data[key]; + if (value === undefined) { + throw new Error('No value provided for variable ' + str); + } else if (typeof value === 'function') { + value = value(data); + } + return value; + }); }, isArray: Array.isArray || function (obj) { @@ -534,7 +529,7 @@ L.Mixin.Events.fire = L.Mixin.Events.fireEvent; doc = document.documentElement, ie3d = ie && ('transition' in doc.style), - webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()), + webkit3d = ('WebKitCSSMatrix' in window) && ('m11' in new window.WebKitCSSMatrix()) && !android23, gecko3d = 'MozPerspective' in doc.style, opera3d = 'OTransition' in doc.style, any3d = !window.L_DISABLE_3D && (ie3d || webkit3d || gecko3d || opera3d) && !phantomjs; @@ -1070,11 +1065,6 @@ L.DomUtil = { if (!disable3D && L.Browser.any3d) { el.style[L.DomUtil.TRANSFORM] = L.DomUtil.getTranslateString(point); - - // workaround for Android 2/3 stability (https://github.com/CloudMade/Leaflet/issues/69) - if (L.Browser.mobileWebkit3d) { - el.style.WebkitBackfaceVisibility = 'hidden'; - } } else { el.style.left = point.x + 'px'; el.style.top = point.y + 'px'; @@ -1770,6 +1760,8 @@ L.Map = L.Class.extend({ }, invalidateSize: function (options) { + if (!this._loaded) { return this; } + options = L.extend({ animate: false, pan: true @@ -1779,8 +1771,6 @@ L.Map = L.Class.extend({ this._sizeChanged = true; this._initialCenter = null; - if (!this._loaded) { return this; } - var newSize = this.getSize(), oldCenter = oldSize.divideBy(2).round(), newCenter = newSize.divideBy(2).round(), @@ -2857,11 +2847,9 @@ L.TileLayer = L.Class.extend({ /* Chrome 20 layouts much faster with top/left (verify with timeline, frames) Android 4 browser has display issues with top/left and requires transform instead - Android 2 browser requires top/left or tiles disappear on load or first drag - (reappear after zoom) https://github.com/CloudMade/Leaflet/issues/866 (other browsers don't currently care) - see debug/hacks/jitter.html for an example */ - L.DomUtil.setPosition(tile, tilePos, L.Browser.chrome || L.Browser.android23); + L.DomUtil.setPosition(tile, tilePos, L.Browser.chrome); this._tiles[tilePoint.x + ':' + tilePoint.y] = tile; @@ -4481,10 +4469,10 @@ L.FeatureGroup = L.LayerGroup.extend({ }, _propagateEvent: function (e) { - e = L.extend({}, e, { + e = L.extend({ layer: e.target, target: this - }); + }, e); this.fire(e.type, e); } }); @@ -5255,7 +5243,7 @@ L.Map.include((L.Path.SVG && !window.L_PREFER_CANVAS) || !L.Browser.canvas ? {} * and polylines (clipping, simplification, distances, etc.) */ -/*jshint bitwise:false */ // allow bitwise oprations for this file +/*jshint bitwise:false */ // allow bitwise operations for this file L.LineUtil = { @@ -5988,6 +5976,7 @@ L.CircleMarker = L.Circle.extend({ if (this._popup && this._popup._isOpen) { this._popup.setLatLng(latlng); } + return this; }, setRadius: function (radius) { @@ -6769,7 +6758,7 @@ L.Draggable = L.Class.extend({ L.DomUtil.enableImageDrag(); L.DomUtil.enableTextSelection(); - if (this._moved) { + if (this._moved && this._moving) { // ensure drag is not fired after dragend L.Util.cancelAnimFrame(this._animRequest); @@ -8903,8 +8892,8 @@ if (L.DomUtil.TRANSITION) { L.Map.include(!L.DomUtil.TRANSITION ? {} : { - _catchTransitionEnd: function () { - if (this._animatingZoom) { + _catchTransitionEnd: function (e) { + if (this._animatingZoom && e.propertyName.indexOf('transform') >= 0) { this._onZoomTransitionEnd(); } }, diff --git a/external/leaflet.js b/external/leaflet.js index 57324ea8..3023bbb7 100644 --- a/external/leaflet.js +++ b/external/leaflet.js @@ -3,7 +3,7 @@ (c) 2010-2013, Vladimir Agafonkin (c) 2010-2011, CloudMade */ -!function(t,e,i){var n=t.L,o={};o.version="0.7","object"==typeof module&&"object"==typeof module.exports?module.exports=o:"function"==typeof define&&define.amd&&define(o),o.noConflict=function(){return t.L=n,this},t.L=o,o.Util={extend:function(t){var e,i,n,o,s=Array.prototype.slice.call(arguments,1);for(i=0,n=s.length;n>i;i++){o=s[i]||{};for(e in o)o.hasOwnProperty(e)&&(t[e]=o[e])}return t},bind:function(t,e){var i=arguments.length>2?Array.prototype.slice.call(arguments,2):null;return function(){return t.apply(e,i||arguments)}},stamp:function(){var t=0,e="_leaflet_id";return function(i){return i[e]=i[e]||++t,i[e]}}(),invokeEach:function(t,e,i){var n,o;if("object"==typeof t){o=Array.prototype.slice.call(arguments,3);for(n in t)e.apply(i,[n,t[n]].concat(o));return!0}return!1},limitExecByInterval:function(t,e,i){var n,o;return function s(){var a=arguments;return n?(o=!0,void 0):(n=!0,setTimeout(function(){n=!1,o&&(s.apply(i,a),o=!1)},e),t.apply(i,a),void 0)}},falseFn:function(){return!1},formatNum:function(t,e){var i=Math.pow(10,e||5);return Math.round(t*i)/i},trim:function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},splitWords:function(t){return o.Util.trim(t).split(/\s+/)},setOptions:function(t,e){return t.options=o.extend({},t.options,e),t.options},getParamString:function(t,e,i){var n=[];for(var o in t)n.push(encodeURIComponent(i?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(e&&-1!==e.indexOf("?")?"&":"?")+n.join("&")},compileTemplate:function(t,e){return t=t.replace(/"/g,'\\"'),t=t.replace(/\{ *([\w_]+) *\}/g,function(t,i){return'" + o["'+i+'"]'+("function"==typeof e[i]?"(o)":"")+' + "'}),new Function("o",'return "'+t+'";')},template:function(t,e){var i=o.Util._templateCache=o.Util._templateCache||{};return i[t]=i[t]||o.Util.compileTemplate(t,e),i[t](e)},isArray:Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyImageUrl:"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="},function(){function e(e){var i,n,o=["webkit","moz","o","ms"];for(i=0;it;t++)n._initHooks[t].call(this)}},e},o.Class.include=function(t){o.extend(this.prototype,t)},o.Class.mergeOptions=function(t){o.extend(this.prototype.options,t)},o.Class.addInitHook=function(t){var e=Array.prototype.slice.call(arguments,1),i="function"==typeof t?t:function(){this[t].apply(this,e)};this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i)};var s="_leaflet_events";o.Mixin={},o.Mixin.Events={addEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d=this[s]=this[s]||{},p=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)r={action:e,context:i||this},h=t[n],p?(l=h+"_idx",u=l+"_len",c=d[l]=d[l]||{},c[p]||(c[p]=[],d[u]=(d[u]||0)+1),c[p].push(r)):(d[h]=d[h]||[],d[h].push(r));return this},hasEventListeners:function(t){var e=this[s];return!!e&&(t in e&&e[t].length>0||t+"_idx"in e&&e[t+"_idx_len"]>0)},removeEventListener:function(t,e,i){if(!this[s])return this;if(!t)return this.clearAllEventListeners();if(o.Util.invokeEach(t,this.removeEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d,p,_=this[s],m=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)if(r=t[n],u=r+"_idx",c=u+"_len",d=_[u],e){if(h=m&&d?d[m]:_[r]){for(l=h.length-1;l>=0;l--)h[l].action!==e||i&&h[l].context!==i||(p=h.splice(l,1),p[0].action=o.Util.falseFn);i&&d&&0===h.length&&(delete d[m],_[c]--)}}else delete _[r],delete _[u],delete _[c];return this},clearAllEventListeners:function(){return delete this[s],this},fireEvent:function(t,e){if(!this.hasEventListeners(t))return this;var i,n,a,r,h,l=o.Util.extend({},e,{type:t,target:this}),u=this[s];if(u[t])for(i=u[t].slice(),n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);r=u[t+"_idx"];for(h in r)if(i=r[h].slice())for(n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);return this},addOneTimeEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addOneTimeEventListener,this,e,i))return this;var n=o.bind(function(){this.removeEventListener(t,e,i).removeEventListener(t,n,i)},this);return this.addEventListener(t,e,i).addEventListener(t,n,i)}},o.Mixin.Events.on=o.Mixin.Events.addEventListener,o.Mixin.Events.off=o.Mixin.Events.removeEventListener,o.Mixin.Events.once=o.Mixin.Events.addOneTimeEventListener,o.Mixin.Events.fire=o.Mixin.Events.fireEvent,function(){var n="ActiveXObject"in t,s=n&&!e.addEventListener,a=navigator.userAgent.toLowerCase(),r=-1!==a.indexOf("webkit"),h=-1!==a.indexOf("chrome"),l=-1!==a.indexOf("phantom"),u=-1!==a.indexOf("android"),c=-1!==a.search("android [23]"),d=-1!==a.indexOf("gecko"),p=typeof orientation!=i+"",_=t.navigator&&t.navigator.msPointerEnabled&&t.navigator.msMaxTouchPoints&&!t.PointerEvent,m=t.PointerEvent&&t.navigator.pointerEnabled&&t.navigator.maxTouchPoints||_,f="devicePixelRatio"in t&&t.devicePixelRatio>1||"matchMedia"in t&&t.matchMedia("(min-resolution:144dpi)")&&t.matchMedia("(min-resolution:144dpi)").matches,g=e.documentElement,v=n&&"transition"in g.style,y="WebKitCSSMatrix"in t&&"m11"in new t.WebKitCSSMatrix,P="MozPerspective"in g.style,L="OTransition"in g.style,x=!t.L_DISABLE_3D&&(v||y||P||L)&&!l,w=!t.L_NO_TOUCH&&!l&&function(){var t="ontouchstart";if(m||t in g)return!0;var i=e.createElement("div"),n=!1;return i.setAttribute?(i.setAttribute(t,"return;"),"function"==typeof i[t]&&(n=!0),i.removeAttribute(t),i=null,n):!1}();o.Browser={ie:n,ielt9:s,webkit:r,gecko:d&&!r&&!t.opera&&!n,android:u,android23:c,chrome:h,ie3d:v,webkit3d:y,gecko3d:P,opera3d:L,any3d:x,mobile:p,mobileWebkit:p&&r,mobileWebkit3d:p&&y,mobileOpera:p&&t.opera,touch:w,msPointer:_,pointer:m,retina:f}}(),o.Point=function(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e},o.Point.prototype={clone:function(){return new o.Point(this.x,this.y)},add:function(t){return this.clone()._add(o.point(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(o.point(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},distanceTo:function(t){t=o.point(t);var e=t.x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return t=o.point(t),t.x===this.x&&t.y===this.y},contains:function(t){return t=o.point(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+o.Util.formatNum(this.x)+", "+o.Util.formatNum(this.y)+")"}},o.point=function(t,e,n){return t instanceof o.Point?t:o.Util.isArray(t)?new o.Point(t[0],t[1]):t===i||null===t?t:new o.Point(t,e,n)},o.Bounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.Bounds.prototype={extend:function(t){return t=o.point(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new o.Point((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new o.Point(this.min.x,this.max.y)},getTopRight:function(){return new o.Point(this.max.x,this.min.y)},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var e,i;return t="number"==typeof t[0]||t instanceof o.Point?o.point(t):o.bounds(t),t instanceof o.Bounds?(e=t.min,i=t.max):e=i=t,e.x>=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=o.bounds(t);var e=this.min,i=this.max,n=t.min,s=t.max,a=s.x>=e.x&&n.x<=i.x,r=s.y>=e.y&&n.y<=i.y;return a&&r},isValid:function(){return!(!this.min||!this.max)}},o.bounds=function(t,e){return!t||t instanceof o.Bounds?t:new o.Bounds(t,e)},o.Transformation=function(t,e,i,n){this._a=t,this._b=e,this._c=i,this._d=n},o.Transformation.prototype={transform:function(t,e){return this._transform(t.clone(),e)},_transform:function(t,e){return e=e||1,t.x=e*(this._a*t.x+this._b),t.y=e*(this._c*t.y+this._d),t},untransform:function(t,e){return e=e||1,new o.Point((t.x/e-this._b)/this._a,(t.y/e-this._d)/this._c)}},o.DomUtil={get:function(t){return"string"==typeof t?e.getElementById(t):t},getStyle:function(t,i){var n=t.style[i];if(!n&&t.currentStyle&&(n=t.currentStyle[i]),(!n||"auto"===n)&&e.defaultView){var o=e.defaultView.getComputedStyle(t,null);n=o?o[i]:null}return"auto"===n?null:n},getViewportOffset:function(t){var i,n=0,s=0,a=t,r=e.body,h=e.documentElement;do{if(n+=a.offsetTop||0,s+=a.offsetLeft||0,n+=parseInt(o.DomUtil.getStyle(a,"borderTopWidth"),10)||0,s+=parseInt(o.DomUtil.getStyle(a,"borderLeftWidth"),10)||0,i=o.DomUtil.getStyle(a,"position"),a.offsetParent===r&&"absolute"===i)break;if("fixed"===i){n+=r.scrollTop||h.scrollTop||0,s+=r.scrollLeft||h.scrollLeft||0;break}if("relative"===i&&!a.offsetLeft){var l=o.DomUtil.getStyle(a,"width"),u=o.DomUtil.getStyle(a,"max-width"),c=a.getBoundingClientRect();("none"!==l||"none"!==u)&&(s+=c.left+a.clientLeft),n+=c.top+(r.scrollTop||h.scrollTop||0);break}a=a.offsetParent}while(a);a=t;do{if(a===r)break;n-=a.scrollTop||0,s-=a.scrollLeft||0,a=a.parentNode}while(a);return new o.Point(s,n)},documentIsLtr:function(){return o.DomUtil._docIsLtrCached||(o.DomUtil._docIsLtrCached=!0,o.DomUtil._docIsLtr="ltr"===o.DomUtil.getStyle(e.body,"direction")),o.DomUtil._docIsLtr},create:function(t,i,n){var o=e.createElement(t);return o.className=i,n&&n.appendChild(o),o},hasClass:function(t,e){if(t.classList!==i)return t.classList.contains(e);var n=o.DomUtil._getClass(t);return n.length>0&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(n)},addClass:function(t,e){if(t.classList!==i)for(var n=o.Util.splitWords(e),s=0,a=n.length;a>s;s++)t.classList.add(n[s]);else if(!o.DomUtil.hasClass(t,e)){var r=o.DomUtil._getClass(t);o.DomUtil._setClass(t,(r?r+" ":"")+e)}},removeClass:function(t,e){t.classList!==i?t.classList.remove(e):o.DomUtil._setClass(t,o.Util.trim((" "+o.DomUtil._getClass(t)+" ").replace(" "+e+" "," ")))},_setClass:function(t,e){t.className.baseVal===i?t.className=e:t.className.baseVal=e},_getClass:function(t){return t.className.baseVal===i?t.className:t.className.baseVal},setOpacity:function(t,e){if("opacity"in t.style)t.style.opacity=e;else if("filter"in t.style){var i=!1,n="DXImageTransform.Microsoft.Alpha";try{i=t.filters.item(n)}catch(o){if(1===e)return}e=Math.round(100*e),i?(i.Enabled=100!==e,i.Opacity=e):t.style.filter+=" progid:"+n+"(opacity="+e+")"}},testProp:function(t){for(var i=e.documentElement.style,n=0;ni||i===e?e:t),new o.LatLng(this.lat,i)}},o.latLng=function(t,e){return t instanceof o.LatLng?t:o.Util.isArray(t)?"number"==typeof t[0]||"string"==typeof t[0]?new o.LatLng(t[0],t[1],t[2]):null:t===i||null===t?t:"object"==typeof t&&"lat"in t?new o.LatLng(t.lat,"lng"in t?t.lng:t.lon):e===i?null:new o.LatLng(t,e)},o.LatLngBounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.LatLngBounds.prototype={extend:function(t){if(!t)return this;var e=o.latLng(t);return t=null!==e?e:o.latLngBounds(t),t instanceof o.LatLng?this._southWest||this._northEast?(this._southWest.lat=Math.min(t.lat,this._southWest.lat),this._southWest.lng=Math.min(t.lng,this._southWest.lng),this._northEast.lat=Math.max(t.lat,this._northEast.lat),this._northEast.lng=Math.max(t.lng,this._northEast.lng)):(this._southWest=new o.LatLng(t.lat,t.lng),this._northEast=new o.LatLng(t.lat,t.lng)):t instanceof o.LatLngBounds&&(this.extend(t._southWest),this.extend(t._northEast)),this},pad:function(t){var e=this._southWest,i=this._northEast,n=Math.abs(e.lat-i.lat)*t,s=Math.abs(e.lng-i.lng)*t;return new o.LatLngBounds(new o.LatLng(e.lat-n,e.lng-s),new o.LatLng(i.lat+n,i.lng+s))},getCenter:function(){return new o.LatLng((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new o.LatLng(this.getNorth(),this.getWest())},getSouthEast:function(){return new o.LatLng(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof o.LatLng?o.latLng(t):o.latLngBounds(t);var e,i,n=this._southWest,s=this._northEast;return t instanceof o.LatLngBounds?(e=t.getSouthWest(),i=t.getNorthEast()):e=i=t,e.lat>=n.lat&&i.lat<=s.lat&&e.lng>=n.lng&&i.lng<=s.lng},intersects:function(t){t=o.latLngBounds(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),s=t.getNorthEast(),a=s.lat>=e.lat&&n.lat<=i.lat,r=s.lng>=e.lng&&n.lng<=i.lng;return a&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t){return t?(t=o.latLngBounds(t),this._southWest.equals(t.getSouthWest())&&this._northEast.equals(t.getNorthEast())):!1},isValid:function(){return!(!this._southWest||!this._northEast)}},o.latLngBounds=function(t,e){return!t||t instanceof o.LatLngBounds?t:new o.LatLngBounds(t,e)},o.Projection={},o.Projection.SphericalMercator={MAX_LATITUDE:85.0511287798,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=t.lng*e,a=n*e;return a=Math.log(Math.tan(Math.PI/4+a/2)),new o.Point(s,a)},unproject:function(t){var e=o.LatLng.RAD_TO_DEG,i=t.x*e,n=(2*Math.atan(Math.exp(t.y))-Math.PI/2)*e;return new o.LatLng(n,i)}},o.Projection.LonLat={project:function(t){return new o.Point(t.lng,t.lat)},unproject:function(t){return new o.LatLng(t.y,t.x)}},o.CRS={latLngToPoint:function(t,e){var i=this.projection.project(t),n=this.scale(e);return this.transformation._transform(i,n)},pointToLatLng:function(t,e){var i=this.scale(e),n=this.transformation.untransform(t,i);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},scale:function(t){return 256*Math.pow(2,t)},getSize:function(t){var e=this.scale(t);return o.point(e,e)}},o.CRS.Simple=o.extend({},o.CRS,{projection:o.Projection.LonLat,transformation:new o.Transformation(1,0,-1,0),scale:function(t){return Math.pow(2,t)}}),o.CRS.EPSG3857=o.extend({},o.CRS,{code:"EPSG:3857",projection:o.Projection.SphericalMercator,transformation:new o.Transformation(.5/Math.PI,.5,-.5/Math.PI,.5),project:function(t){var e=this.projection.project(t),i=6378137;return e.multiplyBy(i)}}),o.CRS.EPSG900913=o.extend({},o.CRS.EPSG3857,{code:"EPSG:900913"}),o.CRS.EPSG4326=o.extend({},o.CRS,{code:"EPSG:4326",projection:o.Projection.LonLat,transformation:new o.Transformation(1/360,.5,-1/360,.5)}),o.Map=o.Class.extend({includes:o.Mixin.Events,options:{crs:o.CRS.EPSG3857,fadeAnimation:o.DomUtil.TRANSITION&&!o.Browser.android23,trackResize:!0,markerZoomAnimation:o.DomUtil.TRANSITION&&o.Browser.any3d},initialize:function(t,e){e=o.setOptions(this,e),this._initContainer(t),this._initLayout(),this._onResize=o.bind(this._onResize,this),this._initEvents(),e.maxBounds&&this.setMaxBounds(e.maxBounds),e.center&&e.zoom!==i&&this.setView(o.latLng(e.center),e.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._tileLayersNum=0,this.callInitHooks(),this._addLayers(e.layers)},setView:function(t,e){return e=e===i?this.getZoom():e,this._resetView(o.latLng(t),this._limitZoom(e)),this},setZoom:function(t,e){return this._loaded?this.setView(this.getCenter(),t,{zoom:e}):(this._zoom=this._limitZoom(t),this)},zoomIn:function(t,e){return this.setZoom(this._zoom+(t||1),e)},zoomOut:function(t,e){return this.setZoom(this._zoom-(t||1),e)},setZoomAround:function(t,e,i){var n=this.getZoomScale(e),s=this.getSize().divideBy(2),a=t instanceof o.Point?t:this.latLngToContainerPoint(t),r=a.subtract(s).multiplyBy(1-1/n),h=this.containerPointToLatLng(s.add(r));return this.setView(h,e,{zoom:i})},fitBounds:function(t,e){e=e||{},t=t.getBounds?t.getBounds():o.latLngBounds(t);var i=o.point(e.paddingTopLeft||e.padding||[0,0]),n=o.point(e.paddingBottomRight||e.padding||[0,0]),s=this.getBoundsZoom(t,!1,i.add(n)),a=n.subtract(i).divideBy(2),r=this.project(t.getSouthWest(),s),h=this.project(t.getNorthEast(),s),l=this.unproject(r.add(h).divideBy(2).add(a),s);return s=e&&e.maxZoom?Math.min(e.maxZoom,s):s,this.setView(l,s,e)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,e){return this.setView(t,this._zoom,{pan:e})},panBy:function(t){return this.fire("movestart"),this._rawPanBy(o.point(t)),this.fire("move"),this.fire("moveend")},setMaxBounds:function(t){return t=o.latLngBounds(t),this.options.maxBounds=t,t?(this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds,this)):this.off("moveend",this._panInsideMaxBounds,this)},panInsideBounds:function(t,e){var i=this.getCenter(),n=this._limitCenter(i,this._zoom,t);return i.equals(n)?this:this.panTo(n,e)},addLayer:function(t){var e=o.stamp(t);return this._layers[e]?this:(this._layers[e]=t,!t.options||isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[e]=t,this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum++,this._tileLayersToLoad++,t.on("load",this._onTileLayerLoad,this)),this._loaded&&this._layerAdd(t),this)},removeLayer:function(t){var e=o.stamp(t);return this._layers[e]?(this._loaded&&t.onRemove(this),delete this._layers[e],this._loaded&&this.fire("layerremove",{layer:t}),this._zoomBoundLayers[e]&&(delete this._zoomBoundLayers[e],this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum--,this._tileLayersToLoad--,t.off("load",this._onTileLayerLoad,this)),this):this},hasLayer:function(t){return t?o.stamp(t)in this._layers:!1},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},invalidateSize:function(t){t=o.extend({animate:!1,pan:!0},t===!0?{animate:!0}:t);var e=this.getSize();if(this._sizeChanged=!0,this._initialCenter=null,!this._loaded)return this;var i=this.getSize(),n=e.divideBy(2).round(),s=i.divideBy(2).round(),a=n.subtract(s);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(o.bind(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},addHandler:function(t,e){if(!e)return this;var i=this[t]=new e(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){this._loaded&&this.fire("unload"),this._initEvents("off");try{delete this._container._leaflet}catch(t){this._container._leaflet=i}return this._clearPanes(),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this},getCenter:function(){return this._checkIfLoaded(),this._initialCenter&&!this._moved()?this._initialCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds(),e=this.unproject(t.getBottomLeft()),i=this.unproject(t.getTopRight());return new o.LatLngBounds(e,i)},getMinZoom:function(){return this.options.minZoom===i?this._layersMinZoom===i?0:this._layersMinZoom:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===i?this._layersMaxZoom===i?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=o.latLngBounds(t);var n,s=this.getMinZoom()-(e?1:0),a=this.getMaxZoom(),r=this.getSize(),h=t.getNorthWest(),l=t.getSouthEast(),u=!0;i=o.point(i||[0,0]);do s++,n=this.project(l,s).subtract(this.project(h,s)).add(i),u=e?n.x=s);return u&&e?null:e?s:s-1},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new o.Point(this._container.clientWidth,this._container.clientHeight),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(){var t=this._getTopLeftPoint();return new o.Bounds(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._initialTopLeftPoint},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t){var e=this.options.crs;return e.scale(t)/e.scale(this._zoom)},getScaleZoom:function(t){return this._zoom+Math.log(t)/Math.LN2},project:function(t,e){return e=e===i?this._zoom:e,this.options.crs.latLngToPoint(o.latLng(t),e)},unproject:function(t,e){return e=e===i?this._zoom:e,this.options.crs.pointToLatLng(o.point(t),e)},layerPointToLatLng:function(t){var e=o.point(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){var e=this.project(o.latLng(t))._round();return e._subtract(this.getPixelOrigin())},containerPointToLayerPoint:function(t){return o.point(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return o.point(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(o.point(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(o.latLng(t)))},mouseEventToContainerPoint:function(t){return o.DomEvent.getMousePosition(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=o.DomUtil.get(t);if(!e)throw new Error("Map container not found.");if(e._leaflet)throw new Error("Map container is already initialized.");e._leaflet=!0},_initLayout:function(){var t=this._container;o.DomUtil.addClass(t,"leaflet-container"+(o.Browser.touch?" leaflet-touch":"")+(o.Browser.retina?" leaflet-retina":"")+(o.Browser.ielt9?" leaflet-oldie":"")+(this.options.fadeAnimation?" leaflet-fade-anim":""));var e=o.DomUtil.getStyle(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._mapPane=t.mapPane=this._createPane("leaflet-map-pane",this._container),this._tilePane=t.tilePane=this._createPane("leaflet-tile-pane",this._mapPane),t.objectsPane=this._createPane("leaflet-objects-pane",this._mapPane),t.shadowPane=this._createPane("leaflet-shadow-pane"),t.overlayPane=this._createPane("leaflet-overlay-pane"),t.markerPane=this._createPane("leaflet-marker-pane"),t.popupPane=this._createPane("leaflet-popup-pane");var e=" leaflet-zoom-hide";this.options.markerZoomAnimation||(o.DomUtil.addClass(t.markerPane,e),o.DomUtil.addClass(t.shadowPane,e),o.DomUtil.addClass(t.popupPane,e))},_createPane:function(t,e){return o.DomUtil.create("div",t,e||this._panes.objectsPane)},_clearPanes:function(){this._container.removeChild(this._mapPane)},_addLayers:function(t){t=t?o.Util.isArray(t)?t:[t]:[];for(var e=0,i=t.length;i>e;e++)this.addLayer(t[e])},_resetView:function(t,e,i,n){var s=this._zoom!==e;n||(this.fire("movestart"),s&&this.fire("zoomstart")),this._zoom=e,this._initialCenter=t,this._initialTopLeftPoint=this._getNewTopLeftPoint(t),i?this._initialTopLeftPoint._add(this._getMapPanePos()):o.DomUtil.setPosition(this._mapPane,new o.Point(0,0)),this._tileLayersToLoad=this._tileLayersNum;var a=!this._loaded;this._loaded=!0,a&&(this.fire("load"),this.eachLayer(this._layerAdd,this)),this.fire("viewreset",{hard:!i}),this.fire("move"),(s||n)&&this.fire("zoomend"),this.fire("moveend",{hard:!i})},_rawPanBy:function(t){o.DomUtil.setPosition(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_updateZoomLevels:function(){var t,e=1/0,n=-1/0,o=this._getZoomSpan();for(t in this._zoomBoundLayers){var s=this._zoomBoundLayers[t];isNaN(s.options.minZoom)||(e=Math.min(e,s.options.minZoom)),isNaN(s.options.maxZoom)||(n=Math.max(n,s.options.maxZoom))}t===i?this._layersMaxZoom=this._layersMinZoom=i:(this._layersMaxZoom=n,this._layersMinZoom=e),o!==this._getZoomSpan()&&this.fire("zoomlevelschange")},_panInsideMaxBounds:function(){this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(e){if(o.DomEvent){e=e||"on",o.DomEvent[e](this._container,"click",this._onMouseClick,this);var i,n,s=["dblclick","mousedown","mouseup","mouseenter","mouseleave","mousemove","contextmenu"];for(i=0,n=s.length;n>i;i++)o.DomEvent[e](this._container,s[i],this._fireMouseEvent,this);this.options.trackResize&&o.DomEvent[e](t,"resize",this._onResize,this)}},_onResize:function(){o.Util.cancelAnimFrame(this._resizeRequest),this._resizeRequest=o.Util.requestAnimFrame(function(){this.invalidateSize({debounceMoveend:!0})},this,!1,this._container)},_onMouseClick:function(t){!this._loaded||!t._simulated&&(this.dragging&&this.dragging.moved()||this.boxZoom&&this.boxZoom.moved())||o.DomEvent._skipped(t)||(this.fire("preclick"),this._fireMouseEvent(t))},_fireMouseEvent:function(t){if(this._loaded&&!o.DomEvent._skipped(t)){var e=t.type;if(e="mouseenter"===e?"mouseover":"mouseleave"===e?"mouseout":e,this.hasEventListeners(e)){"contextmenu"===e&&o.DomEvent.preventDefault(t);var i=this.mouseEventToContainerPoint(t),n=this.containerPointToLayerPoint(i),s=this.layerPointToLatLng(n);this.fire(e,{latlng:s,layerPoint:n,containerPoint:i,originalEvent:t})}}},_onTileLayerLoad:function(){this._tileLayersToLoad--,this._tileLayersNum&&!this._tileLayersToLoad&&this.fire("tilelayersload")},_clearHandlers:function(){for(var t=0,e=this._handlers.length;e>t;t++)this._handlers[t].disable()},whenReady:function(t,e){return this._loaded?t.call(e||this,this):this.on("load",t,e),this},_layerAdd:function(t){t.onAdd(this),this.fire("layeradd",{layer:t})},_getMapPanePos:function(){return o.DomUtil.getPosition(this._mapPane)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(){return this.getPixelOrigin().subtract(this._getMapPanePos())},_getNewTopLeftPoint:function(t,e){var i=this.getSize()._divideBy(2);return this.project(t,e)._subtract(i)._round()},_latLngToNewLayerPoint:function(t,e,i){var n=this._getNewTopLeftPoint(i,e).add(this._getMapPanePos());return this.project(t,e)._subtract(n)},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,e,i){if(!i)return t;var n=this.project(t,e),s=this.getSize().divideBy(2),a=new o.Bounds(n.subtract(s),n.add(s)),r=this._getBoundsOffset(a,i,e);return this.unproject(n.add(r),e)},_limitOffset:function(t,e){if(!e)return t;var i=this.getPixelBounds(),n=new o.Bounds(i.min.add(t),i.max.add(t));return t.add(this._getBoundsOffset(n,e))},_getBoundsOffset:function(t,e,i){var n=this.project(e.getNorthWest(),i).subtract(t.min),s=this.project(e.getSouthEast(),i).subtract(t.max),a=this._rebound(n.x,-s.x),r=this._rebound(n.y,-s.y);return new o.Point(a,r)},_rebound:function(t,e){return t+e>0?Math.round(t-e)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(e))},_limitZoom:function(t){var e=this.getMinZoom(),i=this.getMaxZoom();return Math.max(e,Math.min(i,t))}}),o.map=function(t,e){return new o.Map(t,e)},o.Projection.Mercator={MAX_LATITUDE:85.0840591556,R_MINOR:6356752.314245179,R_MAJOR:6378137,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=this.R_MAJOR,a=this.R_MINOR,r=t.lng*e*s,h=n*e,l=a/s,u=Math.sqrt(1-l*l),c=u*Math.sin(h);c=Math.pow((1-c)/(1+c),.5*u);var d=Math.tan(.5*(.5*Math.PI-h))/c; -return h=-s*Math.log(d),new o.Point(r,h)},unproject:function(t){for(var e,i=o.LatLng.RAD_TO_DEG,n=this.R_MAJOR,s=this.R_MINOR,a=t.x*i/n,r=s/n,h=Math.sqrt(1-r*r),l=Math.exp(-t.y/n),u=Math.PI/2-2*Math.atan(l),c=15,d=1e-7,p=c,_=.1;Math.abs(_)>d&&--p>0;)e=h*Math.sin(u),_=Math.PI/2-2*Math.atan(l*Math.pow((1-e)/(1+e),.5*h))-u,u+=_;return new o.LatLng(u*i,a)}},o.CRS.EPSG3395=o.extend({},o.CRS,{code:"EPSG:3395",projection:o.Projection.Mercator,transformation:function(){var t=o.Projection.Mercator,e=t.R_MAJOR,i=.5/(Math.PI*e);return new o.Transformation(i,.5,-i,.5)}()}),o.TileLayer=o.Class.extend({includes:o.Mixin.Events,options:{minZoom:0,maxZoom:18,tileSize:256,subdomains:"abc",errorTileUrl:"",attribution:"",zoomOffset:0,opacity:1,unloadInvisibleTiles:o.Browser.mobile,updateWhenIdle:o.Browser.mobile},initialize:function(t,e){e=o.setOptions(this,e),e.detectRetina&&o.Browser.retina&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomOffset++,e.minZoom>0&&e.minZoom--,this.options.maxZoom--),e.bounds&&(e.bounds=o.latLngBounds(e.bounds)),this._url=t;var i=this.options.subdomains;"string"==typeof i&&(this.options.subdomains=i.split(""))},onAdd:function(t){this._map=t,this._animated=t._zoomAnimated,this._initContainer(),t.on({viewreset:this._reset,moveend:this._update},this),this._animated&&t.on({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||(this._limitedUpdate=o.Util.limitExecByInterval(this._update,150,this),t.on("move",this._limitedUpdate,this)),this._reset(),this._update()},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this._container.parentNode.removeChild(this._container),t.off({viewreset:this._reset,moveend:this._update},this),this._animated&&t.off({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||t.off("move",this._limitedUpdate,this),this._container=null,this._map=null},bringToFront:function(){var t=this._map._panes.tilePane;return this._container&&(t.appendChild(this._container),this._setAutoZIndex(t,Math.max)),this},bringToBack:function(){var t=this._map._panes.tilePane;return this._container&&(t.insertBefore(this._container,t.firstChild),this._setAutoZIndex(t,Math.min)),this},getAttribution:function(){return this.options.attribution},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},setUrl:function(t,e){return this._url=t,e||this.redraw(),this},redraw:function(){return this._map&&(this._reset({hard:!0}),this._update()),this},_updateZIndex:function(){this._container&&this.options.zIndex!==i&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t,e){var i,n,o,s=t.children,a=-e(1/0,-1/0);for(n=0,o=s.length;o>n;n++)s[n]!==this._container&&(i=parseInt(s[n].style.zIndex,10),isNaN(i)||(a=e(a,i)));this.options.zIndex=this._container.style.zIndex=(isFinite(a)?a:0)+e(1,-1)},_updateOpacity:function(){var t,e=this._tiles;if(o.Browser.ielt9)for(t in e)o.DomUtil.setOpacity(e[t],this.options.opacity);else o.DomUtil.setOpacity(this._container,this.options.opacity)},_initContainer:function(){var t=this._map._panes.tilePane;if(!this._container){if(this._container=o.DomUtil.create("div","leaflet-layer"),this._updateZIndex(),this._animated){var e="leaflet-tile-container";this._bgBuffer=o.DomUtil.create("div",e,this._container),this._tileContainer=o.DomUtil.create("div",e,this._container)}else this._tileContainer=this._container;t.appendChild(this._container),this.options.opacity<1&&this._updateOpacity()}},_reset:function(t){for(var e in this._tiles)this.fire("tileunload",{tile:this._tiles[e]});this._tiles={},this._tilesToLoad=0,this.options.reuseTiles&&(this._unusedTiles=[]),this._tileContainer.innerHTML="",this._animated&&t&&t.hard&&this._clearBgBuffer(),this._initContainer()},_getTileSize:function(){var t=this._map,e=t.getZoom()+this.options.zoomOffset,i=this.options.maxNativeZoom,n=this.options.tileSize;return i&&e>i&&(n=Math.round(t.getZoomScale(e)/t.getZoomScale(i)*n)),n},_update:function(){if(this._map){var t=this._map,e=t.getPixelBounds(),i=t.getZoom(),n=this._getTileSize();if(!(i>this.options.maxZoom||in;n++)this._addTile(a[n],l);this._tileContainer.appendChild(l)}},_tileShouldBeLoaded:function(t){if(t.x+":"+t.y in this._tiles)return!1;var e=this.options;if(!e.continuousWorld){var i=this._getWrapTileNum();if(e.noWrap&&(t.x<0||t.x>=i.x)||t.y<0||t.y>=i.y)return!1}if(e.bounds){var n=e.tileSize,o=t.multiplyBy(n),s=o.add([n,n]),a=this._map.unproject(o),r=this._map.unproject(s);if(e.continuousWorld||e.noWrap||(a=a.wrap(),r=r.wrap()),!e.bounds.intersects([a,r]))return!1}return!0},_removeOtherTiles:function(t){var e,i,n,o;for(o in this._tiles)e=o.split(":"),i=parseInt(e[0],10),n=parseInt(e[1],10),(it.max.x||nt.max.y)&&this._removeTile(o)},_removeTile:function(t){var e=this._tiles[t];this.fire("tileunload",{tile:e,url:e.src}),this.options.reuseTiles?(o.DomUtil.removeClass(e,"leaflet-tile-loaded"),this._unusedTiles.push(e)):e.parentNode===this._tileContainer&&this._tileContainer.removeChild(e),o.Browser.android||(e.onload=null,e.src=o.Util.emptyImageUrl),delete this._tiles[t]},_addTile:function(t,e){var i=this._getTilePos(t),n=this._getTile();o.DomUtil.setPosition(n,i,o.Browser.chrome||o.Browser.android23),this._tiles[t.x+":"+t.y]=n,this._loadTile(n,t),n.parentNode!==this._tileContainer&&e.appendChild(n)},_getZoomForUrl:function(){var t=this.options,e=this._map.getZoom();return t.zoomReverse&&(e=t.maxZoom-e),e+=t.zoomOffset,t.maxNativeZoom?Math.min(e,t.maxNativeZoom):e},_getTilePos:function(t){var e=this._map.getPixelOrigin(),i=this._getTileSize();return t.multiplyBy(i).subtract(e)},getTileUrl:function(t){return o.Util.template(this._url,o.extend({s:this._getSubdomain(t),z:t.z,x:t.x,y:t.y},this.options))},_getWrapTileNum:function(){var t=this._map.options.crs,e=t.getSize(this._map.getZoom());return e.divideBy(this.options.tileSize)},_adjustTilePoint:function(t){var e=this._getWrapTileNum();this.options.continuousWorld||this.options.noWrap||(t.x=(t.x%e.x+e.x)%e.x),this.options.tms&&(t.y=e.y-t.y-1),t.z=this._getZoomForUrl()},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_getTile:function(){if(this.options.reuseTiles&&this._unusedTiles.length>0){var t=this._unusedTiles.pop();return this._resetTile(t),t}return this._createTile()},_resetTile:function(){},_createTile:function(){var t=o.DomUtil.create("img","leaflet-tile");return t.style.width=t.style.height=this._getTileSize()+"px",t.galleryimg="no",t.onselectstart=t.onmousemove=o.Util.falseFn,o.Browser.ielt9&&this.options.opacity!==i&&o.DomUtil.setOpacity(t,this.options.opacity),o.Browser.mobileWebkit3d&&(t.style.WebkitBackfaceVisibility="hidden"),t},_loadTile:function(t,e){t._layer=this,t.onload=this._tileOnLoad,t.onerror=this._tileOnError,this._adjustTilePoint(e),t.src=this.getTileUrl(e),this.fire("tileloadstart",{tile:t,url:t.src})},_tileLoaded:function(){this._tilesToLoad--,this._animated&&o.DomUtil.addClass(this._tileContainer,"leaflet-zoom-animated"),this._tilesToLoad||(this.fire("load"),this._animated&&(clearTimeout(this._clearBgBufferTimer),this._clearBgBufferTimer=setTimeout(o.bind(this._clearBgBuffer,this),500)))},_tileOnLoad:function(){var t=this._layer;this.src!==o.Util.emptyImageUrl&&(o.DomUtil.addClass(this,"leaflet-tile-loaded"),t.fire("tileload",{tile:this,url:this.src})),t._tileLoaded()},_tileOnError:function(){var t=this._layer;t.fire("tileerror",{tile:this,url:this.src});var e=t.options.errorTileUrl;e&&(this.src=e),t._tileLoaded()}}),o.tileLayer=function(t,e){return new o.TileLayer(t,e)},o.TileLayer.WMS=o.TileLayer.extend({defaultWmsParams:{service:"WMS",request:"GetMap",version:"1.1.1",layers:"",styles:"",format:"image/jpeg",transparent:!1},initialize:function(t,e){this._url=t;var i=o.extend({},this.defaultWmsParams),n=e.tileSize||this.options.tileSize;i.width=i.height=e.detectRetina&&o.Browser.retina?2*n:n;for(var s in e)this.options.hasOwnProperty(s)||"crs"===s||(i[s]=e[s]);this.wmsParams=i,o.setOptions(this,e)},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[e]=this._crs.code,o.TileLayer.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._map,i=this.options.tileSize,n=t.multiplyBy(i),s=n.add([i,i]),a=this._crs.project(e.unproject(n,t.z)),r=this._crs.project(e.unproject(s,t.z)),h=this._wmsVersion>=1.3&&this._crs===o.CRS.EPSG4326?[r.y,a.x,a.y,r.x].join(","):[a.x,r.y,r.x,a.y].join(","),l=o.Util.template(this._url,{s:this._getSubdomain(t)});return l+o.Util.getParamString(this.wmsParams,l,!0)+"&BBOX="+h},setParams:function(t,e){return o.extend(this.wmsParams,t),e||this.redraw(),this}}),o.tileLayer.wms=function(t,e){return new o.TileLayer.WMS(t,e)},o.TileLayer.Canvas=o.TileLayer.extend({options:{async:!1},initialize:function(t){o.setOptions(this,t)},redraw:function(){this._map&&(this._reset({hard:!0}),this._update());for(var t in this._tiles)this._redrawTile(this._tiles[t]);return this},_redrawTile:function(t){this.drawTile(t,t._tilePoint,this._map._zoom)},_createTile:function(){var t=o.DomUtil.create("canvas","leaflet-tile");return t.width=t.height=this.options.tileSize,t.onselectstart=t.onmousemove=o.Util.falseFn,t},_loadTile:function(t,e){t._layer=this,t._tilePoint=e,this._redrawTile(t),this.options.async||this.tileDrawn(t)},drawTile:function(){},tileDrawn:function(t){this._tileOnLoad.call(t)}}),o.tileLayer.canvas=function(t){return new o.TileLayer.Canvas(t)},o.ImageOverlay=o.Class.extend({includes:o.Mixin.Events,options:{opacity:1},initialize:function(t,e,i){this._url=t,this._bounds=o.latLngBounds(e),o.setOptions(this,i)},onAdd:function(t){this._map=t,this._image||this._initImage(),t._panes.overlayPane.appendChild(this._image),t.on("viewreset",this._reset,this),t.options.zoomAnimation&&o.Browser.any3d&&t.on("zoomanim",this._animateZoom,this),this._reset()},onRemove:function(t){t.getPanes().overlayPane.removeChild(this._image),t.off("viewreset",this._reset,this),t.options.zoomAnimation&&t.off("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},bringToFront:function(){return this._image&&this._map._panes.overlayPane.appendChild(this._image),this},bringToBack:function(){var t=this._map._panes.overlayPane;return this._image&&t.insertBefore(this._image,t.firstChild),this},setUrl:function(t){this._url=t,this._image.src=this._url},getAttribution:function(){return this.options.attribution},_initImage:function(){this._image=o.DomUtil.create("img","leaflet-image-layer"),this._map.options.zoomAnimation&&o.Browser.any3d?o.DomUtil.addClass(this._image,"leaflet-zoom-animated"):o.DomUtil.addClass(this._image,"leaflet-zoom-hide"),this._updateOpacity(),o.extend(this._image,{galleryimg:"no",onselectstart:o.Util.falseFn,onmousemove:o.Util.falseFn,onload:o.bind(this._onImageLoad,this),src:this._url})},_animateZoom:function(t){var e=this._map,i=this._image,n=e.getZoomScale(t.zoom),s=this._bounds.getNorthWest(),a=this._bounds.getSouthEast(),r=e._latLngToNewLayerPoint(s,t.zoom,t.center),h=e._latLngToNewLayerPoint(a,t.zoom,t.center)._subtract(r),l=r._add(h._multiplyBy(.5*(1-1/n)));i.style[o.DomUtil.TRANSFORM]=o.DomUtil.getTranslateString(l)+" scale("+n+") "},_reset:function(){var t=this._image,e=this._map.latLngToLayerPoint(this._bounds.getNorthWest()),i=this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(e);o.DomUtil.setPosition(t,e),t.style.width=i.x+"px",t.style.height=i.y+"px"},_onImageLoad:function(){this.fire("load")},_updateOpacity:function(){o.DomUtil.setOpacity(this._image,this.options.opacity)}}),o.imageOverlay=function(t,e,i){return new o.ImageOverlay(t,e,i)},o.Icon=o.Class.extend({options:{className:""},initialize:function(t){o.setOptions(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,e){var i=this._getIconUrl(t);if(!i){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n;return n=e&&"IMG"===e.tagName?this._createImg(i,e):this._createImg(i),this._setIconStyles(n,t),n},_setIconStyles:function(t,e){var i,n=this.options,s=o.point(n[e+"Size"]);i="shadow"===e?o.point(n.shadowAnchor||n.iconAnchor):o.point(n.iconAnchor),!i&&s&&(i=s.divideBy(2,!0)),t.className="leaflet-marker-"+e+" "+n.className,i&&(t.style.marginLeft=-i.x+"px",t.style.marginTop=-i.y+"px"),s&&(t.style.width=s.x+"px",t.style.height=s.y+"px")},_createImg:function(t,i){return i=i||e.createElement("img"),i.src=t,i},_getIconUrl:function(t){return o.Browser.retina&&this.options[t+"RetinaUrl"]?this.options[t+"RetinaUrl"]:this.options[t+"Url"]}}),o.icon=function(t){return new o.Icon(t)},o.Icon.Default=o.Icon.extend({options:{iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],shadowSize:[41,41]},_getIconUrl:function(t){var e=t+"Url";if(this.options[e])return this.options[e];o.Browser.retina&&"icon"===t&&(t+="-2x");var i=o.Icon.Default.imagePath;if(!i)throw new Error("Couldn't autodetect L.Icon.Default.imagePath, set it manually.");return i+"/marker-"+t+".png"}}),o.Icon.Default.imagePath=function(){var t,i,n,o,s,a=e.getElementsByTagName("script"),r=/[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/;for(t=0,i=a.length;i>t;t++)if(n=a[t].src,o=n.match(r))return s=n.split(r)[0],(s?s+"/":"")+"images"}(),o.Marker=o.Class.extend({includes:o.Mixin.Events,options:{icon:new o.Icon.Default,title:"",alt:"",clickable:!0,draggable:!1,keyboard:!0,zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250},initialize:function(t,e){o.setOptions(this,e),this._latlng=o.latLng(t)},onAdd:function(t){this._map=t,t.on("viewreset",this.update,this),this._initIcon(),this.update(),this.fire("add"),t.options.zoomAnimation&&t.options.markerZoomAnimation&&t.on("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this.dragging&&this.dragging.disable(),this._removeIcon(),this._removeShadow(),this.fire("remove"),t.off({viewreset:this.update,zoomanim:this._animateZoom},this),this._map=null},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=o.latLng(t),this.update(),this.fire("move",{latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update(),this},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup),this},update:function(){if(this._icon){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,e=this._map,i=e.options.zoomAnimation&&e.options.markerZoomAnimation,n=i?"leaflet-zoom-animated":"leaflet-zoom-hide",s=t.icon.createIcon(this._icon),a=!1;s!==this._icon&&(this._icon&&this._removeIcon(),a=!0,t.title&&(s.title=t.title),t.alt&&(s.alt=t.alt)),o.DomUtil.addClass(s,n),t.keyboard&&(s.tabIndex="0"),this._icon=s,this._initInteraction(),t.riseOnHover&&o.DomEvent.on(s,"mouseover",this._bringToFront,this).on(s,"mouseout",this._resetZIndex,this);var r=t.icon.createShadow(this._shadow),h=!1;r!==this._shadow&&(this._removeShadow(),h=!0),r&&o.DomUtil.addClass(r,n),this._shadow=r,t.opacity<1&&this._updateOpacity();var l=this._map._panes;a&&l.markerPane.appendChild(this._icon),r&&h&&l.shadowPane.appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&o.DomEvent.off(this._icon,"mouseover",this._bringToFront).off(this._icon,"mouseout",this._resetZIndex),this._map._panes.markerPane.removeChild(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&this._map._panes.shadowPane.removeChild(this._shadow),this._shadow=null},_setPos:function(t){o.DomUtil.setPosition(this._icon,t),this._shadow&&o.DomUtil.setPosition(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(e)},_initInteraction:function(){if(this.options.clickable){var t=this._icon,e=["dblclick","mousedown","mouseover","mouseout","contextmenu"];o.DomUtil.addClass(t,"leaflet-clickable"),o.DomEvent.on(t,"click",this._onMouseClick,this),o.DomEvent.on(t,"keypress",this._onKeyPress,this);for(var i=0;is?(e.height=s+"px",o.DomUtil.addClass(t,a)):o.DomUtil.removeClass(t,a),this._containerWidth=this._container.offsetWidth},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=this._animated,i=o.point(this.options.offset);e&&o.DomUtil.setPosition(this._container,t),this._containerBottom=-i.y-(e?0:t.y),this._containerLeft=-Math.round(this._containerWidth/2)+i.x+(e?0:t.x),this._container.style.bottom=this._containerBottom+"px",this._container.style.left=this._containerLeft+"px"}},_zoomAnimation:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);o.DomUtil.setPosition(this._container,e)},_adjustPan:function(){if(this.options.autoPan){var t=this._map,e=this._container.offsetHeight,i=this._containerWidth,n=new o.Point(this._containerLeft,-e-this._containerBottom);this._animated&&n._add(o.DomUtil.getPosition(this._container));var s=t.layerPointToContainerPoint(n),a=o.point(this.options.autoPanPadding),r=o.point(this.options.autoPanPaddingTopLeft||a),h=o.point(this.options.autoPanPaddingBottomRight||a),l=t.getSize(),u=0,c=0;s.x+i+h.x>l.x&&(u=s.x+i-l.x+h.x),s.x-u-r.x<0&&(u=s.x-r.x),s.y+e+h.y>l.y&&(c=s.y+e-l.y+h.y),s.y-c-r.y<0&&(c=s.y-r.y),(u||c)&&t.fire("autopanstart").panBy([u,c])}},_onCloseButtonClick:function(t){this._close(),o.DomEvent.stop(t)}}),o.popup=function(t,e){return new o.Popup(t,e)},o.Map.include({openPopup:function(t,e,i){if(this.closePopup(),!(t instanceof o.Popup)){var n=t;t=new o.Popup(i).setLatLng(e).setContent(n)}return t._isOpen=!0,this._popup=t,this.addLayer(t)},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&(this.removeLayer(t),t._isOpen=!1),this}}),o.Marker.include({openPopup:function(){return this._popup&&this._map&&!this._map.hasLayer(this._popup)&&(this._popup.setLatLng(this._latlng),this._map.openPopup(this._popup)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(){return this._popup&&(this._popup._isOpen?this.closePopup():this.openPopup()),this},bindPopup:function(t,e){var i=o.point(this.options.icon.options.popupAnchor||[0,0]);return i=i.add(o.Popup.prototype.options.offset),e&&e.offset&&(i=i.add(e.offset)),e=o.extend({offset:i},e),this._popupHandlersAdded||(this.on("click",this.togglePopup,this).on("remove",this.closePopup,this).on("move",this._movePopup,this),this._popupHandlersAdded=!0),t instanceof o.Popup?(o.setOptions(t,e),this._popup=t):this._popup=new o.Popup(e,this).setContent(t),this},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},unbindPopup:function(){return this._popup&&(this._popup=null,this.off("click",this.togglePopup,this).off("remove",this.closePopup,this).off("move",this._movePopup,this),this._popupHandlersAdded=!1),this},getPopup:function(){return this._popup},_movePopup:function(t){this._popup.setLatLng(t.latlng)}}),o.LayerGroup=o.Class.extend({initialize:function(t){this._layers={};var e,i;if(t)for(e=0,i=t.length;i>e;e++)this.addLayer(t[e])},addLayer:function(t){var e=this.getLayerId(t);return this._layers[e]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var e=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[e]&&this._map.removeLayer(this._layers[e]),delete this._layers[e],this},hasLayer:function(t){return t?t in this._layers||this.getLayerId(t)in this._layers:!1},clearLayers:function(){return this.eachLayer(this.removeLayer,this),this},invoke:function(t){var e,i,n=Array.prototype.slice.call(arguments,1);for(e in this._layers)i=this._layers[e],i[t]&&i[t].apply(i,n);return this},onAdd:function(t){this._map=t,this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t),this._map=null},addTo:function(t){return t.addLayer(this),this},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];for(var e in this._layers)t.push(this._layers[e]);return t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return o.stamp(t)}}),o.layerGroup=function(t){return new o.LayerGroup(t)},o.FeatureGroup=o.LayerGroup.extend({includes:o.Mixin.Events,statics:{EVENTS:"click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose"},addLayer:function(t){return this.hasLayer(t)?this:("on"in t&&t.on(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.addLayer.call(this,t),this._popupContent&&t.bindPopup&&t.bindPopup(this._popupContent,this._popupOptions),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.off(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.removeLayer.call(this,t),this._popupContent&&this.invoke("unbindPopup"),this.fire("layerremove",{layer:t})):this},bindPopup:function(t,e){return this._popupContent=t,this._popupOptions=e,this.invoke("bindPopup",t,e)},openPopup:function(t){for(var e in this._layers){this._layers[e].openPopup(t);break}return this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new o.LatLngBounds;return this.eachLayer(function(e){t.extend(e instanceof o.Marker?e.getLatLng():e.getBounds())}),t},_propagateEvent:function(t){t=o.extend({},t,{layer:t.target,target:this}),this.fire(t.type,t)}}),o.featureGroup=function(t){return new o.FeatureGroup(t)},o.Path=o.Class.extend({includes:[o.Mixin.Events],statics:{CLIP_PADDING:function(){var e=o.Browser.mobile?1280:2e3,i=(e/Math.max(t.outerWidth,t.outerHeight)-1)/2;return Math.max(0,Math.min(.5,i))}()},options:{stroke:!0,color:"#0033ff",dashArray:null,lineCap:null,lineJoin:null,weight:5,opacity:.5,fill:!1,fillColor:null,fillOpacity:.2,clickable:!0},initialize:function(t){o.setOptions(this,t)},onAdd:function(t){this._map=t,this._container||(this._initElements(),this._initEvents()),this.projectLatlngs(),this._updatePath(),this._container&&this._map._pathRoot.appendChild(this._container),this.fire("add"),t.on({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){t._pathRoot.removeChild(this._container),this.fire("remove"),this._map=null,o.Browser.vml&&(this._container=null,this._stroke=null,this._fill=null),t.off({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},projectLatlngs:function(){},setStyle:function(t){return o.setOptions(this,t),this._container&&this._updateStyle(),this},redraw:function(){return this._map&&(this.projectLatlngs(),this._updatePath()),this}}),o.Map.include({_updatePathViewport:function(){var t=o.Path.CLIP_PADDING,e=this.getSize(),i=o.DomUtil.getPosition(this._mapPane),n=i.multiplyBy(-1)._subtract(e.multiplyBy(t)._round()),s=n.add(e.multiplyBy(1+2*t)._round());this._pathViewport=new o.Bounds(n,s)}}),o.Path.SVG_NS="http://www.w3.org/2000/svg",o.Browser.svg=!(!e.createElementNS||!e.createElementNS(o.Path.SVG_NS,"svg").createSVGRect),o.Path=o.Path.extend({statics:{SVG:o.Browser.svg},bringToFront:function(){var t=this._map._pathRoot,e=this._container;return e&&t.lastChild!==e&&t.appendChild(e),this},bringToBack:function(){var t=this._map._pathRoot,e=this._container,i=t.firstChild;return e&&i!==e&&t.insertBefore(e,i),this},getPathString:function(){},_createElement:function(t){return e.createElementNS(o.Path.SVG_NS,t)},_initElements:function(){this._map._initPathRoot(),this._initPath(),this._initStyle()},_initPath:function(){this._container=this._createElement("g"),this._path=this._createElement("path"),this.options.className&&o.DomUtil.addClass(this._path,this.options.className),this._container.appendChild(this._path)},_initStyle:function(){this.options.stroke&&(this._path.setAttribute("stroke-linejoin","round"),this._path.setAttribute("stroke-linecap","round")),this.options.fill&&this._path.setAttribute("fill-rule","evenodd"),this.options.pointerEvents&&this._path.setAttribute("pointer-events",this.options.pointerEvents),this.options.clickable||this.options.pointerEvents||this._path.setAttribute("pointer-events","none"),this._updateStyle()},_updateStyle:function(){this.options.stroke?(this._path.setAttribute("stroke",this.options.color),this._path.setAttribute("stroke-opacity",this.options.opacity),this._path.setAttribute("stroke-width",this.options.weight),this.options.dashArray?this._path.setAttribute("stroke-dasharray",this.options.dashArray):this._path.removeAttribute("stroke-dasharray"),this.options.lineCap&&this._path.setAttribute("stroke-linecap",this.options.lineCap),this.options.lineJoin&&this._path.setAttribute("stroke-linejoin",this.options.lineJoin)):this._path.setAttribute("stroke","none"),this.options.fill?(this._path.setAttribute("fill",this.options.fillColor||this.options.color),this._path.setAttribute("fill-opacity",this.options.fillOpacity)):this._path.setAttribute("fill","none")},_updatePath:function(){var t=this.getPathString();t||(t="M0 0"),this._path.setAttribute("d",t)},_initEvents:function(){if(this.options.clickable){(o.Browser.svg||!o.Browser.vml)&&o.DomUtil.addClass(this._path,"leaflet-clickable"),o.DomEvent.on(this._container,"click",this._onMouseClick,this);for(var t=["dblclick","mousedown","mouseover","mouseout","mousemove","contextmenu"],e=0;e';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(n){return!1}}(),o.Path=o.Browser.svg||!o.Browser.vml?o.Path:o.Path.extend({statics:{VML:!0,CLIP_PADDING:.02},_createElement:function(){try{return e.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return e.createElement("')}}catch(t){return function(t){return e.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),_initPath:function(){var t=this._container=this._createElement("shape");o.DomUtil.addClass(t,"leaflet-vml-shape"+(this.options.className?" "+this.options.className:"")),this.options.clickable&&o.DomUtil.addClass(t,"leaflet-clickable"),t.coordsize="1 1",this._path=this._createElement("path"),t.appendChild(this._path),this._map._pathRoot.appendChild(t)},_initStyle:function(){this._updateStyle()},_updateStyle:function(){var t=this._stroke,e=this._fill,i=this.options,n=this._container;n.stroked=i.stroke,n.filled=i.fill,i.stroke?(t||(t=this._stroke=this._createElement("stroke"),t.endcap="round",n.appendChild(t)),t.weight=i.weight+"px",t.color=i.color,t.opacity=i.opacity,t.dashStyle=i.dashArray?o.Util.isArray(i.dashArray)?i.dashArray.join(" "):i.dashArray.replace(/( *, *)/g," "):"",i.lineCap&&(t.endcap=i.lineCap.replace("butt","flat")),i.lineJoin&&(t.joinstyle=i.lineJoin)):t&&(n.removeChild(t),this._stroke=null),i.fill?(e||(e=this._fill=this._createElement("fill"),n.appendChild(e)),e.color=i.fillColor||i.color,e.opacity=i.fillOpacity):e&&(n.removeChild(e),this._fill=null)},_updatePath:function(){var t=this._container.style;t.display="none",this._path.v=this.getPathString()+" ",t.display=""}}),o.Map.include(o.Browser.svg||!o.Browser.vml?{}:{_initPathRoot:function(){if(!this._pathRoot){var t=this._pathRoot=e.createElement("div");t.className="leaflet-vml-container",this._panes.overlayPane.appendChild(t),this.on("moveend",this._updatePathViewport),this._updatePathViewport()}}}),o.Browser.canvas=function(){return!!e.createElement("canvas").getContext}(),o.Path=o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?o.Path:o.Path.extend({statics:{CANVAS:!0,SVG:!1},redraw:function(){return this._map&&(this.projectLatlngs(),this._requestUpdate()),this},setStyle:function(t){return o.setOptions(this,t),this._map&&(this._updateStyle(),this._requestUpdate()),this},onRemove:function(t){t.off("viewreset",this.projectLatlngs,this).off("moveend",this._updatePath,this),this.options.clickable&&(this._map.off("click",this._onClick,this),this._map.off("mousemove",this._onMouseMove,this)),this._requestUpdate(),this._map=null},_requestUpdate:function(){this._map&&!o.Path._updateRequest&&(o.Path._updateRequest=o.Util.requestAnimFrame(this._fireMapMoveEnd,this._map))},_fireMapMoveEnd:function(){o.Path._updateRequest=null,this.fire("moveend")},_initElements:function(){this._map._initPathRoot(),this._ctx=this._map._canvasCtx},_updateStyle:function(){var t=this.options;t.stroke&&(this._ctx.lineWidth=t.weight,this._ctx.strokeStyle=t.color),t.fill&&(this._ctx.fillStyle=t.fillColor||t.color)},_drawPath:function(){var t,e,i,n,s,a;for(this._ctx.beginPath(),t=0,i=this._parts.length;i>t;t++){for(e=0,n=this._parts[t].length;n>e;e++)s=this._parts[t][e],a=(0===e?"move":"line")+"To",this._ctx[a](s.x,s.y);this instanceof o.Polygon&&this._ctx.closePath()}},_checkIfEmpty:function(){return!this._parts.length},_updatePath:function(){if(!this._checkIfEmpty()){var t=this._ctx,e=this.options;this._drawPath(),t.save(),this._updateStyle(),e.fill&&(t.globalAlpha=e.fillOpacity,t.fill()),e.stroke&&(t.globalAlpha=e.opacity,t.stroke()),t.restore()}},_initEvents:function(){this.options.clickable&&(this._map.on("mousemove",this._onMouseMove,this),this._map.on("click",this._onClick,this))},_onClick:function(t){this._containsPoint(t.layerPoint)&&this.fire("click",t)},_onMouseMove:function(t){this._map&&!this._map._animatingZoom&&(this._containsPoint(t.layerPoint)?(this._ctx.canvas.style.cursor="pointer",this._mouseInside=!0,this.fire("mouseover",t)):this._mouseInside&&(this._ctx.canvas.style.cursor="",this._mouseInside=!1,this.fire("mouseout",t)))}}),o.Map.include(o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?{}:{_initPathRoot:function(){var t,i=this._pathRoot;i||(i=this._pathRoot=e.createElement("canvas"),i.style.position="absolute",t=this._canvasCtx=i.getContext("2d"),t.lineCap="round",t.lineJoin="round",this._panes.overlayPane.appendChild(i),this.options.zoomAnimation&&(this._pathRoot.className="leaflet-zoom-animated",this.on("zoomanim",this._animatePathZoom),this.on("zoomend",this._endPathZoom)),this.on("moveend",this._updateCanvasViewport),this._updateCanvasViewport())},_updateCanvasViewport:function(){if(!this._pathZooming){this._updatePathViewport();var t=this._pathViewport,e=t.min,i=t.max.subtract(e),n=this._pathRoot;o.DomUtil.setPosition(n,e),n.width=i.x,n.height=i.y,n.getContext("2d").translate(-e.x,-e.y)}}}),o.LineUtil={simplify:function(t,e){if(!e||!t.length)return t.slice();var i=e*e;return t=this._reducePoints(t,i),t=this._simplifyDP(t,i)},pointToSegmentDistance:function(t,e,i){return Math.sqrt(this._sqClosestPointOnSegment(t,e,i,!0))},closestPointOnSegment:function(t,e,i){return this._sqClosestPointOnSegment(t,e,i)},_simplifyDP:function(t,e){var n=t.length,o=typeof Uint8Array!=i+""?Uint8Array:Array,s=new o(n);s[0]=s[n-1]=1,this._simplifyDPStep(t,s,e,0,n-1);var a,r=[];for(a=0;n>a;a++)s[a]&&r.push(t[a]);return r},_simplifyDPStep:function(t,e,i,n,o){var s,a,r,h=0;for(a=n+1;o-1>=a;a++)r=this._sqClosestPointOnSegment(t[a],t[n],t[o],!0),r>h&&(s=a,h=r);h>i&&(e[s]=1,this._simplifyDPStep(t,e,i,n,s),this._simplifyDPStep(t,e,i,s,o))},_reducePoints:function(t,e){for(var i=[t[0]],n=1,o=0,s=t.length;s>n;n++)this._sqDist(t[n],t[o])>e&&(i.push(t[n]),o=n);return s-1>o&&i.push(t[s-1]),i},clipSegment:function(t,e,i,n){var o,s,a,r=n?this._lastCode:this._getBitCode(t,i),h=this._getBitCode(e,i);for(this._lastCode=h;;){if(!(r|h))return[t,e];if(r&h)return!1;o=r||h,s=this._getEdgeIntersection(t,e,o,i),a=this._getBitCode(s,i),o===r?(t=s,r=a):(e=s,h=a)}},_getEdgeIntersection:function(t,e,i,n){var s=e.x-t.x,a=e.y-t.y,r=n.min,h=n.max;return 8&i?new o.Point(t.x+s*(h.y-t.y)/a,h.y):4&i?new o.Point(t.x+s*(r.y-t.y)/a,r.y):2&i?new o.Point(h.x,t.y+a*(h.x-t.x)/s):1&i?new o.Point(r.x,t.y+a*(r.x-t.x)/s):void 0},_getBitCode:function(t,e){var i=0;return t.xe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i},_sqDist:function(t,e){var i=e.x-t.x,n=e.y-t.y;return i*i+n*n},_sqClosestPointOnSegment:function(t,e,i,n){var s,a=e.x,r=e.y,h=i.x-a,l=i.y-r,u=h*h+l*l;return u>0&&(s=((t.x-a)*h+(t.y-r)*l)/u,s>1?(a=i.x,r=i.y):s>0&&(a+=h*s,r+=l*s)),h=t.x-a,l=t.y-r,n?h*h+l*l:new o.Point(a,r)}},o.Polyline=o.Path.extend({initialize:function(t,e){o.Path.prototype.initialize.call(this,e),this._latlngs=this._convertLatLngs(t)},options:{smoothFactor:1,noClip:!1},projectLatlngs:function(){this._originalPoints=[];for(var t=0,e=this._latlngs.length;e>t;t++)this._originalPoints[t]=this._map.latLngToLayerPoint(this._latlngs[t])},getPathString:function(){for(var t=0,e=this._parts.length,i="";e>t;t++)i+=this._getPathPartStr(this._parts[t]);return i},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._latlngs=this._convertLatLngs(t),this.redraw()},addLatLng:function(t){return this._latlngs.push(o.latLng(t)),this.redraw()},spliceLatLngs:function(){var t=[].splice.apply(this._latlngs,arguments);return this._convertLatLngs(this._latlngs,!0),this.redraw(),t},closestLayerPoint:function(t){for(var e,i,n=1/0,s=this._parts,a=null,r=0,h=s.length;h>r;r++)for(var l=s[r],u=1,c=l.length;c>u;u++){e=l[u-1],i=l[u];var d=o.LineUtil._sqClosestPointOnSegment(t,e,i,!0);n>d&&(n=d,a=o.LineUtil._sqClosestPointOnSegment(t,e,i))}return a&&(a.distance=Math.sqrt(n)),a},getBounds:function(){return new o.LatLngBounds(this.getLatLngs())},_convertLatLngs:function(t,e){var i,n,s=e?t:[];for(i=0,n=t.length;n>i;i++){if(o.Util.isArray(t[i])&&"number"!=typeof t[i][0])return;s[i]=o.latLng(t[i])}return s},_initEvents:function(){o.Path.prototype._initEvents.call(this)},_getPathPartStr:function(t){for(var e,i=o.Path.VML,n=0,s=t.length,a="";s>n;n++)e=t[n],i&&e._round(),a+=(n?"L":"M")+e.x+" "+e.y;return a},_clipPoints:function(){var t,e,i,n=this._originalPoints,s=n.length;if(this.options.noClip)return this._parts=[n],void 0;this._parts=[];var a=this._parts,r=this._map._pathViewport,h=o.LineUtil;for(t=0,e=0;s-1>t;t++)i=h.clipSegment(n[t],n[t+1],r,t),i&&(a[e]=a[e]||[],a[e].push(i[0]),(i[1]!==n[t+1]||t===s-2)&&(a[e].push(i[1]),e++))},_simplifyPoints:function(){for(var t=this._parts,e=o.LineUtil,i=0,n=t.length;n>i;i++)t[i]=e.simplify(t[i],this.options.smoothFactor)},_updatePath:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),o.Path.prototype._updatePath.call(this))}}),o.polyline=function(t,e){return new o.Polyline(t,e)},o.PolyUtil={},o.PolyUtil.clipPolygon=function(t,e){var i,n,s,a,r,h,l,u,c,d=[1,4,2,8],p=o.LineUtil;for(n=0,l=t.length;l>n;n++)t[n]._code=p._getBitCode(t[n],e);for(a=0;4>a;a++){for(u=d[a],i=[],n=0,l=t.length,s=l-1;l>n;s=n++)r=t[n],h=t[s],r._code&u?h._code&u||(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)):(h._code&u&&(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)),i.push(r));t=i}return t},o.Polygon=o.Polyline.extend({options:{fill:!0},initialize:function(t,e){o.Polyline.prototype.initialize.call(this,t,e),this._initWithHoles(t)},_initWithHoles:function(t){var e,i,n;if(t&&o.Util.isArray(t[0])&&"number"!=typeof t[0][0])for(this._latlngs=this._convertLatLngs(t[0]),this._holes=t.slice(1),e=0,i=this._holes.length;i>e;e++)n=this._holes[e]=this._convertLatLngs(this._holes[e]),n[0].equals(n[n.length-1])&&n.pop();t=this._latlngs,t.length>=2&&t[0].equals(t[t.length-1])&&t.pop()},projectLatlngs:function(){if(o.Polyline.prototype.projectLatlngs.call(this),this._holePoints=[],this._holes){var t,e,i,n;for(t=0,i=this._holes.length;i>t;t++)for(this._holePoints[t]=[],e=0,n=this._holes[t].length;n>e;e++)this._holePoints[t][e]=this._map.latLngToLayerPoint(this._holes[t][e])}},setLatLngs:function(t){return t&&o.Util.isArray(t[0])&&"number"!=typeof t[0][0]?(this._initWithHoles(t),this.redraw()):o.Polyline.prototype.setLatLngs.call(this,t)},_clipPoints:function(){var t=this._originalPoints,e=[];if(this._parts=[t].concat(this._holePoints),!this.options.noClip){for(var i=0,n=this._parts.length;n>i;i++){var s=o.PolyUtil.clipPolygon(this._parts[i],this._map._pathViewport);s.length&&e.push(s)}this._parts=e}},_getPathPartStr:function(t){var e=o.Polyline.prototype._getPathPartStr.call(this,t);return e+(o.Browser.svg?"z":"x")}}),o.polygon=function(t,e){return new o.Polygon(t,e)},function(){function t(t){return o.FeatureGroup.extend({initialize:function(t,e){this._layers={},this._options=e,this.setLatLngs(t)},setLatLngs:function(e){var i=0,n=e.length;for(this.eachLayer(function(t){n>i?t.setLatLngs(e[i++]):this.removeLayer(t)},this);n>i;)this.addLayer(new t(e[i++],this._options));return this},getLatLngs:function(){var t=[];return this.eachLayer(function(e){t.push(e.getLatLngs())}),t}})}o.MultiPolyline=t(o.Polyline),o.MultiPolygon=t(o.Polygon),o.multiPolyline=function(t,e){return new o.MultiPolyline(t,e)},o.multiPolygon=function(t,e){return new o.MultiPolygon(t,e)}}(),o.Rectangle=o.Polygon.extend({initialize:function(t,e){o.Polygon.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=o.latLngBounds(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}}),o.rectangle=function(t,e){return new o.Rectangle(t,e)},o.Circle=o.Path.extend({initialize:function(t,e,i){o.Path.prototype.initialize.call(this,i),this._latlng=o.latLng(t),this._mRadius=e},options:{fill:!0},setLatLng:function(t){return this._latlng=o.latLng(t),this.redraw()},setRadius:function(t){return this._mRadius=t,this.redraw()},projectLatlngs:function(){var t=this._getLngRadius(),e=this._latlng,i=this._map.latLngToLayerPoint([e.lat,e.lng-t]);this._point=this._map.latLngToLayerPoint(e),this._radius=Math.max(this._point.x-i.x,1)},getBounds:function(){var t=this._getLngRadius(),e=this._mRadius/40075017*360,i=this._latlng;return new o.LatLngBounds([i.lat-e,i.lng-t],[i.lat+e,i.lng+t])},getLatLng:function(){return this._latlng},getPathString:function(){var t=this._point,e=this._radius;return this._checkIfEmpty()?"":o.Browser.svg?"M"+t.x+","+(t.y-e)+"A"+e+","+e+",0,1,1,"+(t.x-.1)+","+(t.y-e)+" z":(t._round(),e=Math.round(e),"AL "+t.x+","+t.y+" "+e+","+e+" 0,23592600")},getRadius:function(){return this._mRadius},_getLatRadius:function(){return this._mRadius/40075017*360},_getLngRadius:function(){return this._getLatRadius()/Math.cos(o.LatLng.DEG_TO_RAD*this._latlng.lat)},_checkIfEmpty:function(){if(!this._map)return!1;var t=this._map._pathViewport,e=this._radius,i=this._point;return i.x-e>t.max.x||i.y-e>t.max.y||i.x+ei;i++)for(l=this._parts[i],n=0,r=l.length,s=r-1;r>n;s=n++)if((e||0!==n)&&(h=o.LineUtil.pointToSegmentDistance(t,l[s],l[n]),u>=h))return!0;return!1}}:{}),o.Polygon.include(o.Path.CANVAS?{_containsPoint:function(t){var e,i,n,s,a,r,h,l,u=!1;if(o.Polyline.prototype._containsPoint.call(this,t,!0))return!0;for(s=0,h=this._parts.length;h>s;s++)for(e=this._parts[s],a=0,l=e.length,r=l-1;l>a;r=a++)i=e[a],n=e[r],i.y>t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(u=!u);return u}}:{}),o.Circle.include(o.Path.CANVAS?{_drawPath:function(){var t=this._point;this._ctx.beginPath(),this._ctx.arc(t.x,t.y,this._radius,0,2*Math.PI,!1)},_containsPoint:function(t){var e=this._point,i=this.options.stroke?this.options.weight/2:0;return t.distanceTo(e)<=this._radius+i}}:{}),o.CircleMarker.include(o.Path.CANVAS?{_updateStyle:function(){o.Path.prototype._updateStyle.call(this)}}:{}),o.GeoJSON=o.FeatureGroup.extend({initialize:function(t,e){o.setOptions(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,s=o.Util.isArray(t)?t:t.features;if(s){for(e=0,i=s.length;i>e;e++)n=s[e],(n.geometries||n.geometry||n.features||n.coordinates)&&this.addData(s[e]);return this}var a=this.options;if(!a.filter||a.filter(t)){var r=o.GeoJSON.geometryToLayer(t,a.pointToLayer,a.coordsToLatLng,a);return r.feature=o.GeoJSON.asFeature(t),r.defaultOptions=r.options,this.resetStyle(r),a.onEachFeature&&a.onEachFeature(t,r),this.addLayer(r)}},resetStyle:function(t){var e=this.options.style;e&&(o.Util.extend(t.options,t.defaultOptions),this._setLayerStyle(t,e))},setStyle:function(t){this.eachLayer(function(e){this._setLayerStyle(e,t)},this)},_setLayerStyle:function(t,e){"function"==typeof e&&(e=e(t.feature)),t.setStyle&&t.setStyle(e)}}),o.extend(o.GeoJSON,{geometryToLayer:function(t,e,i,n){var s,a,r,h,l="Feature"===t.type?t.geometry:t,u=l.coordinates,c=[];switch(i=i||this.coordsToLatLng,l.type){case"Point":return s=i(u),e?e(t,s):new o.Marker(s);case"MultiPoint":for(r=0,h=u.length;h>r;r++)s=i(u[r]),c.push(e?e(t,s):new o.Marker(s));return new o.FeatureGroup(c);case"LineString":return a=this.coordsToLatLngs(u,0,i),new o.Polyline(a,n);case"Polygon":if(2===u.length&&!u[1].length)throw new Error("Invalid GeoJSON object.");return a=this.coordsToLatLngs(u,1,i),new o.Polygon(a,n);case"MultiLineString":return a=this.coordsToLatLngs(u,1,i),new o.MultiPolyline(a,n);case"MultiPolygon":return a=this.coordsToLatLngs(u,2,i),new o.MultiPolygon(a,n);case"GeometryCollection":for(r=0,h=l.geometries.length;h>r;r++)c.push(this.geometryToLayer({geometry:l.geometries[r],type:"Feature",properties:t.properties},e,i,n));return new o.FeatureGroup(c);default:throw new Error("Invalid GeoJSON object.")}},coordsToLatLng:function(t){return new o.LatLng(t[1],t[0],t[2])},coordsToLatLngs:function(t,e,i){var n,o,s,a=[];for(o=0,s=t.length;s>o;o++)n=e?this.coordsToLatLngs(t[o],e-1,i):(i||this.coordsToLatLng)(t[o]),a.push(n);return a},latLngToCoords:function(t){var e=[t.lng,t.lat];return t.alt!==i&&e.push(t.alt),e},latLngsToCoords:function(t){for(var e=[],i=0,n=t.length;n>i;i++)e.push(o.GeoJSON.latLngToCoords(t[i]));return e},getFeature:function(t,e){return t.feature?o.extend({},t.feature,{geometry:e}):o.GeoJSON.asFeature(e)},asFeature:function(t){return"Feature"===t.type?t:{type:"Feature",properties:{},geometry:t}}});var a={toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:"Point",coordinates:o.GeoJSON.latLngToCoords(this.getLatLng())})}};o.Marker.include(a),o.Circle.include(a),o.CircleMarker.include(a),o.Polyline.include({toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:"LineString",coordinates:o.GeoJSON.latLngsToCoords(this.getLatLngs())})}}),o.Polygon.include({toGeoJSON:function(){var t,e,i,n=[o.GeoJSON.latLngsToCoords(this.getLatLngs())];if(n[0].push(n[0][0]),this._holes)for(t=0,e=this._holes.length;e>t;t++)i=o.GeoJSON.latLngsToCoords(this._holes[t]),i.push(i[0]),n.push(i);return o.GeoJSON.getFeature(this,{type:"Polygon",coordinates:n})}}),function(){function t(t){return function(){var e=[];return this.eachLayer(function(t){e.push(t.toGeoJSON().geometry.coordinates)}),o.GeoJSON.getFeature(this,{type:t,coordinates:e})}}o.MultiPolyline.include({toGeoJSON:t("MultiLineString")}),o.MultiPolygon.include({toGeoJSON:t("MultiPolygon")}),o.LayerGroup.include({toGeoJSON:function(){var e,i=this.feature&&this.feature.geometry,n=[];if(i&&"MultiPoint"===i.type)return t("MultiPoint").call(this);var s=i&&"GeometryCollection"===i.type;return this.eachLayer(function(t){t.toGeoJSON&&(e=t.toGeoJSON(),n.push(s?e.geometry:o.GeoJSON.asFeature(e)))}),s?o.GeoJSON.getFeature(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}})}(),o.geoJson=function(t,e){return new o.GeoJSON(t,e)},o.DomEvent={addListener:function(t,e,i,n){var s,a,r,h=o.stamp(i),l="_leaflet_"+e+h;return t[l]?this:(s=function(e){return i.call(n||t,e||o.DomEvent._getEvent())},o.Browser.pointer&&0===e.indexOf("touch")?this.addPointerListener(t,e,s,h):(o.Browser.touch&&"dblclick"===e&&this.addDoubleTapListener&&this.addDoubleTapListener(t,s,h),"addEventListener"in t?"mousewheel"===e?(t.addEventListener("DOMMouseScroll",s,!1),t.addEventListener(e,s,!1)):"mouseenter"===e||"mouseleave"===e?(a=s,r="mouseenter"===e?"mouseover":"mouseout",s=function(e){return o.DomEvent._checkMouse(t,e)?a(e):void 0},t.addEventListener(r,s,!1)):"click"===e&&o.Browser.android?(a=s,s=function(t){return o.DomEvent._filterClick(t,a)},t.addEventListener(e,s,!1)):t.addEventListener(e,s,!1):"attachEvent"in t&&t.attachEvent("on"+e,s),t[l]=s,this))},removeListener:function(t,e,i){var n=o.stamp(i),s="_leaflet_"+e+n,a=t[s];return a?(o.Browser.pointer&&0===e.indexOf("touch")?this.removePointerListener(t,e,n):o.Browser.touch&&"dblclick"===e&&this.removeDoubleTapListener?this.removeDoubleTapListener(t,n):"removeEventListener"in t?"mousewheel"===e?(t.removeEventListener("DOMMouseScroll",a,!1),t.removeEventListener(e,a,!1)):"mouseenter"===e||"mouseleave"===e?t.removeEventListener("mouseenter"===e?"mouseover":"mouseout",a,!1):t.removeEventListener(e,a,!1):"detachEvent"in t&&t.detachEvent("on"+e,a),t[s]=null,this):this},stopPropagation:function(t){return t.stopPropagation?t.stopPropagation():t.cancelBubble=!0,o.DomEvent._skipped(t),this},disableScrollPropagation:function(t){var e=o.DomEvent.stopPropagation;return o.DomEvent.on(t,"mousewheel",e).on(t,"MozMousePixelScroll",e)},disableClickPropagation:function(t){for(var e=o.DomEvent.stopPropagation,i=o.Draggable.START.length-1;i>=0;i--)o.DomEvent.on(t,o.Draggable.START[i],e);return o.DomEvent.on(t,"click",o.DomEvent._fakeStop).on(t,"dblclick",e)},preventDefault:function(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this},stop:function(t){return o.DomEvent.preventDefault(t).stopPropagation(t)},getMousePosition:function(t,i){var n=e.body,s=e.documentElement,a=o.DomUtil.documentIsLtr()?t.pageX?t.pageX-n.scrollLeft-s.scrollLeft:t.clientX:o.Browser.gecko?t.pageX-n.scrollLeft-s.scrollLeft:t.pageX?t.pageX-n.scrollLeft+s.scrollLeft:t.clientX,r=t.pageY?t.pageY-n.scrollTop-s.scrollTop:t.clientY,h=new o.Point(a,r);if(!i)return h;var l=i.getBoundingClientRect(),u=l.left-i.clientLeft,c=l.top-i.clientTop;return h._subtract(new o.Point(u,c))},getWheelDelta:function(t){var e=0;return t.wheelDelta&&(e=t.wheelDelta/120),t.detail&&(e=-t.detail/3),e},_skipEvents:{},_fakeStop:function(t){o.DomEvent._skipEvents[t.type]=!0},_skipped:function(t){var e=this._skipEvents[t.type];return this._skipEvents[t.type]=!1,e},_checkMouse:function(t,e){var i=e.relatedTarget;if(!i)return!0;try{for(;i&&i!==t;)i=i.parentNode}catch(n){return!1}return i!==t},_getEvent:function(){var e=t.event;if(!e)for(var i=arguments.callee.caller;i&&(e=i.arguments[0],!e||t.Event!==e.constructor);)i=i.caller;return e},_filterClick:function(t,e){var i=t.timeStamp||t.originalEvent.timeStamp,n=o.DomEvent._lastClick&&i-o.DomEvent._lastClick;return n&&n>100&&1e3>n||t.target._simulatedClick&&!t._simulated?(o.DomEvent.stop(t),void 0):(o.DomEvent._lastClick=i,e(t))}},o.DomEvent.on=o.DomEvent.addListener,o.DomEvent.off=o.DomEvent.removeListener,o.Draggable=o.Class.extend({includes:o.Mixin.Events,statics:{START:o.Browser.touch?["touchstart","mousedown"]:["mousedown"],END:{mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},MOVE:{mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"}},initialize:function(t,e){this._element=t,this._dragStartTarget=e||t},enable:function(){if(!this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.on(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!0}},disable:function(){if(this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.off(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!1,this._moved=!1}},_onDown:function(t){if(this._moved=!1,!(t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(o.DomEvent.stopPropagation(t),o.Draggable._disabled||(o.DomUtil.disableImageDrag(),o.DomUtil.disableTextSelection(),this._moving)))){var i=t.touches?t.touches[0]:t;this._startPoint=new o.Point(i.clientX,i.clientY),this._startPos=this._newPos=o.DomUtil.getPosition(this._element),o.DomEvent.on(e,o.Draggable.MOVE[t.type],this._onMove,this).on(e,o.Draggable.END[t.type],this._onUp,this)}},_onMove:function(t){if(t.touches&&t.touches.length>1)return this._moved=!0,void 0;var i=t.touches&&1===t.touches.length?t.touches[0]:t,n=new o.Point(i.clientX,i.clientY),s=n.subtract(this._startPoint);(s.x||s.y)&&(o.DomEvent.preventDefault(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=o.DomUtil.getPosition(this._element).subtract(s),o.DomUtil.addClass(e.body,"leaflet-dragging"),o.DomUtil.addClass(t.target||t.srcElement,"leaflet-drag-target")),this._newPos=this._startPos.add(s),this._moving=!0,o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updatePosition,this,!0,this._dragStartTarget))},_updatePosition:function(){this.fire("predrag"),o.DomUtil.setPosition(this._element,this._newPos),this.fire("drag")},_onUp:function(t){o.DomUtil.removeClass(e.body,"leaflet-dragging"),o.DomUtil.removeClass(t.target||t.srcElement,"leaflet-drag-target");for(var i in o.Draggable.MOVE)o.DomEvent.off(e,o.Draggable.MOVE[i],this._onMove).off(e,o.Draggable.END[i],this._onUp);o.DomUtil.enableImageDrag(),o.DomUtil.enableTextSelection(),this._moved&&(o.Util.cancelAnimFrame(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1}}),o.Handler=o.Class.extend({initialize:function(t){this._map=t},enable:function(){this._enabled||(this._enabled=!0,this.addHooks())},disable:function(){this._enabled&&(this._enabled=!1,this.removeHooks())},enabled:function(){return!!this._enabled}}),o.Map.mergeOptions({dragging:!0,inertia:!o.Browser.android23,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,inertiaThreshold:o.Browser.touch?32:18,easeLinearity:.25,worldCopyJump:!1}),o.Map.Drag=o.Handler.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new o.Draggable(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDrag,this),t.on("viewreset",this._onViewReset,this),t.whenReady(this._onViewReset,this))}this._draggable.enable()},removeHooks:function(){this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){var t=this._map;t._panAnim&&t._panAnim.stop(),t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(){if(this._map.options.inertia){var t=this._lastTime=+new Date,e=this._lastPos=this._draggable._newPos;this._positions.push(e),this._times.push(t),t-this._times[0]>200&&(this._positions.shift(),this._times.shift())}this._map.fire("move").fire("drag")},_onViewReset:function(){var t=this._map.getSize()._divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.project([0,180]).x},_onPreDrag:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,s=(n+e+i)%t-e-i,a=Math.abs(o+i)i.inertiaThreshold||!this._positions[0];if(e.fire("dragend",t),s)e.fire("moveend");else{var a=this._lastPos.subtract(this._positions[0]),r=(this._lastTime+n-this._times[0])/1e3,h=i.easeLinearity,l=a.multiplyBy(h/r),u=l.distanceTo([0,0]),c=Math.min(i.inertiaMaxSpeed,u),d=l.multiplyBy(c/u),p=c/(i.inertiaDeceleration*h),_=d.multiplyBy(-p/2).round();_.x&&_.y?(_=e._limitOffset(_,e.options.maxBounds),o.Util.requestAnimFrame(function(){e.panBy(_,{duration:p,easeLinearity:h,noMoveStart:!0})})):e.fire("moveend")}}}),o.Map.addInitHook("addHandler","dragging",o.Map.Drag),o.Map.mergeOptions({doubleClickZoom:!0}),o.Map.DoubleClickZoom=o.Handler.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom()+(t.originalEvent.shiftKey?-1:1);"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}}),o.Map.addInitHook("addHandler","doubleClickZoom",o.Map.DoubleClickZoom),o.Map.mergeOptions({scrollWheelZoom:!0}),o.Map.ScrollWheelZoom=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"mousewheel",this._onWheelScroll,this),o.DomEvent.on(this._map._container,"MozMousePixelScroll",o.DomEvent.preventDefault),this._delta=0},removeHooks:function(){o.DomEvent.off(this._map._container,"mousewheel",this._onWheelScroll),o.DomEvent.off(this._map._container,"MozMousePixelScroll",o.DomEvent.preventDefault)},_onWheelScroll:function(t){var e=o.DomEvent.getWheelDelta(t);this._delta+=e,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var i=Math.max(40-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(o.bind(this._performZoom,this),i),o.DomEvent.preventDefault(t),o.DomEvent.stopPropagation(t)},_performZoom:function(){var t=this._map,e=this._delta,i=t.getZoom();e=e>0?Math.ceil(e):Math.floor(e),e=Math.max(Math.min(e,4),-4),e=t._limitZoom(i+e)-i,this._delta=0,this._startTime=null,e&&("center"===t.options.scrollWheelZoom?t.setZoom(i+e):t.setZoomAround(this._lastMousePos,i+e))}}),o.Map.addInitHook("addHandler","scrollWheelZoom",o.Map.ScrollWheelZoom),o.extend(o.DomEvent,{_touchstart:o.Browser.msPointer?"MSPointerDown":o.Browser.pointer?"pointerdown":"touchstart",_touchend:o.Browser.msPointer?"MSPointerUp":o.Browser.pointer?"pointerup":"touchend",addDoubleTapListener:function(t,i,n){function s(t){var e;if(o.Browser.pointer?(_.push(t.pointerId),e=_.length):e=t.touches.length,!(e>1)){var i=Date.now(),n=i-(r||i);h=t.touches?t.touches[0]:t,l=n>0&&u>=n,r=i}}function a(t){if(o.Browser.pointer){var e=_.indexOf(t.pointerId);if(-1===e)return;_.splice(e,1)}if(l){if(o.Browser.pointer){var n,s={};for(var a in h)n=h[a],s[a]="function"==typeof n?n.bind(h):n;h=s}h.type="dblclick",i(h),r=null}}var r,h,l=!1,u=250,c="_leaflet_",d=this._touchstart,p=this._touchend,_=[];t[c+d+n]=s,t[c+p+n]=a;var m=o.Browser.pointer?e.documentElement:t;return t.addEventListener(d,s,!1),m.addEventListener(p,a,!1),o.Browser.pointer&&m.addEventListener(o.DomEvent.POINTER_CANCEL,a,!1),this},removeDoubleTapListener:function(t,i){var n="_leaflet_";return t.removeEventListener(this._touchstart,t[n+this._touchstart+i],!1),(o.Browser.pointer?e.documentElement:t).removeEventListener(this._touchend,t[n+this._touchend+i],!1),o.Browser.pointer&&e.documentElement.removeEventListener(o.DomEvent.POINTER_CANCEL,t[n+this._touchend+i],!1),this}}),o.extend(o.DomEvent,{POINTER_DOWN:o.Browser.msPointer?"MSPointerDown":"pointerdown",POINTER_MOVE:o.Browser.msPointer?"MSPointerMove":"pointermove",POINTER_UP:o.Browser.msPointer?"MSPointerUp":"pointerup",POINTER_CANCEL:o.Browser.msPointer?"MSPointerCancel":"pointercancel",_pointers:[],_pointerDocumentListener:!1,addPointerListener:function(t,e,i,n){switch(e){case"touchstart":return this.addPointerListenerStart(t,e,i,n); -case"touchend":return this.addPointerListenerEnd(t,e,i,n);case"touchmove":return this.addPointerListenerMove(t,e,i,n);default:throw"Unknown touch event type"}},addPointerListenerStart:function(t,i,n,s){var a="_leaflet_",r=this._pointers,h=function(t){o.DomEvent.preventDefault(t);for(var e=!1,i=0;i1))&&(this._moved||(o.DomUtil.addClass(e._mapPane,"leaflet-touching"),e.fire("movestart").fire("zoomstart"),this._moved=!0),o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updateOnMove,this,!0,this._map._container),o.DomEvent.preventDefault(t))}},_updateOnMove:function(){var t=this._map,e=this._getScaleOrigin(),i=t.layerPointToLatLng(e),n=t.getScaleZoom(this._scale);t._animateZoom(i,n,this._startCenter,this._scale,this._delta)},_onTouchEnd:function(){if(!this._moved||!this._zooming)return this._zooming=!1,void 0;var t=this._map;this._zooming=!1,o.DomUtil.removeClass(t._mapPane,"leaflet-touching"),o.Util.cancelAnimFrame(this._animRequest),o.DomEvent.off(e,"touchmove",this._onTouchMove).off(e,"touchend",this._onTouchEnd);var i=this._getScaleOrigin(),n=t.layerPointToLatLng(i),s=t.getZoom(),a=t.getScaleZoom(this._scale)-s,r=a>0?Math.ceil(a):Math.floor(a),h=t._limitZoom(s+r),l=t.getZoomScale(h)/this._scale;t._animateZoom(n,h,i,l)},_getScaleOrigin:function(){var t=this._centerOffset.subtract(this._delta).divideBy(this._scale);return this._startCenter.add(t)}}),o.Map.addInitHook("addHandler","touchZoom",o.Map.TouchZoom),o.Map.mergeOptions({tap:!0,tapTolerance:15}),o.Map.Tap=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){o.DomEvent.off(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(o.DomEvent.preventDefault(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,clearTimeout(this._holdTimeout),void 0;var i=t.touches[0],n=i.target;this._startPos=this._newPos=new o.Point(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.addClass(n,"leaflet-active"),this._holdTimeout=setTimeout(o.bind(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),o.DomEvent.on(e,"touchmove",this._onMove,this).on(e,"touchend",this._onUp,this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),o.DomEvent.off(e,"touchmove",this._onMove,this).off(e,"touchend",this._onUp,this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],n=i.target;n&&n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.removeClass(n,"leaflet-active"),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new o.Point(e.clientX,e.clientY)},_simulateEvent:function(i,n){var o=e.createEvent("MouseEvents");o._simulated=!0,n.target._simulatedClick=!0,o.initMouseEvent(i,!0,!0,t,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(o)}}),o.Browser.touch&&!o.Browser.pointer&&o.Map.addInitHook("addHandler","tap",o.Map.Tap),o.Map.mergeOptions({boxZoom:!0}),o.Map.BoxZoom=o.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._moved=!1},addHooks:function(){o.DomEvent.on(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){o.DomEvent.off(this._container,"mousedown",this._onMouseDown),this._moved=!1},moved:function(){return this._moved},_onMouseDown:function(t){return this._moved=!1,!t.shiftKey||1!==t.which&&1!==t.button?!1:(o.DomUtil.disableTextSelection(),o.DomUtil.disableImageDrag(),this._startLayerPoint=this._map.mouseEventToLayerPoint(t),o.DomEvent.on(e,"mousemove",this._onMouseMove,this).on(e,"mouseup",this._onMouseUp,this).on(e,"keydown",this._onKeyDown,this),void 0)},_onMouseMove:function(t){this._moved||(this._box=o.DomUtil.create("div","leaflet-zoom-box",this._pane),o.DomUtil.setPosition(this._box,this._startLayerPoint),this._container.style.cursor="crosshair",this._map.fire("boxzoomstart"));var e=this._startLayerPoint,i=this._box,n=this._map.mouseEventToLayerPoint(t),s=n.subtract(e),a=new o.Point(Math.min(n.x,e.x),Math.min(n.y,e.y));o.DomUtil.setPosition(i,a),this._moved=!0,i.style.width=Math.max(0,Math.abs(s.x)-4)+"px",i.style.height=Math.max(0,Math.abs(s.y)-4)+"px"},_finish:function(){this._moved&&(this._pane.removeChild(this._box),this._container.style.cursor=""),o.DomUtil.enableTextSelection(),o.DomUtil.enableImageDrag(),o.DomEvent.off(e,"mousemove",this._onMouseMove).off(e,"mouseup",this._onMouseUp).off(e,"keydown",this._onKeyDown)},_onMouseUp:function(t){this._finish();var e=this._map,i=e.mouseEventToLayerPoint(t);if(!this._startLayerPoint.equals(i)){var n=new o.LatLngBounds(e.layerPointToLatLng(this._startLayerPoint),e.layerPointToLatLng(i));e.fitBounds(n),e.fire("boxzoomend",{boxZoomBounds:n})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}}),o.Map.addInitHook("addHandler","boxZoom",o.Map.BoxZoom),o.Map.mergeOptions({keyboard:!0,keyboardPanOffset:80,keyboardZoomOffset:1}),o.Map.Keyboard=o.Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,173]},initialize:function(t){this._map=t,this._setPanOffset(t.options.keyboardPanOffset),this._setZoomOffset(t.options.keyboardZoomOffset)},addHooks:function(){var t=this._map._container;-1===t.tabIndex&&(t.tabIndex="0"),o.DomEvent.on(t,"focus",this._onFocus,this).on(t,"blur",this._onBlur,this).on(t,"mousedown",this._onMouseDown,this),this._map.on("focus",this._addHooks,this).on("blur",this._removeHooks,this)},removeHooks:function(){this._removeHooks();var t=this._map._container;o.DomEvent.off(t,"focus",this._onFocus,this).off(t,"blur",this._onBlur,this).off(t,"mousedown",this._onMouseDown,this),this._map.off("focus",this._addHooks,this).off("blur",this._removeHooks,this)},_onMouseDown:function(){if(!this._focused){var i=e.body,n=e.documentElement,o=i.scrollTop||n.scrollTop,s=i.scrollLeft||n.scrollLeft;this._map._container.focus(),t.scrollTo(s,o)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanOffset:function(t){var e,i,n=this._panKeys={},o=this.keyCodes;for(e=0,i=o.left.length;i>e;e++)n[o.left[e]]=[-1*t,0];for(e=0,i=o.right.length;i>e;e++)n[o.right[e]]=[t,0];for(e=0,i=o.down.length;i>e;e++)n[o.down[e]]=[0,t];for(e=0,i=o.up.length;i>e;e++)n[o.up[e]]=[0,-1*t]},_setZoomOffset:function(t){var e,i,n=this._zoomKeys={},o=this.keyCodes;for(e=0,i=o.zoomIn.length;i>e;e++)n[o.zoomIn[e]]=t;for(e=0,i=o.zoomOut.length;i>e;e++)n[o.zoomOut[e]]=-t},_addHooks:function(){o.DomEvent.on(e,"keydown",this._onKeyDown,this)},_removeHooks:function(){o.DomEvent.off(e,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){var e=t.keyCode,i=this._map;if(e in this._panKeys){if(i._panAnim&&i._panAnim._inProgress)return;i.panBy(this._panKeys[e]),i.options.maxBounds&&i.panInsideBounds(i.options.maxBounds)}else{if(!(e in this._zoomKeys))return;i.setZoom(i.getZoom()+this._zoomKeys[e])}o.DomEvent.stop(t)}}),o.Map.addInitHook("addHandler","keyboard",o.Map.Keyboard),o.Handler.MarkerDrag=o.Handler.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new o.Draggable(t,t)),this._draggable.on("dragstart",this._onDragStart,this).on("drag",this._onDrag,this).on("dragend",this._onDragEnd,this),this._draggable.enable(),o.DomUtil.addClass(this._marker._icon,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off("dragstart",this._onDragStart,this).off("drag",this._onDrag,this).off("dragend",this._onDragEnd,this),this._draggable.disable(),o.DomUtil.removeClass(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){this._marker.closePopup().fire("movestart").fire("dragstart")},_onDrag:function(){var t=this._marker,e=t._shadow,i=o.DomUtil.getPosition(t._icon),n=t._map.layerPointToLatLng(i);e&&o.DomUtil.setPosition(e,i),t._latlng=n,t.fire("move",{latlng:n}).fire("drag")},_onDragEnd:function(t){this._marker.fire("moveend").fire("dragend",t)}}),o.Control=o.Class.extend({options:{position:"topright"},initialize:function(t){o.setOptions(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),n=t._controlCorners[i];return o.DomUtil.addClass(e,"leaflet-control"),-1!==i.indexOf("bottom")?n.insertBefore(e,n.firstChild):n.appendChild(e),this},removeFrom:function(t){var e=this.getPosition(),i=t._controlCorners[e];return i.removeChild(this._container),this._map=null,this.onRemove&&this.onRemove(t),this},_refocusOnMap:function(){this._map&&this._map.getContainer().focus()}}),o.control=function(t){return new o.Control(t)},o.Map.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.removeFrom(this),this},_initControlPos:function(){function t(t,s){var a=i+t+" "+i+s;e[t+s]=o.DomUtil.create("div",a,n)}var e=this._controlCorners={},i="leaflet-",n=this._controlContainer=o.DomUtil.create("div",i+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){this._container.removeChild(this._controlContainer)}}),o.Control.Zoom=o.Control.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"-",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=o.DomUtil.create("div",e+" leaflet-bar");return this._map=t,this._zoomInButton=this._createButton(this.options.zoomInText,this.options.zoomInTitle,e+"-in",i,this._zoomIn,this),this._zoomOutButton=this._createButton(this.options.zoomOutText,this.options.zoomOutTitle,e+"-out",i,this._zoomOut,this),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},_zoomIn:function(t){this._map.zoomIn(t.shiftKey?3:1)},_zoomOut:function(t){this._map.zoomOut(t.shiftKey?3:1)},_createButton:function(t,e,i,n,s,a){var r=o.DomUtil.create("a",i,n);r.innerHTML=t,r.href="#",r.title=e;var h=o.DomEvent.stopPropagation;return o.DomEvent.on(r,"click",h).on(r,"mousedown",h).on(r,"dblclick",h).on(r,"click",o.DomEvent.preventDefault).on(r,"click",s,a).on(r,"click",this._refocusOnMap,a),r},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";o.DomUtil.removeClass(this._zoomInButton,e),o.DomUtil.removeClass(this._zoomOutButton,e),t._zoom===t.getMinZoom()&&o.DomUtil.addClass(this._zoomOutButton,e),t._zoom===t.getMaxZoom()&&o.DomUtil.addClass(this._zoomInButton,e)}}),o.Map.mergeOptions({zoomControl:!0}),o.Map.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new o.Control.Zoom,this.addControl(this.zoomControl))}),o.control.zoom=function(t){return new o.Control.Zoom(t)},o.Control.Attribution=o.Control.extend({options:{position:"bottomright",prefix:'Leaflet'},initialize:function(t){o.setOptions(this,t),this._attributions={}},onAdd:function(t){this._container=o.DomUtil.create("div","leaflet-control-attribution"),o.DomEvent.disableClickPropagation(this._container);for(var e in t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return t.on("layeradd",this._onLayerAdd,this).on("layerremove",this._onLayerRemove,this),this._update(),this._container},onRemove:function(t){t.off("layeradd",this._onLayerAdd).off("layerremove",this._onLayerRemove)},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):void 0},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):void 0},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" | ")}},_onLayerAdd:function(t){t.layer.getAttribution&&this.addAttribution(t.layer.getAttribution())},_onLayerRemove:function(t){t.layer.getAttribution&&this.removeAttribution(t.layer.getAttribution())}}),o.Map.mergeOptions({attributionControl:!0}),o.Map.addInitHook(function(){this.options.attributionControl&&(this.attributionControl=(new o.Control.Attribution).addTo(this))}),o.control.attribution=function(t){return new o.Control.Attribution(t)},o.Control.Scale=o.Control.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0,updateWhenIdle:!1},onAdd:function(t){this._map=t;var e="leaflet-control-scale",i=o.DomUtil.create("div",e),n=this.options;return this._addScales(n,e,i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=o.DomUtil.create("div",e+"-line",i)),t.imperial&&(this._iScale=o.DomUtil.create("div",e+"-line",i))},_update:function(){var t=this._map.getBounds(),e=t.getCenter().lat,i=6378137*Math.PI*Math.cos(e*Math.PI/180),n=i*(t.getNorthEast().lng-t.getSouthWest().lng)/180,o=this._map.getSize(),s=this.options,a=0;o.x>0&&(a=n*(s.maxWidth/o.x)),this._updateScales(s,a)},_updateScales:function(t,e){t.metric&&e&&this._updateMetric(e),t.imperial&&e&&this._updateImperial(e)},_updateMetric:function(t){var e=this._getRoundNum(t);this._mScale.style.width=this._getScaleWidth(e/t)+"px",this._mScale.innerHTML=1e3>e?e+" m":e/1e3+" km"},_updateImperial:function(t){var e,i,n,o=3.2808399*t,s=this._iScale;o>5280?(e=o/5280,i=this._getRoundNum(e),s.style.width=this._getScaleWidth(i/e)+"px",s.innerHTML=i+" mi"):(n=this._getRoundNum(o),s.style.width=this._getScaleWidth(n/o)+"px",s.innerHTML=n+" ft")},_getScaleWidth:function(t){return Math.round(this.options.maxWidth*t)-10},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1,e*i}}),o.control.scale=function(t){return new o.Control.Scale(t)},o.Control.Layers=o.Control.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0},initialize:function(t,e,i){o.setOptions(this,i),this._layers={},this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in e)this._addLayer(e[n],n,!0)},onAdd:function(t){return this._initLayout(),this._update(),t.on("layeradd",this._onLayerChange,this).on("layerremove",this._onLayerChange,this),this._container},onRemove:function(t){t.off("layeradd",this._onLayerChange).off("layerremove",this._onLayerChange)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._update(),this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._update(),this},removeLayer:function(t){var e=o.stamp(t);return delete this._layers[e],this._update(),this},_initLayout:function(){var t="leaflet-control-layers",e=this._container=o.DomUtil.create("div",t);e.setAttribute("aria-haspopup",!0),o.Browser.touch?o.DomEvent.on(e,"click",o.DomEvent.stopPropagation):o.DomEvent.disableClickPropagation(e).disableScrollPropagation(e);var i=this._form=o.DomUtil.create("form",t+"-list");if(this.options.collapsed){o.Browser.android||o.DomEvent.on(e,"mouseover",this._expand,this).on(e,"mouseout",this._collapse,this);var n=this._layersLink=o.DomUtil.create("a",t+"-toggle",e);n.href="#",n.title="Layers",o.Browser.touch?o.DomEvent.on(n,"click",o.DomEvent.stop).on(n,"click",this._expand,this):o.DomEvent.on(n,"focus",this._expand,this),o.DomEvent.on(i,"click",function(){setTimeout(o.bind(this._onInputClick,this),0)},this),this._map.on("click",this._collapse,this)}else this._expand();this._baseLayersList=o.DomUtil.create("div",t+"-base",i),this._separator=o.DomUtil.create("div",t+"-separator",i),this._overlaysList=o.DomUtil.create("div",t+"-overlays",i),e.appendChild(i)},_addLayer:function(t,e,i){var n=o.stamp(t);this._layers[n]={layer:t,name:e,overlay:i},this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex))},_update:function(){if(this._container){this._baseLayersList.innerHTML="",this._overlaysList.innerHTML="";var t,e,i=!1,n=!1;for(t in this._layers)e=this._layers[t],this._addItem(e),n=n||e.overlay,i=i||!e.overlay;this._separator.style.display=n&&i?"":"none"}},_onLayerChange:function(t){var e=this._layers[o.stamp(t.layer)];if(e){this._handlingClick||this._update();var i=e.overlay?"layeradd"===t.type?"overlayadd":"overlayremove":"layeradd"===t.type?"baselayerchange":null;i&&this._map.fire(i,e)}},_createRadioElement:function(t,i){var n='t;t++)e=n[t],i=this._layers[e.layerId],e.checked&&!this._map.hasLayer(i.layer)?this._map.addLayer(i.layer):!e.checked&&this._map.hasLayer(i.layer)&&this._map.removeLayer(i.layer);this._handlingClick=!1,this._refocusOnMap()},_expand:function(){o.DomUtil.addClass(this._container,"leaflet-control-layers-expanded")},_collapse:function(){this._container.className=this._container.className.replace(" leaflet-control-layers-expanded","")}}),o.control.layers=function(t,e,i){return new o.Control.Layers(t,e,i)},o.PosAnimation=o.Class.extend({includes:o.Mixin.Events,run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._newPos=e,this.fire("start"),t.style[o.DomUtil.TRANSITION]="all "+(i||.25)+"s cubic-bezier(0,0,"+(n||.5)+",1)",o.DomEvent.on(t,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),o.DomUtil.setPosition(t,e),o.Util.falseFn(t.offsetWidth),this._stepTimer=setInterval(o.bind(this._onStep,this),50)},stop:function(){this._inProgress&&(o.DomUtil.setPosition(this._el,this._getPos()),this._onTransitionEnd(),o.Util.falseFn(this._el.offsetWidth))},_onStep:function(){var t=this._getPos();return t?(this._el._leaflet_pos=t,this.fire("step"),void 0):(this._onTransitionEnd(),void 0)},_transformRe:/([-+]?(?:\d*\.)?\d+)\D*, ([-+]?(?:\d*\.)?\d+)\D*\)/,_getPos:function(){var e,i,n,s=this._el,a=t.getComputedStyle(s);if(o.Browser.any3d){if(n=a[o.DomUtil.TRANSFORM].match(this._transformRe),!n)return;e=parseFloat(n[1]),i=parseFloat(n[2])}else e=parseFloat(a.left),i=parseFloat(a.top);return new o.Point(e,i,!0)},_onTransitionEnd:function(){o.DomEvent.off(this._el,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),this._inProgress&&(this._inProgress=!1,this._el.style[o.DomUtil.TRANSITION]="",this._el._leaflet_pos=this._newPos,clearInterval(this._stepTimer),this.fire("step").fire("end"))}}),o.Map.include({setView:function(t,e,n){if(e=e===i?this._zoom:this._limitZoom(e),t=this._limitCenter(o.latLng(t),e,this.options.maxBounds),n=n||{},this._panAnim&&this._panAnim.stop(),this._loaded&&!n.reset&&n!==!0){n.animate!==i&&(n.zoom=o.extend({animate:n.animate},n.zoom),n.pan=o.extend({animate:n.animate},n.pan));var s=this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan);if(s)return clearTimeout(this._sizeTimer),this}return this._resetView(t,e),this},panBy:function(t,e){if(t=o.point(t).round(),e=e||{},!t.x&&!t.y)return this;if(this._panAnim||(this._panAnim=new o.PosAnimation,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire("movestart"),e.animate!==!1){o.DomUtil.addClass(this._mapPane,"leaflet-pan-anim");var i=this._getMapPanePos().subtract(t);this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){o.DomUtil.removeClass(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._floor();return(e&&e.animate)===!0||this.getSize().contains(i)?(this.panBy(i,e),!0):!1}}),o.PosAnimation=o.DomUtil.TRANSITION?o.PosAnimation:o.PosAnimation.extend({run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=o.DomUtil.getPosition(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(),this._complete())},_animate:function(){this._animId=o.Util.requestAnimFrame(this._animate,this),this._step()},_step:function(){var t=+new Date-this._startTime,e=1e3*this._duration;e>t?this._runFrame(this._easeOut(t/e)):(this._runFrame(1),this._complete())},_runFrame:function(t){var e=this._startPos.add(this._offset.multiplyBy(t));o.DomUtil.setPosition(this._el,e),this.fire("step")},_complete:function(){o.Util.cancelAnimFrame(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),o.Map.mergeOptions({zoomAnimation:!0,zoomAnimationThreshold:4}),o.DomUtil.TRANSITION&&o.Map.addInitHook(function(){this._zoomAnimated=this.options.zoomAnimation&&o.DomUtil.TRANSITION&&o.Browser.any3d&&!o.Browser.android23&&!o.Browser.mobileOpera,this._zoomAnimated&&o.DomEvent.on(this._mapPane,o.DomUtil.TRANSITION_END,this._catchTransitionEnd,this)}),o.Map.include(o.DomUtil.TRANSITION?{_catchTransitionEnd:function(){this._animatingZoom&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||i.animate===!1||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),o=this._getCenterOffset(t)._divideBy(1-1/n),s=this._getCenterLayerPoint()._add(o);return i.animate===!0||this.getSize().contains(o)?(this.fire("movestart").fire("zoomstart"),this._animateZoom(t,e,s,n,null,!0),!0):!1},_animateZoom:function(t,e,i,n,s,a){this._animatingZoom=!0,o.DomUtil.addClass(this._mapPane,"leaflet-zoom-anim"),this._animateToCenter=t,this._animateToZoom=e,o.Draggable&&(o.Draggable._disabled=!0),this.fire("zoomanim",{center:t,zoom:e,origin:i,scale:n,delta:s,backwards:a})},_onZoomTransitionEnd:function(){this._animatingZoom=!1,o.DomUtil.removeClass(this._mapPane,"leaflet-zoom-anim"),this._resetView(this._animateToCenter,this._animateToZoom,!0,!0),o.Draggable&&(o.Draggable._disabled=!1)}}:{}),o.TileLayer.include({_animateZoom:function(t){this._animating||(this._animating=!0,this._prepareBgBuffer());var e=this._bgBuffer,i=o.DomUtil.TRANSFORM,n=t.delta?o.DomUtil.getTranslateString(t.delta):e.style[i],s=o.DomUtil.getScaleString(t.scale,t.origin);e.style[i]=t.backwards?s+" "+n:n+" "+s},_endZoomAnim:function(){var t=this._tileContainer,e=this._bgBuffer;t.style.visibility="",t.parentNode.appendChild(t),o.Util.falseFn(e.offsetWidth),this._animating=!1},_clearBgBuffer:function(){var t=this._map;!t||t._animatingZoom||t.touchZoom._zooming||(this._bgBuffer.innerHTML="",this._bgBuffer.style[o.DomUtil.TRANSFORM]="")},_prepareBgBuffer:function(){var t=this._tileContainer,e=this._bgBuffer,i=this._getLoadedTilesPercentage(e),n=this._getLoadedTilesPercentage(t);return e&&i>.5&&.5>n?(t.style.visibility="hidden",this._stopLoadingImages(t),void 0):(e.style.visibility="hidden",e.style[o.DomUtil.TRANSFORM]="",this._tileContainer=e,e=this._bgBuffer=t,this._stopLoadingImages(e),clearTimeout(this._clearBgBufferTimer),void 0)},_getLoadedTilesPercentage:function(t){var e,i,n=t.getElementsByTagName("img"),o=0;for(e=0,i=n.length;i>e;e++)n[e].complete&&o++;return o/i},_stopLoadingImages:function(t){var e,i,n,s=Array.prototype.slice.call(t.getElementsByTagName("img"));for(e=0,i=s.length;i>e;e++)n=s[e],n.complete||(n.onload=o.Util.falseFn,n.onerror=o.Util.falseFn,n.src=o.Util.emptyImageUrl,n.parentNode.removeChild(n))}}),o.Map.include({_defaultLocateOptions:{watch:!1,setView:!1,maxZoom:1/0,timeout:1e4,maximumAge:0,enableHighAccuracy:!1},locate:function(t){if(t=this._locateOptions=o.extend(this._defaultLocateOptions,t),!navigator.geolocation)return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=o.bind(this._handleGeolocationResponse,this),i=o.bind(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+i+"."})},_handleGeolocationResponse:function(t){var e=t.coords.latitude,i=t.coords.longitude,n=new o.LatLng(e,i),s=180*t.coords.accuracy/40075017,a=s/Math.cos(o.LatLng.DEG_TO_RAD*e),r=o.latLngBounds([e-s,i-a],[e+s,i+a]),h=this._locateOptions;if(h.setView){var l=Math.min(this.getBoundsZoom(r),h.maxZoom);this.setView(n,l)}var u={latlng:n,bounds:r,timestamp:t.timestamp};for(var c in t.coords)"number"==typeof t.coords[c]&&(u[c]=t.coords[c]);this.fire("locationfound",u)}})}(window,document); \ No newline at end of file +!function(t,e,i){var n=t.L,o={};o.version="0.7.1","object"==typeof module&&"object"==typeof module.exports?module.exports=o:"function"==typeof define&&define.amd&&define(o),o.noConflict=function(){return t.L=n,this},t.L=o,o.Util={extend:function(t){var e,i,n,o,s=Array.prototype.slice.call(arguments,1);for(i=0,n=s.length;n>i;i++){o=s[i]||{};for(e in o)o.hasOwnProperty(e)&&(t[e]=o[e])}return t},bind:function(t,e){var i=arguments.length>2?Array.prototype.slice.call(arguments,2):null;return function(){return t.apply(e,i||arguments)}},stamp:function(){var t=0,e="_leaflet_id";return function(i){return i[e]=i[e]||++t,i[e]}}(),invokeEach:function(t,e,i){var n,o;if("object"==typeof t){o=Array.prototype.slice.call(arguments,3);for(n in t)e.apply(i,[n,t[n]].concat(o));return!0}return!1},limitExecByInterval:function(t,e,i){var n,o;return function s(){var a=arguments;return n?(o=!0,void 0):(n=!0,setTimeout(function(){n=!1,o&&(s.apply(i,a),o=!1)},e),t.apply(i,a),void 0)}},falseFn:function(){return!1},formatNum:function(t,e){var i=Math.pow(10,e||5);return Math.round(t*i)/i},trim:function(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")},splitWords:function(t){return o.Util.trim(t).split(/\s+/)},setOptions:function(t,e){return t.options=o.extend({},t.options,e),t.options},getParamString:function(t,e,i){var n=[];for(var o in t)n.push(encodeURIComponent(i?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(e&&-1!==e.indexOf("?")?"&":"?")+n.join("&")},template:function(t,e){return t.replace(/\{ *([\w_]+) *\}/g,function(t,n){var o=e[n];if(o===i)throw new Error("No value provided for variable "+t);return"function"==typeof o&&(o=o(e)),o})},isArray:Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)},emptyImageUrl:"data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="},function(){function e(e){var i,n,o=["webkit","moz","o","ms"];for(i=0;it;t++)n._initHooks[t].call(this)}},e},o.Class.include=function(t){o.extend(this.prototype,t)},o.Class.mergeOptions=function(t){o.extend(this.prototype.options,t)},o.Class.addInitHook=function(t){var e=Array.prototype.slice.call(arguments,1),i="function"==typeof t?t:function(){this[t].apply(this,e)};this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(i)};var s="_leaflet_events";o.Mixin={},o.Mixin.Events={addEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d=this[s]=this[s]||{},p=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)r={action:e,context:i||this},h=t[n],p?(l=h+"_idx",u=l+"_len",c=d[l]=d[l]||{},c[p]||(c[p]=[],d[u]=(d[u]||0)+1),c[p].push(r)):(d[h]=d[h]||[],d[h].push(r));return this},hasEventListeners:function(t){var e=this[s];return!!e&&(t in e&&e[t].length>0||t+"_idx"in e&&e[t+"_idx_len"]>0)},removeEventListener:function(t,e,i){if(!this[s])return this;if(!t)return this.clearAllEventListeners();if(o.Util.invokeEach(t,this.removeEventListener,this,e,i))return this;var n,a,r,h,l,u,c,d,p,_=this[s],m=i&&i!==this&&o.stamp(i);for(t=o.Util.splitWords(t),n=0,a=t.length;a>n;n++)if(r=t[n],u=r+"_idx",c=u+"_len",d=_[u],e){if(h=m&&d?d[m]:_[r]){for(l=h.length-1;l>=0;l--)h[l].action!==e||i&&h[l].context!==i||(p=h.splice(l,1),p[0].action=o.Util.falseFn);i&&d&&0===h.length&&(delete d[m],_[c]--)}}else delete _[r],delete _[u],delete _[c];return this},clearAllEventListeners:function(){return delete this[s],this},fireEvent:function(t,e){if(!this.hasEventListeners(t))return this;var i,n,a,r,h,l=o.Util.extend({},e,{type:t,target:this}),u=this[s];if(u[t])for(i=u[t].slice(),n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);r=u[t+"_idx"];for(h in r)if(i=r[h].slice())for(n=0,a=i.length;a>n;n++)i[n].action.call(i[n].context,l);return this},addOneTimeEventListener:function(t,e,i){if(o.Util.invokeEach(t,this.addOneTimeEventListener,this,e,i))return this;var n=o.bind(function(){this.removeEventListener(t,e,i).removeEventListener(t,n,i)},this);return this.addEventListener(t,e,i).addEventListener(t,n,i)}},o.Mixin.Events.on=o.Mixin.Events.addEventListener,o.Mixin.Events.off=o.Mixin.Events.removeEventListener,o.Mixin.Events.once=o.Mixin.Events.addOneTimeEventListener,o.Mixin.Events.fire=o.Mixin.Events.fireEvent,function(){var n="ActiveXObject"in t,s=n&&!e.addEventListener,a=navigator.userAgent.toLowerCase(),r=-1!==a.indexOf("webkit"),h=-1!==a.indexOf("chrome"),l=-1!==a.indexOf("phantom"),u=-1!==a.indexOf("android"),c=-1!==a.search("android [23]"),d=-1!==a.indexOf("gecko"),p=typeof orientation!=i+"",_=t.navigator&&t.navigator.msPointerEnabled&&t.navigator.msMaxTouchPoints&&!t.PointerEvent,m=t.PointerEvent&&t.navigator.pointerEnabled&&t.navigator.maxTouchPoints||_,f="devicePixelRatio"in t&&t.devicePixelRatio>1||"matchMedia"in t&&t.matchMedia("(min-resolution:144dpi)")&&t.matchMedia("(min-resolution:144dpi)").matches,g=e.documentElement,v=n&&"transition"in g.style,y="WebKitCSSMatrix"in t&&"m11"in new t.WebKitCSSMatrix&&!c,P="MozPerspective"in g.style,L="OTransition"in g.style,x=!t.L_DISABLE_3D&&(v||y||P||L)&&!l,w=!t.L_NO_TOUCH&&!l&&function(){var t="ontouchstart";if(m||t in g)return!0;var i=e.createElement("div"),n=!1;return i.setAttribute?(i.setAttribute(t,"return;"),"function"==typeof i[t]&&(n=!0),i.removeAttribute(t),i=null,n):!1}();o.Browser={ie:n,ielt9:s,webkit:r,gecko:d&&!r&&!t.opera&&!n,android:u,android23:c,chrome:h,ie3d:v,webkit3d:y,gecko3d:P,opera3d:L,any3d:x,mobile:p,mobileWebkit:p&&r,mobileWebkit3d:p&&y,mobileOpera:p&&t.opera,touch:w,msPointer:_,pointer:m,retina:f}}(),o.Point=function(t,e,i){this.x=i?Math.round(t):t,this.y=i?Math.round(e):e},o.Point.prototype={clone:function(){return new o.Point(this.x,this.y)},add:function(t){return this.clone()._add(o.point(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(o.point(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},distanceTo:function(t){t=o.point(t);var e=t.x-this.x,i=t.y-this.y;return Math.sqrt(e*e+i*i)},equals:function(t){return t=o.point(t),t.x===this.x&&t.y===this.y},contains:function(t){return t=o.point(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+o.Util.formatNum(this.x)+", "+o.Util.formatNum(this.y)+")"}},o.point=function(t,e,n){return t instanceof o.Point?t:o.Util.isArray(t)?new o.Point(t[0],t[1]):t===i||null===t?t:new o.Point(t,e,n)},o.Bounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.Bounds.prototype={extend:function(t){return t=o.point(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new o.Point((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new o.Point(this.min.x,this.max.y)},getTopRight:function(){return new o.Point(this.max.x,this.min.y)},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var e,i;return t="number"==typeof t[0]||t instanceof o.Point?o.point(t):o.bounds(t),t instanceof o.Bounds?(e=t.min,i=t.max):e=i=t,e.x>=this.min.x&&i.x<=this.max.x&&e.y>=this.min.y&&i.y<=this.max.y},intersects:function(t){t=o.bounds(t);var e=this.min,i=this.max,n=t.min,s=t.max,a=s.x>=e.x&&n.x<=i.x,r=s.y>=e.y&&n.y<=i.y;return a&&r},isValid:function(){return!(!this.min||!this.max)}},o.bounds=function(t,e){return!t||t instanceof o.Bounds?t:new o.Bounds(t,e)},o.Transformation=function(t,e,i,n){this._a=t,this._b=e,this._c=i,this._d=n},o.Transformation.prototype={transform:function(t,e){return this._transform(t.clone(),e)},_transform:function(t,e){return e=e||1,t.x=e*(this._a*t.x+this._b),t.y=e*(this._c*t.y+this._d),t},untransform:function(t,e){return e=e||1,new o.Point((t.x/e-this._b)/this._a,(t.y/e-this._d)/this._c)}},o.DomUtil={get:function(t){return"string"==typeof t?e.getElementById(t):t},getStyle:function(t,i){var n=t.style[i];if(!n&&t.currentStyle&&(n=t.currentStyle[i]),(!n||"auto"===n)&&e.defaultView){var o=e.defaultView.getComputedStyle(t,null);n=o?o[i]:null}return"auto"===n?null:n},getViewportOffset:function(t){var i,n=0,s=0,a=t,r=e.body,h=e.documentElement;do{if(n+=a.offsetTop||0,s+=a.offsetLeft||0,n+=parseInt(o.DomUtil.getStyle(a,"borderTopWidth"),10)||0,s+=parseInt(o.DomUtil.getStyle(a,"borderLeftWidth"),10)||0,i=o.DomUtil.getStyle(a,"position"),a.offsetParent===r&&"absolute"===i)break;if("fixed"===i){n+=r.scrollTop||h.scrollTop||0,s+=r.scrollLeft||h.scrollLeft||0;break}if("relative"===i&&!a.offsetLeft){var l=o.DomUtil.getStyle(a,"width"),u=o.DomUtil.getStyle(a,"max-width"),c=a.getBoundingClientRect();("none"!==l||"none"!==u)&&(s+=c.left+a.clientLeft),n+=c.top+(r.scrollTop||h.scrollTop||0);break}a=a.offsetParent}while(a);a=t;do{if(a===r)break;n-=a.scrollTop||0,s-=a.scrollLeft||0,a=a.parentNode}while(a);return new o.Point(s,n)},documentIsLtr:function(){return o.DomUtil._docIsLtrCached||(o.DomUtil._docIsLtrCached=!0,o.DomUtil._docIsLtr="ltr"===o.DomUtil.getStyle(e.body,"direction")),o.DomUtil._docIsLtr},create:function(t,i,n){var o=e.createElement(t);return o.className=i,n&&n.appendChild(o),o},hasClass:function(t,e){if(t.classList!==i)return t.classList.contains(e);var n=o.DomUtil._getClass(t);return n.length>0&&new RegExp("(^|\\s)"+e+"(\\s|$)").test(n)},addClass:function(t,e){if(t.classList!==i)for(var n=o.Util.splitWords(e),s=0,a=n.length;a>s;s++)t.classList.add(n[s]);else if(!o.DomUtil.hasClass(t,e)){var r=o.DomUtil._getClass(t);o.DomUtil._setClass(t,(r?r+" ":"")+e)}},removeClass:function(t,e){t.classList!==i?t.classList.remove(e):o.DomUtil._setClass(t,o.Util.trim((" "+o.DomUtil._getClass(t)+" ").replace(" "+e+" "," ")))},_setClass:function(t,e){t.className.baseVal===i?t.className=e:t.className.baseVal=e},_getClass:function(t){return t.className.baseVal===i?t.className:t.className.baseVal},setOpacity:function(t,e){if("opacity"in t.style)t.style.opacity=e;else if("filter"in t.style){var i=!1,n="DXImageTransform.Microsoft.Alpha";try{i=t.filters.item(n)}catch(o){if(1===e)return}e=Math.round(100*e),i?(i.Enabled=100!==e,i.Opacity=e):t.style.filter+=" progid:"+n+"(opacity="+e+")"}},testProp:function(t){for(var i=e.documentElement.style,n=0;ni||i===e?e:t),new o.LatLng(this.lat,i)}},o.latLng=function(t,e){return t instanceof o.LatLng?t:o.Util.isArray(t)?"number"==typeof t[0]||"string"==typeof t[0]?new o.LatLng(t[0],t[1],t[2]):null:t===i||null===t?t:"object"==typeof t&&"lat"in t?new o.LatLng(t.lat,"lng"in t?t.lng:t.lon):e===i?null:new o.LatLng(t,e)},o.LatLngBounds=function(t,e){if(t)for(var i=e?[t,e]:t,n=0,o=i.length;o>n;n++)this.extend(i[n])},o.LatLngBounds.prototype={extend:function(t){if(!t)return this;var e=o.latLng(t);return t=null!==e?e:o.latLngBounds(t),t instanceof o.LatLng?this._southWest||this._northEast?(this._southWest.lat=Math.min(t.lat,this._southWest.lat),this._southWest.lng=Math.min(t.lng,this._southWest.lng),this._northEast.lat=Math.max(t.lat,this._northEast.lat),this._northEast.lng=Math.max(t.lng,this._northEast.lng)):(this._southWest=new o.LatLng(t.lat,t.lng),this._northEast=new o.LatLng(t.lat,t.lng)):t instanceof o.LatLngBounds&&(this.extend(t._southWest),this.extend(t._northEast)),this},pad:function(t){var e=this._southWest,i=this._northEast,n=Math.abs(e.lat-i.lat)*t,s=Math.abs(e.lng-i.lng)*t;return new o.LatLngBounds(new o.LatLng(e.lat-n,e.lng-s),new o.LatLng(i.lat+n,i.lng+s))},getCenter:function(){return new o.LatLng((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new o.LatLng(this.getNorth(),this.getWest())},getSouthEast:function(){return new o.LatLng(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof o.LatLng?o.latLng(t):o.latLngBounds(t);var e,i,n=this._southWest,s=this._northEast;return t instanceof o.LatLngBounds?(e=t.getSouthWest(),i=t.getNorthEast()):e=i=t,e.lat>=n.lat&&i.lat<=s.lat&&e.lng>=n.lng&&i.lng<=s.lng},intersects:function(t){t=o.latLngBounds(t);var e=this._southWest,i=this._northEast,n=t.getSouthWest(),s=t.getNorthEast(),a=s.lat>=e.lat&&n.lat<=i.lat,r=s.lng>=e.lng&&n.lng<=i.lng;return a&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t){return t?(t=o.latLngBounds(t),this._southWest.equals(t.getSouthWest())&&this._northEast.equals(t.getNorthEast())):!1},isValid:function(){return!(!this._southWest||!this._northEast)}},o.latLngBounds=function(t,e){return!t||t instanceof o.LatLngBounds?t:new o.LatLngBounds(t,e)},o.Projection={},o.Projection.SphericalMercator={MAX_LATITUDE:85.0511287798,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=t.lng*e,a=n*e;return a=Math.log(Math.tan(Math.PI/4+a/2)),new o.Point(s,a)},unproject:function(t){var e=o.LatLng.RAD_TO_DEG,i=t.x*e,n=(2*Math.atan(Math.exp(t.y))-Math.PI/2)*e;return new o.LatLng(n,i)}},o.Projection.LonLat={project:function(t){return new o.Point(t.lng,t.lat)},unproject:function(t){return new o.LatLng(t.y,t.x)}},o.CRS={latLngToPoint:function(t,e){var i=this.projection.project(t),n=this.scale(e);return this.transformation._transform(i,n)},pointToLatLng:function(t,e){var i=this.scale(e),n=this.transformation.untransform(t,i);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},scale:function(t){return 256*Math.pow(2,t)},getSize:function(t){var e=this.scale(t);return o.point(e,e)}},o.CRS.Simple=o.extend({},o.CRS,{projection:o.Projection.LonLat,transformation:new o.Transformation(1,0,-1,0),scale:function(t){return Math.pow(2,t)}}),o.CRS.EPSG3857=o.extend({},o.CRS,{code:"EPSG:3857",projection:o.Projection.SphericalMercator,transformation:new o.Transformation(.5/Math.PI,.5,-.5/Math.PI,.5),project:function(t){var e=this.projection.project(t),i=6378137;return e.multiplyBy(i)}}),o.CRS.EPSG900913=o.extend({},o.CRS.EPSG3857,{code:"EPSG:900913"}),o.CRS.EPSG4326=o.extend({},o.CRS,{code:"EPSG:4326",projection:o.Projection.LonLat,transformation:new o.Transformation(1/360,.5,-1/360,.5)}),o.Map=o.Class.extend({includes:o.Mixin.Events,options:{crs:o.CRS.EPSG3857,fadeAnimation:o.DomUtil.TRANSITION&&!o.Browser.android23,trackResize:!0,markerZoomAnimation:o.DomUtil.TRANSITION&&o.Browser.any3d},initialize:function(t,e){e=o.setOptions(this,e),this._initContainer(t),this._initLayout(),this._onResize=o.bind(this._onResize,this),this._initEvents(),e.maxBounds&&this.setMaxBounds(e.maxBounds),e.center&&e.zoom!==i&&this.setView(o.latLng(e.center),e.zoom,{reset:!0}),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._tileLayersNum=0,this.callInitHooks(),this._addLayers(e.layers)},setView:function(t,e){return e=e===i?this.getZoom():e,this._resetView(o.latLng(t),this._limitZoom(e)),this},setZoom:function(t,e){return this._loaded?this.setView(this.getCenter(),t,{zoom:e}):(this._zoom=this._limitZoom(t),this)},zoomIn:function(t,e){return this.setZoom(this._zoom+(t||1),e)},zoomOut:function(t,e){return this.setZoom(this._zoom-(t||1),e)},setZoomAround:function(t,e,i){var n=this.getZoomScale(e),s=this.getSize().divideBy(2),a=t instanceof o.Point?t:this.latLngToContainerPoint(t),r=a.subtract(s).multiplyBy(1-1/n),h=this.containerPointToLatLng(s.add(r));return this.setView(h,e,{zoom:i})},fitBounds:function(t,e){e=e||{},t=t.getBounds?t.getBounds():o.latLngBounds(t);var i=o.point(e.paddingTopLeft||e.padding||[0,0]),n=o.point(e.paddingBottomRight||e.padding||[0,0]),s=this.getBoundsZoom(t,!1,i.add(n)),a=n.subtract(i).divideBy(2),r=this.project(t.getSouthWest(),s),h=this.project(t.getNorthEast(),s),l=this.unproject(r.add(h).divideBy(2).add(a),s);return s=e&&e.maxZoom?Math.min(e.maxZoom,s):s,this.setView(l,s,e)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,e){return this.setView(t,this._zoom,{pan:e})},panBy:function(t){return this.fire("movestart"),this._rawPanBy(o.point(t)),this.fire("move"),this.fire("moveend")},setMaxBounds:function(t){return t=o.latLngBounds(t),this.options.maxBounds=t,t?(this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds,this)):this.off("moveend",this._panInsideMaxBounds,this)},panInsideBounds:function(t,e){var i=this.getCenter(),n=this._limitCenter(i,this._zoom,t);return i.equals(n)?this:this.panTo(n,e)},addLayer:function(t){var e=o.stamp(t);return this._layers[e]?this:(this._layers[e]=t,!t.options||isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[e]=t,this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum++,this._tileLayersToLoad++,t.on("load",this._onTileLayerLoad,this)),this._loaded&&this._layerAdd(t),this)},removeLayer:function(t){var e=o.stamp(t);return this._layers[e]?(this._loaded&&t.onRemove(this),delete this._layers[e],this._loaded&&this.fire("layerremove",{layer:t}),this._zoomBoundLayers[e]&&(delete this._zoomBoundLayers[e],this._updateZoomLevels()),this.options.zoomAnimation&&o.TileLayer&&t instanceof o.TileLayer&&(this._tileLayersNum--,this._tileLayersToLoad--,t.off("load",this._onTileLayerLoad,this)),this):this},hasLayer:function(t){return t?o.stamp(t)in this._layers:!1},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},invalidateSize:function(t){if(!this._loaded)return this;t=o.extend({animate:!1,pan:!0},t===!0?{animate:!0}:t);var e=this.getSize();this._sizeChanged=!0,this._initialCenter=null;var i=this.getSize(),n=e.divideBy(2).round(),s=i.divideBy(2).round(),a=n.subtract(s);return a.x||a.y?(t.animate&&t.pan?this.panBy(a):(t.pan&&this._rawPanBy(a),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(o.bind(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:e,newSize:i})):this},addHandler:function(t,e){if(!e)return this;var i=this[t]=new e(this);return this._handlers.push(i),this.options[t]&&i.enable(),this},remove:function(){this._loaded&&this.fire("unload"),this._initEvents("off");try{delete this._container._leaflet}catch(t){this._container._leaflet=i}return this._clearPanes(),this._clearControlPos&&this._clearControlPos(),this._clearHandlers(),this},getCenter:function(){return this._checkIfLoaded(),this._initialCenter&&!this._moved()?this._initialCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds(),e=this.unproject(t.getBottomLeft()),i=this.unproject(t.getTopRight());return new o.LatLngBounds(e,i)},getMinZoom:function(){return this.options.minZoom===i?this._layersMinZoom===i?0:this._layersMinZoom:this.options.minZoom},getMaxZoom:function(){return this.options.maxZoom===i?this._layersMaxZoom===i?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,e,i){t=o.latLngBounds(t);var n,s=this.getMinZoom()-(e?1:0),a=this.getMaxZoom(),r=this.getSize(),h=t.getNorthWest(),l=t.getSouthEast(),u=!0;i=o.point(i||[0,0]);do s++,n=this.project(l,s).subtract(this.project(h,s)).add(i),u=e?n.x=s);return u&&e?null:e?s:s-1},getSize:function(){return(!this._size||this._sizeChanged)&&(this._size=new o.Point(this._container.clientWidth,this._container.clientHeight),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(){var t=this._getTopLeftPoint();return new o.Bounds(t,t.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._initialTopLeftPoint},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t){var e=this.options.crs;return e.scale(t)/e.scale(this._zoom)},getScaleZoom:function(t){return this._zoom+Math.log(t)/Math.LN2},project:function(t,e){return e=e===i?this._zoom:e,this.options.crs.latLngToPoint(o.latLng(t),e)},unproject:function(t,e){return e=e===i?this._zoom:e,this.options.crs.pointToLatLng(o.point(t),e)},layerPointToLatLng:function(t){var e=o.point(t).add(this.getPixelOrigin());return this.unproject(e)},latLngToLayerPoint:function(t){var e=this.project(o.latLng(t))._round();return e._subtract(this.getPixelOrigin())},containerPointToLayerPoint:function(t){return o.point(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return o.point(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var e=this.containerPointToLayerPoint(o.point(t));return this.layerPointToLatLng(e)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(o.latLng(t)))},mouseEventToContainerPoint:function(t){return o.DomEvent.getMousePosition(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var e=this._container=o.DomUtil.get(t);if(!e)throw new Error("Map container not found.");if(e._leaflet)throw new Error("Map container is already initialized.");e._leaflet=!0},_initLayout:function(){var t=this._container;o.DomUtil.addClass(t,"leaflet-container"+(o.Browser.touch?" leaflet-touch":"")+(o.Browser.retina?" leaflet-retina":"")+(o.Browser.ielt9?" leaflet-oldie":"")+(this.options.fadeAnimation?" leaflet-fade-anim":""));var e=o.DomUtil.getStyle(t,"position");"absolute"!==e&&"relative"!==e&&"fixed"!==e&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._mapPane=t.mapPane=this._createPane("leaflet-map-pane",this._container),this._tilePane=t.tilePane=this._createPane("leaflet-tile-pane",this._mapPane),t.objectsPane=this._createPane("leaflet-objects-pane",this._mapPane),t.shadowPane=this._createPane("leaflet-shadow-pane"),t.overlayPane=this._createPane("leaflet-overlay-pane"),t.markerPane=this._createPane("leaflet-marker-pane"),t.popupPane=this._createPane("leaflet-popup-pane");var e=" leaflet-zoom-hide";this.options.markerZoomAnimation||(o.DomUtil.addClass(t.markerPane,e),o.DomUtil.addClass(t.shadowPane,e),o.DomUtil.addClass(t.popupPane,e))},_createPane:function(t,e){return o.DomUtil.create("div",t,e||this._panes.objectsPane)},_clearPanes:function(){this._container.removeChild(this._mapPane)},_addLayers:function(t){t=t?o.Util.isArray(t)?t:[t]:[];for(var e=0,i=t.length;i>e;e++)this.addLayer(t[e])},_resetView:function(t,e,i,n){var s=this._zoom!==e;n||(this.fire("movestart"),s&&this.fire("zoomstart")),this._zoom=e,this._initialCenter=t,this._initialTopLeftPoint=this._getNewTopLeftPoint(t),i?this._initialTopLeftPoint._add(this._getMapPanePos()):o.DomUtil.setPosition(this._mapPane,new o.Point(0,0)),this._tileLayersToLoad=this._tileLayersNum;var a=!this._loaded;this._loaded=!0,a&&(this.fire("load"),this.eachLayer(this._layerAdd,this)),this.fire("viewreset",{hard:!i}),this.fire("move"),(s||n)&&this.fire("zoomend"),this.fire("moveend",{hard:!i})},_rawPanBy:function(t){o.DomUtil.setPosition(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_updateZoomLevels:function(){var t,e=1/0,n=-1/0,o=this._getZoomSpan();for(t in this._zoomBoundLayers){var s=this._zoomBoundLayers[t];isNaN(s.options.minZoom)||(e=Math.min(e,s.options.minZoom)),isNaN(s.options.maxZoom)||(n=Math.max(n,s.options.maxZoom))}t===i?this._layersMaxZoom=this._layersMinZoom=i:(this._layersMaxZoom=n,this._layersMinZoom=e),o!==this._getZoomSpan()&&this.fire("zoomlevelschange")},_panInsideMaxBounds:function(){this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(e){if(o.DomEvent){e=e||"on",o.DomEvent[e](this._container,"click",this._onMouseClick,this);var i,n,s=["dblclick","mousedown","mouseup","mouseenter","mouseleave","mousemove","contextmenu"];for(i=0,n=s.length;n>i;i++)o.DomEvent[e](this._container,s[i],this._fireMouseEvent,this);this.options.trackResize&&o.DomEvent[e](t,"resize",this._onResize,this)}},_onResize:function(){o.Util.cancelAnimFrame(this._resizeRequest),this._resizeRequest=o.Util.requestAnimFrame(function(){this.invalidateSize({debounceMoveend:!0})},this,!1,this._container)},_onMouseClick:function(t){!this._loaded||!t._simulated&&(this.dragging&&this.dragging.moved()||this.boxZoom&&this.boxZoom.moved())||o.DomEvent._skipped(t)||(this.fire("preclick"),this._fireMouseEvent(t))},_fireMouseEvent:function(t){if(this._loaded&&!o.DomEvent._skipped(t)){var e=t.type;if(e="mouseenter"===e?"mouseover":"mouseleave"===e?"mouseout":e,this.hasEventListeners(e)){"contextmenu"===e&&o.DomEvent.preventDefault(t);var i=this.mouseEventToContainerPoint(t),n=this.containerPointToLayerPoint(i),s=this.layerPointToLatLng(n);this.fire(e,{latlng:s,layerPoint:n,containerPoint:i,originalEvent:t})}}},_onTileLayerLoad:function(){this._tileLayersToLoad--,this._tileLayersNum&&!this._tileLayersToLoad&&this.fire("tilelayersload")},_clearHandlers:function(){for(var t=0,e=this._handlers.length;e>t;t++)this._handlers[t].disable()},whenReady:function(t,e){return this._loaded?t.call(e||this,this):this.on("load",t,e),this},_layerAdd:function(t){t.onAdd(this),this.fire("layeradd",{layer:t})},_getMapPanePos:function(){return o.DomUtil.getPosition(this._mapPane)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(){return this.getPixelOrigin().subtract(this._getMapPanePos())},_getNewTopLeftPoint:function(t,e){var i=this.getSize()._divideBy(2);return this.project(t,e)._subtract(i)._round()},_latLngToNewLayerPoint:function(t,e,i){var n=this._getNewTopLeftPoint(i,e).add(this._getMapPanePos());return this.project(t,e)._subtract(n)},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,e,i){if(!i)return t;var n=this.project(t,e),s=this.getSize().divideBy(2),a=new o.Bounds(n.subtract(s),n.add(s)),r=this._getBoundsOffset(a,i,e);return this.unproject(n.add(r),e)},_limitOffset:function(t,e){if(!e)return t;var i=this.getPixelBounds(),n=new o.Bounds(i.min.add(t),i.max.add(t));return t.add(this._getBoundsOffset(n,e))},_getBoundsOffset:function(t,e,i){var n=this.project(e.getNorthWest(),i).subtract(t.min),s=this.project(e.getSouthEast(),i).subtract(t.max),a=this._rebound(n.x,-s.x),r=this._rebound(n.y,-s.y);return new o.Point(a,r)},_rebound:function(t,e){return t+e>0?Math.round(t-e)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(e))},_limitZoom:function(t){var e=this.getMinZoom(),i=this.getMaxZoom();return Math.max(e,Math.min(i,t))}}),o.map=function(t,e){return new o.Map(t,e)},o.Projection.Mercator={MAX_LATITUDE:85.0840591556,R_MINOR:6356752.314245179,R_MAJOR:6378137,project:function(t){var e=o.LatLng.DEG_TO_RAD,i=this.MAX_LATITUDE,n=Math.max(Math.min(i,t.lat),-i),s=this.R_MAJOR,a=this.R_MINOR,r=t.lng*e*s,h=n*e,l=a/s,u=Math.sqrt(1-l*l),c=u*Math.sin(h);c=Math.pow((1-c)/(1+c),.5*u);var d=Math.tan(.5*(.5*Math.PI-h))/c;return h=-s*Math.log(d),new o.Point(r,h)},unproject:function(t){for(var e,i=o.LatLng.RAD_TO_DEG,n=this.R_MAJOR,s=this.R_MINOR,a=t.x*i/n,r=s/n,h=Math.sqrt(1-r*r),l=Math.exp(-t.y/n),u=Math.PI/2-2*Math.atan(l),c=15,d=1e-7,p=c,_=.1;Math.abs(_)>d&&--p>0;)e=h*Math.sin(u),_=Math.PI/2-2*Math.atan(l*Math.pow((1-e)/(1+e),.5*h))-u,u+=_; +return new o.LatLng(u*i,a)}},o.CRS.EPSG3395=o.extend({},o.CRS,{code:"EPSG:3395",projection:o.Projection.Mercator,transformation:function(){var t=o.Projection.Mercator,e=t.R_MAJOR,i=.5/(Math.PI*e);return new o.Transformation(i,.5,-i,.5)}()}),o.TileLayer=o.Class.extend({includes:o.Mixin.Events,options:{minZoom:0,maxZoom:18,tileSize:256,subdomains:"abc",errorTileUrl:"",attribution:"",zoomOffset:0,opacity:1,unloadInvisibleTiles:o.Browser.mobile,updateWhenIdle:o.Browser.mobile},initialize:function(t,e){e=o.setOptions(this,e),e.detectRetina&&o.Browser.retina&&e.maxZoom>0&&(e.tileSize=Math.floor(e.tileSize/2),e.zoomOffset++,e.minZoom>0&&e.minZoom--,this.options.maxZoom--),e.bounds&&(e.bounds=o.latLngBounds(e.bounds)),this._url=t;var i=this.options.subdomains;"string"==typeof i&&(this.options.subdomains=i.split(""))},onAdd:function(t){this._map=t,this._animated=t._zoomAnimated,this._initContainer(),t.on({viewreset:this._reset,moveend:this._update},this),this._animated&&t.on({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||(this._limitedUpdate=o.Util.limitExecByInterval(this._update,150,this),t.on("move",this._limitedUpdate,this)),this._reset(),this._update()},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this._container.parentNode.removeChild(this._container),t.off({viewreset:this._reset,moveend:this._update},this),this._animated&&t.off({zoomanim:this._animateZoom,zoomend:this._endZoomAnim},this),this.options.updateWhenIdle||t.off("move",this._limitedUpdate,this),this._container=null,this._map=null},bringToFront:function(){var t=this._map._panes.tilePane;return this._container&&(t.appendChild(this._container),this._setAutoZIndex(t,Math.max)),this},bringToBack:function(){var t=this._map._panes.tilePane;return this._container&&(t.insertBefore(this._container,t.firstChild),this._setAutoZIndex(t,Math.min)),this},getAttribution:function(){return this.options.attribution},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},setUrl:function(t,e){return this._url=t,e||this.redraw(),this},redraw:function(){return this._map&&(this._reset({hard:!0}),this._update()),this},_updateZIndex:function(){this._container&&this.options.zIndex!==i&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t,e){var i,n,o,s=t.children,a=-e(1/0,-1/0);for(n=0,o=s.length;o>n;n++)s[n]!==this._container&&(i=parseInt(s[n].style.zIndex,10),isNaN(i)||(a=e(a,i)));this.options.zIndex=this._container.style.zIndex=(isFinite(a)?a:0)+e(1,-1)},_updateOpacity:function(){var t,e=this._tiles;if(o.Browser.ielt9)for(t in e)o.DomUtil.setOpacity(e[t],this.options.opacity);else o.DomUtil.setOpacity(this._container,this.options.opacity)},_initContainer:function(){var t=this._map._panes.tilePane;if(!this._container){if(this._container=o.DomUtil.create("div","leaflet-layer"),this._updateZIndex(),this._animated){var e="leaflet-tile-container";this._bgBuffer=o.DomUtil.create("div",e,this._container),this._tileContainer=o.DomUtil.create("div",e,this._container)}else this._tileContainer=this._container;t.appendChild(this._container),this.options.opacity<1&&this._updateOpacity()}},_reset:function(t){for(var e in this._tiles)this.fire("tileunload",{tile:this._tiles[e]});this._tiles={},this._tilesToLoad=0,this.options.reuseTiles&&(this._unusedTiles=[]),this._tileContainer.innerHTML="",this._animated&&t&&t.hard&&this._clearBgBuffer(),this._initContainer()},_getTileSize:function(){var t=this._map,e=t.getZoom()+this.options.zoomOffset,i=this.options.maxNativeZoom,n=this.options.tileSize;return i&&e>i&&(n=Math.round(t.getZoomScale(e)/t.getZoomScale(i)*n)),n},_update:function(){if(this._map){var t=this._map,e=t.getPixelBounds(),i=t.getZoom(),n=this._getTileSize();if(!(i>this.options.maxZoom||in;n++)this._addTile(a[n],l);this._tileContainer.appendChild(l)}},_tileShouldBeLoaded:function(t){if(t.x+":"+t.y in this._tiles)return!1;var e=this.options;if(!e.continuousWorld){var i=this._getWrapTileNum();if(e.noWrap&&(t.x<0||t.x>=i.x)||t.y<0||t.y>=i.y)return!1}if(e.bounds){var n=e.tileSize,o=t.multiplyBy(n),s=o.add([n,n]),a=this._map.unproject(o),r=this._map.unproject(s);if(e.continuousWorld||e.noWrap||(a=a.wrap(),r=r.wrap()),!e.bounds.intersects([a,r]))return!1}return!0},_removeOtherTiles:function(t){var e,i,n,o;for(o in this._tiles)e=o.split(":"),i=parseInt(e[0],10),n=parseInt(e[1],10),(it.max.x||nt.max.y)&&this._removeTile(o)},_removeTile:function(t){var e=this._tiles[t];this.fire("tileunload",{tile:e,url:e.src}),this.options.reuseTiles?(o.DomUtil.removeClass(e,"leaflet-tile-loaded"),this._unusedTiles.push(e)):e.parentNode===this._tileContainer&&this._tileContainer.removeChild(e),o.Browser.android||(e.onload=null,e.src=o.Util.emptyImageUrl),delete this._tiles[t]},_addTile:function(t,e){var i=this._getTilePos(t),n=this._getTile();o.DomUtil.setPosition(n,i,o.Browser.chrome),this._tiles[t.x+":"+t.y]=n,this._loadTile(n,t),n.parentNode!==this._tileContainer&&e.appendChild(n)},_getZoomForUrl:function(){var t=this.options,e=this._map.getZoom();return t.zoomReverse&&(e=t.maxZoom-e),e+=t.zoomOffset,t.maxNativeZoom?Math.min(e,t.maxNativeZoom):e},_getTilePos:function(t){var e=this._map.getPixelOrigin(),i=this._getTileSize();return t.multiplyBy(i).subtract(e)},getTileUrl:function(t){return o.Util.template(this._url,o.extend({s:this._getSubdomain(t),z:t.z,x:t.x,y:t.y},this.options))},_getWrapTileNum:function(){var t=this._map.options.crs,e=t.getSize(this._map.getZoom());return e.divideBy(this.options.tileSize)},_adjustTilePoint:function(t){var e=this._getWrapTileNum();this.options.continuousWorld||this.options.noWrap||(t.x=(t.x%e.x+e.x)%e.x),this.options.tms&&(t.y=e.y-t.y-1),t.z=this._getZoomForUrl()},_getSubdomain:function(t){var e=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[e]},_getTile:function(){if(this.options.reuseTiles&&this._unusedTiles.length>0){var t=this._unusedTiles.pop();return this._resetTile(t),t}return this._createTile()},_resetTile:function(){},_createTile:function(){var t=o.DomUtil.create("img","leaflet-tile");return t.style.width=t.style.height=this._getTileSize()+"px",t.galleryimg="no",t.onselectstart=t.onmousemove=o.Util.falseFn,o.Browser.ielt9&&this.options.opacity!==i&&o.DomUtil.setOpacity(t,this.options.opacity),o.Browser.mobileWebkit3d&&(t.style.WebkitBackfaceVisibility="hidden"),t},_loadTile:function(t,e){t._layer=this,t.onload=this._tileOnLoad,t.onerror=this._tileOnError,this._adjustTilePoint(e),t.src=this.getTileUrl(e),this.fire("tileloadstart",{tile:t,url:t.src})},_tileLoaded:function(){this._tilesToLoad--,this._animated&&o.DomUtil.addClass(this._tileContainer,"leaflet-zoom-animated"),this._tilesToLoad||(this.fire("load"),this._animated&&(clearTimeout(this._clearBgBufferTimer),this._clearBgBufferTimer=setTimeout(o.bind(this._clearBgBuffer,this),500)))},_tileOnLoad:function(){var t=this._layer;this.src!==o.Util.emptyImageUrl&&(o.DomUtil.addClass(this,"leaflet-tile-loaded"),t.fire("tileload",{tile:this,url:this.src})),t._tileLoaded()},_tileOnError:function(){var t=this._layer;t.fire("tileerror",{tile:this,url:this.src});var e=t.options.errorTileUrl;e&&(this.src=e),t._tileLoaded()}}),o.tileLayer=function(t,e){return new o.TileLayer(t,e)},o.TileLayer.WMS=o.TileLayer.extend({defaultWmsParams:{service:"WMS",request:"GetMap",version:"1.1.1",layers:"",styles:"",format:"image/jpeg",transparent:!1},initialize:function(t,e){this._url=t;var i=o.extend({},this.defaultWmsParams),n=e.tileSize||this.options.tileSize;i.width=i.height=e.detectRetina&&o.Browser.retina?2*n:n;for(var s in e)this.options.hasOwnProperty(s)||"crs"===s||(i[s]=e[s]);this.wmsParams=i,o.setOptions(this,e)},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var e=this._wmsVersion>=1.3?"crs":"srs";this.wmsParams[e]=this._crs.code,o.TileLayer.prototype.onAdd.call(this,t)},getTileUrl:function(t){var e=this._map,i=this.options.tileSize,n=t.multiplyBy(i),s=n.add([i,i]),a=this._crs.project(e.unproject(n,t.z)),r=this._crs.project(e.unproject(s,t.z)),h=this._wmsVersion>=1.3&&this._crs===o.CRS.EPSG4326?[r.y,a.x,a.y,r.x].join(","):[a.x,r.y,r.x,a.y].join(","),l=o.Util.template(this._url,{s:this._getSubdomain(t)});return l+o.Util.getParamString(this.wmsParams,l,!0)+"&BBOX="+h},setParams:function(t,e){return o.extend(this.wmsParams,t),e||this.redraw(),this}}),o.tileLayer.wms=function(t,e){return new o.TileLayer.WMS(t,e)},o.TileLayer.Canvas=o.TileLayer.extend({options:{async:!1},initialize:function(t){o.setOptions(this,t)},redraw:function(){this._map&&(this._reset({hard:!0}),this._update());for(var t in this._tiles)this._redrawTile(this._tiles[t]);return this},_redrawTile:function(t){this.drawTile(t,t._tilePoint,this._map._zoom)},_createTile:function(){var t=o.DomUtil.create("canvas","leaflet-tile");return t.width=t.height=this.options.tileSize,t.onselectstart=t.onmousemove=o.Util.falseFn,t},_loadTile:function(t,e){t._layer=this,t._tilePoint=e,this._redrawTile(t),this.options.async||this.tileDrawn(t)},drawTile:function(){},tileDrawn:function(t){this._tileOnLoad.call(t)}}),o.tileLayer.canvas=function(t){return new o.TileLayer.Canvas(t)},o.ImageOverlay=o.Class.extend({includes:o.Mixin.Events,options:{opacity:1},initialize:function(t,e,i){this._url=t,this._bounds=o.latLngBounds(e),o.setOptions(this,i)},onAdd:function(t){this._map=t,this._image||this._initImage(),t._panes.overlayPane.appendChild(this._image),t.on("viewreset",this._reset,this),t.options.zoomAnimation&&o.Browser.any3d&&t.on("zoomanim",this._animateZoom,this),this._reset()},onRemove:function(t){t.getPanes().overlayPane.removeChild(this._image),t.off("viewreset",this._reset,this),t.options.zoomAnimation&&t.off("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},bringToFront:function(){return this._image&&this._map._panes.overlayPane.appendChild(this._image),this},bringToBack:function(){var t=this._map._panes.overlayPane;return this._image&&t.insertBefore(this._image,t.firstChild),this},setUrl:function(t){this._url=t,this._image.src=this._url},getAttribution:function(){return this.options.attribution},_initImage:function(){this._image=o.DomUtil.create("img","leaflet-image-layer"),this._map.options.zoomAnimation&&o.Browser.any3d?o.DomUtil.addClass(this._image,"leaflet-zoom-animated"):o.DomUtil.addClass(this._image,"leaflet-zoom-hide"),this._updateOpacity(),o.extend(this._image,{galleryimg:"no",onselectstart:o.Util.falseFn,onmousemove:o.Util.falseFn,onload:o.bind(this._onImageLoad,this),src:this._url})},_animateZoom:function(t){var e=this._map,i=this._image,n=e.getZoomScale(t.zoom),s=this._bounds.getNorthWest(),a=this._bounds.getSouthEast(),r=e._latLngToNewLayerPoint(s,t.zoom,t.center),h=e._latLngToNewLayerPoint(a,t.zoom,t.center)._subtract(r),l=r._add(h._multiplyBy(.5*(1-1/n)));i.style[o.DomUtil.TRANSFORM]=o.DomUtil.getTranslateString(l)+" scale("+n+") "},_reset:function(){var t=this._image,e=this._map.latLngToLayerPoint(this._bounds.getNorthWest()),i=this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(e);o.DomUtil.setPosition(t,e),t.style.width=i.x+"px",t.style.height=i.y+"px"},_onImageLoad:function(){this.fire("load")},_updateOpacity:function(){o.DomUtil.setOpacity(this._image,this.options.opacity)}}),o.imageOverlay=function(t,e,i){return new o.ImageOverlay(t,e,i)},o.Icon=o.Class.extend({options:{className:""},initialize:function(t){o.setOptions(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,e){var i=this._getIconUrl(t);if(!i){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n;return n=e&&"IMG"===e.tagName?this._createImg(i,e):this._createImg(i),this._setIconStyles(n,t),n},_setIconStyles:function(t,e){var i,n=this.options,s=o.point(n[e+"Size"]);i="shadow"===e?o.point(n.shadowAnchor||n.iconAnchor):o.point(n.iconAnchor),!i&&s&&(i=s.divideBy(2,!0)),t.className="leaflet-marker-"+e+" "+n.className,i&&(t.style.marginLeft=-i.x+"px",t.style.marginTop=-i.y+"px"),s&&(t.style.width=s.x+"px",t.style.height=s.y+"px")},_createImg:function(t,i){return i=i||e.createElement("img"),i.src=t,i},_getIconUrl:function(t){return o.Browser.retina&&this.options[t+"RetinaUrl"]?this.options[t+"RetinaUrl"]:this.options[t+"Url"]}}),o.icon=function(t){return new o.Icon(t)},o.Icon.Default=o.Icon.extend({options:{iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],shadowSize:[41,41]},_getIconUrl:function(t){var e=t+"Url";if(this.options[e])return this.options[e];o.Browser.retina&&"icon"===t&&(t+="-2x");var i=o.Icon.Default.imagePath;if(!i)throw new Error("Couldn't autodetect L.Icon.Default.imagePath, set it manually.");return i+"/marker-"+t+".png"}}),o.Icon.Default.imagePath=function(){var t,i,n,o,s,a=e.getElementsByTagName("script"),r=/[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/;for(t=0,i=a.length;i>t;t++)if(n=a[t].src,o=n.match(r))return s=n.split(r)[0],(s?s+"/":"")+"images"}(),o.Marker=o.Class.extend({includes:o.Mixin.Events,options:{icon:new o.Icon.Default,title:"",alt:"",clickable:!0,draggable:!1,keyboard:!0,zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250},initialize:function(t,e){o.setOptions(this,e),this._latlng=o.latLng(t)},onAdd:function(t){this._map=t,t.on("viewreset",this.update,this),this._initIcon(),this.update(),this.fire("add"),t.options.zoomAnimation&&t.options.markerZoomAnimation&&t.on("zoomanim",this._animateZoom,this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){this.dragging&&this.dragging.disable(),this._removeIcon(),this._removeShadow(),this.fire("remove"),t.off({viewreset:this.update,zoomanim:this._animateZoom},this),this._map=null},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=o.latLng(t),this.update(),this.fire("move",{latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update(),this},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup),this},update:function(){if(this._icon){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,e=this._map,i=e.options.zoomAnimation&&e.options.markerZoomAnimation,n=i?"leaflet-zoom-animated":"leaflet-zoom-hide",s=t.icon.createIcon(this._icon),a=!1;s!==this._icon&&(this._icon&&this._removeIcon(),a=!0,t.title&&(s.title=t.title),t.alt&&(s.alt=t.alt)),o.DomUtil.addClass(s,n),t.keyboard&&(s.tabIndex="0"),this._icon=s,this._initInteraction(),t.riseOnHover&&o.DomEvent.on(s,"mouseover",this._bringToFront,this).on(s,"mouseout",this._resetZIndex,this);var r=t.icon.createShadow(this._shadow),h=!1;r!==this._shadow&&(this._removeShadow(),h=!0),r&&o.DomUtil.addClass(r,n),this._shadow=r,t.opacity<1&&this._updateOpacity();var l=this._map._panes;a&&l.markerPane.appendChild(this._icon),r&&h&&l.shadowPane.appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&o.DomEvent.off(this._icon,"mouseover",this._bringToFront).off(this._icon,"mouseout",this._resetZIndex),this._map._panes.markerPane.removeChild(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&this._map._panes.shadowPane.removeChild(this._shadow),this._shadow=null},_setPos:function(t){o.DomUtil.setPosition(this._icon,t),this._shadow&&o.DomUtil.setPosition(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(e)},_initInteraction:function(){if(this.options.clickable){var t=this._icon,e=["dblclick","mousedown","mouseover","mouseout","contextmenu"];o.DomUtil.addClass(t,"leaflet-clickable"),o.DomEvent.on(t,"click",this._onMouseClick,this),o.DomEvent.on(t,"keypress",this._onKeyPress,this);for(var i=0;is?(e.height=s+"px",o.DomUtil.addClass(t,a)):o.DomUtil.removeClass(t,a),this._containerWidth=this._container.offsetWidth},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),e=this._animated,i=o.point(this.options.offset);e&&o.DomUtil.setPosition(this._container,t),this._containerBottom=-i.y-(e?0:t.y),this._containerLeft=-Math.round(this._containerWidth/2)+i.x+(e?0:t.x),this._container.style.bottom=this._containerBottom+"px",this._container.style.left=this._containerLeft+"px"}},_zoomAnimation:function(t){var e=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);o.DomUtil.setPosition(this._container,e)},_adjustPan:function(){if(this.options.autoPan){var t=this._map,e=this._container.offsetHeight,i=this._containerWidth,n=new o.Point(this._containerLeft,-e-this._containerBottom);this._animated&&n._add(o.DomUtil.getPosition(this._container));var s=t.layerPointToContainerPoint(n),a=o.point(this.options.autoPanPadding),r=o.point(this.options.autoPanPaddingTopLeft||a),h=o.point(this.options.autoPanPaddingBottomRight||a),l=t.getSize(),u=0,c=0;s.x+i+h.x>l.x&&(u=s.x+i-l.x+h.x),s.x-u-r.x<0&&(u=s.x-r.x),s.y+e+h.y>l.y&&(c=s.y+e-l.y+h.y),s.y-c-r.y<0&&(c=s.y-r.y),(u||c)&&t.fire("autopanstart").panBy([u,c])}},_onCloseButtonClick:function(t){this._close(),o.DomEvent.stop(t)}}),o.popup=function(t,e){return new o.Popup(t,e)},o.Map.include({openPopup:function(t,e,i){if(this.closePopup(),!(t instanceof o.Popup)){var n=t;t=new o.Popup(i).setLatLng(e).setContent(n)}return t._isOpen=!0,this._popup=t,this.addLayer(t)},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&(this.removeLayer(t),t._isOpen=!1),this}}),o.Marker.include({openPopup:function(){return this._popup&&this._map&&!this._map.hasLayer(this._popup)&&(this._popup.setLatLng(this._latlng),this._map.openPopup(this._popup)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(){return this._popup&&(this._popup._isOpen?this.closePopup():this.openPopup()),this},bindPopup:function(t,e){var i=o.point(this.options.icon.options.popupAnchor||[0,0]);return i=i.add(o.Popup.prototype.options.offset),e&&e.offset&&(i=i.add(e.offset)),e=o.extend({offset:i},e),this._popupHandlersAdded||(this.on("click",this.togglePopup,this).on("remove",this.closePopup,this).on("move",this._movePopup,this),this._popupHandlersAdded=!0),t instanceof o.Popup?(o.setOptions(t,e),this._popup=t):this._popup=new o.Popup(e,this).setContent(t),this},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},unbindPopup:function(){return this._popup&&(this._popup=null,this.off("click",this.togglePopup,this).off("remove",this.closePopup,this).off("move",this._movePopup,this),this._popupHandlersAdded=!1),this},getPopup:function(){return this._popup},_movePopup:function(t){this._popup.setLatLng(t.latlng)}}),o.LayerGroup=o.Class.extend({initialize:function(t){this._layers={};var e,i;if(t)for(e=0,i=t.length;i>e;e++)this.addLayer(t[e])},addLayer:function(t){var e=this.getLayerId(t);return this._layers[e]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var e=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[e]&&this._map.removeLayer(this._layers[e]),delete this._layers[e],this},hasLayer:function(t){return t?t in this._layers||this.getLayerId(t)in this._layers:!1},clearLayers:function(){return this.eachLayer(this.removeLayer,this),this},invoke:function(t){var e,i,n=Array.prototype.slice.call(arguments,1);for(e in this._layers)i=this._layers[e],i[t]&&i[t].apply(i,n);return this},onAdd:function(t){this._map=t,this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t),this._map=null},addTo:function(t){return t.addLayer(this),this},eachLayer:function(t,e){for(var i in this._layers)t.call(e,this._layers[i]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];for(var e in this._layers)t.push(this._layers[e]);return t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return o.stamp(t)}}),o.layerGroup=function(t){return new o.LayerGroup(t)},o.FeatureGroup=o.LayerGroup.extend({includes:o.Mixin.Events,statics:{EVENTS:"click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose"},addLayer:function(t){return this.hasLayer(t)?this:("on"in t&&t.on(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.addLayer.call(this,t),this._popupContent&&t.bindPopup&&t.bindPopup(this._popupContent,this._popupOptions),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.off(o.FeatureGroup.EVENTS,this._propagateEvent,this),o.LayerGroup.prototype.removeLayer.call(this,t),this._popupContent&&this.invoke("unbindPopup"),this.fire("layerremove",{layer:t})):this},bindPopup:function(t,e){return this._popupContent=t,this._popupOptions=e,this.invoke("bindPopup",t,e)},openPopup:function(t){for(var e in this._layers){this._layers[e].openPopup(t);break}return this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new o.LatLngBounds;return this.eachLayer(function(e){t.extend(e instanceof o.Marker?e.getLatLng():e.getBounds())}),t},_propagateEvent:function(t){t=o.extend({layer:t.target,target:this},t),this.fire(t.type,t)}}),o.featureGroup=function(t){return new o.FeatureGroup(t)},o.Path=o.Class.extend({includes:[o.Mixin.Events],statics:{CLIP_PADDING:function(){var e=o.Browser.mobile?1280:2e3,i=(e/Math.max(t.outerWidth,t.outerHeight)-1)/2;return Math.max(0,Math.min(.5,i))}()},options:{stroke:!0,color:"#0033ff",dashArray:null,lineCap:null,lineJoin:null,weight:5,opacity:.5,fill:!1,fillColor:null,fillOpacity:.2,clickable:!0},initialize:function(t){o.setOptions(this,t)},onAdd:function(t){this._map=t,this._container||(this._initElements(),this._initEvents()),this.projectLatlngs(),this._updatePath(),this._container&&this._map._pathRoot.appendChild(this._container),this.fire("add"),t.on({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},addTo:function(t){return t.addLayer(this),this},onRemove:function(t){t._pathRoot.removeChild(this._container),this.fire("remove"),this._map=null,o.Browser.vml&&(this._container=null,this._stroke=null,this._fill=null),t.off({viewreset:this.projectLatlngs,moveend:this._updatePath},this)},projectLatlngs:function(){},setStyle:function(t){return o.setOptions(this,t),this._container&&this._updateStyle(),this},redraw:function(){return this._map&&(this.projectLatlngs(),this._updatePath()),this}}),o.Map.include({_updatePathViewport:function(){var t=o.Path.CLIP_PADDING,e=this.getSize(),i=o.DomUtil.getPosition(this._mapPane),n=i.multiplyBy(-1)._subtract(e.multiplyBy(t)._round()),s=n.add(e.multiplyBy(1+2*t)._round());this._pathViewport=new o.Bounds(n,s)}}),o.Path.SVG_NS="http://www.w3.org/2000/svg",o.Browser.svg=!(!e.createElementNS||!e.createElementNS(o.Path.SVG_NS,"svg").createSVGRect),o.Path=o.Path.extend({statics:{SVG:o.Browser.svg},bringToFront:function(){var t=this._map._pathRoot,e=this._container;return e&&t.lastChild!==e&&t.appendChild(e),this},bringToBack:function(){var t=this._map._pathRoot,e=this._container,i=t.firstChild;return e&&i!==e&&t.insertBefore(e,i),this},getPathString:function(){},_createElement:function(t){return e.createElementNS(o.Path.SVG_NS,t)},_initElements:function(){this._map._initPathRoot(),this._initPath(),this._initStyle()},_initPath:function(){this._container=this._createElement("g"),this._path=this._createElement("path"),this.options.className&&o.DomUtil.addClass(this._path,this.options.className),this._container.appendChild(this._path)},_initStyle:function(){this.options.stroke&&(this._path.setAttribute("stroke-linejoin","round"),this._path.setAttribute("stroke-linecap","round")),this.options.fill&&this._path.setAttribute("fill-rule","evenodd"),this.options.pointerEvents&&this._path.setAttribute("pointer-events",this.options.pointerEvents),this.options.clickable||this.options.pointerEvents||this._path.setAttribute("pointer-events","none"),this._updateStyle()},_updateStyle:function(){this.options.stroke?(this._path.setAttribute("stroke",this.options.color),this._path.setAttribute("stroke-opacity",this.options.opacity),this._path.setAttribute("stroke-width",this.options.weight),this.options.dashArray?this._path.setAttribute("stroke-dasharray",this.options.dashArray):this._path.removeAttribute("stroke-dasharray"),this.options.lineCap&&this._path.setAttribute("stroke-linecap",this.options.lineCap),this.options.lineJoin&&this._path.setAttribute("stroke-linejoin",this.options.lineJoin)):this._path.setAttribute("stroke","none"),this.options.fill?(this._path.setAttribute("fill",this.options.fillColor||this.options.color),this._path.setAttribute("fill-opacity",this.options.fillOpacity)):this._path.setAttribute("fill","none")},_updatePath:function(){var t=this.getPathString();t||(t="M0 0"),this._path.setAttribute("d",t)},_initEvents:function(){if(this.options.clickable){(o.Browser.svg||!o.Browser.vml)&&o.DomUtil.addClass(this._path,"leaflet-clickable"),o.DomEvent.on(this._container,"click",this._onMouseClick,this);for(var t=["dblclick","mousedown","mouseover","mouseout","mousemove","contextmenu"],e=0;e';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(n){return!1}}(),o.Path=o.Browser.svg||!o.Browser.vml?o.Path:o.Path.extend({statics:{VML:!0,CLIP_PADDING:.02},_createElement:function(){try{return e.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return e.createElement("')}}catch(t){return function(t){return e.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),_initPath:function(){var t=this._container=this._createElement("shape");o.DomUtil.addClass(t,"leaflet-vml-shape"+(this.options.className?" "+this.options.className:"")),this.options.clickable&&o.DomUtil.addClass(t,"leaflet-clickable"),t.coordsize="1 1",this._path=this._createElement("path"),t.appendChild(this._path),this._map._pathRoot.appendChild(t)},_initStyle:function(){this._updateStyle()},_updateStyle:function(){var t=this._stroke,e=this._fill,i=this.options,n=this._container;n.stroked=i.stroke,n.filled=i.fill,i.stroke?(t||(t=this._stroke=this._createElement("stroke"),t.endcap="round",n.appendChild(t)),t.weight=i.weight+"px",t.color=i.color,t.opacity=i.opacity,t.dashStyle=i.dashArray?o.Util.isArray(i.dashArray)?i.dashArray.join(" "):i.dashArray.replace(/( *, *)/g," "):"",i.lineCap&&(t.endcap=i.lineCap.replace("butt","flat")),i.lineJoin&&(t.joinstyle=i.lineJoin)):t&&(n.removeChild(t),this._stroke=null),i.fill?(e||(e=this._fill=this._createElement("fill"),n.appendChild(e)),e.color=i.fillColor||i.color,e.opacity=i.fillOpacity):e&&(n.removeChild(e),this._fill=null)},_updatePath:function(){var t=this._container.style;t.display="none",this._path.v=this.getPathString()+" ",t.display=""}}),o.Map.include(o.Browser.svg||!o.Browser.vml?{}:{_initPathRoot:function(){if(!this._pathRoot){var t=this._pathRoot=e.createElement("div");t.className="leaflet-vml-container",this._panes.overlayPane.appendChild(t),this.on("moveend",this._updatePathViewport),this._updatePathViewport()}}}),o.Browser.canvas=function(){return!!e.createElement("canvas").getContext}(),o.Path=o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?o.Path:o.Path.extend({statics:{CANVAS:!0,SVG:!1},redraw:function(){return this._map&&(this.projectLatlngs(),this._requestUpdate()),this},setStyle:function(t){return o.setOptions(this,t),this._map&&(this._updateStyle(),this._requestUpdate()),this},onRemove:function(t){t.off("viewreset",this.projectLatlngs,this).off("moveend",this._updatePath,this),this.options.clickable&&(this._map.off("click",this._onClick,this),this._map.off("mousemove",this._onMouseMove,this)),this._requestUpdate(),this._map=null},_requestUpdate:function(){this._map&&!o.Path._updateRequest&&(o.Path._updateRequest=o.Util.requestAnimFrame(this._fireMapMoveEnd,this._map))},_fireMapMoveEnd:function(){o.Path._updateRequest=null,this.fire("moveend")},_initElements:function(){this._map._initPathRoot(),this._ctx=this._map._canvasCtx},_updateStyle:function(){var t=this.options;t.stroke&&(this._ctx.lineWidth=t.weight,this._ctx.strokeStyle=t.color),t.fill&&(this._ctx.fillStyle=t.fillColor||t.color)},_drawPath:function(){var t,e,i,n,s,a;for(this._ctx.beginPath(),t=0,i=this._parts.length;i>t;t++){for(e=0,n=this._parts[t].length;n>e;e++)s=this._parts[t][e],a=(0===e?"move":"line")+"To",this._ctx[a](s.x,s.y);this instanceof o.Polygon&&this._ctx.closePath()}},_checkIfEmpty:function(){return!this._parts.length},_updatePath:function(){if(!this._checkIfEmpty()){var t=this._ctx,e=this.options;this._drawPath(),t.save(),this._updateStyle(),e.fill&&(t.globalAlpha=e.fillOpacity,t.fill()),e.stroke&&(t.globalAlpha=e.opacity,t.stroke()),t.restore()}},_initEvents:function(){this.options.clickable&&(this._map.on("mousemove",this._onMouseMove,this),this._map.on("click",this._onClick,this))},_onClick:function(t){this._containsPoint(t.layerPoint)&&this.fire("click",t)},_onMouseMove:function(t){this._map&&!this._map._animatingZoom&&(this._containsPoint(t.layerPoint)?(this._ctx.canvas.style.cursor="pointer",this._mouseInside=!0,this.fire("mouseover",t)):this._mouseInside&&(this._ctx.canvas.style.cursor="",this._mouseInside=!1,this.fire("mouseout",t)))}}),o.Map.include(o.Path.SVG&&!t.L_PREFER_CANVAS||!o.Browser.canvas?{}:{_initPathRoot:function(){var t,i=this._pathRoot;i||(i=this._pathRoot=e.createElement("canvas"),i.style.position="absolute",t=this._canvasCtx=i.getContext("2d"),t.lineCap="round",t.lineJoin="round",this._panes.overlayPane.appendChild(i),this.options.zoomAnimation&&(this._pathRoot.className="leaflet-zoom-animated",this.on("zoomanim",this._animatePathZoom),this.on("zoomend",this._endPathZoom)),this.on("moveend",this._updateCanvasViewport),this._updateCanvasViewport())},_updateCanvasViewport:function(){if(!this._pathZooming){this._updatePathViewport();var t=this._pathViewport,e=t.min,i=t.max.subtract(e),n=this._pathRoot;o.DomUtil.setPosition(n,e),n.width=i.x,n.height=i.y,n.getContext("2d").translate(-e.x,-e.y)}}}),o.LineUtil={simplify:function(t,e){if(!e||!t.length)return t.slice();var i=e*e;return t=this._reducePoints(t,i),t=this._simplifyDP(t,i)},pointToSegmentDistance:function(t,e,i){return Math.sqrt(this._sqClosestPointOnSegment(t,e,i,!0))},closestPointOnSegment:function(t,e,i){return this._sqClosestPointOnSegment(t,e,i)},_simplifyDP:function(t,e){var n=t.length,o=typeof Uint8Array!=i+""?Uint8Array:Array,s=new o(n);s[0]=s[n-1]=1,this._simplifyDPStep(t,s,e,0,n-1);var a,r=[];for(a=0;n>a;a++)s[a]&&r.push(t[a]);return r},_simplifyDPStep:function(t,e,i,n,o){var s,a,r,h=0;for(a=n+1;o-1>=a;a++)r=this._sqClosestPointOnSegment(t[a],t[n],t[o],!0),r>h&&(s=a,h=r);h>i&&(e[s]=1,this._simplifyDPStep(t,e,i,n,s),this._simplifyDPStep(t,e,i,s,o))},_reducePoints:function(t,e){for(var i=[t[0]],n=1,o=0,s=t.length;s>n;n++)this._sqDist(t[n],t[o])>e&&(i.push(t[n]),o=n);return s-1>o&&i.push(t[s-1]),i},clipSegment:function(t,e,i,n){var o,s,a,r=n?this._lastCode:this._getBitCode(t,i),h=this._getBitCode(e,i);for(this._lastCode=h;;){if(!(r|h))return[t,e];if(r&h)return!1;o=r||h,s=this._getEdgeIntersection(t,e,o,i),a=this._getBitCode(s,i),o===r?(t=s,r=a):(e=s,h=a)}},_getEdgeIntersection:function(t,e,i,n){var s=e.x-t.x,a=e.y-t.y,r=n.min,h=n.max;return 8&i?new o.Point(t.x+s*(h.y-t.y)/a,h.y):4&i?new o.Point(t.x+s*(r.y-t.y)/a,r.y):2&i?new o.Point(h.x,t.y+a*(h.x-t.x)/s):1&i?new o.Point(r.x,t.y+a*(r.x-t.x)/s):void 0},_getBitCode:function(t,e){var i=0;return t.xe.max.x&&(i|=2),t.ye.max.y&&(i|=8),i},_sqDist:function(t,e){var i=e.x-t.x,n=e.y-t.y;return i*i+n*n},_sqClosestPointOnSegment:function(t,e,i,n){var s,a=e.x,r=e.y,h=i.x-a,l=i.y-r,u=h*h+l*l;return u>0&&(s=((t.x-a)*h+(t.y-r)*l)/u,s>1?(a=i.x,r=i.y):s>0&&(a+=h*s,r+=l*s)),h=t.x-a,l=t.y-r,n?h*h+l*l:new o.Point(a,r)}},o.Polyline=o.Path.extend({initialize:function(t,e){o.Path.prototype.initialize.call(this,e),this._latlngs=this._convertLatLngs(t)},options:{smoothFactor:1,noClip:!1},projectLatlngs:function(){this._originalPoints=[];for(var t=0,e=this._latlngs.length;e>t;t++)this._originalPoints[t]=this._map.latLngToLayerPoint(this._latlngs[t])},getPathString:function(){for(var t=0,e=this._parts.length,i="";e>t;t++)i+=this._getPathPartStr(this._parts[t]);return i},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._latlngs=this._convertLatLngs(t),this.redraw()},addLatLng:function(t){return this._latlngs.push(o.latLng(t)),this.redraw()},spliceLatLngs:function(){var t=[].splice.apply(this._latlngs,arguments);return this._convertLatLngs(this._latlngs,!0),this.redraw(),t},closestLayerPoint:function(t){for(var e,i,n=1/0,s=this._parts,a=null,r=0,h=s.length;h>r;r++)for(var l=s[r],u=1,c=l.length;c>u;u++){e=l[u-1],i=l[u];var d=o.LineUtil._sqClosestPointOnSegment(t,e,i,!0);n>d&&(n=d,a=o.LineUtil._sqClosestPointOnSegment(t,e,i))}return a&&(a.distance=Math.sqrt(n)),a},getBounds:function(){return new o.LatLngBounds(this.getLatLngs())},_convertLatLngs:function(t,e){var i,n,s=e?t:[];for(i=0,n=t.length;n>i;i++){if(o.Util.isArray(t[i])&&"number"!=typeof t[i][0])return;s[i]=o.latLng(t[i])}return s},_initEvents:function(){o.Path.prototype._initEvents.call(this)},_getPathPartStr:function(t){for(var e,i=o.Path.VML,n=0,s=t.length,a="";s>n;n++)e=t[n],i&&e._round(),a+=(n?"L":"M")+e.x+" "+e.y;return a},_clipPoints:function(){var t,e,i,n=this._originalPoints,s=n.length;if(this.options.noClip)return this._parts=[n],void 0;this._parts=[];var a=this._parts,r=this._map._pathViewport,h=o.LineUtil;for(t=0,e=0;s-1>t;t++)i=h.clipSegment(n[t],n[t+1],r,t),i&&(a[e]=a[e]||[],a[e].push(i[0]),(i[1]!==n[t+1]||t===s-2)&&(a[e].push(i[1]),e++))},_simplifyPoints:function(){for(var t=this._parts,e=o.LineUtil,i=0,n=t.length;n>i;i++)t[i]=e.simplify(t[i],this.options.smoothFactor)},_updatePath:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),o.Path.prototype._updatePath.call(this))}}),o.polyline=function(t,e){return new o.Polyline(t,e)},o.PolyUtil={},o.PolyUtil.clipPolygon=function(t,e){var i,n,s,a,r,h,l,u,c,d=[1,4,2,8],p=o.LineUtil;for(n=0,l=t.length;l>n;n++)t[n]._code=p._getBitCode(t[n],e);for(a=0;4>a;a++){for(u=d[a],i=[],n=0,l=t.length,s=l-1;l>n;s=n++)r=t[n],h=t[s],r._code&u?h._code&u||(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)):(h._code&u&&(c=p._getEdgeIntersection(h,r,u,e),c._code=p._getBitCode(c,e),i.push(c)),i.push(r));t=i}return t},o.Polygon=o.Polyline.extend({options:{fill:!0},initialize:function(t,e){o.Polyline.prototype.initialize.call(this,t,e),this._initWithHoles(t)},_initWithHoles:function(t){var e,i,n;if(t&&o.Util.isArray(t[0])&&"number"!=typeof t[0][0])for(this._latlngs=this._convertLatLngs(t[0]),this._holes=t.slice(1),e=0,i=this._holes.length;i>e;e++)n=this._holes[e]=this._convertLatLngs(this._holes[e]),n[0].equals(n[n.length-1])&&n.pop();t=this._latlngs,t.length>=2&&t[0].equals(t[t.length-1])&&t.pop()},projectLatlngs:function(){if(o.Polyline.prototype.projectLatlngs.call(this),this._holePoints=[],this._holes){var t,e,i,n;for(t=0,i=this._holes.length;i>t;t++)for(this._holePoints[t]=[],e=0,n=this._holes[t].length;n>e;e++)this._holePoints[t][e]=this._map.latLngToLayerPoint(this._holes[t][e])}},setLatLngs:function(t){return t&&o.Util.isArray(t[0])&&"number"!=typeof t[0][0]?(this._initWithHoles(t),this.redraw()):o.Polyline.prototype.setLatLngs.call(this,t)},_clipPoints:function(){var t=this._originalPoints,e=[];if(this._parts=[t].concat(this._holePoints),!this.options.noClip){for(var i=0,n=this._parts.length;n>i;i++){var s=o.PolyUtil.clipPolygon(this._parts[i],this._map._pathViewport);s.length&&e.push(s)}this._parts=e}},_getPathPartStr:function(t){var e=o.Polyline.prototype._getPathPartStr.call(this,t);return e+(o.Browser.svg?"z":"x")}}),o.polygon=function(t,e){return new o.Polygon(t,e)},function(){function t(t){return o.FeatureGroup.extend({initialize:function(t,e){this._layers={},this._options=e,this.setLatLngs(t)},setLatLngs:function(e){var i=0,n=e.length;for(this.eachLayer(function(t){n>i?t.setLatLngs(e[i++]):this.removeLayer(t)},this);n>i;)this.addLayer(new t(e[i++],this._options));return this},getLatLngs:function(){var t=[];return this.eachLayer(function(e){t.push(e.getLatLngs())}),t}})}o.MultiPolyline=t(o.Polyline),o.MultiPolygon=t(o.Polygon),o.multiPolyline=function(t,e){return new o.MultiPolyline(t,e)},o.multiPolygon=function(t,e){return new o.MultiPolygon(t,e)}}(),o.Rectangle=o.Polygon.extend({initialize:function(t,e){o.Polygon.prototype.initialize.call(this,this._boundsToLatLngs(t),e)},setBounds:function(t){this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return t=o.latLngBounds(t),[t.getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}}),o.rectangle=function(t,e){return new o.Rectangle(t,e)},o.Circle=o.Path.extend({initialize:function(t,e,i){o.Path.prototype.initialize.call(this,i),this._latlng=o.latLng(t),this._mRadius=e},options:{fill:!0},setLatLng:function(t){return this._latlng=o.latLng(t),this.redraw()},setRadius:function(t){return this._mRadius=t,this.redraw()},projectLatlngs:function(){var t=this._getLngRadius(),e=this._latlng,i=this._map.latLngToLayerPoint([e.lat,e.lng-t]);this._point=this._map.latLngToLayerPoint(e),this._radius=Math.max(this._point.x-i.x,1)},getBounds:function(){var t=this._getLngRadius(),e=this._mRadius/40075017*360,i=this._latlng;return new o.LatLngBounds([i.lat-e,i.lng-t],[i.lat+e,i.lng+t])},getLatLng:function(){return this._latlng},getPathString:function(){var t=this._point,e=this._radius;return this._checkIfEmpty()?"":o.Browser.svg?"M"+t.x+","+(t.y-e)+"A"+e+","+e+",0,1,1,"+(t.x-.1)+","+(t.y-e)+" z":(t._round(),e=Math.round(e),"AL "+t.x+","+t.y+" "+e+","+e+" 0,23592600")},getRadius:function(){return this._mRadius},_getLatRadius:function(){return this._mRadius/40075017*360},_getLngRadius:function(){return this._getLatRadius()/Math.cos(o.LatLng.DEG_TO_RAD*this._latlng.lat)},_checkIfEmpty:function(){if(!this._map)return!1;var t=this._map._pathViewport,e=this._radius,i=this._point;return i.x-e>t.max.x||i.y-e>t.max.y||i.x+ei;i++)for(l=this._parts[i],n=0,r=l.length,s=r-1;r>n;s=n++)if((e||0!==n)&&(h=o.LineUtil.pointToSegmentDistance(t,l[s],l[n]),u>=h))return!0;return!1}}:{}),o.Polygon.include(o.Path.CANVAS?{_containsPoint:function(t){var e,i,n,s,a,r,h,l,u=!1;if(o.Polyline.prototype._containsPoint.call(this,t,!0))return!0;for(s=0,h=this._parts.length;h>s;s++)for(e=this._parts[s],a=0,l=e.length,r=l-1;l>a;r=a++)i=e[a],n=e[r],i.y>t.y!=n.y>t.y&&t.x<(n.x-i.x)*(t.y-i.y)/(n.y-i.y)+i.x&&(u=!u);return u}}:{}),o.Circle.include(o.Path.CANVAS?{_drawPath:function(){var t=this._point;this._ctx.beginPath(),this._ctx.arc(t.x,t.y,this._radius,0,2*Math.PI,!1)},_containsPoint:function(t){var e=this._point,i=this.options.stroke?this.options.weight/2:0;return t.distanceTo(e)<=this._radius+i}}:{}),o.CircleMarker.include(o.Path.CANVAS?{_updateStyle:function(){o.Path.prototype._updateStyle.call(this)}}:{}),o.GeoJSON=o.FeatureGroup.extend({initialize:function(t,e){o.setOptions(this,e),this._layers={},t&&this.addData(t)},addData:function(t){var e,i,n,s=o.Util.isArray(t)?t:t.features;if(s){for(e=0,i=s.length;i>e;e++)n=s[e],(n.geometries||n.geometry||n.features||n.coordinates)&&this.addData(s[e]);return this}var a=this.options;if(!a.filter||a.filter(t)){var r=o.GeoJSON.geometryToLayer(t,a.pointToLayer,a.coordsToLatLng,a);return r.feature=o.GeoJSON.asFeature(t),r.defaultOptions=r.options,this.resetStyle(r),a.onEachFeature&&a.onEachFeature(t,r),this.addLayer(r)}},resetStyle:function(t){var e=this.options.style;e&&(o.Util.extend(t.options,t.defaultOptions),this._setLayerStyle(t,e))},setStyle:function(t){this.eachLayer(function(e){this._setLayerStyle(e,t)},this)},_setLayerStyle:function(t,e){"function"==typeof e&&(e=e(t.feature)),t.setStyle&&t.setStyle(e)}}),o.extend(o.GeoJSON,{geometryToLayer:function(t,e,i,n){var s,a,r,h,l="Feature"===t.type?t.geometry:t,u=l.coordinates,c=[];switch(i=i||this.coordsToLatLng,l.type){case"Point":return s=i(u),e?e(t,s):new o.Marker(s);case"MultiPoint":for(r=0,h=u.length;h>r;r++)s=i(u[r]),c.push(e?e(t,s):new o.Marker(s));return new o.FeatureGroup(c);case"LineString":return a=this.coordsToLatLngs(u,0,i),new o.Polyline(a,n);case"Polygon":if(2===u.length&&!u[1].length)throw new Error("Invalid GeoJSON object.");return a=this.coordsToLatLngs(u,1,i),new o.Polygon(a,n);case"MultiLineString":return a=this.coordsToLatLngs(u,1,i),new o.MultiPolyline(a,n);case"MultiPolygon":return a=this.coordsToLatLngs(u,2,i),new o.MultiPolygon(a,n);case"GeometryCollection":for(r=0,h=l.geometries.length;h>r;r++)c.push(this.geometryToLayer({geometry:l.geometries[r],type:"Feature",properties:t.properties},e,i,n));return new o.FeatureGroup(c);default:throw new Error("Invalid GeoJSON object.")}},coordsToLatLng:function(t){return new o.LatLng(t[1],t[0],t[2])},coordsToLatLngs:function(t,e,i){var n,o,s,a=[];for(o=0,s=t.length;s>o;o++)n=e?this.coordsToLatLngs(t[o],e-1,i):(i||this.coordsToLatLng)(t[o]),a.push(n);return a},latLngToCoords:function(t){var e=[t.lng,t.lat];return t.alt!==i&&e.push(t.alt),e},latLngsToCoords:function(t){for(var e=[],i=0,n=t.length;n>i;i++)e.push(o.GeoJSON.latLngToCoords(t[i]));return e},getFeature:function(t,e){return t.feature?o.extend({},t.feature,{geometry:e}):o.GeoJSON.asFeature(e)},asFeature:function(t){return"Feature"===t.type?t:{type:"Feature",properties:{},geometry:t}}});var a={toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:"Point",coordinates:o.GeoJSON.latLngToCoords(this.getLatLng())})}};o.Marker.include(a),o.Circle.include(a),o.CircleMarker.include(a),o.Polyline.include({toGeoJSON:function(){return o.GeoJSON.getFeature(this,{type:"LineString",coordinates:o.GeoJSON.latLngsToCoords(this.getLatLngs())})}}),o.Polygon.include({toGeoJSON:function(){var t,e,i,n=[o.GeoJSON.latLngsToCoords(this.getLatLngs())];if(n[0].push(n[0][0]),this._holes)for(t=0,e=this._holes.length;e>t;t++)i=o.GeoJSON.latLngsToCoords(this._holes[t]),i.push(i[0]),n.push(i);return o.GeoJSON.getFeature(this,{type:"Polygon",coordinates:n})}}),function(){function t(t){return function(){var e=[];return this.eachLayer(function(t){e.push(t.toGeoJSON().geometry.coordinates)}),o.GeoJSON.getFeature(this,{type:t,coordinates:e})}}o.MultiPolyline.include({toGeoJSON:t("MultiLineString")}),o.MultiPolygon.include({toGeoJSON:t("MultiPolygon")}),o.LayerGroup.include({toGeoJSON:function(){var e,i=this.feature&&this.feature.geometry,n=[];if(i&&"MultiPoint"===i.type)return t("MultiPoint").call(this);var s=i&&"GeometryCollection"===i.type;return this.eachLayer(function(t){t.toGeoJSON&&(e=t.toGeoJSON(),n.push(s?e.geometry:o.GeoJSON.asFeature(e)))}),s?o.GeoJSON.getFeature(this,{geometries:n,type:"GeometryCollection"}):{type:"FeatureCollection",features:n}}})}(),o.geoJson=function(t,e){return new o.GeoJSON(t,e)},o.DomEvent={addListener:function(t,e,i,n){var s,a,r,h=o.stamp(i),l="_leaflet_"+e+h;return t[l]?this:(s=function(e){return i.call(n||t,e||o.DomEvent._getEvent())},o.Browser.pointer&&0===e.indexOf("touch")?this.addPointerListener(t,e,s,h):(o.Browser.touch&&"dblclick"===e&&this.addDoubleTapListener&&this.addDoubleTapListener(t,s,h),"addEventListener"in t?"mousewheel"===e?(t.addEventListener("DOMMouseScroll",s,!1),t.addEventListener(e,s,!1)):"mouseenter"===e||"mouseleave"===e?(a=s,r="mouseenter"===e?"mouseover":"mouseout",s=function(e){return o.DomEvent._checkMouse(t,e)?a(e):void 0},t.addEventListener(r,s,!1)):"click"===e&&o.Browser.android?(a=s,s=function(t){return o.DomEvent._filterClick(t,a)},t.addEventListener(e,s,!1)):t.addEventListener(e,s,!1):"attachEvent"in t&&t.attachEvent("on"+e,s),t[l]=s,this))},removeListener:function(t,e,i){var n=o.stamp(i),s="_leaflet_"+e+n,a=t[s];return a?(o.Browser.pointer&&0===e.indexOf("touch")?this.removePointerListener(t,e,n):o.Browser.touch&&"dblclick"===e&&this.removeDoubleTapListener?this.removeDoubleTapListener(t,n):"removeEventListener"in t?"mousewheel"===e?(t.removeEventListener("DOMMouseScroll",a,!1),t.removeEventListener(e,a,!1)):"mouseenter"===e||"mouseleave"===e?t.removeEventListener("mouseenter"===e?"mouseover":"mouseout",a,!1):t.removeEventListener(e,a,!1):"detachEvent"in t&&t.detachEvent("on"+e,a),t[s]=null,this):this},stopPropagation:function(t){return t.stopPropagation?t.stopPropagation():t.cancelBubble=!0,o.DomEvent._skipped(t),this},disableScrollPropagation:function(t){var e=o.DomEvent.stopPropagation;return o.DomEvent.on(t,"mousewheel",e).on(t,"MozMousePixelScroll",e)},disableClickPropagation:function(t){for(var e=o.DomEvent.stopPropagation,i=o.Draggable.START.length-1;i>=0;i--)o.DomEvent.on(t,o.Draggable.START[i],e);return o.DomEvent.on(t,"click",o.DomEvent._fakeStop).on(t,"dblclick",e)},preventDefault:function(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this},stop:function(t){return o.DomEvent.preventDefault(t).stopPropagation(t)},getMousePosition:function(t,i){var n=e.body,s=e.documentElement,a=o.DomUtil.documentIsLtr()?t.pageX?t.pageX-n.scrollLeft-s.scrollLeft:t.clientX:o.Browser.gecko?t.pageX-n.scrollLeft-s.scrollLeft:t.pageX?t.pageX-n.scrollLeft+s.scrollLeft:t.clientX,r=t.pageY?t.pageY-n.scrollTop-s.scrollTop:t.clientY,h=new o.Point(a,r);if(!i)return h;var l=i.getBoundingClientRect(),u=l.left-i.clientLeft,c=l.top-i.clientTop;return h._subtract(new o.Point(u,c))},getWheelDelta:function(t){var e=0;return t.wheelDelta&&(e=t.wheelDelta/120),t.detail&&(e=-t.detail/3),e},_skipEvents:{},_fakeStop:function(t){o.DomEvent._skipEvents[t.type]=!0},_skipped:function(t){var e=this._skipEvents[t.type];return this._skipEvents[t.type]=!1,e},_checkMouse:function(t,e){var i=e.relatedTarget;if(!i)return!0;try{for(;i&&i!==t;)i=i.parentNode}catch(n){return!1}return i!==t},_getEvent:function(){var e=t.event;if(!e)for(var i=arguments.callee.caller;i&&(e=i.arguments[0],!e||t.Event!==e.constructor);)i=i.caller;return e},_filterClick:function(t,e){var i=t.timeStamp||t.originalEvent.timeStamp,n=o.DomEvent._lastClick&&i-o.DomEvent._lastClick;return n&&n>100&&1e3>n||t.target._simulatedClick&&!t._simulated?(o.DomEvent.stop(t),void 0):(o.DomEvent._lastClick=i,e(t))}},o.DomEvent.on=o.DomEvent.addListener,o.DomEvent.off=o.DomEvent.removeListener,o.Draggable=o.Class.extend({includes:o.Mixin.Events,statics:{START:o.Browser.touch?["touchstart","mousedown"]:["mousedown"],END:{mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},MOVE:{mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"}},initialize:function(t,e){this._element=t,this._dragStartTarget=e||t},enable:function(){if(!this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.on(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!0}},disable:function(){if(this._enabled){for(var t=o.Draggable.START.length-1;t>=0;t--)o.DomEvent.off(this._dragStartTarget,o.Draggable.START[t],this._onDown,this);this._enabled=!1,this._moved=!1}},_onDown:function(t){if(this._moved=!1,!(t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||(o.DomEvent.stopPropagation(t),o.Draggable._disabled||(o.DomUtil.disableImageDrag(),o.DomUtil.disableTextSelection(),this._moving)))){var i=t.touches?t.touches[0]:t;this._startPoint=new o.Point(i.clientX,i.clientY),this._startPos=this._newPos=o.DomUtil.getPosition(this._element),o.DomEvent.on(e,o.Draggable.MOVE[t.type],this._onMove,this).on(e,o.Draggable.END[t.type],this._onUp,this)}},_onMove:function(t){if(t.touches&&t.touches.length>1)return this._moved=!0,void 0;var i=t.touches&&1===t.touches.length?t.touches[0]:t,n=new o.Point(i.clientX,i.clientY),s=n.subtract(this._startPoint);(s.x||s.y)&&(o.DomEvent.preventDefault(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=o.DomUtil.getPosition(this._element).subtract(s),o.DomUtil.addClass(e.body,"leaflet-dragging"),o.DomUtil.addClass(t.target||t.srcElement,"leaflet-drag-target")),this._newPos=this._startPos.add(s),this._moving=!0,o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updatePosition,this,!0,this._dragStartTarget))},_updatePosition:function(){this.fire("predrag"),o.DomUtil.setPosition(this._element,this._newPos),this.fire("drag")},_onUp:function(t){o.DomUtil.removeClass(e.body,"leaflet-dragging"),o.DomUtil.removeClass(t.target||t.srcElement,"leaflet-drag-target");for(var i in o.Draggable.MOVE)o.DomEvent.off(e,o.Draggable.MOVE[i],this._onMove).off(e,o.Draggable.END[i],this._onUp);o.DomUtil.enableImageDrag(),o.DomUtil.enableTextSelection(),this._moved&&this._moving&&(o.Util.cancelAnimFrame(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1}}),o.Handler=o.Class.extend({initialize:function(t){this._map=t},enable:function(){this._enabled||(this._enabled=!0,this.addHooks())},disable:function(){this._enabled&&(this._enabled=!1,this.removeHooks())},enabled:function(){return!!this._enabled}}),o.Map.mergeOptions({dragging:!0,inertia:!o.Browser.android23,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,inertiaThreshold:o.Browser.touch?32:18,easeLinearity:.25,worldCopyJump:!1}),o.Map.Drag=o.Handler.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new o.Draggable(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDrag,this),t.on("viewreset",this._onViewReset,this),t.whenReady(this._onViewReset,this))}this._draggable.enable()},removeHooks:function(){this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){var t=this._map;t._panAnim&&t._panAnim.stop(),t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(){if(this._map.options.inertia){var t=this._lastTime=+new Date,e=this._lastPos=this._draggable._newPos;this._positions.push(e),this._times.push(t),t-this._times[0]>200&&(this._positions.shift(),this._times.shift())}this._map.fire("move").fire("drag")},_onViewReset:function(){var t=this._map.getSize()._divideBy(2),e=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=e.subtract(t).x,this._worldWidth=this._map.project([0,180]).x},_onPreDrag:function(){var t=this._worldWidth,e=Math.round(t/2),i=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-e+i)%t+e-i,s=(n+e+i)%t-e-i,a=Math.abs(o+i)i.inertiaThreshold||!this._positions[0];if(e.fire("dragend",t),s)e.fire("moveend");else{var a=this._lastPos.subtract(this._positions[0]),r=(this._lastTime+n-this._times[0])/1e3,h=i.easeLinearity,l=a.multiplyBy(h/r),u=l.distanceTo([0,0]),c=Math.min(i.inertiaMaxSpeed,u),d=l.multiplyBy(c/u),p=c/(i.inertiaDeceleration*h),_=d.multiplyBy(-p/2).round();_.x&&_.y?(_=e._limitOffset(_,e.options.maxBounds),o.Util.requestAnimFrame(function(){e.panBy(_,{duration:p,easeLinearity:h,noMoveStart:!0})})):e.fire("moveend")}}}),o.Map.addInitHook("addHandler","dragging",o.Map.Drag),o.Map.mergeOptions({doubleClickZoom:!0}),o.Map.DoubleClickZoom=o.Handler.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var e=this._map,i=e.getZoom()+(t.originalEvent.shiftKey?-1:1);"center"===e.options.doubleClickZoom?e.setZoom(i):e.setZoomAround(t.containerPoint,i)}}),o.Map.addInitHook("addHandler","doubleClickZoom",o.Map.DoubleClickZoom),o.Map.mergeOptions({scrollWheelZoom:!0}),o.Map.ScrollWheelZoom=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"mousewheel",this._onWheelScroll,this),o.DomEvent.on(this._map._container,"MozMousePixelScroll",o.DomEvent.preventDefault),this._delta=0},removeHooks:function(){o.DomEvent.off(this._map._container,"mousewheel",this._onWheelScroll),o.DomEvent.off(this._map._container,"MozMousePixelScroll",o.DomEvent.preventDefault)},_onWheelScroll:function(t){var e=o.DomEvent.getWheelDelta(t);this._delta+=e,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var i=Math.max(40-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(o.bind(this._performZoom,this),i),o.DomEvent.preventDefault(t),o.DomEvent.stopPropagation(t)},_performZoom:function(){var t=this._map,e=this._delta,i=t.getZoom();e=e>0?Math.ceil(e):Math.floor(e),e=Math.max(Math.min(e,4),-4),e=t._limitZoom(i+e)-i,this._delta=0,this._startTime=null,e&&("center"===t.options.scrollWheelZoom?t.setZoom(i+e):t.setZoomAround(this._lastMousePos,i+e))}}),o.Map.addInitHook("addHandler","scrollWheelZoom",o.Map.ScrollWheelZoom),o.extend(o.DomEvent,{_touchstart:o.Browser.msPointer?"MSPointerDown":o.Browser.pointer?"pointerdown":"touchstart",_touchend:o.Browser.msPointer?"MSPointerUp":o.Browser.pointer?"pointerup":"touchend",addDoubleTapListener:function(t,i,n){function s(t){var e;if(o.Browser.pointer?(_.push(t.pointerId),e=_.length):e=t.touches.length,!(e>1)){var i=Date.now(),n=i-(r||i);h=t.touches?t.touches[0]:t,l=n>0&&u>=n,r=i}}function a(t){if(o.Browser.pointer){var e=_.indexOf(t.pointerId);if(-1===e)return;_.splice(e,1)}if(l){if(o.Browser.pointer){var n,s={};for(var a in h)n=h[a],s[a]="function"==typeof n?n.bind(h):n;h=s}h.type="dblclick",i(h),r=null}}var r,h,l=!1,u=250,c="_leaflet_",d=this._touchstart,p=this._touchend,_=[];t[c+d+n]=s,t[c+p+n]=a;var m=o.Browser.pointer?e.documentElement:t;return t.addEventListener(d,s,!1),m.addEventListener(p,a,!1),o.Browser.pointer&&m.addEventListener(o.DomEvent.POINTER_CANCEL,a,!1),this},removeDoubleTapListener:function(t,i){var n="_leaflet_";return t.removeEventListener(this._touchstart,t[n+this._touchstart+i],!1),(o.Browser.pointer?e.documentElement:t).removeEventListener(this._touchend,t[n+this._touchend+i],!1),o.Browser.pointer&&e.documentElement.removeEventListener(o.DomEvent.POINTER_CANCEL,t[n+this._touchend+i],!1),this}}),o.extend(o.DomEvent,{POINTER_DOWN:o.Browser.msPointer?"MSPointerDown":"pointerdown",POINTER_MOVE:o.Browser.msPointer?"MSPointerMove":"pointermove",POINTER_UP:o.Browser.msPointer?"MSPointerUp":"pointerup",POINTER_CANCEL:o.Browser.msPointer?"MSPointerCancel":"pointercancel",_pointers:[],_pointerDocumentListener:!1,addPointerListener:function(t,e,i,n){switch(e){case"touchstart":return this.addPointerListenerStart(t,e,i,n);case"touchend":return this.addPointerListenerEnd(t,e,i,n);case"touchmove":return this.addPointerListenerMove(t,e,i,n);default:throw"Unknown touch event type"}},addPointerListenerStart:function(t,i,n,s){var a="_leaflet_",r=this._pointers,h=function(t){o.DomEvent.preventDefault(t); +for(var e=!1,i=0;i1))&&(this._moved||(o.DomUtil.addClass(e._mapPane,"leaflet-touching"),e.fire("movestart").fire("zoomstart"),this._moved=!0),o.Util.cancelAnimFrame(this._animRequest),this._animRequest=o.Util.requestAnimFrame(this._updateOnMove,this,!0,this._map._container),o.DomEvent.preventDefault(t))}},_updateOnMove:function(){var t=this._map,e=this._getScaleOrigin(),i=t.layerPointToLatLng(e),n=t.getScaleZoom(this._scale);t._animateZoom(i,n,this._startCenter,this._scale,this._delta)},_onTouchEnd:function(){if(!this._moved||!this._zooming)return this._zooming=!1,void 0;var t=this._map;this._zooming=!1,o.DomUtil.removeClass(t._mapPane,"leaflet-touching"),o.Util.cancelAnimFrame(this._animRequest),o.DomEvent.off(e,"touchmove",this._onTouchMove).off(e,"touchend",this._onTouchEnd);var i=this._getScaleOrigin(),n=t.layerPointToLatLng(i),s=t.getZoom(),a=t.getScaleZoom(this._scale)-s,r=a>0?Math.ceil(a):Math.floor(a),h=t._limitZoom(s+r),l=t.getZoomScale(h)/this._scale;t._animateZoom(n,h,i,l)},_getScaleOrigin:function(){var t=this._centerOffset.subtract(this._delta).divideBy(this._scale);return this._startCenter.add(t)}}),o.Map.addInitHook("addHandler","touchZoom",o.Map.TouchZoom),o.Map.mergeOptions({tap:!0,tapTolerance:15}),o.Map.Tap=o.Handler.extend({addHooks:function(){o.DomEvent.on(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){o.DomEvent.off(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(o.DomEvent.preventDefault(t),this._fireClick=!0,t.touches.length>1)return this._fireClick=!1,clearTimeout(this._holdTimeout),void 0;var i=t.touches[0],n=i.target;this._startPos=this._newPos=new o.Point(i.clientX,i.clientY),n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.addClass(n,"leaflet-active"),this._holdTimeout=setTimeout(o.bind(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),o.DomEvent.on(e,"touchmove",this._onMove,this).on(e,"touchend",this._onUp,this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),o.DomEvent.off(e,"touchmove",this._onMove,this).off(e,"touchend",this._onUp,this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],n=i.target;n&&n.tagName&&"a"===n.tagName.toLowerCase()&&o.DomUtil.removeClass(n,"leaflet-active"),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var e=t.touches[0];this._newPos=new o.Point(e.clientX,e.clientY)},_simulateEvent:function(i,n){var o=e.createEvent("MouseEvents");o._simulated=!0,n.target._simulatedClick=!0,o.initMouseEvent(i,!0,!0,t,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(o)}}),o.Browser.touch&&!o.Browser.pointer&&o.Map.addInitHook("addHandler","tap",o.Map.Tap),o.Map.mergeOptions({boxZoom:!0}),o.Map.BoxZoom=o.Handler.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._moved=!1},addHooks:function(){o.DomEvent.on(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){o.DomEvent.off(this._container,"mousedown",this._onMouseDown),this._moved=!1},moved:function(){return this._moved},_onMouseDown:function(t){return this._moved=!1,!t.shiftKey||1!==t.which&&1!==t.button?!1:(o.DomUtil.disableTextSelection(),o.DomUtil.disableImageDrag(),this._startLayerPoint=this._map.mouseEventToLayerPoint(t),o.DomEvent.on(e,"mousemove",this._onMouseMove,this).on(e,"mouseup",this._onMouseUp,this).on(e,"keydown",this._onKeyDown,this),void 0)},_onMouseMove:function(t){this._moved||(this._box=o.DomUtil.create("div","leaflet-zoom-box",this._pane),o.DomUtil.setPosition(this._box,this._startLayerPoint),this._container.style.cursor="crosshair",this._map.fire("boxzoomstart"));var e=this._startLayerPoint,i=this._box,n=this._map.mouseEventToLayerPoint(t),s=n.subtract(e),a=new o.Point(Math.min(n.x,e.x),Math.min(n.y,e.y));o.DomUtil.setPosition(i,a),this._moved=!0,i.style.width=Math.max(0,Math.abs(s.x)-4)+"px",i.style.height=Math.max(0,Math.abs(s.y)-4)+"px"},_finish:function(){this._moved&&(this._pane.removeChild(this._box),this._container.style.cursor=""),o.DomUtil.enableTextSelection(),o.DomUtil.enableImageDrag(),o.DomEvent.off(e,"mousemove",this._onMouseMove).off(e,"mouseup",this._onMouseUp).off(e,"keydown",this._onKeyDown)},_onMouseUp:function(t){this._finish();var e=this._map,i=e.mouseEventToLayerPoint(t);if(!this._startLayerPoint.equals(i)){var n=new o.LatLngBounds(e.layerPointToLatLng(this._startLayerPoint),e.layerPointToLatLng(i));e.fitBounds(n),e.fire("boxzoomend",{boxZoomBounds:n})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}}),o.Map.addInitHook("addHandler","boxZoom",o.Map.BoxZoom),o.Map.mergeOptions({keyboard:!0,keyboardPanOffset:80,keyboardZoomOffset:1}),o.Map.Keyboard=o.Handler.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,173]},initialize:function(t){this._map=t,this._setPanOffset(t.options.keyboardPanOffset),this._setZoomOffset(t.options.keyboardZoomOffset)},addHooks:function(){var t=this._map._container;-1===t.tabIndex&&(t.tabIndex="0"),o.DomEvent.on(t,"focus",this._onFocus,this).on(t,"blur",this._onBlur,this).on(t,"mousedown",this._onMouseDown,this),this._map.on("focus",this._addHooks,this).on("blur",this._removeHooks,this)},removeHooks:function(){this._removeHooks();var t=this._map._container;o.DomEvent.off(t,"focus",this._onFocus,this).off(t,"blur",this._onBlur,this).off(t,"mousedown",this._onMouseDown,this),this._map.off("focus",this._addHooks,this).off("blur",this._removeHooks,this)},_onMouseDown:function(){if(!this._focused){var i=e.body,n=e.documentElement,o=i.scrollTop||n.scrollTop,s=i.scrollLeft||n.scrollLeft;this._map._container.focus(),t.scrollTo(s,o)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanOffset:function(t){var e,i,n=this._panKeys={},o=this.keyCodes;for(e=0,i=o.left.length;i>e;e++)n[o.left[e]]=[-1*t,0];for(e=0,i=o.right.length;i>e;e++)n[o.right[e]]=[t,0];for(e=0,i=o.down.length;i>e;e++)n[o.down[e]]=[0,t];for(e=0,i=o.up.length;i>e;e++)n[o.up[e]]=[0,-1*t]},_setZoomOffset:function(t){var e,i,n=this._zoomKeys={},o=this.keyCodes;for(e=0,i=o.zoomIn.length;i>e;e++)n[o.zoomIn[e]]=t;for(e=0,i=o.zoomOut.length;i>e;e++)n[o.zoomOut[e]]=-t},_addHooks:function(){o.DomEvent.on(e,"keydown",this._onKeyDown,this)},_removeHooks:function(){o.DomEvent.off(e,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){var e=t.keyCode,i=this._map;if(e in this._panKeys){if(i._panAnim&&i._panAnim._inProgress)return;i.panBy(this._panKeys[e]),i.options.maxBounds&&i.panInsideBounds(i.options.maxBounds)}else{if(!(e in this._zoomKeys))return;i.setZoom(i.getZoom()+this._zoomKeys[e])}o.DomEvent.stop(t)}}),o.Map.addInitHook("addHandler","keyboard",o.Map.Keyboard),o.Handler.MarkerDrag=o.Handler.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new o.Draggable(t,t)),this._draggable.on("dragstart",this._onDragStart,this).on("drag",this._onDrag,this).on("dragend",this._onDragEnd,this),this._draggable.enable(),o.DomUtil.addClass(this._marker._icon,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off("dragstart",this._onDragStart,this).off("drag",this._onDrag,this).off("dragend",this._onDragEnd,this),this._draggable.disable(),o.DomUtil.removeClass(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_onDragStart:function(){this._marker.closePopup().fire("movestart").fire("dragstart")},_onDrag:function(){var t=this._marker,e=t._shadow,i=o.DomUtil.getPosition(t._icon),n=t._map.layerPointToLatLng(i);e&&o.DomUtil.setPosition(e,i),t._latlng=n,t.fire("move",{latlng:n}).fire("drag")},_onDragEnd:function(t){this._marker.fire("moveend").fire("dragend",t)}}),o.Control=o.Class.extend({options:{position:"topright"},initialize:function(t){o.setOptions(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var e=this._map;return e&&e.removeControl(this),this.options.position=t,e&&e.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this._map=t;var e=this._container=this.onAdd(t),i=this.getPosition(),n=t._controlCorners[i];return o.DomUtil.addClass(e,"leaflet-control"),-1!==i.indexOf("bottom")?n.insertBefore(e,n.firstChild):n.appendChild(e),this},removeFrom:function(t){var e=this.getPosition(),i=t._controlCorners[e];return i.removeChild(this._container),this._map=null,this.onRemove&&this.onRemove(t),this},_refocusOnMap:function(){this._map&&this._map.getContainer().focus()}}),o.control=function(t){return new o.Control(t)},o.Map.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.removeFrom(this),this},_initControlPos:function(){function t(t,s){var a=i+t+" "+i+s;e[t+s]=o.DomUtil.create("div",a,n)}var e=this._controlCorners={},i="leaflet-",n=this._controlContainer=o.DomUtil.create("div",i+"control-container",this._container);t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){this._container.removeChild(this._controlContainer)}}),o.Control.Zoom=o.Control.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"-",zoomOutTitle:"Zoom out"},onAdd:function(t){var e="leaflet-control-zoom",i=o.DomUtil.create("div",e+" leaflet-bar");return this._map=t,this._zoomInButton=this._createButton(this.options.zoomInText,this.options.zoomInTitle,e+"-in",i,this._zoomIn,this),this._zoomOutButton=this._createButton(this.options.zoomOutText,this.options.zoomOutTitle,e+"-out",i,this._zoomOut,this),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),i},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},_zoomIn:function(t){this._map.zoomIn(t.shiftKey?3:1)},_zoomOut:function(t){this._map.zoomOut(t.shiftKey?3:1)},_createButton:function(t,e,i,n,s,a){var r=o.DomUtil.create("a",i,n);r.innerHTML=t,r.href="#",r.title=e;var h=o.DomEvent.stopPropagation;return o.DomEvent.on(r,"click",h).on(r,"mousedown",h).on(r,"dblclick",h).on(r,"click",o.DomEvent.preventDefault).on(r,"click",s,a).on(r,"click",this._refocusOnMap,a),r},_updateDisabled:function(){var t=this._map,e="leaflet-disabled";o.DomUtil.removeClass(this._zoomInButton,e),o.DomUtil.removeClass(this._zoomOutButton,e),t._zoom===t.getMinZoom()&&o.DomUtil.addClass(this._zoomOutButton,e),t._zoom===t.getMaxZoom()&&o.DomUtil.addClass(this._zoomInButton,e)}}),o.Map.mergeOptions({zoomControl:!0}),o.Map.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new o.Control.Zoom,this.addControl(this.zoomControl))}),o.control.zoom=function(t){return new o.Control.Zoom(t)},o.Control.Attribution=o.Control.extend({options:{position:"bottomright",prefix:'Leaflet'},initialize:function(t){o.setOptions(this,t),this._attributions={}},onAdd:function(t){this._container=o.DomUtil.create("div","leaflet-control-attribution"),o.DomEvent.disableClickPropagation(this._container);for(var e in t._layers)t._layers[e].getAttribution&&this.addAttribution(t._layers[e].getAttribution());return t.on("layeradd",this._onLayerAdd,this).on("layerremove",this._onLayerRemove,this),this._update(),this._container},onRemove:function(t){t.off("layeradd",this._onLayerAdd).off("layerremove",this._onLayerRemove)},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t?(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update(),this):void 0},removeAttribution:function(t){return t?(this._attributions[t]&&(this._attributions[t]--,this._update()),this):void 0},_update:function(){if(this._map){var t=[];for(var e in this._attributions)this._attributions[e]&&t.push(e);var i=[];this.options.prefix&&i.push(this.options.prefix),t.length&&i.push(t.join(", ")),this._container.innerHTML=i.join(" | ")}},_onLayerAdd:function(t){t.layer.getAttribution&&this.addAttribution(t.layer.getAttribution())},_onLayerRemove:function(t){t.layer.getAttribution&&this.removeAttribution(t.layer.getAttribution())}}),o.Map.mergeOptions({attributionControl:!0}),o.Map.addInitHook(function(){this.options.attributionControl&&(this.attributionControl=(new o.Control.Attribution).addTo(this))}),o.control.attribution=function(t){return new o.Control.Attribution(t)},o.Control.Scale=o.Control.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0,updateWhenIdle:!1},onAdd:function(t){this._map=t;var e="leaflet-control-scale",i=o.DomUtil.create("div",e),n=this.options;return this._addScales(n,e,i),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),i},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,e,i){t.metric&&(this._mScale=o.DomUtil.create("div",e+"-line",i)),t.imperial&&(this._iScale=o.DomUtil.create("div",e+"-line",i))},_update:function(){var t=this._map.getBounds(),e=t.getCenter().lat,i=6378137*Math.PI*Math.cos(e*Math.PI/180),n=i*(t.getNorthEast().lng-t.getSouthWest().lng)/180,o=this._map.getSize(),s=this.options,a=0;o.x>0&&(a=n*(s.maxWidth/o.x)),this._updateScales(s,a)},_updateScales:function(t,e){t.metric&&e&&this._updateMetric(e),t.imperial&&e&&this._updateImperial(e)},_updateMetric:function(t){var e=this._getRoundNum(t);this._mScale.style.width=this._getScaleWidth(e/t)+"px",this._mScale.innerHTML=1e3>e?e+" m":e/1e3+" km"},_updateImperial:function(t){var e,i,n,o=3.2808399*t,s=this._iScale;o>5280?(e=o/5280,i=this._getRoundNum(e),s.style.width=this._getScaleWidth(i/e)+"px",s.innerHTML=i+" mi"):(n=this._getRoundNum(o),s.style.width=this._getScaleWidth(n/o)+"px",s.innerHTML=n+" ft")},_getScaleWidth:function(t){return Math.round(this.options.maxWidth*t)-10},_getRoundNum:function(t){var e=Math.pow(10,(Math.floor(t)+"").length-1),i=t/e;return i=i>=10?10:i>=5?5:i>=3?3:i>=2?2:1,e*i}}),o.control.scale=function(t){return new o.Control.Scale(t)},o.Control.Layers=o.Control.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0},initialize:function(t,e,i){o.setOptions(this,i),this._layers={},this._lastZIndex=0,this._handlingClick=!1;for(var n in t)this._addLayer(t[n],n);for(n in e)this._addLayer(e[n],n,!0)},onAdd:function(t){return this._initLayout(),this._update(),t.on("layeradd",this._onLayerChange,this).on("layerremove",this._onLayerChange,this),this._container},onRemove:function(t){t.off("layeradd",this._onLayerChange).off("layerremove",this._onLayerChange)},addBaseLayer:function(t,e){return this._addLayer(t,e),this._update(),this},addOverlay:function(t,e){return this._addLayer(t,e,!0),this._update(),this},removeLayer:function(t){var e=o.stamp(t);return delete this._layers[e],this._update(),this},_initLayout:function(){var t="leaflet-control-layers",e=this._container=o.DomUtil.create("div",t);e.setAttribute("aria-haspopup",!0),o.Browser.touch?o.DomEvent.on(e,"click",o.DomEvent.stopPropagation):o.DomEvent.disableClickPropagation(e).disableScrollPropagation(e);var i=this._form=o.DomUtil.create("form",t+"-list");if(this.options.collapsed){o.Browser.android||o.DomEvent.on(e,"mouseover",this._expand,this).on(e,"mouseout",this._collapse,this);var n=this._layersLink=o.DomUtil.create("a",t+"-toggle",e);n.href="#",n.title="Layers",o.Browser.touch?o.DomEvent.on(n,"click",o.DomEvent.stop).on(n,"click",this._expand,this):o.DomEvent.on(n,"focus",this._expand,this),o.DomEvent.on(i,"click",function(){setTimeout(o.bind(this._onInputClick,this),0)},this),this._map.on("click",this._collapse,this)}else this._expand();this._baseLayersList=o.DomUtil.create("div",t+"-base",i),this._separator=o.DomUtil.create("div",t+"-separator",i),this._overlaysList=o.DomUtil.create("div",t+"-overlays",i),e.appendChild(i)},_addLayer:function(t,e,i){var n=o.stamp(t);this._layers[n]={layer:t,name:e,overlay:i},this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex))},_update:function(){if(this._container){this._baseLayersList.innerHTML="",this._overlaysList.innerHTML="";var t,e,i=!1,n=!1;for(t in this._layers)e=this._layers[t],this._addItem(e),n=n||e.overlay,i=i||!e.overlay;this._separator.style.display=n&&i?"":"none"}},_onLayerChange:function(t){var e=this._layers[o.stamp(t.layer)];if(e){this._handlingClick||this._update();var i=e.overlay?"layeradd"===t.type?"overlayadd":"overlayremove":"layeradd"===t.type?"baselayerchange":null;i&&this._map.fire(i,e)}},_createRadioElement:function(t,i){var n='t;t++)e=n[t],i=this._layers[e.layerId],e.checked&&!this._map.hasLayer(i.layer)?this._map.addLayer(i.layer):!e.checked&&this._map.hasLayer(i.layer)&&this._map.removeLayer(i.layer);this._handlingClick=!1,this._refocusOnMap()},_expand:function(){o.DomUtil.addClass(this._container,"leaflet-control-layers-expanded")},_collapse:function(){this._container.className=this._container.className.replace(" leaflet-control-layers-expanded","")}}),o.control.layers=function(t,e,i){return new o.Control.Layers(t,e,i)},o.PosAnimation=o.Class.extend({includes:o.Mixin.Events,run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._newPos=e,this.fire("start"),t.style[o.DomUtil.TRANSITION]="all "+(i||.25)+"s cubic-bezier(0,0,"+(n||.5)+",1)",o.DomEvent.on(t,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),o.DomUtil.setPosition(t,e),o.Util.falseFn(t.offsetWidth),this._stepTimer=setInterval(o.bind(this._onStep,this),50)},stop:function(){this._inProgress&&(o.DomUtil.setPosition(this._el,this._getPos()),this._onTransitionEnd(),o.Util.falseFn(this._el.offsetWidth))},_onStep:function(){var t=this._getPos();return t?(this._el._leaflet_pos=t,this.fire("step"),void 0):(this._onTransitionEnd(),void 0)},_transformRe:/([-+]?(?:\d*\.)?\d+)\D*, ([-+]?(?:\d*\.)?\d+)\D*\)/,_getPos:function(){var e,i,n,s=this._el,a=t.getComputedStyle(s);if(o.Browser.any3d){if(n=a[o.DomUtil.TRANSFORM].match(this._transformRe),!n)return;e=parseFloat(n[1]),i=parseFloat(n[2])}else e=parseFloat(a.left),i=parseFloat(a.top);return new o.Point(e,i,!0)},_onTransitionEnd:function(){o.DomEvent.off(this._el,o.DomUtil.TRANSITION_END,this._onTransitionEnd,this),this._inProgress&&(this._inProgress=!1,this._el.style[o.DomUtil.TRANSITION]="",this._el._leaflet_pos=this._newPos,clearInterval(this._stepTimer),this.fire("step").fire("end"))}}),o.Map.include({setView:function(t,e,n){if(e=e===i?this._zoom:this._limitZoom(e),t=this._limitCenter(o.latLng(t),e,this.options.maxBounds),n=n||{},this._panAnim&&this._panAnim.stop(),this._loaded&&!n.reset&&n!==!0){n.animate!==i&&(n.zoom=o.extend({animate:n.animate},n.zoom),n.pan=o.extend({animate:n.animate},n.pan));var s=this._zoom!==e?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,e,n.zoom):this._tryAnimatedPan(t,n.pan);if(s)return clearTimeout(this._sizeTimer),this}return this._resetView(t,e),this},panBy:function(t,e){if(t=o.point(t).round(),e=e||{},!t.x&&!t.y)return this;if(this._panAnim||(this._panAnim=new o.PosAnimation,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),e.noMoveStart||this.fire("movestart"),e.animate!==!1){o.DomUtil.addClass(this._mapPane,"leaflet-pan-anim");var i=this._getMapPanePos().subtract(t);this._panAnim.run(this._mapPane,i,e.duration||.25,e.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){o.DomUtil.removeClass(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,e){var i=this._getCenterOffset(t)._floor();return(e&&e.animate)===!0||this.getSize().contains(i)?(this.panBy(i,e),!0):!1}}),o.PosAnimation=o.DomUtil.TRANSITION?o.PosAnimation:o.PosAnimation.extend({run:function(t,e,i,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=i||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=o.DomUtil.getPosition(t),this._offset=e.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(),this._complete())},_animate:function(){this._animId=o.Util.requestAnimFrame(this._animate,this),this._step()},_step:function(){var t=+new Date-this._startTime,e=1e3*this._duration;e>t?this._runFrame(this._easeOut(t/e)):(this._runFrame(1),this._complete())},_runFrame:function(t){var e=this._startPos.add(this._offset.multiplyBy(t));o.DomUtil.setPosition(this._el,e),this.fire("step")},_complete:function(){o.Util.cancelAnimFrame(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),o.Map.mergeOptions({zoomAnimation:!0,zoomAnimationThreshold:4}),o.DomUtil.TRANSITION&&o.Map.addInitHook(function(){this._zoomAnimated=this.options.zoomAnimation&&o.DomUtil.TRANSITION&&o.Browser.any3d&&!o.Browser.android23&&!o.Browser.mobileOpera,this._zoomAnimated&&o.DomEvent.on(this._mapPane,o.DomUtil.TRANSITION_END,this._catchTransitionEnd,this)}),o.Map.include(o.DomUtil.TRANSITION?{_catchTransitionEnd:function(t){this._animatingZoom&&t.propertyName.indexOf("transform")>=0&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,e,i){if(this._animatingZoom)return!0;if(i=i||{},!this._zoomAnimated||i.animate===!1||this._nothingToAnimate()||Math.abs(e-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(e),o=this._getCenterOffset(t)._divideBy(1-1/n),s=this._getCenterLayerPoint()._add(o);return i.animate===!0||this.getSize().contains(o)?(this.fire("movestart").fire("zoomstart"),this._animateZoom(t,e,s,n,null,!0),!0):!1},_animateZoom:function(t,e,i,n,s,a){this._animatingZoom=!0,o.DomUtil.addClass(this._mapPane,"leaflet-zoom-anim"),this._animateToCenter=t,this._animateToZoom=e,o.Draggable&&(o.Draggable._disabled=!0),this.fire("zoomanim",{center:t,zoom:e,origin:i,scale:n,delta:s,backwards:a})},_onZoomTransitionEnd:function(){this._animatingZoom=!1,o.DomUtil.removeClass(this._mapPane,"leaflet-zoom-anim"),this._resetView(this._animateToCenter,this._animateToZoom,!0,!0),o.Draggable&&(o.Draggable._disabled=!1)}}:{}),o.TileLayer.include({_animateZoom:function(t){this._animating||(this._animating=!0,this._prepareBgBuffer());var e=this._bgBuffer,i=o.DomUtil.TRANSFORM,n=t.delta?o.DomUtil.getTranslateString(t.delta):e.style[i],s=o.DomUtil.getScaleString(t.scale,t.origin);e.style[i]=t.backwards?s+" "+n:n+" "+s},_endZoomAnim:function(){var t=this._tileContainer,e=this._bgBuffer;t.style.visibility="",t.parentNode.appendChild(t),o.Util.falseFn(e.offsetWidth),this._animating=!1},_clearBgBuffer:function(){var t=this._map;!t||t._animatingZoom||t.touchZoom._zooming||(this._bgBuffer.innerHTML="",this._bgBuffer.style[o.DomUtil.TRANSFORM]="")},_prepareBgBuffer:function(){var t=this._tileContainer,e=this._bgBuffer,i=this._getLoadedTilesPercentage(e),n=this._getLoadedTilesPercentage(t);return e&&i>.5&&.5>n?(t.style.visibility="hidden",this._stopLoadingImages(t),void 0):(e.style.visibility="hidden",e.style[o.DomUtil.TRANSFORM]="",this._tileContainer=e,e=this._bgBuffer=t,this._stopLoadingImages(e),clearTimeout(this._clearBgBufferTimer),void 0)},_getLoadedTilesPercentage:function(t){var e,i,n=t.getElementsByTagName("img"),o=0;for(e=0,i=n.length;i>e;e++)n[e].complete&&o++;return o/i},_stopLoadingImages:function(t){var e,i,n,s=Array.prototype.slice.call(t.getElementsByTagName("img"));for(e=0,i=s.length;i>e;e++)n=s[e],n.complete||(n.onload=o.Util.falseFn,n.onerror=o.Util.falseFn,n.src=o.Util.emptyImageUrl,n.parentNode.removeChild(n))}}),o.Map.include({_defaultLocateOptions:{watch:!1,setView:!1,maxZoom:1/0,timeout:1e4,maximumAge:0,enableHighAccuracy:!1},locate:function(t){if(t=this._locateOptions=o.extend(this._defaultLocateOptions,t),!navigator.geolocation)return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var e=o.bind(this._handleGeolocationResponse,this),i=o.bind(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(e,i,t):navigator.geolocation.getCurrentPosition(e,i,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var e=t.code,i=t.message||(1===e?"permission denied":2===e?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:e,message:"Geolocation error: "+i+"."})},_handleGeolocationResponse:function(t){var e=t.coords.latitude,i=t.coords.longitude,n=new o.LatLng(e,i),s=180*t.coords.accuracy/40075017,a=s/Math.cos(o.LatLng.DEG_TO_RAD*e),r=o.latLngBounds([e-s,i-a],[e+s,i+a]),h=this._locateOptions;if(h.setView){var l=Math.min(this.getBoundsZoom(r),h.maxZoom);this.setView(n,l)}var u={latlng:n,bounds:r,timestamp:t.timestamp};for(var c in t.coords)"number"==typeof t.coords[c]&&(u[c]=t.coords[c]);this.fire("locationfound",u)}})}(window,document); \ No newline at end of file From 572ddb949fc8398976141dfb68818097738b21e8 Mon Sep 17 00:00:00 2001 From: fkloft Date: Sun, 8 Dec 2013 22:13:09 +0100 Subject: [PATCH 059/109] Remove pan control from minimap (basically same issue as c537811e9b996bdcda80510d4e04e17fd3654796) --- plugins/pan-control.user.js | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/plugins/pan-control.user.js b/plugins/pan-control.user.js index 69486c55..1e1ca84e 100644 --- a/plugins/pan-control.user.js +++ b/plugins/pan-control.user.js @@ -26,10 +26,16 @@ window.plugin.panControl.setup = function() { try { console.log('Loading Leaflet.Pancontrol JS now'); } catch(e) {} @@INCLUDERAW:external/L.Control.Pan.js@@ try { console.log('done loading Leaflet.Pancontrol JS'); } catch(e) {} - + + // prevent Pancontrol from being activated by default (e.g. in minimap) + L.Map.mergeOptions({ + panControl: false + }); + + window.map.panControl = L.control.pan({panOffset: 350}); window.map.addControl(window.map.panControl); - + if(map.zoomControl._map) { // Move above the zoom control window.map.removeControl(map.zoomControl); window.map.zoomControl = L.control.zoom(); From 7a36053d46b340bf63a817186b8d975ecdac9da2 Mon Sep 17 00:00:00 2001 From: enigmaquip Date: Sun, 8 Dec 2013 15:19:14 -0700 Subject: [PATCH 060/109] plugin draw resonator update Update to code for disabled on out of zoom bounds and tool tip when in bounds --- plugins/draw-resonators.user.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/plugins/draw-resonators.user.js b/plugins/draw-resonators.user.js index 2aa1b7df..e3da13b2 100644 --- a/plugins/draw-resonators.user.js +++ b/plugins/draw-resonators.user.js @@ -93,8 +93,12 @@ window.plugin.drawResonators.createConnMarker = function(resoData, resoLatLng, p } window.plugin.drawResonators.zoomListener = function() { + var ctrl = $('.leaflet-control-layers-selector + span:contains("Resonators")').parent(); if(window.map.getZoom() < window.RESONATOR_MIN_ZOOM) { window.plugin.drawResonators.levelLayerGroup.clearLayers(); + ctrl.addClass('disabled').attr('title', 'Zoom in to show those.'); + } else { + ctrl.removeClass('disabled').attr('title', 'Select a portal to draw resos'); }; } @@ -102,7 +106,7 @@ var setup = function() { window.plugin.drawResonators.levelLayerGroup = new L.LayerGroup(); - window.addLayerGroup('Draw Reso', window.plugin.drawResonators.levelLayerGroup, true); + window.addLayerGroup('Resonators', window.plugin.drawResonators.levelLayerGroup, true); window.addHook('portalDetailsUpdated', window.plugin.drawResonators.handledata); From 7ab3a33adc04b2f4a88552a113dee4ede1628adc Mon Sep 17 00:00:00 2001 From: nexushoratio Date: Mon, 9 Dec 2013 00:11:46 -0800 Subject: [PATCH 061/109] Minor typo. --- plugins/broken/ap-list.user.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/broken/ap-list.user.js b/plugins/broken/ap-list.user.js index 4fc2bb23..87cc5b08 100644 --- a/plugins/broken/ap-list.user.js +++ b/plugins/broken/ap-list.user.js @@ -893,7 +893,7 @@ window.plugin.apList.setupPagination = function() { + '
' + '
' + '
' - + '
'// fix collapsion of parent caused by inner div's float:left + + '
'// fix collapsing of parent caused by inner div's float:left + '
'; $('#ap-list-pagination').html(content); } From d89f60be1160cb440e4dfdf9d81771e0b33c9a02 Mon Sep 17 00:00:00 2001 From: fkloft Date: Tue, 10 Dec 2013 14:55:46 +0100 Subject: [PATCH 062/109] Revert "Revert "Naive attempt to make bookmarks compatible with nav drawer. @ZasoGD - please have a look, if necessary undo this commit and do it right"" This reverts commit 67f273fd6d4b1db7d3ac2363305a1d30e3729ac4. --- plugins/bookmarks-by-zaso.user.js | 14 +++- plugins/bookmarks-css.css | 126 ++++++++++++++---------------- 2 files changed, 72 insertions(+), 68 deletions(-) diff --git a/plugins/bookmarks-by-zaso.user.js b/plugins/bookmarks-by-zaso.user.js index 8b324501..a69c40d7 100644 --- a/plugins/bookmarks-by-zaso.user.js +++ b/plugins/bookmarks-by-zaso.user.js @@ -169,6 +169,13 @@ window.plugin.bookmarks.saveStorageBox(); } + window.plugin.bookmarks.onPaneChanged = function(pane) { + if(pane == "plugin-bookmarks") + $('#bookmarksBox').css("display", ""); + else + $('#bookmarksBox').css("display", "none"); + } + // Switch list (maps/portals) window.plugin.bookmarks.switchPageBkmrksBox = function(elem, page) { window.plugin.bookmarks.statusBox.page = page; @@ -938,8 +945,13 @@ $("#bookmarksBox #bookmarksMin , #bookmarksBox ul li, #bookmarksBox ul li a, #bookmarksBox ul li a span, #bookmarksBox h5, #bookmarksBox .addForm a").disableSelection(); $('#bookmarksBox').css({'top':window.plugin.bookmarks.statusBox.pos.x, 'left':window.plugin.bookmarks.statusBox.pos.y}); }else{ - $('#portaldetails').before(window.plugin.bookmarks.htmlBoxTrigger + window.plugin.bookmarks.htmlBkmrksBox); + $('body').append(window.plugin.bookmarks.htmlBkmrksBox); + $('#bookmarksBox').css("display", "none").addClass("mobile"); + if(typeof android !== 'undefined' && android && android.addPane) + android.addPane("plugin-bookmarks", "Bookmarks", "ic_action_star"); + window.addHook('paneChanged', window.plugin.bookmarks.onPaneChanged); + // Remove the star window.addHook('portalSelected', function(data) { if(data.selectedPortalGuid === null) { diff --git a/plugins/bookmarks-css.css b/plugins/bookmarks-css.css index 15070e4c..9c160667 100644 --- a/plugins/bookmarks-css.css +++ b/plugins/bookmarks-css.css @@ -358,139 +358,131 @@ /********************************************** MOBILE **********************************************/ -#sidebar #bookmarksBox{ - position:static !important; - width:auto !important; - margin:0 !important; +#bookmarksBox.mobile{ + position:absolute !important; + width: 100% !important; + height: 100% !important; + top: 0 !important; + left: 0 !important; + margin: 0 !important; + padding: 0 !important; + border: 0 !important; + background: transparent !important;; } -#sidebar #bkmrksTrigger, -#sidebar #bookmarksBox .bookmarkList ul, -#sidebar #bookmarksBox .bookmarkList ul li, -#sidebar #bookmarksBox .bookmarkList.current, -#sidebar #bookmarksBox .bookmarkList li.bookmarkFolder.open ul{ +#bookmarksBox.mobile .bookmarkList ul, +#bookmarksBox.mobile .bookmarkList ul li, +#bookmarksBox.mobile .bookmarkList.current, +#bookmarksBox.mobile .bookmarkList li.bookmarkFolder.open ul{ width:100% !important; display:block !important; } -#sidebar #bookmarksBox *{ +#bookmarksBox.mobile *{ box-shadow:none !important; border-width:0 !important; } -#sidebar #bookmarksBox #topBar{ +#bookmarksBox.mobile #topBar{ display:none !important; } -#sidebar #bookmarksBox #bookmarksTypeBar h5{ +#bookmarksBox.mobile #bookmarksTypeBar h5{ cursor:pointer; text-align:center; float:left; width:50%; padding:7px 0; } -#sidebar #bookmarksBox #bookmarksTypeBar h5.current{ +#bookmarksBox.mobile #bookmarksTypeBar h5.current{ cursor:default; color:#fff; } -#sidebar #bookmarksBox #bookmarksTypeBar, -#sidebar #bookmarksBox .bookmarkList .addForm{ +#bookmarksBox.mobile #bookmarksTypeBar, +#bookmarksBox.mobile .bookmarkList .addForm{ border-bottom:1px solid #20a8b1 !important; } -#sidebar #bookmarksBox .bookmarkList ul li ul li.bkmrk, -#sidebar #bookmarksBox .bookmarkList li.bookmarkFolder .folderLabel{ +#bookmarksBox.mobile .bookmarkList ul li ul li.bkmrk, +#bookmarksBox.mobile .bookmarkList li.bookmarkFolder .folderLabel{ height:36px !important; clear:both; } -#sidebar #bookmarksBox .bookmarkList li.bookmarkFolder .folderLabel a, -#sidebar #bookmarksBox .bookmarkList ul li ul li.bkmrk a{ +#bookmarksBox.mobile .bookmarkList li.bookmarkFolder .folderLabel a, +#bookmarksBox.mobile .bookmarkList ul li ul li.bkmrk a{ background:none; padding:7px 0; height:auto; box-shadow:inset 0 1px 0 #20a8b1 !important; } -#sidebar #bookmarksBox .bookmarkList li.bookmarkFolder a.bookmarksRemoveFrom, -#sidebar #bookmarksBox .bookmarkList li.bkmrk a.bookmarksRemoveFrom{ +#bookmarksBox.mobile .bookmarkList li.bookmarkFolder a.bookmarksRemoveFrom, +#bookmarksBox.mobile .bookmarkList li.bkmrk a.bookmarksRemoveFrom{ box-shadow:inset 0 1px 0 #20a8b1,inset -1px 0 0 #20a8b1 !important; width:15%; background:none !important; } -#sidebar #bookmarksBox .bookmarkList li.bookmarkFolder a.bookmarksAnchor, -#sidebar #bookmarksBox .bookmarkList li.bkmrk a.bookmarksLink{ +#bookmarksBox.mobile .bookmarkList li.bookmarkFolder a.bookmarksAnchor, +#bookmarksBox.mobile .bookmarkList li.bkmrk a.bookmarksLink{ text-indent:10px; width:85%; height:21px; overflow:hidden; } -#sidebar #bookmarksBox .bookmarkList ul li.bookmarkFolder ul{ +#bookmarksBox.mobile .bookmarkList ul li.bookmarkFolder ul{ margin-left:0 !important; } -#sidebar #bookmarksBox .bookmarkList > ul{ +#bookmarksBox.mobile .bookmarkList > ul{ border-bottom:1px solid #20a8b1 !important; border-right:1px solid #20a8b1 !important; } -#sidebar #bookmarksBox .bookmarkList .bookmarkFolder.othersBookmarks ul{ +#bookmarksBox.mobile .bookmarkList .bookmarkFolder.othersBookmarks ul{ border-top:5px solid #20a8b1 !important; } -#sidebar #bookmarksBox .bookmarkList li.bookmarkFolder, -#sidebar #bookmarksBox .bookmarkList li.bkmrk{ +#bookmarksBox.mobile .bookmarkList li.bookmarkFolder, +#bookmarksBox.mobile .bookmarkList li.bkmrk{ box-shadow:inset 0 1px 0 #20a8b1, 1px 0 0 #20a8b1, -1px 1px 0 #20a8b1 !important; } -#sidebar #bookmarksBox .bookmarkList > ul{ +#bookmarksBox.mobile .bookmarkList > ul{ max-height:none; width:85% !important; } -#sidebar #bookmarksBox .bookmarkList li.bookmarkFolder .folderLabel{ +#bookmarksBox.mobile .bookmarkList li.bookmarkFolder .folderLabel{ box-shadow:0 1px 0 #20a8b1 !important; } -#sidebar #bookmarksBox .bookmarkList ul li.bookmarkFolder ul{ +#bookmarksBox.mobile .bookmarkList ul li.bookmarkFolder ul{ width:85% !important; margin-left:15% !important; } -#sidebar #bookmarksBox .bookmarkList ul li.bookmarkFolder.othersBookmarks ul{ +#bookmarksBox.mobile .bookmarkList ul li.bookmarkFolder.othersBookmarks ul{ width:100% !important; margin-left:0% !important; } -#sidebar #bkmrksTrigger{ - position:static; - width:auto; - margin:0; - height:auto; - background:none; - text-indent:0; - padding:11px 0 9px; - margin-bottom:5px; -} -#sidebar #bkmrksTrigger.open{ - margin-bottom:0; -} -#sidebar #bookmarksBox{ +#bookmarksBox.mobile{ margin-bottom:5px !important; } -#sidebar #bookmarksBox #bookmarksTypeBar{ +#bookmarksBox.mobile #bookmarksTypeBar{ height:auto; } -#sidebar #bookmarksBox .addForm, -#sidebar #bookmarksBox .addForm *{ +#bookmarksBox.mobile .addForm, +#bookmarksBox.mobile .addForm *{ height:35px; padding:0; } -#sidebar #bookmarksBox .addForm a{ +#bookmarksBox.mobile .addForm a{ line-height:37px; } -#sidebar #bookmarksBox .addForm a{ +#bookmarksBox.mobile .addForm a{ width:25% !important; } -#sidebar #bookmarksBox .addForm input{ +#bookmarksBox.mobile .addForm input{ width:50% !important; text-indent:10px; } -#sidebar #bookmarksBox #bkmrk_portals .addForm input{ +#bookmarksBox.mobile #bkmrk_portals .addForm input{ width:75% !important; } -#sidebar #bookmarksBox #bookmarksTypeBar h5, -#sidebar #bookmarksBox .bookmarkList .addForm a{ +#bookmarksBox.mobile #bookmarksTypeBar h5, +#bookmarksBox.mobile .bookmarkList .addForm a{ box-shadow:-1px 0 0 #20a8b1 !important; } -#sidebar #bookmarksBox .bookmarkList li.bookmarkFolder ul{ +#bookmarksBox.mobile .bookmarkList li.bookmarkFolder ul{ display:none !important; min-height:37px !important; } @@ -500,26 +492,26 @@ padding:0 3px 1px 4px; background:#262c32; } -#sidebar #bookmarksBox .bookmarkList .bookmarkFolder .folderLabel .bookmarksAnchor span, -#sidebar #bookmarksBox .bookmarkList .bookmarkFolder .folderLabel > span, -#sidebar #bookmarksBox .bookmarkList .bookmarkFolder .folderLabel > span > span, -#sidebar #bookmarksBox .bookmarkList .triangle{ +#bookmarksBox.mobile .bookmarkList .bookmarkFolder .folderLabel .bookmarksAnchor span, +#bookmarksBox.mobile .bookmarkList .bookmarkFolder .folderLabel > span, +#bookmarksBox.mobile .bookmarkList .bookmarkFolder .folderLabel > span > span, +#bookmarksBox.mobile .bookmarkList .triangle{ width:0 !important; height:0 !important; } -#sidebar #bookmarksBox .bookmarkList .bookmarkFolder .folderLabel .bookmarksAnchor span{ +#bookmarksBox.mobile .bookmarkList .bookmarkFolder .folderLabel .bookmarksAnchor span{ float:left !important; border-width:5px 0 5px 7px !important; border-color:transparent transparent transparent white !important; margin:7px 3px 0 13px !important; } -#sidebar #bookmarksBox .bookmarkList .bookmarkFolder.open .folderLabel .bookmarksAnchor span{ +#bookmarksBox.mobile .bookmarkList .bookmarkFolder.open .folderLabel .bookmarksAnchor span{ margin:9px 1px 0 12px !important; border-width:7px 5px 0 5px !important; border-color:white transparent transparent transparent !important; } -#sidebar #bookmarksBox .bookmarkList .bookmarkFolder .folderLabel > span, -#sidebar #bookmarksBox .bookmarkList .bookmarkFolder .folderLabel > span > span{ +#bookmarksBox.mobile .bookmarkList .bookmarkFolder .folderLabel > span, +#bookmarksBox.mobile .bookmarkList .bookmarkFolder .folderLabel > span > span{ display:none !important; border-width:0 12px 10px 0 !important; border-color:transparent #20a8b1 transparent transparent !important; @@ -528,14 +520,14 @@ top:21px !important; left:-10px !important; } -#sidebar #bookmarksBox .bookmarkList .bookmarkFolder .folderLabel > span > span{ +#bookmarksBox.mobile .bookmarkList .bookmarkFolder .folderLabel > span > span{ top:18px !important; left:0 !important; border-width:0 10px 9px 0 !important; border-color:transparent #069 transparent transparent !important; } -#sidebar #bookmarksBox .bookmarkList .bookmarkFolder.open .folderLabel > span, -#sidebar #bookmarksBox .bookmarkList .bookmarkFolder.open .folderLabel > span > span{ +#bookmarksBox.mobile .bookmarkList .bookmarkFolder.open .folderLabel > span, +#bookmarksBox.mobile .bookmarkList .bookmarkFolder.open .folderLabel > span > span{ display:block !important; } /********************************************** From c7b4632ee628d5ea4c91ff63c92a48d530d14bb5 Mon Sep 17 00:00:00 2001 From: fkloft Date: Fri, 6 Dec 2013 00:16:22 +0100 Subject: [PATCH 063/109] Improved intent sorting (default app listed first again, sorting broke this) --- .../iitc_mobile/share/IntentComparator.java | 18 ++++++++++++++++-- .../iitc_mobile/share/IntentListView.java | 15 +++++++-------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/mobile/src/com/cradle/iitc_mobile/share/IntentComparator.java b/mobile/src/com/cradle/iitc_mobile/share/IntentComparator.java index 436488e4..b01ab72d 100644 --- a/mobile/src/com/cradle/iitc_mobile/share/IntentComparator.java +++ b/mobile/src/com/cradle/iitc_mobile/share/IntentComparator.java @@ -124,6 +124,13 @@ public class IntentComparator implements Comparator { public int compare(ResolveInfo lhs, ResolveInfo rhs) { int order; + // we might be merging multiple intents, so there could be more than one default + if (lhs.isDefault && !rhs.isDefault) + return -1; + if (rhs.isDefault && !lhs.isDefault) + return 1; + + // Show more frequently used items in top Integer lCount = mIntentMap.get(new Component(lhs)); Integer rCount = mIntentMap.get(new Component(rhs)); @@ -133,8 +140,15 @@ public class IntentComparator implements Comparator { if (lCount > rCount) return -1; if (lCount < rCount) return 1; - order = lhs.loadLabel(mPackageManager).toString() - .compareTo(rhs.loadLabel(mPackageManager).toString()); + // don't known how these are set (or if they can be set at all), but it sounds promising... + if (lhs.preferredOrder != rhs.preferredOrder) + return rhs.preferredOrder - lhs.preferredOrder; + if (lhs.priority != rhs.priority) + return rhs.priority - lhs.priority; + + // still no order. fall back to alphabetical order + order = lhs.loadLabel(mPackageManager).toString().compareTo( + rhs.loadLabel(mPackageManager).toString()); if (order != 0) return order; if (lhs.nonLocalizedLabel != null && rhs.nonLocalizedLabel != null) { diff --git a/mobile/src/com/cradle/iitc_mobile/share/IntentListView.java b/mobile/src/com/cradle/iitc_mobile/share/IntentListView.java index 785c1edb..a0af6dcc 100644 --- a/mobile/src/com/cradle/iitc_mobile/share/IntentListView.java +++ b/mobile/src/com/cradle/iitc_mobile/share/IntentListView.java @@ -187,17 +187,16 @@ public class IntentListView extends ListView { ActivityInfo activity = resolveInfo.activityInfo; ComponentName activityId = new ComponentName(activity.packageName, activity.name); + // ResolveInfo.isDefault usually means "The target would like to be considered a default action that the + // user can perform on this data." It is set by the package manager, but we overwrite it to store + // whether this app is the default for the given intent + resolveInfo.isDefault = resolveInfo.activityInfo.name.equals(defaultTarget.activityInfo.name) + && resolveInfo.activityInfo.packageName.equals(defaultTarget.activityInfo.packageName); + if (!mActivities.containsKey(activityId)) { mActivities.put(activityId, intent); - // move default Intent to top - if (resolveInfo.activityInfo.packageName.equals(defaultTarget.activityInfo.packageName) - && resolveInfo.activityInfo.name.equals(defaultTarget.activityInfo.name)) { - allActivities.add(0, resolveInfo); - } else { - allActivities.add(resolveInfo); - } + allActivities.add(resolveInfo); } - } } From bf89a0548e5d43ea127d2ef65494ef238a2e26b0 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Tue, 10 Dec 2013 22:14:24 +0100 Subject: [PATCH 064/109] new actionbar title for permalink --- code/utils_misc.js | 4 ++-- mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java | 4 +--- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/code/utils_misc.js b/code/utils_misc.js index 75d213e8..ef30baba 100644 --- a/code/utils_misc.js +++ b/code/utils_misc.js @@ -267,11 +267,11 @@ window.androidCopy = function(text) { } window.androidPermalink = function() { - if(typeof android === 'undefined' || !android || !android.copy) + if(typeof android === 'undefined' || !android || !android.intentPosLink) return true; // i.e. execute other actions var center = map.getCenter(); - android.intentPosLink(center.lat, center.lng, map.getZoom(), "Intel Map", false); + android.intentPosLink(center.lat, center.lng, map.getZoom(), "Selected map view", false); return false; } diff --git a/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java b/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java index b09e57f9..fe10d5c3 100644 --- a/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java +++ b/mobile/src/com/cradle/iitc_mobile/share/ShareActivity.java @@ -116,15 +116,13 @@ public class ShareActivity extends FragmentActivity implements ActionBar.TabList mZoom = intent.getIntExtra("zoom", 0); mIsPortal = intent.getBooleanExtra("isPortal", false); + actionBar.setTitle(mTitle); setupIntents(); } else { mTitle = getString(R.string.app_name); setupShareIntent(intent.getStringExtra("shareString")); } - // show portal name as action bar title, if available - if (mTitle != getString(R.string.app_name)) actionBar.setTitle(mTitle); - mViewPager = (ViewPager) findViewById(R.id.pager); mViewPager.setAdapter(mFragmentAdapter); From 5a33ba1a24a331364336aafc46a8ee5fced58a72 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Thu, 12 Dec 2013 18:32:28 +0000 Subject: [PATCH 065/109] more portal summary data utility functions - link/field count functions - useful when we only need numbers - approximate AP gains, based only on summary data --- code/portal_data.js | 55 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/code/portal_data.js b/code/portal_data.js index cf5aa62b..6afdf9b1 100644 --- a/code/portal_data.js +++ b/code/portal_data.js @@ -21,6 +21,11 @@ window.getPortalLinks = function(guid) { return links; } +window.getPortalLinksCount = function(guid) { + var links = getPortalLinks(); + return links.in.length+links.out.length; +} + // search through the fields for all that reference a portal window.getPortalFields = function(guid) { @@ -40,6 +45,11 @@ window.getPortalFields = function(guid) { return fields; } +window.getPortalFieldsCount = function(guid) { + var fields = getPortalFields(); + return fields.length; +} + // find the lat/lon for a portal, using any and all available data // (we have the list of portals, the cached portal details, plus links and fields as sources of portal locations) @@ -79,3 +89,48 @@ window.findPortalLatLng = function(guid) { // no luck finding portal lat/lng return undefined; } + + +// get the AP gains from a portal, based only on the brief summary data from portals, links and fields +// not entirely accurate - but available for all portals on the screen +window.getPortalApGain = function(guid) { + + var p = window.portals[guid]; + if (p) { + var data = p.options.data; + + var linkCount = getPortalLinksCount(guid); + var fieldCount = getPortalFieldsCount(guid); + + var result = portalApGainMaths(data.resCount, linkCount, fieldCount); + return result; + } + + return undefined; +} + +// given counts of resonators, links and fields, calculate the available AP +// doesn't take account AP for resonator upgrades or AP for adding mods +window.portalApGainMaths = function(resCount, linkCount, fieldCount) { + + var deployAp = (8-resCount)*DEPLOY_RESONATOR; + if (resCount == 0) deployAp += CAPTURE_PORTAL; + if (resCount != 8) deployAp += COMPLETION_BONUS; + // there could also be AP for upgrading existing resonators, and for deploying mods - but we don't have data for that + var friendlyAp = deployAp; + + var destroyResoAp = resCount*DESTROY_RESONATOR; + var destroyLinkAp = linkCount*DESTROY_LINK; + var destroyFieldAp = fieldCount*DESTROY_FIELD; + var captureAp = CAPTURE_PORTAL + 8 * DEPLOY_RESONATOR + COMPLETION_BONUS; + var destroyAp = destroyResoAp+destroyLinkAp+destroyFieldAp; + var enemyAp = destroyAp+captureAp; + + return { + friendlyAp: friendlyAp, + enemyAp: enemyAp, + destroyAp: destroyAp, + destroyResoAp: destroyResoAp, + captureAp: captureAp + } +} From 20e672a1e2c192883940cbeb4f2f534cb1928180 Mon Sep 17 00:00:00 2001 From: fkloft Date: Tue, 10 Dec 2013 22:22:48 +0100 Subject: [PATCH 066/109] Improve build tools - Makefile provides "locale" and "mobile" as targets. Mobile also installs and starts app - build.py returns error code if ant fails --- Makefile | 14 ++++++++++++-- build.py | 1 + 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 336e5120..c2f82707 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,16 @@ -default: - ./build.py +default: mklocal +local: mklocal +mobile: mkmobile + +mklocal: + ./build.py local + +mkmobile: + ./build.py mobile + adb install -r build/mobile/IITC_Mobile-debug.apk + adb shell am start -n com.cradle.iitc_mobile/com.cradle.iitc_mobile.IITC_Mobile clean: ant -f mobile/build.xml clean + diff --git a/build.py b/build.py index 97f808e6..ec04387d 100755 --- a/build.py +++ b/build.py @@ -289,6 +289,7 @@ if buildMobile: if retcode != 0: print ("Error: mobile app failed to build. ant returned %d" % retcode) + exit(1) # ant may return 256, but python seems to allow only values <256 else: shutil.copy("mobile/bin/IITC_Mobile-%s.apk" % buildMobile, os.path.join(outDir,"IITC_Mobile-%s.apk" % buildMobile) ) From bcd7e7390db4f81b537d9742cebbfb7a0c2fb153 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Thu, 12 Dec 2013 19:52:18 +0100 Subject: [PATCH 067/109] set default build target back to desktop build From c01a65b05e626e3827ca6a92263d20ed1c7720b6 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Fri, 13 Dec 2013 05:40:49 +0000 Subject: [PATCH 068/109] change makefile to run a plain build.py by default - localbuildsettings.py then can control the default --- Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c2f82707..65a244de 100644 --- a/Makefile +++ b/Makefile @@ -1,8 +1,11 @@ -default: mklocal +default: mkdefault local: mklocal mobile: mkmobile +mkdefault: + ./build.py + mklocal: ./build.py local From 444d5b236ea9558355e03dd5369f992177b9e166 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Fri, 13 Dec 2013 05:49:17 +0000 Subject: [PATCH 069/109] plugin draw-resonators: clear resonators when portal is deselected. changed hooks used to handle things in a more logical way --- plugins/draw-resonators.user.js | 37 +++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 9 deletions(-) diff --git a/plugins/draw-resonators.user.js b/plugins/draw-resonators.user.js index e3da13b2..755b6d46 100644 --- a/plugins/draw-resonators.user.js +++ b/plugins/draw-resonators.user.js @@ -2,7 +2,7 @@ // @id iitc-plugin-draw-resonators@xelio // @name IITC plugin: Draw resonators // @category Layer -// @version 0.4.1.@@DATETIMEVERSION@@ +// @version 0.5.0.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -24,14 +24,32 @@ window.plugin.drawResonators = function() {}; window.plugin.drawResonators.levelLayerGroup = null; -window.plugin.drawResonators.handledata = function(data) { -window.plugin.drawResonators.levelLayerGroup.clearLayers(); -window.plugin.drawResonators.drawData(data); +window.plugin.drawResonators.portalSelected = function(data) { + // new portal selected - clear any existing resonators.. + window.plugin.drawResonators.levelLayerGroup.clearLayers(); + + // then, if a portal is selected... + if (data.selectedPortalGuid) { + // draw it's resonators if we have it's details + var details = portalDetail.get(data.selectedPortalGuid); + if (details) { + window.plugin.drawResonators.drawData(details); + } + } } -window.plugin.drawResonators.drawData = function(portal) { -if(window.map.getZoom() < window.RESONATOR_MIN_ZOOM) return; - var portalDetails = portal.portalDetails; +window.plugin.drawResonators.portalDetailsLoaded = function(data) { + // the detailed data for a portal was just loaded - if this is the selected portal, draw them + + if (data.guid == window.selectedPortal) { + window.plugin.drawResonators.levelLayerGroup.clearLayers(); + window.plugin.drawResonators.drawData(data.details); + } +} + +window.plugin.drawResonators.drawData = function(portalDetails) { + if(window.map.getZoom() < window.RESONATOR_MIN_ZOOM) return; + var portalLatLng = [portalDetails.locationE6.latE6/1E6, portalDetails.locationE6.lngE6/1E6]; for(var i in portalDetails.resonatorArray.resonators) { resoData = portalDetails.resonatorArray.resonators[i]; @@ -108,7 +126,8 @@ var setup = function() { window.addLayerGroup('Resonators', window.plugin.drawResonators.levelLayerGroup, true); - window.addHook('portalDetailsUpdated', window.plugin.drawResonators.handledata); + window.addHook('portalSelected', window.plugin.drawResonators.portalSelected); + window.addHook('portalDetailsLoaded', window.plugin.drawResonators.portalDetailsLoaded); window.map.on('zoomend', function() { window.plugin.drawResonators.zoomListener(); @@ -117,4 +136,4 @@ var setup = function() { } // PLUGIN END ////////////////////////////////////////////////////////// -@@PLUGINEND@@ \ No newline at end of file +@@PLUGINEND@@ From cd8adeac22334cb303af3f91c45597f2c3e44212 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Fri, 13 Dec 2013 20:10:46 +0000 Subject: [PATCH 070/109] artifact list: - line break when both target and fragments are on one portal - colour fragments when on a target portal --- code/artifact.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/code/artifact.js b/code/artifact.js index cd8b118d..d52abc72 100644 --- a/code/artifact.js +++ b/code/artifact.js @@ -247,7 +247,10 @@ window.artifact.showArtifactList = function() { } if (data[type].fragments) { - row += 'Shard: #'+data[type].fragments.join(', #')+' '; + if (data[type].target) { + row += '
'; + } + row += 'Shard: #'+data[type].fragments.join(', #')+' '; sortVal = Math.min.apply(null, data[type].fragments); // use min shard number at portal as sort key } From 3b8716d4d8f0c0bbf87dbb77a45ed0654f210e51 Mon Sep 17 00:00:00 2001 From: fkloft Date: Fri, 13 Dec 2013 17:54:25 +0100 Subject: [PATCH 071/109] Repair compact tab --- code/chat.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/code/chat.js b/code/chat.js index 2bcf5f79..50cb8fec 100644 --- a/code/chat.js +++ b/code/chat.js @@ -228,12 +228,12 @@ window.chat.renderCompact = function(oldMsgsWereAdded) { $.each(chat._public.data, function(guid, entry) { // skip player msgs if(!entry[1]) return true; - var pguid = entry[3]; + var nick = entry[3]; // ignore if player has newer data - if(data[pguid] && data[pguid][0] > entry[0]) return true; - data[pguid] = entry; + if(data[nick] && data[nick][0] > entry[0]) return true; + data[nick] = entry; }); - // data keys are now player guids instead of message guids. However, + // data keys are now player nicks instead of message guids. However, // it is all the same to renderData. chat.renderData(data, 'chatcompact', oldMsgsWereAdded); } @@ -350,7 +350,7 @@ window.chat.writeDataToHash = function(newData, storageHash, isPublicChannel, is // format: timestamp, autogenerated, HTML message - storageHash.data[json[0]] = [json[1], auto, chat.renderMsg(msg, nick, time, team, msgToPlayer, systemNarrowcast)]; + storageHash.data[json[0]] = [json[1], auto, chat.renderMsg(msg, nick, time, team, msgToPlayer, systemNarrowcast), nick]; }); } From d7619314da8a7f06182e6287061bcae5904dd8af Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 14 Dec 2013 00:25:53 +0000 Subject: [PATCH 072/109] resonators plugin - redraw selected portal resonators after zooming out and then back in again --- plugins/draw-resonators.user.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/plugins/draw-resonators.user.js b/plugins/draw-resonators.user.js index 755b6d46..c18b048f 100644 --- a/plugins/draw-resonators.user.js +++ b/plugins/draw-resonators.user.js @@ -117,6 +117,13 @@ window.plugin.drawResonators.zoomListener = function() { ctrl.addClass('disabled').attr('title', 'Zoom in to show those.'); } else { ctrl.removeClass('disabled').attr('title', 'Select a portal to draw resos'); + window.plugin.drawResonators.levelLayerGroup.clearLayers(); + if (window.selectedPortal) { + var details = portalDetail.get(window.selectedPortal); + if (details) { + window.plugin.drawResonators.drawData(details); + } + } }; } From df81eeb2c8039d0132cc8861fa74a957cd1f319c Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Sun, 15 Dec 2013 18:52:03 +0100 Subject: [PATCH 073/109] don't use hard coded strings for app name --- mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java b/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java index 79ce1b9f..284ea249 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_NavigationHelper.java @@ -166,7 +166,7 @@ public class IITC_NavigationHelper extends ActionBarDrawerToggle implements OnIt } } - if (mDrawerLayout.isDrawerOpen(mDrawerLeft)) { + if (mDrawerLayout.isDrawerOpen(mDrawerLeft) || mPane == Pane.MAP) { mActionBar.setTitle(mIitc.getString(R.string.app_name)); } else { mActionBar.setTitle(mPane.label); @@ -341,7 +341,7 @@ public class IITC_NavigationHelper extends ActionBarDrawerToggle implements OnIt public static final Pane FACTION = new Pane("faction", "Faction", R.drawable.ic_action_cc_bcc); public static final Pane FULL = new Pane("full", "Full", R.drawable.ic_action_view_as_list); public static final Pane INFO = new Pane("info", "Info", R.drawable.ic_action_about); - public static final Pane MAP = new Pane("map", "IITC Mobile", R.drawable.ic_action_map); + public static final Pane MAP = new Pane("map", "Map", R.drawable.ic_action_map); public static final Pane PUBLIC = new Pane("public", "Public", R.drawable.ic_action_group); private int icon; From 332d16e89ace6aeb71f1c9b329c34709c97d9169 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 14 Dec 2013 05:22:29 +0000 Subject: [PATCH 074/109] portals list plugin - level colour background on level numbers - abbreviated faction to 3 characters, to save space - increased portal name column width --- plugins/portals-list.user.js | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/plugins/portals-list.user.js b/plugins/portals-list.user.js index 6b173449..63a149e3 100644 --- a/plugins/portals-list.user.js +++ b/plugins/portals-list.user.js @@ -64,16 +64,14 @@ window.plugin.portalslist.getPortals = function() { retval=true; var d = portal.options.data; - var teamN = window.TEAM_NONE; + var teamN = portal.options.team; - switch (d.team){ - case 'RESISTANCE' : + switch (teamN){ + case TEAM_RES: window.plugin.portalslist.resP++; - teamN = window.TEAM_RES break; - case 'ENLIGHTENED' : + case TEAM_ENL: window.plugin.portalslist.enlP++; - teamN = window.TEAM_ENL; break; } var l = window.getPortalLinks(i); @@ -155,17 +153,17 @@ window.plugin.portalslist.portalTable = function(sortBy, sortOrder, filter) { + 'Level' + 'Team' + 'Health' - + 'Resonator Count' - + 'Link Count' - + 'Field Count' + + 'Resonators' + + 'Links' + + 'Fields' $.each(portals, function(ind, portal) { if (filter === TEAM_NONE || filter === portal.teamN) { html += '' + '' + window.plugin.portalslist.getPortalLink(portal, portal.guid) + '' - + '' + portal.level + '' - + '' + portal.team + ''; + + '' + portal.level + '' + + '' + portal.team.substr(0,3) + ''; html += '' + portal.health + '' + '' + portal.resCount + '' @@ -260,7 +258,7 @@ var setup = function() { '#portalslist .filterRes { margin-top: 10px; background-color: #005684 }' + '#portalslist .filterEnl { margin-top: 10px; background-color: #017f01 }' + '#portalslist .disclaimer { margin-top: 10px; font-size:10px; }' + - '#portalslist .portalTitle { display: inline-block; width: 160px !important; min-width: 160px !important; max-width: 160px !important; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }' + + '#portalslist .portalTitle { display: inline-block; width: 240px !important; min-width: 240px !important; max-width: 160px !important; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }' + ''); // Setup sorting $(document).on('click.portalslist', '#portalslist table th', function() { From 045ec1b75541b53a866e0ea7a43af72d20a3a50b Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 14 Dec 2013 20:08:29 +0000 Subject: [PATCH 075/109] stock intel plugin to add the "I'd rather be using IITC" logo onto the map --- plugins/iitc-ditigal-bumper-sticker.user.js | 26 +++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 plugins/iitc-ditigal-bumper-sticker.user.js diff --git a/plugins/iitc-ditigal-bumper-sticker.user.js b/plugins/iitc-ditigal-bumper-sticker.user.js new file mode 100644 index 00000000..c30e5099 --- /dev/null +++ b/plugins/iitc-ditigal-bumper-sticker.user.js @@ -0,0 +1,26 @@ +// ==UserScript== +// @id iitc-plugin-portals-list@teo96 +// @name IITC Digital Bumper Sticker +// @category Stock +// @version 0.1.0 +// @namespace https://github.com/jonatkins/ingress-intel-total-conversion +// @updateURL @@UPDATEURL@@ +// @downloadURL @@DOWNLOADURL@@ +// @description [@@BUILDNAME@@-@@BUILDDATE@@] Adds a "I'd rather be using IITC" logo to the standard intel map. +// @include https://www.ingress.com/intel* +// @include http://www.ingress.com/intel* +// @match https://www.ingress.com/intel* +// @match http://www.ingress.com/intel* +// @grant none +// ==/UserScript== + +var logoDiv = document.createElement('div'); +logoDiv.setAttribute('style', "position: fixed; left: 30px; top: 130px; z-index: 100; pointer-events: none;"); + +var img = document.createElement('img'); +img.setAttribute('src', 'http://iitc.jonatkins.com/assets/img/prefer-iitc-small.png'); + +logoDiv.appendChild(img); + +var targetContainer = document.getElementById('dashboard_container'); +targetContainer.appendChild(logoDiv); From bc8c5ee29bca22fa465ff26c7bda24c5854f0a6c Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 14 Dec 2013 20:10:57 +0000 Subject: [PATCH 076/109] logos for iitc-digital-bumper-sticker plugin --- website/assets/img/prefer-iitc-small.png | Bin 0 -> 29809 bytes website/assets/img/prefer-iitc.png | Bin 0 -> 64467 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100755 website/assets/img/prefer-iitc-small.png create mode 100755 website/assets/img/prefer-iitc.png diff --git a/website/assets/img/prefer-iitc-small.png b/website/assets/img/prefer-iitc-small.png new file mode 100755 index 0000000000000000000000000000000000000000..21b36023f459108a3572059a7ed75342fb6218b8 GIT binary patch literal 29809 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

P$l1V)1{Jd!%EDDQMUYfqX_ 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 literal 0 HcmV?d00001 diff --git a/website/assets/img/prefer-iitc.png b/website/assets/img/prefer-iitc.png new file mode 100755 index 0000000000000000000000000000000000000000..5c6dc04767e7bb4cf57b9a013499896f2618579b GIT binary patch literal 64467 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%0D#yz!Q`hb0GvK4 zNK0sXFC4b}K*&AQ`Ja5s%g0){brMM3V1O*1xC=o%b%AV~8WCa}bubLt-wJIyzW?iY zv%Il9v}oiEMx3?(S^;f7=sGU27apfZMUxw#OQ&-myHqyu49Z=l(wa8XGFqN;r=!cK zBY(0{q|Wa2Z^{=YPchuWSJKADRCM77i%rRr=>!mc#jxa}dVz zvWPrGLYx(;G^CPAzBpmPvR1x$Qg>n|#4+g6^WmO@N=iwPlpI1DhyOuO0216#F)^Kj z_}NaC;Or#=wRETP#Y=>;qR@^}wwbGXntb^hBu*Zk-kpz+h?1ykYvh>XvPw6ky9YD^b&G&e=u+oNSp~q7{GQd)|B7(c!!>eud1vhd6W9xE2j% z)Anl2E2Kx0NdVi=e!fUyxoN*%=wX%Qm2+_!yM6t|pJUqC*;9oC(;S?5(lFkBs{M{r zZHE0&ETd;b&W6)yoLVU~=)QBdm-1g#r>LfJ0jH(xG#zI8e~=nsLJ|*Dh)eR~EXMio zbnh5Un2v*A> zw)4|$f&5j==CaTac|`_kqxK}(%;tH{NHf)T{pF*F+l?N7G-OJg@lSCu4Lt|hdddb7G}|7s1t9ipNac?RG_cb4<=$jG+viF7<%;(FN=RIG&DtrX(*p}gXdBR*eEOI6{QcPV!?lDhOyRz zF^ymQOJ6YT&>Ks(WGIc5lq6G&D}mJ_ubRTX)!+wQk5r2ETeFIxV!5WLqG9%5(8Qf+407+R;(Aan;}tu@e}iX{HU9e@Sv2M(j0 zRsWN!7wE%`dcwG-1%@~^TLoA#j#iU`!QBnlMhnITB`Br92?tUea_g4b?Y0&^z5wAX z9;>Y7*>;Ig9&9D_{Bb0VVs2RmGtlH60N%F)mVYkaTJ>^yn@dtuIbC|stAIw20P74pvHfJ9f+0_g^mErbAkL37nv8+=Y;4*cRpq z9zP{mOEw|SMO{vvWk-uK!Z=E{Hc<$)@DqIq3k6CYTpkCt^;>A~7iKj7DC!kdbKfQc zInmDc|EaW$BNcQ@4Y5xH_0+2WW{>F5abJ3r)MP(jNNF1SgluO({JzK@lAfQz*XQp2( zHy1(G?x)A&REAJo8$jk00&Xx#O&8NkqWV2rYb9gdJh(y^U1hz776{qPI+f@*$>_RQ zhwvU*UmV`1^#9-bx6;{IfhBN(7p@D`3L{Ac18G{a5Q{46!0QZrr*sNAR!%ob}|?>+&+e1qI&4@=;m)Os97Q59a=0!mu%QNHA-n z8PIw(jy|?I&3hekLXBfU&K^cP)ni!%3j1MAmX2_$KtNNNQFpBUYLBhRgT zNCptaT)P6RDJwN!JuskWppDd+VtlN+N7WG%!Q#Pg!1<;%E=oTNgd&+GnI*Xo5SN&y zUf?#O(Q*4}7}<+;xQ(=|3fWuv38crtjAOwHAqjCgIR{by`E|eg4DKm5xIG!osDxh4 zZO^a$Z6|$5+vC?H8oB+wt*IPxSLAX8$+<@{YqIX&uzm8wZo0~DL}^#_O2Sy&UYp{S zQ4W^u3LAw4{}n88Z94f{&F60Oe{1;=GgB3?BAMsKbLwEgsW~NS%*&<2m(ADSc%*b1 zrF|Z_HA!MhQ(RmY()R;g2_oAwv#D{5s&{PH4CIWhb#M{;4Ol| zkXTpBnHT00vbet5*`g^;+z4IVAOjGoM$h-{9So1Q2S)apNd`6x5d2{${1@va>iL4& zC}41+tkxmi?(OkYo1OSHJk*F|qOxg|MW#Qj%PO{}hl^o+ueKj0tR0<40n@n&qw;}F zK?9SIahs0Rwr^p|)L9y`#g6p8Gr3VuT1WCs-{^pF=#fn08qNY(=SMnjHRGBE=EK_+ z<9|z}fNk%z85(2-=tcnycPDOq9etHDkb15M{~9*=AROcz=xtuKJf*URt(2x6fHAG* z6A)!msHM@f94OYM_Z=}Y>xzXS0I*0@B#j*TWb>-!T0p+R6T}8%3v(Tvcj=~gp1_)j zXWbttA(Y2!Z{y8wR*v7z1Vqu+CcI~V{u{8(QKsSSBzOuho?L0)e`e)<-=se zAlvr-Ur11UI1{AA_i2a^+B4gEWv|9Up`EEGG(9uwV37c+odEZ^EIpE&6&J>ISKsJ$ z%BbeA`cR^;TK9deKYZ1OyxH;MQjOCRZGg_Ihycxz^h6ljKhD?%DaY3i%dLepE_GLq z(3Dp`59ftTwrL6$9B>FMV_#TJIr?rUVG{A;^B_?aws4Q?EywWaG!|C#xU2gyoQ>5g zJ5v{Q+Vma&hplQW3l5N9x0&J}cb=e-2=GNq)9&fyg;RR0S<$3FK(O>HB7hJ5JS$!9$;9!)|m_^A0hes66 zH0ZxlrAK6DUBsi;wkxCaC->xmeA9y=j|2^G?l-L4MbE8h09j;{`3ad4bdwTXifOIxODn9FN6g@=`jq?54*AZnBEOm>?qazX4EXxHGk`6U6vD{5j zj}g(tdD>S{P(Ap~P5u<2fd4@{XpRe#&>{;qojzDOUsgjomW@Y4R!af>)s2EoYdAy| zbc+qJ{y)y?-9Jg8^9@kUrvlz01CEYIbKYHHB)HqUzph;_u@0J_T5d-HS?u z4k!XSa#t6$5YRNa&V4GsZ4hUOJUA4IPpfA0{!O}R9cH5kE=IqBBmtWBnmQfIIg=qe zJu&KT3e3Y;N}Y!*ewH(Xb>ncFLU(nM<*Ko?dZZ{Rbx_&_`P3GW`wz`4B^k1joT#!) z9uUeXCcm+-Eixb^cAHPh&-l1Z)UK?ByH>`{JUEF>kBq$Q!jxpoA(OeQ+5fpTt`xG( zb^T&XW^Jvs44G8Z0+BAhA}=$P*eOBk?QA}n{o8_eGoGO9J+>xsMuq(dCMd$u^^MId z6FyG9iuE~<7dw}prYc@aays^ZANPv`)RgLN1_@9U>e4KPRfUQ5r3j+TWsos<+8_ z)_0iDiJQYLc5j}KvASuPBnhv9+??tt;O%MY=69r7YL*zmZV+0aIsJ`MS9F23B(KA8 z(wpcp+vEqx6EvkxsPSQ+77)%wBfK*1B zD0Uf0p!ThGOCasj+UPG?UI9+>KvOjjfkLl(GL|ymcS~cnv7t;M*J+Yw!7lO;kglXD z)H1J9FKy7CB%OKvaQf)2yA_$Xr)Bkr5xSge`8lKr?OU&ZORvv1D##lRg7fLr%{ttS z>%2TB!AX+evEC+;*U@dB$VKrtbKa?lPU9viRCFsWu3>DmWt+LX!T9kR;I8 zKUnF4@qMu1g|#;;Jl+tVTb%k^b7qvC{kFFqGy=nyzBih zU!TRTvH~W7;wmPHC(b5L5QIJwc#G|{kj9?=PrJHcaQz`n=VK$CSc2jJzhY>R=~@L) zKZo$Y#E+YA;3PE2p5Y*p3q@pulfmod=>$vEVos8dRHtMpJ?}2n(T+hAZr3hRZSV9yPz3=f3h<`AjL=hT4+knrBqBO7o4x@13X-ugS~tiRbn9(&h|w>p-n9r&;j z)@0DRUtaOFHPe#VoG}GeDL3 zj{S;d$jDI);!DKm=Yv3_Dltc)3TtzHE_nort^}nRsscI}xGV=U8cb3^1CgjqGl9Pk z!stsaqh~xFcbYk|6u&=f3%&vXd4c}51O?PM+Kk6qQSeJ^B)nXH&&s44Ukp#C*kfle z>$R#?HlbhR@&D35Vf-3!DZa1MB?W3oVY5q}t8Je*QZ{IgXaa3Xp|7-GGR7hiua4~d${jEajyylU{%it_y#jM z0^_CW1&VibYt7Ijq0|RRPK*1ZATU|s9I(1}!STbq(0ZZ9!T7f)Tfe_~}acBs;OW!9x;ADOA6x%CAa0kr%eR>16|P5*8`)(1}Cd~PhY_# zva`fiPu9;0hVXX|ZhE4T(IU;V$3&yD3ab2XNkU$^B4}MOvn(tUGvx253sb8#{9X1( z^ctnL``-Mr{FD(*um$;ba~xn@`XXM`(X8=A78QGf$LT=fPU71`RMz3kIqN|>CrmMKoIc`Yo49mU zO2PzolN1lqSAy}aT;F=k{=vrnqCZXfN=^E2HLVPg- zh!U7om;3w5S(h2H*>@P~n_??x4Uxe#I0)>AFPn+FHIsQ}_4lKU z=*1wYt+XMqpYLx2IZ)m^Hb9=KKL(4}T)ACIegiY0mMF0r&ae*?ct#H=xn7rl%xY+* z2*{q_X|%=@!sl*}hjiMk?UV|^DRW`26glXJHC^b^?;WMqu!H4X*2TbIz-IPmh@U_6{snyxaQ$($(VbgaffDZC z`@;87FT!UGR@cC3Se9LWQ97q1Xi@9o3F=R7bs@{-0E-k+5LdDG)2h}qx(THJ8utf9 zfrg&I?2nw@?WS`dKE+M7ocfzwS*JAN-Fs}`*^TD)c@^)XmrSr@d&3LLX$GWL(uZVA zSrcq=Pl|Q-$NLF9oq^EM)%~6EXcjH-CKwsp=N(BnJ!kSPJhqg#w4z%hLu{Z9$$o;| zI!z@>td@}-;0SH+=U=zyMrQruGOrCO@UIsUvRpY-96I-2fTVR2GTwESNMBEC5JoONMNEU7%dHD^V$nK8c^>qqMyC=YNe? z^ybsc{jo^}GzmMl2BgtjAV4K}e!D?*uYASwu zo2_Q75;_JnqcEy3t~X$;6MG1VG3J5cKx}bc!{_U5yfJJ0n z1Mq|hJHqtPZxmPHkJo{xEDWnk?eresna_Irvcvz3^e^3bIhBMT- z>-fOaS5oVLV9(EZ(LC2O7n}eCm_zX(0&YTvxQyX6G5=49~O$iv;=PJx`tm5JfD$770iFkRZ!1Z}qTp*Jwk| z)%!Uk#)g75+VXbtJ_f3M$MwsL3{Z&cKos2(!PY$Iy>trwi-MZVNFPT+!u6$}7)C>2 z!DZ3tkhhtF6*HQ|Rnv-P1GVefC!8Nz;QmESXZcqLSrmPZp9|34P0c_u&4kqaVO+9h z`06HBU|EtUDRL>4b{FY=mJ@8QcXflRkYJ9{X5RWCFwS!C3mll6$|~^0>v$6IlC|3E z)ONG7y9cC*;jUAbm`+m4#U0*0XY|)pMU#G5Jg{Fia72{Om+t!J))7}5z5DXBycJ(= zNu~X6gy`4=f+hiXVFr&L*dS-emNNcgUg$ zYjCPNgK#l~bI|lh3rUr9Xc>h8;q4$MXw%o}hm9;}?lq1=Bx-_m+U@zsBjC2&bfih_ zJCFB*Af5BNIP?BMcRu2W^P(-grvTYjpmgLoI<72fjVdMy9hg9&`!?12I3!V`qjI+M zbA#C4&Dqtg$tn(Yll|;#&lYD{XF2qRCCpkkgXTvA9D@bMh6y?6m+4MFH4XSDtFq$~ zndbmD5b8P$UM{~_WfF-xoe%`mPgnB*9Qj{oVB%B{{Yd9oW_;Wna%qt zw7Z6m2Z%W)uzdl{5rrCq?eA!AtZ`<2CUc57G784%*9aHs^yrhW+@Oy_WbA-SW z^(#~dgy{v($q8zt_P8_*ZSX`zdDP*!1N9aBgc?VWhHui*Lj2Axn?H9{mN9qb`^XPs zIUu^(ojD7e#D06!(ec>$eC8E}>*K5AtCNG4qn!1hOk3j%)fbPyjqc<Zi6!b6#f5 z6nWIRUcU0uzFCGE{a`Q(qiQ*Uc0T=;^Ez5+fKQhrZRfr38&WM+@m1GnJ6B_8QtDOh zl`;lmpC{R(#Zu{fECkZSmKyOCcl7DBvp_Ay7)i=fw9LD|i{rLp?S@zH4bJ&bT=$OJ zHXA+^hYw5&-Qqtm?NX+8uY{v=AdFO;mX(-@8&SNgw?qN%>vowdf3G7TPiK8*sv(F> zA5dz&zz0pMy#U3LhaGOCd{%RUP>E}{fsPM=dkE3&CH`p}NQ+u`g#XkIyImLzb)ZCX znF~>8${c?~#)E`q(ZY?ao$NZZ&v)t7;IuoyAeyPRd4PK9YW);Hn2~U`TP*Gv!Q8`wDzAt;o1Hgd9a-tQ!a=_MjZ_|vt7YN2 zAZD4q0b*z0n0uf)f2@7?JoUzEQHX~ybPUsgGw@==$QUy)`{b=7{EZ&qqa1T@oYjGY zyq=`x$#3KmR0VW-Z5EuwbfKo~BbIJ@gZmEBP73jvdkfQzpVL5F+ok2w)LN+pKS z0I$cZ*|8u0Yk#WEi#w|`#NF^P_nE4`&VX%%xu+n}*puf?Q2obx@dP@6sn*dy=Ii-u z`E#lsrj8!AcbB?T5vE>MQs!GN@*Yr-m5{ii+e&EX7a2<0-7>!Wvc`=qR9^B%JNn$o z>$(f|&lA=AjW~M4o6ImZSXZhWl|nuKZkSXQGH@Y?1nw1_zVNO5wW$<%ITo>>M6Bt~ zzQpE#oys5XhGmF!*g%KPh^FmM*u0*IzVfM(%zTeWU7qp0EwtCW=J13J&)Rg zFGvrn`~1-sS=;QTntRS9DKa2KtGx8xlOAFKSpLwtDy?qc%Ko%tc-p2iPuLz%ZYIU+ zn3e*eCn+ztdli9$DRN#%b?Eaar~{?hqfbEwI-kWTKZCH_u}L_K<1pu;o=cCIK@I)n zh@njAA?)g{O!ng$Dgqc|mVP2NK5ym6YTHc?;!M*Qs5$fVi!r@45xpkdWE8RTgjIVl zYqSlCAg#2Qi?wgHX7XpZpA`fXvfkh0r8mCoAsRQ575NAPcwDC0PY`%4&gV|Ye-GqO zSV*Zx3!gfB9bEw0Ns`KpbmWiSDnY1gn9h{#N4CRpzb|_tHW8B=DP8*QNct&}A?zJZ z#3Ms035bLBT9+a~o6~_1pYdr3E8kU)>kLFiQJ>d=Bn4uNVR)BvW9n<}aS1E*yMDS} zJzjc0`qdez`S_2=d#*NKtjn5MdaXj;33mjZ8pJj#ZLX?}gGR-<7iY>0rWj)hOIpeQy8 zio;Z?50sW~^l$zqN3M25Q_yB?W(tv2z;=d@p)c)BJAG90Eg>%hX@f{;;)d1`aEHi1 z-!N#wJ670+z84A*f)AmZ#bUC&tesylsPBeY0!)kWh}Op2&u5}Q>lldNhlow@34M2? zdP4z=xKw<#tIu)OBKa3N*67NcTJQ;TVx1Lv=08jdh3@QP%Au{QGn^*Vkq_l~af)P& zY_Y8g26_PG-w`M6u^Q~@!+q?Z=2KF>#!M37>c7~&d@=X)S60EuSMY$R)8l!Kq1KZ# z0(JX8hUqx(JE~^SNTSSq&s7_QS4WRfZu@EejG%~sIr~_*>8xAKyT8wq!~bY}L#$(` z;}y=MLwy~6q^6{?d7Oj#BnlvMFm|xmd`D=Y*gCCAE?k}NeHf{*84>Pbqb#Hm0@J_z04ArL!xgZSDuksY6%PoD33o;%!Q_nCTg z;6<)u9-gq^G~+I@Q!5^fl-RJbxVo-FND9#QYOpzXAF2M4Bu_KpN2Gz);{Nl?rnrG% zaGUj?fx^z0-_H|wI5h61Mxo+%TLMfc_b-e+uE>y$Z?+ek=oWncGF-e245|!;@7xHn z?yjX^rKM3CpsNcI+39RPq2Dp|y<2&H=)1vLe!dC-pxG);1pwTRbLNiBP^jS_Os;NAd5wzLEmRHTKnx`>u0TluD;D)8fK%K_i|;mE9E z!0mUG8)1(VqaUR>M@W#PDWS&4@|$bFK;3>am+qToH#88ZGR7C$jmIX#ubu(Rx0xJ4 z#C{R7aa)k6+Z)6MbcLsvFe=>rL#6scoSrN)8TiW7e37Y}suAhAsrAb1ORi2_v70;5 zxXWkO{XNgFwqFA#*gl?epx?&N z8|wsaZf2y*H&tDh68%yU?r8(|Y4#y4PPKU!e_>LbF~Y)#KsM|B)XDSQvO!sK#Yu3! ztuR+Y|3-vdUaSa`nO!i4wjj;M9NhO->XufnQlFcxHt0E4gyUyVVZpZK87%NQ%d6^) zab>a+c3dk3JP`K_4K&g!TcoNzME&=Qt@cwVL{G z+St@-Eq|NmP;1>NMK-Rl z4a)}5lVYYn*#G*IVDRK{Q33UNOfj5?ZN$cIoF)}M47DOHUIpG(w~HjgV%EJ z*J$Th;BR%1Pc;VE&1lgJ*-guE%S7*fQS7oQlVhQ6>s&8;s#8q6`_uys&Y${Bvuj1^ z`jzG^fI#y_A$(p(bpbnA#(!sGu_^x^1>77xUNe3~fbT?%sj6ykTCJ-vmS2-T`e7AE z`SzDa#wr;XeD|2AfiXmhLzp<|me^~pGw|F(Tr1wr@#^5)Gcds+ey-B{C-$gi;^Mak zcI3Q;nzjf=B=jmyUr^$gasxCcJ_-!~#V_E3J!bdy#7s_$eTFn59wv7r8H9E78 zWE$CL+J{H=tq@+tz(`qaUR2O;y7#SgqLleK^5{i|zGfiv@+w=G_!#L!Fe4+PhNHi9 z{-((F3s$Yfiz4J4AeJ}}Z#E)zcP|8hfk{77JiFnfuE&M(=-b61cwK$Xg-Eh@&jU z!=6_6N)1N@)!xbQeZ3wIaHyVj3bO|+P0mW1oZ2=C`HkCe=E$$fv--Ygq4(6m`BO_SO?)qgYaZso4V6+7sx=15I>AI_1>y0Lu8 zm`~!iMrO0tZ4HAXA@1r|$#LT;@ABx2i*!0H??<#7Z&vo6TWoM31|?n&_aR<~bnX2!{?{PDn2v6?Ol<5Dx(HUZtrvD(Nk`Sk8T~pico>%C#0dvMy-WX6u zdnG_vZZ>;}@!U`m{uMre_Rt8P2sk#q4l{7yGFho3gAvg#?NOA=hkoZ+egFeIUR8&x ztAB$#7iz70etwEoC8)XCC65_Sf-@6yv@c!m#vFO1cpbile@#!omPr^-(H@UiDcERZ zZ8SW+#>%98-j_S(x=7rC=MzGarsXD?ZvNrI8S<98^~DJ7E5}!&*!^p9M@+rs|kZiR6of#Qqo6UQD@@?EG%FZnLmE z{mL65#l=f9NG6G%TW9}}0uy(idOVNJG|vfwir1Vlz5{uK4S+sA-gR*+=%D>b=|F|N z4%H{tNklG8Ls%bUJxxSv>5Py7+#CKv?A#E`$G-0sz=ym4>=yHA4Gr!f{AUJp1s!NB zr%!CwNcq4REQYiexz%is_f8bm|!Ggkn_YJX3<9xmG73N zx+ekQi5AEHnoO?t{K6)V$2OhzyN3IIjN7B}H!;eo`I*;kIBH6q=oyg{dW5lGhs}bF z_k`Z)Ih12RTH+>HG99tTA078sJnud)vUy%&Jp{gukc%Cr)#2V}ahW{|3Y;B$y1W2x<9zw zPiv($E|!scjyy6$Ev}2NXJkv__dWS+muZHrg|JTd$~x)8`FHh)^D}i}U+;Ga5jc6*xRcb{tK&2aP zd1!FENzZmkTz)5eCT^zC6vs*ml`~)Wiv-m;N*V{Owu|9nhAW7Ny%CtxHc5!<4e9~)qts`LTGRE;Br!SxhSAYy=1N;@0 zGIZ2SsVrwvEavtwIv|krM}?^Z4_pxK+$P|s25E`ydh4ulSnkR_umA3+6GQ~gFU58a zGx4inZv?tKWZXwZ0vl8EK-?|HAoQct6VnlLgiBgjch%y}Rmp|x9lu7xx-5Sec2|eD zh!*|>`A@0`hh&b`n@^@q!ss7VsZK<-hIZS=)ahBpE=kJ^BYSpA_TLh$-QMK(kX7%C zoVk;~K}chnJ>D?L8~64346ERd!@Vrx^m#MTwfXLPtlBMT30duU=T}g)T=AjSXK5yP z+SLGt&hAoq4)vOaP}91pq{Cg07o9?!kOVEq`V6?BiAsvG^(cCH4VzVWOSd?CYTZ@jdjM1L4+q_WH-gG1f5{C~hxx zZ_Tr)&EqY5Aa&TU8FH_g761?h7C{12*cuwDa(HXBRJ{sC_}mLWP*8A`2{`q}xwL-o z_@SDh0<({2&&v)a+Lt1}bP)ml+i^MvB5kDIF>Ulj9!cLJiEIwK6(|MQwS@fdezO3?TqDqF_A1zd``(3b9A=SZgscIysZlU&wFWP~?TAHC+&WaQ+9v#4p2Y&k-tC_a*R`hd&r8m=PB4J?EFWip#*Y~`po*RuuCG4FX`>8$!^4V?T?7R7dM_M%NAnALAq_&_FVrfNMz{UswaTc~?^O2(u znrQSrPJQM^D8OUpYf|zY7PIFM`N8KXbKIt*dd9jw@dL{jKZsMKtZgJe0Pp>xc+WP`)k)+EZqjdXIrWsYc6jQZZ$j%_4Cp+-7aMWRL2QNJI#;2guP# z+D82mgP5}I*{%Uy^aRTL74uXSSY2O*=e_736RKcUUIn$=b1(~9h#^)dsv129Y-qPS z31NoG-{io0TO6gI8b42ofB<0m{0{w6okXV`Bdx0uG!s>$C@>f1n)Z_!waOAh;cxzu zYoFYa*3M&nX&prZTZD*y=^KCqnKSR?d7d)otxK-KKFZtJ8WioN%P=a%Umo5+w4gmi zOPctk0B$(C#UJX+!r0BE^In~SN%zJo?6v5x{5oDkzfM4>Y=>=j+DpeO@;mdNbgoG? zN-lJv5X1Qo-dUWUY43YDV??=GD&DWsDvix+`#|n<0(f-aG-zX+MIb^Z&&#n8u5a9YIwHA&mk(?!MP{FJBk zZ;1%_0fy#SV$EaiqOr!Fs z@(B?MWtR~86v`-(cxssOn&qtVX?HNZxheSot2y+U8H9{uP&eLa&)Dt5a7llPM0$Kw zL(S0vd7Hci#LL@pu#tG`O_uJG2XES(dqxylgvKi+&4xm?(n8bx_dBG0?7ZgUdd=sK zLLpUz)W3x-13vPjDSfJeJnW7cEI^y{_2TwIL6-eO3Bx63NxV9DrTj)dN03oBUk7Mt z0bdXmLL=6k9f)pt|F7yHRf3f*Q>FsW2Nk*>36yamWzCER4RaAcmi=~L`qjK;g6SpD5g{3?`F>ZD+p1v{!peV zYp+Cf5^!JDd>3wiy59Lj^0f8i86-6wH&FB_cw_^J0D3J%!&G=-zjnTDkqB{{)efz z4vMP__5kn9;2xad1eZXN;10pv9fCW-oxvqRg1aO*L4vzWa0njU-Q9P-_ug*p-&1vK z?z!i5_v!x0X}B6vlLaMs+dt4KC<*P`J^!88LDP>Brj=sGmK*}Z^TSo9h^r(Q1TjxWLx zL*`|*>ezI4`i+&+Gf4rRKf>{z(8v}leTIHH{4L#+P)T90Ln(H}$)m(qd z49vGoykpVptd+Q|kaqq>^(V=^3dp6|o>nHP+aa7()X0H-k^@NxyIcXf`OM#GhxsrO#mWjFEh_jaPJOC#F%IN@yvZ_hy56U z0dROYwD?Y1lvjx`3!sd>0U$0)FV3|zS=v=C(P^Z>wzM!%dsT6$0K6c?Um1W`-k}{w_wOZ?yZd89qkAq2v=>{zL`^ncx?9TJbF+JDxo!45 zv*e_^MIt}Qq^@v~66;jTkLA%@->l!?lRl`-{<4%D4`6zB9l{_i0Vn^%5~(%%fkG$n zNf^ZoJ#``Fwo|ABqQ!nMP$_^z!66Ele%ELo8ro#t@@HW zJOyj5R|=oQA2se~qz;c#P5#>$$DBv(CJ)*&=zRjIqlA3GdZchwmEHm7i#A{jN zPFD~3gj<_UljD=^E5YBLGP2vZ%w)h1!T^lT03TLfCOVz7(d6I$zpXLGG4N|7&n?32a#EgPCmze zU8KatX~Z5n@G^^zsSOyT2Kwe9>BOILzdj1idv9{xZHzgt#Z;aI88TBY#9uQVk_YY; z#U*e@s-6fwsC6u*Dw*SK<2@%mE68H&elU83-rxY=)lIL%?_ZvyTK-`bh4~k`k6OKW z1}ON8UQX2Cgh>{Ac351I@Z$yw1=*)`Yhccxi#jZ~rhGVUXlAPLG{VkJaT*XhFnaaG z=BEip3ItdqRn+6JOV7PK#0Zk$9_3!1w7Ttr74Uv!hHGR7X%L3f%ZpltGT_f* z067S)Y&kBiCb|H}M@)xqy^0o;6wGW)JtSNWNJ-+iY3z2(4*<_`NS7EC9Z!r^Y>x&> zJeoO{!w$wFOiAqBK40SwfTF3YQtT78T$2p*&-^Rd=1RRm9%E0!Ri;A!6Zs7jD5i5> z<-+6?Z*}Os)P1cJ3Cg+%M^sE3D5s%)D?RN`E#ztsB_GGh>$R15<%}+L3%WN@DOIoq{Ix%&O~!qdW{=#MZn$QkarypbNE-4k$*V(->5yn~3sOgizwh1OzInNflAwC@U3OKi<_ zVB^eXCs{XzHIj=ItFcFo!tjAgEB+T=5dh$R-7Wk3zsQ z3=@2O0%KFjz8oln!xl;89QuV-Cd!n{ZpvIr+@Hlm35(f3&IOUP^5@8an{MO%UXa%j zDcemK2HvejK&uq041?&$d7=UwNPZ*+v(-Iz-4p>!sLFjbjH!7^>Q}e78|YdcZ~e!|J;lyXx;i>@ zIF~T4qn^_AJz z%paeJd*^|4FmIYP_o!tSH$t1?k;DyGPVj=qSd zra00Te_zlp!@)Z|dQeT^J4uN}ma{O!+QlvQ!jmGnqot#NMoC5M?MSvI3@S()rQc1j zBzim=N&70=c}@lgdU=8uCM-Vs(m@r?LlfF6I+L$Vz7-Kcsu2(2UHXoBmV(|rihSmQ zlPE?RTor_g{i41fLCqFYMS(VBayp{anN1vSkdAOzP^6vu3OBI~jNVsja-&h35mh!` zV7ETr5Ify8`{T+n4waG>v>1s?oF+(nPk!!lLjx2ELO&C+6=DALU7N#l`T3Z5v30u~ zCSyVrHk@&`^#Y;Cd`8eb*=yZIRYN3Z#ML>kKTHCu&bxQfc> zWNL4Jb$3ReHs1%;y(0QCu}d>zJJUcq$g}OepP9%e%nz=sI{iFOVTi6@g>;d|I{{EB zs(k(Q-*(UP_GAIj1o~pi46e9AGgykuE`as75~;lti1F{*ZO;PJKJaUaIC{{%Y`}V4 ziw*4{@`tk6&BfJ6Oe7>T_601P1Y-gVV_V6FkK?yASnhRMzXqHJG|D<;Z^S|HZ{3&G z)Q5?qsxnpd@I<~>ffQ(k)s$Dm5k>{lcLKI;V!e=9vl2d)fHn~dcP0OSYmAphNquvey{(FYaGz1TrzwWKV7-TVmrbny z$`6O+(EYyq*t^PQHu?F&P#1*R^>?SO$gG}Y2z!O03t|jIl0F}xw}EH0STaHI>M)I$ zdQ-qDJz_!@7GuP=2BeZU_8OK_a-cW_=|@ZM0})aL{4Tro$G~h7`NN9eL$9*hxsGi9 zcPk@gnFeQkXiDozG=#NjXEY;P{5|4IJ&oTQa`P9$3#C z2_}CKIT*B}j=VGV`_%pTAD6Sh_^IPx?Cl4~Egh#ji2Qv0F*V9TIx+qqsw7zh+Tp(q z5%~e33G{bW9k8a!?_N(gJ=e4_#dNLtFg2(|wAqTnD8D&Z zd4~~I$*11S%x~*B4KPX%%F}!=FFa3F)N9V4O^_}?!iZRRgHb`#U1Wc*S|Kax-btW%ROU4Z zT(L6t2jhK=NNp38*`-EtRn2TXSZIg86o&52y>QirLi0*_9)G!c4wKt;*;cgTma|wV z4(k?7Pd04W0#C@$W57Ga>84T_;YjkWIxLwQ0ML@|_hZnJzvIg({xeO-G32xB5gnMF z?uVTx%cyyL*e+5ZJZG*Um5nFl6(_u=&z*a}!rH=JcsOmjvXh6wV8V0_N)c(?0g(co6dy`p!fcU~{olO*Ew)*H z%bb{OgIGLH-4OO@7d@+68VUhVrY+AgM8 z1w>UPFHxb-U!d)%RKo$~x-yb-w)k_cH|CzV<#RuaY9Qts!KE{ek5hmH=7q868LgsRr@!`GGk=r41%?MJGX2RmxbUqP7; zfm=+X%X}b20YFvERe4>S zE>*j<#-q_)@8x@DQ4uMBjYE71f(xIt3ic7^tIr>_j3P5C{dltlt1wC{ekwCc89Xon ztpuGKBTjf7+l&FI)y(3_1)ctppiYjlCjw(NkNReND`3KHI4ktij`G}1R*w^dCtf7m zmw{PBAO+Ic`8XzY8ddgS_|VLaQQv%X2O>75QF`0}>pu1o_?$QJ+2xu1>MxzrXC){OS^`lbMOmh3?$ zCYGnpm8t}S*t_N}lt1Tm5Y29+8Q(VnB~}ICpeEhqT{<+XfCMrl`Y!t`H5nAw-Q#US zHbQE+kb)k~UE@)OuAx|1H%KJ$QqqLz7457D@b2yqN;dD|WD(eH1=&3Zr)wF59V z+OSQp?8SY>MgZy?nk=>?^xyf=FdZhbJLQ|z-PdTZ{DOkh)tu)+~!1R!sa06 zodlH_EyL!Y-PH?OAjLE4bu{3~GMK>Lf8V&Yt;n&kcyry9h9sT&Gi=&iVJ6aG*X#W% z!KAk+)5{5ah-=jg1Vj!S zM+j@jo+7?4rUd`67}MGx7Vk>#ZSNJZe6q~)w6f#E zEaQQ=IE=X6?sgX5h_k)2WFn}}RKDl)B>Y(Fl_ z*1J$^^>+=>Il1=#zClfgZ~065os`DxK+%PqMyG+?k9j!%RRO(!OB4q4GR7-h?i~&N z$%fy}u*)eM7dzap_laip4`ibA0kZ~)+xb~70-5fK7!}krVSd%658iD;Hpf#BK-WCwDOR_Lh zzZ?Bte24fJJM&F(sLU%g_&!K=bSln2-tH*5B zv_3xJ=QQYk`Tc<;`@KnFu{gK*Xi^Be9#dzg5V$2Vcx4Z61!JvdUyIU0BfUp|x5C-ME>whn8mGHUT$@>8 zjb|gO=9n~Lj5T5a&2h|JL&{?p#rGJMyk}PUg@SDU5(_&LE|n-!{ck{b4#X8QID~F| zUi8V~s7ccV;b59gcg{|t{#2iu-#ag#okAuohqnWJwMaSMxcD2^)|yP z1vy*pTjGCn4aOkfo@-E`@Isu807#XKTR5&4kwS!qo5-a4MI)wz}4oYD4-G>>WuYLRaKEP{L;q~8O}k3!RyW6|On zd?EF98F4yp`0?e-aY>144^psLebKOxXBA35+K+leH_SCVtWhSIFY&WDg!H!AL+NRa z`UkNw3o7T+ON`BSaOL~enlryy!AIR!-a$Y0{kPf><0Vz$Qx|N)Zv2>;${mw!I+Kx@ z?x9%N942|5%{{QUsQap|o+USBSi7NuoZM?bq0!d~$4o~oPdi3+ZMU1@a1p_YA2rN; z(P3{e$X*BQOCI@$Bd@!3nE&cO?&2vekK^O)h}hl5P^tgNkJgOw1hjhT_9LlBHuT)K_z?>6#D z?zLtjA@RIbjuk>nJ`mgftRZmo7#?SB9hxcat#qRT1c*`}2Qm9i%noxWhus!NFVR=~ z5l__rmn!E(23>i4sPgYhV*bX00g@ArD(Ek0?$=de&N<&0F~skcYN8tXpNRARLAn$+ z$~^HIWxNf+MoDzgB~_uWnW{ix%v@|jldv=WS1hb#P#(Ssei7-{00%V9FK@e*Us0J~ zKoY_imDn6V^=Bt$SAslNu4wf=X14eCbwL_aou5W8Yf%+-R$Gv@nNlg|!^~6J6i}1x zTUdIVc3L|9vyki zb7VlqntM0DBvx0o_N!IyQSmyZ#x-LIwBoSJo)~zSCJ&;RIcC%Q9s&oO2;B84lT`!q z%h0URwa|>p-mmZdgkGNcSG#Xtk6Tg+b429izLIAi!B<67-!t{zRi)*4>9k(~S0z1G z1~qTWEd_|vDuk2^@u&wUqlC@&ALSmXG9aNb))?^9G2Jiy3hkbNTHId5P8k?!iwkbh zk8x;1Zuw_vQI`qTmMp3f0~%QWHf1Yj(-Q+uTf3@`{nua4k%cdWHKrJ8v6|l4-4FDH zMu;kdySS1%8sBAU&kmT3pn4SnG}#_62#G_m%RK%K#~+{qa%KX}9(FpoSD0ehudyfY zu7?Pc$9UAkZui+~e=&jmm21CEFLWu3q39%Gz=WvEV!(J@!OGdX+tgQFPWBTcCCe{T zC+1-qKVYKfrL{de!{~QGzMk@~3EZ?i@y~DzHtwe>7zs?DjmOoS1$Fe&11FqW#BMRn zB=wAMc1FMqulpHMJrVsA-+J=pho9>7xit;wjy}6N8|JJ5@ItprIbD#B2O8!@v5yJo zv2NrM?g>9y;h9%{j*=`|;alb^kbYWxxSXthAj$uyC8k)o`~)?w3#fC>O-5)8+%y%H z8|8uvRA<4xYT9O!%}k$j1W9qLpubU0O6Pvdim)Hmh7CqxyYJdQZWyXz+o3hy`DC&) zKsgl3P#?_?ypYgKua*(h!X{W{6~3VQ=dR)NC57GYdiWibzT)9Vw9ZGMHHIiELFsds zYr>Nq<&&SLm{!1(h{*q}9x@P_JT_Kc#<}xIRjqd^+fC@)w2}i<1#XPI78%f@^8I(S zmN4vD5->@vHrbqChfI9B$#S04$+^r)cYCXzByIL5_l65430vahgcQdR3Abjwkdck4~${I%8m8nef zN`GN{8)tPuk`Oqm8s_vtL2J!M8v(=>cH!8|IT_P&1$ZCMtP)mzRHP>;n}@d%Kyg`GN|lWBaP@eq`X&qP~Tp zJK5B1(17`A<83<1=?#X@gHnjUiECcq4_`7ko=OmuBw7Z3CItvG$15XYMrY6yifESf zwrWx1mMB~>%YxB*pm5!5m)Wtq9c%D+lbElhMo&+cADpk~|E8gtmBd@|qOAq|rVa>) z-s*05A6_Do%N9>bO*HQ;>}j{WNz3L^u0D?2GSm3rTve0H?Zt}UPQoVi>oGs~;NlH< zCK=Eafg5djM{PtFu}BeN@R|Hp7lI!^L-`jONiGLuNi&`2vsZX?E7D{wFvT}2!Mg4<6V(&fR)rpK+T#6Epq}8^e z(RdY_@%zxIJuu5-1*D+yeb9nZ1G(KFvc^I^yb9cjfAZf5tx?*_RmAw|w@h1`^&7N5 zHWR1D5@*&F?=`;eRxH)lB4SQ%sK;7i=vAqjy{k3W#i8-`S-NXQCh5I@1yv=ZT)?hS z$~GphEXprud~Y(Ko~0o>0HObg=V}S*+Y_~2IUC&K3tFc~5PheW&a5kJ>c!o5V&1r) z&NA8EB|jo|VkDG91Xr$PwCp2$wXU3k(#_CSL;CPh*k7gU1}OI5AL2YN!iUE=Z#v;Bn{R` zXM&Lzk+ELk;xQjshidIolS98|3qltiJkcxs2MZ=R!yAOV89O47$j$l>LDZpGSlwYJ zgjM#7Znu!HrrJD0FjZg6YBupRu)eg371{6)Nsgl(0oGyvar>%*;J%XhJMxh$!_?13 zp#jY?j~ylLkT;dze|4r42YcUnD6?DN+R`~mq&{S4SI9fsZb(|X7UmTFx%()R6O@pO z3?z-5SqeT1JoUXk>ODQAbaYw@U4J2&f2EEu;lypi#!rPmikwDcZp8D^m`@0|0 z)e_-VO<~pNHL?7bacI0lxiu!q6$0nsa<1}%(OH_9O4TePQn4zsh@0k^gaD71!qoQbr5Q^Ue(zhlV%5N7Qly?afPXZ#VOoXuJM@<`E zgP{kyLqJd2_c-$rJXsaYkvd=nW6d3CGcIy#F!*xIPpzt9y7Cjh;zdXpp}3upx-SZ* zpPNaKYKL4=sLjZZW^C}~Vh^kC7fJCAnNfEZrL&C5P6xN$B32H!1sP|2K<(67dH zxtB8WhfQMY2NFuR8EEx9<8Gc3`n!erasV({^mLVEZPrtZGaGVkpmmUC7#hawCUvq3 zWvU%&E)<>PLKAw$_T3-zIr|y#3KF_qPfG7qvR z&594PyVa#H`4;=F10&>naim~)6c_QCvd{9hZ+Z#s(VCDPbuNOmGHK&_C>ta0pNc`& zKnkR|C-eYDy6YtJf8ct}5MFK=d5?bNX$xXknge&IM^XK3JjEstMVd3Xrh3|+wVmuJ zB`z&&Ng@MTgPh($Z?T*Ljf1d~GnO4&PF_Aq2#GGAsGWmKH|gc8^ar8icEFl$EiP4c z95r&a#D_Y2t8!_@>BgIgGtLx1m1grE_j}ZS`5$cTYPg?7N`Q=FIrq$4L>b9Xs^8Ot zE$o6>AXQgtaDZ|_9y(8Y1M5FR$9DEyhxRprFBkWSPIy1eyJt1#4e7ZN6=4djfJkwcV-3Y>ku6i^BWN|+ z(e>sQGv8`j;_|zIN&z|GlMOV=IICYH#L4xFw38u?bXzZ$m4&fI$Aaz%MR;H9bnBy4 zOTMMFpMCb-D|hTppAnR%cNTnDVS#%9f-9W`5Wt1@J@shw$>_uQ3e04P6*Te+glAqV zb#z_ML)P$s-3~kpmJEBo#9Q~IA$1VcRZNUFueaWzGbs(4I1&_}R@>5T4aCtnCt?a3 zT*iw=a!PADMPa>(1ryRMkdltpSCYli*!VxIvG`L_be8Yz8Ms&kh$W}5p;%Uxh+Dx| zVbNW`6iSl(Ch@6i*K2OSUY+h!Mxtj6z6S4D(4Oy2;%~{)&bl3FFJ|=(-Awn_Cps7X zn8-lB(?fU}=2t}ubZ!c%vz^;mCck5Q@A-myUi12(wDkJ(lrn29s8lBCBQ%Seu27-w z?t0^{Yxd}%CeG$CBs1}iWN|A6THiG&<62kEkRm+9us-@ef1!g<1P9}_Th(8YyW^dg#(}|6s|B)9ouWv-S<@f3|Ul9Ou z@YyE>_8_8emVFKbE#Vp@-Ae_*G<@>M*fc;;D~-W;VU$kudwkH+3S_dqbSj+}jwhd< z=dl$Pfm4$2{V0JVqnf(YRHT(E6?{P(fxC}U5n%w>>7VB3>vRtOnv(6sPlcnMU~iN- z*dzX-H~p+sBk@B5_$*JB+<7yb_Y+hsfLtDqY`I@Jfdi(S*Gl61+VGPu7CF3rPDqMN zU*LgXM+OVLEb}@oVf`KOEr~A8$jL>57da-5t2umDu0qea1&KdMMlPoiS$7kAdPCr# zb~vHck>bgnb}9oBU7ZivXtS;sFlxe5yaGdpc{exDwEH|8nzq=$8coXj66$+VzJ#vW z_FEQeY~(+(Ymc6+5$%>`_YJ9iB=a9ZLttjc-)BdbtpFu`me+B$qxzNiE?t6;(iHqA<)P$(b!Q zB#^7@{D!!GZDIG9lpHO(#uUUC9`FWQA)VwPp5S%!+ZJYjO+l1vMjrc5Ihpggol}Uw z7T}tUdY>s$U9-?wnkfBlp^eO})NeM=2+}DsSNd}GkIVLvoQOrd0Z!49ftBJ-G&Tcu z^Q;&Z8t%<%2eBd|lO2zvX-@f{s+5v9aSs0|h8_6cD^>?dSPDl>IG#LX0)$s>e(Woq zI=~;nmtjil9{l-wE0oHIxmDkd4yMC^$!*rt!^6{4es)el%p8dL9u47CPZerH`hV2q z3BCq@FCLF^@@!WCdI*1+G18Zja=ZHK^KQtfbV?r4Kr7??y5AFPQZ>-a#A=ABqoPb-vUi04 zqPalCbJcbVf2QA=H&xG!T5rvp1r9~xB8+n0pF2_7fwy^`5UoXfUpa*Wq;5B5E;W~` z(FV<=AT9d#qFP^rd@LaA$Ag!R?SwE7R*`EjxIMo>*>-ksN_dnQ%dPdUA5E)ix8U z#EzJcpZi8|7pB^v68@1-oqlWPS*pM8_iMZDxJ>g)Pyaj)J*m&_z=VL~4C=mAwY9)2jUkZ`=Jd?}`e)|%#K2GkJPd~} zWd5!Bp_H6Y8?RX^t#`6VzPBgn(J9U7x#xr-jw5N+AK#@4FDi|lrvs}oKG0B6EH0$z z&&+9MGX8Kn3J|DxOi;N2YZnRMPYLeNu0-cki^vW|ud1pYuFm+JK$8^LJfyyQ+O$GT zf(%#T8SLgm8LS3wy3$FfaP4RHQkILPG^9Ar19VT+-lKVqaKJ>*$1HM-btagJT}mSd ze+0T25dGR8`q99}J0GvvUMhV>E^()~OUAbv_?a@6pxqPI{dGLR)NYFqmm61PBtD;7 zRJHEWAX+ug${#2Vw(Kr3D2vccupD@%}?LOfgH(la}5LxNqfRqRT zHn8#L$X?#}L|G zpJ?@R{n=gL$ZMuIFcKWIGgK8SBIAPffj8ZU0aF(bK)L5tU?gUNu`^1{voZrv601`AHPv*e5Mn!)S zHbm&siN6G#PIB%aRRybe@Th{bJhI8_Hz*W)&F2r!O;4CCI&aUM8Awk2!#jkl6&wW% zNdE4k{+@k~{+fPCEl>mMWCKQ?Ug#c2UUnTymhg2PWCOM9MOHYwypg-vm%be`!-}2s z*)~jw$jSG|8=@|r|(zHd!p`yY7@(+7B%9tmhZyRJf8Ow-8wMU55!*opstLluW-Jc>0LB+?g z%PG}CTL%x>b1{a;`fmaFQa!Mm7pdfOxBO(M>tJu1piXW6*2mGR$`5ugaQb{E!LEeK z@H)vhI7hAe@E15+Kavk~_y2||w?kJq!YwBsny@nJ8D5&B?;XG!8rIQfk@rz;uc;!Svvw<^kiaaPRb;u=8>{})>u z+)}?Ph`ffZlKHoG;Pr8LXXL|t9}FF^dF9dv15U3#+XAsDZkil7&s&c>y>S-b1d*A9 zF-)xF@(UH{fM4FNU4>V6r?u7Ie z3yg?K+C32nA$D2d4EQ&dALM{?OgnqCh#`9=<9WF*23#`ksk@C9MhhLbzXowWNU73gLrKh0ZAG0&fzx;oJFA}#T7dRFBu@I5+_?w<-9F>WnK1N znwD7a3cU#}-ECdiulg5Y{OSox7{KTmiRQE{nnxH(`&m`jMAJg`-`+bL$!f?PK3KYc z2wrWL655R_x3G}R`8x}NAu&~(@u=xCGpJe}l-1b!bAp5}c;?wTVR1I6cERuO!&mOb zZJoVP7>mqPtP%oP$kN7;We0xn2i(0*8Z$c%XIoBlnhuj)$|wD>KHZb)ULO&EQ@1Vp zJ9{`iQ=}&vS&Irs0w&VS3g+cPJO0yCC0COUW4QNNc;Nztbe~MdV)*bM1wL=n850!Q z?EL#b^vgX4)OJ+rq)m%&lb841vOjO4x~{ARWx*mvL3P{`--^ZDXWluNJfEfa?fG z&$ClpQT^)19oaX5&AB_1OJp?fcb&a#8hrYt_#6DKQ*boBylGzDIl2CB)`pzh z3b)1GbX|r4`Z&qUv<-%zcO%Yf)xqa80X@Vb7`L{qXVM&mDFZC?EL=hfDDhH84?AtyNWN8-WRVHugi0#~MdiT*(hE_GNGg3&FZ3trMTH9q>N$YQKN&i0gY$ro=q z^%2>)+;Mll2T#NZI6sY@9;G>gJ%dw);BaZ%d+q&#KT+{Z584$a+LUaGR@rxHURGV; z7>mOryGW}PozkQzYUX&NJZzbyHkqQPSK=PO4e*2|6bpCCG>s;>O66O!i zgeBy7K7wle;il}b%bQW=68PC}_N!@#Un|F#++fhjinWrW8{>l#LH9?Z;2qD;K;+RU z)p#dBx$N+bvH&`o$y+RMWHF}B_v7Gh1Z3MpJHN^RCCFXun7zkSvx;IL@`8sP04JaX zHa>QVQ{moQrAEo!JPIn$42Ix7uRV;vqEN&Y-|$m&1qo~w9T)t;LQ+#3k4~4vq^GGQ ziEaFsHD0-G(@i1TAhx`Oc_C$0>V;-#7zmXT!38r#lW@K$M;PV3FAD#X_Z~_=;gs2m zGz<@ffqqTB?0yZPgv6zM9K*)fy$}(3(^(+!GVh?O>LXEV-)T{jV_r~sp|bckDdYnc zQ6J^1_ysaR{H;xR3EkLZqt|GF4Y2BX97E<2&a-`7zW)#PMcm27Hncl+6}Sv{v?IR@ zm2@VTi}c6xVj1DY-iffoy-`V$dSL)|_d4z$v;d0V%r50nC<%0wtqwh&x7vpR#UgE1 zO(#rH2!`U_YG3xhedh33sU}dwJV&Juu!}uP{t%`92xXyrv;&yw5N%=z++*g)WV(lB zlKBo=gjcdxmSJ$H9`twtrL}fFL&r{EgTwUSOW>2U`%gdn{R4MQ8}Tw)yWy38gG)*& zm;%%!T3`o{STzK0S`!pfq=f1?b(mJw>rb(+y@p}xIP-QFLE@vtBo_`YNdAY-aY5W> z=js=yu0ZNS>4#5LH(K0b(6<^qpq+J)E|r*eyL0C@7`O#DzWrK+ONziY4Z|8fro7a~ zO~Aqe`Ph=zun>@8vQJDcw~Cnio%aPHG?`P!OHV-S7_?zrsD%9*J1 zD?;8e;P6|J@%UR`?6UEMAg?H0b;K?8^`H#GqyB@2_ zY_5y6aptumo|R-%3Xku@(C#jrgyvU4{Q+BRKhRnhLUejP&zg&88K$YUgn{F5=yuvYMSuk0mCsc;kq?D$_mSurhQu9#AsGoePTQ{z z@H0uo2G$dXdFq_Fs3g0hw$pv5kq^JsNNk^y4rEh>9KIH0ZT<;Msp$>Y?m6DBpngDw0|MZ)8cCY5HfWm|mT$>}5p_6zAgnxA**OlC%42^k_X5)lzYzaqG<+e%XMh!K1*?YjLAL6v(~F6rB)D8VlBl+O*;7 z`z({rsFUUGeQ?HmByBx(B~*+_u~Xqe zsSzKTW`!j^5sFKd>2pbf9iF_Op3inMl-^%) zBjZX2{l2sWO&|P}2=bnR169Il@q!pBItz#`0(J!M8zE1(nL9=9F(@3&vbXOwa^^}f zzWty10_kCg7hbECRkdBWc7$zn7gxyg-Vq|A=tV#Pbs&>^S9aZUua{tDXvUG2=}dE^ z^SUXr`qaK@Hj;?=ubpvJBo|heml$|_OC7wIL8|{XBgp=664LMR;soFML}SM3h~GZo zAO%YCM!)qBK_+y6l_HzNr3i`z&+ne36#uwu>c>&m%k6ZVo3^J@Y*!A8V(&o7hKh*Du7oiQ>h7NDV|DSclaO8((rKqnz?gg;P!u@GVwhkOF z2)EULEsBsN{~!0H?L>l@+B&Z;C^X&o`wvpkaOp`&7rdtajQ_vYuuIJ5!`&R8INipL zpxa4I*_ZLjCsLlWS;wUFaUUhBu(N=Qc+Wq0FW^#;7-s+#t>h`@joV(?7PT_{To<=c zr~v!0PvuV;?{o`6Bp-qUvbL-H|8p8MfKxzUZQRFX@wT(+MO1h3-=JWk4F4jTMFJ?j z;m7w%GNbQImEt@taGuxeYVQ}pbA%#(YV21yMda^wd(T02qC$*PJe8ah9QU~iFff2` zw>x77U9k`R{VYtzDUi0=n)ZxDI;BFI2 zw1M?M7M(tD$?PaBQ&9DyB*%%x6&`)I93htkAd}CR)tdD#4Zw;JkW0Er@illUJ$Csi z2WmoaXYOY&+7muJ19N;S2=DBEd&N9P`G%`sY!Hf%v4=1G=|2r?nq)O8ukfT9)oURx zehL=*14?J&7{UfwV*NvOB&HW{GPHD$dvIs~-n9xm(w6Du*Fx}3{5_OWkK*SLMEM-- z*$TX*3+j&8d@B1~5s0%QAG7&!%j@PZdlFbvI)_JnIbs{#vX>J2KVG3ldX1$};sd8r z4X6SJ=?BA!W22u>KbKyGZv6q_`(L`b{=t+{du4<#r)f}ACH((0G!vE~@Qg9nQs?YQ z_$*YgGA#pMjufM#T&=smeDN(!^NkGH!o&Fcv`fQ0z?IoK&;MA0eLp?1^M8&XY);-r z_S!_;e$1m&%vEFF*g+uZ9 zc55?jH%>FcmB&E$*q99Q*lCAnr(reNJh-v9IgY#n^y}2k-kiK}DUO{=!SVy)XAJ+Z z?G6cneh=MKqPj}vXCkFBIV!~{^CoHx(Eqxpsw!#lzv@|R{ho+#)&4)rxeIv@F!Q5l zbU!YSPTJM~=i~-P|5qew>T(voFqc+2$qAFDp|Rdbj{&v2IGxQz^_?ozKB&p*<9zGl z7oNnq&T*WadGL?VaeCb1Baa5j|L^CWQvG^4^<(=Ut`xT;`x2Mgblt(LX+%H z`=yto$4YkcPkW9P9~qnl5k-(%nHMsChj0~13rwwDMi)bs$RiT~)Bk*4sglsMYKwkK z=JW>et-f+R>cXLh&&4w6ZadEmRTfDE<3WyU`tN&xZSQ}HhfU@G#}D?|`^ggo#;_fU zx+e1KkGN^NycZW3&cu4pXO@yRr!cr{+?ppVDMz_IDmo75V-id;_d&}5iEGClm%{iA z`TAF;Q&s@Bp)Lvdf3gruXw3GwtZ>@ZurK;&e4MEmzA)Qg-UB$DBm#`ZskTYNtPW-XmJ5Z+TKL{A~v)%}>^PQiP!^kh*{~>y|8&CLw zR7R`$wg7CUC z?(UM{?$9^{m*DQfT^gIdpJ!&RnGf%W`2#eo_O4x3SDn{!@Vy^VIobgSQEN;KVXHuX z5wHtf;0vz-H1L2x(X>agYpx`tT&wVz__vWB`a0grI_@=j?+Xd`8CvMD@EUQeKTJ5@K6#O-8LT&Z^Viq$u&##EzwjMFax#>_b z^=}Ge=GpeKzs!ZOKk?St)-&~rwH@QywBF4wdp}K(QIzG{d*^MC;2oiE0@A-_kleO+V zuVxudAj66gP2QllTH*9`;C zuHZg29`}ZUr_j zYbS3A=f5m}A@kvzfT+b2w))GZna*ai7+uVJF#gU%-cwO8AV%8|;5iO_&?P`p@HJ$S z3e2EMJs!$?@1}Ye{_uUNYeZ;=1r-Pdq~bYWb~D-lCuq*ye_nzZ;`sQ`+@b$Slq=YL zBP&cT*~_PCxbLk-9V%HiV#Ty0wB}R+&R}1@AEZ!k4IeM#tKTmIUhP%BKL#}rmC}xC zPu|dpG4}LP>T&~6XR{lw9`F%qz@np=1=Q(ob%&`qSX9}RtcaZ zZ{8oR4en5YyG8C}Y4b2K^xWi-aGDnFU6*BSH!b1_h0Eik9AbB_3LJgSc2wz;8&jg! z)inr9x_JWp(>8LFi3qO`TaA=QrEOI4;CO&R%vf(a(ZjI#?3@K2m_{X~H*AL?a(G*@ zN1g7uVVvRJm5^H;a7V;fs&V+Q@thaC8J?So{_dh#H_>TJHH3h)-Yz#>h^+0Uo3NF) zwd>I#^MrZg&L(UqYV_V5>u;NwH9t1OPVL*l2n=SZriQIB-GKMA2mfwXRuoe9T8-k> z96m(l?BosuJsZaDA%WC?e4+s`h9eAN0Zszv^)GWnh*d``-tFv#xg8yaE%Vh?i{1(d z41}Zwu>VxMl#9lNm&|kbWZ#2G`{oa>ESSP6G6D^y z^v&=Ee941TlwsTh{?!v&vxDuOq4_O{CR%S0Di8zzguJQai=~hXj}aPCaHVZ|K$A|A zwomE!;xA*15=>lTsbmXmEHA=_^?RG4IHq-bbKTjfqaY$TYsSS+K-=fNVrjwEkTpj@ z??3E6JPbm5b!5&)MMqPF03HZFw_tC5+Vx(%9gl1x4FaUGgwy_48(_SKZ8WKF05k4f zulY>$Hfk9#R4Z7!&Zr4C`cOg0L78=l4+>`sF8`g5dojyb#AoyNFe`susnj5D^NFtU z?7($^?)Lu-3pRSt{8XN>!6M;b+Zum80a{a9r2*cMyT7|tE%p#1Fb*7j$gQX6_kc&o zei;8y^oL}~34B1+`TAg``t!f2iMIBxwFP`v>kb46JaEf?0quiHH(nn~s1aC^qqWR1 zH@JlMdP*vrCwkvJPy{mS&FfT@h&K-Kl62E{K)n>Va#fLv3@u(Qv;Jc_>B>&U&_ig6#=?q zi>bt82-V|_@2ThIJ}iV%mA+KtYy*3*j?}Kt^V>= z5hhp~^z(hZwgq&76;k84P5|;I+u@_dOn+8@rXCNc-I^49RvGkv0sNJfzbsZ!%-g+| zJ&j3Qd3i*59gcr>NFY-|A12khI;g3JGGJs;RY3Hx)5e0fzVZmbs+PYh zdrCuqvQX_^jUfyb1mE_G39JdhUdJk!lx07}7_xo3oCK^Pi3#jKMF<)?Z&w6ZWV>ES ze_WmZMaC<{C@BvkTh_YV4}ZQDdCFN|bllm@0l{GBZPRBE1AWb6>Qq zX*tzqFZwp$+w63mE^VI|@rJpI9})^GtDP9O^jU z)qK^eyWZe_(vrcOWWyq?%XR)$>GSCU1KMxYF@oxrbS!%L!2dr;_hyAPuro0Edc6Nr z&vOqVX24^-XtEXnYs|+M2NiB{`XXUmHj?Tqq6hgS-K z>gAt{_#bIAObwg=c>w$H5P5^UVn5=JOKc>~tQKQa1D?2dqzj^^M#Ue(;)(Rs1|4Az zj=)5^BHb_g@MRnx!;rLzb^npI)Cu96$x~tM=Z#b0-Ie@a!D+>)O5s z>jPs|3ty($N`pHRt#oGH{7D}N(Nf=1-VTg({-1>ci}EZ|awQs~p6Bgld>F-ZnO&ai ze6M>VK#J1ILip*j%gbb&QkegrSH-jY^Nl^tP9OPhNvM%h|H7v1=zo^qMdFtl7)@4` zT#x7ew{XnM5!2a>Iny{YIHludj;%uf-D5EtwB1vd+a{7Ky?f2;Rz z_%z?OG5BcWMO)&C1<1xOd(yJVGPG(Gtv_Q6HWmwdJi<8M-P;B3kvo5wEs3mYH+)GL z2~pWt5N*CA=9{h#oX&d}I&QW3I>#_8Wr@OO;tTBbL5-F3NBxCR%K0(m#pOyWqe)Ms z%n^DwC`STo-lMCctxAXSY87;6tp)NAAL?ZHpI|ik+W#Yheawv^JxL-#O5yy&fVsNm z-jm$-|M>R5kd4PFP}>bA75?Kg!}i?2J~>MABM+MAQr$a`9kCSse)>;c@_IiZdb5;d zA!4n-ps72jp8?svJ3e6!FOy6;nl zJ@B|3Z&PY;(|?5JARH9P|BJF8k6OLP!)7kDipS3@g89z%D?Iq<OvQFsT(ehK zl>gpevt#q{Iidg0g5x*(>c*s+8B`}TJegZzPrI41*D7D={_E58Q_b^7!H)bh*AR2q zYyxIroeqD3qfA4v#mE<3y$C!howdUTKexDBK>(hz?tKu+m3J(Wv$sKMcA9v6mALYd z_{N))hYB6vOHaxU>P-D0G338c->*lnY5e!@#qP&jp$m1LC}41e;w&;GyvEWDwV8k3Zl z6Zb5xJL|D}-9a)vAa1i5VZ4nYwzJC*eYj=JAcHlK2I_b%vz=5Rpb9j>jBtcB>kM%go<|NA3Vg&z0N#C8nF7PK18NSn1r8TIsDpZo1PDg^f`} zcu&csz?UMinzeES|1clbZ=Mur$f1lBuOsApKaU@@j$7PN6B6z4&~Ryg4XNm~JxWI^ ztaIEcZ{78NR3Oez@^!;y+w4oEwN|k@%bjg0#)q`RsubC~P3)_wuVui-ZH(7(gD^ZX z*6Bz7fE;0wO>k8FHrlRKtUzj`Smpm2V=hOR>9WOGpbrQ5Ub+f4{+9Fn?^id8A4}}) zYD4|aO={M#bva?PW!OI$MtzqW`(!?&u4!R-z9;U=VJN}xPLu@8GLE2K-&Oq+dJHEw zXuB&d$c_15T72$wJ>s8WOd=x7{`4^iXX+~XA-s*f0ln+mBR=Xh_U*i0Zhir^VB@gj z0ruv+RC~q4QR~*j!;%5?R5nun?|%?_HOTnxz&3mO*=OyFzZdK<7OWc89&jrYaz2TI zcD2i#%C@y}d-UxvHM-lcx;RHSI&cxoM@V<0!r zb{yZLpp@QhVAt9C)$Kl^>>C>E8ZGz*4*z)Q$|2)d!8jOANZJ>XO~$>XSy4qhpqcHJ&$?1tf>Us%Ii31ID*D#fPYC%?XHsw&ey_T z3@~v1xJjd#QA-aM7EZOwG@F)xoX}%!8NLI; zSu>uoHuwqH;p|sC`$!H`NUS*garWLfSol@0C2VK;J2Wn{HMfSX8@8B4kMnQ9=IF;A z^{d%MyNJ^myf~pfa_~NRXu$Y)7(YRqNMWY@$>6!Bn>9ZGX_Lge|5KHRKfLpGsm^#e zUe|{5tgkpWc;e5l3The$Yq#@&3H1e5kffvWiMnZPL7 zJZ~aWY$U4t?LMtFy6ShYhHM|Ka%X^m=O3}jrS55}Xy7C#Up#R`Nru~WrU5Nr4yk1$ z(E-6)xvSY^{%OdhxyXbiK8jfnurd3YA+o+{U)qz4s?+7@ussRhcM>_8E^9od=Gcg% zuS;b=#3Ue;AR&`>yV6k9liIgW9VjG2bQ zYCUw6)738oeXMHMxJY0c5#ePcSL2pKamM<@5nzV+r4jziZ$yT7S3d4(pm;M2-=ZZX z6-6ah0Fp-BN0)la#YL7XUr~bu=n+q6I<{$ zT&Aq%r8KO@RR7D#$A@gZEW?msX=5{1_=ROyEwJ&M*!(rwk1ZNDu_W$wLm$n5OZzNz zF))V(RpgKhMDKzG;b=ggt0*=|;fl0VmE92wD*faQ{Qfibd8{`NPa26q8wnlM$ST_8 zsF6kLSB-(gtut@?DZhf;feYT{?w#Z0mJ5GSGp}sjrb!St)6pz2d&PL(^8p4~s`(f4 z=U+BF0DOA)N$?V-z870u3+YSQgt*5TqKwmR0N$@Xl^6!U9R@MNPl-wp*#$>7b-l|& zK5Qjo%wy^?7$=^u{>$S3jrPWl41>>=MEb{*5o_QHO1w>SraquTv4c~`+c~XcFHsnz z(%9#PoqFe%VO7~*hN75m45H6v6D_&;u;nIhn9h78O8<}bfAA~`N+{cP7(9)vw8P(z zL*<@Wc&kUWMO>I&=!DC1UyurK|7OvN1}7i_0C-X!)*vb_cuiBjg#im<4VAay46E;d z8n5S3cT|dpHxsY@Og4*6gAAN_Tihf$mpBxVVv{cOmbbhw4WSBz1(swqVh=^J|M3um z1vLB;5$w1ERZH!yGVPLFlL)H~OpIpjBm5W;Xb~`a#X4gL`}z>1rKMGv3E~tOr`FeB zsaIE5)w2ICr^^<6Wf!MwxgCvHeh($v=huGuT1RlKT$|zc}|rN zzGu!oaB_-D>HwsAq;B#vRY2-TryRZPC7ZGY@AgA&-L#L2ilP!jR(6B{-~;{pmmCRs zaQ|!MeuKMwPGDYlrU1hB0ewNOzztjNbtc;^sJvriuXv@!XkWaNVOs7LF=G^7bbVW= zyaW+AFMn+y)_)(XsW?hd_Qo;_oGk)Hh>Y_t2yZL?ly$h11kVR9{rQr$ivEmc_zp5=gsVGW;Fwu6P-<{-IZW;inVRJr znKn|O40gGvReY=HBhQ5<(Wp)(wjN9_mMF68vch!(FWF2TgOI}F);jC(XW(}yqYFwiA2!lC|S4?g;k&gYFZdU48 z+oWTNBTBlJm-@W42us&YBVyhj?KR%cwvXnaIe1j$ND0#Q5j+^=Usf!J|L#>|A43`Jn2)j`Z!ts!u>cQwKH6EB6|aG z4#2q7h3YfXvN`K-38hIjeDKVYeNHP_{!b-e&P_f zL>xN2_GVzkOs*8qT5K}uM>9*1n|WNgfMWog@t$14(JZdb81iNwrW6lwVZyRvvD$0& zq(QVWg10iJ?C`M+V^**vlZ}oFc-#9$cxqNm5p#ptha3h;hCLUz%VDOA^E2O=&s5$7 zAy|}DIT<6qeVmageh2R)&D^ket-lPw$526D3T9-!)yCp~-)BmzDKaC9kB4JG>PvyCGM-H)Z0=j*GEs1*Vc7CQqO}%CJ4I1m|C&z-p`0 z)oB;Kgq2rZ0$}CIG{19yk6$7oVFsSYy80V9RC-lY8n|{<`8dCvJ)j`_GrfFZxUZrn z8VclEtp<0(_FawE5IjXKmHbboT!+hv0Wg5Hd{Z%}`efE&fOKfY|1zYPg}@h`WX$J4gA41K&uM7a5|=Z0Hwj8R`VAYqYWK!C?GPa0m{-NU#K~K!`dbJAUK6FYpkLkLLo1ia>8l zg99-_F>iQ})d=CmUHjJlom9R~`E0eJ^X%%m^!MrS!_%}mli1x>?5-iWMP5cdL99_kj+3QM?WO3bYqR%DIYd&Rm%cF?qQZ9SL7M z2jRWhJmrp-uAND8bLM^=IFwM|sJw?M0FE=2{%QQkFu-SX^RTQ^vO+_GJq7))0Pw<> zD6Hd`)%KhTSh;4ycQf&ggxG)L z*qTuha@msu;ro3Mww7rE!0#OUyW9O*Px6A*wni|4Nzoejfba5J(Z_5%Qk}@y6)o0M z0FFitf9zk?@6Bao00!14Ka85&6_$qc$vhgmi=jmm;NY2_zO%mS&{!7L%xt;xxtyId zcE+erXJ%EZ=ks}z@H4uju&1CvEysY*OsPF9u zKnOS(u_XCpp~BO_-2-URf>+JT42}RDX+QvRUXTn|j-@#}xks1F4)Q3OyDk}Cyt8SWEMo?mRY*#kYv4)Jjj92F+wVFgpfZeXusA8dei+r zHqI)(1tluE^c` z$=&w##jOdI;eUafBG2vt+RtZo!7B960w`h~QxL1y$D@l;3t{rts}5g3`Vg!<-&|^) z*iXhrY2Xob+X z90p$lws-3z)!F#!hWx@!o!rX+j)%4Qr(u1?Oove+WT0ngmqPh=MS!s3tbp@_UwNhY zd}#@G*@OC&qp?j7S*Da-A%f@crbf{*@X)om3n#`0ah#aDClpi^VSIx@gX{FE0|Y5k z0d?Pyj=xL}@HA`(m7yyr2;Gw?TNv85wpUEb=Gaa>%G@NCM|rAMrY$Ov<73unYSC!e zuzxN4Yv_@EhYP$)OWrJ?7ol^ij45sLT9E%C0ZXI(am)pF96v@zNA(tsVhul)v=*Za z&m-qqZ0+Eq%J#im_!ae5DVcQ%lm4(4x;l~TNDM&}K3(Cmr1&*yr_X5-$JclD$i3t{ z@vV*b)U3E&h!(4M$Oo(Ub5&9Gwq$a+EXcWk8c=@on)mWydpW1$rvL5 zT+b5pNn+nmztRkK<=pCJlI%GKQSCWi@kh`Uae$}g)mw*l^01Y}Fe@oH4?op`Cz8;v zzMUf;Ots0~vnoy2EyI0ia zH7{O&S$j&%oj!F}MG#vy450=l_&uY1cAEa_X}s~rDPfjW>qOny+E1q?F)5}yi+ZEa zG~4Ve8GAS;u@!Qi_EboWl|PdB0^oX_{phn0hE^N;c?dgW{P9StRN zi(a|G4H3?B7^meMcQu-QDkK^65jj$F*#gxqaL ztvEAa9%iQe1Tgbbd_C(z-kTDnv66?00)&XCStZ=&(#oupw(6ykTZgX(9bbnpTEjkw zRnr%dG};t=VK=q62Mt=7b8>S>nB>tYjzHgX`--91e_qC1Y7m#kf>(a^-YLljP1n(o zHdgg3*~;O(uv%EAR1II*Nsr`iGB1d)O3ScHA`lK8qM4l%t3iU7zq)*k*O%v_jN zy6I^JHej*AFQ4-JN;eEBw+JHx&3}kJsBy&*vt57tV1}Vn5O&N|7kuvx_u}VA9TXh0 zeSafLUr=zL^LpgFy<2rJ;dPlK5^nf3e=@XtHDp%1>GK9$1wKHUj(p8ayerx3iE|XH z!wLq@JdhZrk@7;`MixS%k9oH3;SOW77zHZxUj~_MCF}oc6e2;wdT$x5HK9MOgr$_Y zC!wDqEqKAWC|5`qAS9-~>Og@Np8!=M|4@ zg!^`L`56V$Lod~&(cZ0{efkd#JF&+?%|mDz2m1IM`Ddpo{AxI#>Y%+!+288=ou-?y z@o^)2d)yo8ZKB;@*zviqIG_5m-v5Ie9kTHyf{wS5K!=cG6Me{NqIm#z`VHlvTt}W; zVdWwcF6K40QJh@!13`jkRSJ*S%}I)2ITvOwfpJe7+n5~bH@>=s6E+xl__R9zdG;)@gNlzjx#&@2txTe} zlx}i5ZeFSco?_Z!MO_(e4UFHr7dZ)}3_ z$K4Fd)!~cdWv)??gER^(=w}NG)R{YtoEoU{XiI$N6^+-us}=Q>_-A1VU3&66ql}ji ziGXZAFNNjwI>@Cfmuf-6z1F|0;BZUGEskDIjE$L?n-igs1OBz3z2FqXmgFBErESw^0$bIP7;y>` z5H6|+qCZLjfdURn!}asDXwbO#N+v^%7QC3`A3oA8WF?m4m9TT%FzNb4xMxq>)#Ow* zULyf2IZWb=!OI2COmeLmi*^>P&=j=%7;Za4@E(|B##)RI<7u7@{jP({-9myr%EDb4&a^O;5w@(kR&oZ?Z7TSOcfN=iD^k{7#dj z^|cHcSHtnO?VoNHBV8gH5cBbaa6sOLbE?OUpuuaQ;wuN^{7&2yVz@K1t8$75k?D5> zj_`@bH*ev@3OF^7ufE0@kZi~z>f>B{@iuK2`CdXRls#YkLTvAQUV7pld(y$kfY4I! zg$0NL@%;GuhxZm4VudZ(#Vs3oxl#3P(tAF>khCk-<R5t^~8v#DHO^x2s$fp}EzJqp=K_QI7U%=)BU<-v-vnILHJ1IS#cK+OK4 zRjSo|Wr>SDu8~Vps?APRc8l8NoE4Oc1m5!IqvXoIbddSgI`Jb)?5%I2gI1hSr~O^f zgwOW+iMG)FjPB`U_g`ePpoc8L1t}Qva>3{0<52|H+tWER9dT2Bao$oOm{SgKiT=XG z-d61Ov&cUvNNRL^+{DF&DCm=)V%>$a`3p^4bHxdU9y%Q#_$k2$Ic+#=^3p1|5dHR; z;qE7J&WqDQ2q|SERA4%XvSAm$%S+4|ArA8lN6C0;mV!{Y!@te6B69MREO~I|txiw} zj0=p*2sxF!W_1SD?3k7hvGIa3D(t)MsdeO}8#a4tg$c;9_R1J}V{SJyVZJmZF5=t$ zYu_0}edG=5#hf4zo&OQP9VN1|_tMNon6iGDu8#wL=XHOX{duKe963c`o<+}{DU9y{ zNFYX(iVex*`**0XtId;z{(V`Exc>|Qt7vs_ z_(Lk$kY4qe`6~t0v`WilQ~uS?@rc$onOW zCj<5ZQB9mqjEw?-3hmBVnp4DU%fCd3kZ;|IzVjifYC8^@O3Wv>YjH{LlcTJq zxNcCixOUJ06+{2`*w80|ic(r4%-0;rDT6`6-Emd;)7oI!f-R?&$1m_S{ofHlodR3t zM=#WrL)euavDc9t-sKjPBRhhcZxhMb6*Ti_?KpW;#}xI>{pAgw7}jx`_uDk7EeX6O zj2`MzR$Ffsb6z{mq<^3Yf#?9r>>`v`rhZEy<(?1Z%tZ2IcCS4>LT{4}>yKJr6(n=s zmb(Teupe)yhHlpfGh8#QL?ok}qtRsN4}E%|SM1nNBl*cxvyXGm9yO()8ML= zZ-bA+hpO@!%F}$RJD>km3r1&@ITrcGOy08e{zD>qthE96CzKClnEc6zEZ;0PbFg;0 z($AHv6cJ(?u7Caj3f-&=VErDal|Aa7IsZgFm@M6TF`+w^^7Vf2EuRZ;q$^9@l1xP3 zz+N8pk$#79OES2wj{U8OlC!5_Hdn8kfJcy!=jIvl?uA6_V#XL*N zn#g8NcGSC9BT`N|YD;~{Es{BPpbo5IZwLYmxZ)mEa{Y7z1B~aW2zgZ6po@ZldYG+|_DHVA?ArFVQH-h&sFsi`SUsMKOjR2YUe;|~+`C0wsONE*bG z0Tu{}fetp+R{p|+Kbby~b`3bv93fWMPfXJQKEMXr{@U58rVHj$YgWpE1}5~}BXmV9 zcgNWw7-H$m$mi01#o_*vjDEZFx;o+Ix!L&)*!5ppaJ0D`M`^Ank%26cc~BXlGodXC4aKvr=84rMKN2LItUWU;o7ir z%`Ukp;m>*D)&@q8icGXBKlMAPVqZReX>fR8OX{dTiSU}p(tYbY<^iRPzJn&kr&Nl=1ci4rsCv0=*bkv8v(cbN-t4PO7FaoX*+=W5yAHP0pxWu zV3>Q#Y_aiI z8LnaUxYqOPl`IF!341!zu_MCn)pkQLaQ=AkD2yumxhS{%?Z#|gmUEfpe;@0aAa76D zMQxAg0n=lWcFoSgoV-~<;z*=T@SG^zbe*tf6$7SUUb|mh=jL#h@BJFzoz3GE=I6@C zdmo@m>*e?xiRboT*CNeBZCe5w?eqPZe--oOS_V2j$14=(7UtE>^?@E8E+vVF^gySy zq&X`A_4O4wc~0PQbVP29%`GO@JlYS;^v}a^ZaiRDc(+=U;1iiy>#*?Md}Ghfd-aV| zwM6;=7SXBqU9_*#|CqEPB)>)?2!$92j~PFDe513x*&MtVZjDI_75y&jv|Sk;NRUPv zdyFG<-S23&eExk?J zu-gnGHgR)6PxaH2-e{c|g*8F`l&tjSbkEP3`(Tr`&F^b>)^Qi!vZ$TeWku|Awie_# zz8KowZG6zWCigFMbTTJf-&-WeyBG=bj}M^0AMc^nig`K)WbYF9$JOL-9iXhdaJRor zU8y#W9&Fx=eSi0bsBRCPyyuk0vufUcE_y4vUwzgP*<-W~bwJX2dn?Rv8-y)7j z)}ZQ}^e}5O3>cJn#p{CN;FE155bVrq4MWO53?3xV$NY{qTMlzHkr#V+^~IG-4q>>UA_TWe z6neHNxK&yMo}&Pnr?U65>z1anC;!13C%vMFOR%~ufVpBlVVi+Ol-E88G3aZr)!+xk z>)qPeFX9JeK6h-sm_Sw}7*@!Yo~cjazG@>TBF<5Jn{s||t$MuFfh;&7hbIwd)%aw5vXdTxR#ApdmeMIW-r4ge0i;7OO>?v#w9Np%- zTG@2*d#9WSQHJ=3!v%o1OcxK8`6 zic&*z7@n9Pf~@fIx<0i#(k>k?RJw2cd_(G!S5)C&4-RA7eqQ*n6mrx1pdaw@IR`V! z0Cl7H{0QFPN?QDVfG~D?<+khVPE|L6wFWiafgh}q6B2StDfXNYoLP4Vql~=SqJZ3j2;cl0M5cN4R5E}`&Z-p@Hw>?V z3fQ7h`H($58HMxGZyZW7KlJzPSGs|~#OEvCk2PKgVD82fld4v)xc9Z7fd%t}fbCob z!-*RZ#aDf9Zi06Q32hux(oGbJK?O3H;JQU-qvpzh9}U5~Mc+mPpPxoXEK~Os<$n1h zoOkewlmCNj1=(D2$1UH`sWf6AKRiFFrldgVF+Au&zJE3iya-23QRaeIfTkGHA~ zBH@kN*+Y`#f8QHH;=FvW5lq)abbiGbBjIg*`egHIlHy0L48ai3>6i1$gh7w5Fl^l!0SCrL!<$Ew zXdn47Hcu_&W@l+`jQvnQ^Ack|5K?20)0kF2iMzBUk7wDvXQ8SmG$WbK4a zW#7eEFDsfc{(E#*TM6wa$PWe@@U4#Xu-1F;Y4T2w=M4Jh`n5K1oy2wRG6c`y0R_$O zTh>_xB-d9Qxq9pzt(A|YKn^2q@wROZoF`Tv1c6J?7aa<{0Kn3V|>L4kyxD=&!OrIB=aKw_zHQ6k`< zPk~n%0?pTm*a(v@dO8n+{uS*KMvSJAg21*pxXIrby=5v|)12Y9DGU#($?!TheiwHc zr5-UPv=m_^vlOUxX0YQ$jY{Kt&05X|Ti__T_6UHkJL{SkZgoX>NPPBBFu8m=&Q}K zvem6}QT_fK`6J+%KTp?tbBLCm;$z>Di$1fJe9F+_7xp?A!RtKK*tnB_hqr{CvG@fU zOzOr0S!fI1d19ZeuHHI}bAGV@(VAbfm};g0+hfUhro@;IMjPAOQuUimHLxBXjXtT; zwN^-#f@<7&nfbt@a~8C9C)&9$_SF{7>2pn(kxjVwXpE5p(`UTDQf+D0j~*^NA{Q|A zaUb)A5=VDGU+u3PqoB+HQ|Uk#JUBgAi9|b;2pKwvMu)XB4WL|&&5D!OEETF$E5H+FtAJq zDO!CgLflvnJNVpM+12m7D*DmsU~(WR2$4eAgTV9lxO;Y%H!?DkCSwdqBEOmGuV{HP z??I6d4G-WWT&<4{n|?9u^Qxs))Y?CSQc}=o7Ze(-xUqs--zf);*+YDQ*+&k7Z z&6T0<&Izu)rwmso{+gcLu4Lc;dx&i9b|_EmF1b-^!siD>RX}xAh$V3!_YQgsD$2Qi*mjWD^0?Pgyq=T7#;Xkd8WR~D*ZMk zN_zY6-J0h**pS+e9p)$tQq15rwzES?iv(Twt^Stykh_ZWgAeJxP|fMa6mH-p&_6loN+alud+jU;+LbK6;laQ3N8x}!w}pe%r15>nE>*ZGeRXoma`{Cn zs$?|~e62a)da%z1$K;?il#}JC8^!i=mN~7&r+mdS2l7`u+gm;#XqsW^s^ii+%>|4L zM}~T;lgE9H60yN*hjJJs0X{duvz2U9jj7j|aO)?1_mGe2kLWm47U}bcR?3JI1YFkn zfOp^W!7;`enAg}l=b7?8*n+o0lucf*8O=8XXSrYA(xgm$);ypA^ZiJ_B{cU@&a3ts zp71s3xxOyoe|@^Daokr@P^$dwYbffZZ`iGMnAO*!h(Q+xWD-#PQX29U&^IzS{C3Qc zgfQXsm5ta{nOL>-qtm5JwrVt%Lx1pxM!O=0A%){6|+S#gU_bfq8Mvgn0s!* zS-(P$Jx`-785s#lG-a5Cnm)hxLRJ**cyTghj=t@vpL4(!fSI`$t+OIFzJo4a{Y-X* zl=DuTnfbh`*6jm4#r=UWUHm73@LL+4)%8EGYCG9Iam(^wX_(CsB$+O0edK>6w@9Pf z23^{pLNIGky^Rt4G{U%D<&iJ`d}_9Fe=g)BFKYk0gpnqQPW5I2yqyI%WvW6P4ntuV zBI7Ec;{m8YvOc~;T!sZ*P1p?VA96NZINT9^?xQ%i_RhR184zk)wDLBv!z{ZhkE&GV zI*#rywmp-RlR1UG3EEsw25wK5-*>vec|Qmtgt@eeey7`4GpS;#2N`|rEFG<)I94V! zg*CPre;?MWT;w<4e6MNX{v%&AEksj4_%i)L8+F4Ln4ogm!^XtO=5Eoe+q{N;6t=Gi zvjH%h13{XxrR2GX+gaiFA*?84>n%iL+m#MV@>-3HUlTsC(_C?~Zh1CDKy-ix4{hU& zYx@;%>LoQLl4c@@RLp1aDsJ)mgNiN6xgKZx&Z=EJxC!KjA28n*KUMwaPjW=-zuZlk z=5SrI=S`LLA*Vdcp`5U8*7R)q5%wmtfvXc^b+3SU-vGKE zelNHtpC9foZ{JpwFBwuL0b)(p`aLSL*&xILDb}qx8e7}_vppgkB;~<#S2I8>@F`^#%iA3dbJi2mhBlbrSI$#h6tsU&MgCcK5Ip%pdJ?^g+f@QNu1l)yNYdymZ zPd)W+o2r-qbR)Ibn{?LZr?bhH(KPCPm=mV5dbFsUrKRO+VkN4Zu(T)wD42b+$>%Oe z!t~j#I`@3Yi`4NAcWCG{G;WM6MK{?SoK{vdBIOR?M&5YFX0)O}4>YPR9+1Q{!=XSs z(#vEvdb+#Mh*ZCmsw0DtCNJ`{O5jkhe=X-r6&&4N6j-Cn>zxq}0UDAw)Tc9>zTb;L z9{GcmgMSaCbjkQ@?BII+4d45R0?!=X_kW zz)q=P@w@y9I{_b;ZT|O)L7F;%a{*1xLR*1L^@|@omIl!b47iJZyO|h zS?9K9(sPxo*WpMcizs4gj@_X@O$IAVwqW;d;m`BF=p&BYLwk=nQ`v3=kk^S3NDz@z3Ev$tXlAp?g4p(1IbP5rWt^w4VkD?4abjJ*Zni`h_H|mZ8786>q&Tx=*c5Stm`4cdEPie& z0Jl_VY(}tH?N8CX`Wb1W7pvuj!Kn_MDv_hgI=#t1b%$+Z$Oo+W6lAKX)5@`CANHvg zdFm4%p1hqzp~l^V@#Naz+Baw~F$xC&XlxRHB+WRop4PF&Fa?^DOlyf_(M_kzNYxyq1(Z*p7>b5E`i{^kP6P!za!7-j2!DUc`(b}1z<|q1N;(Dq?K&pnz&1?JZK|*S|2hB)&s<8IW z952;}Fy$Z2E06~s`i4eq_I*W7&_{Yd(M~9>S#v-xP!Ey}<-vRRGoG%Y>xjyd*@Nhv zN0EM*D6Y6nDo%|{PhrUDaI9~JYIUuTUsomG+7`VX8$LszsDt*zR?36VlT#sefcy4} zvqVb_>`E{he8+uG&9*HL3)YwzxnZu|XLt4IJ)RB3bUhPNH18rEq+vJ-7gNKofLc}O zZ{8(-ITLa@UYMPp=8C2g4%crRADo>f7#JLk8ws)rSdA*3!L&C=0ubt-a3U{k)Vd`y zKt@;Yo{U#%Yy0~(m$}CtOciHvz%1HTzXm4cu#7E|;(F70ay>8vLeb@jsKfohq#2;lbTcfV05E#K9BgVX(jJl~ zW$mDPhC`AkuGIkR@*`EX9+VV~S7U^O`)YLpkXID7aL7T^Vzm`xE^MGz^o=ukw}k(z zr>~BR;(g!VWr?M`yA%oO?(Pz4>F(}Y8YKh;1f)Sgx>LHOyIZ;hr28FzAHVOO{b%>g z%z5UCyRYkhsabB@ti!CI!o*Ygwrafc$IT_tZ5M+K^V{+?2cXIpu5qS$j_#5zYcv7b z&w6`alZjysMfYWYV=nif6xuCluJKLv2E0t2*Pq$C`yIJ0C8liMd-gR(44mg1CvL3j)8gza0 z*!Z|^@^G#iM}xtxxiu! zDL_pRxp@t1Pf~EO<$Il6LSTvN0i-A2Dj}68t{V%dy=elo*9x7=Z3p$-$9$4!x+6JL zSt#U^$c<-tyT6$)OG-XH#lZ~YJ1g!v7FDR9aC@`-)NPRNt@1!P!ju)4wUzMJ4bjAo z))9kF;p)79j@}XKtg*pnLnM6&!js)Wg&+G~L}F4{XNnp15bxTlg*+2(v;4Hq?C9f+ z?M2D5KJO~5U$d;O_^nO01stte3C#d?zE2D1=cwL(LfA=!T40P|;L(4=FE1Qr)HsI=|16fA*KY^`H7!NBQx zcTRP%Nm4_miVwD`&ZOXyp3ITJSZ5^of@-K>(x zEr18TQ}^2$@2ktZb!f?K_8ZM#em4-dU2cE+sy|FSEwq?0I?YP|)Q)k~R~Tlz_^S?N zXtL&W>~S}`7NVWmsCK9iaWKZC0h$7v>%U^!7H=XjZ-sj8LrXWWB~$Sg&2|yh^|hz3 z9%c{EiCeEv=FFfUIdl%PLcV_#m;BMl3C%DiRi4#^=pm?}6z-MmXMqSrNxC zKV$Lls7-X}FEF(ft-{XmVu{n1#B$#Ct}wG{7n{{{!M?v2Pv>0Z6`9O>EGeZ9%z|OE zp8|&QY5K4Xdb8s?0;?Z>=ELyruVz-G_kw}Gw9GZZN<4&|tMB)C4CahFOIK?uD^Fug ztHS<nS$?+JB+h3PSIf^h_Ar~dc_Zi8j-Wx?;>Hb3v&BhHH6=4$!7 z)6k8YRNBRoH7hkNGx+Fgt{Er>4@fe@Dq>}O&lcGOmpenL~@`Xmk?KX2=E6CD#b#ElNg1Z)dsq?riFl;&xoZC>AO z$D$U82#;m5p76c0D~jx+4DRiOiKw_Th^9|^er#=UsUa7&N*>0(ljCVZ9mjhcp6B;< z!=}$x<=`M%FpF;LsvJ1yEaLVp=e;Q6DJCdz-rq?fN4+H5 z$rxJUcW<-_wBAN&`%^*Lw}JFKICDVCB3u|`M2jC%WGN%{8?IDCfo+0)M1 z$RWp!DRFZeDQVx3boC>&Q;`HOO`X*VX}*$yPL=LEv&6nGyQxtwRqJmdiKn)eoA(~6 z{wYa$O`%(4S}+Zr&Zi@Zdly_pG+Er0_DFwZb}i1AXL|iRoB%0BxVK+f0YZd|z zowD4ZIXG{2R!RZ64)Kdv6-HrEdU0B`n6OviPphTI6%0p%0iE1X5Yhgasd7+()t~F$ zQXv>6shRjE?7d0eSI#(@k9~uaRlK@8r^%hc)LVau84yy+k*3Zxe9&OhVS}ch@AQNZ zq6*-ORv4_MC%)EFkRC5hL!*em>UA9{hU$^OIvT|(u+cyK7L@qFI4Ls!ZItylHWOWv z#YCA<98P$caL^+yJ;*@dSP%hG!1sYs{D~cs-F@PSd;Mv*yGj*iWo;%1RDh8 zkUh!YDq%)*HMc+1@&*IH2!)-%Z?*{!wHe&gPRHEMBS0;EG_k8XG zq`Xv}k7u%a{`?}VZW7`u+h6zsddS22^;IIuE3M!*;{K$)JqV}~6ZEw2{~Pz<;X$;N zsnY2=IwB(=AW-|RwVRljb#QWWPxxx4YvD88X?k|{K=|-Q=jfFeeSEp0Nh`?jw|HZ? zS@MKV8>>PZSltImQa*I8;p zxJoLmC}BP~p!I1CYps1M7$WQ>-qSVQOPs{4FU_0A14RAzrPVx z`Xu|J=lpo3DCu)7WF<A$b#2+Oc-95PoN~$K5aP0DVT?EB1vrVXS;d`cK~K7t(O>Ioj#Sp+R|!^6Fas@ zYZ+j~ys$`q?Tlgg>=1CkyGC`c$RA)1seMux4N`ci|8ijDLy+H2AQwd&zJ0P4x7%%m zaVTYsVW8&r)tGq_BmDc|?qR~*pWYD5@rZ;*0VzD`P}>Ye^V%k>z!JK|y=Jf~NjJ)PU*K&^7k zD)rH`b{i3H11f$m3K6YAiZZus?^9sMh%L~w0DXTWMMJjA#H?+(L&*iSG>5*PJ`s#= zcgGR*nZ1V+B^Q%((+>KkZWs-a89(Rs9yV4RHgnek`P+QAWlz^v8g4!4e0h95d2cVl zizTVIV_&{}$t_jsfQ2;DLeSCTo$K~TnRLQHXrmU~!A5Y+a7{|iZ8 zohCG_GZRwL41YM`H}1Wq6+gw7&7FLOM0)g+S|EN#a}KY(*9JaDe2h3;rWaCLTXOx}V?ml3LG#*X&5Cg{45LFiq#As;-e{CvU72v=qFdg>d#VLj!94vIEC8@ znnwe%`fd6dI$6VMP8nS8uq1U|yn%=|Uye%7L^?jgJz!vAf_O6gOj+uUw-t43(CRWr zrtYs8&Ul06hAXjxBqi<%Qq~4Mk3TMlNB*hi!PH$qF*6ms*pOHA1YtF+KH;g_V1J_U z81l2Nzd?A`N|n7_O+cszmb9Tet_UZX;3NGvPa zgh_}k*9TaWsTJahVGTyjfohGoUv@E-3}rg^vju9KQ4yoBdr#7&9)7gt==l~bc^+YE z8@ar#khk?pHjS|BEp}ZpmI4POI%&avuG-m>a^Y-RiXLy&Wp{uo@d0N!57!+n+*3mE zGurjB&ugKv&b=GGAHOq#LMb2jUOfEjUz57L5r>YP_NO(pscPd+Tyrb`2u(Gz)tyaB zD>$C=7!fi!7HG$TWUG0(99e@$A86xa{}l5QG;pDMok6);{GpfOxzp|%GpOx{_#b!w z20ZR$sHy`-4lI*J*a81@p0hoy#(SRCxp>To@aS@JqV>K&@O4^HT@XUY(0utxBIeo! z0?C?7jy6$?+*YJ4kY}|H#T|E*%vQq4w-QU+h+LGkVBKcAui6z`;P#%OZycI(CZGWO zmDB&|W5Jf(T20`6IONXHxSK?>fl-2P$nWFq+RHNTAJTtfs@go#0$cLoZA2zQ*iKMY zb1Ck@`P_c{*+H~z9pjHlGV|7kWSoj>kgop0xT3<}qBc}O6N(}jSELDhV<|>r4xAl- z;Zuxco&M7eWJ>Om4pN^eW@jR5Z2^An*Axdf2C93_`j^5PH%~eO&ZzxVWv)w46loQv zXE*ANy{pXx7J#YCMVet_1kd*8a|;GxY+G=`o4f`!|L+?elSqX<9o{N4$vlw}J;@_q zWz5G|>ap3GUIme7gn9+&-2xvnMO}0p2D5p4KH$ z`55LI3yLc`4sT7z<9DpllLWtJVxD6L1h1k6u3N7_eFbS>^7}v~v|XdcEN;VWg1J)fvuxDwhAXTZtfWU`}9*|C&Ama5z zcO^yZu9Q#=&Fz~e^t#h^aXd=ltyssFo>7c_*cg(JzCpv zCz(z`!LujLKWFb>M_6u26^v;wOrbfC->*1in74)w)i4O2|IeKt4OHqx$H=2B=bJyfRsV&J3UYM^@1tiK_gar7kDK$ES;7ntrGlslog5B}6`{O7cdt+e!vhzcIL((X1$}1=H^ZCo>_5jJ>^JNWN zO(w#(#DuD4OCB5H&mP`Qg*0MUWQ|Ea-rt(0Xe>QY)OSzd+)x`dJbyEe$IHH}0 zYJMsm!PuLT^`4=|TLH*NP~9*ucTw%N$(@gkPvPyFT;$_QEE?HVKS%1evnYI5Ne=1SKOl6 z8NF{QI?M)C`Mc3m6!zFRaJ)$k;&0qhNfQNh(-Ar&XJbFD1CE4Uy>Eg$hE1k0Q@X9U zq%G*C^QT2tYspKeukbPzH_OU^05}O2RxOZ|?)e@Rot zjIxa%ZZ-NwahDQA0jdmg2kL}=NBn$61P&xIL+(KJ{{8d_f219-*&=Kl7G4FGYSNtj zKGyUcS@?(8gBmv8_=}aWeDNL+MA%g>F+cMNH$Rq^V8+rQez34QJM*3VgI0M(WqILd zb97tbRFf!qhvngp>N6#J8``nFG5`GB+uM0a*CnF0As}8f?8cU;S_rINnzRse@!Xxq}$w$XkGk@rkyk+?K2C6jzR#Z6aU0>wam1< zO^aLI46X1d>$~wJq9vtv?WUr|JxkY@4rW(=F488M*ws!rcsyk%X2;Xdv9^s{#K%4n z#G|-sy)~Bw_2+_@nQ`oe2{Wol$)Qs=MB{@h0{vE4LJ_mNF{eoq{<&s$Epf-8kTI!g-6IY76a?+j3y1g$gZ+!=%R1d4jd$rsZ?}`3+Sikw>%QHSj>n$pSkUP_b zy{Onn2mfPj6A(bPBTr;21k^FD%*7f$@i)j*Wwz>iUxBOc4jqYFABqp&Z!aL{X}@cQ zp4R>KfskGE{Xq5vp4(Utxv!|yjP(&XJAKH=nvQCwgzY)$rchu zPz2SsviizB3m5MUhg!N=PEGCZ><(q*24Qb^G2G^%-pWd+z8heevFBpO3@?74YKpFL z7{OlWh;=A)mnodW*_LnTUiRrhT-;s%JY5)x&fPw6mDKp+qw)UJS21P^4G)z^?Tg;! zx#NKert;r5FM;I>Anfo0q;dw-F_RRF&@VNjLc+`a;?I~*p(THK1c(6K26!`0^G?FV zzRmzK`a>!?AkMq?Q7^CkN2frlgjdJpXrnH4I)%%Ohi?t`IR#oH24|+8_}PHi)lTU7 zp@%`C?Dg-Gazj3%^4@)4)k3GBznjF_cQjgkzTvtt;Kp;_4U-(F`?E$qaY_A9=G!3) zv8O<n=VM!{Wi_9Hu0^Bh~0#w5DnV-Ncw$ybI^-F zb?b$5acwMuc5`kg2etPfE!jxL$D?c`@A@fJjt-krb_KII1MkAt2<)t zpZ}wF_&q@}&8K=h;@{q3jMQkLj36J?cg3eS_L*5D)x<~T7 zQ)ueM4seFM8`q0!qmELd$VVzm_I+W3$EKrD>Hd}F%OHCWiACc#;zmW;2Q6tW=@CW) z!dDcREp`-?-tZlQ;=c~zf9UJZD9#KANF?u?ggJyt9zHf9OGHN&yqf$&NdHC3FpH+# ztq6a7nmpzkGEM%bJKb`kzMR*?u^z2z5q$98y{lhI1^8psmgaH+3x*`dFv z!84w>GXCx=`80g5|KP3!mC&=Eo;O+eORK)Hf1e+{}5*0^4TfCMI*$~QLO(@SSNuqAB zHq%X6E=W!QDcow6(5A!y@$_?Mi`^*mGTOQo)*WTYZEJD;srwLfClk4Bfi5K*#WYfs zcb%8iiRde;>750cw{Y)s@1cIr*q_U`x13=qMwIVmq-;TW0!%v|7QeTktN9cs-;){7 z6xxE)VV_+)C(h*uuRMp&WXFu?SN#-asnQRA8st%jSu19*6)z~A!EaHH+{&UpecDG} z6N`u0b#pSQU0Qh00OUY8iJE0qR?nnSqB3Fks-e(#e_uO+#uEM=%DVhp5lZuf6lTbWZVB};G=`tl){7y}(OHhr!dSJc29mYAYMqx2gVn_rdn zRK78lKjRyvRjaNVRTu-8`PY@%7Z0gu{nPHi+IV<7DjpCA-RIGIrMK9Xp%G#w5~35t zSOo;l9*T6Auvd-)YDz-6OVFKchH1ABEpiU3z>0e43`2;)eGBXk6y@k^|CN<85>X6@ zQ11&1Nq^9YL=B=bE(y>S_{u$nEPVa=vT4oc2H_jhhF5g9^UUgO4QuPpS+gMmC`gvB z4ZJ>C~=kHO}rkt^lr;3S+?06RWOg8MUiwYG+ZccN6ia$A2~)9{XKk=VzDBh4ae*T2=hC zRbTb1?W$7p9TOFv;z64VQ=4j>EVG`cI34~3niYeX?}+-+Uo(#b(}ti!WmAOV77S}c ziT8OCh&%}ePOueW*Xz_JP}p&{$szOjDggLk9m_BrABp#{73XiH4Hl_ic4!ab z989crAJ-riTo51%!hx&t*E6o}lK2?AA3He46AOFc(tio3H`yLFj04TeOQ}@mL*)03 zVH3&5Li0u;*E)!uNtFA?13yO5QX|Fh3F)4CLHx|-bpC*Xpwxpzh3N+GL-F4+iPccCDvcP z0CX4f%O}tg1<8XE(0X%&i4D1k(}SNQBM`g_>qakjG>S}TaAFmFSEBq5I!W~sEBI&U>yj~osY5SQ|l$dJKg+9n)Y)cm=~ zVGamY53s!!$)H;~7=UxS&k+ybe+S3YNPoaXP63Ia<{m~}G*tarJ;0As`MHS0@okfB zHWM|#oVIouYD_dD(OFQK!Uiu8ev@Yy#9X1IK9-u6St9pCOIkj&DY_tNw^D>tdj4|@ zBD(iX6kOh%>{66SwM!{Zj$~B3Mj&Mr=2nimIb@<%{H7%o1LXDn%NF#k8dc46iNXR!Bn`au7ZhB}ig>Ro$1>WS#xzrm|bUY)zw*#F~c#;H} zj|s=SFrBmYHBbvyK^9NxfGVW%fV#0FSL4sJI0wOS2@*WEx7~Pd@Az}USiE@g>zsWG z+#r`1^oBDsd%rF!c=U~vlD0;?^J~pX?b*XqnOav} zbf|PY9hTfV1XOE*1nZEpw<5v*#MuX%#}cZvz^doVO%Pv$8qx9t5Z2q@#!d#+d|W}$ z1v-vaK~m3N8ENq?&AqjaMuti^!*^|n>rMM%PQfKC!Yr4luyKmPE;*!@YG0`QUT#up z-LHuZza9-@{Ii8pE<#@~A92xiT&fo#cf(N^qB+4by%zhhvlXgeHT;iD9yhvfKM92+- zH{VLTLz#Fw+hYb3zq-Pe&!MWd1?ARK1W}CSHWo0bg$PL|kSg5F^yCO++9oiolRBw8 zjRxhiu!~m@lkcL|z6VP$f&`%meRyzYv|)nwxQBS_-tbw?%E|}hh(xwX3}fJTfNMwQ z{eT)DTMZezeNl4c<_Dm6+$S3Ng$w$%$8YNr;Vzk!u3!XslQRfHCu3m6 ze6K0+Tn@j|!d~$QV7a7i7UetVgW?zI9R+jbJ4!p44lXY#2y_GTM)?B|-Vny4oygK+ z7f&TL87S}-%u&inrpags+SJ&E8jwDPsZ&le!bu})e(6vlA1o#}xe~!xuc1=!+*~Q%V4q!x8ifh+B-J zaOgi2A|Q(Tc!7@o(V9(E;bGcjPnFAHQVRlt#W05@n!v+SwpUKm8$j;(M5DUHkN*Z! zh>Z#IW(vE(={T_{@%_%}hh=Di(bvezREk~}`tu5sw)z%RZs$jy0YrX`=x=2SJL{<0 zh*pzzg1*|LstHE6#&w7MY^}=|cG&d$?F8ln%LCSwf<6(GuAsjxaC?(H(yehIy8t!}EA$JyYIE2o!_SB3^jZxZX2K4?YY|E$DuqIW<Lv(&se0c#+?#QA-$^MCgeQY@@%}u9&R6g9Iy*mKQ**IE z1IKX>B$WT{lgG;SkK}FG`R%Dm4;l^L_HSmtY$SzLb?1Ghx|@Z?pnW>uctwW2Y-@fU z5U}6n@@`lM-8wDK{2a7RrxiG}wijg9~;Ib4{{F#92X z3GLgVE?+t72Q=mnebevpp^WU0kt#}zUi4;Erj@YIktf*$Yn@zj82j%Bm}u20#{uGU z#wU57qPcfU`WR@EvVG&>a-|i?135uM8YXMkn*it~;jiZXh>QW}%^7y(f!O|aWYTG& z|Ae|iC|XI4k_vH7!hF*#vUBi6v!OV?jvmNp{Ji7P@$pC?z2VKVp`=%Kg5it7TO?C6 zp#~$0Ps3q}69OSGHO|OD5}LKD*>(*6=QtOTBW1>Cx`*&xNha)) zdp=QZCi3~cBbYcH9WvIpCY5&oc~fuly@yXjvmH)9c0LeRbF}x{;%y{Z#iv61Ffe06 zYME2$=gYh8m?gCc9;Hx*;Mhu;M2@$^k(L_-EMNjnuNewzhX^bXn)8gAysE$QH+WbN&2vY)yU_xGrfn1f zfR$AbuWJF%gz4wSGC+KA1foED$QCrKB{U@I(&z5sxo!~tux zT4$-l>bRk|$UfBnrtQJk8SQC)!wGz`JLveMFEfa3Gubj5GX^3<;7raimu|8jK+=;1 z?y-N_?ss2+KF`4q#(~=veKa*kddbEsiaJ*X+BX1z*jNkV(46~UywjcCaZRgCyYPGP z$ehHpPJV4uf&A*C2<65I;$b<*BRVhwBG*T&ui!b$j3Wa~-1WRw1nHEr{#aj3vHRW^-b`_2M$W5A*ja5hpS-iuY2H?IL8V9PQB*UWvUT@+J5>=EqU{ z{=AYc$Ueis&_5}8AlOwhFhD$?=%Y%H*~!epiNtR}G&;vv8;Ukzs??r!)?^QV5G`mB z!mMb6x6njoUMT@T!AD_y`=a%444dFJ#66k#D*~}rnD8}czSVPHMgj3Kj-Dq}&k`#l zGyGR_QH3eOw!C%xrmy2E?WdUYuyOwpFwV!@ui520VnWNSu}69L>(E=IVazKspp}gr{u`gGIzaf3m+gN8n5h2mjC)H8Q&oKok*gQn!I2p1(5XSzTeHqio|DOj z3tKzk?0F_39~Ny*80c^n@>Zz#Tm2Y*ieABn$Uxv@J@@;hHX2~y`iAOB5+9pugr#e6 zdj88W+_NOi{}X6TFj?f;?;Z-g?bmwsxz+I!p_pR>PMdJw=pu0g&*mBg*s8?tRS zMSg|Pt1|2FCARJ~2L*Mc^8^ccg>GVl!VhGzqCn6yrU=^^~7GQ9aEs2o&)CJ46-$ zp&n75e$Hhqe4ZWc)I%bPv+l!n^{cgSVuIXYzH+G-er&4dRX2)4vvCW?0^JjEAmpp8f+*D};rIG&G=u&v`GVrJ0uAR6Y`ryxY@B@u zdZVIZH%jJ(?ZTO4nQ>mB5G5YW7hrA1#>}t})hL`|LJDY( zNK#y<-y!%FDrKUd4O<+z6{hN5{4@vB(>rP_7NU&Ci%5PT&4|=q z1?mM*`o{myJ95v;Y^qsPWfG~b)^1N@?=TjVuQZcD{L|`Kmb%+cIe5>^dJ_>t?L6jNq8>^KsaXg|k;9 zbFsnYY>Oq_!8CSmR4^G4l6ewmY!A;LgxdQjpBQ175We_``~UwSifQmWLs^WH&PsV1PI_ zP$|D1qx7kZWlUwj7wmY;$AK$o9Fq=V5rxaK5~K4i!7xVH=2uf82f!BE=jRWT%$$B# z+^5}-4c~_TFDL;h&R=uU95B_8JwK_%rFpm2z1QT1w06;_3SSe5*DwOCar7Lq%+28d zQ{nus6U`FS{_E+mSX)Cqbb&#lX~)6%5*t>Ifc#SPO!41)y6miD!Mr4+?7&Zo7BjEw zc7O8%EkilXmW*Q@LfIP$Xr?f&;d<~+8{ul;S_twruUa1uXv|wd+tVK=)MBQk3OC%+V#VjVtyi5PuC3;RELotEqHjUd|B!2?oo#Cz0$`%-pPWWyRE|GZ?eL_?R#uw?$XI6@RDtGl=Hr%7vRqn_xcbo1Xsg;5uj5L-q?DK!K~d+#m} zo#!C3&Py3c8+@-hh&SzZV=O?=Ae?6~j+52g;vqBn!Flm{8#tc)&sv<6`)?Bp1-JU$KwR@tlW_)%L1+vm2a0nFytXtj`5e{~Ggp7~0v@NH-mzw^ z_Uqi;%`DL%bPP&<4BH^K!{3AAT7I-2FWI3A5 zJB-HA%jS+Q*buXEJGLBptj}xaZ_0v*gtXE0nxp`Lj+z{9L8IVNk_1wSKa%N7eKXm( zkw88lvPiUhA*3n}6`O*uplwMp zHJ*(c8pD<7FSovXm*0KtF&|?kXhXKWo!?>BZ+4wOv>T{)xd>rlBi_4$U{*(~C^^V{ zaj5;D`8aCe`;)x4=HW2Lm~+&=hl&}~=Ojo)oY^_W{5RNi11Z(ub`^LA1Q<};cV%Dc zo_$23^QzLzmu9wpQ*4S$=p zeuy<&%AS*mVL*$vb4L{hdy6&`N|XDx_;TrzRnTCn(ryV63p=yf4R=rzH(Y@{srfz9 z$KlRAw73+Q4BE#4Nd5?k@kj-yH`)lismfPQjlV{*^oN%uQqAyxVE9_56_iu A_y7O^ literal 0 HcmV?d00001 From 9cd1940ef3a8587549a50feabbedf6c3cb938533 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 15 Dec 2013 02:38:57 +0000 Subject: [PATCH 077/109] digital bumper sticker - use smaller logo, fine tune position - change z-index so it doesn't cover up the detailed AP tooltip --- plugins/iitc-ditigal-bumper-sticker.user.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/iitc-ditigal-bumper-sticker.user.js b/plugins/iitc-ditigal-bumper-sticker.user.js index c30e5099..d2ceb91d 100644 --- a/plugins/iitc-ditigal-bumper-sticker.user.js +++ b/plugins/iitc-ditigal-bumper-sticker.user.js @@ -1,8 +1,8 @@ // ==UserScript== -// @id iitc-plugin-portals-list@teo96 +// @id iitc-digital-bumper-sticker // @name IITC Digital Bumper Sticker // @category Stock -// @version 0.1.0 +// @version 0.1.0.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -15,10 +15,10 @@ // ==/UserScript== var logoDiv = document.createElement('div'); -logoDiv.setAttribute('style', "position: fixed; left: 30px; top: 130px; z-index: 100; pointer-events: none;"); +logoDiv.setAttribute('style', "position: fixed; left: 20px; top: 130px; z-index: auto; pointer-events: none;"); var img = document.createElement('img'); -img.setAttribute('src', 'http://iitc.jonatkins.com/assets/img/prefer-iitc-small.png'); +img.setAttribute('src', 'http://iitc.jonatkins.com/assets/img/prefer-iitc-200.png'); logoDiv.appendChild(img); From 763adda4aff9c0f8afb9237274fa3468d51d84b8 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 15 Dec 2013 02:48:39 +0000 Subject: [PATCH 078/109] updated assets for iitc digital bumper sticker --- website/assets/img/prefer-iitc-200.png | Bin 0 -> 20066 bytes website/assets/img/prefer-iitc-205.png | Bin 0 -> 21537 bytes ...refer-iitc-small.png => prefer-iitc-256.png} | Bin .../{prefer-iitc.png => prefer-iitc-512.png} | Bin 4 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 website/assets/img/prefer-iitc-200.png create mode 100644 website/assets/img/prefer-iitc-205.png rename website/assets/img/{prefer-iitc-small.png => prefer-iitc-256.png} (100%) mode change 100755 => 100644 rename website/assets/img/{prefer-iitc.png => prefer-iitc-512.png} (100%) mode change 100755 => 100644 diff --git a/website/assets/img/prefer-iitc-200.png b/website/assets/img/prefer-iitc-200.png new file mode 100644 index 0000000000000000000000000000000000000000..3732c76fdbcb224934fa2efcf1764db2b235daf9 GIT binary patch literal 20066 zcmV)tK$pLXP)KLZ*U+IBfRsybQWXdwQbLP>6pAqfylh#{fb6;Z(vMMVS~$e@S=j*ftg6;Uhf59&ghTmgWD0l;*T zI709Y^p6lP1rIRMx#05C~cW=H_Aw*bJ-5DT&Z2n+x)QHX^p z00esgV8|mQcmRZ%02D^@S3L16t`O%c004NIvOKvYIYoh62rY33S640`D9%Y2D-rV&neh&#Q1i z007~1e$oCcFS8neI|hJl{-P!B1ZZ9hpmq0)X0i`JwE&>$+E?>%_LC6RbVIkUx0b+_+BaR3cnT7Zv!AJxW zizFb)h!jyGOOZ85F;a?DAXP{m@;!0_IfqH8(HlgRxt7s3}k3K`kFu>>-2Q$QMFfPW!La{h336o>X zu_CMttHv6zR;&ZNiS=X8v3CR#fknUxHUxJ0uoBa_M6WNWeqIg~6QE69c9o#eyhGvpiOA@W-aonk<7r1(?fC{oI5N*U!4 zfg=2N-7=cNnjjOr{yriy6mMFgG#l znCF=fnQv8CDz++o6_Lscl}eQ+l^ZHARH>?_s@|##Rr6KLRFA1%Q+=*RRWnoLsR`7U zt5vFIcfW3@?wFpwUVxrVZ>QdQz32KIeJ}k~{cZZE^+ya? z2D1z#2HOnI7(B%_ac?{wFUQ;QQA1tBKtrWrm0_3Rgps+?Jfqb{jYbcQX~taRB;#$y zZN{S}1|}gUOHJxc?wV3fxuz+mJ4`!F$IZ;mqRrNsHJd##*D~ju=bP7?-?v~|cv>vB zsJ6IeNwVZxrdjT`yl#bBIa#GxRa#xMMy;K#CDyyGyQdMSxlWT#tDe?p!?5wT$+oGt z8L;Kp2HUQ-ZMJ=3XJQv;x5ci*?vuTfeY$;({XGW_huIFR9a(?@3)XSs8O^N5RyOM=TTmp(3=8^+zpz2r)C z^>JO{deZfso3oq3?Wo(Y?l$ge?uXo;%ru`Vo>?<<(8I_>;8Eq#KMS9gFl*neeosSB zfoHYnBQIkwkyowPu(zdms`p{<7e4kra-ZWq<2*OsGTvEV%s0Td$hXT+!*8Bnh2KMe zBmZRodjHV?r+_5^X9J0WL4jKW`}lf%A-|44I@@LTvf1rHjG(ze6+w@Jt%Bvjts!X0 z?2xS?_ve_-kiKB_KiJlZ$9G`c^=E@oNG)mWWaNo-3TIW8)$Hg0Ub-~8?KhvJ>$ z3*&nim@mj(aCxE5!t{lw7O5^0EIO7zOo&c6l<+|iDySBWCGrz@C5{St!X3hAA}`T4 z(TLbXTq+(;@<=L8dXnssyft|w#WSTW<++3>sgS%(4NTpeI-VAqb|7ssJvzNHgOZVu zaYCvgO_R1~>SyL=cFU|~g|hy|Zi}}s9+d~lYqOB71z9Z$wnC=pR9Yz4DhIM>Wmjgu z&56o6maCpC&F##y%G;1PobR9i?GnNg;gYtchD%p19a!eQtZF&3JaKv33gZ<8D~47E ztUS1iwkmDaPpj=$m#%)jCVEY4fnLGNg2A-`YwHVD3gv};>)hAvT~AmqS>Lr``i7kw zJ{5_It`yrBmlc25DBO7E8;5VoznR>Ww5hAaxn$2~(q`%A-YuS64wkBy=9dm`4cXeX z4c}I@?e+FW+b@^RDBHV(wnMq2zdX3SWv9u`%{xC-q*U}&`cyXV(%rRT*Z6MH?i+i& z_B8C(+grT%{XWUQ+f@NoP1R=AW&26{v-dx)iK^-Nmiuj8txj!m?Z*Ss1N{dh4z}01 z)YTo*JycSU)+_5r4#yw9{+;i4Ee$peRgIj+;v;ZGdF1K$3E%e~4LaI(jC-u%2h$&R z9cLXcYC@Xwnns&bn)_Q~Te?roKGD|d-g^8;+aC{{G(1^(O7m37Y1-+6)01cN&y1aw zoqc{T`P^XJqPBbIW6s}d4{z_f5Om?vMgNQEJG?v2T=KYd^0M3I6IZxbny)%vZR&LD zJpPl@Psh8QyPB@KTx+@RdcC!KX7}kEo;S|j^u2lU7XQ}Oo;f|;z4Ll+_r>@1-xl3| zawq-H%e&ckC+@AhPrP6BKT#_XdT7&;F71j}Joy zkC~6lh7E@6o;W@^IpRNZ{ptLtL(gQ-CY~4mqW;US7Zxvm_|@yz&e53Bp_lTPlfP|z zrTyx_>lv@x#=^!PzR7qqF<$gm`|ZJZ+;<)Cqu&ot2z=0000WV@Og>004R=004l4008;_004mL004C`008P>0026e000+nl3&F} z002XcNklQn(P$9j1|qT}-A%I;-Skqu*IsqkbG|?By;ZlWtJzU> z`u$nbU0rvr^W1lN-i2_^F(3mnAlZcu+=2lakO6=U$bg)bhy%Ca%OS75_8RhXbCI8) zkFwHY>^|I$o9=xQZl?e^3oz-tIj9(v2c0p15C8xNKtRBgKLh8DDuu^E@Y_GHLp&iv zaCtCk+&GjLxWO0)0l;DW3%hyFIlzs5z}h?K;GBao?ie$q=$rGW4AmT>@JGg&ZXA#R zgae#_8#@Le1cE@&+#SVhA2&i#bqE5%+({Lfc1{ThG0ru40cpaM$LAmb=hmfW`8)^b zfG7}b+uw-~Yg_TRpM7-zAOrH*3n7@PsQS&4qUkP&u#*#P`J%YK118phoJn8|7btl` zR`mBis`t-X{Z9S7+Qyy_Imct7NQaQDT42D$8jvr)_+vWb@c|7oApZ+g1_&kOpE&1RIzx$H*0%%)HFZZJ zYYc)Yz~K}Tl2p9CqZyB^-Bb3~_Qv0YV)DmMkzONEG60YP`SJ=SWI7?_&0s?LOM^c& z=|FoJQCR~70Ynf0N&!kC2o!=SprtpCKYw@-|L@JclQ%bXye6ycb%#i&oNX`}FtG;Y z6qN=l2qFJBu4s3*_r~2_kpvW-L!i_aQA&4A06?S^oN?@J3F2^96z7d9xq9K$p*3SF z3LkTd!Y>6%I|l$VAYWu)xG1G}Dw_VI&QPMlAB-cR=%9pv3M3V9VM)2JwKq-zQ5ibtpp=-vAlaj~7HYDPAA}f-o+%QvmOV^r{dA2M?OCDd z|^vdCq6NPdEnyK&b$x#uHNKp<7uZ_==EI1nlEu7PrLg`%+)gpl_I zN`9d;7T^N_8IaG-?iK}zOahalAWWUs8;-uFF@1PjZyYgM10evV1e}m`FpzW&(w{kG zeTEYP#yRp_B0QBt-pMByz7jaF6NiirF+TI_ zA_T(-$bB(c|As#lcXUT2C^|QYKGO+L5)`JkpoD@Gp41*BsY;MW;-%{lo(3Gdk3bCj z3JivcMa>s6|7LJ2#(7vtD+~mLaDX9MmgwK zTRs49eo?fAvB;6bDY;wL*bh2FQfWsh0ZB6!r~wR`!iMR16IkYt@kA#;nyF=J3!3JC zkaT|}8P?4(v^WPP6hhiTQ!h#=2n9GZQdcOr0SsyuB3k|oGp@nm5TNP|n-6rNp*85b zU|jh>FPL1pct~;X&jJ3puJgocHL;?yh8>4{u+N`z1eLDCPF~Hja6()Pqt_@9f7}y^O>XOrAu6c=wdGBjAjm*SQbQ0zlk3_7kFkjRI_K$5 zdtWC#dAm(u8Q?Wuu=yv15)dK)rsm?z1~y9zaez|_Fa{7npcIr6gc2(Lw(|(~H1?ET zJh}3rIpfQ};mvj3tLyAd#&Fzb*J%m!GC2m$49y@46rF!u;sG!bfX7l6C%R9MQ$Xuu zw`R5f%kF&ESDNoa?Qd_W2H-2X{h0vc+rg^@t9x$CYiq`0MunU2J+nwG(CEAWrh!yF#VXoN%%e0N7)vNs$=Yka*P`` z2z9;|R8w^NetsM|FcC59cvIgr#G#&(=gaBkMV)6{3cjdjR5K}&B8fBx_wb{^`Q zS~GR%8&gLPde!X^@6(uGdpu#`Qvyg+cMMF5K#%r-MSA=I+B*NZWMN@R#ii$8apNSx zo#$3Hh8-JTtqU~O2J+m;f4J7iZp~`{cZMYR|F~pLCop8nwRd0L@X0@X-A^uE2_O!j zrm&>q!YT8wsLCHy>1CXQagN@O)hit`yj% zD5x{X3Mlv-Lfu&Uap{?Rj$9>t%O5^O4551&j&3 zz|0A=E}1)O`n)PlXW$%&MZ?m*E&uR!AKtqjz*Ye57C8F7?rnct1KV}W{)Uy=K%#0o zhL)FL?SFq4KVP*LPdxej`y_a9W~_PFj~#=CFUc7_S9DfR1Ox}bb(^U~Y|$y(@7B|t z5u5fvYB7^^aHKi!nb@%ND5e7~WM~izY?K-RVaZ$;0~jD2grjd0hGcxqXa+$*Ac}&K zR(~V_Uwa5MMwNbb;nZQ5j;bj5y(p0X0?>7|^sZ9@$kxa|e)l+^eEnT=$3d`As}DeY z-1(O*yY8QVva~0`-Q7_cF3vG))CDz>J#W8}<2s?kWwrlzH1;Cw+upYP{y!}Js70?} zdv-hvU@(B0U;EC=CFABSs_BZz2*wmhs*!#@Vm!r&`8Q$j#)1x;p9Dn{LH`Ltt%^HWdvZ^yIA)HV_K#(I4lvQ7W)`nekcfR(gt1;ZOZghfC%FX`n)C-!zPa70MhZxoq2DZPFX@YztxN<$L8n-?K+Y{&^v_FuyFZ53vil9v+q4G2%$e8!pX+zEMBO`@0?>2@uE_xBC@h(CmD~|I zp#x;I{{fC+3zyI9)^jTw_I?PiDF86@u3x>dg5{N0{e6!gzK#&Mrho_{2o(TA;dThf z88)jXZ{c@6(G3s(0zg&FRZ_L@Nc#F>j3dUK-cTgwRW#y}HJ0@z1&YSceREeU{K2@f zga|>7OYqWhmtK!UTk2XLyVYMYX38~-?znepW3S?_-O+;HPy}4pKm-SfAj0VoQILC1 zwfE}#D!X3$8CbNt{&=sOCDI8(O6g!i=~NE>KqL~GL8*Yk!h$6ZQM~V4w_LO9+L{aS z)89ObmtXzcrf?v5F>Cqs7Pb5EO7}VERe45V03p8=6uJ#0)&jPH#$5i?W?H43d0Y6G zBx6{8tgNK(VE#-EA_f$eKVpAbKr!~kGBB6YQ7i)_Bx%MGVwq$xKmDH{=L%;kh+5#U$2$-e^^JtZEFC0H0Yd3i$c1?`)NxrG~GC9rMn4A z%ie%oJVXjsPOPBr{8RFGTn-U>#nid=tsyWu2I6pG+E?$sK1jV)+w0m9h$+wlZID{_ zN)GSfgtK&%mwE~ysYWX%c)W9k;^B+*-XnpXjlGBkyCLMJ%ze418KKr%Xn|JHLULp^eTiR7*n7+@++KU=T}QR{!)Fs*PSWbwr%~z;K75xK7RaokD{mu zg+eGSEV{C^wDc04@jnz4buXFWgo{{4FEr)y{yM^leC2*04W$;Z93n_b={e=efxG-ZEc+>%Q6TdV2mLU=tWaw zqsQ;}-xG_)c0{7FyT?|IbglZI2l40Ck6_LPvjVEZek}L+&yVhWeNEuQXVC6%MS?qs z%4zyyHTek3R}d(YKU340rk1HhXzFj&%$lcWSvs+8N2x&)QuBA70wzsr7b6TzK+?7) zutL(bkAt6#Fxb=)5hyqz&_Zp99(X?yJMi9brS8V_ph%A{no<^Bv3SgB2MAt%`Q^36 z%UAoXMaDRXqNQgb6F~%}qQv3>Y3$(BpSMLo;Vi1Gh}-OSA~-8w@7e+$9e)qZb2GVmY>CjASjmeb8gQ z5S0j;x}%T;20b1!p74nfsQF|s%yDEaUd&v>*T4JYx@ha6&EkPARNy)&F-#IFh!6x3&{bQc%j7RC-y?(nAcXW^ z55h^BQ*CGzp8h|cEAmn)AC>enqZ<#c8@wcl_FmiUpFX+q`2reE5HBk-i7mK z;gP3bjBIYx5okUDL5_leh;mmW_=qVGTsZ*Kkm3`~r!}>)^%+sD^k6SfrNDEO2cayP zR+0%RyLMt0TW>Pw05QRVWWQcwlKdP3xF$pGIt;maPnX)${0k`_dyEnxvH0p5+|P z?C87Z4VyZ@I@eoP(bN??drqEngpprS8=#Ps$Vp$f84k|MQ`?{5NQ*3yq|I*lCjrD_ z@qDk>`=g?wqMJ2MyMK1|v}b2dpQ1Olb>N3T{V%LtyAL_}xgSRMZ+cyebX`+CxdypI z#(@d~!1T087A5H#3mM6d*7Ya3aw{EPx6CNo*Plp&!!W5B11Pt0xBzBqkR(k)DY(v{ z1^tkkb}35d!BtW;^dJFkS#ZG&EW2(IW=Vo~*!tM5@q&_yiI?8^&FazB3+DAo-2FjAC%W3&z?lvrI?swz zPjojU+}muJf-K$q(i34oSC4t!*};*%4v~eTOQonInKq)TD!Mv55sgO9DJ~xLlwQD= z3zXhlQBw5bAAYqG4ne>h|Jc~7C1TfVNA_MVcQ!syFsgb=@svy888j4xGb1Qrv-$hL zBU_~*PnG5p%1mDapoAxR6)Sp1sNuXbOFOX4h?o%tqX4vMFA~jrA+_#ZuS5d(Dw6Wa zIptnZiD@ITL`q#hz zt0e)=;eB_1FAn&Fi0ykH0{C{`+2;)xfP4Vo|y&OEOHcFt4$iCuGLW72JTR2GMna`SPrCkFqvw*s0JIn{$8S@4=>ZuQNuwbyiT0Fg)p031$-BQF}|c)MOg zVc8JeeBHm}+AA-^6OTV0-?4q`Z?$083;HLo{W#jVYkBF^MNaRi=@6W5a9uOaCz~G0 zs4V0>gVG~b-G`|$nDL@WCkh!%&=ZTOB+xY#a)%GG!#e_U=i%Q(qmf7Q^76vhUOErA zUQ>e!qedVh$wQ)X={`--M#SL+RS<95F!wSH4|7uMe$0$6Rk zgiZVW@aB2u2SbBKO`ksf>HmKCcWmpHkMZd5{-)@0u}I$tcmu8c_YrBIv$d&c%t#dHyP7^D9duWEX&YM3W6lNuaG{x{Ff0RP*jGfrl#>AM09_C zzBtptm_Y*eC%(>TTI#>lQVVv<+9RbQxW!}>WHld>EH|;0)mo7t!GU<-2==dg8qS=8 z%5#cud$PR9b7PK3@11wyMO(*DoP@XDT#IL)UiC>h)O#5_v}19s^}x?6=6rQ*>Ew&k zKx)^L$*EMtV$q3BBiJKeBpG?LB3Sk?ZlcSFz~1*ZDS`GMMH12n<429ecW%8F3uaA& zL!gL6<5w}x9#j=|iX=R;_Ua-d(cc#q^G0duFEN_lJ?wx?*+4pk&1U zon@m?FmkGQ^o#`+#d)qXC+j!S0Ge&r!Ekb(R(y5ev$YGk!rO zfEoaW9_Pt`g(Kd&uPqXdOJ*`<@?I34Gu1o!;_Ir4a#DcbT>&^ZkN{0%i01f_zF@g_+o-Oj=%nRqMDiw?zeX_bcA{~9(U?9Mm?j-^> z?Qa1Uqb5u&{q74ZNYlsbb;co_-1B@}N8P54!jLI7go*$akmGS<@CDagHKHUJ{(x~W zEQVYUv}^~k{Zu%X{v7rb)juT3Rv7yf2!%tWh{`%X+~0$Pow2exqX+$VOj+*r3Ff%+ zoN-eE&fFq6atl>zmE+RB%^ZwG!gSL=nWRW;{s}kDJ}bR91#RTHL=+Y0>QxmBFkSl; zEp2U+^9l;z$ji?ko=7C1Yg+Oe?A`^pX$o#)``FINVi2 zju%7_5eo&-Q&$IHUa=$=Rk%+zn>UNpw(k0%&OM{N8k~c=av)0ygbvoC{a{`|EFR*e zuH1gNJ-p}RI#M`fu8>m%!JP*cfIpak(sdYGOA`iH4n^_Fo!8;m))%+CsdEx>ux*RC*H> zLh3xJS@me7U0GpS5G4`E-``yaU5cKQkfhwut-KjSj15u*=J%zSL*Zuk>Va$T-IiXctQ;mwlaEFgZ{BH=OFZ!+?>phNr znW4|N4ruD#JJmM2Z%)DO8 zDXu0Cj~9XnaBkd}ctAq5dpn7=Z-kn75kT;Gulu;1^h{PA*-Wpa`7Aa^)>aoH3PxL= zsG{psVY;kwGxCI_pON0qIwP>gS#s=iY8*64J=A&MoGeaw60DRE=m4V8D6~XGk0%mY zbVd4GR{Blad#3`BmtTI_w|Md5HQ4`wFALeT6~-%5i`4h7x@|Sv{c0V_Ew1K*%L^qI zpi+1{fFAwR*8|79F92KPTb_Riz@{w5z}8g6N(6xQO5NWj05ecDY!Y-8B+|Yez(H-# ztN#9uX_nru*A8wB!Kk56t3zkNR>jEB$$Ad*{tveHcYlg*dc;RP1?XM1tX6N@S_hyS zIo>KbJYH}PXi9>_dwix@wao&@@m}|dxbA6&M8C}xNV-*Kd!@>0Q(7mPVQVE7@>FTA zMeg+%9pc=m?;s#xl-W9`nAyDCb}U*Xn%S z*)Z?RFTeaIPN=mFLGkj{_28_&_o;8Jg;^5nUHW){h%TJSzKWNxmd($<*Awz`|`J& zaDDs?dr*L+w;eiGgVKTS?q3q&8H?n2V3V$6vd6#DiFsROilh^bR{gpanc_&9PWGem zR0(;qyJ9A3nHhRcVT7dop)ARmnc*tJ(|etu-$>Q~Kn4WqW>h~mS^w(EdivYplVuZX z`VmPVf~JMBl3`v>V73wBX=YU>*wZ6zBtvIpc|v6Soge$I3;<+6PTWr8_9v~)Cm@-P z8H{$IX^uTjwGU0HA#OH$OGU5jO&`*sYngf}2i;0jIWBg`7O6^hh0hYnN_{*#is-ob}MJphpZjh_4oeBNk%OVZvWCvXs>ofWr*j(E0D9c6Dk4G;V? zzGcVlgJcZLu_RzMj{Y)=H`j?nkKB~)x}~x^o@qN;I{Vp!grnsf9Xl7v@*S+z&Mi&A zQwyCVRprObacMAngc<226wG2ixHV?lY&xC6iyW63$dBff^HYB?oG3sRFJ9d5@SE-@ zm!6fwZ%&6CdgP`)*KG|8>U?5pzr%vQG#ZAaQ4ncx%C?|6H@g~I3z)&|s=!iugV~h{ zw?_i9qQC$hPX!Bjc6{`AE!jFbX1i8?iUm_=-SC^wNcvp&aSjVQi&i}8W3psz2%0MQ z>u0UnnCaxg?&}V)q-Nko*DFSoKuVU|ntx|DFmc<@R=|p9ENX58&9M~?@6X{mGbYwq zIQ-@_kw0znA%5r++X~R2b~m22t~l?{a^fcUV0+y2tb=Yi(v2RT@&!0gvt%q&DP>Y| z)8{a2Y&d~VSYL=T3mj&@-ITM_M=x2x;U-8q2Xt_-EZPe^)41eW6(jFsj-8qD2TAE& zwQLen17CdE?DL}xw`nW8^I4y!vs3X20wcfkeBki!ZmtC2KAOK^+lM_dF#+2k9-C}U zeERl!wd-*DZPyeDK&?4Ir_Z39A>Vq=*ZSD4_8~%jhU;V*G?V~PXa1Y*I*yvA!cRn# zSltg!z*Di-aEi?1wgt@7#z%2xypl}0Jr&CYnH?OQ@ibVbYpQg6iKlkdM|JT2ZUoN; zj^ooRCk+rnML3FwKm#UT__f<>@&{FV6^&uv_78n6Pb_@{Mz(Cb2_P4Md4(kvm)eKh z=!~QJz+V5pKQ7r0U~BoE&wivH1t{5k0?QXV{JWbU8&$pFp8TR>56|K+jK611{l163 zzOWaVG2_z3lgg?lR4~Sq!)*3{@(*9l^j`jot z;@Jk>^h9N}Ja+4v!jg&$&%ffvNrEfa9SVh{o$J=r_B^@low7Tg+2C=CXnOSK)Sw~r zGrQh-u{IItcxUX)i*Lv&@FuUrKI|07nah=lfg}KU(v(l-`kJbR!?sYlS!l_Sbglso z!VFT7vs7J2Hf_QgOIA5@p0VJ0N-J?@?U1Lvk{ZMA*xNiGj-zOStSI39d-%M6w45|R zL~kX$2z%!JV$I6p(u#_XPy!B}Vfxs)(5vQG`~Uj0`$bCDc0RGR2*BLyzP;j}F*6p- z3n|3i8o!cPo`1#M7@7B9i9Oy+t11L6r;@#SPB+AMW*+YJ(dwb;Kvb<;5=iv=;;E8C_*WpJa=yo zMNiX_WXm0=ND-%b)netjS9LzIbUT3Q*WL4<|F>+ythw*)??q#G3`#Tz2o4az0YP*i z&nKw{dp-@JNHTg<)vusKVG>EM97ynOCeTbdI%($k&1r^n^**`L1F z^VuvgvKpjWtOBvA82k8UK@cDa0tkm-%mCzOO+_k2#GDRj0s+Yvx0yd&x6GzYQ_kkB zTUvyrYaLBVfawa+Wyx$UF9Mp;GQA2tE!&6OVBv~=1-xA+5_UC;c%9Z z@oI#kHztFtvfDXk!8~c_UuK-lapJyhh=e;5{?d^NN6APpb$Y-#AgK(TXpXS8B&y!}-nH+=Gb#S}%@pF9# z<8TIU_L(gicYalSD3Kie!gUpTxWgxHe)>NtC4Q^@rlRTKRCJ3&r%o~**V8Fg$RAu~ zA3mc+d!g=q^KsTzn;d47w0i}y0>?4sHk)YCUZ|hG@wnc+JGtLf_>+O=m3Rk@nOPZ? zG(@D7>BbTvXf3c$~@erA`mv@botV`IICsYsm>z03haMQkDRNqU%V=TE_i!fC`S29yCNU7Af!Jx2C{C z2!$w$h{j^rym>QTc;SUTAH4tGwV|HQYebi4Pn}$jwt}g+VDUerbjH>5UByG7Guz6-p`Mb(i{|1FPd$rSbLNI3(fG<( zPuq;vjccAi^7f-F?Ar+y0t7065}E-D8{3}|;LSA0cs~~E83^+l_&Um99FI<&?noj9 z5bDZ>bMP1_04j?-h(ra1&A$^WfVlHd`ssZ%kyYJjvP_MZ8SbHzz{V}8lA?h`c+Uo( z)ck4EE+Jg^1876~T=NsVGnDi@T&G_q;}ixB@qQKnw^h;+LLdkt6h%S9zC-wA>(J_M#&ol0+|nK-=|9+ym;?_? z6}sBmi=;cpW^f>qP|?sH9d}Mi&IXq({a|o;`P(ag`XJtzc|KlyCTx z?`-@962V#0tV;zhMUwtqQZr-%fv5XDsb>UFg^TT4WM5hh}fg=5V55#DvNj z|N8g}Pf=;59*)|+Oa`v0XW}&4db&FNoQoC2>?xC%n~UXexe5C%?(sUggeZ!#>*OzmI}&`c||>KpFm<{H`F7(j1C znR3CH;cHMXLt;_1aa^=-{>WRnk`m3+J8;gW5YTNSqx8kzeD-vLgu7gr) z4_GIoUEt|NW4by`PY_7e?|%*e=>r(fp+IyutFEfnBTSu9SsikgPtz-DK3UCf0 zIuVmK=!~PZYEI33FjQ5C_>jXaNgImNS4@gjuT1T|6Bl~OL2rc z527d14Xz|Ie0vQn+H*#Z8{7EA!>$=Odc~5F)nZWv1W!IB6=>;=qcp}Sn4UemFPu!OK=^x!f~Ju7|07;pnZpc6nKEQ7~LrM6qCCY&RCmjs)sWjXv{ zfIv7Bs)o&nda=(R&YLl^_&;V<72jBz@BHbQF=JQXyW*$X%sKP0Zg(@f_kE0DR~sNW z;_tuzJ}>rq$;3$$AvzpTRVD3VkiU)9~Rv?VdscxaE+P^anLYOU9BX#{NtFSFYgRV z&YqY8#sQHMvqNFZWU*#+P;(_Q&Y{~PQ&#$};eWvNK}bfi6;FS{+k5~HZVodwG*nMi z!P|TM__R4ReD2udC#DbgF3)$1_g;L-!uKZ4lJV*0GOYbWJv1fp?vW!$uKxXFk3BGR z=FDje7cRuGp+liF9h#;kQ(IDgN4mB>>r5064{zH5HpfAc+|v-5!DN8tSFWimVurReE=rmR2n&Fkt^={ z@e0OM5sj_BZUlF{^tgM*u$+o8fBc)mFoQlQV z3xq(|8Fn2Bz}Fd}vqzUK&3B70aUOc3jg+GN!kaN|(d9U}>2+z(Cm%iB-PQHdYp=a} z@6Me&?x?9*=$bZdI@~T76je<|){eiR>@xs}#uzk`9iHL1iu%@2GF3y52cdQ~o{7__ zs+e|h+C(QUxECzgwn^Ff*R`eRE|_SMb~@+an&yU)VS5HlOcjYpFd?aW+Lz-j8G)iH z^Q*>PQd8k}oOnO^wzf9b)z#JL^BwvnbY-=}ou|2mUkKMZvq5u6cW@}KwtVPc3L>)1>5|%Q%4C{sT4ME#eQ;^=!IxWMO z8#7i!LJ&%*IM@+Jah{7ys*bp-!|f0YMo&6Vt66YSeDj9C;mtKq`rBI?zthy%`1I=4 z&pfbo>$b}-y|f0SM~?=jA~Z8fnwCZn-VZx+D%rfE3)CD2BMSW@Fc1&*1W@En+YaVv z1eZgAQ%o%emIxc;(@yX_EH+*gQgga9rM@+UeXW5c52E(A8bFD3Nn-}*V@IRWRGX@z)1KSCJ7`#1Z-(U`}hsxwf*FvqMUL=GD$xXEytps?0B7Mf+u050Q3`aCsfu~W`*@WOu|;T8Ym z{EIK!JfV6vw!Oa&Z@={Pw%)Gxuk75l>uU!O9{kz)GiQ!paPh?$Jh&X1rkR6vcru_t zDLuUaaTE=PW7JHqsQA65`RSz#T$Qac$AM5!M?feTm3&$XE)R0X%=IeUU#yxmWm=Ul zVXYe-YM>1)jhhdX6`||GlbF!z#U9&GD=c*kDhGpL0ir1t0g&NpMfS ztg76lCdvv@=dZ_t;8NJCy*TZRzUdKeYu~kgqfk1gM#w7$akvo+b)eVZfR=)CNi42B z;V}^+MXQ7y9OR=>KJ;>w4JvmqEwNnH`F&jxX=r;;LQK`op*Ga8l$g<#o%adFr(#Z) zxkXIJfSQkaMulW?R5Ekdie#}=SSVZOc{=HD>JOG)L1>v<2DOq(abafmE!P#aZhjT< zSX6tS=<{-OF8yG9dCpTFxBG#Mum1XxG3TC#_ug2;w{QH%%h5>q?RVdM?>l>I_x}4u z7hP05Yu0S!=jWTF**KWa5Rb=CFF-icQBpOfdeoe`)jd%;?R_oU1C|H|00i1MuGwB# zK6M@#cN2#j1Oz3eW!@P-UAscdb)mDv2!3)#96qzWTH8p6G5n-QyvX97xD>XqtMNqO$wK z32jzuPZ*)N22dD&MrMeU8P2!qgD2l(=G=0|XsWxYt;R#Jr;ymvJB(BmmP}Lce-w0j z8i>VHFw@jxCOCLnd2Z^(7z5E|IGBW%ro(u2UA;KF%6sR6iRE7%R;>S5< zC~@Is*WslnABrBV-~G$(uFe-;dF8JwcJADD>m`?5B2Jt*0ij?BJ9q7Zu50gIa>>He z2N1RU2$~Nx``b&aDuldZP**Ovra)?|huY3yY%t?ih}A|>OQFzhfb}aP7jFaf~=_U)$N0i zGf-zvz)?KRo2|Aw@Zr-N-RIw2MLdNSj-m?0crFgKYdFvzu}m$Hb( z+0x=X*N=ye9R2#gtaym;{`h_TW%chGBfXv9IPCL1@k~q0&qq~_yod_I?yk2)Jk zqiAYo!gH$;2?yuYD0VVO8E|g0=^)_5m`7<;g<8ppHlk2xfX*`d`KH@&ed_#d;bKdJ z*trU3t4T@adZp^-1!`0~w)VuZ<|7|=`MM_8Odj&;v~vc%nd5TYJ7>Y7-K=0Z-g@mt z^z40S6X)#meGU8P78Vw6^LX4rQ4~+f#M&DB+k^L~vl+(w43K#Dp<3=Ktb{5hXso9W zz}BK$e*Y1n0zd^6-?r+_-lvz>q5JR*0FzKOqzcRoeg_U3oB+_0BV4EH|G9)uR%MDX$t2x}KUO%$68rg^0_|4GrR`1fs z+f9)6xo-PD<6EBZ!3hr6VZheb?nCFkJ^gwqBBh-4T$hO9SO4o>V+QA=HITxA(&>ZR z-6-+S{k1S^){lc{a>fazzhQE8O{{+XeX_s)8=g^foX(1gAPzSO*V4NhTI8Q;W*PtT zWWOtBnpg~}vRy_~*|?0QQciTnQ;p)XrI}>@%+t9LaP%p&O{+Mxff2U$Le`-i0s(Y} zy5;~5w?}Z^$U#>woH}gbgrUWM%*pru_mJ6(4}0>8(7NU2ghLe93j#g$Fz?X@>D=|V zD0)}j_7UW01WQ31uvS04s&nCse0){q-h{NCGEB`j{_SW>)vbr9fh_O80^ zA5dZyK-#dJV{MzjQHI%Mo_F!`)yEoSQ;(AvuG70}nbf`eosG1lsz%5!f#A+ZOa>bK zVKn%|rq<|&+;IT1zX9lNTni=s&e1eTR;W;+1rWZah1ym{cmDO~j<(u`p3(E*7&OAH zFf^b3%$mc&!OW4%R@V?}MY#wyeHBBCFh(;7LhHq#vlO3^&B6jt5BjF(N%6Gi4oLtp zZWd~#w-rii5%Yb*jIgkSQYae3NBcUkx1q^h;Zgs^onM^e%E`aWSv8;Khk^*zz6Idu z!I0CygAi-s`Hs&9KOIAEPVAUjR?g=#;KwE#<6HjpkT`O-#6(XuapzYM!2v=AaHgB{ z3xg73-L)jvy$Moy9e|V04I_f%6M!#L{Pj1eJ&pIfhD{&qshSP3pfpv#(TD9e^aV5H z3d9B^4%mvI%&@Ml6jx^~84AmE2knW9qz_rhZ5>qXgrTLC0NasZ?-oRC)s03wBMPd- zpm!cbTg#q(zEIas22J_OE7Q)K$p}+Gb4$`|Xg)8Za6qz~id<9P3_NpZJAi69JXOf? zRwh?ZYJOpz87yc&4G%I#MCS|8)xSxHKKegON5j8*s%90rhfN1@=K)+#F4p7_P|m?A zH<&|`UdYX9(&?~gDjL6nn*<+@nlQ^?j~%d-cHyZ4uk_9-ERC2<^9z$m5dd9*+S3fV zbx*GrX!$kK)koY8A?g%`)VxJ&SnHVv$QLgq{HzjVHoBVdAe5-EhoxcEq?~>sG)zS2 z&saS0d~DBKE9JJ@n{r0a6C8ubgNP1rW~7W0YA#qt0K$?ZoRbAg%xbt`E?6@%mMo`b zee1=ub#UVuswIsFv46%)qfakDF>sq~J;4dINIR6)y_(W_@Hws~?kAKsf{Ny`PrMLq zK!cnea`NWl$qE$@5lWV*Jx87h2VeTRt75_hp3!q56c0^XsFuk^QvWlm32BD8!)#7> zGFcIQ8~Ud8ugmO{mGVK-8#@5@ZooXP>%1|Ooh8DM+iIb-)qThkp&t=KH-d^d)qe2( z0%XymMFY$B3m~WZJrTkAJ~*E*HSb=ccKKGgMw~aoJ#rR=ykgU&u^!W@Bt?Lj4{{^5 z1dJJ}CRSTfBOxnm=qkMlV@7Y1%({(KFQKI4ZfOsJ5I~o}wFFhV4ngVi9o9l^E5P~l zpn`t7?(ZpUkZ?FWuu8w^LWo90*HcVQydK~G!M`i*`@Zd|nv>@oHU-p~1IBfOakq~_ z5KKonNwcT;3(hUjWRGL@X=#NFPylJbur?sv$TSuxMYN|KYCHY0G$D`tp=foh|VACk?!-OyVw3DvgLUwZS|mxgAlVlC<8bs7z27ElF%JV z2$6(hYc6MUBRsQ{2}|p6V)-d7*#*VYMz-`7W`u1CxBfNrgBb`R0;nq&)S3GaLg@EF zg}|8@J2l{g3`k!Q#Cm`)Ryq$|uJtxQ;2bik+EXd%qc6wyy}N?Ca#iZ|JOIu+i6aj~iVHA$=peZBuPSReboe?rJbfE;hQtDR7Kw?)P| z3d$hlm4i@+gK^yI5!i}CZ^?*ATrqR#kHh83!m5K9Zm}Nif#R=&($VlblcM*53ZFs{ z`=5d}0FVJW8-#NXN6`?7`Q>10Y(o3t`akK)@ab{pLM)-$b4N@Cl(~I&Gm8@nLI}7V zgVK2ba$D`EdbH<05WEgSfSG^)nP2Y!KnCPQ-~mEK5J7}4g}@S_4u9R-Yui1=!#u;! zEAfmt57d(nnB}azpL!50`kS1WNT`_}as+bQ-YzxR`U}F?W1utv^7&rz06+%hM16OA z#$hi7Spg~VL}K6ipQs)6%W|sbIGlsWg9uK5YkgDRZG|9&2q0k4LVn0?dljX}w~DLM zgP=kS1p3(zMbBmi4t(PSa!Oz^hTJq0(Q&61Y+VrE`PX+NJN^Q#r_pGx01Co*>Sb0W z5>W7X0Mg+th}FKmUiQ~r2u-=0P_ZRBBknAa0Sz)Br_qmhd<4d86aBng*t+5JVAz zD4fbZ84;a-;=1xi{LrTF$?XmIgfl>%$03ZW$++ctaMrFqMTBanxbPZgI;(}Q-kn1hO?)rmh@9cro z={UvX(GU?`EA>S1Pm#L6uax|?H;H+rT#Ix*$CUW}gbF?*+xBFwI|9ZjRL0?=!2Frx zasJdv@caGP-EbIjNkd0(1PMuotZL@x0cIM0{5ZY;0f2m&06<7O5NvtoTvd$j`AQ62 ziG%BkIfB{XECv_nW66@Q;ZS1>9{k2jX>X;I+-IBrpTo1ay~?YiJDdWTT) zl+vb*GIWAGDxths#E{~_xM*q>&YL~~4Y?HMg-(c6KqxLD7)hX|Gl*zhM$oClgD40b zP`LzE(^EaX`myf_=X_vs4ak7>BLh*a0U3}1fDFihoSgjs0RU&nEjW{Qqu2ld002ov JPDHLkV1nugo!0;W literal 0 HcmV?d00001 diff --git a/website/assets/img/prefer-iitc-205.png b/website/assets/img/prefer-iitc-205.png new file mode 100644 index 0000000000000000000000000000000000000000..657ccb77b8bdc56b19a61d99dfe92ba36aca78b5 GIT binary patch literal 21537 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 Y08>Hb<~S$tTL1t607*qoM6N<$f==y>vj6}9 literal 0 HcmV?d00001 diff --git a/website/assets/img/prefer-iitc-small.png b/website/assets/img/prefer-iitc-256.png old mode 100755 new mode 100644 similarity index 100% rename from website/assets/img/prefer-iitc-small.png rename to website/assets/img/prefer-iitc-256.png diff --git a/website/assets/img/prefer-iitc.png b/website/assets/img/prefer-iitc-512.png old mode 100755 new mode 100644 similarity index 100% rename from website/assets/img/prefer-iitc.png rename to website/assets/img/prefer-iitc-512.png From f69fd980b78c26a5ee5ad2f2db3810eacdd0fcb2 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sun, 15 Dec 2013 05:01:13 +0000 Subject: [PATCH 079/109] psd source for "I'd rather be using IITC" logo --- assets/prefer-iitc.psd | Bin 0 -> 383968 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 assets/prefer-iitc.psd diff --git a/assets/prefer-iitc.psd b/assets/prefer-iitc.psd new file mode 100644 index 0000000000000000000000000000000000000000..bf0e1424fbe9a62a41d225b238c049455f5ba88e GIT binary patch literal 383968 zcmeFa2S8KF_CG$k^e#mt)QAN|Apu0OA|Opbs=Y!8MM8o}P}Eh{UDw{bV(+~JcI>+L zj*8e(M65I^$^D^;#%WVuL(W8Gty$&DI5_aj+2*@IEc%CC8Iliak zK+iB%SehRvDLH6@fD=8TUkrOf3cG8(qjxX;9vR&-Qqxj7qF6>oDwikhmeJEOHl82H z=>}m;W;!w`h$y9}qYsW?3<`^2`0)iChNr8$3!BAqV|4a#b@S-j$)jsWhC9oR#l-*a zE-bHZojkjFuo$vG$6opn>LG|v=oZx{Kz2De>*<&z5~X!xGRKV@=Q_^Al`lwSx^?Z^ zmC15vy1Tmo!bLcqCyLE*;R#zwGm+=hha+SQlG8-Vd>#Ym8ym+@7xi>>#1~Th$;y?Q zrnnGK=t`B*mCa9OX2hm3-CS8rMb4102gszGpMVo9;tOK~ZBEB$*pT_X# za#A@wk&xjANf`r^dGY*l!XC_q$&`F3bL8}i6>)ljoIG4WNN$~C+(1rUyLogTqLN+; zYLGk(sv|yD6#FL`)Ppt5f*+rpF#gXnP=aL1doZzdRisT-B^Fcz`k&Q8np}d7*M%bb z`x;S1b&KI-h(cq>a|A*;7t*Sxc=3%*tWT9Q$xWtsON$iN#-K{M|1e8jjwWVFK^tZ% ztrTu@{qjnw^~IpdVx!ViDXkx$%NK<4<2k)NRFf&mN;Xtd1^f9$2>1!fTuv`xRG=>- z*x#?STi4E=UEE#WRI^dR{nM%y&sOMETDpKsnUQ!llOt=Xpiyr1+ju;?TLNE@8Y}7* zo0i5+X2)VP!W_$sml+2|wf0~tq5m}3U@^kN6pS}&m{L=jjTtnd$bT%@I+^WkG^G$L zI#aIa{$s&nDGexAa_Z{cf_XwwERW3z?$ZkhuF1*q-B|u!U47iU_yn*zck=gebMy7{ z@#^E&#n<1jO8``?A7!e-!c>#0=!G=fK74jMHj=Vz7`RkEct zBT_)}U#Yb3lKwdVaY-EB4|*wSE)?L$>4p3R(YROv$0rd~psD?*H0SzB8(!j%%wGMf zkt=C~s%*S7lTyJk0iTGeaEiXGXhk*rlYxds{3r8P`XO_7oUqZXG!6io@J#nlukDKKhrDMZnffLdHlk&*(V7MDU4O$n&Q)f6cyFluor zMA4LhT3k($k^-X^mqHXx38=-@6e%e%YH=w<(UgE%TuqUZ0;3j}LKIC2sKwP3DJd{& zaVbR6lz>`XO_7oUqZXG!6io@J#nlukDKKhrDMZnffLdHlk&*(V7MDU4O$n&Q)f6cy zFluorMA4LhT3k($k^-X^mqHXx38=-@6e%e%YH=w<(UgE%TuqUZ0;3j}LKIC2sKwP3 zDJd{&aVbR6lz>`XO_7oUqZXG!6io@J#nlukDKKhrDMZnfz#ocBU%AbY!-Ktr<6sjZ zwF|KuwJC8ieB)h;(jAQkX@X>)C_G)1mM#LK7KZq71<@Q{da68(e__XvAN~#Ii8%5& z9L6-jQ`oRHUv3<1#ltz9Q29nDXJEK*vIx^LR(d^-0B_cc@gEceBn+qc>y81mgYc!~ z&rF5CaB3H!5aP`+(l1TKlV=M�eB9QHjDZ#fhJQ=chd3iIgXyaa^GyreC6Htm4E! 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�`E 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 kV_jYTxViA9j#DT Date: Sun, 15 Dec 2013 06:08:54 +0000 Subject: [PATCH 080/109] work-around for mobile-specific geodesic line drawing issue - appears to be an odd rounding problem not ideal, but better than the current situation --- external/L.Geodesic.js | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/external/L.Geodesic.js b/external/L.Geodesic.js index 8a6ef59e..6313db95 100644 --- a/external/L.Geodesic.js +++ b/external/L.Geodesic.js @@ -58,19 +58,23 @@ Modified by qnstie 2013-07-17 to maintain compatibility with Leaflet.draw // loop ends before 'segments' is reached - we don't add the very last point here but outside the loop // (this was to fix a bug - https://github.com/jonatkins/ingress-intel-total-conversion/issues/471 // rounding errors? maths bug? not sure - but it solves the issue! and is a slight optimisation) - for (i = 1; i < segments; i++) { - // http://williams.best.vwh.net/avform.htm#Intermediate - // modified to handle longitude above +-180 degrees - f = i / segments; - A = Math.sin((1-f)*d) / Math.sin(d); - B = Math.sin(f*d) / Math.sin(d); - x = A * Math.cos(lat1) * Math.cos(0) + B * Math.cos(lat2) * Math.cos(dLng); - y = A * Math.cos(lat1) * Math.sin(0) + B * Math.cos(lat2) * Math.sin(dLng); - z = A * Math.sin(lat1) + B * Math.sin(lat2); - fLat = r2d * Math.atan2(z, Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))); - fLng = r2d * (Math.atan2(y, x)+lng1); + // UPDATE: there still seem to be rounding errors on relatively short links - but only on mobile. + // let's only add intermediate points if there's two or more + if (segments >= 3) { + for (i = 1; i < segments; i++) { + // http://williams.best.vwh.net/avform.htm#Intermediate + // modified to handle longitude above +-180 degrees + f = i / segments; + A = Math.sin((1-f)*d) / Math.sin(d); + B = Math.sin(f*d) / Math.sin(d); + x = A * Math.cos(lat1) * Math.cos(0) + B * Math.cos(lat2) * Math.cos(dLng); + y = A * Math.cos(lat1) * Math.sin(0) + B * Math.cos(lat2) * Math.sin(dLng); + z = A * Math.sin(lat1) + B * Math.sin(lat2); + fLat = r2d * Math.atan2(z, Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))); + fLng = r2d * (Math.atan2(y, x)+lng1); - convertedPoints.push(L.latLng([fLat, fLng])); + convertedPoints.push(L.latLng([fLat, fLng])); + } } // push the final point unmodified convertedPoints.push(L.latLng(endLatlng)); From 9db491c281a974e092c6e927133034b9c032ae62 Mon Sep 17 00:00:00 2001 From: fkloft Date: Fri, 13 Dec 2013 00:12:18 +0100 Subject: [PATCH 081/109] mobile: show portal counts in nav drawer --- .../drawable-hdpi/ic_action_data_usage.png | Bin 0 -> 633 bytes .../drawable-mdpi/ic_action_data_usage.png | Bin 0 -> 464 bytes .../drawable-xhdpi/ic_action_data_usage.png | Bin 0 -> 848 bytes .../drawable-xxhdpi/ic_action_data_usage.png | Bin 0 -> 1293 bytes plugins/portal-counts.user.js | 55 +++++++++++++----- 5 files changed, 39 insertions(+), 16 deletions(-) create mode 100644 mobile/res/drawable-hdpi/ic_action_data_usage.png create mode 100644 mobile/res/drawable-mdpi/ic_action_data_usage.png create mode 100644 mobile/res/drawable-xhdpi/ic_action_data_usage.png create mode 100644 mobile/res/drawable-xxhdpi/ic_action_data_usage.png diff --git a/mobile/res/drawable-hdpi/ic_action_data_usage.png b/mobile/res/drawable-hdpi/ic_action_data_usage.png new file mode 100644 index 0000000000000000000000000000000000000000..f0f83a027be2d4b1fd1a607a8980af3cb2c1d08e GIT binary patch literal 633 zcmV-<0*3vGP)k7X-j?Giuy?y)0RL7eGto{e!I+L%5d;S|1axwb3>jL%`=)HI%O z95^k`wWGPGC14nj+rRG_TQTMhY3}I=kk9KbvF`OxzS4xWhCBgM8x^n^bSe5SJbw|E z_Jr0F-+_$^SaciodGvh>U}biS~3lOc#{O|czVD!KbdZKl9dl0eLqMUh>Q zBoJx`&Rhs338(|6nUO#sNkHL%=>fE4%&9pA#+<~cI^T@(#gqh|nB!O6gbT(OB#G-= z?m){4tPT=e=uXVfT1f&*eWKBM`!5NOiq(&mYFTKE9GN2YO}V-pVRl?F`VLM0WbcEP)C7PrOwd-!1D~VD@&$Xiu*F^sp5KKywez5z1X(1Hfc`49TZ{EF23;!*J!RWx}8-fbS{P-$4<&IRs^g8KD$oo#DIA1 z=LE)UXxTqMILENI{EG`o%W=``c=0YIzkMZ3k|fDRfB^tyQ`X?bm6sd<0000=C{SO;p0a5|ZU%@%c3l6N!`F{e`7R$Y^g*BHa0Gced{Y--0 zD*^W-9)Gr6mewk<_Tm<>Go0CTx6em<`N)BU-J%4*;hCoR6>L_7&HxqDeD(sx@fY8RA(OIpAuhi9qSQBn%*sIf{} zLE`!Rz+wR>SK&1h_S!)zcmi76nEMV1j|?QVJ_(4p%2EaiZRiB(@jsivDhme^8s7x0 zxur*ysDP6Vj{vl*I_H<5zCQ;E+lisIwrQo=MuDUDd6w{nb4D?Ngrm1Gh{{W&SwXHl zMm2UEB{7ijFvj$4+h#6#fL;m8mB3VxATNGEq2$D53C)PQgLPHPsWmpx2PAysY;D7u zeyY)T@N()G-Z*Nf>r(0X-s1Xi6Q|IBzI>p5@&3RxWygz zfFqOw00000000000000000000004kCBMSWiUteE`^f97#Mr|P94G<} zu;nmR3kkiNjn77(RG0)^==!%1DbL(|50IGum}h)4{M-VuD@Tu>%HT+w?g6HlKNNDx zj~=&SVlNh&8-hfs3=ed0s=~%l`p`TAB*~iQBtBV}4xNCvXOzA)&I1-XF_qVOCe-fb zx=)?EYyb(1MiC%uJGwk%shLW<7a~~uUp0V$f%GYS6=YC7y!yB>{QVd9hO%md{{N3B z5}c?a7alOyjL#2zcRy2t3&VwXC)@43Sz9DXc+n9`PF4Wod06klbReLcCk$|%f5pWhF z0lNB0T1>zoL;^-yf`t%NQzDj~lz}7o(ey}FCh}J zbCoTYB*A6gu?s!~)k#1`p1L9-ybvVGRaTGpZExS5_&lkQU_0+fZ6=boRnS(uzNpg$ zgoJC$iP|<~8M@J~$5jh(EqSKRY-GX6 zfhW#e%Y6%yfVDmuOB~JxmnQlmNV4U!B&06#i=Kl{?%#CO=Yo-DcveZQ*OxwPhlGSO zhICTl=j;`woEPYLZkT1}h5eiHw_+4;kb>Y}s`x$v$9^Ye^ezeD5x>ky;Xh|O&YJpL z9dm+|n-?uPpS#-QcDWiF=Y*nxHtK4t8nv$TT?!sLe+3N$UXYTqLdLBBN8b}z?2wYZ?pge-Bl)uPto4nJ@xe+~2 zBh9oNz#(8&Ve{rvTG{aPm_vZqqY4^(Sclw?OH%%xA`wM`epmSmh29VA@L86!_k@W- zeenBNk1P+1ge6((=D!;h2}6?jU5WnBGkzkXz-s|nlMifKsP~uVj0Y}d4gee' + counts + '', - title: 'Portal counts: ' + total + ' ' + (total == 1 ? 'portal' : 'portals'), - }); + var title = total + ' ' + (total == 1 ? 'portal' : 'portals'); + + if(typeof android !== 'undefined' && android && android.addPane) { + $('

' + + '
' + title + '
' + + counts + + '
').appendTo(document.body); + } else { + dialog({ + html: '
' + counts + '
', + title: 'Portal counts: ' + title, + }); + } } +window.plugin.portalcounts.onPaneChanged = function(pane) { + if(pane == "plugin-portalcounts") + window.plugin.portalcounts.getPortals(); + else + $("#portalcounts").remove() +}; + var setup = function() { - $('#toolbox').append(' Portal counts'); + if(typeof android !== 'undefined' && android && android.addPane) { + android.addPane("plugin-portalcounts", "Portal counts", "ic_action_data_usage"); + addHook("paneChanged", window.plugin.portalcounts.onPaneChanged); + } else { + $('#toolbox').append(' Portal counts'); + } + $('head').append(''); From 99f7e714cd1f2fcd7f57786fde6295fda28787ee Mon Sep 17 00:00:00 2001 From: fkloft Date: Sun, 15 Dec 2013 16:36:38 +0100 Subject: [PATCH 083/109] portal-counts: Some fixes for mobile --- plugins/portal-counts.user.js | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/plugins/portal-counts.user.js b/plugins/portal-counts.user.js index 47fb7ae6..60a41ec9 100644 --- a/plugins/portal-counts.user.js +++ b/plugins/portal-counts.user.js @@ -44,7 +44,7 @@ window.plugin.portalcounts = { }; //count portals for each level available on the map -window.plugin.portalcounts.getPortals = function(){ +window.plugin.portalcounts.getPortals = function (){ //console.log('** getPortals'); var self = window.plugin.portalcounts; var displayBounds = map.getBounds(); @@ -104,7 +104,7 @@ window.plugin.portalcounts.getPortals = function(){ counts += self.neuP; counts += ''; - var svg = $('').css("padding-top", 10); + var svg = $('').css("margin-top", 10); var all = self.PortalsRes.map(function(val,i){return val+self.PortalsEnl[i]}); all[0] = self.neuP; @@ -177,10 +177,9 @@ window.plugin.portalcounts.getPortals = function(){ .appendTo(g); } - counts += svg[0].outerHTML; + counts += $("
").append(svg).html(); } else counts += '

No Portals in range!

'; - counts += ''; var total = self.enlP + self.resP + self.neuP; var title = total + ' ' + (total == 1 ? 'portal' : 'portals'); @@ -248,6 +247,10 @@ window.plugin.portalcounts.makePie = function(startAngle, endAngle, color) { var p2x = Math.sin(endAngle * 2 * Math.PI) * self.RADIUS_INNER; var p2y = Math.cos(endAngle * 2 * Math.PI) * self.RADIUS_INNER; + // for a full circle, both coordinates would be identical, so no circle would be drawn + if(startAngle == 0.5 && endAngle == -0.5) + p2x -= 1E-5; + return $("") .attr({ fill: color, @@ -271,6 +274,12 @@ window.plugin.portalcounts.makeRing = function(startAngle, endAngle, color) { var p4x = Math.sin(startAngle * 2 * Math.PI) * self.RADIUS_INNER; var p4y = Math.cos(startAngle * 2 * Math.PI) * self.RADIUS_INNER; + // for a full circle, both coordinates would be identical, so no circle would be drawn + if(startAngle == 0.5 && endAngle == -0.5) { + p2x -= 1E-5; + p3x -= 1E-5; + } + return $("") .attr({ fill: color, @@ -306,7 +315,7 @@ var setup = function() { } $('head').append(''); + // Setup sorting - $(document).on('click.portalslist', '#portalslist table th', function() { + $(document).on('click.portalslist', '#portalslist table th.sortable', function() { $('#portalslist').html(window.plugin.portalslist.portalTable($(this).data('sort'),window.plugin.portalslist.sortOrder,window.plugin.portalslist.filter)); }); + $(document).on('click.portalslist', '#portalslist .filterAll', function() { $('#portalslist').html(window.plugin.portalslist.portalTable($(this).data('sort'),window.plugin.portalslist.sortOrder,0)); }); From dd0895e0c9f47ee370fafd2d4ed2064d40f84465 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Tue, 17 Dec 2013 03:52:12 +0000 Subject: [PATCH 091/109] tweaks to the request/retry settings --- code/map_data_request.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/code/map_data_request.js b/code/map_data_request.js index 9c4f52be..1326d852 100644 --- a/code/map_data_request.js +++ b/code/map_data_request.js @@ -16,8 +16,9 @@ window.MapDataRequest = function() { // no more than this many requests in parallel. stock site seems to rely on browser limits (6, usually), sending - // all requests at once. using our own queue limit ensures that other requests (e.g. chat) don't get postponed for too long - this.MAX_REQUESTS = 6; + // many requests at once. + // using our own queue limit ensures that other requests (e.g. chat, portal details) don't get delayed + this.MAX_REQUESTS = 5; // no more than this many tiles in one request // as of 2013-11-11, or possibly the release before that, the stock site was changed to only request four tiles at a time @@ -28,7 +29,7 @@ window.MapDataRequest = function() { this.MIN_TILES_PER_REQUEST = 4; // number of times to retry a tile after a 'bad' error (i.e. not a timeout) - this.MAX_TILE_RETRIES = 1; + this.MAX_TILE_RETRIES = 2; // refresh timers this.MOVE_REFRESH = 1; //time, after a map move (pan/zoom) before starting the refresh processing From b52f71282de1ded425c38949bb5d131ee9e566fa Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Tue, 17 Dec 2013 06:05:36 +0000 Subject: [PATCH 092/109] portals-list: more cleanups - columns have a default sort order which is always used when first selecting one - a second select toggles the order - display '-' instead of '0' for no links/fields (any suggestions for resonator count, to make botu '8' and '0' visibly distinct?) - pre-convert portal names to lower case, to avoid ecxessive conversion in soting --- plugins/portals-list.user.js | 78 ++++++++++++++++++++---------------- 1 file changed, 44 insertions(+), 34 deletions(-) diff --git a/plugins/portals-list.user.js b/plugins/portals-list.user.js index 70e4a62c..50e9c8b3 100644 --- a/plugins/portals-list.user.js +++ b/plugins/portals-list.user.js @@ -45,7 +45,8 @@ window.plugin.portalslist = function() {}; window.plugin.portalslist.listPortals = []; -window.plugin.portalslist.sortOrder=-1; +window.plugin.portalslist.sortBy = 'level'; +window.plugin.portalslist.sortOrder = -1; window.plugin.portalslist.enlP = 0; window.plugin.portalslist.resP = 0; window.plugin.portalslist.filter = 0; @@ -66,7 +67,7 @@ window.plugin.portalslist.getPortals = function() { var d = portal.options.data; var teamN = portal.options.team; - switch (teamN){ + switch (teamN) { case TEAM_RES: window.plugin.portalslist.resP++; break; @@ -82,6 +83,7 @@ window.plugin.portalslist.getPortals = function() { 'guid': i, 'teamN': teamN, 'name': d.title, + 'nameLower': d.title.toLowerCase(), 'team': d.team, 'level': portal.options.level, 'health': d.health, @@ -100,12 +102,14 @@ window.plugin.portalslist.getPortals = function() { window.plugin.portalslist.displayPL = function() { var html = ''; - window.plugin.portalslist.sortOrder=-1; + window.plugin.portalslist.sortBy = 'level'; + window.plugin.portalslist.sortOrder = -1; window.plugin.portalslist.enlP = 0; window.plugin.portalslist.resP = 0; + window.plugin.portalslist.filter = 0; if (window.plugin.portalslist.getPortals()) { - html += window.plugin.portalslist.portalTable('level', window.plugin.portalslist.sortOrder,window.plugin.portalslist.filter); + html += window.plugin.portalslist.portalTable(window.plugin.portalslist.sortBy, window.plugin.portalslist.sortOrder,window.plugin.portalslist.filter); } else { html = '
Nothing to show!
'; }; @@ -124,26 +128,31 @@ window.plugin.portalslist.displayPL = function() { } window.plugin.portalslist.portalTable = function(sortBy, sortOrder, filter) { - // sortOrder <0 ==> desc, >0 ==> asc, i use sortOrder * -1 to change the state - window.plugin.portalslist.filter=filter; + // save the sortBy/sortOrder/filter + window.plugin.portalslist.sortBy = sortBy; + window.plugin.portalslist.sortOrder = sortOrder; + window.plugin.portalslist.filter = filter; + var portals=window.plugin.portalslist.listPortals; //Array sort window.plugin.portalslist.listPortals.sort(function(a, b) { var retVal = 0; - switch (sortBy) { - case 'names': - retVal = a.name.toLowerCase() < b.name.toLowerCase() ? -1 : 1; - break; - default: - retVal = b[sortBy] - a[sortBy]; - break; + + var aComp = a[sortBy]; + var bComp = b[sortBy]; + + if (aComp < bComp) { + retVal = -1; + } else if (aComp > bComp) { + retVal = 1; + } else { + // equal - compare GUIDs to ensure consistant (but arbitary) order + retVal = a.guid < b.guid ? -1 : 1; } - // break sort ties by comparing guids - ensures consistant sort order - if (retVal == 0) retVal = a.guid < b.guid ? -1 : 1; - - if (sortOrder > 0) retVal = -retVal; //thx @jonatkins + // sortOrder is 1 (normal) or -1 (reversed) + retVal = retVal * sortOrder; return retVal; }); @@ -152,13 +161,13 @@ window.plugin.portalslist.portalTable = function(sortBy, sortOrder, filter) { html += '' + '' + '' - + '' - + '' - + '' - + '' - + '' - + '' - + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' var rowNum = 1; @@ -173,8 +182,8 @@ window.plugin.portalslist.portalTable = function(sortBy, sortOrder, filter) { html += '' + '' - + '' - + ''; + + '' + + ''; html+= ''; @@ -184,10 +193,8 @@ window.plugin.portalslist.portalTable = function(sortBy, sortOrder, filter) { html += '
#PortalLevelTeamHealthResonatorsLinksFieldsPortal NameLevelTeamHealthResonatorsLinksFields' + portal.health + '' + portal.resCount + '' + portal.linkCount + '' + portal.fieldCount + '' + (portal.linkCount?portal.linkCount:'-') + '' + (portal.fieldCount?portal.fieldCount:'-') + '
'; html += '
Click on portals table headers to sort by that column. ' - + 'Click on All Portals, Resistance Portals, Enlightened Portals to filter
' - + 'Thanks to @vita10gy & @xelio for their IITC plugins who inspired me. A @teo96 production. Vive la Résistance !
'; + + 'Click on All Portals, Resistance Portals, Enlightened Portals to filter
'; - window.plugin.portalslist.sortOrder = window.plugin.portalslist.sortOrder*-1; return html; } @@ -204,7 +211,7 @@ window.plugin.portalslist.stats = function(sortBy) { // A little helper function so the above isn't so messy window.plugin.portalslist.portalTableHeaderSortAttr = function(name, by, defOrder, extraClass) { // data-sort attr: used by jquery .data('sort') below - var retVal = 'data-sort="' + name + '" class="'+(extraClass?extraClass+' ':'')+'sortable'+(name==by?' sorted':'')+'"'; + var retVal = 'data-sort="'+name+'" data-defaultorder="'+defOrder+'" class="'+(extraClass?extraClass+' ':'')+'sortable'+(name==by?' sorted':'')+'"'; return retVal; }; @@ -270,17 +277,20 @@ var setup = function() { // Setup sorting $(document).on('click.portalslist', '#portalslist table th.sortable', function() { - $('#portalslist').html(window.plugin.portalslist.portalTable($(this).data('sort'),window.plugin.portalslist.sortOrder,window.plugin.portalslist.filter)); + var sortBy = $(this).data('sort'); + // if this is the currently selected column, toggle the sort order - otherwise use the columns default sort order + var sortOrder = sortBy == window.plugin.portalslist.sortBy ? window.plugin.portalslist.sortOrder*-1 : parseInt($(this).data('defaultorder')); + $('#portalslist').html(window.plugin.portalslist.portalTable(sortBy,sortOrder,window.plugin.portalslist.filter)); }); $(document).on('click.portalslist', '#portalslist .filterAll', function() { - $('#portalslist').html(window.plugin.portalslist.portalTable($(this).data('sort'),window.plugin.portalslist.sortOrder,0)); + $('#portalslist').html(window.plugin.portalslist.portalTable(window.plugin.portalslist.sortBy,window.plugin.portalslist.sortOrder,0)); }); $(document).on('click.portalslist', '#portalslist .filterRes', function() { - $('#portalslist').html(window.plugin.portalslist.portalTable($(this).data('sort'),window.plugin.portalslist.sortOrder,1)); + $('#portalslist').html(window.plugin.portalslist.portalTable(window.plugin.portalslist.sortBy,window.plugin.portalslist.sortOrder,1)); }); $(document).on('click.portalslist', '#portalslist .filterEnl', function() { - $('#portalslist').html(window.plugin.portalslist.portalTable($(this).data('sort'),window.plugin.portalslist.sortOrder,2)); + $('#portalslist').html(window.plugin.portalslist.portalTable(window.plugin.portalslist.sortBy,window.plugin.portalslist.sortOrder,2)); }); } From b1198727b4fb821d934dac3bd904d59ac194b082 Mon Sep 17 00:00:00 2001 From: nexushoratio Date: Sat, 14 Dec 2013 20:17:31 -0800 Subject: [PATCH 093/109] Return to old user experience of clicking on portal link replaces current page. Rationale: Users have several options of opening a link in a new tab/window without the target, whereas with the target, users have no option of reusing the same window. --- code/portal_detail_display.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code/portal_detail_display.js b/code/portal_detail_display.js index 9c26ea59..53a54b99 100644 --- a/code/portal_detail_display.js +++ b/code/portal_detail_display.js @@ -109,7 +109,7 @@ window.renderPortalDetails = function(guid) { } else { // non-android - a permalink for the portal - var permaHtml = $('
').html( $('').attr({href:permalinkUrl, target:'_blank', title:'Create a URL link to this portal'}).text('Portal link') ).html(); + var permaHtml = $('
').html( $('').attr({href:permalinkUrl, title:'Create a URL link to this portal'}).text('Portal link') ).html(); linkDetails.push ( '' ); // and a map link popup dialog From ce2ecf90f3c7b4ddae0d145c7bf84988b321be03 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Tue, 17 Dec 2013 08:18:06 +0000 Subject: [PATCH 094/109] si8debar fixes: - ensure consistant display based on portal details, by creating portal summary data from details - pass field count into AP calculation, for accurate destroy amounts - use portal.options.level, so unclaimed appear as zero --- code/portal_detail_display.js | 15 +++++++++++---- code/portal_info.js | 35 ++++++++++++++++++++++++++++++----- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/code/portal_detail_display.js b/code/portal_detail_display.js index 53a54b99..4fc9cd9b 100644 --- a/code/portal_detail_display.js +++ b/code/portal_detail_display.js @@ -26,6 +26,11 @@ window.renderPortalDetails = function(guid) { var data = portal.options.data; var details = portalDetail.get(guid); + // details and data can get out of sync. if we have details, construct a matching 'data' + if (details) { + data = getPortalSummaryData(details); + } + var modDetails = details ? '
'+getModDetails(details)+'
' : ''; var miscDetails = details ? getPortalMiscDetails(guid,details) : ''; @@ -78,8 +83,8 @@ window.renderPortalDetails = function(guid) { } // portal level. start with basic data - then extend with fractional info in tooltip if available - var levelInt = data ? data.level : getPortalLevel(details); - var levelDetails = data.level; + var levelInt = portal.options.level; + var levelDetails = portal.options.level; if (details) { levelDetails = getPortalLevel(details); if(levelDetails != 8) { @@ -178,7 +183,9 @@ window.getPortalMiscDetails = function(guid,d) { : null; var sinceText = time ? ['since', time] : null; - var linkedFields = ['fields', getPortalFields(guid).length]; + var fieldCount = getPortalFieldsCount(guid); + + var linkedFields = ['fields', fieldCount]; // collect and html-ify random data var randDetailsData = []; @@ -189,7 +196,7 @@ window.getPortalMiscDetails = function(guid,d) { randDetailsData.push ( getRangeText(d), getEnergyText(d), linksText, getAvgResoDistText(d), - linkedFields, getAttackApGainText(d), + linkedFields, getAttackApGainText(d,fieldCount), getHackDetailsText(d), getMitigationText(d) ); diff --git a/code/portal_info.js b/code/portal_info.js index cd2af05e..69958823 100644 --- a/code/portal_info.js +++ b/code/portal_info.js @@ -100,11 +100,13 @@ window.getAvgResoDist = function(d) { return resos ? sum/resos : 0; } -window.getAttackApGain = function(d) { +window.getAttackApGain = function(d,fieldCount) { + if (!fieldCount) fieldCount = 0; + var resoCount = 0; var maxResonators = MAX_RESO_PER_PLAYER.slice(0); var curResonators = [ 0, 0, 0, 0, 0, 0, 0, 0, 0]; - + for(var n = PLAYER.level + 1; n < 9; n++) { maxResonators[n] = 0; } @@ -125,9 +127,6 @@ window.getAttackApGain = function(d) { var linkCount = d.portalV2.linkedEdges ? d.portalV2.linkedEdges.length : 0; -//FIXME: portalV2.linkedFields was never a piece of data from the server - it was something faked in IITC -//with the portal guid, window.getPortalFields will return the count of linked fields - but no guid passed into here - var fieldCount = d.portalV2.linkedFields ? d.portalV2.linkedFields.length : 0; var resoAp = resoCount * DESTROY_RESONATOR; var linkAp = linkCount * DESTROY_LINK; @@ -311,4 +310,30 @@ window.getPortalHackDetails = function(d) { return {cooldown: cooldownTime, hacks: numHacks, burnout: cooldownTime*(numHacks-1)}; } +// given a detailed portal structure, return summary portal data, as seen in the map tile data +window.getPortalSummaryData = function(d) { + // NOTE: the summary data reports unclaimed portals as level 1 - not zero as elsewhere in IITC + var level = d.controllingTeam.team == "NEUTRAL" ? 1 : parseInt(getPortalLevel(d)); + var resCount = 0; + if (d.resonatorArray && d.resonatorArray.resonators) { + for (var x in d.resonatorArray.resonators) { + if (d.resonatorArray.resonators[x]) resCount++; + } + } + var maxEnergy = getTotalPortalEnergy(d); + var curEnergy = getCurrentPortalEnergy(d); + var health = maxEnergy>0 ? parseInt(curEnergy/maxEnergy*100) : 0; + + return { + level: level, + title: d.portalV2.descriptiveText.TITLE, + image: d.imageByUrl && d.imageByUrl.imageUrl, + resCount: resCount, + latE6: d.locationE6.latE6, + health: health, + team: d.controllingTeam.team, + lngE6: d.locationE6.lngE6, + type: 'portal' + }; +} From bedd34d738a00e0c566901b4f93436e532333367 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Tue, 17 Dec 2013 17:05:21 +0000 Subject: [PATCH 095/109] doh! daft bug fixes #705 --- code/portal_data.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/portal_data.js b/code/portal_data.js index 6afdf9b1..0caca9e1 100644 --- a/code/portal_data.js +++ b/code/portal_data.js @@ -22,7 +22,7 @@ window.getPortalLinks = function(guid) { } window.getPortalLinksCount = function(guid) { - var links = getPortalLinks(); + var links = getPortalLinks(guid); return links.in.length+links.out.length; } @@ -46,7 +46,7 @@ window.getPortalFields = function(guid) { } window.getPortalFieldsCount = function(guid) { - var fields = getPortalFields(); + var fields = getPortalFields(guid); return fields.length; } From 2e940000b407e853813061bed7b4235cc0847e34 Mon Sep 17 00:00:00 2001 From: fkloft Date: Tue, 17 Dec 2013 17:13:17 +0100 Subject: [PATCH 096/109] guess-player-levels: improved tooltip - include player nickname (in case the nickname is too long to be fully visible) - use level colors (similar to the player tracker tooltip) --- plugins/guess-player-levels.user.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/plugins/guess-player-levels.user.js b/plugins/guess-player-levels.user.js index 4e24bbc0..364caa16 100644 --- a/plugins/guess-player-levels.user.js +++ b/plugins/guess-player-levels.user.js @@ -86,13 +86,17 @@ window.plugin.guessPlayerLevels.setLevelTitle = function(dom) { var details = window.plugin.guessPlayerLevels.fetchLevelDetailsByPlayer(nick); - var text; + function getLevel(lvl) { + return ''+lvl+''; + } + + var text = '' + nick + '\n'; if(details.min == 8) - text = 'Player level: 8'; + text += 'Player level: ' + getLevel(8); else { - text = 'Min player level: ' + details.min; + text += 'Min player level: ' + getLevel(details.min); if(details.min != details.guessed) - text += '\nGuessed player level: ' + details.guessed; + text += '\nGuessed player level: ' + getLevel(details.guessed); } window.setupTooltips(el); From e5cb8254d59d2737392cef4daab627b1b988279b Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Tue, 17 Dec 2013 17:54:21 +0000 Subject: [PATCH 097/109] digital bumper sticker: fix so it doesn't cause JS errors when IITC is running --- plugins/iitc-ditigal-bumper-sticker.user.js | 23 ++++++++++++--------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/plugins/iitc-ditigal-bumper-sticker.user.js b/plugins/iitc-ditigal-bumper-sticker.user.js index d2ceb91d..489e39ae 100644 --- a/plugins/iitc-ditigal-bumper-sticker.user.js +++ b/plugins/iitc-ditigal-bumper-sticker.user.js @@ -2,7 +2,7 @@ // @id iitc-digital-bumper-sticker // @name IITC Digital Bumper Sticker // @category Stock -// @version 0.1.0.@@DATETIMEVERSION@@ +// @version 0.1.1.@@DATETIMEVERSION@@ // @namespace https://github.com/jonatkins/ingress-intel-total-conversion // @updateURL @@UPDATEURL@@ // @downloadURL @@DOWNLOADURL@@ @@ -14,13 +14,16 @@ // @grant none // ==/UserScript== -var logoDiv = document.createElement('div'); -logoDiv.setAttribute('style', "position: fixed; left: 20px; top: 130px; z-index: auto; pointer-events: none;"); - -var img = document.createElement('img'); -img.setAttribute('src', 'http://iitc.jonatkins.com/assets/img/prefer-iitc-200.png'); - -logoDiv.appendChild(img); - var targetContainer = document.getElementById('dashboard_container'); -targetContainer.appendChild(logoDiv); +if (targetContainer) { + + var logoDiv = document.createElement('div'); + logoDiv.setAttribute('style', "position: fixed; left: 20px; top: 130px; z-index: auto; pointer-events: none;"); + + var img = document.createElement('img'); + img.setAttribute('src', 'http://iitc.jonatkins.com/assets/img/prefer-iitc-200.png'); + + logoDiv.appendChild(img); + + targetContainer.appendChild(logoDiv); +} From 6839bf71e3ac17cdcd35d7ac138a5fc02e8c14f6 Mon Sep 17 00:00:00 2001 From: fkloft Date: Tue, 17 Dec 2013 23:05:50 +0100 Subject: [PATCH 098/109] mobile statusbar: update statusbar immediately on selection using reduced data, redraw when portal details available --- code/smartphone.js | 71 ++++++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 30 deletions(-) diff --git a/code/smartphone.js b/code/smartphone.js index 56e0c57c..71d599b7 100644 --- a/code/smartphone.js +++ b/code/smartphone.js @@ -66,40 +66,51 @@ window.runOnSmartphonesBeforeBoot = function() { } window.smartphoneInfo = function(data) { - var d = data.portalDetails; - var lvl = Math.floor(getPortalLevel(d)); - if(lvl == 0) - var t = 'L' + lvl + ''; + var guid = data.selectedPortalGuid; + if(!window.portals[guid]) return; + + var data = window.portals[selectedPortal].options.data; + var details = window.portalDetail.get(guid); + + var lvl = data.level; + if(data.team === "NEUTRAL") + var t = 'L0'; else var t = 'L' + lvl + ''; - var percentage = '0%'; - var totalEnergy = getTotalPortalEnergy(d); - if(getTotalPortalEnergy(d) > 0) { - percentage = Math.floor((getCurrentPortalEnergy(d) / getTotalPortalEnergy(d) * 100)) + '%'; + + var percentage = data.health; + if(details) { + var totalEnergy = getTotalPortalEnergy(details); + if(getTotalPortalEnergy(details) > 0) { + percentage = Math.floor(getCurrentPortalEnergy(details) / totalEnergy * 100); + } } - t += ' ' + percentage + ' '; - t += d.portalV2.descriptiveText.TITLE; + t += ' ' + percentage + '% '; + t += data.title; - var l,v,max,perc; - for(var i=0;i<8;i++) - { - var reso = d.resonatorArray.resonators[i]; - if(reso) { - l = parseInt(reso.level); - v = parseInt(reso.energyTotal); - max = RESO_NRG[l]; - perc = v/max*100; - } - else { - l = 0; - v = 0; - max = 0; - perc = 0; - } + if(details) { + var l,v,max,perc; + var className = TEAM_TO_CSS[getTeam(details)]; + for(var i=0;i<8;i++) + { + var reso = details.resonatorArray.resonators[i]; + if(reso) { + l = parseInt(reso.level); + v = parseInt(reso.energyTotal); + max = RESO_NRG[l]; + perc = v/max*100; + } + else { + l = 0; + v = 0; + max = 0; + perc = 0; + } - t += '
'; - t += '
'; - t += '
' + t += '
'; + t += '
'; + t += '
' + } } $('#mobileinfo').html(t); @@ -113,7 +124,7 @@ window.runOnSmartphonesAfterBoot = function() { // add a div/hook for updating mobile info $('#updatestatus').prepend('
'); - window.addHook('portalDetailsUpdated', window.smartphoneInfo); + window.addHook('portalSelected', window.smartphoneInfo); // init msg of status bar. hint for the user that a tap leads to the info screen $('#mobileinfo').html('
tap here for info screen
'); From 110c38a63ade43f69b193a24cd2a934fe588d0a2 Mon Sep 17 00:00:00 2001 From: fkloft Date: Wed, 18 Dec 2013 00:30:02 +0100 Subject: [PATCH 099/109] Show a little red dot on the northern resonator (details pane + mobile status bar) --- code/portal_detail_display_tools.js | 11 ++++++-- code/smartphone.js | 4 ++- mobile/smartphone.css | 14 ++++++++++ .../reso-energy-pct-in-portal-detail.user.js | 28 +++++++++---------- style.css | 23 +++++++++++++-- 5 files changed, 60 insertions(+), 20 deletions(-) diff --git a/code/portal_detail_display_tools.js b/code/portal_detail_display_tools.js index a2891067..431a013d 100644 --- a/code/portal_detail_display_tools.js +++ b/code/portal_detail_display_tools.js @@ -193,8 +193,13 @@ window.getResonatorDetails = function(d) { // slot: which slot this resonator occupies. Starts with 0 (east) and // rotates clockwise. So, last one is 7 (southeast). window.renderResonatorDetails = function(slot, level, nrg, dist, nick) { + if(OCTANTS[slot] === 'N') + var className = 'meter north'; + else + var className = 'meter'; + if(level === 0) { - var meter = ''; + var meter = ''; } else { var max = RESO_NRG[level]; var fillGrade = nrg/max*100; @@ -209,11 +214,11 @@ window.renderResonatorDetails = function(slot, level, nrg, dist, nick) { var color = (level < 3 ? "#9900FF" : "#FFFFFF"); - var lbar = ' ' + level + ' '; + var lbar = ' L ' + level + ' '; var fill = ''; - var meter = '' + fill + lbar + ''; + var meter = '' + fill + lbar + ''; } nick = nick ? ''+nick+'' : null; return [meter, nick || '']; diff --git a/code/smartphone.js b/code/smartphone.js index 71d599b7..fdd03214 100644 --- a/code/smartphone.js +++ b/code/smartphone.js @@ -90,9 +90,11 @@ window.smartphoneInfo = function(data) { if(details) { var l,v,max,perc; - var className = TEAM_TO_CSS[getTeam(details)]; for(var i=0;i<8;i++) { + var className = TEAM_TO_CSS[getTeam(details)]; + if(OCTANTS[i] === 'N') + className += ' north' var reso = details.resonatorArray.resonators[i]; if(reso) { l = parseInt(reso.level); diff --git a/mobile/smartphone.css b/mobile/smartphone.css index 60c1109f..27d34ad7 100644 --- a/mobile/smartphone.css +++ b/mobile/smartphone.css @@ -61,6 +61,20 @@ body { -webkit-box-sizing: border-box; } +#mobileinfo .resonator.north:before { + content: ""; + background-color: red; + border-radius: 100%; + display: block; + height: 6px; + width: 6px; + left: 50%; + top: -3px; + margin-left: -3px; + position: absolute; + z-index: -1; +} + #mobileinfo .filllevel { position: absolute; bottom: 0; diff --git a/plugins/reso-energy-pct-in-portal-detail.user.js b/plugins/reso-energy-pct-in-portal-detail.user.js index 1120167c..aa6ecbf7 100644 --- a/plugins/reso-energy-pct-in-portal-detail.user.js +++ b/plugins/reso-energy-pct-in-portal-detail.user.js @@ -22,20 +22,20 @@ window.plugin.resoEnergyPctInPortalDetal = function() {}; window.plugin.resoEnergyPctInPortalDetal.updateMeter = function(data) { - var meterLevel = $("span.meter-level"); - meterLevel - .css('top','0px') - .css('left','5px') - .css('margin-left','0px') - .css('font-size','80%') - .css('line-height','18px'); - meterLevel.each(function() { - var matchResult = $(this).parent().attr('title').match(/\((\d*\%)\)/); - if(matchResult) { - var newMeterContent = 'L' + $(this).html() + '  ' + matchResult[1]; - $(this).html(newMeterContent); - } - }); + $("span.meter-level") + .css({ + "word-spacing": "-1px", + "text-align": "left", + "font-size": "90%", + "padding-left": "2px", + }) + .each(function() { + var matchResult = $(this).parent().attr('title').match(/\((\d*\%)\)/); + if(matchResult) { + var html = $(this).html() + '
' + matchResult[1] + '
'; + $(this).html(html); + } + }); } var setup = function() { diff --git a/style.css b/style.css index 4dffc9fa..df690235 100644 --- a/style.css +++ b/style.css @@ -650,6 +650,23 @@ h3 { top: 0; } +.meter.north { + overflow: hidden; +} +.meter.north:before { + content: ""; + background-color: red; + border: 1px solid #000000; + border-radius: 100%; + display: block; + height: 6px; + width: 6px; + left: 50%; + top: -3px; + margin-left: -4px; + position: absolute; +} + .meter span { display: block; height: 14px; @@ -657,10 +674,12 @@ h3 { .meter-level { position: absolute; + left: 0; + right: 0; top: -2px; - left: 50%; - margin-left: -6px; text-shadow: 0.0em 0.0em 0.3em #808080; + text-align: center; + word-spacing: 4px; /* to leave some space for the north indicator */ } /* links below resos */ From d8dc9d47222c98d98cac44d1fdec807f54c6e1c9 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Wed, 18 Dec 2013 21:27:48 +0000 Subject: [PATCH 100/109] portal details ap: missed change from earlier commit - now funally includes field counts in calculations --- code/portal_detail_display_tools.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/code/portal_detail_display_tools.js b/code/portal_detail_display_tools.js index 431a013d..34cd3088 100644 --- a/code/portal_detail_display_tools.js +++ b/code/portal_detail_display_tools.js @@ -225,8 +225,8 @@ window.renderResonatorDetails = function(slot, level, nrg, dist, nick) { } // calculate AP gain from destroying portal and then capturing it by deploying resonators -window.getAttackApGainText = function(d) { - var breakdown = getAttackApGain(d); +window.getAttackApGainText = function(d,fieldCount) { + var breakdown = getAttackApGain(d,fieldCount); var totalGain = breakdown.enemyAp; function tt(text) { From e9219c5e3a8175087f13321e0a492a88bd003fff Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Wed, 18 Dec 2013 22:41:55 +0000 Subject: [PATCH 101/109] change digits function to use unicode 'thin space' as thousands seperator --- code/utils_misc.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/code/utils_misc.js b/code/utils_misc.js index ef30baba..09f8b7cc 100644 --- a/code/utils_misc.js +++ b/code/utils_misc.js @@ -122,7 +122,9 @@ window.convertCookieToLocalStorage = function(name) { // add thousand separators to given number. // http://stackoverflow.com/a/1990590/1684530 by Doug Neiner. window.digits = function(d) { - return (d+"").replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1 "); + // U+2009 - Thin Space. Recommended for use as a thousands separator... + // https://en.wikipedia.org/wiki/Space_(punctuation)#Table_of_spaces + return (d+"").replace(/(\d)(?=(\d\d\d)+(?!\d))/g, "$1 "); } From 89371f732d23843224ec0f6cb18ae3cd940eba97 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Wed, 18 Dec 2013 22:42:49 +0000 Subject: [PATCH 102/109] portals-list: more changes - add AP column - destroy+capture AP, with tooltip showing details - clean up handling of truncated portal names - removes unnecessary wrapper
- shortened resonator column title - add/remove tooltip and help cursor where it makes sense - add % to health column --- plugins/portals-list.user.js | 39 ++++++++++++++++++++++++++---------- 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/plugins/portals-list.user.js b/plugins/portals-list.user.js index 50e9c8b3..b00e97a0 100644 --- a/plugins/portals-list.user.js +++ b/plugins/portals-list.user.js @@ -77,14 +77,15 @@ window.plugin.portalslist.getPortals = function() { } var l = window.getPortalLinks(i); var f = window.getPortalFields(i); + var ap = portalApGainMaths(d.resCount, l.in.length+l.out.length, f.length); var thisPortal = { 'portal': portal, 'guid': i, - 'teamN': teamN, + 'teamN': teamN, // TEAM_NONE, TEAM_RES or TEAM_ENL + 'team': d.team, // "NEUTRAL", "RESISTANCE" or "ENLIGHTENED" 'name': d.title, 'nameLower': d.title.toLowerCase(), - 'team': d.team, 'level': portal.options.level, 'health': d.health, 'resCount': d.resCount, @@ -92,7 +93,9 @@ window.plugin.portalslist.getPortals = function() { 'linkCount': l.in.length + l.out.length, 'link' : l, 'fieldCount': f.length, - 'field' : f + 'field' : f, + 'enemyAp': ap.enemyAp, + 'ap': ap, }; window.plugin.portalslist.listPortals.push(thisPortal); }); @@ -165,9 +168,11 @@ window.plugin.portalslist.portalTable = function(sortBy, sortOrder, filter) { + 'Level' + 'Team' + 'Health' - + 'Resonators' + + 'Res' + 'Links' + 'Fields' + + 'AP' + + '\n'; var rowNum = 1; @@ -180,11 +185,23 @@ window.plugin.portalslist.portalTable = function(sortBy, sortOrder, filter) { + '' + portal.level + '' + '' + portal.team.substr(0,3) + ''; - html += '' + portal.health + '' + html += '' + (portal.teamN!=TEAM_NONE?portal.health+'%':'-') + '' + '' + portal.resCount + '' - + '' + (portal.linkCount?portal.linkCount:'-') + '' + + '' + (portal.linkCount?portal.linkCount:'-') + '' + '' + (portal.fieldCount?portal.fieldCount:'-') + ''; + var apTitle = ''; + if (PLAYER.team == portal.team) { + apTitle += 'Friendly AP:\t'+portal.ap.friendlyAp+'\n' + + '- deploy '+(8-portal.resCount)+' resonator(s)\n' + + '- upgrades/mods unknown\n'; + } + apTitle += 'Enemy AP:\t'+portal.ap.enemyAp+'\n' + + '- Destroy AP:\t'+portal.ap.destroyAp+'\n' + + '- Capture AP:\t'+portal.ap.captureAp; + + html += '' + digits(portal.ap.enemyAp) + ''; + html+= ''; rowNum++; @@ -229,15 +246,14 @@ window.plugin.portalslist.getPortalLink = function(portal,guid) { //Use Jquery to create the link, which escape characters in TITLE and ADDRESS of portal var a = $('',{ - "class": 'help', text: portal.name, title: portal.name, href: perma, onClick: jsSingleClick, onDblClick: jsDoubleClick })[0].outerHTML; - var div = '
'+a+'
'; - return div; + + return a; } window.plugin.portalslist.onPaneChanged = function(pane) { @@ -257,7 +273,7 @@ var setup = function() { $('head').append(''); // Setup sorting From 7dd4c27c26dafb3ca9a455cadcf4a09067988160 Mon Sep 17 00:00:00 2001 From: fkloft Date: Tue, 17 Dec 2013 16:46:16 +0100 Subject: [PATCH 103/109] mobile: Fix desktop mode (plugins would not be reachable) --- code/smartphone.js | 6 ++++++ plugins/bookmarks-by-zaso.user.js | 2 +- plugins/portal-counts.user.js | 4 ++-- plugins/portals-list.user.js | 4 ++-- 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/code/smartphone.js b/code/smartphone.js index fdd03214..8078cbd4 100644 --- a/code/smartphone.js +++ b/code/smartphone.js @@ -170,3 +170,9 @@ window.runOnSmartphonesAfterBoot = function() { window.MAX_DRAWN_LINKS = 200; window.MAX_DRAWN_FIELDS = 100; } + +window.useAndroidPanes = function() { + // isSmartphone is important to disable panes in desktop mode + return (typeof android !== 'undefined' && android && android.addPane && window.isSmartphone()); +} + diff --git a/plugins/bookmarks-by-zaso.user.js b/plugins/bookmarks-by-zaso.user.js index a69c40d7..339233ef 100644 --- a/plugins/bookmarks-by-zaso.user.js +++ b/plugins/bookmarks-by-zaso.user.js @@ -948,7 +948,7 @@ $('body').append(window.plugin.bookmarks.htmlBkmrksBox); $('#bookmarksBox').css("display", "none").addClass("mobile"); - if(typeof android !== 'undefined' && android && android.addPane) + if(window.useAndroidPanes()) android.addPane("plugin-bookmarks", "Bookmarks", "ic_action_star"); window.addHook('paneChanged', window.plugin.bookmarks.onPaneChanged); diff --git a/plugins/portal-counts.user.js b/plugins/portal-counts.user.js index 60a41ec9..63a83d1d 100644 --- a/plugins/portal-counts.user.js +++ b/plugins/portal-counts.user.js @@ -184,7 +184,7 @@ window.plugin.portalcounts.getPortals = function (){ var total = self.enlP + self.resP + self.neuP; var title = total + ' ' + (total == 1 ? 'portal' : 'portals'); - if(typeof android !== 'undefined' && android && android.addPane) { + if(window.useAndroidPanes()) { $('
' + '
' + title + '
' + counts @@ -307,7 +307,7 @@ window.plugin.portalcounts.onPaneChanged = function(pane) { }; var setup = function() { - if(typeof android !== 'undefined' && android && android.addPane) { + if(window.useAndroidPanes()) { android.addPane("plugin-portalcounts", "Portal counts", "ic_action_data_usage"); addHook("paneChanged", window.plugin.portalcounts.onPaneChanged); } else { diff --git a/plugins/portals-list.user.js b/plugins/portals-list.user.js index b00e97a0..e0c8f6a3 100644 --- a/plugins/portals-list.user.js +++ b/plugins/portals-list.user.js @@ -117,7 +117,7 @@ window.plugin.portalslist.displayPL = function() { html = '
Nothing to show!
'; }; - if(typeof android !== 'undefined' && android && android.addPane) { + if(window.useAndroidPanes()) { $('
' + html + '
').appendTo(document.body); } else { dialog({ @@ -264,7 +264,7 @@ window.plugin.portalslist.onPaneChanged = function(pane) { }; var setup = function() { - if(typeof android !== 'undefined' && android && android.addPane) { + if(window.useAndroidPanes()) { android.addPane("plugin-portalslist", "Portals list", "ic_action_paste"); addHook("paneChanged", window.plugin.portalslist.onPaneChanged); } else { From 9f9dfa60e3e326432e370a5e8076e2ac549f26d3 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Wed, 18 Dec 2013 10:33:07 +0100 Subject: [PATCH 104/109] check if actionbar is present before using it --- mobile/src/com/cradle/iitc_mobile/fragments/MainSettings.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mobile/src/com/cradle/iitc_mobile/fragments/MainSettings.java b/mobile/src/com/cradle/iitc_mobile/fragments/MainSettings.java index 142ae22e..cbcee155 100644 --- a/mobile/src/com/cradle/iitc_mobile/fragments/MainSettings.java +++ b/mobile/src/com/cradle/iitc_mobile/fragments/MainSettings.java @@ -77,7 +77,7 @@ public class MainSettings extends PreferenceFragment { final Dialog dialog = preferenceScreen.getDialog(); if (dialog != null) { - dialog.getActionBar().setDisplayHomeAsUpEnabled(true); + if (dialog.getActionBar() != null) dialog.getActionBar().setDisplayHomeAsUpEnabled(true); View homeBtn = dialog.findViewById(android.R.id.home); From a4d4070c94400b51628fa95a655de4a5461ae3a7 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Thu, 19 Dec 2013 03:30:57 +0000 Subject: [PATCH 105/109] geodesic line drawing: alternative intermediate point calculation code - based on simpler lon->lat formula rather than N intermediate points more than good enough for line drawing, and hopefully will avoid odd rounding issues seen on mobile --- external/L.Geodesic.js | 80 ++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/external/L.Geodesic.js b/external/L.Geodesic.js index 6313db95..5c54468e 100644 --- a/external/L.Geodesic.js +++ b/external/L.Geodesic.js @@ -34,52 +34,54 @@ Modified by qnstie 2013-07-17 to maintain compatibility with Leaflet.draw } }); } - - function geodesicConvertLine(startLatlng, endLatlng, convertedPoints) { - var i, - R = 6378137, // earth radius in meters (doesn't have to be exact) - maxlength = 5000, // meters before splitting - d2r = L.LatLng.DEG_TO_RAD, - r2d = L.LatLng.RAD_TO_DEG, - lat1, lat2, lng1, lng2, dLng, d, segments, - f, A, B, x, y, z, fLat, fLng; - - dLng = (endLatlng.lng - startLatlng.lng) * d2r; - lat1 = startLatlng.lat * d2r; - lat2 = endLatlng.lat * d2r; - lng1 = startLatlng.lng * d2r; - lng2 = endLatlng.lng * d2r; - // http://en.wikipedia.org/wiki/Great-circle_distance - d = Math.atan2(Math.sqrt( Math.pow(Math.cos(lat2) * Math.sin(dLng), 2) + Math.pow(Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLng), 2) ), Math.sin(lat1) * Math.sin(lat2) + Math.cos(lat1) * Math.cos(lat2) * Math.cos(dLng)); + // alternative geodesic line intermediate points function + // as north/south lines have very little curvature in the projection, we cam use longitude (east/west) seperation + // to calculate intermediate points. hopeefully this will avoid the rounding issues seen in the full intermediate + // points code that have been seen + function geodesicConvertLine(startLatLng, endLatLng, convertedPoints) { + var R = 6378137; // earth radius in meters (doesn't have to be exact) + var d2r = L.LatLng.DEG_TO_RAD; + var r2d = L.LatLng.RAD_TO_DEG; - segments = Math.ceil(d * R / maxlength); - // loop starts at 1 - we don't add the very first point - // loop ends before 'segments' is reached - we don't add the very last point here but outside the loop - // (this was to fix a bug - https://github.com/jonatkins/ingress-intel-total-conversion/issues/471 - // rounding errors? maths bug? not sure - but it solves the issue! and is a slight optimisation) - // UPDATE: there still seem to be rounding errors on relatively short links - but only on mobile. - // let's only add intermediate points if there's two or more - if (segments >= 3) { - for (i = 1; i < segments; i++) { - // http://williams.best.vwh.net/avform.htm#Intermediate - // modified to handle longitude above +-180 degrees - f = i / segments; - A = Math.sin((1-f)*d) / Math.sin(d); - B = Math.sin(f*d) / Math.sin(d); - x = A * Math.cos(lat1) * Math.cos(0) + B * Math.cos(lat2) * Math.cos(dLng); - y = A * Math.cos(lat1) * Math.sin(0) + B * Math.cos(lat2) * Math.sin(dLng); - z = A * Math.sin(lat1) + B * Math.sin(lat2); - fLat = r2d * Math.atan2(z, Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2))); - fLng = r2d * (Math.atan2(y, x)+lng1); + // maths based on http://williams.best.vwh.net/avform.htm#Int - convertedPoints.push(L.latLng([fLat, fLng])); + var lat1 = startLatLng.lat * d2r; + var lat2 = endLatLng.lat * d2r; + var lng1 = startLatLng.lng * d2r; + var lng2 = endLatLng.lng * d2r; + + var dLng = lng2-lng1; + + var segments = Math.floor(Math.abs(dLng * R / 5000)); + + if (segments > 1) { + // pre-calculate some constant values for the loop + var sinLat1 = Math.sin(lat1); + var sinLat2 = Math.sin(lat2); + var cosLat1 = Math.cos(lat1); + var cosLat2 = Math.cos(lat2); + + var sinLat1CosLat2 = sinLat1*cosLat2; + var sinLat2CosLat1 = sinLat2*cosLat1; + + var cosLat1CosLat2SinDLng = cosLat1*cosLat2*Math.sin(dLng); + + for (var i=1; i < segments; i++) { + var iLng = lng1+dLng*(i/segments); + var iLat = Math.atan( (sinLat1CosLat2*Math.sin(lng2-iLng) + sinLat2CosLat1*Math.sin(iLng-lng1)) + / cosLat1CosLat2SinDLng) + + var point = L.latLng ( [iLat*r2d, iLng*r2d] ); + convertedPoints.push(point); } } - // push the final point unmodified - convertedPoints.push(L.latLng(endLatlng)); + + convertedPoints.push(L.latLng(endLatLng)); } + + L.geodesicConvertLines = function (latlngs, fill) { if (latlngs.length == 0) { return []; From 95314817b2431e334d419cb9d03548ec6c40419d Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Thu, 19 Dec 2013 04:10:09 +0000 Subject: [PATCH 106/109] portals-list: set 'nowrap' on portal table - improves things on mobile --- plugins/portals-list.user.js | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/plugins/portals-list.user.js b/plugins/portals-list.user.js index e0c8f6a3..05cbec98 100644 --- a/plugins/portals-list.user.js +++ b/plugins/portals-list.user.js @@ -114,7 +114,7 @@ window.plugin.portalslist.displayPL = function() { if (window.plugin.portalslist.getPortals()) { html += window.plugin.portalslist.portalTable(window.plugin.portalslist.sortBy, window.plugin.portalslist.sortOrder,window.plugin.portalslist.filter); } else { - html = '
Nothing to show!
'; + html = '
Nothing to show!
'; }; if(window.useAndroidPanes()) { @@ -161,8 +161,8 @@ window.plugin.portalslist.portalTable = function(sortBy, sortOrder, filter) { var sortAttr = window.plugin.portalslist.portalTableHeaderSortAttr; var html = window.plugin.portalslist.stats(); - html += '' - + '' + html += '
' + + '' + '' + '' + '' @@ -216,7 +216,7 @@ window.plugin.portalslist.portalTable = function(sortBy, sortOrder, filter) { } window.plugin.portalslist.stats = function(sortBy) { - var html = '
#Portal NameLevel
' + var html = '
' + '' + '' + '' @@ -278,12 +278,13 @@ var setup = function() { '#portalslist table tr.res td { background-color: #005684; }' + '#portalslist table tr.enl td { background-color: #017f01; }' + '#portalslist table tr.neutral td { background-color: #000000; }' + - '#portalslist table th { text-align: center;}' + - '#portalslist table td { text-align: center;}' + + '#portalslist table th { text-align: center; }' + + '#portalslist table td { text-align: center; }' + + '#portalslist table.portals td { white-space: nowrap; }' + '#portalslist table td.portalTitle { text-align: left;}' + '#portalslist table th.sortable { cursor:pointer;}' + '#portalslist table th.portalTitle { text-align: left;}' + - '#portalslist table .portalTitle { min-width: 160px !important; max-width: 240px !important; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }' + + '#portalslist table .portalTitle { min-width: 120px !important; max-width: 240px !important; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }' + '#portalslist table .apGain { text-align: right !important; }' + '#portalslist .sorted { color:#FFCE00; }' + '#portalslist .filterAll { margin-top: 10px;}' + From bf5e58a4bac74b67aecac606cf8a379d82b9bb29 Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Fri, 20 Dec 2013 07:16:23 +0000 Subject: [PATCH 107/109] remove pre-defined munges the new code has been so successful at detecting them successfully, it seems pointless keeping them up to date manually all the time if a site update breaks the regular expressions, it would surely change the munges too, breaking any defined in the code --- code/munge.js | 96 +++++++++++++++++++++++++++------------------------ 1 file changed, 50 insertions(+), 46 deletions(-) diff --git a/code/munge.js b/code/munge.js index 7e886e8a..30a5ecc1 100644 --- a/code/munge.js +++ b/code/munge.js @@ -14,52 +14,56 @@ var requestParameterMunges = [ // all old munge sets deleted - there's no sign that any old ones will become active again - // set 11 - 2013-12-06 - { - 'dashboard.getArtifactInfo': 'artifacts', // GET_ARTIFACT_INFO - 'dashboard.getGameScore': '4oid643d9zc168hs', // GET_GAME_SCORE - 'dashboard.getPaginatedPlexts': 's1msyywq51ntudpe', // GET_PAGINATED_PLEXTS - 'dashboard.getThinnedEntities': '4467ff9bgxxe4csa', // GET_THINNED_ENTITIES - 'dashboard.getPortalDetails': 'c00thnhf1yp3z6mn', // GET_PORTAL_DETAILS - 'dashboard.redeemReward': 'ivshfv9zvyfxyqcd', // REDEEM_REWARD - 'dashboard.sendInviteEmail': '1rsx15vc0m8wwdax', // SEND_INVITE_EMAIL - 'dashboard.sendPlext': 'tods2imd0xcfsug6', // SEND_PLEXT - - // common parameters - method: '0wvzluo8av4sk17f', - version: 'paeh4g353xu06kfg', - version_parameter: '4acc1e3230c3fd66be3422c0df8dc637336bbd7c', - - // GET_THINNED_ENTITIES - quadKeys: 'ilgv0w4dlldky1yh', - - // GET_PORTAL_DETAILS - guid: '7o8tzmj6oxz1n5w3', - - // REDEEM_REWARD - passcode: 'passcode', // no munging on this parameter - - // SEND_INVITE_EMAIL - inviteeEmailAddress: 'p4rwszdfovuwfdgp', - - // GET_PAGINATED_PLEXTS - desiredNumItems: 'kxsbuvc90l6f40xn', - minLatE6: 'llizye3i5dbapxac', - minLngE6: 'w01zpiba1mn5tsab', - maxLatE6: 'd5phhqzj2tbsq599', - maxLngE6: 'avq5srnvg431aehn', - minTimestampMs: 'mhsav5by25wi4s46', - maxTimestampMs: 'hpu7l8h7eccwytyt', - chatTab: 'q9343nem7hs1v37b', - ascendingTimestampOrder: '7pc5c9ggh03pig1b', - - // SEND_PLEXT - message: '8exta9k7y8huhqmc', - latE6: '7ffwyf3zd2yf8xam', - lngE6: 'n7ewiach2v22iy20', -// chatTab: 'q9343nem7hs1v37b', // duplicate from GET_PAGINATED_PLEXTS - - }, +// the current munge set auto-detection code is working very well. as any site update that breaks that detection +// code will also, almost certainly, change the munges in use, it seems pointless keeping this set up to date by hand +// at this time. If that auto-detection breaks, it may be easier to quicky add a munge set by hand than update +// the regular expressions, so the list-based code remains available for the future +// // set 11 - 2013-12-06 +// { +// 'dashboard.getArtifactInfo': 'artifacts', // GET_ARTIFACT_INFO +// 'dashboard.getGameScore': '4oid643d9zc168hs', // GET_GAME_SCORE +// 'dashboard.getPaginatedPlexts': 's1msyywq51ntudpe', // GET_PAGINATED_PLEXTS +// 'dashboard.getThinnedEntities': '4467ff9bgxxe4csa', // GET_THINNED_ENTITIES +// 'dashboard.getPortalDetails': 'c00thnhf1yp3z6mn', // GET_PORTAL_DETAILS +// 'dashboard.redeemReward': 'ivshfv9zvyfxyqcd', // REDEEM_REWARD +// 'dashboard.sendInviteEmail': '1rsx15vc0m8wwdax', // SEND_INVITE_EMAIL +// 'dashboard.sendPlext': 'tods2imd0xcfsug6', // SEND_PLEXT +// +// // common parameters +// method: '0wvzluo8av4sk17f', +// version: 'paeh4g353xu06kfg', +// version_parameter: '4acc1e3230c3fd66be3422c0df8dc637336bbd7c', +// +// // GET_THINNED_ENTITIES +// quadKeys: 'ilgv0w4dlldky1yh', +// +// // GET_PORTAL_DETAILS +// guid: '7o8tzmj6oxz1n5w3', +// +// // REDEEM_REWARD +// passcode: 'passcode', // no munging on this parameter +// +// // SEND_INVITE_EMAIL +// inviteeEmailAddress: 'p4rwszdfovuwfdgp', +// +// // GET_PAGINATED_PLEXTS +// desiredNumItems: 'kxsbuvc90l6f40xn', +// minLatE6: 'llizye3i5dbapxac', +// minLngE6: 'w01zpiba1mn5tsab', +// maxLatE6: 'd5phhqzj2tbsq599', +// maxLngE6: 'avq5srnvg431aehn', +// minTimestampMs: 'mhsav5by25wi4s46', +// maxTimestampMs: 'hpu7l8h7eccwytyt', +// chatTab: 'q9343nem7hs1v37b', +// ascendingTimestampOrder: '7pc5c9ggh03pig1b', +// +// // SEND_PLEXT +// message: '8exta9k7y8huhqmc', +// latE6: '7ffwyf3zd2yf8xam', +// lngE6: 'n7ewiach2v22iy20', +//// chatTab: 'q9343nem7hs1v37b', // duplicate from GET_PAGINATED_PLEXTS +// +// }, ]; From 859c3a3262c901207960e294eef84a4715fbece0 Mon Sep 17 00:00:00 2001 From: Philipp Schaefer Date: Fri, 20 Dec 2013 23:21:26 +0100 Subject: [PATCH 108/109] pause/resume webview too on activities pause/resume Conflicts: mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java --- .../com/cradle/iitc_mobile/IITC_Mobile.java | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java index ea2b4092..668d4310 100644 --- a/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java +++ b/mobile/src/com/cradle/iitc_mobile/IITC_Mobile.java @@ -287,8 +287,8 @@ public class IITC_Mobile extends Activity implements OnSharedPreferenceChangeLis } @Override - protected void onResume() { - super.onResume(); + protected void onStart() { + super.onStart(); // enough idle...let's do some work Log.d("iitcm", "resuming...reset idleTimer"); @@ -312,6 +312,20 @@ public class IITC_Mobile extends Activity implements OnSharedPreferenceChangeLis } } + @Override + protected void onResume() { + mIitcWebView.resumeTimers(); + mIitcWebView.onResume(); + super.onResume(); + } + + @Override + protected void onPause() { + mIitcWebView.pauseTimers(); + mIitcWebView.onPause(); + super.onPause(); + } + @Override protected void onStop() { Log.d("iitcm", "stopping iitcm"); From 3083d9c3526e8a775b58004a18926517f93fc51e Mon Sep 17 00:00:00 2001 From: Jon Atkins Date: Sat, 21 Dec 2013 19:13:26 +0000 Subject: [PATCH 109/109] bump mobile version number --- mobile/AndroidManifest.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mobile/AndroidManifest.xml b/mobile/AndroidManifest.xml index ec9dc817..39cb0e92 100644 --- a/mobile/AndroidManifest.xml +++ b/mobile/AndroidManifest.xml @@ -2,8 +2,8 @@ + android:versionCode="62" + android:versionName="0.10.1">
All Portals : (click to filter)' + window.plugin.portalslist.listPortals.length + 'Resistance Portals : ' + window.plugin.portalslist.resP +' (' + Math.floor(window.plugin.portalslist.resP/window.plugin.portalslist.listPortals.length*100) + '%)Enlightened Portals : '+ window.plugin.portalslist.enlP +' (' + Math.floor(window.plugin.portalslist.enlP/window.plugin.portalslist.listPortals.length*100) + '%)