From 48e3e3fdd69cf34300b96153c30167ad64ec9810 Mon Sep 17 00:00:00 2001 From: Paolo Pasquali Date: Sat, 21 Oct 2017 11:16:36 +0200 Subject: [PATCH 1/2] Fix leaflet icons --- clip-and-ship/views.py | 126 ++++++++++--- haitidata/settings.py | 16 +- haitidata/static/css/leaflet.draw.css | 9 + .../static/geonode/css/images/layers-2x.png | Bin .../static/geonode/css/images/layers.png | Bin .../geonode/css/images/marker-icon-2x.png | Bin .../static/geonode/css/images/marker-icon.png | Bin .../geonode/css/images/marker-shadow.png | Bin .../geonode/css/images/spritesheet-2x.png | Bin 3581 -> 2078 bytes .../static/geonode/css/images/spritesheet.png | Bin 1906 -> 1056 bytes .../static/geonode/css/images/spritesheet.svg | 175 +++--------------- haitidata/static/geonode/images/layers-2x.png | Bin 0 -> 1259 bytes haitidata/static/geonode/images/layers.png | Bin 0 -> 696 bytes .../static/geonode/images/marker-icon-2x.png | Bin 0 -> 2586 bytes .../static/geonode/images/marker-icon.png | Bin 0 -> 1466 bytes .../static/geonode/images/marker-shadow.png | Bin 0 -> 618 bytes .../static/geonode/images/spritesheet-2x.png | Bin 0 -> 2078 bytes .../static/geonode/images/spritesheet.png | Bin 0 -> 1056 bytes .../static/geonode/images/spritesheet.svg | 27 +++ .../static/geonode/js/draw/leaflet.draw.js | 2 +- haitidata/static/img/loading-spinner.gif | Bin 0 -> 56379 bytes haitidata/static/js/loadingoverlay.js | 160 ++++++++++++++++ haitidata/static/js/templates/cart.html | 9 + haitidata/static/js/templates/upload.html | 138 ++++++++++++++ .../templates/clip-and-ship/clip-page.html | 1 + .../clip-and-ship/download-clip.html | 4 + haitidata/templates/site_base.html | 2 +- 27 files changed, 490 insertions(+), 179 deletions(-) create mode 100755 haitidata/static/css/leaflet.draw.css mode change 100644 => 100755 haitidata/static/geonode/css/images/layers-2x.png mode change 100644 => 100755 haitidata/static/geonode/css/images/layers.png mode change 100644 => 100755 haitidata/static/geonode/css/images/marker-icon-2x.png mode change 100644 => 100755 haitidata/static/geonode/css/images/marker-icon.png mode change 100644 => 100755 haitidata/static/geonode/css/images/marker-shadow.png mode change 100644 => 100755 haitidata/static/geonode/css/images/spritesheet-2x.png mode change 100644 => 100755 haitidata/static/geonode/css/images/spritesheet.png mode change 100644 => 100755 haitidata/static/geonode/css/images/spritesheet.svg create mode 100755 haitidata/static/geonode/images/layers-2x.png create mode 100755 haitidata/static/geonode/images/layers.png create mode 100755 haitidata/static/geonode/images/marker-icon-2x.png create mode 100755 haitidata/static/geonode/images/marker-icon.png create mode 100755 haitidata/static/geonode/images/marker-shadow.png create mode 100755 haitidata/static/geonode/images/spritesheet-2x.png create mode 100755 haitidata/static/geonode/images/spritesheet.png create mode 100755 haitidata/static/geonode/images/spritesheet.svg mode change 100644 => 100755 haitidata/static/geonode/js/draw/leaflet.draw.js create mode 100644 haitidata/static/img/loading-spinner.gif create mode 100644 haitidata/static/js/loadingoverlay.js create mode 100644 haitidata/static/js/templates/cart.html create mode 100644 haitidata/static/js/templates/upload.html diff --git a/clip-and-ship/views.py b/clip-and-ship/views.py index 1d32b95..9a41d63 100644 --- a/clip-and-ship/views.py +++ b/clip-and-ship/views.py @@ -12,6 +12,62 @@ from django.shortcuts import render from django.views.generic.detail import View from geonode.layers.views import _resolve_layer, _PERMISSION_MSG_VIEW +WCS_URL = settings.GEOSERVER_BASE_URL + \ + 'wcs?request=getcoverage&' \ + 'version=1.0.0&service=WCS&coverage={layer_name}&' \ + 'format=geotiff&crs=EPSG:4326&bbox={bbox}&width={width}&' \ + 'height={height}' + +MAX_CLIP_SIZE = settings.MAXIMUM_CLIP_SIZE +TILE_SAMPLE_SIZE = 100 # tile sample size will be 100*100 + + +def check_file_size(clipped_size): + """ Checking file size that is allowed or not + + :param clipped_size: File size to be checked + :type clipped_size: float + + :return: Checking file size is allowed or not + :rtype: bool + """ + if float(clipped_size) > float(MAX_CLIP_SIZE): + return False + return True + + +def download_wcs(layername, bbox_string, width, height, raster_filepath): + """ Download clipped image from wcs. + + :param layername: layername for wcs request + :type layername: str + + :param bbox_string: bbox string for wcs request + :type bbox_string: str + + :param width: width for wcs request + :type width: int + + :param height: height for wcs request + :type height: int + + :param raster_filepath: filepath for downloaded wcs clipped + :type raster_filepath: str + + :return: + """ + wcs_formatted_url = WCS_URL.format( + layer_name=layername, + bbox=bbox_string, + width=width, + height=height + ) + + response = urllib2.urlopen(wcs_formatted_url) + fh = open(raster_filepath, "w") + fh.write(response.read()) + fh.close() + def clip_layer(request, layername): """Clipping raster layer and save to temp folder. @@ -66,11 +122,6 @@ def clip_layer(request, layername): bbox_string = ','.join(bbox_array) except AttributeError: # Call wcs command - wcs_url = settings.GEOSERVER_LOCATION + 'wcs?request=getcoverage&' \ - 'version=1.0.0&service=WCS&coverage={layer_name}&' \ - 'format=geotiff&crs=EPSG:4326&bbox={bbox}&width={width}&' \ - 'height={height}' - bbox_array = bbox_string.split(',') offset = 50 x = float(bbox_array[2]) - float(bbox_array[0]) @@ -79,24 +130,53 @@ def clip_layer(request, layername): y = float(bbox_array[3]) - float(bbox_array[1]) height = int(y * 43260) + offset - wcs_formatted_url = wcs_url.format( - layer_name=layername, - bbox=bbox_string, - width=width, - height=height - ) + width = int(width * settings.WCS_DOWNLOADED_RATIO_SIZE) + height = int(height * settings.WCS_DOWNLOADED_RATIO_SIZE) extention = 'tif' + # checking file size of wcs download + # it is done by assumption by getting sample + # 1. getting part 10x10 through wcs + # 2. get the filesize + # 3. times filesize by width/10 * height/10, as assumption for actual filesize + # ------------------------------------------------- + number_tile_in_width = int(width / TILE_SAMPLE_SIZE) + number_tile_in_height = int(height / TILE_SAMPLE_SIZE) + + sample_filepath = os.path.join( + temporary_folder, + layer.title + '.sample.' + extention) + download_wcs( + layername, bbox_string, + TILE_SAMPLE_SIZE, + TILE_SAMPLE_SIZE, + sample_filepath) + + expected_clip_size = os.path.getsize(sample_filepath) + # size of 10x10 times width_sample * height_sample + expected_clip_size = expected_clip_size * ( + number_tile_in_width * number_tile_in_height + ) + + if not check_file_size(expected_clip_size): + response = JsonResponse({ + 'error': 'Clipped file size is ' + 'bigger than %s mb' % ( + int(MAX_CLIP_SIZE) / 1000000 + ) + }) + response.status_code = 403 + return response + + # ------------------------------------------------- + + # download actual wcs clipped raster_filepath = os.path.join( - temporary_folder, - layer.title + '.' + extention) + temporary_folder, + layer.title + '.' + extention) - response = urllib2.urlopen(wcs_formatted_url) - - fh = open(raster_filepath, "w") - fh.write(response.read()) - fh.close() + download_wcs(layername, bbox_string, width, height, raster_filepath) if not geojson: response = JsonResponse({ @@ -160,14 +240,14 @@ def clip_layer(request, layername): if os.path.exists(output): # Check size - max_clip_size = settings.MAXIMUM_CLIP_SIZE clipped_size = os.path.getsize(output) - if float(clipped_size) > float(max_clip_size): - max_clip_size_mb = int(max_clip_size) / 1000000 + if not check_file_size(clipped_size): response = JsonResponse({ 'error': 'Clipped file size is ' - 'bigger than ' + str(max_clip_size_mb) + ' mb' + 'bigger than %s mb' % ( + int(MAX_CLIP_SIZE) / 1000000 + ) }) response.status_code = 403 return response @@ -285,7 +365,7 @@ class ClipView(View): settings.GEOSERVER_PUBLIC_LOCATION, geotiffname ), - 'service_typename': 'geonode:'+geotiffname + 'service_typename': 'geonode:' + geotiffname } } return render(request, self.template_name, context) diff --git a/haitidata/settings.py b/haitidata/settings.py index 61978c8..22850a3 100644 --- a/haitidata/settings.py +++ b/haitidata/settings.py @@ -101,10 +101,20 @@ INSTALLED_APPS = INSTALLED_APPS + ( 'filter' ) -GEOSERVER_PUBLIC_LOCATION = os.getenv( - 'GEOSERVER_PUBLIC_LOCATION', 'http://haitidata.dev.ithacaweb.org/geoserver/' +GEOSERVER_PUBLIC_LOCATION = os.environ.get( + 'GEOSERVER_PUBLIC_LOCATION', 'http://88.99.166.60:32208/geoserver/' ) +# dynamic setting based on domain +GEOSERVER_BASE_URL = os.environ.get( + 'GEOSERVER_BASE_URL', + 'http://88.99.166.60:32208/geoserver/' +) # change this to geoserver container location + +#GEOSERVER_BASE_URL = GEOSERVER_PUBLIC_LOCATION = os.getenv( +# 'GEOSERVER_PUBLIC_LOCATION', 'http://haitidata.dev.ithacaweb.org/geoserver/' +#) + LAYER_PREVIEW_LIBRARY = 'react' TEMPLATES[0]['DIRS'].insert(0, os.path.join(LOCAL_ROOT, "templates")) @@ -189,6 +199,8 @@ SOCIAL_ORIGINS = [{ "css_class":"gp" }] +WCS_DOWNLOADED_RATIO_SIZE = 1 + MAX_CSV_RECORDS = 20000 UPLOADER = { diff --git a/haitidata/static/css/leaflet.draw.css b/haitidata/static/css/leaflet.draw.css new file mode 100755 index 0000000..9a6f261 --- /dev/null +++ b/haitidata/static/css/leaflet.draw.css @@ -0,0 +1,9 @@ +.leaflet-draw-section{position:relative}.leaflet-draw-toolbar{margin-top:12px}.leaflet-draw-toolbar-top{margin-top:0}.leaflet-draw-toolbar-notop a:first-child{border-top-right-radius:0}.leaflet-draw-toolbar-nobottom a:last-child{border-bottom-right-radius:0}.leaflet-draw-toolbar a{background-image:url('images/spritesheet.png');background-image:linear-gradient(transparent,transparent),url('images/spritesheet.svg');background-repeat:no-repeat;background-size:270px 30px;background-clip:padding-box}.leaflet-retina .leaflet-draw-toolbar a{background-image:url('images/spritesheet-2x.png');background-image:linear-gradient(transparent,transparent),url('images/spritesheet.svg')} +.leaflet-draw a{display:block;text-align:center;text-decoration:none}.leaflet-draw a .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.leaflet-draw-actions{display:none;list-style:none;margin:0;padding:0;position:absolute;left:26px;top:0;white-space:nowrap}.leaflet-touch .leaflet-draw-actions{left:32px}.leaflet-right .leaflet-draw-actions{right:26px;left:auto}.leaflet-touch .leaflet-right .leaflet-draw-actions{right:32px;left:auto}.leaflet-draw-actions li{display:inline-block} +.leaflet-draw-actions li:first-child a{border-left:0}.leaflet-draw-actions li:last-child a{-webkit-border-radius:0 4px 4px 0;border-radius:0 4px 4px 0}.leaflet-right .leaflet-draw-actions li:last-child a{-webkit-border-radius:0;border-radius:0}.leaflet-right .leaflet-draw-actions li:first-child a{-webkit-border-radius:4px 0 0 4px;border-radius:4px 0 0 4px}.leaflet-draw-actions a{background-color:#919187;border-left:1px solid #AAA;color:#FFF;font:11px/19px "Helvetica Neue",Arial,Helvetica,sans-serif;line-height:28px;text-decoration:none;padding-left:10px;padding-right:10px;height:28px} +.leaflet-touch .leaflet-draw-actions a{font-size:12px;line-height:30px;height:30px}.leaflet-draw-actions-bottom{margin-top:0}.leaflet-draw-actions-top{margin-top:1px}.leaflet-draw-actions-top a,.leaflet-draw-actions-bottom a{height:27px;line-height:27px}.leaflet-draw-actions a:hover{background-color:#a0a098}.leaflet-draw-actions-top.leaflet-draw-actions-bottom a{height:26px;line-height:26px}.leaflet-draw-toolbar .leaflet-draw-draw-polyline{background-position:-2px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-polyline{background-position:0 -1px} +.leaflet-draw-toolbar .leaflet-draw-draw-polygon{background-position:-31px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-polygon{background-position:-29px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-rectangle{background-position:-62px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-rectangle{background-position:-60px -1px}.leaflet-draw-toolbar .leaflet-draw-draw-circle{background-position:-92px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-circle{background-position:-90px -1px} +.leaflet-draw-toolbar .leaflet-draw-draw-marker{background-position:-122px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-draw-marker{background-position:-120px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-edit{background-position:-152px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-edit{background-position:-150px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-remove{background-position:-182px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-remove{background-position:-180px -1px} +.leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled{background-position:-212px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-edit.leaflet-disabled{background-position:-210px -1px}.leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled{background-position:-242px -2px}.leaflet-touch .leaflet-draw-toolbar .leaflet-draw-edit-remove.leaflet-disabled{background-position:-240px -2px}.leaflet-mouse-marker{background-color:#fff;cursor:crosshair}.leaflet-draw-tooltip{background:#363636;background:rgba(0,0,0,0.5);border:1px solid transparent;-webkit-border-radius:4px;border-radius:4px;color:#fff;font:12px/18px "Helvetica Neue",Arial,Helvetica,sans-serif;margin-left:20px;margin-top:-21px;padding:4px 8px;position:absolute;visibility:hidden;white-space:nowrap;z-index:6} +.leaflet-draw-tooltip:before{border-right:6px solid black;border-right-color:rgba(0,0,0,0.5);border-top:6px solid transparent;border-bottom:6px solid transparent;content:"";position:absolute;top:7px;left:-7px}.leaflet-error-draw-tooltip{background-color:#f2dede;border:1px solid #e6b6bd;color:#b94a48}.leaflet-error-draw-tooltip:before{border-right-color:#e6b6bd}.leaflet-draw-tooltip-single{margin-top:-12px}.leaflet-draw-tooltip-subtext{color:#f8d5e4}.leaflet-draw-guide-dash{font-size:1%;opacity:.6;position:absolute;width:5px;height:5px} +.leaflet-edit-marker-selected{background-color:rgba(254,87,161,0.1);border:4px dashed rgba(254,87,161,0.6);-webkit-border-radius:4px;border-radius:4px;box-sizing:content-box}.leaflet-edit-move{cursor:move}.leaflet-edit-resize{cursor:pointer}.leaflet-oldie .leaflet-draw-toolbar{border:1px solid #999} \ No newline at end of file diff --git a/haitidata/static/geonode/css/images/layers-2x.png b/haitidata/static/geonode/css/images/layers-2x.png old mode 100644 new mode 100755 diff --git a/haitidata/static/geonode/css/images/layers.png b/haitidata/static/geonode/css/images/layers.png old mode 100644 new mode 100755 diff --git a/haitidata/static/geonode/css/images/marker-icon-2x.png b/haitidata/static/geonode/css/images/marker-icon-2x.png old mode 100644 new mode 100755 diff --git a/haitidata/static/geonode/css/images/marker-icon.png b/haitidata/static/geonode/css/images/marker-icon.png old mode 100644 new mode 100755 diff --git a/haitidata/static/geonode/css/images/marker-shadow.png b/haitidata/static/geonode/css/images/marker-shadow.png old mode 100644 new mode 100755 diff --git a/haitidata/static/geonode/css/images/spritesheet-2x.png b/haitidata/static/geonode/css/images/spritesheet-2x.png old mode 100644 new mode 100755 index c45231aff86b1344333414cdfa7a2a74d38d5304..1525c9f698ed277b39e7bb19a99309cf4f536a46 GIT binary patch literal 2078 zcmb7F`#%$k1D$BfH!~^k=PfCugrO!Mkq|<-^O!XY*ZVOu%siS+uT@?v3AxG0V+f0R z>}$2%Z!3?eEhE!fVa+2n&$`{u_b<5ThjY&7e9q@{emvKFyw52sX)6H$0A+VK7e4@C zhwd*A-39!`M_;2*zeFqbEG+e6Vq_{7nGykTx||puVdx%@jEeA!Kwi#B{$B(X08nJQ zyEyr$kAIyU@fCRNV<#sU$jU(<{lR`tujG4xrpKEBp>jTQH9I_auGvFf{K3>KhxOLd zl4N%dxT+T!zc*`(TK)Mt{U*5yX&)@5mYSRF{*@ z9~C=Baz!GPWJ6z1Z#8%d|56U{0k|NK#R`F+yQ&>SfRDHonqHPLNq!AYo)ki{90zlJDo3HY5-+U2Bs@KK%VhB$Uem6^uO?2h2S%GISVu8+_ z;!PaQbUf{>5T>G&K_(M#naJp20qv64a}143oZdIgLTW1%5C0tll-H^JNP3^OIFr;v z$IL+>Xk$!o68##34C%4Ho~iL}ww%;`UOB3{>HMSk5<_F@7HkCD;CaL7Jl5R8^j)4x z^;nMc)N6XH7mkVPw;d^%WR7>S6LJTY7HCbaxJlF8@2i0b#Fw=EED#4h-dWOYn@@JB zDmKK-hec%=YMV%JD|UkPNOPORVC$EwmCs}q+WJ?AE?;OCXD+dNvty!ZeJC$87Afg= zl(y@TlKcqr627N?0V4H`+rYQrVNr)p@}6lz@^Mf!H#0y49w3!&%q#NOhgPRG%8JHT zA{^qLYeIpKS=(b}U&r?L=AIvG_6^(d=Pp?9mRM)&#%XF^4O zd{{&B>GJ7pThpOjrkk)%t7RD_Ja)wFxhP+MfK)HEY-d)FesU~I7;VLz(7Q^g8cC5- zFqxrr>{R$6mkkM$DaF~hGKOW5@i7-izwpkS6L#pCWP>g$;^#?~PnVvs<3V|2uWmLH zZ{-T4O?`bdZmR+FB|-xNQvPbRzDMT_WTJoa=#0aUyspK4kiGE1voou2FFY!-h27|8 z9sJgV8@l_(lVi8&uubp-PZ-C2>cCS4&BJ7edFvWE`f>mnyGw@>qZ^0+X%wfR1_9Ti zhq&dMf1uwQ6>XAa6ZBB;tCUkDa#ne%RtP=fc$dW!MKHRq?j^w9$B39|-9@h_bI1@JEf}d{F1}SSfs;sB8VG z4H~RBO#aVrjE`Nl&Q8UeKUMWuY^?_G6(m7BWVfzrzOv;)vifhRQWwCJcMEFU)*b=< zryJf&ZcHmR#1F7{%KQG)#I^jqdy3Z4Vq^t2>%GK_P`P1}WT+7RdKtSBT>{}v^V@aJ zyzdW?K0aUC6&u=Jr(yG5=oM)fzFTJ}-9g%$Y`4=We@;wVEJp~0j1N2_*?fRSpwNS6 zd_>G565nm*Kq}9{e8Vx&T@ANUZNZ~T`nR$NfV*@QZXpZEXJ(#xZ5ixv4>Be^ zNgj75TOF9X#c=DadJ!_a*;LN$^hm7QrQ;jiV2ON$=&fL>qWOoVFD5fW^$o5m-+n+# zn$5^iAD}#Fuok3jSH4&z=4TqwZd!nk_1@92=~TBfZ63M1%`hDxoN7nMu2hli=DbI*4X3j-oWPj!`o=PN*bMpKv~p( zlK?>bLve1yjn9!PJt^rS6X2Q7N0bo$yHWMC}3ggipD8vsX|xW!=U#I}LWz z^QnfSrM*$QQ{ryc$jHb5k=UWl;GE*YDBK*|2h61)7W<2wvTJ?p)5iRGT5JEC+@%`% zqS6Z%SFIPtt0zaN=eCZlFYjOW`hszTixox$Zr%@j-VXa>c1Sz2W4PM({(;ce?St=s z;7(-eXX4Dn@faRw%x-a`JGUdS|JLnZ!E%QoTvY;b{k^pS#LL#o%6_}2uB3_$$L!~B0eY#os+2dKcS$ZPmw!~epF literal 3581 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 z*~UutGtV_xUY7VI7_NL2W(Pime9pta^!fq-00000000000000000000000000H`3p a1Q-A)p~XwR_AF)q0000 literal 1906 zcmZuydpOg58~=_RJ5Wvw&m^aZm68f+J!Bcns|;C_Lu3->G^`j4kB5k|9F|j&*W=71 z=W_?-9ZS7Vt%W>>7E?d0Mf0xf{queA>-yf`?|on2KR(yzzCYI|^`awYx4gPM0ARPh z9U2D!?2!14kd+qaoK_uw@wFr3ti6k@IAUe5rHE^}P`k?!07!rSd0>c0^AqCce)2gy z**Szrj=mc12cn~+jRQ!55x!SL{ftAx{qt8&tBZg0?a|gQl!9fpN06qQip=Wv)D%Y- z+bg+w(aFW?lgyt1|9)ik>q%L+jrR?%LpEbnIpOt#PI47gtD8Xgkp?04z@vSC?o-yT zs)RLFQ&Mk)a7XZwPQ1fXhWF4FZ(?J55vMD5sr6?s^WZS?6c1xEs1ktlD89lbT4wr7L0U z?Ey%L8UfB3 z6Oo*h^2-)Lt*E^xr-tS4g2z6x4@=;H7tUP;O04r6_s<$_v*!eF15ymD~r9(3MS4qmRge#Kgp?GsW8{XrmeD>HT?B zYsDmcE>bm3*w)sDVF&?Dp~-{b&E1rimUhg+>dm#UI1$hEGX>wex1SLpMe9RhFR<5~;%m8wdW36OCQws-U? zbNLM@^k(Q8_sGqZ=lG#KD_po)L;L4B_Yzc8kXpSterHwlZVn25JZCp>)@&EDDq6c_LRD2YN?%BUQzu*j1W4nA z9ywrRV`C;B)G698=(YVU$kX1a9QR2JR1$cbY<8(uUpe?J6ROf%NZ|G8XPXUqoE5lY zN~-R9YVZdK2M5wk>hL*Djkt=fz&7)NFa!t{v(VA8eseemAE1UD2#Zo0-O;Xw1a{=e zCa0eZ)~<{M-duKg+j}+OpqI`5s~Sd>ra?76Qoz~SdD{hBC{sTGhb%y<${}DTVb1>W zy4h!1VdgNg+bn;0#2~Mc)9~QChvS926L9BiTz@yCOTe4GL4hYvyJ0y`n!2Cjg17|I z6Z|1UfGQFkCH9^uvf9jEue9D~IOsLR8WO&)?r#I#Jhs#P~1v1k(GWp2GNdUiy& zFkVOT{t}{T5Kh1T#hW`m6!3@N<=edW%?CKI=0nKdZO^E!Gp`B?xm+%y|Ks0XLrl`s z*)3Pl@rK#qbaIoDn!>Oc&yh2A)~7Fh7xYvnjD1O4b*Q;ydC#^%0o^lh2|yEs&m7VGd*3r@g*4vB#4OMn2LG^OP=)U z%Q2`;tltV!*h`;LiFz^LwGe6pF^+p_G;C@;AKtdqPD*7I-`(47h>#0xdIt$(MG`dk zj-;Zx30`0vhjSYitI?ZPm&*|5m*EUIG;JAAHMJ%<2 z>h;tap8Q9i@Ja!MZ@7fV8t!>s51Tn)nkiUcU-rtBOfOo<-aBWaoBOZeI|(OHD9+J- zO<4V#$CFY3^X8if#me{Q3N&4=al@ts2J{h`nPYpYt>>Bl03yB@A9L$QC!J0Y0hE1K zH_7C+ALn1T)^@1%3P9{($KnPze2vZH=3p&Ho=K>j1A6+-h~D9OBbsT9V5RH01*1Qf z5O1y6xoAFeQJ=owm&-n7Ts-hmyMyuc>jZCI1`=-7fR#HBJ!>a;3je&1G|Iqa;~@OU zFU2V&e{Ld(%d-`&j|a|4(L^E^+csfMgU~=v&b-S#u zudmR(Iq2qsS45tW+~pasy_~(gwzkGDEiENAPH9TgYTR28V$BxX8nc^wOf4;U9y~>R z=_cYoV~U4^X$~Ghm30w3SbBPl>WTiHVD#iOn_Aw7-7~XdSf_VAR{)g66#YCQJ%5%~ i{eP_FzxHA`84t@4c6%tZ%} - - - - - image/svg+xml - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - - - - - - - - + + + - - - - - - - - - - diff --git a/haitidata/static/geonode/images/layers-2x.png b/haitidata/static/geonode/images/layers-2x.png new file mode 100755 index 0000000000000000000000000000000000000000..200c333dca9652ac4cba004d609e5af4eee168c1 GIT binary patch literal 1259 zcmVFhCYNy;#0irRPomHqW|G1C*;4?@4#E?jH>?v@U%cy?3dQAc-DchXVErpOh~ z-jbon+tNbnl6hoEb;)TVk+%hTDDi_G%i3*RZ&15!$Fjr^f;Ke&A@|?=`2&+{zr+3a z{D*=t(`AXyS%X7N z%a#RZw6vD^t_rnM`L4E>m=U&R!A-&}nZIi$BOPvkhrCuUe@BN~-lRD)f44;J%TwgE zcze8u!PQ_NR7?o(NylLXVTfDO zxs5=@|GsYEsNo4M#nT%N!UE(?dnS)t2+{ELYAFp*3=iF=|EQnTp`#vlSXuGVraYo? z+RCzXo6h3qA8{KG?S4nE(lM+;Eb4nT3XV;7gcAxUi5m)`k5tv}cPy()8ZR3TLW3I- zAS^}cq-IJvL7a4RgR!yk@~RT%$lA7{L5ES*hyx)M4(yxI$Ub(4f)K|^v1>zvwQY!_ zIrWw8q9GS^!Dp~}+?mbnB6jDF8mVlbQ!jFKDY;w=7;XO{9bq7>LXGK24WA`;rL)_Z z)&j}pbV(;6gY;VMhbxgvn`X;6x}VUEE-7 z%)7j-%t8S=ZL3yc)HbXDAqJZvBTPoiW_A-+a8m3_Z?v{DN7Tnr#O_VUMT0UBt$;p` zDh6JbGHN8JJ*JN%y2%msb97@_S>9!%Egwk;?PEkU9ntz&3uR}%Fj5d$JHQbQb3}a{ zSzFT^#n=VInPpcAS}CNxj?_ zVscANk5Cfz(51EI1pz};AWWb|kgbYNb4wCEGUn3+eMUMV?1-{=I4TlmLJMot@rd07 zZuo2hk1ccu{YmGkcYdWAVdk{Z4Nm?^cTD&}jGm+Q1SYIXMwmG*oO*83&#>l%nbR`G zhh=lZ%xIb7kU3#;TBbfECrnC9P=-XpL|TG2BoZdj61*XiFbW8?1Z_wp%#;>${SUIy V$8qr;L*)Pf002ovPDHLkV1hYLS~36t literal 0 HcmV?d00001 diff --git a/haitidata/static/geonode/images/layers.png b/haitidata/static/geonode/images/layers.png new file mode 100755 index 0000000000000000000000000000000000000000..1a72e5784b2b456eac5d7670738db80697af3377 GIT binary patch literal 696 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 UQO-*oc+)|Q_08}VdXD6O0C*xx%>V!Z literal 0 HcmV?d00001 diff --git a/haitidata/static/geonode/images/marker-icon.png b/haitidata/static/geonode/images/marker-icon.png new file mode 100755 index 0000000000000000000000000000000000000000..950edf24677ded147df13b26f91baa2b0fa70513 GIT binary patch literal 1466 zcmV;r1x5OaP)P001cn1^@s6z>|W`000GnNklGNuHDcIX17Zdjl&3`L?0sTjIws<{((Dh&g-s0<@jYQyl?D*X^?%13;ml^gy> ziMrY_^1WI=(g@LMizu=zCoA>C`6|QEq1eV92k*7m>G65*&@&6)aC&e}G zI)pf-Za|N`DT&Cn1J|o`19mumxW~hiKiKyc-P`S@q)rdTo84@QI@;0yXrG%9uhI>A zG5QHb6s4=<6xy{1 z@NMxEkryp{LS44%z$3lP^cX!9+2-;CTt3wM4(k*#C{aiIiLuB>jJj;KPhPzIC00bL zU3a#;aJld94lCW=`4&aAy8M7PY=HQ>O%$YEP4c4UY#CRxfgbE~(|uiI=YS8q;O9y6 zmIkXzR`}p7ti|PrM3a}WMnR=3NVnWdAAR>b9X@)DKL6=YsvmH%?I24wdq?Gh54_;# z$?_LvgjEdspdQlft#4CQ z`2Zyvy?*)N1Ftw|{_hakhG9WjS?Az@I@+IZ8JbWewR!XUK4&6346+d#~gsE0SY(LX8&JfY>Aj)RxGy96nwhs2rv zzW6pTnMpFkDSkT*a*6Dx|u@ds6ISVn0@^RmIsKZ5Y;bazbc;tTSq(kg(=481ODrPyNB6n z-$+U}(w$m6U6H$w17Bw+wDaFIe~GvNMYvnw31MpY0eQKT9l>SU``8k7w4)z!GZKMI z#_cEKq7k~i%nlK@6c-K?+R;B#5$?T#YpKD`t_4bAs^#E+@5QW$@OX3*`;(#{U^d-vY)&xEE>n5lYl&T?Amke9$Lam@{1K@O ze*LXqlKQHiv=gx+V^Cbb2?z@ISBQ*3amF;9UJ3SBg(N|710TLamQmYZ&Qjn2LuO<* zCZlB4n%@pc&7NNnY1}x+NWpHlq`OJEo|`aYN9<`RBUB+79g;>dgb6YlfN#kGL?lO_ z!6~M^7sOnbsUkKk<@Ysie&`G>ruxH&Mgy&8;i=A zB9OO!xR{AyODw>DS-q5YM{0ExFEAzt zm>RdS+ssW(-8|?xr0(?$vBVB*%(xDLtq3Hf0I5yFm<_g=W2`QWAax{1rWVH=I!VrP zs(rTFX@W#t$hXNvbgX`gK&^w_YD;CQ!B@e0QbLIWaKAXQe2-kkloo;{iF#6}z!4=W zi$giRj1{ zt;2w`VSCF#WE&*ev7jpsC=6175@(~nTE2;7M-L((0bH@yG}-TB$R~WXd?tA$s3|%y zA`9$sA(>F%J3ioz<-LJl*^o1|w84l>HBR`>3l9c8$5Xr@xCiIQ7{x$fMCzOk_-M=% z+{a_Q#;42`#KfUte@$NT77uaTz?b-fBe)1s5XE$yA79fm?KqM^VgLXD07*qoM6N<$ Ef<_J(9smFU literal 0 HcmV?d00001 diff --git a/haitidata/static/geonode/images/spritesheet-2x.png b/haitidata/static/geonode/images/spritesheet-2x.png new file mode 100755 index 0000000000000000000000000000000000000000..1525c9f698ed277b39e7bb19a99309cf4f536a46 GIT binary patch literal 2078 zcmb7F`#%$k1D$BfH!~^k=PfCugrO!Mkq|<-^O!XY*ZVOu%siS+uT@?v3AxG0V+f0R z>}$2%Z!3?eEhE!fVa+2n&$`{u_b<5ThjY&7e9q@{emvKFyw52sX)6H$0A+VK7e4@C zhwd*A-39!`M_;2*zeFqbEG+e6Vq_{7nGykTx||puVdx%@jEeA!Kwi#B{$B(X08nJQ zyEyr$kAIyU@fCRNV<#sU$jU(<{lR`tujG4xrpKEBp>jTQH9I_auGvFf{K3>KhxOLd zl4N%dxT+T!zc*`(TK)Mt{U*5yX&)@5mYSRF{*@ z9~C=Baz!GPWJ6z1Z#8%d|56U{0k|NK#R`F+yQ&>SfRDHonqHPLNq!AYo)ki{90zlJDo3HY5-+U2Bs@KK%VhB$Uem6^uO?2h2S%GISVu8+_ z;!PaQbUf{>5T>G&K_(M#naJp20qv64a}143oZdIgLTW1%5C0tll-H^JNP3^OIFr;v z$IL+>Xk$!o68##34C%4Ho~iL}ww%;`UOB3{>HMSk5<_F@7HkCD;CaL7Jl5R8^j)4x z^;nMc)N6XH7mkVPw;d^%WR7>S6LJTY7HCbaxJlF8@2i0b#Fw=EED#4h-dWOYn@@JB zDmKK-hec%=YMV%JD|UkPNOPORVC$EwmCs}q+WJ?AE?;OCXD+dNvty!ZeJC$87Afg= zl(y@TlKcqr627N?0V4H`+rYQrVNr)p@}6lz@^Mf!H#0y49w3!&%q#NOhgPRG%8JHT zA{^qLYeIpKS=(b}U&r?L=AIvG_6^(d=Pp?9mRM)&#%XF^4O zd{{&B>GJ7pThpOjrkk)%t7RD_Ja)wFxhP+MfK)HEY-d)FesU~I7;VLz(7Q^g8cC5- zFqxrr>{R$6mkkM$DaF~hGKOW5@i7-izwpkS6L#pCWP>g$;^#?~PnVvs<3V|2uWmLH zZ{-T4O?`bdZmR+FB|-xNQvPbRzDMT_WTJoa=#0aUyspK4kiGE1voou2FFY!-h27|8 z9sJgV8@l_(lVi8&uubp-PZ-C2>cCS4&BJ7edFvWE`f>mnyGw@>qZ^0+X%wfR1_9Ti zhq&dMf1uwQ6>XAa6ZBB;tCUkDa#ne%RtP=fc$dW!MKHRq?j^w9$B39|-9@h_bI1@JEf}d{F1}SSfs;sB8VG z4H~RBO#aVrjE`Nl&Q8UeKUMWuY^?_G6(m7BWVfzrzOv;)vifhRQWwCJcMEFU)*b=< zryJf&ZcHmR#1F7{%KQG)#I^jqdy3Z4Vq^t2>%GK_P`P1}WT+7RdKtSBT>{}v^V@aJ zyzdW?K0aUC6&u=Jr(yG5=oM)fzFTJ}-9g%$Y`4=We@;wVEJp~0j1N2_*?fRSpwNS6 zd_>G565nm*Kq}9{e8Vx&T@ANUZNZ~T`nR$NfV*@QZXpZEXJ(#xZ5ixv4>Be^ zNgj75TOF9X#c=DadJ!_a*;LN$^hm7QrQ;jiV2ON$=&fL>qWOoVFD5fW^$o5m-+n+# zn$5^iAD}#Fuok3jSH4&z=4TqwZd!nk_1@92=~TBfZ63M1%`hDxoN7nMu2hli=DbI*4X3j-oWPj!`o=PN*bMpKv~p( zlK?>bLve1yjn9!PJt^rS6X2Q7N0bo$yHWMC}3ggipD8vsX|xW!=U#I}LWz z^QnfSrM*$QQ{ryc$jHb5k=UWl;GE*YDBK*|2h61)7W<2wvTJ?p)5iRGT5JEC+@%`% zqS6Z%SFIPtt0zaN=eCZlFYjOW`hszTixox$Zr%@j-VXa>c1Sz2W4PM({(;ce?St=s z;7(-eXX4Dn@faRw%x-a`JGUdS|JLnZ!E%QoTvY;b{k^pS#LL#o%6_}2uB3_$$L!~B0eY#os+2dKcS$ZPmw!~epF literal 0 HcmV?d00001 diff --git a/haitidata/static/geonode/images/spritesheet.png b/haitidata/static/geonode/images/spritesheet.png new file mode 100755 index 0000000000000000000000000000000000000000..f7035a1cb0294a91eaedd98d2cbc0de6264eb4f9 GIT binary patch literal 1056 zcmV+*1mF9KP)^cqr000000000000000000000001}0u3|)s5-;puuZqwcDub(csIZEHt~3&VXFw9 z=S}Dq3)Dexi9xvEV5Dhi)kbe9jqQL|8Ub3b#khy(tYgUY?(RiCn z90SpaZPZKS$*92+NJaP-|e z*+P3q)ZU8&?Y+?KZ}|`G;oSX4g2Bs{iwx>FbBYFUO+J?;8V0MJqEL$%hwPHfa}=E` zonPVhPJ3_Y*bT&*e94n9J5II0^Sn`xyiS$t&?+#f8zLZOiAMYt%w+x?$gzi^Bif*&Cl|&@@sNZ*q5>VKmx&adr9P98S#y8by=#s z#)GTmiNry=ug>qSKwm`SNz#GV|Is)RT2MTADN_28bJ>37$o``|vVLOJVC?)oIodlg z*~UutGtV_xUY7VI7_NL2W(Pime9pta^!fq-00000000000000000000000000H`3p a1Q-A)p~XwR_AF)q0000 literal 0 HcmV?d00001 diff --git a/haitidata/static/geonode/images/spritesheet.svg b/haitidata/static/geonode/images/spritesheet.svg new file mode 100755 index 0000000..5423793 --- /dev/null +++ b/haitidata/static/geonode/images/spritesheet.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/haitidata/static/geonode/js/draw/leaflet.draw.js b/haitidata/static/geonode/js/draw/leaflet.draw.js old mode 100644 new mode 100755 index 707f442..070f9b2 --- a/haitidata/static/geonode/js/draw/leaflet.draw.js +++ b/haitidata/static/geonode/js/draw/leaflet.draw.js @@ -6,4 +6,4 @@ http://leafletjs.com */ !function(t,e,i){L.drawVersion="0.4.10",L.Draw={},L.drawLocal={draw:{toolbar:{actions:{title:"Cancel drawing",text:"Cancel"},finish:{title:"Finish drawing",text:"Finish"},undo:{title:"Delete last point drawn",text:"Delete last point"},buttons:{polyline:"Draw a polyline",polygon:"Draw a polygon",rectangle:"Draw a rectangle",circle:"Draw a circle",marker:"Draw a marker"}},handlers:{circle:{tooltip:{start:"Click and drag to draw circle."},radius:"Radius"},marker:{tooltip:{start:"Click map to place marker."}},polygon:{tooltip:{start:"Click to start drawing shape.",cont:"Click to continue drawing shape.",end:"Click first point to close this shape."}},polyline:{error:"Error: shape edges cannot cross!",tooltip:{start:"Click to start drawing line.",cont:"Click to continue drawing line.",end:"Click last point to finish line."}},rectangle:{tooltip:{start:"Click and drag to draw rectangle."}},simpleshape:{tooltip:{end:"Release mouse to finish drawing."}}}},edit:{toolbar:{actions:{save:{title:"Save changes.",text:"Save"},cancel:{title:"Cancel editing, discards all changes.",text:"Cancel"},clearAll:{title:"clear all layers.",text:"Clear All"}},buttons:{edit:"Edit layers.",editDisabled:"No layers to edit.",remove:"Delete layers.",removeDisabled:"No layers to delete."}},handlers:{edit:{tooltip:{text:"Drag handles, or marker to edit feature.",subtext:"Click cancel to undo changes."}},remove:{tooltip:{text:"Click on a feature to remove"}}}}},L.Draw.Event={},L.Draw.Event.CREATED="draw:created",L.Draw.Event.EDITED="draw:edited",L.Draw.Event.DELETED="draw:deleted",L.Draw.Event.DRAWSTART="draw:drawstart",L.Draw.Event.DRAWSTOP="draw:drawstop",L.Draw.Event.DRAWVERTEX="draw:drawvertex",L.Draw.Event.EDITSTART="draw:editstart",L.Draw.Event.EDITMOVE="draw:editmove",L.Draw.Event.EDITRESIZE="draw:editresize",L.Draw.Event.EDITVERTEX="draw:editvertex",L.Draw.Event.EDITSTOP="draw:editstop",L.Draw.Event.DELETESTART="draw:deletestart",L.Draw.Event.DELETESTOP="draw:deletestop",L.Draw=L.Draw||{},L.Draw.Feature=L.Handler.extend({includes:L.Mixin.Events,initialize:function(t,e){this._map=t,this._container=t._container,this._overlayPane=t._panes.overlayPane,this._popupPane=t._panes.popupPane,e&&e.shapeOptions&&(e.shapeOptions=L.Util.extend({},this.options.shapeOptions,e.shapeOptions)),L.setOptions(this,e)},enable:function(){this._enabled||(L.Handler.prototype.enable.call(this),this.fire("enabled",{handler:this.type}),this._map.fire(L.Draw.Event.DRAWSTART,{layerType:this.type}))},disable:function(){this._enabled&&(L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.DRAWSTOP,{layerType:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(L.DomUtil.disableTextSelection(),t.getContainer().focus(),this._tooltip=new L.Draw.Tooltip(this._map),L.DomEvent.on(this._container,"keyup",this._cancelDrawing,this))},removeHooks:function(){this._map&&(L.DomUtil.enableTextSelection(),this._tooltip.dispose(),this._tooltip=null,L.DomEvent.off(this._container,"keyup",this._cancelDrawing,this))},setOptions:function(t){L.setOptions(this,t)},_fireCreatedEvent:function(t){this._map.fire(L.Draw.Event.CREATED,{layer:t,layerType:this.type})},_cancelDrawing:function(t){this._map.fire("draw:canceled",{layerType:this.type}),27===t.keyCode&&this.disable()}}),L.Draw.Polyline=L.Draw.Feature.extend({statics:{TYPE:"polyline"},Poly:L.Polyline,options:{allowIntersection:!0,repeatMode:!1,drawError:{color:"#b00b00",timeout:2500},icon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon"}),touchIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:"leaflet-div-icon leaflet-editing-icon leaflet-touch-icon"}),guidelineDistance:20,maxGuideLineLength:4e3,shapeOptions:{stroke:!0,color:"#3388ff",weight:4,opacity:.5,fill:!1,clickable:!0},metric:!0,feet:!0,nautic:!1,showLength:!0,zIndexOffset:2e3},initialize:function(t,e){L.Browser.touch&&(this.options.icon=this.options.touchIcon),this.options.drawError.message=L.drawLocal.draw.handlers.polyline.error,e&&e.drawError&&(e.drawError=L.Util.extend({},this.options.drawError,e.drawError)),this.type=L.Draw.Polyline.TYPE,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._markers=[],this._markerGroup=new L.LayerGroup,this._map.addLayer(this._markerGroup),this._poly=new L.Polyline([],this.options.shapeOptions),this._tooltip.updateContent(this._getTooltipText()),this._mouseMarker||(this._mouseMarker=L.marker(this._map.getCenter(),{icon:L.divIcon({className:"leaflet-mouse-marker",iconAnchor:[20,20],iconSize:[40,40]}),opacity:0,zIndexOffset:this.options.zIndexOffset})),this._mouseMarker.on("mouseout",this._onMouseOut,this).on("mousemove",this._onMouseMove,this).on("mousedown",this._onMouseDown,this).on("mouseup",this._onMouseUp,this).addTo(this._map),this._map.on("mouseup",this._onMouseUp,this).on("mousemove",this._onMouseMove,this).on("zoomlevelschange",this._onZoomEnd,this).on("touchstart",this._onTouch,this).on("zoomend",this._onZoomEnd,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._clearHideErrorTimeout(),this._cleanUpShape(),this._map.removeLayer(this._markerGroup),delete this._markerGroup,delete this._markers,this._map.removeLayer(this._poly),delete this._poly,this._mouseMarker.off("mousedown",this._onMouseDown,this).off("mouseout",this._onMouseOut,this).off("mouseup",this._onMouseUp,this).off("mousemove",this._onMouseMove,this),this._map.removeLayer(this._mouseMarker),delete this._mouseMarker,this._clearGuides(),this._map.off("mouseup",this._onMouseUp,this).off("mousemove",this._onMouseMove,this).off("zoomlevelschange",this._onZoomEnd,this).off("zoomend",this._onZoomEnd,this).off("touchstart",this._onTouch,this).off("click",this._onTouch,this)},deleteLastVertex:function(){if(!(this._markers.length<=1)){var t=this._markers.pop(),e=this._poly,i=e.getLatLngs(),o=i.splice(-1,1)[0];this._poly.setLatLngs(i),this._markerGroup.removeLayer(t),e.getLatLngs().length<2&&this._map.removeLayer(e),this._vertexChanged(o,!1)}},addVertex:function(t){if(this._markers.length>=2&&!this.options.allowIntersection&&this._poly.newLatLngIntersects(t))return void this._showErrorTooltip();this._errorShown&&this._hideErrorTooltip(),this._markers.push(this._createMarker(t)),this._poly.addLatLng(t),2===this._poly.getLatLngs().length&&this._map.addLayer(this._poly),this._vertexChanged(t,!0)},completeShape:function(){this._markers.length<=1||(this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable())},_finishShape:function(){var t=this._poly._defaultShape?this._poly._defaultShape():this._poly.getLatLngs(),e=this._poly.newLatLngIntersects(t[t.length-1]);if(!this.options.allowIntersection&&e||!this._shapeIsValid())return void this._showErrorTooltip();this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()},_shapeIsValid:function(){return!0},_onZoomEnd:function(){null!==this._markers&&this._updateGuide()},_onMouseMove:function(t){var e=this._map.mouseEventToLayerPoint(t.originalEvent),i=this._map.layerPointToLatLng(e);this._currentLatLng=i,this._updateTooltip(i),this._updateGuide(e),this._mouseMarker.setLatLng(i),L.DomEvent.preventDefault(t.originalEvent)},_vertexChanged:function(t,e){this._map.fire(L.Draw.Event.DRAWVERTEX,{layers:this._markerGroup}),this._updateFinishHandler(),this._updateRunningMeasure(t,e),this._clearGuides(),this._updateTooltip()},_onMouseDown:function(t){if(!this._clickHandled&&!this._touchHandled&&!this._disableMarkers){this._onMouseMove(t),this._clickHandled=!0,this._disableNewMarkers();var e=t.originalEvent,i=e.clientX,o=e.clientY;this._startPoint.call(this,i,o)}},_startPoint:function(t,e){this._mouseDownOrigin=L.point(t,e)},_onMouseUp:function(t){var e=t.originalEvent,i=e.clientX,o=e.clientY;this._endPoint.call(this,i,o,t),this._clickHandled=null},_endPoint:function(e,i,o){if(this._mouseDownOrigin){var n=L.point(e,i).distanceTo(this._mouseDownOrigin);this._calculateFinishDistance(o.latlng)<10&&L.Browser.touch?this._finishShape():Math.abs(n)<9*(t.devicePixelRatio||1)&&this.addVertex(o.latlng),this._enableNewMarkers()}this._mouseDownOrigin=null},_onTouch:function(t){var e,i,o=t.originalEvent;!o.touches||!o.touches[0]||this._clickHandled||this._touchHandled||this._disableMarkers||(e=o.touches[0].clientX,i=o.touches[0].clientY,this._disableNewMarkers(),this._touchHandled=!0,this._startPoint.call(this,e,i),this._endPoint.call(this,e,i,t),this._touchHandled=null),this._clickHandled=null},_onMouseOut:function(){this._tooltip&&this._tooltip._onMouseOut.call(this._tooltip)},_calculateFinishDistance:function(t){var e;if(this._markers.length>0){var i;if(this.type===L.Draw.Polyline.TYPE)i=this._markers[this._markers.length-1];else{if(this.type!==L.Draw.Polygon.TYPE)return 1/0;i=this._markers[0]}var o=this._map.latLngToContainerPoint(i.getLatLng()),n=new L.Marker(t,{icon:this.options.icon,zIndexOffset:2*this.options.zIndexOffset}),s=this._map.latLngToContainerPoint(n.getLatLng());e=o.distanceTo(s)}else e=1/0;return e},_updateFinishHandler:function(){var t=this._markers.length;t>1&&this._markers[t-1].on("click",this._finishShape,this),t>2&&this._markers[t-2].off("click",this._finishShape,this)},_createMarker:function(t){var e=new L.Marker(t,{icon:this.options.icon,zIndexOffset:2*this.options.zIndexOffset});return this._markerGroup.addLayer(e),e},_updateGuide:function(t){var e=this._markers?this._markers.length:0;e>0&&(t=t||this._map.latLngToLayerPoint(this._currentLatLng),this._clearGuides(),this._drawGuide(this._map.latLngToLayerPoint(this._markers[e-1].getLatLng()),t))},_updateTooltip:function(t){var e=this._getTooltipText();t&&this._tooltip.updatePosition(t),this._errorShown||this._tooltip.updateContent(e)},_drawGuide:function(t,e){var i,o,n,s=Math.floor(Math.sqrt(Math.pow(e.x-t.x,2)+Math.pow(e.y-t.y,2))),a=this.options.guidelineDistance,r=this.options.maxGuideLineLength,l=s>r?s-r:a;for(this._guidesContainer||(this._guidesContainer=L.DomUtil.create("div","leaflet-draw-guides",this._overlayPane));l1&&this._markers[this._markers.length-1].off("click",this._finishShape,this)},_fireCreatedEvent:function(){var t=new this.Poly(this._poly.getLatLngs(),this.options.shapeOptions);L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)}}),L.Draw.Polygon=L.Draw.Polyline.extend({statics:{TYPE:"polygon"},Poly:L.Polygon,options:{showArea:!1,showLength:!1,shapeOptions:{stroke:!0,color:"#3388ff",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0},metric:!0,feet:!0,nautic:!1,precision:{}},initialize:function(t,e){L.Draw.Polyline.prototype.initialize.call(this,t,e),this.type=L.Draw.Polygon.TYPE},_updateFinishHandler:function(){var t=this._markers.length;1===t&&this._markers[0].on("click",this._finishShape,this),t>2&&(this._markers[t-1].on("dblclick",this._finishShape,this),t>3&&this._markers[t-2].off("dblclick",this._finishShape,this))},_getTooltipText:function(){var t,e;return 0===this._markers.length?t=L.drawLocal.draw.handlers.polygon.tooltip.start:this._markers.length<3?(t=L.drawLocal.draw.handlers.polygon.tooltip.cont,e=this._getMeasurementString()):(t=L.drawLocal.draw.handlers.polygon.tooltip.end,e=this._getMeasurementString()),{text:t,subtext:e}},_getMeasurementString:function(){var t=this._area,e="";return t||this.options.showLength?(this.options.showLength&&(e=L.Draw.Polyline.prototype._getMeasurementString.call(this)),t&&(e+="
"+L.GeometryUtil.readableArea(t,this.options.metric,this.options.precision)),e):null},_shapeIsValid:function(){return this._markers.length>=3},_vertexChanged:function(t,e){var i;!this.options.allowIntersection&&this.options.showArea&&(i=this._poly.getLatLngs(),this._area=L.GeometryUtil.geodesicArea(i)),L.Draw.Polyline.prototype._vertexChanged.call(this,t,e)},_cleanUpShape:function(){var t=this._markers.length;t>0&&(this._markers[0].off("click",this._finishShape,this),t>2&&this._markers[t-1].off("dblclick",this._finishShape,this))}}),L.SimpleShape={},L.Draw.SimpleShape=L.Draw.Feature.extend({options:{repeatMode:!1},initialize:function(t,e){this._endLabelText=L.drawLocal.draw.handlers.simpleshape.tooltip.end,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._mapDraggable=this._map.dragging.enabled(),this._mapDraggable&&this._map.dragging.disable(),this._container.style.cursor="crosshair",this._tooltip.updateContent({text:this._initialLabelText}),this._map.on("mousedown",this._onMouseDown,this).on("mousemove",this._onMouseMove,this).on("touchstart",this._onMouseDown,this).on("touchmove",this._onMouseMove,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._map&&(this._mapDraggable&&this._map.dragging.enable(),this._container.style.cursor="",this._map.off("mousedown",this._onMouseDown,this).off("mousemove",this._onMouseMove,this).off("touchstart",this._onMouseDown,this).off("touchmove",this._onMouseMove,this),L.DomEvent.off(e,"mouseup",this._onMouseUp,this),L.DomEvent.off(e,"touchend",this._onMouseUp,this),this._shape&&(this._map.removeLayer(this._shape),delete this._shape)),this._isDrawing=!1},_getTooltipText:function(){return{text:this._endLabelText}},_onMouseDown:function(t){this._isDrawing=!0,this._startLatLng=t.latlng,L.DomEvent.on(e,"mouseup",this._onMouseUp,this).on(e,"touchend",this._onMouseUp,this).preventDefault(t.originalEvent)},_onMouseMove:function(t){var e=t.latlng;this._tooltip.updatePosition(e),this._isDrawing&&(this._tooltip.updateContent(this._getTooltipText()),this._drawShape(e))},_onMouseUp:function(){this._shape&&this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()}}),L.Draw.Rectangle=L.Draw.SimpleShape.extend({statics:{TYPE:"rectangle"},options:{shapeOptions:{stroke:!0,color:"#3388ff",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,showArea:!0,clickable:!0},metric:!0},initialize:function(t,e){this.type=L.Draw.Rectangle.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.rectangle.tooltip.start,L.Draw.SimpleShape.prototype.initialize.call(this,t,e)},_drawShape:function(t){this._shape?this._shape.setBounds(new L.LatLngBounds(this._startLatLng,t)):(this._shape=new L.Rectangle(new L.LatLngBounds(this._startLatLng,t),this.options.shapeOptions),this._map.addLayer(this._shape))},_fireCreatedEvent:function(){var t=new L.Rectangle(this._shape.getBounds(),this.options.shapeOptions);L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this,t)},_getTooltipText:function(){var t,e,i,o=L.Draw.SimpleShape.prototype._getTooltipText.call(this),n=this._shape,s=this.options.showArea;return n&&(t=this._shape._defaultShape?this._shape._defaultShape():this._shape.getLatLngs(),e=L.GeometryUtil.geodesicArea(t),i=s?L.GeometryUtil.readableArea(e,this.options.metric):""),{text:o.text,subtext:i}}}),L.Draw.Circle=L.Draw.SimpleShape.extend({statics:{TYPE:"circle"},options:{shapeOptions:{stroke:!0,color:"#3388ff",weight:4,opacity:.5,fill:!0,fillColor:null,fillOpacity:.2,clickable:!0},showRadius:!0,metric:!0,feet:!0,nautic:!1},initialize:function(t,e){this.type=L.Draw.Circle.TYPE,this._initialLabelText=L.drawLocal.draw.handlers.circle.tooltip.start,L.Draw.SimpleShape.prototype.initialize.call(this,t,e)},_drawShape:function(t){this._shape?this._shape.setRadius(this._startLatLng.distanceTo(t)):(this._shape=new L.Circle(this._startLatLng,this._startLatLng.distanceTo(t),this.options.shapeOptions),this._map.addLayer(this._shape))},_fireCreatedEvent:function(){var t=new L.Circle(this._startLatLng,this._shape.getRadius(),this.options.shapeOptions);L.Draw.SimpleShape.prototype._fireCreatedEvent.call(this,t)},_onMouseMove:function(t){var e,i=t.latlng,o=this.options.showRadius,n=this.options.metric;if(this._tooltip.updatePosition(i),this._isDrawing){this._drawShape(i),e=this._shape.getRadius().toFixed(1);var s="";o&&(s=L.drawLocal.draw.handlers.circle.radius+": "+L.GeometryUtil.readableDistance(e,n,this.options.feet,this.options.nautic)),this._tooltip.updateContent({text:this._endLabelText,subtext:s})}}}),L.Draw.Marker=L.Draw.Feature.extend({statics:{TYPE:"marker"},options:{icon:new L.Icon.Default,repeatMode:!1,zIndexOffset:2e3},initialize:function(t,e){this.type=L.Draw.Marker.TYPE,L.Draw.Feature.prototype.initialize.call(this,t,e)},addHooks:function(){L.Draw.Feature.prototype.addHooks.call(this),this._map&&(this._tooltip.updateContent({text:L.drawLocal.draw.handlers.marker.tooltip.start}),this._mouseMarker||(this._mouseMarker=L.marker(this._map.getCenter(),{icon:L.divIcon({className:"leaflet-mouse-marker",iconAnchor:[20,20],iconSize:[40,40]}),opacity:0,zIndexOffset:this.options.zIndexOffset})),this._mouseMarker.on("click",this._onClick,this).addTo(this._map),this._map.on("mousemove",this._onMouseMove,this),this._map.on("click",this._onTouch,this))},removeHooks:function(){L.Draw.Feature.prototype.removeHooks.call(this),this._map&&(this._marker&&(this._marker.off("click",this._onClick,this),this._map.off("click",this._onClick,this).off("click",this._onTouch,this).removeLayer(this._marker),delete this._marker),this._mouseMarker.off("click",this._onClick,this),this._map.removeLayer(this._mouseMarker),delete this._mouseMarker,this._map.off("mousemove",this._onMouseMove,this))},_onMouseMove:function(t){var e=t.latlng;this._tooltip.updatePosition(e),this._mouseMarker.setLatLng(e),this._marker?(e=this._mouseMarker.getLatLng(),this._marker.setLatLng(e)):(this._marker=new L.Marker(e,{icon:this.options.icon,zIndexOffset:this.options.zIndexOffset}),this._marker.on("click",this._onClick,this),this._map.on("click",this._onClick,this).addLayer(this._marker))},_onClick:function(){this._fireCreatedEvent(),this.disable(),this.options.repeatMode&&this.enable()},_onTouch:function(t){this._onMouseMove(t),this._onClick()},_fireCreatedEvent:function(){var t=new L.Marker.Touch(this._marker.getLatLng(),{icon:this.options.icon});L.Draw.Feature.prototype._fireCreatedEvent.call(this,t)}}),L.Edit=L.Edit||{},L.Edit.Marker=L.Handler.extend({initialize:function(t,e){this._marker=t,L.setOptions(this,e)},addHooks:function(){var t=this._marker;t.dragging.enable(),t.on("dragend",this._onDragEnd,t),this._toggleMarkerHighlight()},removeHooks:function(){var t=this._marker;t.dragging.disable(),t.off("dragend",this._onDragEnd,t),this._toggleMarkerHighlight()},_onDragEnd:function(t){var e=t.target;e.edited=!0,this._map.fire(L.Draw.Event.EDITMOVE,{layer:e})},_toggleMarkerHighlight:function(){var t=this._marker._icon;t&&(t.style.display="none",L.DomUtil.hasClass(t,"leaflet-edit-marker-selected")?(L.DomUtil.removeClass(t,"leaflet-edit-marker-selected"),this._offsetMarker(t,-4)):(L.DomUtil.addClass(t,"leaflet-edit-marker-selected"),this._offsetMarker(t,4)),t.style.display="")},_offsetMarker:function(t,e){var i=parseInt(t.style.marginTop,10)-e,o=parseInt(t.style.marginLeft,10)-e;t.style.marginTop=i+"px",t.style.marginLeft=o+"px"}}),L.Marker.addInitHook(function(){L.Edit.Marker&&(this.editing=new L.Edit.Marker(this),this.options.editable&&this.editing.enable())}),L.Edit=L.Edit||{},L.Edit.Poly=L.Handler.extend({options:{},initialize:function(t,e){this.latlngs=[t._latlngs],t._holes&&(this.latlngs=this.latlngs.concat(t._holes)),this._poly=t,L.setOptions(this,e),this._poly.on("revert-edited",this._updateLatLngs,this)},_defaultShape:function(){return L.Polyline._flat?L.Polyline._flat(this._poly._latlngs)?this._poly._latlngs:this._poly._latlngs[0]:this._poly._latlngs},_eachVertexHandler:function(t){for(var e=0;et&&(i._index+=e)})},_createMiddleMarker:function(t,e){var i,o,n,s=this._getMiddleLatLng(t,e),a=this._createMarker(s);a.setOpacity(.6),t._middleRight=e._middleLeft=a,o=function(){a.off("touchmove",o,this);var n=e._index;a._index=n,a.off("click",i,this).on("click",this._onMarkerClick,this),s.lat=a.getLatLng().lat,s.lng=a.getLatLng().lng,this._spliceLatLngs(n,0,s),this._markers.splice(n,0,a),a.setOpacity(1),this._updateIndexes(n,1),e._index++,this._updatePrevNext(t,a),this._updatePrevNext(a,e),this._poly.fire("editstart")},n=function(){a.off("dragstart",o,this),a.off("dragend",n,this),a.off("touchmove",o,this),this._createMiddleMarker(t,a),this._createMiddleMarker(a,e)},i=function(){o.call(this),n.call(this),this._fireEdit()},a.on("click",i,this).on("dragstart",o,this).on("dragend",n,this).on("touchmove",o,this),this._markerGroup.addLayer(a)},_updatePrevNext:function(t,e){t&&(t._next=e),e&&(e._prev=t)},_getMiddleLatLng:function(t,e){var i=this._poly._map,o=i.project(t.getLatLng()),n=i.project(e.getLatLng());return i.unproject(o._add(n)._divideBy(2))}}),L.Polyline.addInitHook(function(){this.editing||(L.Edit.Poly&&(this.editing=new L.Edit.Poly(this,this.options.poly),this.options.editable&&this.editing.enable()),this.on("add",function(){this.editing&&this.editing.enabled()&&this.editing.addHooks()}),this.on("remove",function(){this.editing&&this.editing.enabled()&&this.editing.removeHooks()}))}),L.Edit=L.Edit||{},L.Edit.SimpleShape=L.Handler.extend({options:{moveIcon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-move"}),resizeIcon:new L.DivIcon({iconSize:new L.Point(8,8),className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-resize"}),touchMoveIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-move leaflet-touch-icon"}),touchResizeIcon:new L.DivIcon({iconSize:new L.Point(20,20),className:"leaflet-div-icon leaflet-editing-icon leaflet-edit-resize leaflet-touch-icon"})},initialize:function(t,e){L.Browser.touch&&(this.options.moveIcon=this.options.touchMoveIcon,this.options.resizeIcon=this.options.touchResizeIcon),this._shape=t,L.Util.setOptions(this,e)},addHooks:function(){var t=this._shape;this._shape._map&&(this._map=this._shape._map,t.setStyle(t.options.editing),t._map&&(this._map=t._map,this._markerGroup||this._initMarkers(),this._map.addLayer(this._markerGroup)))},removeHooks:function(){var t=this._shape;if(t.setStyle(t.options.original),t._map){this._unbindMarker(this._moveMarker);for(var e=0,i=this._resizeMarkers.length;e100&&i<500||t.target._simulatedClick&&!t._simulated?(L.DomEvent.stop(t),!1):(L.DomEvent._lastClick=e,!0)},_onTouchStart:function(t){if(this._map._loaded){this._touchEvent(t,"touchstart")}},_onTouchEnd:function(t){if(this._map._loaded){this._touchEvent(t,"touchend")}},_onTouchCancel:function(t){if(this._map._loaded){var e="touchcancel";this._detectIE()&&(e="pointercancel"),this._touchEvent(t,e)}},_onTouchLeave:function(t){if(this._map._loaded){this._touchEvent(t,"touchleave")}},_onTouchMove:function(t){if(this._map._loaded){this._touchEvent(t,"touchmove")}},_detectIE:function(){var e=t.navigator.userAgent,i=e.indexOf("MSIE ");if(i>0)return parseInt(e.substring(i+5,e.indexOf(".",i)),10);if(e.indexOf("Trident/")>0){var o=e.indexOf("rv:");return parseInt(e.substring(o+3,e.indexOf(".",o)),10)}var n=e.indexOf("Edge/");return n>0&&parseInt(e.substring(n+5,e.indexOf(".",n)),10)}}),L.Map.addInitHook("addHandler","touchExtend",L.Map.TouchExtend),L.Marker.Touch=L.Marker.extend({_initInteraction:function(){return this.addInteractiveTarget?L.Marker.prototype._initInteraction.apply(this):this._initInteractionLegacy()},_initInteractionLegacy:function(){if(this.options.clickable){var t=this._icon,e=["dblclick","mousedown","mouseover","mouseout","contextmenu","touchstart","touchend","touchmove"];this._detectIE?e.concat(["MSPointerDown","MSPointerUp","MSPointerMove","MSPointerCancel"]):e.concat(["touchcancel"]),L.DomUtil.addClass(t,"leaflet-clickable"),L.DomEvent.on(t,"click",this._onMouseClick,this),L.DomEvent.on(t,"keypress",this._onKeyPress,this);for(var i=0;i0)return parseInt(e.substring(i+5,e.indexOf(".",i)),10);if(e.indexOf("Trident/")>0){var o=e.indexOf("rv:");return parseInt(e.substring(o+3,e.indexOf(".",o)),10)}var n=e.indexOf("Edge/");return n>0&&parseInt(e.substring(n+5,e.indexOf(".",n)),10)}}),L.LatLngUtil={cloneLatLngs:function(t){for(var e=[],i=0,o=t.length;i2){for(var a=0;a1&&(i=i+a+r[1])}return i},readableArea:function(e,i,o){var n,s,o=L.Util.extend({},t,o);return i?(s=["ha","m"],type=typeof i,"string"===type?s=[i]:"boolean"!==type&&(s=i),n=e>=1e6&&-1!==s.indexOf("km")?L.GeometryUtil.formattedNumber(1e-6*e,o.km)+" km²":e>=1e4&&-1!==s.indexOf("ha")?L.GeometryUtil.formattedNumber(1e-4*e,o.ha)+" ha":L.GeometryUtil.formattedNumber(e,o.m)+" m²"):(e/=.836127,n=e>=3097600?L.GeometryUtil.formattedNumber(e/3097600,o.mi)+" mi²":e>=4840?L.GeometryUtil.formattedNumber(e/4840,o.ac)+" acres":L.GeometryUtil.formattedNumber(e,o.yd)+" yd²"),n},readableDistance:function(e,i,o,n,s){var a,s=L.Util.extend({},t,s);switch(i?"string"==typeof i?i:"metric":o?"feet":n?"nauticalMile":"yards"){case"metric":a=e>1e3?L.GeometryUtil.formattedNumber(e/1e3,s.km)+" km":L.GeometryUtil.formattedNumber(e,s.m)+" m";break;case"feet":e*=3.28083,a=L.GeometryUtil.formattedNumber(e,s.ft)+" ft";break;case"nauticalMile":e*=.53996,a=L.GeometryUtil.formattedNumber(e/1e3,s.nm)+" nm";break;case"yards":default:e*=1.09361,a=e>1760?L.GeometryUtil.formattedNumber(e/1760,s.mi)+" miles":L.GeometryUtil.formattedNumber(e,s.yd)+" yd"}return a}})}(),L.Util.extend(L.LineUtil,{segmentsIntersect:function(t,e,i,o){return this._checkCounterclockwise(t,i,o)!==this._checkCounterclockwise(e,i,o)&&this._checkCounterclockwise(t,e,i)!==this._checkCounterclockwise(t,e,o)},_checkCounterclockwise:function(t,e,i){return(i.y-t.y)*(e.x-t.x)>(e.y-t.y)*(i.x-t.x)}}),L.Polyline.include({intersects:function(){var t,e,i,o=this._getProjectedPoints(),n=o?o.length:0;if(this._tooFewPointsForIntersection())return!1;for(t=n-1;t>=3;t--)if(e=o[t-1],i=o[t],this._lineSegmentsIntersectsRange(e,i,t-2))return!0;return!1},newLatLngIntersects:function(t,e){return!!this._map&&this.newPointIntersects(this._map.latLngToLayerPoint(t),e)},newPointIntersects:function(t,e){var i=this._getProjectedPoints(),o=i?i.length:0,n=i?i[o-1]:null,s=o-2;return!this._tooFewPointsForIntersection(1)&&this._lineSegmentsIntersectsRange(n,t,s,e?1:0)},_tooFewPointsForIntersection:function(t){var e=this._getProjectedPoints(),i=e?e.length:0;return i+=t||0,!e||i<=3},_lineSegmentsIntersectsRange:function(t,e,i,o){var n,s,a=this._getProjectedPoints();o=o||0;for(var r=i;r>o;r--)if(n=a[r-1],s=a[r],L.LineUtil.segmentsIntersect(t,e,n,s))return!0;return!1},_getProjectedPoints:function(){if(!this._defaultShape)return this._originalPoints;for(var t=[],e=this._defaultShape(),i=0;i0&&this._singleLineLabel&&(L.DomUtil.removeClass(this._container,"leaflet-draw-tooltip-single"),this._singleLineLabel=!1):(L.DomUtil.addClass(this._container,"leaflet-draw-tooltip-single"),this._singleLineLabel=!0),this._container.innerHTML=(t.subtext.length>0?''+t.subtext+"
":"")+""+t.text+"",t.text||t.subtext?(this._visible=!0,this._container.style.visibility="inherit"):(this._visible=!1,this._container.style.visibility="hidden"),this):this},updatePosition:function(t){var e=this._map.latLngToLayerPoint(t),i=this._container;return this._container&&(this._visible&&(i.style.visibility="inherit"),L.DomUtil.setPosition(i,e)),this},showAsError:function(){return this._container&&L.DomUtil.addClass(this._container,"leaflet-error-draw-tooltip"),this},removeError:function(){return this._container&&L.DomUtil.removeClass(this._container,"leaflet-error-draw-tooltip"),this},_onMouseOut:function(){this._container&&(this._container.style.visibility="hidden")}}),L.DrawToolbar=L.Toolbar.extend({statics:{TYPE:"draw"},options:{polyline:{},polygon:{},rectangle:{},circle:{},marker:{}},initialize:function(t){for(var e in this.options)this.options.hasOwnProperty(e)&&t[e]&&(t[e]=L.extend({},this.options[e],t[e]));this._toolbarClass="leaflet-draw-draw",L.Toolbar.prototype.initialize.call(this,t)},getModeHandlers:function(t){return[{enabled:this.options.polyline,handler:new L.Draw.Polyline(t,this.options.polyline),title:L.drawLocal.draw.toolbar.buttons.polyline},{enabled:this.options.polygon,handler:new L.Draw.Polygon(t,this.options.polygon),title:L.drawLocal.draw.toolbar.buttons.polygon},{enabled:this.options.rectangle,handler:new L.Draw.Rectangle(t,this.options.rectangle),title:L.drawLocal.draw.toolbar.buttons.rectangle},{enabled:this.options.circle,handler:new L.Draw.Circle(t,this.options.circle),title:L.drawLocal.draw.toolbar.buttons.circle},{enabled:this.options.marker,handler:new L.Draw.Marker(t,this.options.marker),title:L.drawLocal.draw.toolbar.buttons.marker}]},getActions:function(t){return[{enabled:t.completeShape,title:L.drawLocal.draw.toolbar.finish.title,text:L.drawLocal.draw.toolbar.finish.text,callback:t.completeShape,context:t},{enabled:t.deleteLastVertex,title:L.drawLocal.draw.toolbar.undo.title,text:L.drawLocal.draw.toolbar.undo.text,callback:t.deleteLastVertex,context:t},{title:L.drawLocal.draw.toolbar.actions.title,text:L.drawLocal.draw.toolbar.actions.text,callback:this.disable,context:this}]},setOptions:function(t){L.setOptions(this,t);for(var e in this._modes)this._modes.hasOwnProperty(e)&&t.hasOwnProperty(e)&&this._modes[e].handler.setOptions(t[e])}}),L.EditToolbar=L.Toolbar.extend({statics:{TYPE:"edit"},options:{edit:{selectedPathOptions:{dashArray:"10, 10",fill:!0,fillColor:"#fe57a1",fillOpacity:.1,maintainColor:!1}},remove:{},poly:null,featureGroup:null},initialize:function(t){t.edit&&(void 0===t.edit.selectedPathOptions&&(t.edit.selectedPathOptions=this.options.edit.selectedPathOptions),t.edit.selectedPathOptions=L.extend({},this.options.edit.selectedPathOptions,t.edit.selectedPathOptions)),t.remove&&(t.remove=L.extend({},this.options.remove,t.remove)),t.poly&&(t.poly=L.extend({},this.options.poly,t.poly)),this._toolbarClass="leaflet-draw-edit",L.Toolbar.prototype.initialize.call(this,t),this._selectedFeatureCount=0},getModeHandlers:function(t){var e=this.options.featureGroup;return[{enabled:this.options.edit,handler:new L.EditToolbar.Edit(t,{featureGroup:e,selectedPathOptions:this.options.edit.selectedPathOptions,poly:this.options.poly}),title:L.drawLocal.edit.toolbar.buttons.edit},{enabled:this.options.remove,handler:new L.EditToolbar.Delete(t,{featureGroup:e}),title:L.drawLocal.edit.toolbar.buttons.remove}]},getActions:function(){return[{title:L.drawLocal.edit.toolbar.actions.save.title,text:L.drawLocal.edit.toolbar.actions.save.text,callback:this._save,context:this},{title:L.drawLocal.edit.toolbar.actions.cancel.title,text:L.drawLocal.edit.toolbar.actions.cancel.text,callback:this.disable,context:this},{title:L.drawLocal.edit.toolbar.actions.clearAll.title,text:L.drawLocal.edit.toolbar.actions.clearAll.text,callback:this._clearAllLayers,context:this}]},addToolbar:function(t){var e=L.Toolbar.prototype.addToolbar.call(this,t);return this._checkDisabled(),this.options.featureGroup.on("layeradd layerremove",this._checkDisabled,this),e},removeToolbar:function(){this.options.featureGroup.off("layeradd layerremove",this._checkDisabled,this),L.Toolbar.prototype.removeToolbar.call(this)},disable:function(){this.enabled()&&(this._activeMode.handler.revertLayers(),L.Toolbar.prototype.disable.call(this))},_save:function(){this._activeMode.handler.save(),this._activeMode&&this._activeMode.handler.disable()},_clearAllLayers:function(){this._activeMode.handler.removeAllLayers(),this._activeMode&&this._activeMode.handler.disable()},_checkDisabled:function(){var t,e=this.options.featureGroup,i=0!==e.getLayers().length;this.options.edit&&(t=this._modes[L.EditToolbar.Edit.TYPE].button,i?L.DomUtil.removeClass(t,"leaflet-disabled"):L.DomUtil.addClass(t,"leaflet-disabled"),t.setAttribute("title",i?L.drawLocal.edit.toolbar.buttons.edit:L.drawLocal.edit.toolbar.buttons.editDisabled)),this.options.remove&&(t=this._modes[L.EditToolbar.Delete.TYPE].button,i?L.DomUtil.removeClass(t,"leaflet-disabled"):L.DomUtil.addClass(t,"leaflet-disabled"),t.setAttribute("title",i?L.drawLocal.edit.toolbar.buttons.remove:L.drawLocal.edit.toolbar.buttons.removeDisabled))}}),L.EditToolbar.Edit=L.Handler.extend({statics:{TYPE:"edit"},includes:L.Mixin.Events,initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.setOptions(this,e),this._featureGroup=e.featureGroup,!(this._featureGroup instanceof L.FeatureGroup))throw new Error("options.featureGroup must be a L.FeatureGroup");this._uneditedLayerProps={},this.type=L.EditToolbar.Edit.TYPE},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire("enabled",{handler:this.type}),this._map.fire(L.Draw.Event.EDITSTART,{handler:this.type}),L.Handler.prototype.enable.call(this),this._featureGroup.on("layeradd",this._enableLayerEdit,this).on("layerremove",this._disableLayerEdit,this))},disable:function(){this._enabled&&(this._featureGroup.off("layeradd",this._enableLayerEdit,this).off("layerremove",this._disableLayerEdit,this),L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.EDITSTOP,{handler:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._featureGroup.eachLayer(this._enableLayerEdit,this),this._tooltip=new L.Draw.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext}),t._editTooltip=this._tooltip,this._updateTooltip(),this._map.on("mousemove",this._onMouseMove,this).on("touchmove",this._onMouseMove,this).on("MSPointerMove",this._onMouseMove,this).on(L.Draw.Event.EDITVERTEX,this._updateTooltip,this))},removeHooks:function(){this._map&&(this._featureGroup.eachLayer(this._disableLayerEdit,this),this._uneditedLayerProps={},this._tooltip.dispose(),this._tooltip=null,this._map.off("mousemove",this._onMouseMove,this).off("touchmove",this._onMouseMove,this).off("MSPointerMove",this._onMouseMove,this).off(L.Draw.Event.EDITVERTEX,this._updateTooltip,this))},revertLayers:function(){this._featureGroup.eachLayer(function(t){this._revertLayer(t)},this)},save:function(){var t=new L.LayerGroup;this._featureGroup.eachLayer(function(e){e.edited&&(t.addLayer(e),e.edited=!1)}),this._map.fire(L.Draw.Event.EDITED,{layers:t})},_backupLayer:function(t){var e=L.Util.stamp(t);this._uneditedLayerProps[e]||(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?this._uneditedLayerProps[e]={latlngs:L.LatLngUtil.cloneLatLngs(t.getLatLngs())}:t instanceof L.Circle?this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng()),radius:t.getRadius()}:t instanceof L.Marker&&(this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng())}))},_getTooltipText:function(){return{text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext}},_updateTooltip:function(){this._tooltip.updateContent(this._getTooltipText())},_revertLayer:function(t){var e=L.Util.stamp(t);t.edited=!1,this._uneditedLayerProps.hasOwnProperty(e)&&(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?t.setLatLngs(this._uneditedLayerProps[e].latlngs):t instanceof L.Circle?(t.setLatLng(this._uneditedLayerProps[e].latlng),t.setRadius(this._uneditedLayerProps[e].radius)):t instanceof L.Marker&&t.setLatLng(this._uneditedLayerProps[e].latlng),t.fire("revert-edited",{layer:t}))},_enableLayerEdit:function(t){var e,i,o=t.layer||t.target||t;this._backupLayer(o),this.options.poly&&(i=L.Util.extend({},this.options.poly),o.options.poly=i),this.options.selectedPathOptions&&(e=L.Util.extend({},this.options.selectedPathOptions),e.maintainColor&&(e.color=o.options.color,e.fillColor=o.options.fillColor),o.options.original=L.extend({},o.options),o.options.editing=e),o instanceof L.Marker?(o.editing&&o.editing.enable(),o.dragging.enable(),o.on("dragend",this._onMarkerDragEnd).on("touchmove",this._onTouchMove,this).on("MSPointerMove",this._onTouchMove,this).on("touchend",this._onMarkerDragEnd,this).on("MSPointerUp",this._onMarkerDragEnd,this)):o.editing.enable()},_disableLayerEdit:function(t){var e=t.layer||t.target||t;e.edited=!1,e.editing&&e.editing.disable(),delete e.options.editing,delete e.options.original,this._selectedPathOptions&&(e instanceof L.Marker?this._toggleMarkerHighlight(e):(e.setStyle(e.options.previousOptions),delete e.options.previousOptions)),e instanceof L.Marker?(e.dragging.disable(),e.off("dragend",this._onMarkerDragEnd,this).off("touchmove",this._onTouchMove,this).off("MSPointerMove",this._onTouchMove,this).off("touchend",this._onMarkerDragEnd,this).off("MSPointerUp",this._onMarkerDragEnd,this)):e.editing.disable()},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_onMarkerDragEnd:function(t){var e=t.target;e.edited=!0,this._map.fire(L.Draw.Event.EDITMOVE,{layer:e})},_onTouchMove:function(t){var e=t.originalEvent.changedTouches[0],i=this._map.mouseEventToLayerPoint(e),o=this._map.layerPointToLatLng(i);t.target.setLatLng(o)},_hasAvailableLayers:function(){return 0!==this._featureGroup.getLayers().length}}),L.EditToolbar.Delete=L.Handler.extend({statics:{TYPE:"remove"},includes:L.Mixin.Events,initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.Util.setOptions(this,e),this._deletableLayers=this.options.featureGroup,!(this._deletableLayers instanceof L.FeatureGroup))throw new Error("options.featureGroup must be a L.FeatureGroup");this.type=L.EditToolbar.Delete.TYPE},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire("enabled",{handler:this.type}),this._map.fire(L.Draw.Event.DELETESTART,{handler:this.type}),L.Handler.prototype.enable.call(this),this._deletableLayers.on("layeradd",this._enableLayerDelete,this).on("layerremove",this._disableLayerDelete,this))},disable:function(){this._enabled&&(this._deletableLayers.off("layeradd",this._enableLayerDelete,this).off("layerremove",this._disableLayerDelete,this),L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.DELETESTOP,{handler:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._deletableLayers.eachLayer(this._enableLayerDelete,this),this._deletedLayers=new L.LayerGroup,this._tooltip=new L.Draw.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.remove.tooltip.text}),this._map.on("mousemove",this._onMouseMove,this))},removeHooks:function(){this._map&&(this._deletableLayers.eachLayer(this._disableLayerDelete,this),this._deletedLayers=null,this._tooltip.dispose(),this._tooltip=null,this._map.off("mousemove",this._onMouseMove,this))},revertLayers:function(){this._deletedLayers.eachLayer(function(t){this._deletableLayers.addLayer(t),t.fire("revert-deleted",{layer:t})},this)},save:function(){this._map.fire(L.Draw.Event.DELETED,{layers:this._deletedLayers})},removeAllLayers:function(){this._deletableLayers.eachLayer(function(t){this._removeLayer({layer:t})},this),this.save()},_enableLayerDelete:function(t){(t.layer||t.target||t).on("click",this._removeLayer,this)},_disableLayerDelete:function(t){var e=t.layer||t.target||t;e.off("click",this._removeLayer,this),this._deletedLayers.removeLayer(e)},_removeLayer:function(t){var e=t.layer||t.target||t;this._deletableLayers.removeLayer(e),this._deletedLayers.addLayer(e),e.fire("deleted")},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_hasAvailableLayers:function(){return 0!==this._deletableLayers.getLayers().length}})}(window,document); +this._shape.redraw(),!1},_onTouchEnd:function(t){t.target.setOpacity(1),this.updateMarkers(),this._fireEdit()},_move:function(){},_resize:function(){}}),L.Edit=L.Edit||{},L.Edit.Rectangle=L.Edit.SimpleShape.extend({_createMoveMarker:function(){var t=this._shape.getBounds(),e=t.getCenter();this._moveMarker=this._createMarker(e,this.options.moveIcon)},_createResizeMarker:function(){var t=this._getCorners();this._resizeMarkers=[];for(var e=0,i=t.length;e100&&i<500||t.target._simulatedClick&&!t._simulated?(L.DomEvent.stop(t),!1):(L.DomEvent._lastClick=e,!0)},_onTouchStart:function(t){if(this._map._loaded){this._touchEvent(t,"touchstart")}},_onTouchEnd:function(t){if(this._map._loaded){this._touchEvent(t,"touchend")}},_onTouchCancel:function(t){if(this._map._loaded){var e="touchcancel";this._detectIE()&&(e="pointercancel"),this._touchEvent(t,e)}},_onTouchLeave:function(t){if(this._map._loaded){this._touchEvent(t,"touchleave")}},_onTouchMove:function(t){if(this._map._loaded){this._touchEvent(t,"touchmove")}},_detectIE:function(){var e=t.navigator.userAgent,i=e.indexOf("MSIE ");if(i>0)return parseInt(e.substring(i+5,e.indexOf(".",i)),10);if(e.indexOf("Trident/")>0){var o=e.indexOf("rv:");return parseInt(e.substring(o+3,e.indexOf(".",o)),10)}var n=e.indexOf("Edge/");return n>0&&parseInt(e.substring(n+5,e.indexOf(".",n)),10)}}),L.Map.addInitHook("addHandler","touchExtend",L.Map.TouchExtend),L.Marker.Touch=L.Marker.extend({_initInteraction:function(){return this.addInteractiveTarget?L.Marker.prototype._initInteraction.apply(this):this._initInteractionLegacy()},_initInteractionLegacy:function(){if(this.options.clickable){var t=this._icon,e=["dblclick","mousedown","mouseover","mouseout","contextmenu","touchstart","touchend","touchmove"];this._detectIE?e.concat(["MSPointerDown","MSPointerUp","MSPointerMove","MSPointerCancel"]):e.concat(["touchcancel"]),L.DomUtil.addClass(t,"leaflet-clickable"),L.DomEvent.on(t,"click",this._onMouseClick,this),L.DomEvent.on(t,"keypress",this._onKeyPress,this);for(var i=0;i0)return parseInt(e.substring(i+5,e.indexOf(".",i)),10);if(e.indexOf("Trident/")>0){var o=e.indexOf("rv:");return parseInt(e.substring(o+3,e.indexOf(".",o)),10)}var n=e.indexOf("Edge/");return n>0&&parseInt(e.substring(n+5,e.indexOf(".",n)),10)}}),L.LatLngUtil={cloneLatLngs:function(t){for(var e=[],i=0,o=t.length;i2){for(var a=0;a1&&(i=i+a+r[1])}return i},readableArea:function(e,i,o){var n,s,o=L.Util.extend({},t,o);return i?(s=["ha","m"],type=typeof i,"string"===type?s=[i]:"boolean"!==type&&(s=i),n=e>=1e6&&-1!==s.indexOf("km")?L.GeometryUtil.formattedNumber(1e-6*e,o.km)+" km²":e>=1e4&&-1!==s.indexOf("ha")?L.GeometryUtil.formattedNumber(1e-4*e,o.ha)+" ha":L.GeometryUtil.formattedNumber(e,o.m)+" m²"):(e/=.836127,n=e>=3097600?L.GeometryUtil.formattedNumber(e/3097600,o.mi)+" mi²":e>=4840?L.GeometryUtil.formattedNumber(e/4840,o.ac)+" acres":L.GeometryUtil.formattedNumber(e,o.yd)+" yd²"),n},readableDistance:function(e,i,o,n,s){var a,s=L.Util.extend({},t,s);switch(i?"string"==typeof i?i:"metric":o?"feet":n?"nauticalMile":"yards"){case"metric":a=e>1e3?L.GeometryUtil.formattedNumber(e/1e3,s.km)+" km":L.GeometryUtil.formattedNumber(e,s.m)+" m";break;case"feet":e*=3.28083,a=L.GeometryUtil.formattedNumber(e,s.ft)+" ft";break;case"nauticalMile":e*=.53996,a=L.GeometryUtil.formattedNumber(e/1e3,s.nm)+" nm";break;case"yards":default:e*=1.09361,a=e>1760?L.GeometryUtil.formattedNumber(e/1760,s.mi)+" miles":L.GeometryUtil.formattedNumber(e,s.yd)+" yd"}return a}})}(),L.Util.extend(L.LineUtil,{segmentsIntersect:function(t,e,i,o){return this._checkCounterclockwise(t,i,o)!==this._checkCounterclockwise(e,i,o)&&this._checkCounterclockwise(t,e,i)!==this._checkCounterclockwise(t,e,o)},_checkCounterclockwise:function(t,e,i){return(i.y-t.y)*(e.x-t.x)>(e.y-t.y)*(i.x-t.x)}}),L.Polyline.include({intersects:function(){var t,e,i,o=this._getProjectedPoints(),n=o?o.length:0;if(this._tooFewPointsForIntersection())return!1;for(t=n-1;t>=3;t--)if(e=o[t-1],i=o[t],this._lineSegmentsIntersectsRange(e,i,t-2))return!0;return!1},newLatLngIntersects:function(t,e){return!!this._map&&this.newPointIntersects(this._map.latLngToLayerPoint(t),e)},newPointIntersects:function(t,e){var i=this._getProjectedPoints(),o=i?i.length:0,n=i?i[o-1]:null,s=o-2;return!this._tooFewPointsForIntersection(1)&&this._lineSegmentsIntersectsRange(n,t,s,e?1:0)},_tooFewPointsForIntersection:function(t){var e=this._getProjectedPoints(),i=e?e.length:0;return i+=t||0,!e||i<=3},_lineSegmentsIntersectsRange:function(t,e,i,o){var n,s,a=this._getProjectedPoints();o=o||0;for(var r=i;r>o;r--)if(n=a[r-1],s=a[r],L.LineUtil.segmentsIntersect(t,e,n,s))return!0;return!1},_getProjectedPoints:function(){if(!this._defaultShape)return this._originalPoints;for(var t=[],e=this._defaultShape(),i=0;i0&&this._singleLineLabel&&(L.DomUtil.removeClass(this._container,"leaflet-draw-tooltip-single"),this._singleLineLabel=!1):(L.DomUtil.addClass(this._container,"leaflet-draw-tooltip-single"),this._singleLineLabel=!0),this._container.innerHTML=(t.subtext.length>0?''+t.subtext+"
":"")+""+t.text+"",t.text||t.subtext?(this._visible=!0,this._container.style.visibility="inherit"):(this._visible=!1,this._container.style.visibility="hidden"),this):this},updatePosition:function(t){var e=this._map.latLngToLayerPoint(t),i=this._container;return this._container&&(this._visible&&(i.style.visibility="inherit"),L.DomUtil.setPosition(i,e)),this},showAsError:function(){return this._container&&L.DomUtil.addClass(this._container,"leaflet-error-draw-tooltip"),this},removeError:function(){return this._container&&L.DomUtil.removeClass(this._container,"leaflet-error-draw-tooltip"),this},_onMouseOut:function(){this._container&&(this._container.style.visibility="hidden")}}),L.DrawToolbar=L.Toolbar.extend({statics:{TYPE:"draw"},options:{polyline:{},polygon:{},rectangle:{},circle:{},marker:{}},initialize:function(t){for(var e in this.options)this.options.hasOwnProperty(e)&&t[e]&&(t[e]=L.extend({},this.options[e],t[e]));this._toolbarClass="leaflet-draw-draw",L.Toolbar.prototype.initialize.call(this,t)},getModeHandlers:function(t){return[{enabled:this.options.polyline,handler:new L.Draw.Polyline(t,this.options.polyline),title:L.drawLocal.draw.toolbar.buttons.polyline},{enabled:this.options.polygon,handler:new L.Draw.Polygon(t,this.options.polygon),title:L.drawLocal.draw.toolbar.buttons.polygon},{enabled:this.options.rectangle,handler:new L.Draw.Rectangle(t,this.options.rectangle),title:L.drawLocal.draw.toolbar.buttons.rectangle},{enabled:this.options.circle,handler:new L.Draw.Circle(t,this.options.circle),title:L.drawLocal.draw.toolbar.buttons.circle},{enabled:this.options.marker,handler:new L.Draw.Marker(t,this.options.marker),title:L.drawLocal.draw.toolbar.buttons.marker}]},getActions:function(t){return[{enabled:t.completeShape,title:L.drawLocal.draw.toolbar.finish.title,text:L.drawLocal.draw.toolbar.finish.text,callback:t.completeShape,context:t},{enabled:t.deleteLastVertex,title:L.drawLocal.draw.toolbar.undo.title,text:L.drawLocal.draw.toolbar.undo.text,callback:t.deleteLastVertex,context:t},{title:L.drawLocal.draw.toolbar.actions.title,text:L.drawLocal.draw.toolbar.actions.text,callback:this.disable,context:this}]},setOptions:function(t){L.setOptions(this,t);for(var e in this._modes)this._modes.hasOwnProperty(e)&&t.hasOwnProperty(e)&&this._modes[e].handler.setOptions(t[e])}}),L.EditToolbar=L.Toolbar.extend({statics:{TYPE:"edit"},options:{edit:{selectedPathOptions:{dashArray:"10, 10",fill:!0,fillColor:"#fe57a1",fillOpacity:.1,maintainColor:!1}},remove:{},poly:null,featureGroup:null},initialize:function(t){t.edit&&(void 0===t.edit.selectedPathOptions&&(t.edit.selectedPathOptions=this.options.edit.selectedPathOptions),t.edit.selectedPathOptions=L.extend({},this.options.edit.selectedPathOptions,t.edit.selectedPathOptions)),t.remove&&(t.remove=L.extend({},this.options.remove,t.remove)),t.poly&&(t.poly=L.extend({},this.options.poly,t.poly)),this._toolbarClass="leaflet-draw-edit",L.Toolbar.prototype.initialize.call(this,t),this._selectedFeatureCount=0},getModeHandlers:function(t){var e=this.options.featureGroup;return[{enabled:this.options.edit,handler:new L.EditToolbar.Edit(t,{featureGroup:e,selectedPathOptions:this.options.edit.selectedPathOptions,poly:this.options.poly}),title:L.drawLocal.edit.toolbar.buttons.edit},{enabled:this.options.remove,handler:new L.EditToolbar.Delete(t,{featureGroup:e}),title:L.drawLocal.edit.toolbar.buttons.remove}]},getActions:function(){return[{title:L.drawLocal.edit.toolbar.actions.save.title,text:L.drawLocal.edit.toolbar.actions.save.text,callback:this._save,context:this},{title:L.drawLocal.edit.toolbar.actions.cancel.title,text:L.drawLocal.edit.toolbar.actions.cancel.text,callback:this.disable,context:this},{title:L.drawLocal.edit.toolbar.actions.clearAll.title,text:L.drawLocal.edit.toolbar.actions.clearAll.text,callback:this._clearAllLayers,context:this}]},addToolbar:function(t){var e=L.Toolbar.prototype.addToolbar.call(this,t);return this._checkDisabled(),this.options.featureGroup.on("layeradd layerremove",this._checkDisabled,this),e},removeToolbar:function(){this.options.featureGroup.off("layeradd layerremove",this._checkDisabled,this),L.Toolbar.prototype.removeToolbar.call(this)},disable:function(){this.enabled()&&(this._activeMode.handler.revertLayers(),L.Toolbar.prototype.disable.call(this))},_save:function(){this._activeMode.handler.save(),this._activeMode&&this._activeMode.handler.disable()},_clearAllLayers:function(){this._activeMode.handler.removeAllLayers(),this._activeMode&&this._activeMode.handler.disable()},_checkDisabled:function(){var t,e=this.options.featureGroup,i=0!==e.getLayers().length;this.options.edit&&(t=this._modes[L.EditToolbar.Edit.TYPE].button,i?L.DomUtil.removeClass(t,"leaflet-disabled"):L.DomUtil.addClass(t,"leaflet-disabled"),t.setAttribute("title",i?L.drawLocal.edit.toolbar.buttons.edit:L.drawLocal.edit.toolbar.buttons.editDisabled)),this.options.remove&&(t=this._modes[L.EditToolbar.Delete.TYPE].button,i?L.DomUtil.removeClass(t,"leaflet-disabled"):L.DomUtil.addClass(t,"leaflet-disabled"),t.setAttribute("title",i?L.drawLocal.edit.toolbar.buttons.remove:L.drawLocal.edit.toolbar.buttons.removeDisabled))}}),L.EditToolbar.Edit=L.Handler.extend({statics:{TYPE:"edit"},includes:L.Mixin.Events,initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.setOptions(this,e),this._featureGroup=e.featureGroup,!(this._featureGroup instanceof L.FeatureGroup))throw new Error("options.featureGroup must be a L.FeatureGroup");this._uneditedLayerProps={},this.type=L.EditToolbar.Edit.TYPE},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire("enabled",{handler:this.type}),this._map.fire(L.Draw.Event.EDITSTART,{handler:this.type}),L.Handler.prototype.enable.call(this),this._featureGroup.on("layeradd",this._enableLayerEdit,this).on("layerremove",this._disableLayerEdit,this))},disable:function(){this._enabled&&(this._featureGroup.off("layeradd",this._enableLayerEdit,this).off("layerremove",this._disableLayerEdit,this),L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.EDITSTOP,{handler:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._featureGroup.eachLayer(this._enableLayerEdit,this),this._tooltip=new L.Draw.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext}),t._editTooltip=this._tooltip,this._updateTooltip(),this._map.on("mousemove",this._onMouseMove,this).on("touchmove",this._onMouseMove,this).on("MSPointerMove",this._onMouseMove,this).on(L.Draw.Event.EDITVERTEX,this._updateTooltip,this))},removeHooks:function(){this._map&&(this._featureGroup.eachLayer(this._disableLayerEdit,this),this._uneditedLayerProps={},this._tooltip.dispose(),this._tooltip=null,this._map.off("mousemove",this._onMouseMove,this).off("touchmove",this._onMouseMove,this).off("MSPointerMove",this._onMouseMove,this).off(L.Draw.Event.EDITVERTEX,this._updateTooltip,this))},revertLayers:function(){this._featureGroup.eachLayer(function(t){this._revertLayer(t)},this)},save:function(){var t=new L.LayerGroup;this._featureGroup.eachLayer(function(e){e.edited&&(t.addLayer(e),e.edited=!1)}),this._map.fire(L.Draw.Event.EDITED,{layers:t})},_backupLayer:function(t){var e=L.Util.stamp(t);this._uneditedLayerProps[e]||(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?this._uneditedLayerProps[e]={latlngs:L.LatLngUtil.cloneLatLngs(t.getLatLngs())}:t instanceof L.Circle?this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng()),radius:t.getRadius()}:t instanceof L.Marker&&(this._uneditedLayerProps[e]={latlng:L.LatLngUtil.cloneLatLng(t.getLatLng())}))},_getTooltipText:function(){return{text:L.drawLocal.edit.handlers.edit.tooltip.text,subtext:L.drawLocal.edit.handlers.edit.tooltip.subtext}},_updateTooltip:function(){this._tooltip.updateContent(this._getTooltipText())},_revertLayer:function(t){var e=L.Util.stamp(t);t.edited=!1,this._uneditedLayerProps.hasOwnProperty(e)&&(t instanceof L.Polyline||t instanceof L.Polygon||t instanceof L.Rectangle?t.setLatLngs(this._uneditedLayerProps[e].latlngs):t instanceof L.Circle?(t.setLatLng(this._uneditedLayerProps[e].latlng),t.setRadius(this._uneditedLayerProps[e].radius)):t instanceof L.Marker&&t.setLatLng(this._uneditedLayerProps[e].latlng),t.fire("revert-edited",{layer:t}))},_enableLayerEdit:function(t){var e,i,o=t.layer||t.target||t;this._backupLayer(o),this.options.poly&&(i=L.Util.extend({},this.options.poly),o.options.poly=i),this.options.selectedPathOptions&&(e=L.Util.extend({},this.options.selectedPathOptions),e.maintainColor&&(e.color=o.options.color,e.fillColor=o.options.fillColor),o.options.original=L.extend({},o.options),o.options.editing=e),o instanceof L.Marker?(o.editing&&o.editing.enable(),o.dragging.enable(),o.on("dragend",this._onMarkerDragEnd).on("touchmove",this._onTouchMove,this).on("MSPointerMove",this._onTouchMove,this).on("touchend",this._onMarkerDragEnd,this).on("MSPointerUp",this._onMarkerDragEnd,this)):o.editing.enable()},_disableLayerEdit:function(t){var e=t.layer||t.target||t;e.edited=!1,e.editing&&e.editing.disable(),delete e.options.editing,delete e.options.original,this._selectedPathOptions&&(e instanceof L.Marker?this._toggleMarkerHighlight(e):(e.setStyle(e.options.previousOptions),delete e.options.previousOptions)),e instanceof L.Marker?(e.dragging.disable(),e.off("dragend",this._onMarkerDragEnd,this).off("touchmove",this._onTouchMove,this).off("MSPointerMove",this._onTouchMove,this).off("touchend",this._onMarkerDragEnd,this).off("MSPointerUp",this._onMarkerDragEnd,this)):e.editing.disable()},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_onMarkerDragEnd:function(t){var e=t.target;e.edited=!0,this._map.fire(L.Draw.Event.EDITMOVE,{layer:e})},_onTouchMove:function(t){var e=t.originalEvent.changedTouches[0],i=this._map.mouseEventToLayerPoint(e),o=this._map.layerPointToLatLng(i);t.target.setLatLng(o)},_hasAvailableLayers:function(){return 0!==this._featureGroup.getLayers().length}}),L.EditToolbar.Delete=L.Handler.extend({statics:{TYPE:"remove"},includes:L.Mixin.Events,initialize:function(t,e){if(L.Handler.prototype.initialize.call(this,t),L.Util.setOptions(this,e),this._deletableLayers=this.options.featureGroup,!(this._deletableLayers instanceof L.FeatureGroup))throw new Error("options.featureGroup must be a L.FeatureGroup");this.type=L.EditToolbar.Delete.TYPE},enable:function(){!this._enabled&&this._hasAvailableLayers()&&(this.fire("enabled",{handler:this.type}),this._map.fire(L.Draw.Event.DELETESTART,{handler:this.type}),L.Handler.prototype.enable.call(this),this._deletableLayers.on("layeradd",this._enableLayerDelete,this).on("layerremove",this._disableLayerDelete,this))},disable:function(){this._enabled&&(this._deletableLayers.off("layeradd",this._enableLayerDelete,this).off("layerremove",this._disableLayerDelete,this),L.Handler.prototype.disable.call(this),this._map.fire(L.Draw.Event.DELETESTOP,{handler:this.type}),this.fire("disabled",{handler:this.type}))},addHooks:function(){var t=this._map;t&&(t.getContainer().focus(),this._deletableLayers.eachLayer(this._enableLayerDelete,this),this._deletedLayers=new L.LayerGroup,this._tooltip=new L.Draw.Tooltip(this._map),this._tooltip.updateContent({text:L.drawLocal.edit.handlers.remove.tooltip.text}),this._map.on("mousemove",this._onMouseMove,this))},removeHooks:function(){this._map&&(this._deletableLayers.eachLayer(this._disableLayerDelete,this),this._deletedLayers=null,this._tooltip.dispose(),this._tooltip=null,this._map.off("mousemove",this._onMouseMove,this))},revertLayers:function(){this._deletedLayers.eachLayer(function(t){this._deletableLayers.addLayer(t),t.fire("revert-deleted",{layer:t})},this)},save:function(){this._map.fire(L.Draw.Event.DELETED,{layers:this._deletedLayers})},removeAllLayers:function(){this._deletableLayers.eachLayer(function(t){this._removeLayer({layer:t})},this),this.save()},_enableLayerDelete:function(t){(t.layer||t.target||t).on("click",this._removeLayer,this)},_disableLayerDelete:function(t){var e=t.layer||t.target||t;e.off("click",this._removeLayer,this),this._deletedLayers.removeLayer(e)},_removeLayer:function(t){var e=t.layer||t.target||t;this._deletableLayers.removeLayer(e),this._deletedLayers.addLayer(e),e.fire("deleted")},_onMouseMove:function(t){this._tooltip.updatePosition(t.latlng)},_hasAvailableLayers:function(){return 0!==this._deletableLayers.getLayers().length}})}(window,document); \ No newline at end of file diff --git a/haitidata/static/img/loading-spinner.gif b/haitidata/static/img/loading-spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..a8f8a316569569dc269a867a738ac151d679877d GIT binary patch literal 56379 zcmdqIXIK+$+o(H}P6!ZM2-VO#1Ox;`480>DN)SXuZyZ~4~V>)q@4j{RpHD}ORGx!X*xgw;`zkmMxxwp6H?(V+6zP`U9yvJ;5V0&Co z$I3uifd~Zw0N6idZ(&8ycMWsh|JFJh8SLur=NU$D^E~4dctm9D?gJ5mkH--aJ5>v! zMX;Wyw~ujDi0APrOI!CSKX(lek)zrKtw_ztfZzbnFjqokfPY}9X5k9ThuWSG_Efa- z3=IkoarfLWF8ZgdU`@RcPuH-Z5Zj<2|9@UZEAODNpiu9iV1l0BUssJFW#Q`X6Zq$# z^k20sEHq65L&IDH-91h8kBIEIqu}G?p{a35M^#r@_n?xBu7Q%0fts$ql7>1_%}`fO zPf1TnnfTAT`a$mD0iJH3nC&JUiFeE5|@YjiJ`uyjy zDE-Iw{!!QCKaWNEKh{;;AB^IkzxTiV-TyqaA47jO{}sIZJO2uQ&%phd57`fHaPRl8 zpFh5T+x`0G^QVs=cDA?PzuVkcUt3*yyS%ixFwc1N`qkXa*_r7V&!0VgGBr8z_|f>- z=*Yw2p}~RvzTO`CgZuZo?{;-|+-YxXZE0?5Y^c9oS6fqERatSXysWf@R(!Ll@J7M) z{A+o+IoVm68CTP zo*wRQuH@4$r<|P}9qjE+p0GV`V{LWJ(!$)#)Wq1x&_G{LSBG>|`-s+IO%3%!YN{#+ zm6eE!3i5KYGSX6#65?W_BEp0NLV^PPe7txb95)vy2RoLHl?B6$W$jq}^k9@T#&UdYdFde! z{WXgxs+y_v-Fka|ee!11gF!PrQ-vFkN0~%N+s~pH9Re5vOl6u5D(UXJTtkQ$jb=vcB zGzxOqwN-U=4a64H;F`MaLcrj}jf)w~YT&qD!Q@MSY{O-w%2<2L+*^NM8q30T*~*qS zW?hAUTIl`uw?p_w9<})Kkv0BZ2>sAe)-X)tiVmSCQA|tVQ#NBnHKB&kdz?`lOEux) zg#=e+9#1g3-@C{Cl9*nSXfA#ZLwep63zz-=y5pw^aC(dl@BQ3kf%Nhi2lF{KPBJoP z63<7JA`x5{tdwywLgPKc)i$>HI+u8l63D~b11d1=U}LYnBn~Y#oYY?b>Tcx6bXzk zG6ADF?Qspfns_6;Ej;`%8u}qvK<}$bek>6CZ4wAWcfv>seC;HX$9?aCWNA}&z&Tmc zJNT4EX?|ap4-sxe4;EBq95Zja?iB}s-KZ-FqE}9gRH35#5y{T^tj(TW1ayd6{Ixw#9}mnbtm{w^%X>B zL0(T~?NkzHOu9ib8h{YV6c9{txd%;BEipiPHdU;k;_cj3%dddfN%r}Lw~pubalEe{4hD2f4S_7g&CUN4Iv&o2W9 zVF_4-7y(81=ztx$K>$*j<0Pdk5mnA9k1ADjC=;o@cQsowT z%ZK`9kbPCD1Z6q)uM?d|9GxzLtyUTD`=+WI->ZyY-W^43S78HoCL4iqre%d?dr4U7 zHCG+Ppp?MRN8%%qxzjJbANajFC&*|~guT`4Fk4<%1$I=$S;{vyUlcKes5C9Ej>t8S zcNsGa`ZsHAWRXkn6&k<4u~fi zu3%r|Lkoj`bHD|UfBiWrK@C>wXs#X?6F*@SBK&5?bUJNs>>@i_M$E0Oc`2*EXwr;n znp~#2o9og&$;OFyt?nwVh0Q4id6hhYaSwMNeQq8b6qSWc3c&Oba8slj+x&*FN139g+#{yiFi#5DpH5v6?zIeb-&t%2wktWE> zWz$k*mQ$^a*lcF{FxC^#8mE~|U(nNLl=5h$Xo7QLOl{1WM?QGodDY`qe*Ew&R_hK; z!HFl#_q&A+Co?Sh<{sgSM@w`cQyMSJaVO1F_3hlPCKycYahE9~EFFf2gk?}%ECn~@ zn>+M6N=x`Y(NA$LgXn}VO4;dYXZBZ-h^iV!jUhvpZQc%n-n`8#e{arglF-rACYmBb z*gWuD2|5@)PfLW7UQeI2n;2x_sB44!{`xX|bd{Ui{F$rckuawU>KABD-=b$g=7|Hi z4;Yhp@KoZ?%OFkR1|@rGyw`GVN$Hl*%5 z$a%#?n*tuf0o^!pjOL2AaHk-2+XsUw0}Hnr zR4jWeZ>_g|`R(eSx}6_Xm!P!b5rO!%)HIMWk(qTnrvG5zG?Xt5fe(T_2-&qLf;e)n zHZRml9dCpk>z;3}@Ejm}OU7)U&*eJ{9TntmbWtWP=iGPCQ5?e)+eQ|Q?;eXKGm}%u zeFz|8wNi^et~mUOEciYn5o$|&7RRI?9%AsYMA;Jnfn|gWY10h}Ku1#m2-<4ouqiVs zcC$^GE7)5v1!0(-)6TP-Y9e7ys1%=#X-~D9KUz~_TREk6=fF%&sjA`N7sAIHsqA(6 zkB)Xur*f-|Z%Y&Chgo^6zSvg*?*+Aer(Egb<6@NRH>EVi%hWsHNUr%XvBCL69mfHL zl>~?a0Kx$zLWDul=1zfd8&g1B{7&B8pUcFnont$kkU!J||L;-H)nPH~DW5;o)1uS! z7xmEgspm~hn7M+PWMbXypfKglX+W6Pqsy9`eE#t{k##@6z+f@}QmF{$i)pB&ed38T zfl#hqlgF~Ad2(X&#Ramm4H9XU>PTFnHD{i0SvjPt)xoXKlEbbkuBGh(^+tzamxgXR zKp(jl)v?bz<$4XH&m8z_I}j>E+5FELe!P7wb5q6hYucD475*uq)%A~uHv4$gV$0ur z`bAvq6IjIqkD*5|qs*L#6J&dGz2O$(ww2`k?0_T!4i+3NQpL<7r)l!hPw!5Qkj&os zIUP!}u_Uf;!Y?)}t2_4qz9X7<08}j$MLo|^MfM)UWARcXB31aYHckLC-lMZRAF5ROhNj)CdI0ju$9$x}rzPKF{Q; ze%MPVrXlW(_r$f1kW7>%@77r&p*hJoFL{{iJPwV?D7ay~s>L4W^8BWeH@!O?;_rEq z8O^}nO+dIR%2K8%ksL2yYqNGc2e%{|+Q2f(bO|;+tgHiXGV)l_q_^5EhzB&x5YIWk z!y4RGI=HcSAD@X}oQ^_oM((x>*_Z45wg~(A+=_^StNx)LI&52T??CT9_3&>ACnY(6 zJ0xeFuO^YPNahcd^s`5n63i3$>H)wPXA++*rN>TpN|yNfOKb|-aiZ_6j zs_AL$3j}lka88_5;8!yX7-qty#R2HkB-9?jKC$iz66*WiykT;_EP!vtNlMj6twTA& zHw7oIoy3uDq$lw^Y|PX-RaaqPcAe^#h*S4HKO%>S&-=$ zV=wjP>!F8ziviM@3Vk+y`fLkPRd!&Q5h`&01?}L0?}I=DhdlBc;DeEvHA{l zS_?-dZhK6tlWFa&E|Jyp=)G@yObB}q>XO>@xa^!b^MoAlr_b~tos**D^bHTjcdTjE zn=w_{_%qg@#4O!RON@Jv5RLx2Vjj|p?H$w9;o#lWTM~}9{8>ID7mr*kcVc?__>J75 z23GLF$DHV+Qzvl>x{w^d`md`11Tb2%N!fuW9F6jKT`kV|ZjEij3w(t;Ej-)-@ zOaW2mG-Ejm0Q7pxJ1)Kj?hv$$q18;Y;%c03Suoz2Y!A@(J_vSay1IWm?b=42LVi@Aywn8`>hY(N&^9AY zp0qs6D(@#EF@4QV3t^g(mFyy2oyiL^h56YDZ+)kaY7eV;Y)jQFygez*znhI!uAASn z&rE|n3rj@vCA{z=TZ)!HOW@n=o0*%m5qF`BV4`~rE@%$0VFKAqEvUB1!7upV=Cawx zgU7Crr^cz7>=zHtX`p`?8mhndn*yqyqeyqY$F(>5_rYf^4-Y(T?hSY?B}cNiX6;G| zOtJLrckv|7h*)tao;<ru^b%Wc$&;?v!T?5S7$3v? zKxAI*Yg|u9ie5dh+coLD8DhDW&NgPZHg3?6r5Ad?H-h)DCg!6~=MmyImAjH!|3SD# zyKyUN0b!fj;l`rEy)|v+*t9c38gPIXAh^1bsYiNmDl5zgpVloq?%#pZ9(ZDSzL(+2 z>UroK$LjI7Dd@b{A5X7cSYPQCaTB9)>VS+UmzKK;Uk7#SLOLmw#LQ{Ka1ExNi>U}1 z?5l&*yX;)=Z=RvAJp6d`vGQi`vZyL_;rl(_n~x0QkV`}Pp;Yl}cDzr=wG`;y<8=sy z3`ZJGd`QpsX|s%8CY9 zfMQ%X;}0OeOadF+Y93pgIK%hrT_bP%Z?Cq-A3v`?TQvQl$dsGU+nqmxI*{YKz8>#) z`7Shl{!@`kd{*1dyG%4UwF(L;kj;ZU&hHOE?x*M(IqX0lYMb2>``OnuCw_QAYxFcE z+xx(}v;!NR1gG4iAk0S~xMB(nO#)$J41k9a>S|>9A?wD^B`G7zeGK}S-Z2B1fl#33 z-+HHN73}Bq_xVfj)Ku>4ozq-qGBL7zS0#(H&XD#&XH_yI)A(3cPx$D&s0WP3NOPgQ z$E&STkP+(xel!x<>MeF)uUY1$0_1@2_{Lnhh`fq>_JCkuE zttS@6DdRl6jlO>dmHyM$xT$nNR8YZpZn&vz=qf=kMZl!F{9(4#{2rMU?2{SK#ER9o z3MS#HzL;{?!zdp|UBtAqjK`giA}|bs!#3E8jy@tRsnLW7z*F?d!!QhL8MDEG!)BfT z+ynH$s#wtGylN51*a(%5N4^_9RCcH4!P)Q+!C5cvGoIdKMv>+q@qD)2Z_fh0*Dkkw z0XxW^qH$CKc=_Dex9R>zG`(X}BD1ixsjB0(mh3yIrDu)s>MQStV<%Gc&o0#)H_Vb} z=|AFLsq-6cFov^bPe1DJ{J1hvW>#!@uj}*1bc^4cNB8c2-D31rdeKN!Dsv^f#02lB zhb6g$K2!GV&vQYLPIpo>SXKGDSrSm_|ZGfEs*sDFpX|K9x7-lPTZ zo4>2W9#|6P=gkQzE0f!f4TjX?Bky{X#wc&AnXrI;S?`q3-8Vt~(`F4XUBNISxb@=~ z>fC;4h+$bTCtv1tici1ljPy^*;pETAzpf3>Nr4y8O4O2yE)|znRm*YSy2xD9*d)rA zeLE1@+*!rj9>mf`FTmUje9$u#-`5|&GyEu`dsLA1@iS+hwtlAPbK2;sK*X!XLp&^u zJ4@?|FpkwA9Dd`YIOhGNz5GcIo4P|Gkx^sHQvUkHc2~1V7yQcbO?`?bbv6eO$aBPg3K+W3 zZ#h$h*C}{?@1qa}I(9Wi1s(SSp7GMhf8i`Q-TH$6ICRmHrOrkh!4S|)z7a~j=q=qU z131d7d3()fBA{@EqjD3fXO}WM&`4*7-}Itc3}e3*DYF$Pa6O~cTNH*0+B!hQ2gEm28Ex*IA9K0 zRVv;CnZ=p`g;|#1VnKckjm+)8e9Iv^-kU^WzhiA6kQl!-56ZGR0K&=n0A)ds)`Ut% zB+R>mP-Wi_^wg~7s$@j9No?NL>sk{8bE6cy9Z3ty(sgMq#>{xAZvhw52SV6oYc_Yx^VxiuO<0 z>_JJ^ZTDghZEp8rHyZb~rv5WQPBs|r?QPtXYx?*fBI`=WAW6b&!-l!eFAAitA?bkZ z(V377;&vJ>L&P7E2S?1CIzmSkLw65e;PG}!C9(S_33B}S#S_BJhc~7G%i{DxIJ-9w zERz4IweT}#SD;bkmEo8UK$e}aKW%z+Q<#GhBdYTftCtahtvCG=))#bvHm2ub6di+r zgngUvjVS}@nRJPC-IFy%>yb<<>zdyf7Ny5$m&HjF6*;`YfxUaPTVt|asI#$U%WI-o z`fg2KcE&g5p^%%>>K=m%5X9Jb;m-GGsZW5rg`C6)>5{>lI$Oa{A9WUvAE6y)s{YEc z`RPFP>yfRl3xMT^rlY>2ZPS+<^HqY}6fa4KLCAZWcfBRlUc&kloN3H*U zlN#~{`K1-(p0i~+iX}jjh3VedKFV~gi|nl3{q;6Tblnpd$%yzPD59d^^5SV(Ig-|+ z$p+3BPl{kpnRnNUGC0zDZ^E6}JJvL|sTa%&5iZwmeeh}I#4pWl`YVZVvP|M?Q(v(= z_2@kJAv^uLadSuInqJZ?OXILmfsEHmV$XRQvBA@YtImm6_Xvh#p=>5^mJHoR%}yx* zM+=WL@kf9{m)?f(RRMUO%z=b&Xi=PZ$xE(atuU2IS0Q^`Aew08a*CAMnMn$W6fM#9 zpg|%q$t~vYfK&t-!mUm^5QL>biAyda-s2q7u2d#20A#nKgZK;(qQ%H#14sybFaX!5 zK;YiS^k`w@k)(k9;jmb!p-DcE#K%LN3>UwXyJK_a^efLxyi^r!C?TGb=`WoVg1Zs~ zk0pf0Fp=Lz{EmENqXK|a(NhR6?2U+&a)61JRi#3wprnv4kCOptO{6T!nGP_K0HQdN z3ZEW@uz1s96$XD(gLgS_Xk;=y3YHTp{1-F)x8+EANHq*gxL@@Y!A@+Lu8XMUCRH-{ z66x|hMc@@%PE^4gm}R8pB}tI_O^eVf$`qx-ck+@R#Fv_^5NiS#yqb}jCCGU?MN}Xz z;{3HDb&xx|v@C}|s=yO+v-Ws;d4nK_b(K?1-JMX@#`0#3i_SntZ!+iI(tRrul+-uw z%8wh&MyNb+s(3U*=AFu7dFGWjyQqbEmHFl%f6&6xd)2oq89Zv?p3__36z4u%Wz~dk zGM*S^^v8Su(iBT7^*`Qo4$YxkT2Wad2tW_WbWM;%%Ap-<_AQ~ti>we1tv$nLitw9! zUE}V2u^z%LQ)|}zaXEHkYW)qtzwR)xmb`!8VT7%GaJctlJtZsH8^>CF1wBi22dnQu zq@);OwI`Y3T)~jhzvW2%0^myF&$lncPzXl#hgqYy(L&J@q|*=7RHjA8I?nP!j24wc zHkbTbSkCcZi&p2|0{SKE+&U?=vO{Pdkrs|$hIH47gUaje~7 zee~D`ZphXB1)$-gfsh?bU?jqi#y7a2@Oa4eh#d`aTdug}YHCK~k2KGPp(7c_i%~ez zT8p)@amgU`)6Q9VhQjz4mamNE6%#3@UoFtU2wO?o9;?u{qy_ZuH##2?t*{CKDon(3 zMVh%e662-3x3f(-)$gPj#|9wyfO@TGz!8aXFGC2gr5hEB?2br9ATm5pioxTCUIJt1 zgXgXqOYlBTAk<`-q?#IPj6j%RFP6jsyp;~fte&3%XI8h`w;|3xZ?Ah-RKG1a+CuL3jnCLl&Z&ApX!w3;lp?jB?v0p zkB2dah`OcJq-&-2$6xz8?X;3)kmO^yIjIteu;k$FB@ z4!K?`Gq%DW96EgXT~{hABT$!lTNc`7M>h(>e3@E_MdSpq+($m4X~qV*sg2Elp*4kXzSmiywZ@?}9)-61UOpWUgs@^jZl#*UC?SRjlX;e(G= zTIC+YR2W8KtQ+E7Dm)Oy+YsRN)Pyvro*9eY_=is-eM9E3vd=91qkSHjHW}CLX=TzJ zi?V8+`{1nqT}H$qPn$`{SBn1USfLt3frD>k@Ptfw*qh++Y3o!u%C)=nQN246jBXWZ z#@5snmy})+=o)1? z=U{X8R zG=P+1gvO215Qm0)SfjRM378U;k#R4}eG^L`D5ChcZEt_8aD0YtER<;|VIVh!31S?J z0^R%g3xpHfvmH;6SNl9!2uZ9^GW)evs(@RajCooqdwNI350jk~Bf|6C==cGJf|0O= zv&B3^`Eh$z$(4}_8~|vms>jmrYiR%zb-s_3)^`X(@)L3@?|;Uvup^Sj8Lon7q%cRL zQZu3&OTDl&OqysziR0C}?z_fV743w~KC5!_QWcBeJly`0k{G8lO&m?2LC_sQ+uY>c zu<&CFj~si!-{L8V?oDO=eqjmsFja(khU^V~L)j*h3A4r&)bPi3VqCnmm_kze+Dij* z`yS1#O&f*mZ?}}>tRCoxDV#dzpJiMs%>qR%+yD!B5v@q(w+1~~W>znzP^8gI`TlH| z=!_8#i7q1TBf6nKe_ktO^x?Oj%Lfl98O1z=!lbVRLnhuT5SC(vUe6bJi%|4kg*yf4 zdk2~3#T;W*!U%~J;`ODeGnj;Am}MX_`WOD@>r3{%FjHvo-g!Oa8N)WnD_Vh*l@HQd z^6H0i(iu;>H^+=LdQVHfN?xGnRT_9Gyiv49gig`#`WADQPsiW>7is3v{3Gthrzljxu)S42Gb;b$T3+h*^WV}6ju){WvxXj9u;h6ehHjL+PcF)mVEBizpN_93-5(ATL zZG6NngRK*zrY%r-)gK)&N$)bPH-%H`u! zM&aG6TDCeT#QAiKGNJ1vKO@G(yg~qt!vXNB^>f(!U=CfojFe?;D+juXO0l z4{I>3jz!9y3Zkl3AlMA>oHOB(aTXmCPr14qx5eO26=Pk-*kD{EOqiEdD40vcOd!``=FFuauVx7rCLJ zKPfL)L$|&{9tG|{_!{uhgTC<#6i;}Yirz5(!#96Bkx}9Ol$U=vk?oFX%Rf$}wzO~G ziHPG42%QgRy?ik~MV6n5Sui!z0KS|n_vk&n|8OF7d}2~GGh)Q)!lPtO)RYE2sUrMsJ;Bw zVAZU6LlgSWtYKRNR*K}}jLBm~ly9z4h@!FFJj^iESf*G{uVR&9_Fc5#8So(;couXE+ zSAjLdR`i0WJfMJ!por^6CiA4RTnFr7t%UVa&-PG`(3?n*&!sCD>{)i^^|yPSJFl|r z!mD!@5BVCvx$w_N8b(E@P{&>tKG zxReMpYO2D2%Vj`*Se)f)!=#SxTKZF4C>*-nldS`V)K?S>A8ZAQph){ek(?9lyxU}l zP91EIcyIW#Q)U-gjD`*WrsBU7r6d6@;2IF~|A?CV^^$#m5~Tu1qPOrpncY%xRS~1NG`jwnwEsD3R=m(fe@q%zb2wEFc`-`!v_(t`6HYMYDp@BZ zJ0~~qnxd&GBtPSL0j;no1u)@7qu_8>6oOX^D2w6aRzo&-bavhCzIXq@pQ!Q2u){f- znc>`+{y=nmv>cr0u{(z4i7OA^3w`XHg~g>9n%1({iV0=y)JDPU_s+MrNgth|Uyed| zoxme_d+T{d4ASH`4L00JF$B*u6#+DcdlX?VZ)hDu@2wL|Bud3)#oGk{yLg(=0M=t2vQYP~SXV89t=VJKvSED+2}k zYdy{!BJ*ov>MyWfUIQ^1#^5`v=3)~M+HNm1ilE_W{aWE~luxIpG9anA+1ubAx z7{Ze8D2%Ui1%sX?yA4oSExJbCYlZxO%8hrmZM zU6|>Gtyrp+2%0K*4oEesfQ!php z?FyGrYY#pwRd`s{A}?6vy1_*SMMic`Wzl zyDwjNQ*qqOI|d*c{dCl*F*6>5cKqfv+*s0=h!r(0{3Bcc5h4coctHmkN(D)3&)7lj zWq3e2#HC5HLjZ%(oL`VnMm_CU1vj;#nVh0L{Xc~$e<8+C*^-IUo2iKbn93-b*Iop4l;4w!Co$Pk=O(TR^UHZoC(^Z_D(R|5qXM z&xvJDx_qEjwSUJa&nr|+rh29Orr6zx)w%fKe9I#LUBZ#JW7>Pi4$FRd_n=QQgj2HV zo35cv@s&42R_njuN>9OL3I~fI2+;xdoFA$KwlP{<-d7;lFBHllPTOIq?d$DIR~C-e zK6;|Mz(hLyQl@cV%sVc!flrq!-BE7LzUfs!L{shne#5gZH{H&e0>q{n)AG%*_~)}^ z+ok+8XZ$k*EW|o}*BaD7#H*5edmuNk)CFXklW{5cYX zN9nB zp5ET@i+b8A<9|`T=!ajo_8PxjyZYyY{#{=L&9+UWA!hXv2sSezOLx}0L=y0kq*wf$rL$w6J$CO)l{ zhjIfkK3Cwszkjb*Rlxa`9x~>Xoj=Ho-$*+Yz{E_Myrx3ls^@e5H8#=rdhH5qz-85P z=ziBbmf4;HAC}yc^ixg~N>4(b2S9^;#$oPVq&UHW`g7uingpjpv5ye7%V9@!61UxDTv z^pMnv^mP4tkkf-;ji|cw1}J|Pas{UF0{(m62f|J}fCaGBx2L=;>nA94 ztg2MB0EMEAqJuIF(gcALb%{tBAuRLV(kFpPG6?}}Q*hcOfR{`MxvGIQ&a*0C^9~S-hCfR=^EMFb||6`}(6O#VcQW<&b`?FO@ zXtpQhTFLR7&NS`vQ>8UgRSp&E`#!3+HMz;DMfJMZ)wcU&zMx#?JC6JhhF$r+I{Up& zKb$;*9a9;7JT;^7)N4pJ-1GJ9qT&k#94ENG&ccPctO<=+So$m`w6^j6$4@4x_1(Cc zCtj4|o>)N)482+c=*F=qV=%d{J$^9 zXt8}QxbDacB%JvaVW8z$E8BHO>r8K#M)Q=D%Rr?2%kMR0FK@Xaj#qaZb|(C^7=br& zyUM~rvD8!-pZBa<9iQR*IDy*#%0{SgAuLmtCH(mPcTN8TtGe)3pjO zRPb6Lk;+n z0%fYe-Dw5a_jl#WN6kaDGDiEmcAFVn9Kf6Ho9^IcC?g_#L0vjlh>Gv!tCu8-@% z*&XH)FD0cx<*>AYp>JqdGpopH(4T4JVu&)^jtG14LC=hzAsFeGX3z_VR)V*2D*Dm= zBS$K?LpxRaqvOU6?qsxZNZz;F;dWCy5<6k&KL&Yjz~$dYfA*B@9C&(&7|ijknI0hR zd6xmE;ZKm`I+O%%!=Icyz<2`TjU;_Sn_m5Xt`~-y$%0tdokF})Jl*JNrev}chF~Jz zI(8Tt`KvL}PPiHw$V(5f*^9>;W#q1;IG5cy&Ox*khspf*pz7BcSLG&nL>S{B4;%GQ zLizUZgV_!mr1Ui{8)B#vG+0P<_ZDePv2J5 zoD;@H4L6jYrP=A0bJeHhHv%xFrRkX%ijfDxylrW0Q1MP@>~QhFPv)V3<=U$)W;;Z_M)Ox9P1Nd1S+nyatwLS4x7#o|RAI&VmlbNayWu?>}ob2DKwCS_|% zK3N*(D6u#%ot-B;HoFo%)9S1sk9lDWk$s$NnQWnR))`>*F*@PrpUW5O?^ayjJgIOo zopN2M!w&g*Kn*r78aF)loOQR;g1tS|TazfsPWsjsD4`RpKwH5cLs?y@*dvwdWq3W| zD1fKcQ_7b*g^iC8Y&cr$Fu%?5deFgHDETWhu3Mk!iYp3#R_k#>ccN?l85_;k z#qYL*Q{{S9Wu9=gkeCdc&-T=2YwmT`<$U|o`6tgkqBR;P`Od6r#;M1&)`)sY9Ji+1 zvq`o4_L@ya1qO1n>tsg;16xYHWn{DaSdmPe!81&3lCG`r~+Pe6Gu#*xPMP za6?z*N{n2DLMDLsz5vJINgzU<^aeKD0@_Z9GbdFup?qOr0UT^T@?^cR8Cbkexu>sA z`GSeb&h`QB?GDu7wK9Pl_5c+;O!;lD43^B&Skr$zgh5g(K-3FqI5u93_$eDv>(hC( znl3}2Q(mswNp_8l)H$-)@;^sM0WV)jR7 z4GI;d4!qQNq(Jxm=CN!mC@+x&ks(nb#$=G$o07rTNMSOj0bEri2*xU>-SOuF{&C0P zp_>)h|JJkP|KV8UNzwR&Gw;OSdhU}9T5$i_@!Kx?{p{UdDrS}6c;a;o=9jLgy;Y+t zOr%fOwQ-_R+tgqEAeEm>}=jW+jm(Z&_UYLo;+> z7K8djGgcofCRuSJ!%x8y-N`bmGShq4a$ZgC(+pRnW}Bb({#u)Uw`qIbOpEsu$3JUr zHw^!*wb4y(tFT5h)?ZzaAf39aszO;b>)7th_u=J@aQpls;Z8i8xGm<8D1&4Dlj)b- zna35Q`!v%m@P}sHb$;v)VRl%bJ5N-%tKdJgvR1aJ+`PynRR7?h@7)E#+t0XXl+z9h zTl}JVCJ&@zkMCr8}Zz3fmp;MV& z7&byT3_Op}gb77YeaojM&FYXYnFdnMlx7qN17$VK+-vOq9Kaa>J6zpUS^Ou-*e#Dq zsyvcn=x`Ijkk$nFF~K!n@m`{iuCS+$spJILRaXD_a&-Q!s9SFfU4U-%G@>QYdQp6i zi(@Fyot`VUC${c6f4W$7Y{e+rmGPGMj*Qj_44@kbzvq9MH5zkgto*KCyE$d!J^GV^ zYXi&Afrza`5vyI0#@Ue{Tg)4Iu639#pPkJfqDtXFpFB2gpcgwz-r>eSV7406^dF0( ziza<#8rI5Bg+(1yxuHKKHAD#ER7v9rW&P!=6FX|05&e-#W5^(O#EAYgbRcVru){qr zaIb}ztCs$e{fFk2AXU}f3WH}Si!*{aM(VKv(x>i{KC!=egbl+P9zODsL%WjfjNtaK zx(Y+IIz`+$e&DP)tGgY8!}!A0Q--q*=Lrl8E_D_FVr3dk=LlG#Q*2E=1*jHqytM`! z56Q=74@^44L`^yr{$6LAOqj@xbMPhU*hvewbl5TrOuPakjx7TkH!6+67feTp7gDZE zasertY83jLVHAb5b?{O>3+xW(_2Yja3ixO+yGU9)a|&?XU9G(Q7$&}s1ef-)CKry% zxVj9k>@T`$bFRK`MIeATzq@S!X#YEJm=y(Db%+kPB7yxcZ@?std(e*CG5E2+7u~vK z%{|tgoaeYC*$@>hB61i$R(mzI!gn^8%wiEcA9V3uy^0qWDRuryH6VV|1*{Tg`ziu# z@ERxTnTy0;@+P=Q?@8;HpQ&4yIT--CF4l zwh)WVvV0{s%Y_+=*V9cabRt$3+t|Z=+QYQ-J{{%{VcuT5UNf+DYJw>Xza%$k{`iEA z0_77~;waSf`jAg&@%r{a|RnqYSgyd>gEm71!PYMbd35xgo~=w9W? zHe;LX*3V*{KUWa6y>v^X7!>$LKX}{pajxBGb%zdbvIG~L#3egfj5_*@cg3=f?Lh(;l579<%KSnkI#oIOcN-GsPWp{d?nck% zwMya55fLvl(B>2Etye%{mHy6qpLbeSu-7&Mn<-s`V=8-?DhlkTm^f0309{%4Cj%7C z8+gW-n~I8i^Iuk)s153}x)+wudk| zCqbCt0H|lIz{cR`&Y!5(waO$}+OadL>6T{AH%#HqnvZ_J_J}s^b+JQFyyg|7%W|%| zoSS;deZasSkhpJR7CjYhkTc?qC)4s z!LaH8WW7)nwr$UiAk%(!F+0HpC?L;pDdmRHHU;CcPc2p?7}koy6nWj4#j2U7H zC~!Fvq~Z2HwPb){exKg}Y#nr@<#z4=B{s$w&&0*b%Eg4&e?7aY_~H-02r>VKEnjit z?|zGIjbM`8NPpRwpHJG&>}gPx=z>#*t7{d@zzBvpz9**t>K8PowMtJfhUq(Q&$fdG zr)&D~2~Y~pH_+i(VhUU|-c0dKb#-g~?ctUxZDtOvRL8c>U;;B5YfSKM^+htHW7a8F z)S71vzWc?V9!Zq*`hEDr+2r%ddOvjEoyqp$&*IBvEf-$Ibv9g7@rbxS6sWKh z;*>Q8zk`2iug?5{3wv#mxBry<)#vM`!Mx9|kKO#8`Z>=|>Gh|#ma_T0e3MPilBZ?w zedc59Z&BQPyN?@)=OX@e@^A4ir@C|dZ!w>E21Ne;Mi$x&BI^UsArJ|?Uce>)N+b*( zW6%@HafxUsTK_9V2O1F0AjO?yZ{$42p;97n7;0>_V9hG9T_`0Wz@S|6=VnlSJH_dX zY5F+cOgK~6Gz7-<)O{)YpnL|&!PEspf$UQZJ>wq~GjS~UA2w#Dza!Hv=zd{jv=8Uav? z`N|9aqzN&+3Wt4ChWyId(RASEqoy99sUo84Xp^-ez2Tw$Nr$AppC^awu2R2WJ6kLM zHtRB8+^b|yYK{wHd;Nf#uDICyHvPIRuJ6vCsoZmmL2!3s+`Qvu@FgLnPN&HZXqw_{1hU<*$4l}d+|6uMtgPL6X zw%;o~K!DIf=%ES-NbhO@=|!3}K|}9I5kv${=v{g*p%;-R&4!`(svuSA0-|Eaw%Bp4 zb>H`TXWr*|_Ph7Yp3Qe=NY3lL_?P4O9sKVHWUht}44ss);T~3tA3xVC-2atkRQ*v> zbc7r}89E}}N2V4q!?{5WB3Cq`CUl#B2GMHB8AXlju7%6fsh#L)q~o|Ov-5NkNv$$< zP|5AIpqGwXL3W|P+G!k5q@Sc)WKIVXeuznbUOXWk(cdYTS3@*IOc!fDGr&I9gj*>P zLMFfEFvH-NZHc6pzPY5Y3^X3`!AndCa}^sVvVA+o*+< zT9!3i8fA_Eq){wau1SMhs~yrDza88=+hfeENd)%ZJZH>+A&X3QK(CkI9iL|DT74={ zAnyEXI>#(cT)KgqEhTybLZ~Do zjfQf}JF@yyf>#p3MYE>s6kI87FBS1_YC#hxA0g%CvaN)L(g_^^ISmB^QD^&s!M%fPiV_ITfcp0h4lmd(^2?N z14i|s@|gY1TBV2-N7ngKr(hCxoB7j1nNBYW({DC>G%Ma*DzD)yXd$7MD z()FR`9$Fh`LF2D(A*`Dd?=+7xXrqWhZ2n21EljfmqDlRnU0ob%a!~L(~@tQpAxh&g&p+wuE@vh zGIj;QURuT>LHlanE60J+96VqNv$a;)wU3t}kHHhMIYVrTxXQI4kZ!)e8A|69t>9^6 z1$%LDXc(bP7`dk>_)?81K}_r1Q%UdPX*I&ZvbMGf@h$G|{wCoA{b$cU$qhgEq+Z*P?CV z;TYS20OVJu9?0&8+^m-i!fJunn0u`!Q6xl@y_puQjGg6Q`v|H&J?t-MW6!9b1G{^V z78Y+OEry*IJ%$}#)Xr6f(eF-*(xD{_J}ojYO#3-cj~OVLWcO$Y5>fHm*J0-W%)w_bYo`te1eaA z!ODfIYf+zduf{c`JrD)D)oqDd0bml4OD$WDB!3TEXl@Dd#2&r#BG{L|x{l-GAoHeI z{uJav2mn@!vrqx@witi|EBYm^te|MR*S0nA(gWa^Ll-(^cA*UzDf)oD?=vYip?6SpC_3Uq^x8T)sZ6FdCW#ROh1>cqr1^| zj!DCLwD9Y1b@Q6$DULrmH$5UIA*`*?qI`%ZtU|ZKpg8OlI2}}!H&06@1D5rK_qL*B ze9=60;!^K0HqVSeLRKh`He7({2H%Q+HM!2F%Z#CiJ8YJ(n%4U+B7eGY%{H@Sj3^E( zgzGtN>KGz&vD2NcrzQ)a-l_aFazgZMo%Y;3+Whwh)a--GhL+47lhl+e2f_C{YHxL& z8|o?^z1C`F?JT1A4mnPz58 z0TR!Mn_q&#But$xF-E`HHix-e*?&!3{ObO(Im+)O)8O;}+8pUER8coa6mBOQq%^T8 z2t2@ELgXbON`nkAyJc?Z>5DmBD+#+5RT5q+rD-Mn0O$%F&?w@(y0k~FRnQ{&5BU>^ zJb0-yfXW0PX?$JK$grhntk{=y_}Ybd7x~tRt|hyy-cPSjef|b24`ZE}s}OxAFJO_w zs_29fy6?qAI4%_w-9^M%?CuPmTqs!+WdRQAqdKqHb4k%H$vQXE&xv$4qTb8)_|hLQ zDm8_KpqDh8Y_lFV(eG}=YPHx&s5PUICxamr8`Q%?6#6oM0NppQfcO2fmgCV+gwwv# z45=q4Mc=gDG5tdVOEELiEs;Ii6+92?9e=rMF!O%%upXW_fsBFr(IVh)OT&iCSI z5Q!un$1*u_`0`Wr*nBp0)4mSP%e`7_DXe;{%#F7erHp|vMrxT-*Ca~>v$9f$BW&F0 zlasUfX4Q0_ z`?*-g4H|k#IF4({N=$I;R1C{99o@ye8o>Vwfjg9qo^hapD?|*CTXAgobghb;_Ie~XJh5bWy&c32`X?hO6_a=y_3qv(yrgjJro)Ox|kAyqKjRk zG|(ma%tW9Bh`Cs9FCG~a)(Z9ev;+BO+s00j=a&Bk7(lG#@@Cp9o`mP?L?u2G7R{#P zDz>r6Hnp6FT`1qG7iYg}r*zZ23Fg=D4z)FiE_r~fh(gtKo&63b@({sRNhMGLf6~nd zSL^lH_7Q&s5xX`ZAl~UaPmlIM*!i++Z-Q2ltDzPwF5nh1M+%bWqz#k&mM9B${X8ft zYK&JH#3|%$G?qZgvRS)>?iauBbsapyme4M<;zPK$_M}3Y5{XdoriYTdpO`n7$GjnV zS409d;LcVtGGzmYTp8>ocj$`YR~hy}tE1yh$I7-un^!I--aTJnXo{2xtD$T!gJUrP zdFlc!dTz;-UHT=A_80lwi{Sj{==W71m!!5;_t6~W`b=_D8TiH_V3DsT9`DqDV|=N`j=}P zM+R6z140JE5ekAXz?9)_awSiBg;0OfS*-uZN+sVk!K^EWA2-`-JNZchXy%LTT_0-u zzB)3BdO2|+XY2diL9l5V5B%(>h5%U-)IQXeTBH1Q6RqPP)9=xLYedBp zA^miZVIlxTmq8pVMIb^g$)U`76tKZE5iUUhGm8R$mUAxnDvgxRN3V?Eg)J{D{nLs? z3%CMtfbHL+Q|k?*2?74W-G9;f&Nw-|JEoLs=~6wqdbwrR>OxdbO;&9_RZ;jasq&wq zQ;#=pz+u{0H6yIHdqrrEdhEyjMVKEfh0b5^hH*Ug46V< z*iv~k2CsOUmRu{%RM&8~(Vc~A-)?K~=u`x{9_nYwf>o#r7Sce#BM;ia8^bP0e=sCQ z6$>jogQ1!5%zs{hVPAGZyb#pDaBVox8!7WJ?>p1I|MdCyR_J>y=tt?^A7EPU;X8a( z`?f1oG|eAEQVe?*d|1v;>2n=>fK9drIpbtXIwTK6B_`@Fj;hb^d&S@`)TjeU`|>!A zWEcVkACJ!9*Nie|W)?2W(1=v>S&G$Ek>1~Bj5Wyod6m}Xf~DYAEjS^#eHdmecQg96 zflDvrHOZ0v+G(k{m=v#|_LM@HxPzp^yZzO%&Zd`7ZhZvv8euQY_UbbTUb1(S*c?h@ zWQaGq-?}}P*Xe=7xznu>LC{e9M>_KQ$`@HPL7`h2BqW;vw#)y!;5wYf>zYo{#jiyJ zQ{lHAQx1rJ!;kfK6uVKBt>K=}NF=2v5UTRD=0eA`j7VA3$+P~&t?|Sx^nc1x8tO3z zQ;+*E5M#cE{+NIn_4oeWd$1|5l|ZvAjsTru-X8^p|*)dejrN5C5evPRC97 z-J+H5(b1~8f+JCgIO=qUNb=*8isD0%5)u<)J(xL?(uvZv_?*+UDZaTyrx^=8*mV8L zRn;}R+_iV8N8QxyW^4s->FDfIriW)dzIET4raOZo&n|#u6{KTd)Cb1j;>5?TcUHYYz=bxe;+*Lml{P~OX;B5tm zb+P+1&hFMU-a%KV7oLH-1#pGk2L^D+%O|efU|#jDQYN}+mXnu!lEgQM&QEJ9D&B{$ zj^@c-o*cg)yGeEGC-E9TXxn>QC6JRtgW$w zo#wK-zSDnXeh~$46&*zcJ^bhv|EpQ$n09XEX&YJp9 zEiK3YzS4cxR3gKaS|?Q`Y>z%$JRk5UaI=O~m+<$MUJ`oomyUc@ER3h!RF))ugSRmB z?a`w%=bsoz-5^B@BG1IC(qkiR8PpZjkx3DZ8QD1|u-qW}g5r`=a#?vr287@MRLVeH z86umqxol{g+Ij1xxX}e68Ci^C)i$-g&jVw@*%gt;_QE{fCdAJ_`(5A--Fa)D(oG4 z{@C3NCJ`o4DJBP;r2P{S1uR~-j>}sO>yV@` z_uCxJ4hU$p_YcXf6pqW(tA0e>?nN1OHJ=WTWr;H&u(xasrM)pv{PRjH*d(muL+_rr z>x{u3;?e7xx9G9)SKT!}dj-SJZRoq}e&M;w>htmv^ub6Z>H*^RNkIKbnGTuAHKaf! zfnkUpBzm(g5ShkuU4X#s7(2nhN6a0OY+7%p&d?ESvPpN6hdX{xH`$CNbz(cW+I zRB_^n4>QfA$3gtnKdmMAr+u2TnnI1{c}I6Y4U_#IikEb8OD}X)(8q>Py}R*NmJbn`Y6BdI9EqiNW83L?wXem4(n5J}-*A}%&i(Yk8`5N#4+OHhz&lB!=})$A zpy?841fc&X%#8m+;m=vsN5!e|Xona{u~9ta%g4K=X8qq*8rSe{_|sKR-c~&HADQ5moY#_z7|b(PGkZ347`}&R92&Ut@1KmX>F4{7IWt^3on?n z`GGWNRyGRDiL<}-8F*!9o35Je7;2xh@T%21G=LCV5`d9zHysr=5ynT20 z`|?U7kSzCjFwAW1pPN{xGXVeeSfx8sY?fO|tUWP_lMRVL0MlItMseB7b{)Yo+BOO3 zpyD56tIPCJCh83K@9A4(vg&$H zLw5x)u*fiy+C(gaiv)WIpjp?F%Y$+E7?4S7JYT{gTlL_|;Ge>CDhjDd91bs$4trHT zT+ALR-I7`&bt;d%8{R&X=|VBGCvnB~tZnpdOCzTnpK*StOOW)nyFzlTj=8mbk-F07 ze{@vLV_I-N-BGm;JUm~DCw6N^p)$8KrAKVB#Psj!ghg>?ycS*x1Sj$wbJL5Wa}bEp zAu3VUN|XX{*>q|svxV$}u5z00I$C}w$(7523Mixmp6X#k07{H0Pm-Uf&J2`yYBy8W zzwB<_#>2(7(#~N#x6<`Q>b5eB6!*3=O?AY!vn=a_K@b#DWDCaH*$fuYh*dPWW+tHY!I~ydK19hh^(JrmbP6DpTj5!`o4%Qs zDr)U4*oKdEE=~pFoXd!McFulx4y*(%QV$ais)30^K}vp#S*gfh)tkgSgxF0De#c0`d6zqSIf9L;%4ro&iI>ze zYostbFFNGPLIm5{C8a4TXnDgV(BbHfr6MUWytgoBVPBxL*yzwNC3$iS=mzl;y@YAD zYA&06<|kw&R5j6pD`&i%P7S|N7?ZOY^^8<^P{j5dPGebFuLJ z_IqU^bgrjSDG0yi=FEB3HOP{Bi)c5nSyfGI7Q>y6u)Fq6Ds=Z+Svq?XsM2#qcy|rv za_@vA=anK^`jKjm$pxzJd{FN3TrO&H(+s^Lk6p{dZoN_2apO{i?dLv!dnCQ=Mx7IW z&XHK5ntA%q$U(|+5Su!U-pDuj#dORL{xOU_8AwCSJcT>W_(k|^t(y)}=Y+?;{YtTw zOs7uhTL#z)nHaG`JVN-#X(6vsT{xp4aMV z`yK0x+&GlK^Jf$Zgf73yGekPS*lBZE>u|D`VdbF}&Cj0&8FehFn~G_!Ud&D}b#(VK zYz$hPn?W?S`K@^VO=h!1U;kP=k(LtRCDyAvPbINm3Hb8Cl+tWoKU;E;!|$sVZx4yzls()$ls$eeJ&;?pOC777UIP2R zD{juMyXk!6HSO+cm6rm4JoQ~!-Dqmb1z?Px zuXb%Mk$h1N?TQ+m2eUR3EVYA&m%VA8B}LWS4kO=PMI06O)n42h14H*@D~Ua-xQ2m; zVxLA$LFjjf63ho9rgv3g?%{_jaz@sr!;z0P`mRFCibO_a`@z$FQp-3Q%y{o1qZZ|v zecxjPr-27MjChv-oJD%vfmq{~*-jUN_(yXBI?=6PHCa1 zt&QKdmDcaSdgrimiSvNM{!TR$w0r3%m*DsCjSr1!*e?RUz%LA^>-nZ%UskTY`}K7# z?$jSgTe;`0Z=bb$cR%M`0i)&TFsFBCXe>2K`{NfM{(SUnN}n+}<);OW<++?kfMV74 zMe{_^ds)0N(-o4EDlbV2rlHH$DBpdD@E(d&Z{%*20IwyS_Y!0Ui{2JuA2--(Ft28K zi@SC$9c?X8!+#8OzST0ur{W>1%2U5V68KOiZMA@XsNo_~wYe&J28rPBfW(Um#oyuN zfB3YxnMNu(#qi9l6Q3O&uh!?4^VHXJ9rJpvYxRR#<0u|#@`AvB*Oqwlo`T{N<8|L{Puq!IE4bhi!q4y`*DY%6 zI8Z0(yUbN3^%kz=5SyZ8FDg9S4Npr8ZpyL7xzVijrPV~7&onS~rK_JWxD)d(k@v7_ z(MIu%N5LJq@s0D}Y;2+01w?g}%=vH6`eIVAN2$H7c!iFnf!Kqid3H9dFb67;7FHGR zZ$FkZRbB`C&G&h1vD6~^uY>dFj-%Y(_Em3s;M=_7oo~{njE&lDj=z8ZF&UqqdiHBw zYesu)#Yn@Ryp8G;#x9GhW9ahFb72Th>^;u0d_Lv$w0rC}C>*x%C7b(qu+6+P$J-lq z7&lLF?6zd(72J+lrlZLR2d0`6@wui$y3d6C*v7Vy1 z{T_dGlau{y4*o7+OH>>hAU(jW-#vNgaoTJB^i{<<_-;XJS69spzr;K=9){GpJ#Wj1 zpNElrCfr)A?AiwLt)Fe~PEFe~OPkW!BaVDBxo^Px9sssKWhF)jd z5%f(Fo&o5=6wOX;sJ^{_ET?z(lmwcr%V{k$8eSnz<)V3Aasts3z-~Ehb(%*PXb*=e zAm%gxCi>h;FVOi^&FqS6gpx>n|KhFVcI{X%?TpG5$6GW*+}*TTzWJ0fPa5V2Iz~20 zs_RZx;w#AKz3CQ^n>wC9M6-dQ3X?Zz)RlYq!PLCGvmJeCm@U?+Ik^j~UiTic091Ak zH(Q>3;e@<@u2zfRz$}?owypu9P2Z{?`C^2e>CoRJ#2+x)Vo{U65$&2w?z-e_)|$C( zE~gNDohEepeJT;RBcq}*w(=C8cVsQ1kR&1D?D>&nDkG<4gQB05IGa^}HCEi!)6n6= zy>j-6T^+UWGjg<`e=H4Y0dYVG@cFyJbMd^HYkrp|s9VH2nCb!#fxdhA=8$Uf?UF;^ zE~O1j2$!a^1D^3K)2f#k_R4rl2*pD}jNl&epw_U7Gky#HdnZVDp5E+Ym&AIU11t z0Ij`uHs?zc5Devt%sQs5E%HKns*xIe6b9OOoN{~=JK9oFhr6;vFbamN5bfUWtSKww z;yy1lJx3jDX!FQN-$dnmkjvp0N=AxQG~)#Q)DCg{@Jgl$_WK?WevX_Io~bZ15pbYZ z1vJGb6_|uXxpXLX)DntBRN|NrHh@1GjMqfd(GK@R%X_q9Y3VPqqVMU5p|5`&T-esY zH5EKoYdqq)7lJ?pM)f6X71<20_w&a3ql?(}UtTv_$>wSk(fbF@kcR3DkN_P2eJ~}? zgVOB#-4%|%52ge9?&r0WYI;)_rcu9bfg{`k1=AkprYctIBvH!m&g_yVD_APGO6VTq zwA9)Q9{t!ikxILtN64L&AHPAD#@F=db&MgGP)HUb79`>_V8-Q@%j;y8=N=`EW|O;u zK}vcc{p&C&LkJ7csXF;;(iNtXGx7}aB^X4Pj6RIgKX58yaDyk9SXnlUd4n=+bY2{9Fclh&oXal2Qpi zfp}<~EzHh2Elp}RWp-0@nPB?lmRG|?CmPXEhGtIzzX~BLJI@j}(KzG!)xtf5$V8!X z(7unRseY#urXb$PJg|mNS10q5<^GU>sW3QiLtjiHA)4M)fVYLnZ^#1TxEVIK=6F8y zDz7XK85YTED`i#)6%AUakm$S?glD9ulAilStZU|TVd=6YNpT(GkE&@9{Sg)Dk~kf} zRdu`k|Ez}oce|VqpZSehH{quuCiTZ_Lw>l}KUw2(>6O&wNox+fD^xg^1G!;xOaH}+ zXT+55>U;Ny$S8qZL=%?i#BdOADtoLwJ)D;_DfcRnT3A$E%#~N>T~Jb0>{(uC%~gH3 zu(rNMAKKVRZtc>6w0GS9i<$5b`smd3%p&Aq$PR^ryz#3TsOmnaofHee~%psy14{XFs zbuP3i2MQdT%|p_Q)sJ&n*_f*;l21C17U|!s{_{|%h{>9%QhXFGk3n1QOod*i_%BDi zV?NDh4lj)f&#yc~)N*6|v7TQ=XTiaW*UqkbP0uH&< zWKJ>Azdewoyk^(M++wADhd!Jy(HKyLe=o$b2c{sQV|If~Yuq?u;S~@6=x=Gz-ZJl^ zgR2yh#R+C+7k?pKFoU@iWMObU&|-U4#=qhx{m+I7lySNz5uGNyS88x@K|XuQM)^rbep+nqXgtB*=!YlikY=1 z`~qzbPq=M&=0dn>VAW(e*59=!`XdZ4s7fEM^fJoFPv14(f=bWHEM1J-RI{G9u09(v z(Ro63a;8&*5NGNC62iLR47&aal%{cZH`%r{m;pRX0hvq=tq7(B%JhJES?w+x7Q6W4 z!8BN+#)-hmYrF<&I$;hqAGL?f!rlcB-MP`dQS(~6b3sYsRQqU{L)wSCI~j$a6#`eA z4ie(HEpOH)LM0<+FWq?A(w=AVvPMdVjt{XmZ!Xcf3ZnEx+$(Rp8$SO9b292^=gzzC zpI=_TdjcRN4k=J}pTmD5CUqs=_p@62ydOyV=iCtmU;t%6=Ra>h4;9fYc{az9kib99w|MIO1dFdz+?`zDTz^bafpl#E6%XGTgeviGNs=M{{NJ ze(8bf>>Mc-HhxI!!X4?pu$NEIopkh;b2~dUeVju>=)0T$sX~hf+k?nOb9D* zfl01cOaVZZi&VdIe%bn3f4l(AMt_x_jpGR#iMgY~Qe`B(`|7rCx&b?RO>~%G8qIgd zX@Er`#kK_gZ6hM@DULkIgAo_MzN>?PiE-)@u8JNC3n$o1{dv*c#+~IL3uWJG=Zuh6 zdYtcvb)!^H4%k~g3?%o^({^(vhy{U27A(xDP~7v{Q8kHtapCV?+sW#!FVs_n$J&|g z7$wynr_|H<+Mjp1Rs2*>$L1gZascYje;=Lo=iANMNcH!>oO34e)3t3?8uCpx2OF|) z!lJSpjvh#dPwkfIta-`}+8~6Cn_ej&bljZ!D$PnnaPWdcV&fF9MYCcR`oA_dEq^WN{z-)S_uEZ~lZMWphi&36h+%e-$89bh z!o0LZkIY$(^G2*&W0a&}e`OQ-YS5@G&@ z`}h}I`7TKV3S~u$QpntHFHX`6pwHqg3&1bA#HYCoB$c4h*DZma#kiXbzHO(np4@gh zbMXDA4F3ynG=XK!NV`RmvU33;FhjZCczTW;g*2TnfWvuhh_{*@372hH)$z-44x!-7 zAk3&6yPb`sKgE~pz!`4|iw`YyxN&eI#lCBOW(fAOr$^9_%O6a}!p75=T`TNOdv4NG zZEu$i6RU^Z9|p(TI(5p3*(P>f_q4m>XIr=B_uXbh*e?@^&AVd9sUuuqRWitxTJp=P z+KaL-cEZ1$bidHUd;d$7e@5{)F6R=QS04GPw)kFUmX+6DRi0b@UUgB({$33^R(!v< zGRJGbuC}^%!V+QbyfOn&#*(n&ziXz>tn zM4>UiXzZB}XIZ`6gge*V3m>lhDcNN=ua~>0(Nqg={;R$Bim&rm72-0!eE4zdZAO*~ zoIE?!grm8Y0k=+Xev|aV3gbbV4&ZI*A_Dj{P9o%7F+!{BdHW5_7L~ zT9i&Tx^|YG1fb82P6K6AV+CfcqtALsBGVOmWvFGFlQl9EsdC)RPbIhDv!I0L)H$ja*)8Tgvlkb)QRaQ+ z9~e#dQs-wP^J+YnVy&*+jCSh0?s5Z!=)hI=g?1zP*h2kF#RXqvR~*&zUPLSg>ofX? zpR%~GUiWJGdX|p%>f_Xp4X-zex2oGCG9I*aCVH?AeBz@OGuz5PR^pqh%y-Qk7~nd~ zBoL$P-{6m?1k&!u%~1&nB2M;icxpAx_*3&(0mJ;-acca@p^dSnI+_wK^{+X2Dknvm znEacjkUoK4 ziSV$I^JzfJ54u3GE8U*NqWn1(E+K=o{8yLgid13%sCvRvIH&ynF8nm?Fgrb5ir?Cc zZBV9`oy9T@B+W%cE<|ZDVYT7RS)L%+CiW`33$_|^k%Qx0nimtjG6nD;f`czA{A}4d z;X$9OLw_1JxPK{B-4XMZ95b z`&KLYtWz*DTuj9y~i-=Fs6w>3wX98UweIb`P%7$|toT6qYspfweJ%0P`$iJ+3pBVaNp_dJ|f;E^$r-FRr#rdk4lyvZ_b< z)5eD^WbcRTZ|yhM+hSWGPx@mn_fdwDv(3|WKTPYM`t|9V^_5?r7u>1CG2K2K5W6obO_pfo~6zdKy`_d8Wx(~q~n zn3XITtv^xx((7wA&ZWVrnZ#oaTL5I*Hn|zjKM2xz1B8`nfv`_mbA`5pVJ+O;SdZun z{7i!PEk^h*L%T%?R2DN80zDY>P)v1Q=)Fxvmrz&s2pf`TAj5#mbwkBvYZ_hpQNY9K zm1?81IZfy@Cb3}t(K%PQ%-}sCC7ZHNzlaZ1)u`a{ex^s^ znw;&z`XZ*Y@R6&%a?5PS1+MG9#CR&L>pI+bsVdD7SDi|5gX_E{hwd1a$RzYZ92M7d znCXf*;NKD&9hwT(pJ~XQ#!pq;526{f1SyRW6!zJs3MCg#sQZdc1+S9J4mV0PeTg#q z@gIH44)aEL&YfYBKfZTChFHsrR((uLbu8mMa@ST>1^a)w2c1B9d~y<(a|mHAg}H*1 z^$kvEemQW)xYi+uY3^s}Yt{1M_OZ#FmSy4>Xt@-MOtooYY2854(=6UIclW`IkLAO} zC-!K?_vtD}O)6;BymU)xjT#rP-Z=V1St}5m-ybol7LNC}T7K1BD-adFw&jJg9G!Z@ z^ySV8AkVT%cdowU12o|C{Abp&^q`QPuz@??s0D-G{Wlhk*9(_Foq1?|BLNduI`EpV zy4E(fC4@dpdr*7q-sB(ZR@c|;H9fDhS_@aQ(6ty}9Of2VG{~!OdS*H8`;;wrky)e@ zcnovQZzl8cTqCUX9PWkW+{n4mI-y>JN=S0iN4=UQJTNA@Tn|j3?N^O_MD%Ymn!c#^ zv13Ct{Z5jwM(f2TobVH?#Z%ilfvW{s(-%s!HG|{8FHKEBRWbgkt3!BIcpQ6R9VEN< z5A$^)5iG~+Wi37tqk$L5JVQeRO8~Q7tE=s0E_4${r1`qeC9q9-ODaoocYnyc7%(Jg z0J+Z%*{Yq^cj8QZpSs<<8c@~#H-e!jJf_#tZ;XW9nR%>89%@b*aq6N~cENXral zf}W1%ENfc7&1^tWd1=f*2Sd;Mi;l<&2iS`S?j+q%&3M;14tFKhb$58;|TmL)p~SXL#tfE^~sk zbFXEy7~R&^$@H6P6yYkf9FNTYAb_TJFdzMyg^q51?xo~YUiC?FKb==;Art#GxWBh4 z=cD;^`{Hz%r&VVhHDe&Qp@gEq9(*({6N*awmY+oeV6K7`*7@WlQGnkYd?(W4MB+cR zTxS7VDr1y``fa`VGgLPRugNyss+W~fTMWyZj`loVta-O3x>MVo$a1 z-2!HVOGXzo~|hv66HdcvBMrQZzz9NXhhK{i-2xZr^;)Fn?t204+Ne!K{bd?X&} z9IxzcnZkoeS7E=DoPtQpQ)XvP;!9yLIpGIDL7bsYpHSQkplHRZLc*uFSE^iVvTruqv$cGHrQ|?JBab3Z<}2`Mgy` zFwhg|SWD!Wq0Ny19hnJaPHX;8H-!cDBg+9;>POz9e&jwaB$x~?QTnZXx$I5FW2*gD zDz2U9pXCTBA3rzj6M|~5_~h!L9F@}x5_uDbeSUabRuBaS4aa`zHI>+S3GMs*!Xsxbo6x54&w97#v}(O&#=sl5$5o0vyvRomU&e{P)c$N1)F)r&9xz4|gZ1gU1)zwwGTW7i)u=lh#w^qUeTwWF-^Iv$E5bn-+Fl zMyY|Lwr)}US_PhwQeTtRCHjhWVru`ugQ1`d*~lNa=%{}OmT=4ZVpO6a0B1uY+2E1V zK5{2OoJrm}K71V5tU|tGW%h&!8x}u@DtQk2E4MH~=2b2darNv`T#zt1)&~z7D)^vC zOrMSV;3-J&7|+0@HiFKU?wOF@2?&~duBee04B3#{(%lu_SELR%M+0Cqprp6*sM^ye zbhHI_+diONs_V&xDF%9AelI)S)&*zsl^iu5vD|6LB28}6zgeAppK57$l^)_n~P(y+rNWpQUEY?m>NkvRC`sNO`>$6;Y$@Yk>*)*@2ptilzX(> znBPMSP_s0tarsSr=goJq%5RC+SggZiVvP_kq$F5e>TPvcQZQ3mPHtX)0d;ElmqM`?Eg)m)b?;F&~b$csCS8C#hwuXgJ> zZygZX4jT}kvc5Lb(rqJ-Xt@8AS@gfbX#Vc27i~@o5b&L8COXH8Q6bFR^x4v<(F<$l zI^%^}(CLOc0X$WQ3LWkd8=yQ zH6Y)W4=+r+b3;vWY#cc1`0rhOY&I*?^c)HLH67j)rRh`Uh+vR*ceLV_mM-VGQdUg@ zlJ721VD%vXg?NUB>dC~9j?D%3>O1c@?FAWnIiaL>SCZ?*Ds=;Q$5k&E26X8VGruEu zIn$|=<7H)YW9elWbH+U&r7Z!g2k}_{QUY~VG$n$K;O?)ALwD+4m4tuUdsRw=i|>-7 zF;t9Zyh#0Sd9vdEZbh2T|DC>C{KP+%-T(7LuJu>$`u{tO;eQ#j5%2h)kPX;>8M0B` zH$gyCLpD&i$_D}53r1mtj_wHHOAKXG@jx7DD5C^Va|v~}!8eM$^UW-K(yY&hxH;BmD2MvPE` z_{o(1fP_fGxD*tO$8u;vq7~cxq#X6+5Qsv}OmPKSyvdB4Po$Kj5N_f(#*iv6`HcDP zH8WD64iBL<4s%qmS;t+By2sP`Y4X(F)edN=pF-U;8Xb48e(}>;=~wj10}XKlfgp`2 zeR@&*>4#qLxj+FdW5efMNNxITQl4vF0~I@>@H2dwLt0Lhr+3h`Ih6ziV%Fx5-Y;AH zO9u?}qEBjKUpP6^bD(7GEC%UmAoQtOxii zeFTO=C8nO9Xl-xfV^i)CLp0tfj|!R1ky`9q>1s;oct8P+UXmZ>qN-)j0;Zn=)8QN(PtG= zT>gtYMdy%*)owoR9KxUr`)wpR5&od(ydE=Ut0>f7^p!qj<^DvHukF#ZNd0YXW(PyZ zoOEw@ksNoUYF8G5T57d+88h7IYa$G;?93P?H;UkAYMpQcDKtF#YL)k6{grLts6${O z-+YxP7)CkMimy{b{TL(;wn|gY^u`qLW7LC7j+fgcaC8!|GoQY4cFH~bUI-g_LD{?5 zk}(EG3!UuUdWGh@bgtq| z^?mZtG*IB6JT6sDh8!25uWL{EYi!RvmlyD6_(c2<41JP7fXujbLz4D`Q^}*yVdXK? z0Ol_p(x3P=rqX;_6h+$x`t@s?+nC3z55?Klbt5z<^h711#;ZJ2A}4JhHGrS%;!k!U z5sE*f_%5l12Xh3x!hgA@eExC&#F>?1?HQZzMX;9^%D%CcT7g}RQeoc9QdjSN2L(6E z2p6o@puP)sapb(6>%tK4R2&@}6kj<~nRoMM`DSz3s<;n+@x>h3EnwDDZNBkZ%-)+v zjAp9oAoA)%o(nLZjl(#^;n9*$XTT>LkIKoP|LCBp@{-f1bzdBXV^lvJ{dzw6l;hVo z!E-U;%op_Ey?y`gdHJJx-IU9>Sd1OHfBum#z@3%~#-)|?W(0+P5Q#3Yltm}L(E$x)b|wAo4uy|QH0t!Xh?i) zG1^hj&YU&R((C#p1;>sJW#ejuMzhTFv7mD?9OC>Ccr5@!n}T5Wfbd7C@qC_dk<&9o|YP!V%jz1^5#mjYzt{Yx?PxwkE_Jc&!Qb>4RLw z)|6I*^-vIhI?PU}SHTgJxFvx=1f5L%VsB>n^${sw@FURNZ41%JsJXHF)0oP1Y?ehm zwE=}z%e-A^4G5mHug}M;y*wP-a|CSI$t2k+N_XglNSVPV_Yb?e0ta>Y~}3K7ls&6_&`=?Zt(Oaq9Nl-ru~L29uy`= z6DMo$e{|QPU;bv9uUL@pSm=Gxqu9fA%C7lT1+T{xDlaTLm-A$;^@1oZWfa;Xd;5+~ z+9gGe@249sWx+foBW>F;)&k>fFiD5K&mRn$YW&XEFZGk|Vd5TF{9%-Ovi6PvQ&LM$ z;CdtW@%ZQF(RrS=Ei*|8j!-4O9VTGRo7YFpx`1d<)7GxjS%<84IeM$@Eus&eP z3Jyqzz}wyo53AoXUvw(3vXIR4I!#zUw>5*RkVIdh4_M}o?&!P>lVUPD38S=D-rszv z(s=m_lgXr`wUlb*vUE`%Oa$ZE75ss!EK7>kaT`j$N%X=E(>$m7^he|F#{h0=Qiu_e$=u{9|%nNNo%S0js~;g-f0}&h?F3d)+mZmIgRQS$(=)<^3bT zl#PR$x+p|n#v05$tm{r?#NQnr4!$ADExdC0Ea_Z)(}2|^Y(ez-VFsFm$idkc>vVI) zvVh13koa75*`u*~C`+9Sp}HLI_Gvnp%!>%!+`J2P(bW3h62pQ-;RAS~#QIYWdX36{ zT98)da6HtXnje7?pksgs>Y`6@oYkWP>nhSj>%~Vm&&)p;j9OTZp4O$VsV$iGz!$|Y zQgqFWZFCWDE{y8H-do<%S^L6+X~XaQP{oSgo4Ux1B22Ol;~^$;nyn%7_qR2Ou|llI z`1tIW=ze}4W6MpZ+2~|`ut8lIAPv#uvF4C=Q3kCEpt+Q>SUdi8z)(=^Ja;X$zZWm~ z(4bPk7g~ofUa>+`*e}FH*4y0n7*p*fWLDYtB|5YO9iVR+rv|>k2gm1#@Qi*SvcE-U zU)K^+*l>&yMTh(-hc0smtZeCB4nHtJ+kN%Sf!jQwX#Nq7$*O=mV2ac za6%ADFy+>D(gd?}C42by5Jl-|*m;4^Xp+7-KUz;F|61kJpz@_BiNT}2QJHY3-^_q7 zh3EM7i#=9{@A)R&F_NcMxhK<8C4AxJ=a1Eupb0k2V`N==fK)}Ah=8aG9i#*Vq!W4(kuHiQROtdD zA}R(@#Ey!JZF848UfBpTJ- z2AIe)acSlEnkOC$pE=Mr6q30Z-=$`AZ1#3#=dCbfQR((cyJ7H2(7`P`*#0Xnoo|A&Fd|HUQsqMMXQ6YJ9b8{PL}uurKXPj$e3Mz=U0Dgq5P?2@+U zK~YOrM$Oc)`<8?Zs44fhdcJSJOa9FzI5xaDjEU9SuE_JCt+8EX)h=(F&suwx3QG@?hC0$vPvbo* zMHkc~4}(2JXOf_X(G{BHcqqreb&i5z+6ltVgf=Xx^LN5I;!%y!j-P->cC=sH%r1na}6>ERJ_I<2nwib6BOTTO&Nl4{i9O zpK(X#j!k%}rgsZ?so@x3G#z-)ay0rTF!qi@c$Auj{@F+!@twD-T|dh5m3eRn_6mj)@`_vc##wDYDp!8 zFB_8SiSF>_C7Ck%17)jA8S>5z3ZvEh*BIwlc+KGx{ujL&KDv`o5l|_9bKClL*_+AK z*L0Y;_#tLulADQ1vJ)XS)gjGHN)sZ#D?zDQL%ZxW{=hO_Ol1-lN^9wfBV{gbmk<;7 zJr&lhitp_1CW@V{iM$>{L}IvI!;YDh5j}9sa6$)|+F5Z|WydT9c%b_5kyh3dC0St| zF@vFJ=2%Ht(i_L>kM`o9zc%xK`&r5N2P`j=O5~yzJ5e3m z-i9gDDsS_n87I~a%wxf*H^Q&fC)>EJSa}>$=iCFjv`MHo)a&%3g8mz5w3|C4uILY( zos6xRLFd%g##lzlzHu2xqL4z{Oew(ckg@{T5w)2j_jH_*>KvoIS~|K1FA_}-(av2- zh3|ROVA1Rtj6r<^NRqF1>}B;vpEvSM>N0&is5Imw75$X*OK3Rs_MBUb*qvrkPA`sW ztTE)ZU9&MZNR)|Ddm(`f0ea#+ze#k-yVVxM?p=4e&n23s)i?Ms1C+@qYK6 zf`q2k_G=>g+VjaBF=y-!&Tssfah>^YkBEr{&qhm%s1b$s0xk)en!>Vhc5a@BEZ+q+ zlt6e{K#_GQr`m^s$;dC}P=7}9zdHHG!`gOF$J5O1mZt3~2O#R>WUp47|Q2p17wHTW-@4kFus)A?YBS2R27AYVh{diJJ zFo|D8Chr1POgtkTkP1c%U#QGON_dMSt1dP+7KJ0EqeL%tbYA>bzk?&_|5?97yfS#Z zl8DJtMhgu6G9?ZY#cq!61~JHinJ0IlD}nvs&j9X!GJJn!>c9W^31u|l7-i-D*YKVYZJ_5TLVJfsyP$-k@)ITm09fC9qo0SZXqFnmndY^kA&ZEV4^`y z@Ia*5FH>Td@MIjp6P&F4O@fqoug~-I2m+!W+`7z)9#dOR}>I zqB6F}OyJn*m=|U!nB6^=lPHCm2wSyplT&X?Ihxn-Ar5OhGc1aY2%G2(2 z_S=gZ4fyiXHuz?X!|w$=h^H*nzqPatRt$>;B1IfSm~}f5Aynk-h+hwQRDQbXDpaMx zf}trPG!(*!p#@4(LLiC zJr>0M9?X`{fo$qUnc7;%wr^BQ*sz7F-YQjsPSqZ5l_Rvc!WiNq16LIpzWYfO0t>EK z^qPvmani&Q5)y3YEu=*=7uM%KNrj78K)jt460>L2B2nY>oNvOPxA*`3fZnfu;{W4C zF#k+S58BnD%TfPt9&<&LLd~ZL|u7c?=Nf@L)SsOJQDe4B%K7%tLg^>!EG|8pojjv70Ir0X+M8;TN!r zyOb_u$7KfTxXUvkL^_4Va{CLBK53KruPp9A5$PTa(@KE*UvSa2@|+5P3N?Xs08&-` zDheD99Gi_o$c9>7%`b^5q*0IU4&wTj#cxCV2ZR%&69EJps(SG~LawiZs$Q76Zm6NH zvc)u%L|W1>xM*QTxR*U*NpEg1DXmsA^Fbr=P@tDms_>Yk@ajCF zr0m6fbC58viF|bb)4_+aSH4z#L^Xe#;HVLSTOnE^T`2Xw9&5$xz1_{KjqWG6hkQxt z-|cI%ytnO9WB#O1kZRM z_&DQJcO&lpYuTT=!n&`>M`08km7_{R>z>bS-(9@YuKj3xqFui#R zhW7ANYk$f+t$;LcGu+XmgyhI=W+3Gly1p1Xbe{3hW#;3p0B7;4MiptW-EoUF*d7fh zP`p1ZqUW~`@n9qBWi>hKOfiiPX5BWwoP(4QmFYf)B53{mEaJvs0%s3hWPz2(e~$)H z9(Q!W`iK5|XjlUdaNFa4@aE5r=a)DC`0?c(dl75(zaI)OAR{k|F=H&#;8pXynu^|5z@HwE!<3~_lY5CIR=oX@T&&+l5;jpO zUUzJ<#Bhfs?ZsNs$l+4gZ$t^R-7lj_&5n8cLne-=Crsgl3cT3~V_wvxY*IINqp2Mr%@a| z@$7YoVG@Plcih`a><;fX#pu0Y$kQ|uzvVecA)V~bf+|VUQvymU+c@37>M^G0V)(Pr zqp8dy;kO%#@&{=NJ3^{E_e4pz4VVZv{D^z>0~k$s-+JV#k+IexuD+(|+rtBodbN)- zMl~k0Ej91L+H^WE`jOtU6IWU4=gC$H8n)O*Z<_AU*;@>vXGZ2a)!=C7curuSDQL8) zv!6W?)cU&U-c@i<$9Zn_JlD&oxn_fV7#>K}Ih#3Fg8e)kAGM-Y&|Xg4bqAmcGme)i zL_Vc`sT7;{%qYbZat0#^~X$xKWq1Nf90~bmeg&YJ#&`yNCi`a znJ&!wgql-t_+vU1UTv(z43dHEv*v1*etQSG^q#t&taeGe=Tx`TVA18(R##b%PafZ` zw>q7oI0+^@d8KMx#E5=(J#8N$8X@uec0-+;^bavT^P@Go-!bs1`K_=9H2^8k1q3ZR z&C|!Noh;WL$SX2Jg#wr`i_W2A5Mc<-JZP#;zseklsH)0!5fW|A;UDYBn^QOTiDFBB z(HHOfIW zu&xdhc!ctXp(f+cexWTcYmi|QcsQ_)^Mq}{F|BqDCF=rNZzTCabmTD%ECfKzL`Gj4 zH(pad42Trnu|QI(2+$dkHFn;dSvFcbWtKUvBE(?%yjk ztF1!`@!s*!jjXEQ`+?KXG<@>)w6F?Hs^}SuxcT+;#}kdapHzZK*DsR;Z44&NFjANF zRdU*owAb3TuFP=Xf@2@A9_?lNp`uwYJAv;{P#p2mm2KJYe_tC*#tIV#)d@ z$n62yT-x1FK!BI4$QdaAXYoTZ(xPg>0rDo$Ov0`?P$3}KDzj0eo!3k_%)07VGIhC zSqi`^FY21tsu^GrjqO?lk)0jCT3~~u+d){$nVUEG`-ca+lZIshzfo;f`9rRF`8GHH z8cX5A>FdI^hR%zP$fvuI&o3f~FL&|Y6u)?%Kfj(K@x_oR{!Rbt%cMACsyRGrXqE7i zSA<&&+nJLH-0qK<)9gH2*HU>~0)om<4ZR&t1pA6N!EgCBpiXYe40$6NSQ*;!5q7hE zINNsIG@H3Ie3FrsfVsnGb0oIBH$GX0Bnq9T+9F)3rXGcnn-12MDTmwkJu8iG@scLk zFo|h5PVJfZwWl`6xn6Z$SQt(Ik^(fp_x*g@_(~J6$F@~iH@R!L>zb03;1u)X+gShX zID{)*+nD{X=h^78pqYtO+)cztEEuv!!scMW#;*rvVqudf&o?BQ!p7_vdwRe(?h#?$m|c#gu~>4?`{PH(P$ z=Z<~Y^4N&&~G3{Veww{?$dTwk2iinGSbY2LXjTl(rvc9uU4+;^1gbEXSBky@+Ay25_ns z6%9^fPQc>ofy6NbvgdFtf__vn`M#!lTGM9|Z@U@{?9B-L?YeQ-Y#^1jv)u4CPwVxb zq|<#(%Uj8B51hd*Rft*KRo@%GyD#Ik)R*3cYo5=YbEXt@W>j~F7&%H3ss8dcbNkXx zA>ya6RgWABjF>-k+ffH!25!4~mbiZ!LokpE z%>WYrJ`qnNm7p9~PFU_=9Jsx|_+VQhKA6PV*Ni>r&|wcvHvMsx<)vx-HQt056lCQ! zJN(%*9kg{Ee`Vg z2sP<;0@rIk`VT%|o_!_yVUJsTc)r(r@uo?{vcL=A%htzbO^GiTe)UXyN8~AfyJ4pT zwUfWsvzWMk^*E#X?8qO(->!aoHP?3Z$;9acYg%cnGg}I~=a?_NM^640z%ot*`cCUh ztn*RJK@fi|c}tR{H2Oe^Bh4k(t)Gt-bDf$91&{QXZlgR^CK;^rbu*?2k$oF!2yyR7 zT(kf^gqmof+6N-w@g_@_q{!`n!LI~G+LFJ-pUcL-oOBp~4B^O%{v&Y86U40V+GJ#x zLjtGD^c(1Q5iSm~h_yL0aJhqX+=Uw*Fc0C#G>a}5wMCBybr0lU zk-m3hVkL5V_Z^qD%`F1VIAKIwk{BT=7%2;#rL1%Ev0H`FSp|jc^E)8iR8h7sh;-OZ zM3pGQ?Q8dmo)f$5fG3?JU`;HXFCMbF`R7@>i62Y?hYyL3L7=NKAurgS`*RO$^D|+i z^UC;&<(txQVEIL{PjxMKm{8NcyP+3N{Ah9QBL7z_krD~s$1iccmn=WT&1;YSR~bMv%zCHd#*H(a=2-o{CEDgG1Sv0zl3^x z&)TQ+He!MZi`FW#6_=^YldqF<8jFpsFH~mrj^s)tUGlik`fduyjPD@H>sqvOfA5UA zT&x|pE4X)*L6TNkw@~k0kRhHv;QIZF$<*Fx?7NU%{C(7cPs-!_UfZjZ6>7C_%X9 z^_^{xCMvCebF{2Uc+q?M@SV2cUHTa&><5T9H?DvEI8o5&!6;CP7HWHPB}J>u^-KPf z>!wY2ZjDd=;kypwF^7jv+&!bm@9N-yu)H^uj0OmRn6;QUjO(y8PdCMdKL=^cqCLPBoUg8u~-W#3)I?oV#vk!S>55SW$PRA+X*>hv##*?Y%%`- zf0F9qoV|W?1!Revkfa);t=tc>D`o5o=Ndb!X^yve!Trl10akb^di-PJlj#JOE%b>- zkDLQrzHb_lqM{v$&{PCr@8TVhsq8GBv~*K^c7B1Haqiy2GL8bOM209;URNkk11Mo$q&I|8hn-$t(}utPg(>|6L%jc?DE)B*hI(yINKAyRrcG-9Dn6I)lmlz6gp`e? z7)|@dFeC>7&eKpUIHJdRvw}paD@sV)mf*CuO7fkGA7~4wf4PVMXUPUA&l5Z;?i|J6NxT zN+L9HjSiKJkGqJ^OO$bxTgcc6JLE`Pu)NCKZ(sMT=)zOZo&(nN)*OCZt^kf2cbzOezq5ai|E%Kz!^hEW zfz8TF7hSWvu-$*o1};gqP{w(m_~0Vxd5OO-w!|Vt5d1Kl0t*e+<#2svdG&r6X#%iX z4#ROCakd1qC(GH<+*OFsLVDqKzLYsx{mFYC2DuDhs_p~{9Jkua|4u?~fLt!2Hb?*&7P(<@OwW@W2YVDss|m% zkyuwWbGwxh$4D+#h!jn$XBKbGpwSRr_rM3ZxfHSQd~}{eFnBG}>Upr}qvxuJZixZS zwQsUxWiCFHdje28q-i92`gvT?vz zTT@K}_I%qme)OHz)*p$;>=Adx_;#}&iEhm>OH9)4b+8NHFt-A;3wWKw}Y)91Fmp+6vD!z2zap`7HR$$|DtdLjZo}`}eM$#+rQ{&wj zy_!bR?CH)%t2pp&qt17yi2K1~2CsT@bqy|}@{_={u_k0qtyUxJUHPlCM%nnBCcpEs z)s6LAtkqUOkH3`F)4g@=)b{to?uT;DUU5IQBGFxVV!PfzG;l3gG2~ju=~pZ&<1)sU z59Kq|z0Lai<@47Y?m^PtZXoc+k;SRy^Ls9iYkaLSj;+Cf$h#w8z2t&m0}Bv0V8Vns z04fA?IOFJY=$34U7Q-Qa z&`F;!KQ+NefrUcxX!yakM1!$%{K=s{*?GBt#9#jBozdasUwPMGt{t5v2xLKrY?$xe zF6$4P4nsp(|Dci;1m}$17IEM%nG10r!}vV(Kp1cAojJdBU~F*cK`bgZ7Cdz(T^5m| zOW2=afj^Q}ph1FV_`yhpN)X=Bgov(a*a?<;!&tGxH73Z5S6oY)>|oBwc6?WF%C+tr zJFzt)ePab_O@KbShA1_DKZVq78?oIuS8{GCQ0n2-_TgOI@@r?pimpVv#G6k$-#whw zyH&IJd6P17EG|a@)WH4$Y*UvDc?hVX{7?9=g?Qd@e%Q6Q5arhch0fRA96J`>27|h+ zHhtq^N1o#C)M%-Jw^`INodAz)CjIq_2-VOYw-%5_1^CM6sY7?q*OjHxLPI28LV4Fc zaId|`5^G;L)xuzkkN zZ>Pzy$CuOj((dhI%z7yZ5EP}a&;-2&H8fBvpY9vS4=3)WE0M0bA-Q;ZZAMSeE6utr z^2Vi{BcDlWlHkxnIaMC^V*glX$o@3G)8ISLW}w zNRa$@OWd)0s870&mGRTEyQ=n1=b%d~GkcHbm+r=sCNT+)yeHe9Ma6E}#DluerNhzg zAWyURk`SnYillqS>-#gNk2TChFyZ)!W-4;adr&lK>&#OT^`$z*Y>0o)Q%4KK2ODm# z_a67sfJfsJkAW>`e4l0kyg@IFgILtl^LC04ma_{330!!olimOv95a1(fsv@XlJDKh z*MmeWG6CeDTM+?QdOQ*<$_D(Qm@M^zZr*Sj6q6-C_pyBRA{l_Mzo=E@XPfy;V+nfs z73a>d!N^RQGcyYj$*+vc@NJm$pzo1m*3L`PE9xv=p+ZnTQw|rD@CLYWf)V!_${K1V z0AU7h4T(SN#ekX$I|3N5DD>6)s6CC@=tZP+)iJI%-KQXyB##xv(v{~gBXb(h1 zNF5kuxXD?Tjdy74az-yd+`)|*oX~iU8XOA0&1mh_kEEVso$gz^vZbz<3urtLTY%m3 zeYzhGn#YxQEGtqTuj9X;nPPGi9B^MY1%=&0z?BVe#VElrmkMB&x@CcHYEL^p@tPg) zjo*aH#jr+kqQp1M=pQe-_AM0*HE{-(A4{znjGWSuIQ>)@xl8~0ZACZt2M4Q9?Hb(Q zvAc8XGUAQ%#FiA556*!U;OXr4L$jzg!J}u*YFp=i{`~Py=Vlr8Wf?#-=`Q+NcLx3% zo=N!vGx82#IuNk%|5rO_?47v2H72-?&O|y+5PHw;E4_v=CK0HhqE{|l)K_%Li2`6$ zxcqySP=_rjaU=?N-t}IB?SMBcBaRANH#61pS5;%|0%i+05-d(DsVl}&kr5UHT9ic# zy0i#_z#Z7sjGj8PdDtE{;%}zKPCaXxI*F{AGt<(g!h|gBVIONt^k!S&L^c2uWrCku zsBml0dGqEKF+M`F6U&C%G0WS7IP&|MiWkxy(jkD9*CO-f$0`FDrGM0WC3`HP;lw9BGZ$QZ{I~trj4p`SO7+?KMPS zy+sEuPCd_Gp;RfC>T5aID4kYQ^_ADBnj1_Wwc$NNU2zU&1%#CY7qKGx2g+^LLY{j1 zest*0tK|1cG!J-i+!S;Zzkp0`v#B_4A^#)5?pp3U9DIOwhvH~39wlF)$G%PTcI%os zwy98x6Rvqav24&{d8bHqQt>c;TSt6h5@%*;>q^aX>Y+|%SbNtagvLByPBx?9;3Edr zDJO2ApdwVNs#=7Kfpelgvx!yp3a*8)o`Tq5sTdW>mj$q&2IxwhZh%5#RL8~6HMo1O zv4AEevn_f?1bQe;x|`G5&hQF+ngjS%7|z`_pSJ2k{JYoRz|s$_DheS$eAe^+6@6HP zdPuDh;T5grGuXP#B2#r}o;LcK6`PBsebFO!4DIWD69ymqT*?ls*m_k;&w$a#%^Sj@GS3n#?Uu}BjN zh0kMh4e)NC%tvlwkbmTnZ+)mI$CUxI5^H)rBE`)j&Db~~j@FZ)*34?*u-^HO_k5EI zmLv`)0{LColMR#t&S;WA$HssagDMiOQpku%@N1G?L2PE#m_x4Rtg{i2;Ye(R*k2 zggeTYaJ^3Y-NTlbwOsg_O8=g?bxc3Pj(D%Y{|U70&FSa}HkG)x2+lo34GXIBvCxU9 z1|0p%Q41%7OywRPlV)-+bB|@XFDEn`Ofqv(OeGM31pqWZ7v#M&dc%Kz!>+4Wd}1we zSB&L9l_e|`(ToGq{-Xv!cDKNtdVY6p_R-{qLutp}ZBp&Y7J(-+AYM&DyJPBP-TLiD z_lrsOomc9-JNHt(!*ZbuBN2qufV~-4Vj$xSq&1%DnEMlv2C?fBlafI|+w-&l=DyrZoFDMU_ z#Gx@ld`J=EjcJ*q=VZAl*lTm=u!u)&fhRn6@6(D~&mlPZFL-suq4%kz6%7GgiOG5x zp%JitzxpN7k?V{Qsj)!&&ce__67l<7{pPb#d=#=3duT~LLo_b(wU6gP3o!+a&0g0e zh8+{mHxxN`VFZ?NECoiPbGX37UI9@Xqk!l9_D0AJnGOdAZy!;r#_`m=aX?nR;|mLk z!V?oWnvQ$1s_*tZoojop%&A@uzx41*$nwaa@M;}{;fkO7X_xwv z_n$hYd1tU7%`K1K7h zh4I-vsH-kpjD^9&S*o8Co@UEe4E+hORyrVQ7w{~X|3&gMzRgQ2teD--yq?eqPezX* z-UbGsi@;`SEK!A*k{%JjqoKqaA**t6zP#swk|_P*vTz}?ziRx1(r|gnq@_4IL%X4d zk#1=??8|n?kkIEahMe+J)#L|{oU{>USWS%iysFf6gyQ zm%&Sk%%Kb=8nl#A#i~M>xy)=ZeDs7c=02r$N~5SKF~!Ntpc`sQ`PaezwUqIINg_3c zC1u^2sd|V%WiB@CT&|8ZkX@La_h(>qzavphsv>F+&CAKUu0(>-*k&$tnIqWRE+Zm& z1rpIAD*K-zIyHW~aP3GmSSXH0ixfTj!4`@aS9-C}ZwJo5tgsM4zb%0@ z*@lnN-6G;&k9Rvu^FEr#1F0}c~M2BRq z^D2LVm>?0I@;feV=Q6B7f=EGd0+v~oIKHal=95E0N~OBG?7mKs7q|dxJ-rho2t;J- zSavWW=bqV2(=R88)Oi=dR@1aK|0I3$Y}n8F`DPs!%R|ORnbGwyHZQI|#uf;iR1V2H zCqrmHc5Xw1QAHKf$2;)cTtHEEo2F^*eOEYf#}>~-V!MBNn4almnndCv?g)7s#RwJ~ zcYuhwD_dR;dlkLqWF>`K&W-0s5>|WTkbP-HmI1OQtuvzr5r1o!fHgc}*JX z+}HU+d(V{vV9$QXwY7~P1)Q*}1(%o14Z4^~VKR@(+c3Fc7SrUR25SG_rBaW_x~r_S z?Ozqk6=t z%N6gkMaiDHF*Ixda3QY$oyw8BGnBE(xjQ-c9z9l;dayYDaN*fw#M09A%Ig{UiPhc|#>e&(5<^c&<7y+ET0U*jh8VeJWkUs8e83#)hgHBK@xyLMHD+-$L zp*4&&8qSB8&~F7{z&#@}VQHVSO$3}G*GgD?N)-^I?k!w9?*e_Krd71J>(CRdKx*Lw z-P}RQWIptX&i13bY>Di0T`gzTx)=NPS!}0skD;;14GTFoXRN*pjpX*tiiY&`%vF)_ z$@rG-uycZYLVnnUK0TYR3RjD9LqGpd`N}^d$C~5MUnV1!4P&?mjNiScz=TEVFI#a7 z2-ulQCYyTn{c|&`RJ{^UvGrGB7>}+rn#$*QVq2*J{#?xsIij)wl|btOQIdQ{`I}5C z3WXLmrP6_kC1*( zMnxNlCnI6o?z%)u>OQ5#g()&|aJf7h%SRx9N>e0K$fNPTHfv0OL2lQ;p)@LEDa#fY~mv^U`m;2R96sjB&auMMf*W?h#-TRF0AJ!IRf#u6&`MO9aY@oJMSr(s3wdj81Ey1IZ6 z+skA6uU@xJnyI~MpK(6=X0v0?_u`w*M-i{yT;V0Ez3qCMcl7Pm)o2D4`LiV85d!JR zpkAC8<}fQaWu_n-<)e{60E4@5*&V4uZY(5C>aAG_OE6#i6HGbJdgV0;Jw4Sj48?&- zTeg=U!I7tVn+L`HlN@MF?vSEjAP7^@$^k|-&Ihv61P(NZjvJM=$QWDx^kX6TR6=_C zo_KHonDC^LusvdT?Bmd!M35O`r%*BU8=Puc4o8PfV$tco$50jDHeO`g{^4xGwcG9a zIvwSdQgvXDc;qF$>DERSVWi8_c4of(Uit)b1-Xy<5D?;Akreo0WBXWM)6vVKMKO-` zz*>~BK|A2$-Ln~ay;=2ky59@etfD#zVg8qi^%+Bo_1@f_!ZNYSi*${!4`QyL((-!x zna)dBq!Y`0{bdclgvLl>DRv~V|4>$p#GT`w)<@%urml;k5EVe+;`8_K@e)rxSx+w? z2-zic{VRdGoL z^-RbwQN(AZ#Vtx*WmXS{woIK-UIG{gI#rCaNW?Ewo1BFx< z47X=;ldIJIEJxkvKjd|dRcoFc9zFQ&!v!v`hLU7C=0*CLKV(y*b76SQ*YIP(WLk}G zt)=bMUyJj%jonsm6)|sBH_y) z@>%P)FF)VelDH41L{Y2j2m6u;Q;NwJ+U9$SIL#xbp25o)3HxuX_2dBMC|;ngft;D z5iqp8`P@`wh|Q206x`d?4+(X{$Jv!hd-z`nPq{xaZdG|OJ7AV@u+Kk z*P|5&-4M-xETqaj-}C6U?-K;9=*@2omoh#XJ_~3nden3GD$`7Na+(q)&3J$jrQYW8 z#ZM+>$cvLHa{R&)JeJ#|@*Ng(?@x2m8IeXC`xOsKdeIEz8++uXUdPot9y7(A^A`tC+ql$M8lwDF&2Bg3>Dzc$%?gX->|GThL7?_T z`+@EelT7%x(}aI4YX9f?F;}$A}bFjz@BD%Ed;t=j@dFIT{Rz7ZtF?dH-MtW}PvG?)d{IHe535n~f z`HR+*of{@Q=3Xp23Z>Z(Ufj?rLx&n2Rdh&Jy;Kxn#8`v_-q7|5V@iIE zcp)|i1c~kKeS#1o`&gsI#>^eTuae%*zZ2KHO=f=92xS9w9OeEiM`!aUNx8>(wKEg+NUQ?S(yQ$b?}tYQcW#j~0xy6JeFX zq#0CZraf13t32S(FAZYzv{_{a$yaO9(LLf-(tG?vR4UeTn^nY#V{Uy1PQkdeDrJA} zirCr59Pi@1&}d^{UsK9>sdnKuV@F?tCH!Jj6W3dk$m2ID&YN|QEpfx`Gbz6G?OTJS zNZ>57d@$BGvGoPzl^R$sFzUM5GPp2;)EYdvok4Vn*o6z2N`5$&>thh`R)gycu3W1h zN;q1vHXp{#u*`RUr}se)TBW^vtM0wN*!6CEd2-63W^vZ zLzqVna08C!0MS~@?o8O+wpteWW<@#~fwI7Q06#I~TWqg=b55AH`hC(iSjv&7Ghraev z2AbzxQJ#b@qGo2MT$z~##bU%wsKVT6g}zGvdnCz*E#xZ-gy&etQF`{cU<&_wSs@ceO> zyf7<1Au>lW{qSxpRtSoB7>BS`q76UgBwTmD|HmVzx=j-e?S09t@rFIFT4AAbK9law zH})My&AOh`cG1m~>L6t9!mlKBL<@+26OS`cZ92Gg7$$mvJIJz4jR>t86y2HIs~&RH zISs73jHpjIzG0sMUq&~{*W;waM%;YJK6-qKR+@ETM89<>(iNVi4c<39D^^TA`(BGU zClzb{S_zw4i`a!ZjIvxk({LyMFwsM3ze z3E|19$eKs_+gk_?VHrS?dtJ@0y=y~ijz>zj&Mga*0P~na9;`o*y6b03EKY?9n+c^O zVP=zwhU?{o^g7e6R#U0&>lG5?b!Iz8rZS?%*DJ{a^%mw<)7gdVRVudiRxTscp8uSD z{^z&iFZS-=->QGU761NLh29FOB%bOiyvMI4qy-!uuV?#?th;FRVC>xm0b?61D$0|D zVV$txOMo7YGg;X&u*mcanjkWDuLvPuNt%7W$~TDf>#ZmjkxHnn&W6=@Ku<*~^i;H- zZtv`gDhh|5ikoME-mweEJ+S)V@R_{v`<{fx0JQGVjPK>SWrk$9zyi;=?CG05xaYc3 zFJHa=yi@!HUGLQT(ih+mPs0sO%&KYv-pNdESL=W~m9UX90=PR)bz#e< z;EfYAvayDIKmk!e;!0fLIi`Gk}=E#6lE*zx$ zJ?faFsQ;UafdTV??Kq6D7zepfmb_L#o`j^Lk3 zUahjUVKWmlGT5}BoCqsIhJVmxac$K;L(uj!axJ~8%KcxvNSycDGk6z_4Z_hX1h7~{ z+WiQeq+PQtnQcqx(dqQ2_ax;InJx^ZYiT)r96)&wPY0A`qZuB+e zVWz1st>q14t~!780HCo|P9IKlQp&4m!4uq?gEWv0m7X-61erCj`iYdn~xHOJRs)P>!s4vi4_sCaV& zyKP!-Q5664FxC+Py7`T(oBTE|mo@|VX%=j^?LGElru zc*AF#1ul)O)R{yf3(;dA@pH$`PQqFP`QxnJt$r9-^a>ZQ#jDtqV_b%MiPt8P3Ned# zBL)-ms5&BL-WrLUl$1PT4&v($)+e$xk;M}UAe~vB*mWJI!i+t7mkAo)Hl30nC&pr^ zhzREaJ0-ISq3zVgYeW5;{P_q^0z*LZejNhq2(Sq50{90O=2$Y2_EwVlZFT6jk}LD{ zb4d<*+x^?dUY;;c!-O-1Vv4l@Kui}P?E-)(6)OIC&e)b?$8Y^cwzB8%@{k?byVq(b zkf{-R$ON{+ga=Z@_IY@<7v_x2C~@$121}glpEOjwD$k!cU=rf8ElMbyoP{tnQS3J%_U04@fE+t=A`PV8pRl(H<6QQ=8ED;&6WJ5!|55qVM?sM7 z*75McQt?ebUJ99EYv*y9c<%^LZRh&s-mYHaK+(9)1rZ?nNDu7U`eWNYtu0ub2-YvB z&Z_2xiZOokvd}p0k?~Fh^PCP?v}fbMo@cXn7Fe|ER*PEB#%#MPH%Pv&UlOiUfH<|p zq5XVNjE;p zKXQ~QR46wopis`(csHEu#%~0%=^>FF@gvK|f?pt>3@jNBkCs~Z&Ueu;HIX&Ql`~o; z*o&L$)$jSimAJok%kWqBNjDDnvFTQm!XrJw$(81Iwq358oWm$jg#nBE`s{{sfuO8o z`$-2cX57oR?erkL4wqNEuTiYu{&Mo=lGT-j+rvQpX@VN&OL9VOFZrl{dZ2Y1VNQY@ zF1*?4G>2 zoU}F+eS?ztn1lhj2ju5JU(0Tm#OQ?_Qd(C>5B)@9YKxGQ2XlRt)nA+3h5UThOHJN) zDR(M>Sqr9XKz_%9sJ!~(K>9}v@iUFNJ?8*kfO*a>pPFtD%zO@db7N9M1MeGiu-G=u zz<7d2J$=0eF4`rs>+PgzrTPUxH=qC2jsC;dv?AS5PD62B(6)(@R@S%M$}fCkxrK{2 ztLRsCTPXFyuJP#_Xna#>l%Hf%8X^Z%InMVWI7?A`LCuCb*|`>?0}vKYg=dOhBtH(0 zd2GM5cgHtUrkxq=$d%zdbxCG$X)J747!zYaw!Pke!xW4*uD`kRRZAoBQ06|{@>F` z@jNI30+$~ODLO^GhR6RtaXJW8l%%!#o&B^2(%P1uC|zb~a5|hY6miRGsT!n`A7mY4p_+984Sp&B@LdfyT?ni;;ysw2=o)dE z_>kBA{MEYqzn%1rPpvljTkCPuCrFfqABp2Lnroar@BhmZ-(}!QzoU=$gn*zT z=_}CSV*^L`dynmq*Y#%|4T?{Y1tM5}BuwaOYra%nl1pNqER3051Wi4e<|2e*CF$G? zK`B)icc4r-B2uZfb?&gnE(ek@M|fX*NB-5m)Uwmi%+uor^iLF>ih*XHQMbZ75Bv$2 z52JNQW?Sc<`bnM^;LXZbK6|?dclz#jsaLPxZR~u1+Fmbi=__n-ZEc8^0e&`0`+ouj z2>SOE$gqTmZetQisg_VxLw5#1bub`_VnP55FOtfzK;uSY8^Zr3#F9zmjseC@TIh#Q z%}O@{+PM^gftN`n4zTSkf$*j^0R#d-5Gq3hga8D9vB?1Or-cYZb#N$Zv};#aVJuY8 znbnzw08+iG#T0;P*|%`x%AHG>lm-S79F+X|Wr2eT4BXb$#vy=8EEM=E=DQ$4$ib8T z)k3hivgIQVEY_v8Rto?EkF{N(P<63{0U|kjMGd)x1|fz2x>ua9UiR_5RNPHBLzD+{H_(6IjeK%1jCSA>z4I$(Z(30k=7FH@8u#KqhU`w z`e6?q(cq41`FnEC$55#8p#6Pk0hIPdZ#U3~%6b2BQbGSgJZLaoE$$_lg8+{3(ZF#B ztpq@X61G6VUXNf!iYZ1BfLn(rXpkQ)WI20|Z35&Swt$6d>SbVHJ>ocZTk8RyYeX zYH1P^B!FS0B5Yuw2M1g#Di{Ua*yaZ1u@UO1tcEcGP4^j=P#2(BFhKzbM4-R{3}isS z1He82Kn4sPpg;t4POvDe4RF+2j%!gFK?M;QU?2Z38B_qGr3Gxt5Q#bxz+pKakak%C zh31o-QHZo=K%O!=`%Y~do+;b~+iKM0GZ1uTqM8~wV3irUd|JzfoPO}3Nyu;_-Aa%q zOo9e9jtr-^kD(UEcAEO)H+oB#mX{>Nr=>3 zv(R+N?5#6$*(=1?hdS1*&2|dd@j>1?WY3L4)qMCe!_SvAqc;uViLr0k>zF*a3zSJ? zLp_Nv{zBt?WN<^j>&z_q2|n>b@C_|Tz4`wMXNzHh;y0vf2*;xfuxt|z_kg)QSTBvi z>rKGw1JbpiE_BR>cXU(G5)%!|;gUcOvE2Vb;I-+d7VPiM5~|1-*x4AoOuO$Lurq@J z0lt#BbUgsPMn+!*?ONmuq`|w4N|1LxHc7eT0QO3;!2rO}YMBGIiwmmkN5D&zP9qbD zUV=2By#gl5e`Bx!0s`nHv^da#jbOqAzA-l-T`);JqTc9I1QoFn@H1^0p$b>X!WO#l zg)oev3};9~DKM{wJ@7!43a|j&g~cxwFn|YeC<6j0zyTm@RS_EC00sDNhIdhv5+7lK z0w`d9T=U@hrq~Mu+>ldH$^rv?$i@HSB!Gg3vfvgnki;@xW`iBuN+BTVMplU>f7NRs z7U)>VR!IqGyTM05HHbzju zGY1YzNI@g@kVjm|2dXOsMii0U$YJ2%dTCA1`f?2d3aR@hNPbTb6*7qAJUYLMp=Ui1Z)8Vz;mT6s!4O`YbDQ8", { + class : "loadingoverlay", + css : { + "background-color" : settings.color, + "position" : "relative", + "display" : "flex", + "flex-direction" : "column", + "align-items" : "center", + "justify-content" : "center" + } + }); + if (settings.zIndex !== undefined) overlay.css("z-index", settings.zIndex); + if (settings.image) overlay.css({ + "background-image" : "url(" + settings.image + ")", + "background-position" : settings.imagePosition, + "background-repeat" : "no-repeat" + }); + if (settings.fontawesome) $("
", { + class : "loadingoverlay_fontawesome " + settings.fontawesome + }).appendTo(overlay); + if (settings.custom) $(settings.custom).appendTo(overlay); + if (wholePage) { + overlay.css({ + "position" : "fixed", + "top" : 0, + "left" : 0, + "width" : "100%", + "height" : "100%" + }); + } else { + overlay.css("position", (container.css("position") == "fixed") ? "fixed" : "absolute"); + } + _Resize(container, overlay, settings, wholePage); + if (settings.resizeInterval > 0) { + var resizeIntervalId = setInterval(function(){ + _Resize(container, overlay, settings, wholePage); + }, settings.resizeInterval); + container.data("LoadingOverlayResizeIntervalId", resizeIntervalId); + } + if (!settings.fade) { + settings.fade = [0, 0]; + } else if (settings.fade === true) { + settings.fade = [400, 200]; + } else if (typeof settings.fade == "string" || typeof settings.fade == "number") { + settings.fade = [settings.fade, settings.fade]; + } + container.data({ + "LoadingOverlay" : overlay, + "LoadingOverlayFadeOutDuration" : settings.fade[1] + }); + overlay + .hide() + .appendTo("body") + .fadeIn(settings.fade[0]); + } + count++; + container.data("LoadingOverlayCount", count); + } + + function _Hide(container, force){ + container = $(container); + var count = container.data("LoadingOverlayCount"); + if (count === undefined) return; + count--; + if (force || count <= 0) { + var resizeIntervalId = container.data("LoadingOverlayResizeIntervalId"); + if (resizeIntervalId) clearInterval(resizeIntervalId); + container.data("LoadingOverlay").fadeOut(container.data("LoadingOverlayFadeOutDuration"), function(){ + $(this).remove() + }); + container.removeData(["LoadingOverlay", "LoadingOverlayCount", "LoadingOverlayFadeOutDuration", "LoadingOverlayResizeIntervalId"]); + } else { + container.data("LoadingOverlayCount", count); + } + } + + function _Resize(container, overlay, settings, wholePage){ + if (!wholePage) { + var x = (container.css("position") == "fixed") ? container.position() : container.offset(); + overlay.css({ + top : x.top + parseInt(container.css("border-top-width"), 10), + left : x.left + parseInt(container.css("border-left-width"), 10), + width : container.innerWidth(), + height : container.innerHeight() + }); + } + var c = wholePage ? $(window) : container; + var size = "auto"; + if (settings.size && settings.size != "auto") { + size = Math.min(c.innerWidth(), c.innerHeight()) * parseFloat(settings.size) / 100; + if (settings.maxSize && size > parseInt(settings.maxSize, 10)) size = parseInt(settings.maxSize, 10) + "px"; + if (settings.minSize && size < parseInt(settings.minSize, 10)) size = parseInt(settings.minSize, 10) + "px"; + } + overlay.css("background-size", size); + overlay.children(".loadingoverlay_fontawesome").css("font-size", size); + } + +}(jQuery)); diff --git a/haitidata/static/js/templates/cart.html b/haitidata/static/js/templates/cart.html new file mode 100644 index 0000000..1909cd3 --- /dev/null +++ b/haitidata/static/js/templates/cart.html @@ -0,0 +1,9 @@ +
+
Panier
+
+

Ajoutez des ressources à l'aide des boutons "Ajouter au panier".

+
+
    +
  • {{ resource.title | limitTo: 25}}{{ resource.title.length > 25 ? '...' : '' }}
  • +
+
diff --git a/haitidata/static/js/templates/upload.html b/haitidata/static/js/templates/upload.html new file mode 100644 index 0000000..c6cd758 --- /dev/null +++ b/haitidata/static/js/templates/upload.html @@ -0,0 +1,138 @@ + + + + + + + + + + + diff --git a/haitidata/templates/clip-and-ship/clip-page.html b/haitidata/templates/clip-and-ship/clip-page.html index 4002173..fe210c3 100644 --- a/haitidata/templates/clip-and-ship/clip-page.html +++ b/haitidata/templates/clip-and-ship/clip-page.html @@ -9,6 +9,7 @@ {% block body_class %}layers{% endblock %} {% block body_outer %} +
diff --git a/haitidata/templates/clip-and-ship/download-clip.html b/haitidata/templates/clip-and-ship/download-clip.html index 7d16d0e..356ffb9 100644 --- a/haitidata/templates/clip-and-ship/download-clip.html +++ b/haitidata/templates/clip-and-ship/download-clip.html @@ -2,6 +2,7 @@ +