From d0d3c40f13c912f1063539ccbde723466530c6b2 Mon Sep 17 00:00:00 2001
From: echarp <manu@echarp.org>
Date: Tue, 21 May 2019 23:09:35 +0200
Subject: [PATCH] The tag field in the filter page was incohently labelled

---
 app/assets/stylesheets/form.sass              |     2 +
 app/views/pages/filter.haml                   |     2 +-
 config/locales/views/nl.yml                   |     2 +-
 ...fest-43974a34a148e9d2067b8d73ea02a530.json |     2 +-
 ...4ac512e8e9403f71d7379bce24cf09d1d30d045.js | 52781 ++++++++++++++++
 ...512e8e9403f71d7379bce24cf09d1d30d045.js.gz |   Bin 0 -> 454170 bytes
 ...0a084700da079ea05453cd44d3a26d6899e7da.css |    31 +
 ...84700da079ea05453cd44d3a26d6899e7da.css.gz |   Bin 0 -> 48132 bytes
 8 files changed, 52817 insertions(+), 3 deletions(-)
 create mode 100644 public/assets/application-624ae947c8848388100e86fec4ac512e8e9403f71d7379bce24cf09d1d30d045.js
 create mode 100644 public/assets/application-624ae947c8848388100e86fec4ac512e8e9403f71d7379bce24cf09d1d30d045.js.gz
 create mode 100644 public/assets/application-d3eba8d4a824164102e32919820a084700da079ea05453cd44d3a26d6899e7da.css
 create mode 100644 public/assets/application-d3eba8d4a824164102e32919820a084700da079ea05453cd44d3a26d6899e7da.css.gz

diff --git a/app/assets/stylesheets/form.sass b/app/assets/stylesheets/form.sass
index cd6c24406..82415c0f1 100644
--- a/app/assets/stylesheets/form.sass
+++ b/app/assets/stylesheets/form.sass
@@ -156,6 +156,8 @@ input, textarea, select, a.button, .actions > button, div.tagsinput, .ui-autocom
     font-size: 24px
     font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif
     line-height: 0
+  &.tag label:before, th.tag a:before
+    content: fa-content($fa-var-tag)
   &.tags label:before, th.tags a:before
     content: fa-content($fa-var-tags)
   &.active label:before
diff --git a/app/views/pages/filter.haml b/app/views/pages/filter.haml
index e9cb97775..829b892eb 100644
--- a/app/views/pages/filter.haml
+++ b/app/views/pages/filter.haml
@@ -27,7 +27,7 @@
                                            params[:region]),
         include_blank: true
 
-    .field.tags
+    .field.tag
       = label_tag :tag, t('.tag'), for: 'tag_tag'
       = text_field_tag :tag, params[:tag]
 
diff --git a/config/locales/views/nl.yml b/config/locales/views/nl.yml
index 52d262916..46680666d 100644
--- a/config/locales/views/nl.yml
+++ b/config/locales/views/nl.yml
@@ -511,7 +511,7 @@ volledigere beschrijving."
       near_distance: Afstand
       near_distance_helper: van de locatie
       region: Regio
-      tags: Tags (Trefwoorden)
+      tag: Tag (Trefwoorden)
       iframe: Kaderloze
       iframe_helper: kop- en voettekst verwijderen, bedoelt voor integratie in 
         een iframe
diff --git a/public/assets/.sprockets-manifest-43974a34a148e9d2067b8d73ea02a530.json b/public/assets/.sprockets-manifest-43974a34a148e9d2067b8d73ea02a530.json
index 2e1a0d608..85b71f482 100644
--- a/public/assets/.sprockets-manifest-43974a34a148e9d2067b8d73ea02a530.json
+++ b/public/assets/.sprockets-manifest-43974a34a148e9d2067b8d73ea02a530.json
@@ -1 +1 @@
-{"files":{"active_admin-877e761ceb08240deef11c0e8cf64c89f98cc542a77364f1402ff4afd6449509.css":{"logical_path":"active_admin.css","mtime":"2019-05-14T13:12:35+02:00","size":105676,"digest":"877e761ceb08240deef11c0e8cf64c89f98cc542a77364f1402ff4afd6449509","integrity":"sha256-h352HOsIJA3u8RwOjPZMifmMxUKnc2TxQC/0r9ZElQk="},"active_admin/nested_menu_arrow-15084d93c65c1964d7077700ea748bd2d70cfa2d4c19707c58a9c64e232dd442.gif":{"logical_path":"active_admin/nested_menu_arrow.gif","mtime":"2019-05-14T13:10:54+02:00","size":70,"digest":"15084d93c65c1964d7077700ea748bd2d70cfa2d4c19707c58a9c64e232dd442","integrity":"sha256-FQhNk8ZcGWTXB3cA6nSL0tcM+i1MGXB8WKnGTiMt1EI="},"active_admin/nested_menu_arrow_dark-7c43b8e0a5f8823875f49a093c9d7a6b374f885b6f9cc248ae9cd7e6e9b29034.gif":{"logical_path":"active_admin/nested_menu_arrow_dark.gif","mtime":"2019-05-14T13:10:54+02:00","size":70,"digest":"7c43b8e0a5f8823875f49a093c9d7a6b374f885b6f9cc248ae9cd7e6e9b29034","integrity":"sha256-fEO44KX4gjh19JoJPJ16azdPiFtvnMJIrpzX5umykDQ="},"active_admin/orderable-29374dbb55b0012d78a37c614d573bb3474f0779849b478a147d0f1845ca6617.png":{"logical_path":"active_admin/orderable.png","mtime":"2019-05-14T13:10:54+02:00","size":220,"digest":"29374dbb55b0012d78a37c614d573bb3474f0779849b478a147d0f1845ca6617","integrity":"sha256-KTdNu1WwAS14o3xhTVc7s0dPB3mEm0eKFH0PGEXKZhc="},"active_admin/print-cf99cbf27fb92065a9eacd28e6fad48fa72cadaf6e0918790e8d35b11d8f99f6.css":{"logical_path":"active_admin/print.css","mtime":"2019-05-14T13:10:54+02:00","size":7086,"digest":"cf99cbf27fb92065a9eacd28e6fad48fa72cadaf6e0918790e8d35b11d8f99f6","integrity":"sha256-z5nL8n+5IGWp6s0o5vrUj6csra9uCRh5Do01sR2PmfY="},"active_admin-71f5376a62a9260af4c6b4c0930c35cdf18e4e35221289beb36ba77fac8bb030.js":{"logical_path":"active_admin.js","mtime":"2019-05-21T22:19:54+02:00","size":961773,"digest":"71f5376a62a9260af4c6b4c0930c35cdf18e4e35221289beb36ba77fac8bb030","integrity":"sha256-cfU3amKpJgr0xrTAkww1zfGOTjUiEom+s2unf6yLsDA="},"tinymce-1103c4904fc1df026a84e5ce890ce02b9a9fda036966b0fb34ad900ccb83c712.js":{"logical_path":"tinymce.js","mtime":"2019-05-14T13:13:17+02:00","size":1043848,"digest":"1103c4904fc1df026a84e5ce890ce02b9a9fda036966b0fb34ad900ccb83c712","integrity":"sha256-EQPEkE/B3wJqhOXOiQzgK5qf2gNpZrD7NK2QDMuDxxI="},"modernizr-654222debe8018b12f1993ceddff30dc163a7d5008d79869c399d6d167321f97.js":{"logical_path":"modernizr.js","mtime":"2019-05-14T13:12:49+02:00","size":51365,"digest":"654222debe8018b12f1993ceddff30dc163a7d5008d79869c399d6d167321f97","integrity":"sha256-ZUIi3r6AGLEvGZPO3f8w3BY6fVAI15hpw5nW0WcyH5c="},"font-awesome/fa-brands-400-bd4e21d8e25a889e979ac2367770c36863443b8e0f99feeaee09a62625b9cb13.eot":{"logical_path":"font-awesome/fa-brands-400.eot","mtime":"2019-05-14T13:12:35+02:00","size":129916,"digest":"bd4e21d8e25a889e979ac2367770c36863443b8e0f99feeaee09a62625b9cb13","integrity":"sha256-vU4h2OJaiJ6XmsI2d3DDaGNEO44Pmf7q7gmmJiW5yxM="},"font-awesome/fa-regular-400-4aa44a07b71f47067872c8f177f31babc0c609af2b384511353c89b1ca804458.eot":{"logical_path":"font-awesome/fa-regular-400.eot","mtime":"2019-05-14T13:12:35+02:00","size":34388,"digest":"4aa44a07b71f47067872c8f177f31babc0c609af2b384511353c89b1ca804458","integrity":"sha256-SqRKB7cfRwZ4csjxd/Mbq8DGCa8rOEURNTyJscqARFg="},"font-awesome/fa-solid-900-e153efe317e731e59eb8d6d1a568a811b8f7dd5df3823c327103be8e4a0047e4.eot":{"logical_path":"font-awesome/fa-solid-900.eot","mtime":"2019-05-14T13:12:35+02:00","size":186728,"digest":"e153efe317e731e59eb8d6d1a568a811b8f7dd5df3823c327103be8e4a0047e4","integrity":"sha256-4VPv4xfnMeWeuNbRpWioEbj33V3zgjwycQO+jkoAR+Q="},"font-awesome/fa-brands-400-e281f2a25598bf8b40a77f3c5228b51900788224e91dade3f4a0f8c383505f43.svg":{"logical_path":"font-awesome/fa-brands-400.svg","mtime":"2019-05-14T13:12:35+02:00","size":694583,"digest":"e281f2a25598bf8b40a77f3c5228b51900788224e91dade3f4a0f8c383505f43","integrity":"sha256-4oHyolWYv4tAp388Uii1GQB4giTpHa3j9KD4w4NQX0M="},"font-awesome/fa-regular-400-934530d864b6f03fad8e87b66daf829d17f0e7afbd74baead32a6a4157d584c2.svg":{"logical_path":"font-awesome/fa-regular-400.svg","mtime":"2019-05-14T13:12:35+02:00","size":144451,"digest":"934530d864b6f03fad8e87b66daf829d17f0e7afbd74baead32a6a4157d584c2","integrity":"sha256-k0Uw2GS28D+tjoe2ba+CnRfw56+9dLrq0ypqQVfVhMI="},"font-awesome/fa-solid-900-d5b212510d72b66bdb7feb22c611456621c3dd1a2e88cc42983d7d4c9ab79563.svg":{"logical_path":"font-awesome/fa-solid-900.svg","mtime":"2019-05-14T13:12:35+02:00","size":816926,"digest":"d5b212510d72b66bdb7feb22c611456621c3dd1a2e88cc42983d7d4c9ab79563","integrity":"sha256-1bISUQ1ytmvbf+sixhFFZiHD3RouiMxCmD19TJq3lWM="},"font-awesome/fa-brands-400-70726f98e0d98f543d5fde05a3a74bb131c5c67f5fbffcf4d41b7f68bca2b56b.ttf":{"logical_path":"font-awesome/fa-brands-400.ttf","mtime":"2019-05-14T13:12:35+02:00","size":129612,"digest":"70726f98e0d98f543d5fde05a3a74bb131c5c67f5fbffcf4d41b7f68bca2b56b","integrity":"sha256-cHJvmODZj1Q9X94Fo6dLsTHFxn9fv/z01Bt/aLyitWs="},"font-awesome/fa-regular-400-112491dccca97bf50ec7adff8d430dcba6d0b71e0a0b20386f814f3bf5bb94b5.ttf":{"logical_path":"font-awesome/fa-regular-400.ttf","mtime":"2019-05-14T13:12:35+02:00","size":34092,"digest":"112491dccca97bf50ec7adff8d430dcba6d0b71e0a0b20386f814f3bf5bb94b5","integrity":"sha256-ESSR3Mype/UOx63/jUMNy6bQtx4KCyA4b4FPO/W7lLU="},"font-awesome/fa-solid-900-7a58f741ff539af94798ff561c918e5841d7e6164e90cbe57befdec4a16f6a4e.ttf":{"logical_path":"font-awesome/fa-solid-900.ttf","mtime":"2019-05-14T13:12:35+02:00","size":186444,"digest":"7a58f741ff539af94798ff561c918e5841d7e6164e90cbe57befdec4a16f6a4e","integrity":"sha256-elj3Qf9TmvlHmP9WHJGOWEHX5hZOkMvle+/exKFvak4="},"font-awesome/fa-brands-400-17ce8b9d612897d1fefd5cd2096dbd83b82d05dd5d1f60421aca15c4ce2445ac.woff":{"logical_path":"font-awesome/fa-brands-400.woff","mtime":"2019-05-14T13:12:35+02:00","size":87688,"digest":"17ce8b9d612897d1fefd5cd2096dbd83b82d05dd5d1f60421aca15c4ce2445ac","integrity":"sha256-F86LnWEol9H+/VzSCW29g7gtBd1dH2BCGsoVxM4kRaw="},"font-awesome/fa-regular-400-2835b63ffc892d01aac2cc346969b501c845d9184f738589779ec176937e1f33.woff":{"logical_path":"font-awesome/fa-regular-400.woff","mtime":"2019-05-14T13:12:35+02:00","size":16804,"digest":"2835b63ffc892d01aac2cc346969b501c845d9184f738589779ec176937e1f33","integrity":"sha256-KDW2P/yJLQGqwsw0aWm1AchF2RhPc4WJd57BdpN+HzM="},"font-awesome/fa-solid-900-20464aebbff54cc17776497ce4112c3374a54b38f7ba5f58eec12174149d6742.woff":{"logical_path":"font-awesome/fa-solid-900.woff","mtime":"2019-05-14T13:12:35+02:00","size":96256,"digest":"20464aebbff54cc17776497ce4112c3374a54b38f7ba5f58eec12174149d6742","integrity":"sha256-IEZK67/1TMF3dkl85BEsM3SlSzj3ul9Y7sEhdBSdZ0I="},"font-awesome/fa-brands-400-dc64d7192f84497cacad5c10aef682562c24aa6124270f85fe247e223607f3ed.woff2":{"logical_path":"font-awesome/fa-brands-400.woff2","mtime":"2019-05-14T13:12:35+02:00","size":74768,"digest":"dc64d7192f84497cacad5c10aef682562c24aa6124270f85fe247e223607f3ed","integrity":"sha256-3GTXGS+ESXysrVwQrvaCViwkqmEkJw+F/iR+IjYH8+0="},"font-awesome/fa-regular-400-ccf4db1eeb68c96e05e74f8ebfa75cc60c3a0fed862dae6b0ad85d4e1b5b4e4f.woff2":{"logical_path":"font-awesome/fa-regular-400.woff2","mtime":"2019-05-14T13:12:35+02:00","size":13552,"digest":"ccf4db1eeb68c96e05e74f8ebfa75cc60c3a0fed862dae6b0ad85d4e1b5b4e4f","integrity":"sha256-zPTbHutoyW4F50+Ov6dcxgw6D+2GLa5rCthdThtbTk8="},"font-awesome/fa-solid-900-f18c486a80175cf02fee0e05c2b4acd86c04cdbaecec61c1ef91f920509b5efe.woff2":{"logical_path":"font-awesome/fa-solid-900.woff2","mtime":"2019-05-14T13:12:35+02:00","size":74256,"digest":"f18c486a80175cf02fee0e05c2b4acd86c04cdbaecec61c1ef91f920509b5efe","integrity":"sha256-8YxIaoAXXPAv7g4FwrSs2GwEzbrs7GHB75H5IFCbXv4="},"agendadescommuns-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png":{"logical_path":"agendadescommuns.png","mtime":"2018-03-01T22:17:10+01:00","size":2760,"digest":"0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33","integrity":"sha256-ABe+9T9iYcs7+VLUt4DGQwc2lxSy4eLU659p39mGqzM="},"alert-762ace9479328243a44061346b64c4d6b997e963c68dfc6bddd9e4d241192906.png":{"logical_path":"alert.png","mtime":"2014-07-04T14:08:56+02:00","size":47876,"digest":"762ace9479328243a44061346b64c4d6b997e963c68dfc6bddd9e4d241192906","integrity":"sha256-dirOlHkygkOkQGE0a2TE1rmX6WPGjfxr3dnk0kEZKQY="},"baby_gnu_adl-463a81820aa2d4ffd8e7210dbce1a19ffcac67ef362aa7b092280c6f95c903fc.png":{"logical_path":"baby_gnu_adl.png","mtime":"2018-03-01T22:17:10+01:00","size":7411,"digest":"463a81820aa2d4ffd8e7210dbce1a19ffcac67ef362aa7b092280c6f95c903fc","integrity":"sha256-RjqBggqi1P/Y5yENvOGhn/ysZ+82KqewkigMb5XJA/w="},"baby_gnu_adl-97251005d3225cf1d58b8c497d6b7905dbc9560cc8acd50118fcce60d0a2679e.svg":{"logical_path":"baby_gnu_adl.svg","mtime":"2016-09-11T17:42:49+02:00","size":109635,"digest":"97251005d3225cf1d58b8c497d6b7905dbc9560cc8acd50118fcce60d0a2679e","integrity":"sha256-lyUQBdMiXPHVi4xJfWt5BdvJVgzIrNUBGPzOYNCiZ54="},"communs-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png":{"logical_path":"communs.png","mtime":"2018-03-01T22:17:10+01:00","size":2760,"digest":"0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33","integrity":"sha256-ABe+9T9iYcs7+VLUt4DGQwc2lxSy4eLU659p39mGqzM="},"lef-small-93285d531af463f877951d63fe844a6e9600b782c2c81f78723b730072fa942e.png":{"logical_path":"lef-small.png","mtime":"2018-03-01T22:17:10+01:00","size":1059,"digest":"93285d531af463f877951d63fe844a6e9600b782c2c81f78723b730072fa942e","integrity":"sha256-kyhdUxr0Y/h3lR1j/oRKbpYAt4LCyB94cjtzAHL6lC4="},"lef-7e9152b909c78144ff44ca2254c06709333bef0b8d4985deb1361aba5c63c86d.png":{"logical_path":"lef.png","mtime":"2018-12-20T12:28:10+01:00","size":15783,"digest":"7e9152b909c78144ff44ca2254c06709333bef0b8d4985deb1361aba5c63c86d","integrity":"sha256-fpFSuQnHgUT/RMoiVMBnCTM77wuNSYXesTYaulxjyG0="},"linux-presentation-day-863b30562924505dd21841220861f83643d310e0b943a0e6a905462ddfac86f1.png":{"logical_path":"linux-presentation-day.png","mtime":"2019-04-19T16:45:03+02:00","size":9358,"digest":"863b30562924505dd21841220861f83643d310e0b943a0e6a905462ddfac86f1","integrity":"sha256-hjswVikkUF3SGEEiCGH4NkPTEOC5Q6DmqQVGLd+shvE="},"priorite-logiciel-libre-je-soutiens-april_2_m-6442e454e96ed45cc1ebc40673a6c50bd286b9c28ea6a8b58572e94f7d6459fc.png":{"logical_path":"priorite-logiciel-libre-je-soutiens-april_2_m.png","mtime":"2018-07-15T15:58:42+02:00","size":16952,"digest":"6442e454e96ed45cc1ebc40673a6c50bd286b9c28ea6a8b58572e94f7d6459fc","integrity":"sha256-ZELkVOlu1FzB68QGc6bFC9KGucKOpqi1hXLpT31kWfw="},"regions/CA-QC-70699e6a6e25c69040a3f1548b0afd829c4903ccca2760b6c10f49cc87d5d174.png":{"logical_path":"regions/CA-QC.png","mtime":"2018-03-01T22:18:39+01:00","size":469,"digest":"70699e6a6e25c69040a3f1548b0afd829c4903ccca2760b6c10f49cc87d5d174","integrity":"sha256-cGmeam4lxpBAo/FUiwr9gpxJA8zKJ2C2wQ9JzIfV0XQ="},"team-65c86021cf8a1154493664094aeafcbe3e5aa13dc675bb8ef34b220481db98fa.png":{"logical_path":"team.png","mtime":"2018-03-01T22:17:10+01:00","size":3586,"digest":"65c86021cf8a1154493664094aeafcbe3e5aa13dc675bb8ef34b220481db98fa","integrity":"sha256-ZchgIc+KEVRJNmQJSur8vj5aoT3GdbuO80siBIHbmPo="},"application-b28f5a42dc6b5de7d77e7b9ef9351c708f2153532290127f06ff78c9f4d978f2.js":{"logical_path":"application.js","mtime":"2019-05-11T17:00:57+02:00","size":1964749,"digest":"b28f5a42dc6b5de7d77e7b9ef9351c708f2153532290127f06ff78c9f4d978f2","integrity":"sha256-so9aQtxrXefXfnue+TUccI8hU1MikBJ/Bv94yfTZePI="},"application-8d9e6b02a80528a80ba3b8b8ee333f1a34e130575fb088490c2bc9403fb04597.css":{"logical_path":"application.css","mtime":"2019-05-14T15:14:02+02:00","size":170794,"digest":"8d9e6b02a80528a80ba3b8b8ee333f1a34e130575fb088490c2bc9403fb04597","integrity":"sha256-jZ5rAqgFKKgLo7i47jM/GjThMFdfsIhJDCvJQD+wRZc="},"flags/4x3/ad-f67c4e5a3f709ead53c04d9ff35614e6c67517c3d3289170f7a317390f661497.svg":{"logical_path":"flags/4x3/ad.svg","mtime":"2019-05-14T13:11:18+02:00","size":33972,"digest":"f67c4e5a3f709ead53c04d9ff35614e6c67517c3d3289170f7a317390f661497","integrity":"sha256-9nxOWj9wnq1TwE2f81YU5sZ1F8PTKJFw96MXOQ9mFJc="},"flags/1x1/ad-a315836ec2c9dcc11ef9bfd8b18aa7ccfc2d31435cbf46a2c31930836076e09c.svg":{"logical_path":"flags/1x1/ad.svg","mtime":"2019-05-14T13:11:18+02:00","size":32745,"digest":"a315836ec2c9dcc11ef9bfd8b18aa7ccfc2d31435cbf46a2c31930836076e09c","integrity":"sha256-oxWDbsLJ3MEe+b/YsYqnzPwtMUNcv0aiwxkwg2B24Jw="},"flags/4x3/ae-7a3b3dc0f50b5310014cfbcc8200a5f1ce568127bf43452e40e8158e0cff2d2e.svg":{"logical_path":"flags/4x3/ae.svg","mtime":"2019-05-14T13:11:18+02:00","size":257,"digest":"7a3b3dc0f50b5310014cfbcc8200a5f1ce568127bf43452e40e8158e0cff2d2e","integrity":"sha256-ejs9wPULUxABTPvMggCl8c5WgSe/Q0UuQOgVjgz/LS4="},"flags/1x1/ae-bcdd9a4da09598785f3e31db4ff431e22687b2ead18209a3e615600655068cd5.svg":{"logical_path":"flags/1x1/ae.svg","mtime":"2019-05-14T13:11:18+02:00","size":265,"digest":"bcdd9a4da09598785f3e31db4ff431e22687b2ead18209a3e615600655068cd5","integrity":"sha256-vN2aTaCVmHhfPjHbT/Qx4iaHsurRggmj5hVgBlUGjNU="},"flags/4x3/af-01601b521fa86582e32c39eed8c88480afec1f801b6de929b52ed7e49da47260.svg":{"logical_path":"flags/4x3/af.svg","mtime":"2019-05-14T13:11:18+02:00","size":21279,"digest":"01601b521fa86582e32c39eed8c88480afec1f801b6de929b52ed7e49da47260","integrity":"sha256-AWAbUh+oZYLjLDnu2MiEgK/sH4AbbekptS7X5J2kcmA="},"flags/1x1/af-6332cf754a5e2866db631923e1f7cfc52a0a554d32b97bcf19f8263819e4ca7d.svg":{"logical_path":"flags/1x1/af.svg","mtime":"2019-05-14T13:11:18+02:00","size":21145,"digest":"6332cf754a5e2866db631923e1f7cfc52a0a554d32b97bcf19f8263819e4ca7d","integrity":"sha256-YzLPdUpeKGbbYxkj4ffPxSoKVU0yuXvPGfgmOBnkyn0="},"flags/4x3/ag-cb6952d821bac7855231c2cb4d1c44f7c730f6b3621518ab20f30d2b9afe604b.svg":{"logical_path":"flags/4x3/ag.svg","mtime":"2019-05-14T13:11:18+02:00","size":748,"digest":"cb6952d821bac7855231c2cb4d1c44f7c730f6b3621518ab20f30d2b9afe604b","integrity":"sha256-y2lS2CG6x4VSMcLLTRxE98cw9rNiFRirIPMNK5r+YEs="},"flags/1x1/ag-14f7d9978487aaf4446b55167e85a711c48a13ff07edac175c172969a38650c4.svg":{"logical_path":"flags/1x1/ag.svg","mtime":"2019-05-14T13:11:18+02:00","size":764,"digest":"14f7d9978487aaf4446b55167e85a711c48a13ff07edac175c172969a38650c4","integrity":"sha256-FPfZl4SHqvREa1UWfoWnEcSKE/8H7awXXBcpaaOGUMQ="},"flags/4x3/ai-f07c6cc0646fdfa441b9a506e1d46e8dce0d97b37222292e9c6733c995dc89bc.svg":{"logical_path":"flags/4x3/ai.svg","mtime":"2019-05-14T13:11:18+02:00","size":42208,"digest":"f07c6cc0646fdfa441b9a506e1d46e8dce0d97b37222292e9c6733c995dc89bc","integrity":"sha256-8HxswGRv36RBuaUG4dRujc4Nl7NyIikunGczyZXcibw="},"flags/1x1/ai-95099e544de29bcea3ba735de535823f2e19aeb4043e82dbc1d9862f9262b810.svg":{"logical_path":"flags/1x1/ai.svg","mtime":"2019-05-14T13:11:18+02:00","size":47975,"digest":"95099e544de29bcea3ba735de535823f2e19aeb4043e82dbc1d9862f9262b810","integrity":"sha256-lQmeVE3im86junNd5TWCPy4ZrrQEPoLbwdmGL5JiuBA="},"flags/4x3/al-9b997f2720de861e1b0ccec8ddf42a2890795ebf50817f9223e1ceba712c9b03.svg":{"logical_path":"flags/4x3/al.svg","mtime":"2019-05-14T13:11:18+02:00","size":3221,"digest":"9b997f2720de861e1b0ccec8ddf42a2890795ebf50817f9223e1ceba712c9b03","integrity":"sha256-m5l/JyDehh4bDM7I3fQqKJB5Xr9QgX+SI+HOunEsmwM="},"flags/1x1/al-94852d2711fc23abf3423534b9edb950a0c6aabf1d2d98bf2643f3c7dadfac09.svg":{"logical_path":"flags/1x1/al.svg","mtime":"2019-05-14T13:11:18+02:00","size":3228,"digest":"94852d2711fc23abf3423534b9edb950a0c6aabf1d2d98bf2643f3c7dadfac09","integrity":"sha256-lIUtJxH8I6vzQjU0ue25UKDGqr8dLZi/JkPzx9rfrAk="},"flags/4x3/am-85a199ec21d1af74a256335ead0c1e38592bb603d8da81feda4678945e9e00e6.svg":{"logical_path":"flags/4x3/am.svg","mtime":"2019-05-14T13:11:18+02:00","size":226,"digest":"85a199ec21d1af74a256335ead0c1e38592bb603d8da81feda4678945e9e00e6","integrity":"sha256-haGZ7CHRr3SiVjNerQweOFkrtgPY2oH+2kZ4lF6eAOY="},"flags/1x1/am-869391b014ac299924d30777d72a4aba430752177290a90a1fc3255a7ad79ee7.svg":{"logical_path":"flags/1x1/am.svg","mtime":"2019-05-14T13:11:18+02:00","size":234,"digest":"869391b014ac299924d30777d72a4aba430752177290a90a1fc3255a7ad79ee7","integrity":"sha256-hpORsBSsKZkk0wd31ypKukMHUhdykKkKH8MlWnrXnuc="},"flags/4x3/ao-29224a61bf632826d530cda55d87c2615884bd2c2c3a322036ed468e34d85c75.svg":{"logical_path":"flags/4x3/ao.svg","mtime":"2019-05-14T13:11:18+02:00","size":1608,"digest":"29224a61bf632826d530cda55d87c2615884bd2c2c3a322036ed468e34d85c75","integrity":"sha256-KSJKYb9jKCbVMM2lXYfCYViEvSwsOjIgNu1GjjTYXHU="},"flags/1x1/ao-048eacbc862fe1868cf0ec73457b70a8b49a598c80dea049856f0e1fd6fec83e.svg":{"logical_path":"flags/1x1/ao.svg","mtime":"2019-05-14T13:11:18+02:00","size":1608,"digest":"048eacbc862fe1868cf0ec73457b70a8b49a598c80dea049856f0e1fd6fec83e","integrity":"sha256-BI6svIYv4YaM8OxzRXtwqLSaWYyA3qBJhW8OH9b+yD4="},"flags/4x3/aq-b401a776d2f1a7944170114f0aeeceab5e1d962df3de7ed1eff47d96824b73fd.svg":{"logical_path":"flags/4x3/aq.svg","mtime":"2019-05-14T13:11:18+02:00","size":2974,"digest":"b401a776d2f1a7944170114f0aeeceab5e1d962df3de7ed1eff47d96824b73fd","integrity":"sha256-tAGndtLxp5RBcBFPCu7Oq14dli3z3n7R7/R9loJLc/0="},"flags/1x1/aq-a8d7ce9bfb860b6e2b58608b50bf2cafc5220c77f6d049ab7770891f64334531.svg":{"logical_path":"flags/1x1/aq.svg","mtime":"2019-05-14T13:11:18+02:00","size":3183,"digest":"a8d7ce9bfb860b6e2b58608b50bf2cafc5220c77f6d049ab7770891f64334531","integrity":"sha256-qNfOm/uGC24rWGCLUL8sr8UiDHf20Emrd3CJH2QzRTE="},"flags/4x3/ar-bf73475bb707100874dec538ce4b7e1b5afc4ed67dc50a8a800ee519e51cc826.svg":{"logical_path":"flags/4x3/ar.svg","mtime":"2019-05-14T13:11:18+02:00","size":3430,"digest":"bf73475bb707100874dec538ce4b7e1b5afc4ed67dc50a8a800ee519e51cc826","integrity":"sha256-v3NHW7cHEAh03sU4zkt+G1r8TtZ9xQqKgA7lGeUcyCY="},"flags/1x1/ar-fc6582cc6d3ef0782805d8497ee77ab2d836c53422e91007e48f81a4a9fa2e60.svg":{"logical_path":"flags/1x1/ar.svg","mtime":"2019-05-14T13:11:18+02:00","size":3503,"digest":"fc6582cc6d3ef0782805d8497ee77ab2d836c53422e91007e48f81a4a9fa2e60","integrity":"sha256-/GWCzG0+8HgoBdhJfud6stg2xTQi6RAH5I+BpKn6LmA="},"flags/4x3/as-79d395190345206ea03475b67b44638e1111562411504b60646483c9c0b0f7d1.svg":{"logical_path":"flags/4x3/as.svg","mtime":"2019-05-14T13:11:18+02:00","size":8098,"digest":"79d395190345206ea03475b67b44638e1111562411504b60646483c9c0b0f7d1","integrity":"sha256-edOVGQNFIG6gNHW2e0RjjhERViQRUEtgZGSDycCw99E="},"flags/1x1/as-04f0db77c5d8610a55c69508b226a7c338924f8cf7d6577d5d6590e85ee57183.svg":{"logical_path":"flags/1x1/as.svg","mtime":"2019-05-14T13:11:18+02:00","size":7845,"digest":"04f0db77c5d8610a55c69508b226a7c338924f8cf7d6577d5d6590e85ee57183","integrity":"sha256-BPDbd8XYYQpVxpUIsianwziST4z31ld9XWWQ6F7lcYM="},"flags/4x3/at-3d197de8f1f0096a2b0d440b6fc7d80821585a6637e646c05487a87718bf6b5f.svg":{"logical_path":"flags/4x3/at.svg","mtime":"2019-05-14T13:11:18+02:00","size":243,"digest":"3d197de8f1f0096a2b0d440b6fc7d80821585a6637e646c05487a87718bf6b5f","integrity":"sha256-PRl96PHwCWorDUQLb8fYCCFYWmY35kbAVIeodxi/a18="},"flags/1x1/at-ec4db9aeac793827ac7c8e40c072a76f7675010058cc8c8dfd3a86bb5acfa6b8.svg":{"logical_path":"flags/1x1/at.svg","mtime":"2019-05-14T13:11:18+02:00","size":245,"digest":"ec4db9aeac793827ac7c8e40c072a76f7675010058cc8c8dfd3a86bb5acfa6b8","integrity":"sha256-7E25rqx5OCesfI5AwHKnb3Z1AQBYzIyN/TqGu1rPprg="},"flags/4x3/au-126fa2500a315287a5f847f4d958bb929f11da9b39f35912cc440c0fcffb8b12.svg":{"logical_path":"flags/4x3/au.svg","mtime":"2019-05-14T13:11:18+02:00","size":1335,"digest":"126fa2500a315287a5f847f4d958bb929f11da9b39f35912cc440c0fcffb8b12","integrity":"sha256-Em+iUAoxUoel+Ef02Vi7kp8R2ps581kSzEQMD8/7ixI="},"flags/1x1/au-bf990dcc957c9f74eb908e8ffa733f1731277bf6ec8b7301a6ea1ed92b59cc4b.svg":{"logical_path":"flags/1x1/au.svg","mtime":"2019-05-14T13:11:18+02:00","size":1320,"digest":"bf990dcc957c9f74eb908e8ffa733f1731277bf6ec8b7301a6ea1ed92b59cc4b","integrity":"sha256-v5kNzJV8n3TrkI6P+nM/FzEne/bsi3MBpuoe2StZzEs="},"flags/4x3/aw-4524643452423e95f3b0dbe6216b059a9e52126b34c73ae4b3c17b682f893aa6.svg":{"logical_path":"flags/4x3/aw.svg","mtime":"2019-05-14T13:11:18+02:00","size":9948,"digest":"4524643452423e95f3b0dbe6216b059a9e52126b34c73ae4b3c17b682f893aa6","integrity":"sha256-RSRkNFJCPpXzsNvmIWsFmp5SEms0xzrks8F7aC+JOqY="},"flags/1x1/aw-f7002bceef55486a442bf6bf433be0c60d0b15b2aa548b81c524c67ccf0565a8.svg":{"logical_path":"flags/1x1/aw.svg","mtime":"2019-05-14T13:11:18+02:00","size":12088,"digest":"f7002bceef55486a442bf6bf433be0c60d0b15b2aa548b81c524c67ccf0565a8","integrity":"sha256-9wArzu9VSGpEK/a/Qzvgxg0LFbKqVIuBxSTGfM8FZag="},"flags/4x3/ax-c297e0eb654ca62e58f5eb3abb70df9f245e4919490f29bd0f1d49c4fe052d90.svg":{"logical_path":"flags/4x3/ax.svg","mtime":"2019-05-14T13:11:18+02:00","size":556,"digest":"c297e0eb654ca62e58f5eb3abb70df9f245e4919490f29bd0f1d49c4fe052d90","integrity":"sha256-wpfg62VMpi5Y9es6u3DfnyReSRlJDym9Dx1JxP4FLZA="},"flags/1x1/ax-a1245689ecbf321c0a9e556bba17f3c9f2aeb8b1f63d14fcb591d76a87f12880.svg":{"logical_path":"flags/1x1/ax.svg","mtime":"2019-05-14T13:11:18+02:00","size":544,"digest":"a1245689ecbf321c0a9e556bba17f3c9f2aeb8b1f63d14fcb591d76a87f12880","integrity":"sha256-oSRWiey/MhwKnlVruhfzyfKuuLH2PRT8tZHXaofxKIA="},"flags/4x3/az-132e68d5e0386d3b9fa05b4288a0fd66f1414e2bc7af6b9d437b6935a7dfa00c.svg":{"logical_path":"flags/4x3/az.svg","mtime":"2019-05-14T13:11:18+02:00","size":515,"digest":"132e68d5e0386d3b9fa05b4288a0fd66f1414e2bc7af6b9d437b6935a7dfa00c","integrity":"sha256-Ey5o1eA4bTufoFtCiKD9ZvFBTivHr2udQ3tpNaffoAw="},"flags/1x1/az-3990c0526b933bd650285d821f2b93e432a73ba709869549b8ef75b051d3bd2d.svg":{"logical_path":"flags/1x1/az.svg","mtime":"2019-05-14T13:11:18+02:00","size":501,"digest":"3990c0526b933bd650285d821f2b93e432a73ba709869549b8ef75b051d3bd2d","integrity":"sha256-OZDAUmuTO9ZQKF2CHyuT5DKnO6cJhpVJuO91sFHTvS0="},"flags/4x3/ba-89dd0c1600d94741de7d667a487310193a0c48c4cf1a5159c3bf9dd37d65d2b5.svg":{"logical_path":"flags/4x3/ba.svg","mtime":"2019-05-14T13:11:18+02:00","size":1306,"digest":"89dd0c1600d94741de7d667a487310193a0c48c4cf1a5159c3bf9dd37d65d2b5","integrity":"sha256-id0MFgDZR0HefWZ6SHMQGToMSMTPGlFZw7+d031l0rU="},"flags/1x1/ba-2dbe90eb12b937f4a9ae8db95760930a3e318f4ce5829ac05e292ead698bae5a.svg":{"logical_path":"flags/1x1/ba.svg","mtime":"2019-05-14T13:11:18+02:00","size":1247,"digest":"2dbe90eb12b937f4a9ae8db95760930a3e318f4ce5829ac05e292ead698bae5a","integrity":"sha256-Lb6Q6xK5N/Spro25V2CTCj4xj0zlgprAXikurWmLrlo="},"flags/4x3/bb-16f8249ff958bfbc18fb1f23a5282000347bffdb5769ac620966185b1dcb57f6.svg":{"logical_path":"flags/4x3/bb.svg","mtime":"2019-05-14T13:11:18+02:00","size":613,"digest":"16f8249ff958bfbc18fb1f23a5282000347bffdb5769ac620966185b1dcb57f6","integrity":"sha256-Fvgkn/lYv7wY+x8jpSggADR7/9tXaaxiCWYYWx3LV/Y="},"flags/1x1/bb-fae92d8426196ae24ffa561aca72613fae651a5e9c0bcda63ecc877add05b060.svg":{"logical_path":"flags/1x1/bb.svg","mtime":"2019-05-14T13:11:18+02:00","size":616,"digest":"fae92d8426196ae24ffa561aca72613fae651a5e9c0bcda63ecc877add05b060","integrity":"sha256-+ukthCYZauJP+lYaynJhP65lGl6cC82mPsyHet0FsGA="},"flags/4x3/bd-8dac0547e73ee25a04148a3f0fd026a90e56c23b7e92921565d4263050ba77a6.svg":{"logical_path":"flags/4x3/bd.svg","mtime":"2019-05-14T13:11:18+02:00","size":193,"digest":"8dac0547e73ee25a04148a3f0fd026a90e56c23b7e92921565d4263050ba77a6","integrity":"sha256-jawFR+c+4loEFIo/D9AmqQ5Wwjt+kpIVZdQmMFC6d6Y="},"flags/1x1/bd-ecc3c3e87d4cc59c8350f2b4d7dca8f5cf46bdb26319db0ee80b744482af50c1.svg":{"logical_path":"flags/1x1/bd.svg","mtime":"2019-05-14T13:11:18+02:00","size":195,"digest":"ecc3c3e87d4cc59c8350f2b4d7dca8f5cf46bdb26319db0ee80b744482af50c1","integrity":"sha256-7MPD6H1MxZyDUPK019yo9c9GvbJjGdsO6At0RIKvUME="},"flags/4x3/be-a180ca68521188017bb5367f19e503d9599d6cbecd61bf054e59a57f58e648ae.svg":{"logical_path":"flags/4x3/be.svg","mtime":"2019-05-14T13:11:18+02:00","size":293,"digest":"a180ca68521188017bb5367f19e503d9599d6cbecd61bf054e59a57f58e648ae","integrity":"sha256-oYDKaFIRiAF7tTZ/GeUD2VmdbL7NYb8FTlmlf1jmSK4="},"flags/1x1/be-c8d4194137bd01955285b329dfdf996490d16c3116a92ce2f322e354b6d7494e.svg":{"logical_path":"flags/1x1/be.svg","mtime":"2019-05-14T13:11:18+02:00","size":293,"digest":"c8d4194137bd01955285b329dfdf996490d16c3116a92ce2f322e354b6d7494e","integrity":"sha256-yNQZQTe9AZVShbMp39+ZZJDRbDEWqSzi8yLjVLbXSU4="},"flags/4x3/bf-6b214936ef89f19133d4a84e99cdf0cfdb99d6409f2f373f6d18694423013313.svg":{"logical_path":"flags/4x3/bf.svg","mtime":"2019-05-14T13:11:18+02:00","size":360,"digest":"6b214936ef89f19133d4a84e99cdf0cfdb99d6409f2f373f6d18694423013313","integrity":"sha256-ayFJNu+J8ZEz1KhOmc3wz9uZ1kCfLzc/bRhpRCMBMxM="},"flags/1x1/bf-04c7d61aa314adab5a41bd79d77aa780c10136bb6b8f4c62423e61e23e3851ee.svg":{"logical_path":"flags/1x1/bf.svg","mtime":"2019-05-14T13:11:18+02:00","size":386,"digest":"04c7d61aa314adab5a41bd79d77aa780c10136bb6b8f4c62423e61e23e3851ee","integrity":"sha256-BMfWGqMUrataQb1513qngMEBNrtrj0xiQj5h4j44Ue4="},"flags/4x3/bg-dd3985ba746942b0e65bc52a280cc4d28fb24fd2c7d9e22ac9afd2d75ee7bfc4.svg":{"logical_path":"flags/4x3/bg.svg","mtime":"2019-05-14T13:11:18+02:00","size":289,"digest":"dd3985ba746942b0e65bc52a280cc4d28fb24fd2c7d9e22ac9afd2d75ee7bfc4","integrity":"sha256-3TmFunRpQrDmW8UqKAzE0o+yT9LH2eIqya/S117nv8Q="},"flags/1x1/bg-f59294a736d5bdc0f102b58d70dbe45d02bd92df822820bf95336840f75a0746.svg":{"logical_path":"flags/1x1/bg.svg","mtime":"2019-05-14T13:11:18+02:00","size":297,"digest":"f59294a736d5bdc0f102b58d70dbe45d02bd92df822820bf95336840f75a0746","integrity":"sha256-9ZKUpzbVvcDxArWNcNvkXQK9kt+CKCC/lTNoQPdaB0Y="},"flags/4x3/bh-7c82c4a6ba963172c6c1b4423f39a0ebe9c999449cc7dd87018917943db4735c.svg":{"logical_path":"flags/4x3/bh.svg","mtime":"2019-05-14T13:11:18+02:00","size":546,"digest":"7c82c4a6ba963172c6c1b4423f39a0ebe9c999449cc7dd87018917943db4735c","integrity":"sha256-fILEprqWMXLGwbRCPzmg6+nJmUScx92HAYkXlD20c1w="},"flags/1x1/bh-6893aac3e55c6480e9dac0c023ec2179f6c12a0da82a0bc2717134384c097e88.svg":{"logical_path":"flags/1x1/bh.svg","mtime":"2019-05-14T13:11:18+02:00","size":572,"digest":"6893aac3e55c6480e9dac0c023ec2179f6c12a0da82a0bc2717134384c097e88","integrity":"sha256-aJOqw+VcZIDp2sDAI+whefbBKg2oKgvCcXE0OEwJfog="},"flags/4x3/bi-4fcd0116f7f93c0564c6955806f3c3563d0ea7334ae406f29a897255845c923c.svg":{"logical_path":"flags/4x3/bi.svg","mtime":"2019-05-14T13:11:18+02:00","size":1074,"digest":"4fcd0116f7f93c0564c6955806f3c3563d0ea7334ae406f29a897255845c923c","integrity":"sha256-T80BFvf5PAVkxpVYBvPDVj0OpzNK5AbymolyVYRckjw="},"flags/1x1/bi-91c34eb431b26be67852782a0b93e1d7d577a925454d6c8cea00a0d872d2de8a.svg":{"logical_path":"flags/1x1/bi.svg","mtime":"2019-05-14T13:11:18+02:00","size":1048,"digest":"91c34eb431b26be67852782a0b93e1d7d577a925454d6c8cea00a0d872d2de8a","integrity":"sha256-kcNOtDGya+Z4UngqC5Ph19V3qSVFTWyM6gCg2HLS3oo="},"flags/4x3/bj-63bddb4268f5f8c2ed867041bcf058fb18fcd9d1e0799e01286fca2d5e961c7f.svg":{"logical_path":"flags/4x3/bj.svg","mtime":"2019-05-14T13:11:18+02:00","size":499,"digest":"63bddb4268f5f8c2ed867041bcf058fb18fcd9d1e0799e01286fca2d5e961c7f","integrity":"sha256-Y73bQmj1+MLthnBBvPBY+xj82dHgeZ4BKG/KLV6WHH8="},"flags/1x1/bj-e2606c5a8498c474a6b6708626b88108fcb73840344766566dc56f804279cdfc.svg":{"logical_path":"flags/1x1/bj.svg","mtime":"2019-05-14T13:11:18+02:00","size":502,"digest":"e2606c5a8498c474a6b6708626b88108fcb73840344766566dc56f804279cdfc","integrity":"sha256-4mBsWoSYxHSmtnCGJriBCPy3OEA0R2ZWbcVvgEJ5zfw="},"flags/4x3/bl-824a7265f48789d5e1ad5c5b0042a13a7d2d4357210e5bd8124fca19931e8c74.svg":{"logical_path":"flags/4x3/bl.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"824a7265f48789d5e1ad5c5b0042a13a7d2d4357210e5bd8124fca19931e8c74","integrity":"sha256-gkpyZfSHidXhrVxbAEKhOn0tQ1chDlvYEk/KGZMejHQ="},"flags/1x1/bl-ba6a7881b0ca72ac57aee4d823ae611ab4ad24a938ee9e01a7a4d5ae04cfccf6.svg":{"logical_path":"flags/1x1/bl.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"ba6a7881b0ca72ac57aee4d823ae611ab4ad24a938ee9e01a7a4d5ae04cfccf6","integrity":"sha256-ump4gbDKcqxXruTYI65hGrStJKk47p4Bp6TVrgTPzPY="},"flags/4x3/bm-2e2f09e5a4edf4b18afff581656f50b0b4c37783db29591ff00ca768f7f755bc.svg":{"logical_path":"flags/4x3/bm.svg","mtime":"2019-05-14T13:11:18+02:00","size":22650,"digest":"2e2f09e5a4edf4b18afff581656f50b0b4c37783db29591ff00ca768f7f755bc","integrity":"sha256-Li8J5aTt9LGK//WBZW9QsLTDd4PbKVkf8AynaPf3Vbw="},"flags/1x1/bm-f553f953f8784ea4d67a5197f5d808a67747eb8a1cb56990d6838e690090d2d6.svg":{"logical_path":"flags/1x1/bm.svg","mtime":"2019-05-14T13:11:18+02:00","size":22337,"digest":"f553f953f8784ea4d67a5197f5d808a67747eb8a1cb56990d6838e690090d2d6","integrity":"sha256-9VP5U/h4TqTWelGX9dgIpndH64octWmQ1oOOaQCQ0tY="},"flags/4x3/bn-bcf9967c12eb6397346cb5b960ae92efa41f314f780d09a3d7c81f5dacac4180.svg":{"logical_path":"flags/4x3/bn.svg","mtime":"2019-05-14T13:11:18+02:00","size":14387,"digest":"bcf9967c12eb6397346cb5b960ae92efa41f314f780d09a3d7c81f5dacac4180","integrity":"sha256-vPmWfBLrY5c0bLW5YK6S76QfMU94DQmj18gfXaysQYA="},"flags/1x1/bn-1d1aad3fe9fd33ce922eba33c9ae6047a5646349239c20d1bc7307ec6d19a043.svg":{"logical_path":"flags/1x1/bn.svg","mtime":"2019-05-14T13:11:18+02:00","size":14521,"digest":"1d1aad3fe9fd33ce922eba33c9ae6047a5646349239c20d1bc7307ec6d19a043","integrity":"sha256-HRqtP+n9M86SLrozya5gR6VkY0kjnCDRvHMH7G0ZoEM="},"flags/4x3/bo-fa423f2bb4ab6e8e9dd399ad73781ea8d9cbafd30f1b7ee0bcecfb9e7b75581e.svg":{"logical_path":"flags/4x3/bo.svg","mtime":"2019-05-14T13:11:18+02:00","size":118272,"digest":"fa423f2bb4ab6e8e9dd399ad73781ea8d9cbafd30f1b7ee0bcecfb9e7b75581e","integrity":"sha256-+kI/K7Srbo6d05mtc3geqNnLr9MPG37gvOz7nnt1WB4="},"flags/1x1/bo-f5faa29e40191e0c76070ac1a1d2a1f2b18e9cd358b8a77cefaed8efc49a265e.svg":{"logical_path":"flags/1x1/bo.svg","mtime":"2019-05-14T13:11:18+02:00","size":119850,"digest":"f5faa29e40191e0c76070ac1a1d2a1f2b18e9cd358b8a77cefaed8efc49a265e","integrity":"sha256-9fqinkAZHgx2BwrBodKh8rGOnNNYuKd8767Y78SaJl4="},"flags/4x3/bq-493c92ab19204c3ad319e6caba021df050132b99bd57a8f9b74131b78229c29e.svg":{"logical_path":"flags/4x3/bq.svg","mtime":"2019-05-14T13:11:18+02:00","size":227,"digest":"493c92ab19204c3ad319e6caba021df050132b99bd57a8f9b74131b78229c29e","integrity":"sha256-STySqxkgTDrTGebKugId8FATK5m9V6j5t0Ext4Ipwp4="},"flags/1x1/bq-6e30bbeabc2aa097f657a411984b3c23278a8fcce2fc016b1cd6d2262f672d33.svg":{"logical_path":"flags/1x1/bq.svg","mtime":"2019-05-14T13:11:18+02:00","size":231,"digest":"6e30bbeabc2aa097f657a411984b3c23278a8fcce2fc016b1cd6d2262f672d33","integrity":"sha256-bjC76rwqoJf2V6QRmEs8IyeKj8zi/AFrHNbSJi9nLTM="},"flags/4x3/br-cf3ba80ec2c9fd4d3c845c3a3c43a2b9d81cf90707a2918789e8b1f596833e01.svg":{"logical_path":"flags/4x3/br.svg","mtime":"2019-05-14T13:11:18+02:00","size":8244,"digest":"cf3ba80ec2c9fd4d3c845c3a3c43a2b9d81cf90707a2918789e8b1f596833e01","integrity":"sha256-zzuoDsLJ/U08hFw6PEOiudgc+QcHopGHieix9ZaDPgE="},"flags/1x1/br-7bf4e4b31650ac25f0bc6c86eb87491a7e5a8eac13acccfcbde44346c88728f6.svg":{"logical_path":"flags/1x1/br.svg","mtime":"2019-05-14T13:11:18+02:00","size":7852,"digest":"7bf4e4b31650ac25f0bc6c86eb87491a7e5a8eac13acccfcbde44346c88728f6","integrity":"sha256-e/TksxZQrCXwvGyG64dJGn5ajqwTrMz8veRDRsiHKPY="},"flags/4x3/bs-69f60b5fea96b67dd939e597099994921bb3dc3bcf31b8dee7cc45be2885c836.svg":{"logical_path":"flags/4x3/bs.svg","mtime":"2019-05-14T13:11:18+02:00","size":549,"digest":"69f60b5fea96b67dd939e597099994921bb3dc3bcf31b8dee7cc45be2885c836","integrity":"sha256-afYLX+qWtn3ZOeWXCZmUkhuz3DvPMbje58xFviiFyDY="},"flags/1x1/bs-f5d6acf7ef7a240dc09ac88710fd77fd3494501104392db74d5c540d482f2262.svg":{"logical_path":"flags/1x1/bs.svg","mtime":"2019-05-14T13:11:18+02:00","size":571,"digest":"f5d6acf7ef7a240dc09ac88710fd77fd3494501104392db74d5c540d482f2262","integrity":"sha256-9das9+96JA3AmsiHEP13/TSUUBEEOS23TVxUDUgvImI="},"flags/4x3/bt-6c20b0c00e12d5898be0239a0c66ce775debd0bd536de56a271859a0285a039e.svg":{"logical_path":"flags/4x3/bt.svg","mtime":"2019-05-14T13:11:18+02:00","size":25345,"digest":"6c20b0c00e12d5898be0239a0c66ce775debd0bd536de56a271859a0285a039e","integrity":"sha256-bCCwwA4S1YmL4COaDGbOd13r0L1TbeVqJxhZoChaA54="},"flags/1x1/bt-58de3ca9438811ef1920e2f84c4ba4ce32d01069f4d197ab5d577de6acbe0c85.svg":{"logical_path":"flags/1x1/bt.svg","mtime":"2019-05-14T13:11:18+02:00","size":25172,"digest":"58de3ca9438811ef1920e2f84c4ba4ce32d01069f4d197ab5d577de6acbe0c85","integrity":"sha256-WN48qUOIEe8ZIOL4TEukzjLQEGn00ZerXVd95qy+DIU="},"flags/4x3/bv-ff173190fc339b3cb8b6e8235bc5e373853d7127fd94cbc32ac737e839aeb586.svg":{"logical_path":"flags/4x3/bv.svg","mtime":"2019-05-14T13:11:18+02:00","size":582,"digest":"ff173190fc339b3cb8b6e8235bc5e373853d7127fd94cbc32ac737e839aeb586","integrity":"sha256-/xcxkPwzmzy4tugjW8Xjc4U9cSf9lMvDKsc36DmutYY="},"flags/1x1/bv-59616ff1a722959064c83927ca2e49c1fce42a9b18e91b9ecbb74f62527aff43.svg":{"logical_path":"flags/1x1/bv.svg","mtime":"2019-05-14T13:11:18+02:00","size":585,"digest":"59616ff1a722959064c83927ca2e49c1fce42a9b18e91b9ecbb74f62527aff43","integrity":"sha256-WWFv8acilZBkyDknyi5JwfzkKpsY6Ruey7dPYlJ6/0M="},"flags/4x3/bw-4bb1d3131b88c65b5decc67f7b44903e931bca2fcac841942591c599f0cbb850.svg":{"logical_path":"flags/4x3/bw.svg","mtime":"2019-05-14T13:11:18+02:00","size":255,"digest":"4bb1d3131b88c65b5decc67f7b44903e931bca2fcac841942591c599f0cbb850","integrity":"sha256-S7HTExuIxltd7MZ/e0SQPpMbyi/KyEGUJZHFmfDLuFA="},"flags/1x1/bw-e08f50c0836ca5858aed7b0526aed6fb630da8dc6b6b96bd9a476af599dc89d6.svg":{"logical_path":"flags/1x1/bw.svg","mtime":"2019-05-14T13:11:18+02:00","size":257,"digest":"e08f50c0836ca5858aed7b0526aed6fb630da8dc6b6b96bd9a476af599dc89d6","integrity":"sha256-4I9QwINspYWK7XsFJq7W+2MNqNxra5a9mkdq9ZncidY="},"flags/4x3/by-324ac96bfbe075781c664be3b9e2ac6b4d2a46dd2b418ca0920284f64394c7d4.svg":{"logical_path":"flags/4x3/by.svg","mtime":"2019-05-14T13:11:18+02:00","size":5998,"digest":"324ac96bfbe075781c664be3b9e2ac6b4d2a46dd2b418ca0920284f64394c7d4","integrity":"sha256-MkrJa/vgdXgcZkvjueKsa00qRt0rQYygkgKE9kOUx9Q="},"flags/1x1/by-37b80e8bf7e51fef99a8307d6dffb04ee164790ceeafef606d516ca333e9488a.svg":{"logical_path":"flags/1x1/by.svg","mtime":"2019-05-14T13:11:18+02:00","size":6105,"digest":"37b80e8bf7e51fef99a8307d6dffb04ee164790ceeafef606d516ca333e9488a","integrity":"sha256-N7gOi/flH++ZqDB9bf+wTuFkeQzur+9gbVFsozPpSIo="},"flags/4x3/bz-156fdc45f8c15c9520a1ea9fc0f395f294f02077408ea1938c222a37cfbb7f1d.svg":{"logical_path":"flags/4x3/bz.svg","mtime":"2019-05-14T13:11:18+02:00","size":46916,"digest":"156fdc45f8c15c9520a1ea9fc0f395f294f02077408ea1938c222a37cfbb7f1d","integrity":"sha256-FW/cRfjBXJUgoeqfwPOV8pTwIHdAjqGTjCIqN8+7fx0="},"flags/1x1/bz-24577d4e7b29b33ab3b1d37914c8479889baa7e8c8399c6d1c99faed31ab053a.svg":{"logical_path":"flags/1x1/bz.svg","mtime":"2019-05-14T13:11:18+02:00","size":47160,"digest":"24577d4e7b29b33ab3b1d37914c8479889baa7e8c8399c6d1c99faed31ab053a","integrity":"sha256-JFd9TnspszqzsdN5FMhHmIm6p+jIOZxtHJn67TGrBTo="},"flags/4x3/ca-0d57cab46d5dbb0012a5e4ae0a9efee3baee90d5d157950a6c5d67edf2daa58f.svg":{"logical_path":"flags/4x3/ca.svg","mtime":"2019-05-14T13:11:18+02:00","size":731,"digest":"0d57cab46d5dbb0012a5e4ae0a9efee3baee90d5d157950a6c5d67edf2daa58f","integrity":"sha256-DVfKtG1duwASpeSuCp7+47rukNXRV5UKbF1n7fLapY8="},"flags/1x1/ca-192a6fb0544e5a6f33a32149d62f1e7ac0a1d61c5c5afa57f3a42346ca8e8c90.svg":{"logical_path":"flags/1x1/ca.svg","mtime":"2019-05-14T13:11:18+02:00","size":712,"digest":"192a6fb0544e5a6f33a32149d62f1e7ac0a1d61c5c5afa57f3a42346ca8e8c90","integrity":"sha256-GSpvsFROWm8zoyFJ1i8eesCh1hxcWvpX86QjRsqOjJA="},"flags/4x3/cc-a35f2a9e10a28d6918ced65e0623b03bb2fbf1f20670b581bc0a409d33b4e843.svg":{"logical_path":"flags/4x3/cc.svg","mtime":"2019-05-14T13:11:18+02:00","size":3144,"digest":"a35f2a9e10a28d6918ced65e0623b03bb2fbf1f20670b581bc0a409d33b4e843","integrity":"sha256-o18qnhCijWkYztZeBiOwO7L78fIGcLWBvApAnTO06EM="},"flags/1x1/cc-d2025eefc9d30f724f3fcd95c0fd9f7938930ecb01af7e0cd6ee6553d7358eb6.svg":{"logical_path":"flags/1x1/cc.svg","mtime":"2019-05-14T13:11:18+02:00","size":3092,"digest":"d2025eefc9d30f724f3fcd95c0fd9f7938930ecb01af7e0cd6ee6553d7358eb6","integrity":"sha256-0gJe78nTD3JPP82VwP2feTiTDssBr34M1u5lU9c1jrY="},"flags/4x3/cd-5d2127c991b30522ae0a29d05facbc88728c050d7e333a60d614af1545459c5c.svg":{"logical_path":"flags/4x3/cd.svg","mtime":"2019-05-14T13:11:18+02:00","size":352,"digest":"5d2127c991b30522ae0a29d05facbc88728c050d7e333a60d614af1545459c5c","integrity":"sha256-XSEnyZGzBSKuCinQX6y8iHKMBQ1+Mzpg1hSvFUVFnFw="},"flags/1x1/cd-59dacf424d1c8c779db66c5b7f2a93a3c8f14976c2975ccfb07639676a1602e3.svg":{"logical_path":"flags/1x1/cd.svg","mtime":"2019-05-14T13:11:18+02:00","size":510,"digest":"59dacf424d1c8c779db66c5b7f2a93a3c8f14976c2975ccfb07639676a1602e3","integrity":"sha256-WdrPQk0cjHedtmxbfyqTo8jxSXbCl1zPsHY5Z2oWAuM="},"flags/4x3/cf-ac0aaffba354d848eba2501a402ee81dc96a56ad0acd3741ec9905e76c372e1e.svg":{"logical_path":"flags/4x3/cf.svg","mtime":"2019-05-14T13:11:18+02:00","size":689,"digest":"ac0aaffba354d848eba2501a402ee81dc96a56ad0acd3741ec9905e76c372e1e","integrity":"sha256-rAqv+6NU2EjrolAaQC7oHclqVq0KzTdB7JkF52w3Lh4="},"flags/1x1/cf-e637674faf7edcdad37182192d038448c157421ab0c69377d9b8e56ab2c0249d.svg":{"logical_path":"flags/1x1/cf.svg","mtime":"2019-05-14T13:11:18+02:00","size":635,"digest":"e637674faf7edcdad37182192d038448c157421ab0c69377d9b8e56ab2c0249d","integrity":"sha256-5jdnT69+3NrTcYIZLQOESMFXQhqwxpN32bjlarLAJJ0="},"flags/4x3/cg-3729f717c83c9df7d0543a1a5d4a506efe184bdfeb39f9260b4b63edf19d2538.svg":{"logical_path":"flags/4x3/cg.svg","mtime":"2019-05-14T13:11:18+02:00","size":484,"digest":"3729f717c83c9df7d0543a1a5d4a506efe184bdfeb39f9260b4b63edf19d2538","integrity":"sha256-Nyn3F8g8nffQVDoaXUpQbv4YS9/rOfkmC0tj7fGdJTg="},"flags/1x1/cg-8353ff1f251714b1b8905eec1722378426719955d0637d206d35d1dcfa68ddcf.svg":{"logical_path":"flags/1x1/cg.svg","mtime":"2019-05-14T13:11:18+02:00","size":472,"digest":"8353ff1f251714b1b8905eec1722378426719955d0637d206d35d1dcfa68ddcf","integrity":"sha256-g1P/HyUXFLG4kF7sFyI3hCZxmVXQY30gbTXR3Ppo3c8="},"flags/4x3/ch-6739edee6d1ef72c4ed97cfe723d3bb7f17e4df5390f3a4ae234f1ffdeece0cf.svg":{"logical_path":"flags/4x3/ch.svg","mtime":"2019-05-14T13:11:18+02:00","size":300,"digest":"6739edee6d1ef72c4ed97cfe723d3bb7f17e4df5390f3a4ae234f1ffdeece0cf","integrity":"sha256-Zznt7m0e9yxO2Xz+cj07t/F+TfU5DzpK4jTx/97s4M8="},"flags/1x1/ch-7c3dec465228981c57a90a3a7b3a6c42dd3e699230663e770b55008ce6d14208.svg":{"logical_path":"flags/1x1/ch.svg","mtime":"2019-05-14T13:11:18+02:00","size":298,"digest":"7c3dec465228981c57a90a3a7b3a6c42dd3e699230663e770b55008ce6d14208","integrity":"sha256-fD3sRlIomBxXqQo6ezpsQt0+aZIwZj53C1UAjObRQgg="},"flags/4x3/ci-3e076d13c9524149508c442f8f727424660124e3591280d8ae9bddf9d8272a1e.svg":{"logical_path":"flags/4x3/ci.svg","mtime":"2019-05-14T13:11:18+02:00","size":283,"digest":"3e076d13c9524149508c442f8f727424660124e3591280d8ae9bddf9d8272a1e","integrity":"sha256-PgdtE8lSQUlQjEQvj3J0JGYBJONZEoDYrpvd+dgnKh4="},"flags/1x1/ci-691a0a8577b7d555fc90dc7170adc9ec7571191cb3507c46c0e8516fd1778a91.svg":{"logical_path":"flags/1x1/ci.svg","mtime":"2019-05-14T13:11:18+02:00","size":286,"digest":"691a0a8577b7d555fc90dc7170adc9ec7571191cb3507c46c0e8516fd1778a91","integrity":"sha256-aRoKhXe31VX8kNxxcK3J7HVxGRyzUHxGwOhRb9F3ipE="},"flags/4x3/ck-9cff098e505afde9bf5166cb7b0c409178575633b913ce08c1c700d08c477db6.svg":{"logical_path":"flags/4x3/ck.svg","mtime":"2019-05-14T13:11:18+02:00","size":1887,"digest":"9cff098e505afde9bf5166cb7b0c409178575633b913ce08c1c700d08c477db6","integrity":"sha256-nP8JjlBa/em/UWbLewxAkXhXVjO5E84IwccA0IxHfbY="},"flags/1x1/ck-9c8dffa3bd5953d8a121780831f25b58738e67f3be71961894c56dfd25848c88.svg":{"logical_path":"flags/1x1/ck.svg","mtime":"2019-05-14T13:11:18+02:00","size":1846,"digest":"9c8dffa3bd5953d8a121780831f25b58738e67f3be71961894c56dfd25848c88","integrity":"sha256-nI3/o71ZU9ihIXgIMfJbWHOOZ/O+cZYYlMVt/SWEjIg="},"flags/4x3/cl-a4c57ec2bb9adcb67e1850256e5165227b764187d6941a38d95d0def5144699b.svg":{"logical_path":"flags/4x3/cl.svg","mtime":"2019-05-14T13:11:18+02:00","size":560,"digest":"a4c57ec2bb9adcb67e1850256e5165227b764187d6941a38d95d0def5144699b","integrity":"sha256-pMV+wrua3LZ+GFAlblFlInt2QYfWlBo42V0N71FEaZs="},"flags/1x1/cl-5a3e95cf63358e3911c97404818c2cddfd46414d8445e47d6976ee166c48926c.svg":{"logical_path":"flags/1x1/cl.svg","mtime":"2019-05-14T13:11:18+02:00","size":577,"digest":"5a3e95cf63358e3911c97404818c2cddfd46414d8445e47d6976ee166c48926c","integrity":"sha256-Wj6Vz2M1jjkRyXQEgYws3f1GQU2EReR9aXbuFmxIkmw="},"flags/4x3/cm-5dce9f36d92a61bdc0c482141bdb4f55bfcec0a2ecc745db643a7953e2e5a722.svg":{"logical_path":"flags/4x3/cm.svg","mtime":"2019-05-14T13:11:18+02:00","size":827,"digest":"5dce9f36d92a61bdc0c482141bdb4f55bfcec0a2ecc745db643a7953e2e5a722","integrity":"sha256-Xc6fNtkqYb3AxIIUG9tPVb/OwKLsx0XbZDp5U+LlpyI="},"flags/1x1/cm-d8d21f54c44df5df9edef227691384a4ad37c15ff57c8aa0dead684d19eac8cd.svg":{"logical_path":"flags/1x1/cm.svg","mtime":"2019-05-14T13:11:18+02:00","size":827,"digest":"d8d21f54c44df5df9edef227691384a4ad37c15ff57c8aa0dead684d19eac8cd","integrity":"sha256-2NIfVMRN9d+e3vInaROEpK03wV/1fIqg3q1oTRnqyM0="},"flags/4x3/cn-48ce1c2837bb806a6aaf8b7a9878b6d040c0d069a0ffca9a8a49e7a31aa30e7f.svg":{"logical_path":"flags/4x3/cn.svg","mtime":"2019-05-14T13:11:18+02:00","size":804,"digest":"48ce1c2837bb806a6aaf8b7a9878b6d040c0d069a0ffca9a8a49e7a31aa30e7f","integrity":"sha256-SM4cKDe7gGpqr4t6mHi20EDA0Gmg/8qaiknnoxqjDn8="},"flags/1x1/cn-e6be64c6c4a976e64d39bfe8a6ae4a5b1d38a6aa1b138ddcacf34a942dff50bc.svg":{"logical_path":"flags/1x1/cn.svg","mtime":"2019-05-14T13:11:18+02:00","size":746,"digest":"e6be64c6c4a976e64d39bfe8a6ae4a5b1d38a6aa1b138ddcacf34a942dff50bc","integrity":"sha256-5r5kxsSpduZNOb/opq5KWx04pqobE43crPNKlC3/ULw="},"flags/4x3/co-648d3ff596a0ecf3e85ac17c53abe1d7ca4759688e10a7a3a8b56f096ba6b6f7.svg":{"logical_path":"flags/4x3/co.svg","mtime":"2019-05-14T13:11:18+02:00","size":292,"digest":"648d3ff596a0ecf3e85ac17c53abe1d7ca4759688e10a7a3a8b56f096ba6b6f7","integrity":"sha256-ZI0/9Zag7PPoWsF8U6vh18pHWWiOEKejqLVvCWumtvc="},"flags/1x1/co-d3c16180c6bce630f762aff789104d10e9dbc949e740535a61396cd0ec34c1a1.svg":{"logical_path":"flags/1x1/co.svg","mtime":"2019-05-14T13:11:18+02:00","size":292,"digest":"d3c16180c6bce630f762aff789104d10e9dbc949e740535a61396cd0ec34c1a1","integrity":"sha256-08FhgMa85jD3Yq/3iRBNEOnbyUnnQFNaYTls0Ow0waE="},"flags/4x3/cr-84aec60f19bd33e1ac1a209155fec8d372e17cb59dc1346bb9124e5cc867375d.svg":{"logical_path":"flags/4x3/cr.svg","mtime":"2019-05-14T13:11:18+02:00","size":296,"digest":"84aec60f19bd33e1ac1a209155fec8d372e17cb59dc1346bb9124e5cc867375d","integrity":"sha256-hK7GDxm9M+GsGiCRVf7I03LhfLWdwTRruRJOXMhnN10="},"flags/1x1/cr-5371cf8bc5ad1a805155c1b3065e420a0a418c8d63b472bc545890289a365b35.svg":{"logical_path":"flags/1x1/cr.svg","mtime":"2019-05-14T13:11:18+02:00","size":296,"digest":"5371cf8bc5ad1a805155c1b3065e420a0a418c8d63b472bc545890289a365b35","integrity":"sha256-U3HPi8WtGoBRVcGzBl5CCgpBjI1jtHK8VFiQKJo2WzU="},"flags/4x3/cu-bb3f857e02aeab606120d9f164283f07a44b227f12aad7d6d344c7579f7b3ff0.svg":{"logical_path":"flags/4x3/cu.svg","mtime":"2019-05-14T13:11:18+02:00","size":619,"digest":"bb3f857e02aeab606120d9f164283f07a44b227f12aad7d6d344c7579f7b3ff0","integrity":"sha256-uz+FfgKuq2BhINnxZCg/B6RLIn8SqtfW00THV597P/A="},"flags/1x1/cu-02c0054169b874a8d231de1f45b2d0884de48848157734e0ddcd0f684c05c18d.svg":{"logical_path":"flags/1x1/cu.svg","mtime":"2019-05-14T13:11:18+02:00","size":576,"digest":"02c0054169b874a8d231de1f45b2d0884de48848157734e0ddcd0f684c05c18d","integrity":"sha256-AsAFQWm4dKjSMd4fRbLQiE3kiEgVdzTg3c0PaEwFwY0="},"flags/4x3/cv-90ee90ab59713454a218d8c300c71139e62655de80bfbea81df93142a529b81f.svg":{"logical_path":"flags/4x3/cv.svg","mtime":"2019-05-14T13:11:18+02:00","size":1414,"digest":"90ee90ab59713454a218d8c300c71139e62655de80bfbea81df93142a529b81f","integrity":"sha256-kO6Qq1lxNFSiGNjDAMcROeYmVd6Av76oHfkxQqUpuB8="},"flags/1x1/cv-2cf3eede97a468d28459ccc2271c28bb5b6029af2388b0301f6203be55e49308.svg":{"logical_path":"flags/1x1/cv.svg","mtime":"2019-05-14T13:11:18+02:00","size":1362,"digest":"2cf3eede97a468d28459ccc2271c28bb5b6029af2388b0301f6203be55e49308","integrity":"sha256-LPPu3pekaNKEWczCJxwou1tgKa8jiLAwH2IDvlXkkwg="},"flags/4x3/cw-d46beb7b10b40fa82cfd40eb86a3b3879f59f5da2a2f5ef91d121ab9b16c0aad.svg":{"logical_path":"flags/4x3/cw.svg","mtime":"2019-05-14T13:11:18+02:00","size":678,"digest":"d46beb7b10b40fa82cfd40eb86a3b3879f59f5da2a2f5ef91d121ab9b16c0aad","integrity":"sha256-1GvrexC0D6gs/UDrhqOzh59Z9doqL175HRIaubFsCq0="},"flags/1x1/cw-ba78c834e61b24a8a2b6bc7c80ab9f14e42c3c69415941ddb7c8c1f652ccd8b5.svg":{"logical_path":"flags/1x1/cw.svg","mtime":"2019-05-14T13:11:18+02:00","size":685,"digest":"ba78c834e61b24a8a2b6bc7c80ab9f14e42c3c69415941ddb7c8c1f652ccd8b5","integrity":"sha256-unjINOYbJKiitrx8gKufFOQsPGlBWUHdt8jB9lLM2LU="},"flags/4x3/cx-28187fb9d91bedc6f239b107d26eb6ec1cc2a0c7730810306c5a6b313c14f2b2.svg":{"logical_path":"flags/4x3/cx.svg","mtime":"2019-05-14T13:11:18+02:00","size":2469,"digest":"28187fb9d91bedc6f239b107d26eb6ec1cc2a0c7730810306c5a6b313c14f2b2","integrity":"sha256-KBh/udkb7cbyObEH0m627BzCoMdzCBAwbFprMTwU8rI="},"flags/1x1/cx-8ebe073d997f93d092a493300ea1d234c91aef80c6e8f431e88aa7f8e724f9a6.svg":{"logical_path":"flags/1x1/cx.svg","mtime":"2019-05-14T13:11:18+02:00","size":2508,"digest":"8ebe073d997f93d092a493300ea1d234c91aef80c6e8f431e88aa7f8e724f9a6","integrity":"sha256-jr4HPZl/k9CSpJMwDqHSNMka74DG6PQx6Iqn+Ock+aY="},"flags/4x3/cy-8d633ecabc7968bb8a869c62545f122aacbbc3e108c25ceb421bb8bc8734b9be.svg":{"logical_path":"flags/4x3/cy.svg","mtime":"2019-05-14T13:11:18+02:00","size":5949,"digest":"8d633ecabc7968bb8a869c62545f122aacbbc3e108c25ceb421bb8bc8734b9be","integrity":"sha256-jWM+yrx5aLuKhpxiVF8SKqy7w+EIwlzrQhu4vIc0ub4="},"flags/1x1/cy-6ef37fdd7518f18727bec1ed9741bb4d1f854dde7ef1a7e9fd2f4ba6291a7790.svg":{"logical_path":"flags/1x1/cy.svg","mtime":"2019-05-14T13:11:18+02:00","size":6053,"digest":"6ef37fdd7518f18727bec1ed9741bb4d1f854dde7ef1a7e9fd2f4ba6291a7790","integrity":"sha256-bvN/3XUY8YcnvsHtl0G7TR+FTd5+8afp/S9Lpikad5A="},"flags/4x3/cz-6c94e3d53fc1ae5982d8eb058b76d86f07d3fb4cd325698fea3291fa35504c56.svg":{"logical_path":"flags/4x3/cz.svg","mtime":"2019-05-14T13:11:18+02:00","size":481,"digest":"6c94e3d53fc1ae5982d8eb058b76d86f07d3fb4cd325698fea3291fa35504c56","integrity":"sha256-bJTj1T/BrlmC2OsFi3bYbwfT+0zTJWmP6jKR+jVQTFY="},"flags/1x1/cz-af9898ebd32559cdbea2fd17b351e5eedafccada6fbc6a2b7952cad78369817e.svg":{"logical_path":"flags/1x1/cz.svg","mtime":"2019-05-14T13:11:18+02:00","size":483,"digest":"af9898ebd32559cdbea2fd17b351e5eedafccada6fbc6a2b7952cad78369817e","integrity":"sha256-r5iY69MlWc2+ov0Xs1Hl7tr8ytpvvGoreVLK14NpgX4="},"flags/4x3/de-e7323083675d25107c85f0cea6534bd21d21e77e6d524d92e1b2d0a4e21117a1.svg":{"logical_path":"flags/4x3/de.svg","mtime":"2019-05-14T13:11:18+02:00","size":216,"digest":"e7323083675d25107c85f0cea6534bd21d21e77e6d524d92e1b2d0a4e21117a1","integrity":"sha256-5zIwg2ddJRB8hfDOplNL0h0h535tUk2S4bLQpOIRF6E="},"flags/1x1/de-fdb60146952d3b2d104310b28882a0ecde44d808240c3bab2cd6c302a538b266.svg":{"logical_path":"flags/1x1/de.svg","mtime":"2019-05-14T13:11:18+02:00","size":224,"digest":"fdb60146952d3b2d104310b28882a0ecde44d808240c3bab2cd6c302a538b266","integrity":"sha256-/bYBRpUtOy0QQxCyiIKg7N5E2AgkDDurLNbDAqU4smY="},"flags/4x3/dj-546da4a0dae9b1ab74dc6ac6076d0c706f37ef2a0d799342dd0345e11f770f03.svg":{"logical_path":"flags/4x3/dj.svg","mtime":"2019-05-14T13:11:18+02:00","size":588,"digest":"546da4a0dae9b1ab74dc6ac6076d0c706f37ef2a0d799342dd0345e11f770f03","integrity":"sha256-VG2koNrpsat03GrGB20McG837yoNeZNC3QNF4R93DwM="},"flags/1x1/dj-c0481b667f003d9d5a3c93861023a97a98224227ac19aa7e07b5b6edd35fe900.svg":{"logical_path":"flags/1x1/dj.svg","mtime":"2019-05-14T13:11:18+02:00","size":588,"digest":"c0481b667f003d9d5a3c93861023a97a98224227ac19aa7e07b5b6edd35fe900","integrity":"sha256-wEgbZn8APZ1aPJOGECOpepgiQiesGap+B7W27dNf6QA="},"flags/4x3/dk-a13735c0337ab4679cd8679508bf5e8067637ab611ca5c54172c621d740420e5.svg":{"logical_path":"flags/4x3/dk.svg","mtime":"2019-05-14T13:11:18+02:00","size":242,"digest":"a13735c0337ab4679cd8679508bf5e8067637ab611ca5c54172c621d740420e5","integrity":"sha256-oTc1wDN6tGec2GeVCL9egGdjerYRylxUFyxiHXQEIOU="},"flags/1x1/dk-822a3b8b6948f49aa81fe7620bd173453d9a45406a9680f24bad7e714e58cb7c.svg":{"logical_path":"flags/1x1/dk.svg","mtime":"2019-05-14T13:11:18+02:00","size":238,"digest":"822a3b8b6948f49aa81fe7620bd173453d9a45406a9680f24bad7e714e58cb7c","integrity":"sha256-gio7i2lI9JqoH+diC9FzRT2aRUBqloDyS61+cU5Yy3w="},"flags/4x3/dm-7713fabd3cf341694b4c1ef5d1379820773722b61c190234ac7416f2872e3940.svg":{"logical_path":"flags/4x3/dm.svg","mtime":"2019-05-14T13:11:18+02:00","size":16026,"digest":"7713fabd3cf341694b4c1ef5d1379820773722b61c190234ac7416f2872e3940","integrity":"sha256-dxP6vTzzQWlLTB710TeYIHc3IrYcGQI0rHQW8ocuOUA="},"flags/1x1/dm-33d984fc9897bb2a3bd16c6672b876effc1a8adc0c57ad122a16db54061e4e46.svg":{"logical_path":"flags/1x1/dm.svg","mtime":"2019-05-14T13:11:18+02:00","size":16514,"digest":"33d984fc9897bb2a3bd16c6672b876effc1a8adc0c57ad122a16db54061e4e46","integrity":"sha256-M9mE/JiXuyo70Wxmcrh27/waitwMV60SKhbbVAYeTkY="},"flags/4x3/do-714b6f307ea3a9c3d30348684b8574e8b7f5078f51649dfa97ae2a69a7108b4a.svg":{"logical_path":"flags/4x3/do.svg","mtime":"2019-05-14T13:11:18+02:00","size":394146,"digest":"714b6f307ea3a9c3d30348684b8574e8b7f5078f51649dfa97ae2a69a7108b4a","integrity":"sha256-cUtvMH6jqcPTA0hoS4V06Lf1B49RZJ36l64qaacQi0o="},"flags/1x1/do-d37306c4b346f89ea14739144374caad69652be31e8ce8e2504c9a0d422a4857.svg":{"logical_path":"flags/1x1/do.svg","mtime":"2019-05-14T13:11:18+02:00","size":391714,"digest":"d37306c4b346f89ea14739144374caad69652be31e8ce8e2504c9a0d422a4857","integrity":"sha256-03MGxLNG+J6hRzkUQ3TKrWllK+MejOjiUEyaDUIqSFc="},"flags/4x3/dz-a96e943c830558fe9823044aac2bfb3f6a4caf3bd3c57943352280a7f6b68cb1.svg":{"logical_path":"flags/4x3/dz.svg","mtime":"2019-05-14T13:11:18+02:00","size":301,"digest":"a96e943c830558fe9823044aac2bfb3f6a4caf3bd3c57943352280a7f6b68cb1","integrity":"sha256-qW6UPIMFWP6YIwRKrCv7P2pMrzvTxXlDNSKAp/a2jLE="},"flags/1x1/dz-09400d3b2c58e641a1641a687b81476761d05f9d0ff65861aeaa33c7f508cda4.svg":{"logical_path":"flags/1x1/dz.svg","mtime":"2019-05-14T13:11:18+02:00","size":312,"digest":"09400d3b2c58e641a1641a687b81476761d05f9d0ff65861aeaa33c7f508cda4","integrity":"sha256-CUANOyxY5kGhZBpoe4FHZ2HQX50P9lhhrqozx/UIzaQ="},"flags/4x3/ec-6762ba85ea0f7bb289b0aa6219c797e5243103d281b1462c61b61030fa329d5e.svg":{"logical_path":"flags/4x3/ec.svg","mtime":"2019-05-14T13:11:18+02:00","size":29417,"digest":"6762ba85ea0f7bb289b0aa6219c797e5243103d281b1462c61b61030fa329d5e","integrity":"sha256-Z2K6heoPe7KJsKpiGceX5SQxA9KBsUYsYbYQMPoynV4="},"flags/1x1/ec-7410a75a013738fbb8cbd756d967380e02ae54ca74e9ef9a41c4b583c2c2794f.svg":{"logical_path":"flags/1x1/ec.svg","mtime":"2019-05-14T13:11:18+02:00","size":29972,"digest":"7410a75a013738fbb8cbd756d967380e02ae54ca74e9ef9a41c4b583c2c2794f","integrity":"sha256-dBCnWgE3OPu4y9dW2Wc4DgKuVMp06e+aQcS1g8LCeU8="},"flags/4x3/ee-ce3b622214bd9eefb43373cae2811ea8cf6ef6a16bb6afbaa5bcaaea34024da0.svg":{"logical_path":"flags/4x3/ee.svg","mtime":"2019-05-14T13:11:18+02:00","size":324,"digest":"ce3b622214bd9eefb43373cae2811ea8cf6ef6a16bb6afbaa5bcaaea34024da0","integrity":"sha256-zjtiIhS9nu+0M3PK4oEeqM9u9qFrtq+6pbyq6jQCTaA="},"flags/1x1/ee-a207a8363b4dde44f59951501c2cb539419e92b0814b25d6448710ced52226f8.svg":{"logical_path":"flags/1x1/ee.svg","mtime":"2019-05-14T13:11:18+02:00","size":355,"digest":"a207a8363b4dde44f59951501c2cb539419e92b0814b25d6448710ced52226f8","integrity":"sha256-ogeoNjtN3kT1mVFQHCy1OUGekrCBSyXWRIcQztUiJvg="},"flags/4x3/eg-16a11fa93856ddc5fd46f8811adfc93660175724b20eaab55ff046855a352d2c.svg":{"logical_path":"flags/4x3/eg.svg","mtime":"2019-05-14T13:11:18+02:00","size":9978,"digest":"16a11fa93856ddc5fd46f8811adfc93660175724b20eaab55ff046855a352d2c","integrity":"sha256-FqEfqThW3cX9RviBGt/JNmAXVySyDqq1X/BGhVo1LSw="},"flags/1x1/eg-9f4d098c604326bbc3692f9e2f335dbc9b34bdf2706565bf448380f0a889d1e2.svg":{"logical_path":"flags/1x1/eg.svg","mtime":"2019-05-14T13:11:18+02:00","size":9992,"digest":"9f4d098c604326bbc3692f9e2f335dbc9b34bdf2706565bf448380f0a889d1e2","integrity":"sha256-n00JjGBDJrvDaS+eLzNdvJs0vfJwZWW/RIOA8KiJ0eI="},"flags/4x3/eh-9cf4a74d29c1a1afc4137deeb5b678d55c8fbdf8d181217267f3a5cce6a76a97.svg":{"logical_path":"flags/4x3/eh.svg","mtime":"2019-05-14T13:11:18+02:00","size":878,"digest":"9cf4a74d29c1a1afc4137deeb5b678d55c8fbdf8d181217267f3a5cce6a76a97","integrity":"sha256-nPSnTSnBoa/EE33utbZ41VyPvfjRgSFyZ/OlzOanapc="},"flags/1x1/eh-16c3327dbcf3483e634b3536b056324b5478212dae6d060f2ffb2ec961cd382f.svg":{"logical_path":"flags/1x1/eh.svg","mtime":"2019-05-14T13:11:18+02:00","size":828,"digest":"16c3327dbcf3483e634b3536b056324b5478212dae6d060f2ffb2ec961cd382f","integrity":"sha256-FsMyfbzzSD5jSzU2sFYyS1R4IS2ubQYPL/suyWHNOC8="},"flags/4x3/er-69a1e1e45289d1282df4b1e5ce5e712d69fbe314abd0c922353fce90814c543e.svg":{"logical_path":"flags/4x3/er.svg","mtime":"2019-05-14T13:11:18+02:00","size":3207,"digest":"69a1e1e45289d1282df4b1e5ce5e712d69fbe314abd0c922353fce90814c543e","integrity":"sha256-aaHh5FKJ0Sgt9LHlzl5xLWn74xSr0MkiNT/OkIFMVD4="},"flags/1x1/er-90d49408e58955cf1cf3185b0193e03c4a107042d47ef5e975dbbe10c6ef7f4a.svg":{"logical_path":"flags/1x1/er.svg","mtime":"2019-05-14T13:11:18+02:00","size":3395,"digest":"90d49408e58955cf1cf3185b0193e03c4a107042d47ef5e975dbbe10c6ef7f4a","integrity":"sha256-kNSUCOWJVc8c8xhbAZPgPEoQcELUfvXpddu+EMbvf0o="},"flags/4x3/es-50e59681c6b6412498bd9cbfc473abedc713db75c54c538b839db3c394d64499.svg":{"logical_path":"flags/4x3/es.svg","mtime":"2019-05-14T13:11:18+02:00","size":92574,"digest":"50e59681c6b6412498bd9cbfc473abedc713db75c54c538b839db3c394d64499","integrity":"sha256-UOWWgca2QSSYvZy/xHOr7ccT23XFTFOLg52zw5TWRJk="},"flags/1x1/es-29c68fa3c9c8c2adacdc2eb0162e9c2fa998faa408836900ec6285000476800d.svg":{"logical_path":"flags/1x1/es.svg","mtime":"2019-05-14T13:11:18+02:00","size":94269,"digest":"29c68fa3c9c8c2adacdc2eb0162e9c2fa998faa408836900ec6285000476800d","integrity":"sha256-KcaPo8nIwq2s3C6wFi6cL6mY+qQIg2kA7GKFAAR2gA0="},"flags/4x3/et-14263ba7ea890fd0a4d89a2791343ecb7acc89aab1fc2593e00a6093b22251df.svg":{"logical_path":"flags/4x3/et.svg","mtime":"2019-05-14T13:11:18+02:00","size":1243,"digest":"14263ba7ea890fd0a4d89a2791343ecb7acc89aab1fc2593e00a6093b22251df","integrity":"sha256-FCY7p+qJD9Ck2JonkTQ+y3rMiaqx/CWT4Apgk7IiUd8="},"flags/1x1/et-086eefb70e9adad537cc1c640a72cc0fa843ec7a9b06b2778aa98b2db055bfe6.svg":{"logical_path":"flags/1x1/et.svg","mtime":"2019-05-14T13:11:18+02:00","size":1242,"digest":"086eefb70e9adad537cc1c640a72cc0fa843ec7a9b06b2778aa98b2db055bfe6","integrity":"sha256-CG7vtw6a2tU3zBxkCnLMD6hD7HqbBrJ3iqmLLbBVv+Y="},"flags/4x3/fi-a4c41caa02a4f6803ea0d6c36de4beebf20d150e3df742b1369a4099c2ff648e.svg":{"logical_path":"flags/4x3/fi.svg","mtime":"2019-05-14T13:11:18+02:00","size":240,"digest":"a4c41caa02a4f6803ea0d6c36de4beebf20d150e3df742b1369a4099c2ff648e","integrity":"sha256-pMQcqgKk9oA+oNbDbeS+6/INFQ4990KxNppAmcL/ZI4="},"flags/1x1/fi-c5fdf318fac5fdfc94fe54268618e58a2bc5933617ead09992900f90cc25de9a.svg":{"logical_path":"flags/1x1/fi.svg","mtime":"2019-05-14T13:11:18+02:00","size":243,"digest":"c5fdf318fac5fdfc94fe54268618e58a2bc5933617ead09992900f90cc25de9a","integrity":"sha256-xf3zGPrF/fyU/lQmhhjliivFkzYX6tCZkpAPkMwl3po="},"flags/4x3/fj-cb0cc4b3b5c202f07487ee519f48b3eadb47035f5f2d5d3f99d20f81e48d6b79.svg":{"logical_path":"flags/4x3/fj.svg","mtime":"2019-05-14T13:11:18+02:00","size":27388,"digest":"cb0cc4b3b5c202f07487ee519f48b3eadb47035f5f2d5d3f99d20f81e48d6b79","integrity":"sha256-ywzEs7XCAvB0h+5Rn0iz6ttHA19fLV0/mdIPgeSNa3k="},"flags/1x1/fj-c2c7fd536841925e7647b2d510d6a0c58700e2a8ded0e42008fb93ffacde101f.svg":{"logical_path":"flags/1x1/fj.svg","mtime":"2019-05-14T13:11:18+02:00","size":27519,"digest":"c2c7fd536841925e7647b2d510d6a0c58700e2a8ded0e42008fb93ffacde101f","integrity":"sha256-wsf9U2hBkl52R7LVENagxYcA4qje0OQgCPuT/6zeEB8="},"flags/4x3/fk-cb61eaa0d7221823f7d17de59ea88ed16b506f9585ab0c7291cf839449d82968.svg":{"logical_path":"flags/4x3/fk.svg","mtime":"2019-05-14T13:11:18+02:00","size":30453,"digest":"cb61eaa0d7221823f7d17de59ea88ed16b506f9585ab0c7291cf839449d82968","integrity":"sha256-y2HqoNciGCP30X3lnqiO0WtQb5WFqwxykc+DlEnYKWg="},"flags/1x1/fk-a871742380ae157d1211a63cc35cd3621b1bf6de6d67e4a8e3565ad200b1d8cf.svg":{"logical_path":"flags/1x1/fk.svg","mtime":"2019-05-14T13:11:18+02:00","size":30648,"digest":"a871742380ae157d1211a63cc35cd3621b1bf6de6d67e4a8e3565ad200b1d8cf","integrity":"sha256-qHF0I4CuFX0SEaY8w1zTYhsb9t5tZ+So41Za0gCx2M8="},"flags/4x3/fm-079b937562a9a412aae8fb762b571ddb49bf23627943c97247b6a9bbdb768153.svg":{"logical_path":"flags/4x3/fm.svg","mtime":"2019-05-14T13:11:18+02:00","size":773,"digest":"079b937562a9a412aae8fb762b571ddb49bf23627943c97247b6a9bbdb768153","integrity":"sha256-B5uTdWKppBKq6Pt2K1cd20m/I2J5Q8lyR7apu9t2gVM="},"flags/1x1/fm-dbec73633ecd8a6c50f56d54df36bbe6a2f8fb534ac7658477c82cad14a806a8.svg":{"logical_path":"flags/1x1/fm.svg","mtime":"2019-05-14T13:11:18+02:00","size":763,"digest":"dbec73633ecd8a6c50f56d54df36bbe6a2f8fb534ac7658477c82cad14a806a8","integrity":"sha256-2+xzYz7NimxQ9W1U3za75qL4+1NKx2WEd8gsrRSoBqg="},"flags/4x3/fo-27279c2481bb1cb3e44850a948987d6a8411acffa770c3aecd1b76d4c5853413.svg":{"logical_path":"flags/4x3/fo.svg","mtime":"2019-05-14T13:11:18+02:00","size":567,"digest":"27279c2481bb1cb3e44850a948987d6a8411acffa770c3aecd1b76d4c5853413","integrity":"sha256-JyecJIG7HLPkSFCpSJh9aoQRrP+ncMOuzRt21MWFNBM="},"flags/1x1/fo-7cb4fdbba1c7223702d843cb0709ddc799f89f909dfe101e3e36d6bf36c3e67f.svg":{"logical_path":"flags/1x1/fo.svg","mtime":"2019-05-14T13:11:18+02:00","size":537,"digest":"7cb4fdbba1c7223702d843cb0709ddc799f89f909dfe101e3e36d6bf36c3e67f","integrity":"sha256-fLT9u6HHIjcC2EPLBwndx5n4n5Cd/hAePjbWvzbD5n8="},"flags/4x3/fr-30ed2f68dc9a17927643640f48f3d2a858bd041770547035349c6e79713cd84e.svg":{"logical_path":"flags/4x3/fr.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"30ed2f68dc9a17927643640f48f3d2a858bd041770547035349c6e79713cd84e","integrity":"sha256-MO0vaNyaF5J2Q2QPSPPSqFi9BBdwVHA1NJxueXE82E4="},"flags/1x1/fr-6b849151204c66fa661c30b34e62919a13b9e66b7cd37a4fc8962e8e0baf9bdc.svg":{"logical_path":"flags/1x1/fr.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"6b849151204c66fa661c30b34e62919a13b9e66b7cd37a4fc8962e8e0baf9bdc","integrity":"sha256-a4SRUSBMZvpmHDCzTmKRmhO55mt803pPyJYujguvm9w="},"flags/4x3/ga-e3840f9d5bd6ee08db748d37a534500b837bee0f8ce65987b2f099a6afd2cc63.svg":{"logical_path":"flags/4x3/ga.svg","mtime":"2019-05-14T13:11:18+02:00","size":277,"digest":"e3840f9d5bd6ee08db748d37a534500b837bee0f8ce65987b2f099a6afd2cc63","integrity":"sha256-44QPnVvW7gjbdI03pTRQC4N77g+M5lmHsvCZpq/SzGM="},"flags/1x1/ga-9eafd5388042b3d2258ac6223075b726426210136b9851b637973105721b64d9.svg":{"logical_path":"flags/1x1/ga.svg","mtime":"2019-05-14T13:11:18+02:00","size":281,"digest":"9eafd5388042b3d2258ac6223075b726426210136b9851b637973105721b64d9","integrity":"sha256-nq/VOIBCs9IlisYiMHW3JkJiEBNrmFG2N5cxBXIbZNk="},"flags/4x3/gb-ce93c8a6b974d63998e263f6d25f898fc20580a28464457f2f4463b687e4fe8d.svg":{"logical_path":"flags/4x3/gb.svg","mtime":"2019-05-14T13:11:18+02:00","size":834,"digest":"ce93c8a6b974d63998e263f6d25f898fc20580a28464457f2f4463b687e4fe8d","integrity":"sha256-zpPIprl01jmY4mP20l+Jj8IFgKKEZEV/L0Rjtofk/o0="},"flags/1x1/gb-1d93e1ce2e2e10c1709e4dc50ac956c007b2c1a63a4bc22ddfd64354f79ad457.svg":{"logical_path":"flags/1x1/gb.svg","mtime":"2019-05-14T13:11:18+02:00","size":792,"digest":"1d93e1ce2e2e10c1709e4dc50ac956c007b2c1a63a4bc22ddfd64354f79ad457","integrity":"sha256-HZPhzi4uEMFwnk3FCslWwAeywaY6S8It39ZDVPea1Fc="},"flags/4x3/gd-7c3a6b6068bbd9a6abc98c2297dd4acd5e31022e5a4210fc0e1205ec28498fa2.svg":{"logical_path":"flags/4x3/gd.svg","mtime":"2019-05-14T13:11:18+02:00","size":1694,"digest":"7c3a6b6068bbd9a6abc98c2297dd4acd5e31022e5a4210fc0e1205ec28498fa2","integrity":"sha256-fDprYGi72aaryYwil91KzV4xAi5aQhD8DhIF7ChJj6I="},"flags/1x1/gd-2310bc03d9e8ddc8599b40891bfb10b812b07023881599a7e02e3028d1bc9ca8.svg":{"logical_path":"flags/1x1/gd.svg","mtime":"2019-05-14T13:11:18+02:00","size":1834,"digest":"2310bc03d9e8ddc8599b40891bfb10b812b07023881599a7e02e3028d1bc9ca8","integrity":"sha256-IxC8A9no3chZm0CJG/sQuBKwcCOIFZmn4C4wKNG8nKg="},"flags/4x3/ge-501c0135fb8c377dbd2859ff6290b47ef4907a8e2ab2ae1e39116b716db6795f.svg":{"logical_path":"flags/4x3/ge.svg","mtime":"2019-05-14T13:11:18+02:00","size":1400,"digest":"501c0135fb8c377dbd2859ff6290b47ef4907a8e2ab2ae1e39116b716db6795f","integrity":"sha256-UBwBNfuMN329KFn/YpC0fvSQeo4qsq4eORFrcW22eV8="},"flags/1x1/ge-ca9ee36883ec12048fbb7fbbfaf231c0d4848ae0b07dab74a46d53b7b34d8114.svg":{"logical_path":"flags/1x1/ge.svg","mtime":"2019-05-14T13:11:18+02:00","size":1544,"digest":"ca9ee36883ec12048fbb7fbbfaf231c0d4848ae0b07dab74a46d53b7b34d8114","integrity":"sha256-yp7jaIPsEgSPu3+7+vIxwNSEiuCwfat0pG1Tt7NNgRQ="},"flags/4x3/gf-7c165f90bfe6ac3674903632182221a992f017ff706354b1761002382e89c2c2.svg":{"logical_path":"flags/4x3/gf.svg","mtime":"2019-05-14T13:11:18+02:00","size":261,"digest":"7c165f90bfe6ac3674903632182221a992f017ff706354b1761002382e89c2c2","integrity":"sha256-fBZfkL/mrDZ0kDYyGCIhqZLwF/9wY1SxdhACOC6JwsI="},"flags/1x1/gf-8838337b15cdcf143fac16c714e8dbf2d893d2ea8f1c8ef06dadcb652dfec41c.svg":{"logical_path":"flags/1x1/gf.svg","mtime":"2019-05-14T13:11:18+02:00","size":264,"digest":"8838337b15cdcf143fac16c714e8dbf2d893d2ea8f1c8ef06dadcb652dfec41c","integrity":"sha256-iDgzexXNzxQ/rBbHFOjb8tiT0uqPHI7wba3LZS3+xBw="},"flags/4x3/gg-2c7bfc50d5bcd374b5f6107974d06af24e70edba31ad71a225e0c2ecc2d6e778.svg":{"logical_path":"flags/4x3/gg.svg","mtime":"2019-05-14T13:11:18+02:00","size":598,"digest":"2c7bfc50d5bcd374b5f6107974d06af24e70edba31ad71a225e0c2ecc2d6e778","integrity":"sha256-LHv8UNW803S19hB5dNBq8k5w7boxrXGiJeDC7MLW53g="},"flags/1x1/gg-509489b1792831bb27d6975c76aa0a2ac2fa2c3906bcf844f616de5e0fbbc359.svg":{"logical_path":"flags/1x1/gg.svg","mtime":"2019-05-14T13:11:18+02:00","size":628,"digest":"509489b1792831bb27d6975c76aa0a2ac2fa2c3906bcf844f616de5e0fbbc359","integrity":"sha256-UJSJsXkoMbsn1pdcdqoKKsL6LDkGvPhE9hbeXg+7w1k="},"flags/4x3/gh-79c187756e93df22fae571ad9419629c5247c016e32a74471e0d461048fdf5cf.svg":{"logical_path":"flags/4x3/gh.svg","mtime":"2019-05-14T13:11:18+02:00","size":286,"digest":"79c187756e93df22fae571ad9419629c5247c016e32a74471e0d461048fdf5cf","integrity":"sha256-ecGHdW6T3yL65XGtlBlinFJHwBbjKnRHHg1GEEj99c8="},"flags/1x1/gh-e7bf18e6337982ee31e3673ab93e722b3410b7a4c202656a4bc3887d8656286b.svg":{"logical_path":"flags/1x1/gh.svg","mtime":"2019-05-14T13:11:18+02:00","size":299,"digest":"e7bf18e6337982ee31e3673ab93e722b3410b7a4c202656a4bc3887d8656286b","integrity":"sha256-578Y5jN5gu4x42c6uT5yKzQQt6TCAmVqS8OIfYZWKGs="},"flags/4x3/gi-ed99b369c8c77e64abd59fab1f28155d71b4378b49625c66ab0ab6dff4f88087.svg":{"logical_path":"flags/4x3/gi.svg","mtime":"2019-05-14T13:11:18+02:00","size":2972,"digest":"ed99b369c8c77e64abd59fab1f28155d71b4378b49625c66ab0ab6dff4f88087","integrity":"sha256-7ZmzacjHfmSr1Z+rHygVXXG0N4tJYlxmqwq23/T4gIc="},"flags/1x1/gi-2e563e96e766e13c0a9c5a3a372059a44739bb696e853d71a6f6b08c491dfb9a.svg":{"logical_path":"flags/1x1/gi.svg","mtime":"2019-05-14T13:11:18+02:00","size":2964,"digest":"2e563e96e766e13c0a9c5a3a372059a44739bb696e853d71a6f6b08c491dfb9a","integrity":"sha256-LlY+ludm4TwKnFo6NyBZpEc5u2luhT1xpvawjEkd+5o="},"flags/4x3/gl-612e560dbad68d540be672b80e22c54db43d6e2070523e81c156ccd6b3fc4260.svg":{"logical_path":"flags/4x3/gl.svg","mtime":"2019-05-14T13:11:18+02:00","size":229,"digest":"612e560dbad68d540be672b80e22c54db43d6e2070523e81c156ccd6b3fc4260","integrity":"sha256-YS5WDbrWjVQL5nK4DiLFTbQ9biBwUj6BwVbM1rP8QmA="},"flags/1x1/gl-a9bb35d2b9ff27638658d9ad6b9e2c4f452072b9a80b508d32e76d37bf62cf6e.svg":{"logical_path":"flags/1x1/gl.svg","mtime":"2019-05-14T13:11:18+02:00","size":243,"digest":"a9bb35d2b9ff27638658d9ad6b9e2c4f452072b9a80b508d32e76d37bf62cf6e","integrity":"sha256-qbs10rn/J2OGWNmta54sT0UgcrmoC1CNMudtN79iz24="},"flags/4x3/gm-4a6f9670a41548cceaced2b728e4bc56acbc4a3ba5544e7a097f7dae7a8bb045.svg":{"logical_path":"flags/4x3/gm.svg","mtime":"2019-05-14T13:11:18+02:00","size":543,"digest":"4a6f9670a41548cceaced2b728e4bc56acbc4a3ba5544e7a097f7dae7a8bb045","integrity":"sha256-Sm+WcKQVSMzqztK3KOS8Vqy8SjulVE56CX99rnqLsEU="},"flags/1x1/gm-b67f9f6bce2f8c8700c198de8bfafac72d01b8a1e55b77f71e8cafdc58f8af5c.svg":{"logical_path":"flags/1x1/gm.svg","mtime":"2019-05-14T13:11:18+02:00","size":385,"digest":"b67f9f6bce2f8c8700c198de8bfafac72d01b8a1e55b77f71e8cafdc58f8af5c","integrity":"sha256-tn+fa84vjIcAwZjei/r6xy0BuKHlW3f3Hoyv3Fj4r1w="},"flags/4x3/gn-873b4eb52f34c7558bef93cfd1b82117b5c32c9fbc0610f8821ccd22f28abe28.svg":{"logical_path":"flags/4x3/gn.svg","mtime":"2019-05-14T13:11:18+02:00","size":298,"digest":"873b4eb52f34c7558bef93cfd1b82117b5c32c9fbc0610f8821ccd22f28abe28","integrity":"sha256-hztOtS80x1WL75PP0bghF7XDLJ+8BhD4ghzNIvKKvig="},"flags/1x1/gn-72f51dc30cf0ed5459ad0f239cf3043eac05ece75945bcaf4ea6653af868c504.svg":{"logical_path":"flags/1x1/gn.svg","mtime":"2019-05-14T13:11:18+02:00","size":298,"digest":"72f51dc30cf0ed5459ad0f239cf3043eac05ece75945bcaf4ea6653af868c504","integrity":"sha256-cvUdwwzw7VRZrQ8jnPMEPqwF7OdZRbyvTqZlOvhoxQQ="},"flags/4x3/gp-4559cad3eb2d173214161d16b0237c68f5c817749a39c862fa7b23dfb4aee923.svg":{"logical_path":"flags/4x3/gp.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"4559cad3eb2d173214161d16b0237c68f5c817749a39c862fa7b23dfb4aee923","integrity":"sha256-RVnK0+stFzIUFh0WsCN8aPXIF3SaOchi+nsj37Su6SM="},"flags/1x1/gp-d6669532054db5b7e441f4858c28920246a65ca3e8a15518c64c7bbb4f9c6416.svg":{"logical_path":"flags/1x1/gp.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"d6669532054db5b7e441f4858c28920246a65ca3e8a15518c64c7bbb4f9c6416","integrity":"sha256-1maVMgVNtbfkQfSFjCiSAkamXKPooVUYxkx7u0+cZBY="},"flags/4x3/gq-0c8dfe7f9543307056bbe6d6e44a16c17201228e5344d5afec1ccf1b9a5eb2f9.svg":{"logical_path":"flags/4x3/gq.svg","mtime":"2019-05-14T13:11:18+02:00","size":5188,"digest":"0c8dfe7f9543307056bbe6d6e44a16c17201228e5344d5afec1ccf1b9a5eb2f9","integrity":"sha256-DI3+f5VDMHBWu+bW5EoWwXIBIo5TRNWv7BzPG5pesvk="},"flags/1x1/gq-ecb761e6db59b9bf8ba37533eaf0c60b7fcc7c0dfa2fcf281ee84c970dcb10f8.svg":{"logical_path":"flags/1x1/gq.svg","mtime":"2019-05-14T13:11:18+02:00","size":5280,"digest":"ecb761e6db59b9bf8ba37533eaf0c60b7fcc7c0dfa2fcf281ee84c970dcb10f8","integrity":"sha256-7Ldh5ttZub+Lo3Uz6vDGC3/MfA36L88oHuhMlw3LEPg="},"flags/4x3/gr-4a4086310397bffa682d439be8650a9e28d94e32963b6411b61435292ac4cf80.svg":{"logical_path":"flags/4x3/gr.svg","mtime":"2019-05-14T13:11:18+02:00","size":818,"digest":"4a4086310397bffa682d439be8650a9e28d94e32963b6411b61435292ac4cf80","integrity":"sha256-SkCGMQOXv/poLUOb6GUKnijZTjKWO2QRthQ1KSrEz4A="},"flags/1x1/gr-0cbd171892c0568b055d3b6585d58ac13dd60dfbcfad16eda1f4f9ead11dd16f.svg":{"logical_path":"flags/1x1/gr.svg","mtime":"2019-05-14T13:11:18+02:00","size":875,"digest":"0cbd171892c0568b055d3b6585d58ac13dd60dfbcfad16eda1f4f9ead11dd16f","integrity":"sha256-DL0XGJLAVosFXTtlhdWKwT3WDfvPrRbtofT56tEd0W8="},"flags/4x3/gs-e45169a93a9e94c15f5cb765a6c863319171fb9b4dce56094411829cd688d486.svg":{"logical_path":"flags/4x3/gs.svg","mtime":"2019-05-14T13:11:18+02:00","size":34658,"digest":"e45169a93a9e94c15f5cb765a6c863319171fb9b4dce56094411829cd688d486","integrity":"sha256-5FFpqTqelMFfXLdlpshjMZFx+5tNzlYJRBGCnNaI1IY="},"flags/1x1/gs-3efc9e1b32961f9aa9d7faa2626e596282b63d049f6717c2378b28e3f508e79a.svg":{"logical_path":"flags/1x1/gs.svg","mtime":"2019-05-14T13:11:18+02:00","size":35151,"digest":"3efc9e1b32961f9aa9d7faa2626e596282b63d049f6717c2378b28e3f508e79a","integrity":"sha256-PvyeGzKWH5qp1/qiYm5ZYoK2PQSfZxfCN4so4/UI55o="},"flags/4x3/gt-64a7345cf66facf7f323d2142aebb4172191108a78ac7493b1a6077b78ac8ec5.svg":{"logical_path":"flags/4x3/gt.svg","mtime":"2019-05-14T13:11:18+02:00","size":37857,"digest":"64a7345cf66facf7f323d2142aebb4172191108a78ac7493b1a6077b78ac8ec5","integrity":"sha256-ZKc0XPZvrPfzI9IUKuu0FyGREIp4rHSTsaYHe3isjsU="},"flags/1x1/gt-436a2af3d95cf3cb13ded897f319cfd6e2c087d678ad0e971c198b0d2c029911.svg":{"logical_path":"flags/1x1/gt.svg","mtime":"2019-05-14T13:11:18+02:00","size":37857,"digest":"436a2af3d95cf3cb13ded897f319cfd6e2c087d678ad0e971c198b0d2c029911","integrity":"sha256-Q2oq89lc88sT3tiX8xnP1uLAh9Z4rQ6XHBmLDSwCmRE="},"flags/4x3/gu-f560822ee237e5277829e63613a615a2ee3d8cc6196dffffe0f0d56a49b11c53.svg":{"logical_path":"flags/4x3/gu.svg","mtime":"2019-05-14T13:11:18+02:00","size":4859,"digest":"f560822ee237e5277829e63613a615a2ee3d8cc6196dffffe0f0d56a49b11c53","integrity":"sha256-9WCCLuI35Sd4KeY2E6YVou49jMYZbf//4PDVakmxHFM="},"flags/1x1/gu-a71c9d290c66c1a0929b05436dc6a8229b1147d7cc62336e04c9adf697030450.svg":{"logical_path":"flags/1x1/gu.svg","mtime":"2019-05-14T13:11:18+02:00","size":4644,"digest":"a71c9d290c66c1a0929b05436dc6a8229b1147d7cc62336e04c9adf697030450","integrity":"sha256-pxydKQxmwaCSmwVDbcaoIpsRR9fMYjNuBMmt9pcDBFA="},"flags/4x3/gw-0dc9ec17735ed605b68672947ce55c49a4ec1551491ccd121f482c1875cdf219.svg":{"logical_path":"flags/4x3/gw.svg","mtime":"2019-05-14T13:11:18+02:00","size":816,"digest":"0dc9ec17735ed605b68672947ce55c49a4ec1551491ccd121f482c1875cdf219","integrity":"sha256-DcnsF3Ne1gW2hnKUfOVcSaTsFVFJHM0SH0gsGHXN8hk="},"flags/1x1/gw-7868c305e4a64b0d8ebfd3f7cb8c881841d71a7e0c3ead2683fe503c80de0674.svg":{"logical_path":"flags/1x1/gw.svg","mtime":"2019-05-14T13:11:18+02:00","size":892,"digest":"7868c305e4a64b0d8ebfd3f7cb8c881841d71a7e0c3ead2683fe503c80de0674","integrity":"sha256-eGjDBeSmSw2Ov9P3y4yIGEHXGn4MPq0mg/5QPIDeBnQ="},"flags/4x3/gy-c9126e544c62508abfb898f0af0bd79c46f4c767c9ed6f928418a24b0f246d85.svg":{"logical_path":"flags/4x3/gy.svg","mtime":"2019-05-14T13:11:18+02:00","size":491,"digest":"c9126e544c62508abfb898f0af0bd79c46f4c767c9ed6f928418a24b0f246d85","integrity":"sha256-yRJuVExiUIq/uJjwrwvXnEb0x2fJ7W+ShBiiSw8kbYU="},"flags/1x1/gy-0e3b849ce460f8ab1ec7cf66a25be1ba91e89b72d8b0aa679a0553464f37a972.svg":{"logical_path":"flags/1x1/gy.svg","mtime":"2019-05-14T13:11:18+02:00","size":484,"digest":"0e3b849ce460f8ab1ec7cf66a25be1ba91e89b72d8b0aa679a0553464f37a972","integrity":"sha256-DjuEnORg+Ksex89molvhupHom3LYsKpnmgVTRk83qXI="},"flags/4x3/hk-cece9126ccbf9151feadfed75791ebf32d4a16beab12f182404519d0cc24eec7.svg":{"logical_path":"flags/4x3/hk.svg","mtime":"2019-05-14T13:11:18+02:00","size":3511,"digest":"cece9126ccbf9151feadfed75791ebf32d4a16beab12f182404519d0cc24eec7","integrity":"sha256-zs6RJsy/kVH+rf7XV5Hr8y1KFr6rEvGCQEUZ0Mwk7sc="},"flags/1x1/hk-9fad00e06f9034877149394914baa2bc3292223b0e32df2b1f9399d4de6e167d.svg":{"logical_path":"flags/1x1/hk.svg","mtime":"2019-05-14T13:11:18+02:00","size":3561,"digest":"9fad00e06f9034877149394914baa2bc3292223b0e32df2b1f9399d4de6e167d","integrity":"sha256-n60A4G+QNIdxSTlJFLqivDKSIjsOMt8rH5OZ1N5uFn0="},"flags/4x3/hm-4b4923b81da24d62ebf31a9bc0addf76beef84593374b1cbd03ba19f3b12e3e9.svg":{"logical_path":"flags/4x3/hm.svg","mtime":"2019-05-14T13:11:18+02:00","size":1328,"digest":"4b4923b81da24d62ebf31a9bc0addf76beef84593374b1cbd03ba19f3b12e3e9","integrity":"sha256-S0kjuB2iTWLr8xqbwK3fdr7vhFkzdLHL0DuhnzsS4+k="},"flags/1x1/hm-776c822113a22e83581234d05f40bfc0ed38b60648d87f513f3da3fff96ffb61.svg":{"logical_path":"flags/1x1/hm.svg","mtime":"2019-05-14T13:11:18+02:00","size":1312,"digest":"776c822113a22e83581234d05f40bfc0ed38b60648d87f513f3da3fff96ffb61","integrity":"sha256-d2yCIROiLoNYEjTQX0C/wO04tgZI2H9RPz2j//lv+2E="},"flags/4x3/hn-855c830786283862a5f399e0d69dffe52b6223b91b32e31b55d55c82f2fa32c9.svg":{"logical_path":"flags/4x3/hn.svg","mtime":"2019-05-14T13:11:18+02:00","size":1115,"digest":"855c830786283862a5f399e0d69dffe52b6223b91b32e31b55d55c82f2fa32c9","integrity":"sha256-hVyDB4YoOGKl85ng1p3/5StiI7kbMuMbVdVcgvL6Msk="},"flags/1x1/hn-64c38bac9403417c4e276bf5536d284fc5410fc04b80acd39a961d298f430dbd.svg":{"logical_path":"flags/1x1/hn.svg","mtime":"2019-05-14T13:11:18+02:00","size":1119,"digest":"64c38bac9403417c4e276bf5536d284fc5410fc04b80acd39a961d298f430dbd","integrity":"sha256-ZMOLrJQDQXxOJ2v1U20oT8VBD8BLgKzTmpYdKY9DDb0="},"flags/4x3/hr-c8cad861f7398a22b9d27ea682d2778df0dde8e146d30142b5294daf988854af.svg":{"logical_path":"flags/4x3/hr.svg","mtime":"2019-05-14T13:11:18+02:00","size":41617,"digest":"c8cad861f7398a22b9d27ea682d2778df0dde8e146d30142b5294daf988854af","integrity":"sha256-yMrYYfc5iiK50n6mgtJ3jfDd6OFG0wFCtSlNr5iIVK8="},"flags/1x1/hr-60c093df6760e4cc6abe26c37a52be3b51458f02712f18e11f08b07dc623b489.svg":{"logical_path":"flags/1x1/hr.svg","mtime":"2019-05-14T13:11:18+02:00","size":41808,"digest":"60c093df6760e4cc6abe26c37a52be3b51458f02712f18e11f08b07dc623b489","integrity":"sha256-YMCT32dg5MxqvibDelK+O1FFjwJxLxjhHwiwfcYjtIk="},"flags/4x3/ht-fe81da06228fa36e7f211bec0d9f0c020f5b9c7f81534b4cb2251848aa276b16.svg":{"logical_path":"flags/4x3/ht.svg","mtime":"2019-05-14T13:11:18+02:00","size":15231,"digest":"fe81da06228fa36e7f211bec0d9f0c020f5b9c7f81534b4cb2251848aa276b16","integrity":"sha256-/oHaBiKPo25/IRvsDZ8MAg9bnH+BU0tMsiUYSKonaxY="},"flags/1x1/ht-dd0197c078859c5a66ff3a51d3a3f92809768e36bfabdec0fc0ab60d068afcd9.svg":{"logical_path":"flags/1x1/ht.svg","mtime":"2019-05-14T13:11:18+02:00","size":15317,"digest":"dd0197c078859c5a66ff3a51d3a3f92809768e36bfabdec0fc0ab60d068afcd9","integrity":"sha256-3QGXwHiFnFpm/zpR06P5KAl2jja/q97A/Aq2DQaK/Nk="},"flags/4x3/hu-9aa998e636687aede491e307f3d068dbe58f2d90bfdfaec0e7ad03baa5b36344.svg":{"logical_path":"flags/4x3/hu.svg","mtime":"2019-05-14T13:11:18+02:00","size":277,"digest":"9aa998e636687aede491e307f3d068dbe58f2d90bfdfaec0e7ad03baa5b36344","integrity":"sha256-mqmY5jZoeu3kkeMH89Bo2+WPLZC/367A560DuqWzY0Q="},"flags/1x1/hu-06858d0fbd4320496e849010e35c8fe82eb618188cf6ec329aef93f5e7af1c23.svg":{"logical_path":"flags/1x1/hu.svg","mtime":"2019-05-14T13:11:18+02:00","size":279,"digest":"06858d0fbd4320496e849010e35c8fe82eb618188cf6ec329aef93f5e7af1c23","integrity":"sha256-BoWND71DIEluhJAQ41yP6C62GBiM9uwymu+T9eevHCM="},"flags/4x3/id-775dbfedd6533afdf5bd017ccc1ad4f8f4238cbe87393d9c837a669196f17293.svg":{"logical_path":"flags/4x3/id.svg","mtime":"2019-05-14T13:11:18+02:00","size":240,"digest":"775dbfedd6533afdf5bd017ccc1ad4f8f4238cbe87393d9c837a669196f17293","integrity":"sha256-d12/7dZTOv31vQF8zBrU+PQjjL6HOT2cg3pmkZbxcpM="},"flags/1x1/id-3920ce662a7ea937b2c11707d8e1f53db52611dd004edf753b0389ed490d9d29.svg":{"logical_path":"flags/1x1/id.svg","mtime":"2019-05-14T13:11:18+02:00","size":242,"digest":"3920ce662a7ea937b2c11707d8e1f53db52611dd004edf753b0389ed490d9d29","integrity":"sha256-OSDOZip+qTeywRcH2OH1PbUmEd0ATt91OwOJ7UkNnSk="},"flags/4x3/ie-6368a1c92440fcf80d3c35607543bcaa2d4662d6e0bc7acf6749ddbc418a72c0.svg":{"logical_path":"flags/4x3/ie.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"6368a1c92440fcf80d3c35607543bcaa2d4662d6e0bc7acf6749ddbc418a72c0","integrity":"sha256-Y2ihySRA/PgNPDVgdUO8qi1GYtbgvHrPZ0ndvEGKcsA="},"flags/1x1/ie-1997e9de640fa764677aa8f5d52f7888bb24a029160e8f67b06dbd043b4f11b3.svg":{"logical_path":"flags/1x1/ie.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"1997e9de640fa764677aa8f5d52f7888bb24a029160e8f67b06dbd043b4f11b3","integrity":"sha256-GZfp3mQPp2Rneqj11S94iLskoCkWDo9nsG29BDtPEbM="},"flags/4x3/il-d76883a2330f9a05a4a64990ba955fc1be90bb46bcb19ae548c21816e7e74178.svg":{"logical_path":"flags/4x3/il.svg","mtime":"2019-05-14T13:11:18+02:00","size":898,"digest":"d76883a2330f9a05a4a64990ba955fc1be90bb46bcb19ae548c21816e7e74178","integrity":"sha256-12iDojMPmgWkpkmQupVfwb6Qu0a8sZrlSMIYFufnQXg="},"flags/1x1/il-f5e643d0e10169a438119dc441ea3100b52a2ff569bbb3a3ad6d1131b47602d8.svg":{"logical_path":"flags/1x1/il.svg","mtime":"2019-05-14T13:11:18+02:00","size":851,"digest":"f5e643d0e10169a438119dc441ea3100b52a2ff569bbb3a3ad6d1131b47602d8","integrity":"sha256-9eZD0OEBaaQ4EZ3EQeoxALUqL/Vpu7OjrW0RMbR2Atg="},"flags/4x3/im-bbae8aa9dd129f8446556afe4904194ad43377d882f9a705fcf1da2bdbfabccf.svg":{"logical_path":"flags/4x3/im.svg","mtime":"2019-05-14T13:11:18+02:00","size":9948,"digest":"bbae8aa9dd129f8446556afe4904194ad43377d882f9a705fcf1da2bdbfabccf","integrity":"sha256-u66Kqd0Sn4RGVWr+SQQZStQzd9iC+acF/PHaK9v6vM8="},"flags/1x1/im-767d72c2e72d732d65c9b016adad983778dfbbb2b5b52e71830f4e41297728d3.svg":{"logical_path":"flags/1x1/im.svg","mtime":"2019-05-14T13:11:18+02:00","size":10295,"digest":"767d72c2e72d732d65c9b016adad983778dfbbb2b5b52e71830f4e41297728d3","integrity":"sha256-dn1ywuctcy1lybAWra2YN3jfu7K1tS5xgw9OQSl3KNM="},"flags/4x3/in-519e33321b8b2ba70a0b7557d66c62d7efdc9723896c49f82528b107028ffe29.svg":{"logical_path":"flags/4x3/in.svg","mtime":"2019-05-14T13:11:18+02:00","size":1077,"digest":"519e33321b8b2ba70a0b7557d66c62d7efdc9723896c49f82528b107028ffe29","integrity":"sha256-UZ4zMhuLK6cKC3VX1mxi1+/clyOJbEn4JSixBwKP/ik="},"flags/1x1/in-27831f76dc6a218a529b6e5d0eafc4c19c999461327b7c013f59226c0601a361.svg":{"logical_path":"flags/1x1/in.svg","mtime":"2019-05-14T13:11:18+02:00","size":1091,"digest":"27831f76dc6a218a529b6e5d0eafc4c19c999461327b7c013f59226c0601a361","integrity":"sha256-J4MfdtxqIYpSm25dDq/EwZyZlGEye3wBP1kibAYBo2E="},"flags/4x3/io-8d25a8e98f682199b413adfbcb6898c37058c9bae085e427fbab03d56e8c0de6.svg":{"logical_path":"flags/4x3/io.svg","mtime":"2019-05-14T13:11:18+02:00","size":27446,"digest":"8d25a8e98f682199b413adfbcb6898c37058c9bae085e427fbab03d56e8c0de6","integrity":"sha256-jSWo6Y9oIZm0E637y2iYw3BYybrgheQn+6sD1W6MDeY="},"flags/1x1/io-627f3b0cef72fd91ff426d74a007dc32d74c9fe677cf2c8355cba84359e16fde.svg":{"logical_path":"flags/1x1/io.svg","mtime":"2019-05-14T13:11:18+02:00","size":27497,"digest":"627f3b0cef72fd91ff426d74a007dc32d74c9fe677cf2c8355cba84359e16fde","integrity":"sha256-Yn87DO9y/ZH/Qm10oAfcMtdMn+Z3zyyDVcuoQ1nhb94="},"flags/4x3/iq-96b24d1439184d0a4c35ca7cea65e5f20469a0e8c8438963aad016e59c399cc6.svg":{"logical_path":"flags/4x3/iq.svg","mtime":"2019-05-14T13:11:18+02:00","size":1479,"digest":"96b24d1439184d0a4c35ca7cea65e5f20469a0e8c8438963aad016e59c399cc6","integrity":"sha256-lrJNFDkYTQpMNcp86mXl8gRpoOjIQ4ljqtAW5Zw5nMY="},"flags/1x1/iq-af04db139f8c44cfe0c612e2c05e848ccfad88fbbfcb58e88cdb7c80db365669.svg":{"logical_path":"flags/1x1/iq.svg","mtime":"2019-05-14T13:11:18+02:00","size":1484,"digest":"af04db139f8c44cfe0c612e2c05e848ccfad88fbbfcb58e88cdb7c80db365669","integrity":"sha256-rwTbE5+MRM/gxhLiwF6EjM+tiPu/y1jojNt8gNs2Vmk="},"flags/4x3/ir-db2c230d355ade2b1ac235ec647bb1535e4703c639a44f9ce112473272ee1019.svg":{"logical_path":"flags/4x3/ir.svg","mtime":"2019-05-14T13:11:18+02:00","size":15484,"digest":"db2c230d355ade2b1ac235ec647bb1535e4703c639a44f9ce112473272ee1019","integrity":"sha256-2ywjDTVa3isawjXsZHuxU15HA8Y5pE+c4RJHMnLuEBk="},"flags/1x1/ir-c648cbf56fc8f324fda477ea816783c9df8a7d398f45f5f94acc1c16c8877b63.svg":{"logical_path":"flags/1x1/ir.svg","mtime":"2019-05-14T13:11:18+02:00","size":15387,"digest":"c648cbf56fc8f324fda477ea816783c9df8a7d398f45f5f94acc1c16c8877b63","integrity":"sha256-xkjL9W/I8yT9pHfqgWeDyd+KfTmPRfX5SswcFsiHe2M="},"flags/4x3/is-29508693138977229758b0f322ba34e90dbcd7a8a74e8820729933d24051d9a7.svg":{"logical_path":"flags/4x3/is.svg","mtime":"2019-05-14T13:11:18+02:00","size":521,"digest":"29508693138977229758b0f322ba34e90dbcd7a8a74e8820729933d24051d9a7","integrity":"sha256-KVCGkxOJdyKXWLDzIro06Q2816inToggcpkz0kBR2ac="},"flags/1x1/is-b1c5db1d4b4853b8144f1d88ababbf14fc88752340457ba3e2c94ab5d54c9c01.svg":{"logical_path":"flags/1x1/is.svg","mtime":"2019-05-14T13:11:18+02:00","size":529,"digest":"b1c5db1d4b4853b8144f1d88ababbf14fc88752340457ba3e2c94ab5d54c9c01","integrity":"sha256-scXbHUtIU7gUTx2Iq6u/FPyIdSNARXuj4slKtdVMnAE="},"flags/4x3/it-d2c168050fc509adac1163b097b0ed409217560735b27802ae9259587c146562.svg":{"logical_path":"flags/4x3/it.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"d2c168050fc509adac1163b097b0ed409217560735b27802ae9259587c146562","integrity":"sha256-0sFoBQ/FCa2sEWOwl7DtQJIXVgc1sngCrpJZWHwUZWI="},"flags/1x1/it-592d34fb666430fa00f98d333623d5efa3c8e0e65ac4eee06bbc4c1de7ce4bea.svg":{"logical_path":"flags/1x1/it.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"592d34fb666430fa00f98d333623d5efa3c8e0e65ac4eee06bbc4c1de7ce4bea","integrity":"sha256-WS00+2ZkMPoA+Y0zNiPV76PI4OZaxO7ga7xMHefOS+o="},"flags/4x3/je-b363a4e3a21630f10791c2ebeb7f918320816ef87c155d4fd29ce37982f4df35.svg":{"logical_path":"flags/4x3/je.svg","mtime":"2019-05-14T13:11:18+02:00","size":4776,"digest":"b363a4e3a21630f10791c2ebeb7f918320816ef87c155d4fd29ce37982f4df35","integrity":"sha256-s2Ok46IWMPEHkcLr63+RgyCBbvh8FV1P0pzjeYL03zU="},"flags/1x1/je-6d43f74e30e099bc056da925ec34c0200708f0a6e90da34db1e59d54ce10cfd9.svg":{"logical_path":"flags/1x1/je.svg","mtime":"2019-05-14T13:11:18+02:00","size":4757,"digest":"6d43f74e30e099bc056da925ec34c0200708f0a6e90da34db1e59d54ce10cfd9","integrity":"sha256-bUP3TjDgmbwFbakl7DTAIAcI8KbpDaNNseWdVM4Qz9k="},"flags/4x3/jm-3d133fbc2564f29e036855e8be224d1579fe66fe49e0f5a2ba0bdcf3cb272823.svg":{"logical_path":"flags/4x3/jm.svg","mtime":"2019-05-14T13:11:18+02:00","size":392,"digest":"3d133fbc2564f29e036855e8be224d1579fe66fe49e0f5a2ba0bdcf3cb272823","integrity":"sha256-PRM/vCVk8p4DaFXoviJNFXn+Zv5J4PWiugvc88snKCM="},"flags/1x1/jm-1aea8ea5d8cbc717fa3ef331d8caa9a1421c88a7bd076e40f8276a5b6f8d0467.svg":{"logical_path":"flags/1x1/jm.svg","mtime":"2019-05-14T13:11:18+02:00","size":392,"digest":"1aea8ea5d8cbc717fa3ef331d8caa9a1421c88a7bd076e40f8276a5b6f8d0467","integrity":"sha256-GuqOpdjLxxf6PvMx2MqpoUIciKe9B25A+CdqW2+NBGc="},"flags/4x3/jo-eee432339f8ea6750987e1121187eb4b53ec537dd7ccb240c018de63f7a92db6.svg":{"logical_path":"flags/4x3/jo.svg","mtime":"2019-05-14T13:11:18+02:00","size":717,"digest":"eee432339f8ea6750987e1121187eb4b53ec537dd7ccb240c018de63f7a92db6","integrity":"sha256-7uQyM5+OpnUJh+ESEYfrS1PsU33XzLJAwBjeY/epLbY="},"flags/1x1/jo-7969b2083c535c85b7e714b755459a6606940e0b5ddb1b71e24daf0a180d14aa.svg":{"logical_path":"flags/1x1/jo.svg","mtime":"2019-05-14T13:11:18+02:00","size":694,"digest":"7969b2083c535c85b7e714b755459a6606940e0b5ddb1b71e24daf0a180d14aa","integrity":"sha256-eWmyCDxTXIW35xS3VUWaZgaUDgtd2xtx4k2vChgNFKo="},"flags/4x3/jp-2eadcfc67ba8cd50c1da86e08e6778e0102c3072865dab8c312cc88006da0abe.svg":{"logical_path":"flags/4x3/jp.svg","mtime":"2019-05-14T13:11:18+02:00","size":484,"digest":"2eadcfc67ba8cd50c1da86e08e6778e0102c3072865dab8c312cc88006da0abe","integrity":"sha256-Lq3PxnuozVDB2obgjmd44BAsMHKGXauMMSzIgAbaCr4="},"flags/1x1/jp-551281a75e6c6fd64eb65b39f56102b52c182f6c38ee045c9422f6592f0f65c5.svg":{"logical_path":"flags/1x1/jp.svg","mtime":"2019-05-14T13:11:18+02:00","size":500,"digest":"551281a75e6c6fd64eb65b39f56102b52c182f6c38ee045c9422f6592f0f65c5","integrity":"sha256-VRKBp15sb9ZOtls59WECtSwYL2w47gRclCL2WS8PZcU="},"flags/4x3/ke-45790bc3ec1ed8ed0124777a7c9e09163353b5af4ff70ae6604a61b53712df4b.svg":{"logical_path":"flags/4x3/ke.svg","mtime":"2019-05-14T13:11:18+02:00","size":1383,"digest":"45790bc3ec1ed8ed0124777a7c9e09163353b5af4ff70ae6604a61b53712df4b","integrity":"sha256-RXkLw+we2O0BJHd6fJ4JFjNTta9P9wrmYEphtTcS30s="},"flags/1x1/ke-2cca24ecf024b801543c0572efc9969ffdaf25cec313e2149c64961839bc301b.svg":{"logical_path":"flags/1x1/ke.svg","mtime":"2019-05-14T13:11:18+02:00","size":1495,"digest":"2cca24ecf024b801543c0572efc9969ffdaf25cec313e2149c64961839bc301b","integrity":"sha256-LMok7PAkuAFUPAVy78mWn/2vJc7DE+IUnGSWGDm8MBs="},"flags/4x3/kg-3879f8931d74cc9c5927261f4095b2bb786f3d62c803b2a96ec550a23fae9f49.svg":{"logical_path":"flags/4x3/kg.svg","mtime":"2019-05-14T13:11:18+02:00","size":3387,"digest":"3879f8931d74cc9c5927261f4095b2bb786f3d62c803b2a96ec550a23fae9f49","integrity":"sha256-OHn4kx10zJxZJyYfQJWyu3hvPWLIA7KpbsVQoj+un0k="},"flags/1x1/kg-74318932808f85b72df308358f2f2699ab0cb7ab4f7ad3c84c4be4024f0fb140.svg":{"logical_path":"flags/1x1/kg.svg","mtime":"2019-05-14T13:11:18+02:00","size":3337,"digest":"74318932808f85b72df308358f2f2699ab0cb7ab4f7ad3c84c4be4024f0fb140","integrity":"sha256-dDGJMoCPhbct8wg1jy8mmasMt6tPetPITEvkAk8PsUA="},"flags/4x3/kh-7409fab4ba4e676db7b5c61020b97893b1735fe0b8e39e9b4f96108400be704e.svg":{"logical_path":"flags/4x3/kh.svg","mtime":"2019-05-14T13:11:18+02:00","size":7295,"digest":"7409fab4ba4e676db7b5c61020b97893b1735fe0b8e39e9b4f96108400be704e","integrity":"sha256-dAn6tLpOZ223tcYQILl4k7FzX+C4456bT5YQhAC+cE4="},"flags/1x1/kh-2603f6a61b400cb12b87397eeba60ae1707511467d5e0c430c05809bf89e5042.svg":{"logical_path":"flags/1x1/kh.svg","mtime":"2019-05-14T13:11:18+02:00","size":7296,"digest":"2603f6a61b400cb12b87397eeba60ae1707511467d5e0c430c05809bf89e5042","integrity":"sha256-JgP2phtADLErhzl+66YK4XB1EUZ9XgxDDAWAm/ieUEI="},"flags/4x3/ki-617c1b52f3d9aee99d094edbd1775cae77aade266a1318eb4671b2bb1620ded5.svg":{"logical_path":"flags/4x3/ki.svg","mtime":"2019-05-14T13:11:18+02:00","size":5818,"digest":"617c1b52f3d9aee99d094edbd1775cae77aade266a1318eb4671b2bb1620ded5","integrity":"sha256-YXwbUvPZrumdCU7b0Xdcrneq3iZqExjrRnGyuxYg3tU="},"flags/1x1/ki-74615266b440a24f09abdeae3853d7e1111f0eba77df71ccd176d83fbd1fd9ad.svg":{"logical_path":"flags/1x1/ki.svg","mtime":"2019-05-14T13:11:18+02:00","size":5955,"digest":"74615266b440a24f09abdeae3853d7e1111f0eba77df71ccd176d83fbd1fd9ad","integrity":"sha256-dGFSZrRAok8Jq96uOFPX4REfDrp333HM0XbYP70f2a0="},"flags/4x3/km-0c9bcbf7e677a541fc8dff6f848c9d92b6982ac2934ae75faa56a2b846bb5698.svg":{"logical_path":"flags/4x3/km.svg","mtime":"2019-05-14T13:11:18+02:00","size":1061,"digest":"0c9bcbf7e677a541fc8dff6f848c9d92b6982ac2934ae75faa56a2b846bb5698","integrity":"sha256-DJvL9+Z3pUH8jf9vhIydkraYKsKTSudfqlaiuEa7Vpg="},"flags/1x1/km-81b0fbe53d09194270e8ed4cbe9be8eb1ae727e77957005369ad8bdc651dd1c8.svg":{"logical_path":"flags/1x1/km.svg","mtime":"2019-05-14T13:11:18+02:00","size":1044,"digest":"81b0fbe53d09194270e8ed4cbe9be8eb1ae727e77957005369ad8bdc651dd1c8","integrity":"sha256-gbD75T0JGUJw6O1Mvpvo6xrnJ+d5VwBTaa2L3GUd0cg="},"flags/4x3/kn-0442f55f81cd3b1057c609301f0af2b503d89a895a954af8c970df997e92bd03.svg":{"logical_path":"flags/4x3/kn.svg","mtime":"2019-05-14T13:11:18+02:00","size":816,"digest":"0442f55f81cd3b1057c609301f0af2b503d89a895a954af8c970df997e92bd03","integrity":"sha256-BEL1X4HNOxBXxgkwHwrytQPYmolalUr4yXDfmX6SvQM="},"flags/1x1/kn-897c34ef54bee486f0d24d2191e2400f49a19d98efb19f8c3f1a27fb0b97131a.svg":{"logical_path":"flags/1x1/kn.svg","mtime":"2019-05-14T13:11:18+02:00","size":820,"digest":"897c34ef54bee486f0d24d2191e2400f49a19d98efb19f8c3f1a27fb0b97131a","integrity":"sha256-iXw071S+5Ibw0k0hkeJAD0mhnZjvsZ+MPxon+wuXExo="},"flags/4x3/kp-a54f7201982b29530381b71a5e2a11c1153860f22c04c0a2d91bb0d20fedf78e.svg":{"logical_path":"flags/4x3/kp.svg","mtime":"2019-05-14T13:11:18+02:00","size":792,"digest":"a54f7201982b29530381b71a5e2a11c1153860f22c04c0a2d91bb0d20fedf78e","integrity":"sha256-pU9yAZgrKVMDgbcaXioRwRU4YPIsBMCi2Ruw0g/t944="},"flags/1x1/kp-758eccd89ef3707808fb68d931f086e49333904f4cc67c88468f3c96fb43b7b6.svg":{"logical_path":"flags/1x1/kp.svg","mtime":"2019-05-14T13:11:18+02:00","size":855,"digest":"758eccd89ef3707808fb68d931f086e49333904f4cc67c88468f3c96fb43b7b6","integrity":"sha256-dY7M2J7zcHgI+2jZMfCG5JMzkE9MxnyIRo88lvtDt7Y="},"flags/4x3/kr-c0b9b2c854133410c0ad9cadbc10b1e0bacf0305519883126d55bfa3214f9d06.svg":{"logical_path":"flags/4x3/kr.svg","mtime":"2019-05-14T13:11:18+02:00","size":1827,"digest":"c0b9b2c854133410c0ad9cadbc10b1e0bacf0305519883126d55bfa3214f9d06","integrity":"sha256-wLmyyFQTNBDArZytvBCx4LrPAwVRmIMSbVW/oyFPnQY="},"flags/1x1/kr-7c0457ac5d284b28b742ea2e061a1aa2a35f63171e464b3a7eb501a48756ce7b.svg":{"logical_path":"flags/1x1/kr.svg","mtime":"2019-05-14T13:11:18+02:00","size":1733,"digest":"7c0457ac5d284b28b742ea2e061a1aa2a35f63171e464b3a7eb501a48756ce7b","integrity":"sha256-fARXrF0oSyi3QuouBhoaoqNfYxceRks6frUBpIdWzns="},"flags/4x3/kw-81c3d5d25c7b840ef14783b51d18c6b7cfc61f94932c664bbc9e5879fef020eb.svg":{"logical_path":"flags/4x3/kw.svg","mtime":"2019-05-14T13:11:18+02:00","size":506,"digest":"81c3d5d25c7b840ef14783b51d18c6b7cfc61f94932c664bbc9e5879fef020eb","integrity":"sha256-gcPV0lx7hA7xR4O1HRjGt8/GH5STLGZLvJ5Yef7wIOs="},"flags/1x1/kw-66670211a67a4e61d4652a19d821dc5195f01a28a3a9b28b7e4c6048cd86b19c.svg":{"logical_path":"flags/1x1/kw.svg","mtime":"2019-05-14T13:11:18+02:00","size":510,"digest":"66670211a67a4e61d4652a19d821dc5195f01a28a3a9b28b7e4c6048cd86b19c","integrity":"sha256-ZmcCEaZ6TmHUZSoZ2CHcUZXwGiijqbKLfkxgSM2GsZw="},"flags/4x3/ky-0f4ab66d951ae33f800d680aaa5704804ba9c8844d4d80e5bee2e3fa0e100af3.svg":{"logical_path":"flags/4x3/ky.svg","mtime":"2019-05-14T13:11:18+02:00","size":21886,"digest":"0f4ab66d951ae33f800d680aaa5704804ba9c8844d4d80e5bee2e3fa0e100af3","integrity":"sha256-D0q2bZUa4z+ADWgKqlcEgEupyIRNTYDlvuLj+g4QCvM="},"flags/1x1/ky-fb5f57bb58b74d23377bad9954a75ab88d1587af68546ce137a6ae7a88a7701e.svg":{"logical_path":"flags/1x1/ky.svg","mtime":"2019-05-14T13:11:18+02:00","size":22495,"digest":"fb5f57bb58b74d23377bad9954a75ab88d1587af68546ce137a6ae7a88a7701e","integrity":"sha256-+19Xu1i3TSM3e62ZVKdauI0Vh69oVGzhN6aueoincB4="},"flags/4x3/kz-39edc952c598c71be2c9510944a8faf708d8e4b367b5ad78a688d1cd37f522eb.svg":{"logical_path":"flags/4x3/kz.svg","mtime":"2019-05-14T13:11:18+02:00","size":11339,"digest":"39edc952c598c71be2c9510944a8faf708d8e4b367b5ad78a688d1cd37f522eb","integrity":"sha256-Oe3JUsWYxxviyVEJRKj69wjY5LNnta14pojRzTf1Ius="},"flags/1x1/kz-924c04dc19267b049f35213af0e2b0c540933c06389433cb4aacd8dda33b286c.svg":{"logical_path":"flags/1x1/kz.svg","mtime":"2019-05-14T13:11:18+02:00","size":11433,"digest":"924c04dc19267b049f35213af0e2b0c540933c06389433cb4aacd8dda33b286c","integrity":"sha256-kkwE3BkmewSfNSE68OKwxUCTPAY4lDPLSqzY3aM7KGw="},"flags/4x3/la-e3a36a3bd0003442c3a21d3a192995fa6fb3b3c08a2daadc8f38f62736b5b1e3.svg":{"logical_path":"flags/4x3/la.svg","mtime":"2019-05-14T13:11:18+02:00","size":457,"digest":"e3a36a3bd0003442c3a21d3a192995fa6fb3b3c08a2daadc8f38f62736b5b1e3","integrity":"sha256-46NqO9AANELDoh06GSmV+m+zs8CKLarcjzj2Jza1seM="},"flags/1x1/la-c9d4223a897e5e2938a4892bbc593d3828093b9439fc3f6de21520e4013ddbc5.svg":{"logical_path":"flags/1x1/la.svg","mtime":"2019-05-14T13:11:18+02:00","size":507,"digest":"c9d4223a897e5e2938a4892bbc593d3828093b9439fc3f6de21520e4013ddbc5","integrity":"sha256-ydQiOol+Xik4pIkrvFk9OCgJO5Q5/D9t4hUg5AE928U="},"flags/4x3/lb-508c2a5a9b50d604895675b9f1c1e5914c394a7f468f5d823eb0476acaacbc7f.svg":{"logical_path":"flags/4x3/lb.svg","mtime":"2019-05-14T13:11:18+02:00","size":2814,"digest":"508c2a5a9b50d604895675b9f1c1e5914c394a7f468f5d823eb0476acaacbc7f","integrity":"sha256-UIwqWptQ1gSJVnW58cHlkUw5Sn9Gj12CPrBHasqsvH8="},"flags/1x1/lb-10c9ba8ea7aa3189f16a7273c837982a887fc4ddfc9d514d8f5a660d72356f7f.svg":{"logical_path":"flags/1x1/lb.svg","mtime":"2019-05-14T13:11:18+02:00","size":2754,"digest":"10c9ba8ea7aa3189f16a7273c837982a887fc4ddfc9d514d8f5a660d72356f7f","integrity":"sha256-EMm6jqeqMYnxanJzyDeYKoh/xN38nVFNj1pmDXI1b38="},"flags/4x3/lc-04ccd92fb1578654181febaea30ebd6b6620f56115730b2a2d673c712307bf5c.svg":{"logical_path":"flags/4x3/lc.svg","mtime":"2019-05-14T13:11:18+02:00","size":373,"digest":"04ccd92fb1578654181febaea30ebd6b6620f56115730b2a2d673c712307bf5c","integrity":"sha256-BMzZL7FXhlQYH+uuow69a2Yg9WEVcwsqLWc8cSMHv1w="},"flags/1x1/lc-4ffb53afb8bd296d526ac26fd8007afc74855e92833a893d3c934a5d12eb152a.svg":{"logical_path":"flags/1x1/lc.svg","mtime":"2019-05-14T13:11:18+02:00","size":373,"digest":"4ffb53afb8bd296d526ac26fd8007afc74855e92833a893d3c934a5d12eb152a","integrity":"sha256-T/tTr7i9KW1SasJv2AB6/HSFXpKDOok9PJNKXRLrFSo="},"flags/4x3/li-3058dc4aeaf2bd2da8cb910892137d732b56e5e9d342e565a4059de1a8e40e40.svg":{"logical_path":"flags/4x3/li.svg","mtime":"2019-05-14T13:11:18+02:00","size":8327,"digest":"3058dc4aeaf2bd2da8cb910892137d732b56e5e9d342e565a4059de1a8e40e40","integrity":"sha256-MFjcSuryvS2oy5EIkhN9cytW5enTQuVlpAWd4ajkDkA="},"flags/1x1/li-0780a4f218b9ee466e33d14274b8a01575a86b3787b347e3269a3b301c220d5f.svg":{"logical_path":"flags/1x1/li.svg","mtime":"2019-05-14T13:11:18+02:00","size":8350,"digest":"0780a4f218b9ee466e33d14274b8a01575a86b3787b347e3269a3b301c220d5f","integrity":"sha256-B4Ck8hi57kZuM9FCdLigFXWoazeHs0fjJpo7MBwiDV8="},"flags/4x3/lk-a13d6ab1da51be3b1d2c5b80f4d866c923d42b017e197469e1bfc0dd021c4bfe.svg":{"logical_path":"flags/4x3/lk.svg","mtime":"2019-05-14T13:11:18+02:00","size":11333,"digest":"a13d6ab1da51be3b1d2c5b80f4d866c923d42b017e197469e1bfc0dd021c4bfe","integrity":"sha256-oT1qsdpRvjsdLFuA9NhmySPUKwF+GXRp4b/A3QIcS/4="},"flags/1x1/lk-99759363f0df6b868fd1398bf05666c680bafe1eeec8b859b64d450930213e02.svg":{"logical_path":"flags/1x1/lk.svg","mtime":"2019-05-14T13:11:18+02:00","size":11345,"digest":"99759363f0df6b868fd1398bf05666c680bafe1eeec8b859b64d450930213e02","integrity":"sha256-mXWTY/Dfa4aP0TmL8FZmxoC6/h7uyLhZtk1FCTAhPgI="},"flags/4x3/lr-b06a1d70899826b305ce387fa31e1fa0bdb3bcb17c1392f15f995ce1dba723cf.svg":{"logical_path":"flags/4x3/lr.svg","mtime":"2019-05-14T13:11:18+02:00","size":724,"digest":"b06a1d70899826b305ce387fa31e1fa0bdb3bcb17c1392f15f995ce1dba723cf","integrity":"sha256-sGodcImYJrMFzjh/ox4foL2zvLF8E5LxX5lc4dunI88="},"flags/1x1/lr-820a9d023e5b1e68ed640bfaba8f84ad4379c42a6c5c982cb76b0390dd2bcbdd.svg":{"logical_path":"flags/1x1/lr.svg","mtime":"2019-05-14T13:11:18+02:00","size":697,"digest":"820a9d023e5b1e68ed640bfaba8f84ad4379c42a6c5c982cb76b0390dd2bcbdd","integrity":"sha256-ggqdAj5bHmjtZAv6uo+ErUN5xCpsXJgst2sDkN0ry90="},"flags/4x3/ls-d02bcefe7c298c153665f35c33eedb08e2e2b345350e4bf1714a87abf86b2d0e.svg":{"logical_path":"flags/4x3/ls.svg","mtime":"2019-05-14T13:11:18+02:00","size":1222,"digest":"d02bcefe7c298c153665f35c33eedb08e2e2b345350e4bf1714a87abf86b2d0e","integrity":"sha256-0CvO/nwpjBU2ZfNcM+7bCOLis0U1DkvxcUqHq/hrLQ4="},"flags/1x1/ls-85c731c313a46db12bdb27fe229e9f7d052b447c624663b73ffa1dbab97f03fb.svg":{"logical_path":"flags/1x1/ls.svg","mtime":"2019-05-14T13:11:18+02:00","size":1245,"digest":"85c731c313a46db12bdb27fe229e9f7d052b447c624663b73ffa1dbab97f03fb","integrity":"sha256-hccxwxOkbbEr2yf+Ip6ffQUrRHxiRmO3P/odurl/A/s="},"flags/4x3/lt-c08eb18a15d2003cb544432b11c5081d3d5741370669b4df306d1c6bce14cb51.svg":{"logical_path":"flags/4x3/lt.svg","mtime":"2019-05-14T13:11:18+02:00","size":445,"digest":"c08eb18a15d2003cb544432b11c5081d3d5741370669b4df306d1c6bce14cb51","integrity":"sha256-wI6xihXSADy1REMrEcUIHT1XQTcGabTfMG0ca84Uy1E="},"flags/1x1/lt-c1bd7e3d289ac9b0df06d47237780eaf4d30f01281ed50a7df9a22bc3a2489c5.svg":{"logical_path":"flags/1x1/lt.svg","mtime":"2019-05-14T13:11:18+02:00","size":445,"digest":"c1bd7e3d289ac9b0df06d47237780eaf4d30f01281ed50a7df9a22bc3a2489c5","integrity":"sha256-wb1+PSiaybDfBtRyN3gOr00w8BKB7VCn35oivDokicU="},"flags/4x3/lu-99e7b6adb3a9e0f867b17eb3b1f0f33db92fd27cfd7b651f62453f359bace22f.svg":{"logical_path":"flags/4x3/lu.svg","mtime":"2019-05-14T13:11:18+02:00","size":231,"digest":"99e7b6adb3a9e0f867b17eb3b1f0f33db92fd27cfd7b651f62453f359bace22f","integrity":"sha256-mee2rbOp4PhnsX6zsfDzPbkv0nz9e2UfYkU/NZus4i8="},"flags/1x1/lu-ab544445f16afa450549288ac86c2cc9a458a9d7747b3a89d5ecef7db9c83ce7.svg":{"logical_path":"flags/1x1/lu.svg","mtime":"2019-05-14T13:11:18+02:00","size":235,"digest":"ab544445f16afa450549288ac86c2cc9a458a9d7747b3a89d5ecef7db9c83ce7","integrity":"sha256-q1RERfFq+kUFSSiKyGwsyaRYqdd0ezqJ1ezvfbnIPOc="},"flags/4x3/lv-f8844d50b89f0369f73d580d3676553e7e55dd8ab2460e592a29a530d9bed886.svg":{"logical_path":"flags/4x3/lv.svg","mtime":"2019-05-14T13:11:18+02:00","size":236,"digest":"f8844d50b89f0369f73d580d3676553e7e55dd8ab2460e592a29a530d9bed886","integrity":"sha256-+IRNULifA2n3PVgNNnZVPn5V3YqyRg5ZKimlMNm+2IY="},"flags/1x1/lv-baeced49dd4249e36a25b0f23a5c601a69e9dee3137627cd4450194b85a99dd4.svg":{"logical_path":"flags/1x1/lv.svg","mtime":"2019-05-14T13:11:18+02:00","size":240,"digest":"baeced49dd4249e36a25b0f23a5c601a69e9dee3137627cd4450194b85a99dd4","integrity":"sha256-uuztSd1CSeNqJbDyOlxgGmnp3uMTdifNRFAZS4WpndQ="},"flags/4x3/ly-03209121483967f9d74849fb9261de23e9ff2e02c4e40b29f1cda0631b8a5fae.svg":{"logical_path":"flags/4x3/ly.svg","mtime":"2019-05-14T13:11:18+02:00","size":534,"digest":"03209121483967f9d74849fb9261de23e9ff2e02c4e40b29f1cda0631b8a5fae","integrity":"sha256-AyCRIUg5Z/nXSEn7kmHeI+n/LgLE5Asp8c2gYxuKX64="},"flags/1x1/ly-1e6e070aaa4bfc97a5a446a39bf746ab3c4c81d9f62c975cab164e16de3a3ffe.svg":{"logical_path":"flags/1x1/ly.svg","mtime":"2019-05-14T13:11:18+02:00","size":533,"digest":"1e6e070aaa4bfc97a5a446a39bf746ab3c4c81d9f62c975cab164e16de3a3ffe","integrity":"sha256-Hm4HCqpL/JelpEajm/dGqzxMgdn2LJdcqxZOFt46P/4="},"flags/4x3/ma-9a25cc7c2868fa45b251dd1b99a0be3b583df69732146142020fe9c6c0c95b63.svg":{"logical_path":"flags/4x3/ma.svg","mtime":"2019-05-14T13:11:18+02:00","size":253,"digest":"9a25cc7c2868fa45b251dd1b99a0be3b583df69732146142020fe9c6c0c95b63","integrity":"sha256-miXMfCho+kWyUd0bmaC+O1g99pcyFGFCAg/pxsDJW2M="},"flags/1x1/ma-4f18b9c355b8b8bf0db69badb235a183dbd558deb6439bf03b4f18e56837a7f3.svg":{"logical_path":"flags/1x1/ma.svg","mtime":"2019-05-14T13:11:18+02:00","size":253,"digest":"4f18b9c355b8b8bf0db69badb235a183dbd558deb6439bf03b4f18e56837a7f3","integrity":"sha256-Txi5w1W4uL8NtputsjWhg9vVWN62Q5vwO08Y5Wg3p/M="},"flags/4x3/mc-b0c50599ea2a550680a6a867579930e0b47d3e05193a7294a26b7849a7ad35e2.svg":{"logical_path":"flags/4x3/mc.svg","mtime":"2019-05-14T13:11:18+02:00","size":240,"digest":"b0c50599ea2a550680a6a867579930e0b47d3e05193a7294a26b7849a7ad35e2","integrity":"sha256-sMUFmeoqVQaApqhnV5kw4LR9PgUZOnKUomt4SaetNeI="},"flags/1x1/mc-8f1fe6210338399d8791d91f39234b1a09acf2aa5e0387696048dc7068534a28.svg":{"logical_path":"flags/1x1/mc.svg","mtime":"2019-05-14T13:11:18+02:00","size":240,"digest":"8f1fe6210338399d8791d91f39234b1a09acf2aa5e0387696048dc7068534a28","integrity":"sha256-jx/mIQM4OZ2HkdkfOSNLGgms8qpeA4dpYEjccGhTSig="},"flags/4x3/md-8849eef7bdf916e962f7bb31af87c8d47aef33f9f4a2017b2ce55c4166e79643.svg":{"logical_path":"flags/4x3/md.svg","mtime":"2019-05-14T13:11:18+02:00","size":11283,"digest":"8849eef7bdf916e962f7bb31af87c8d47aef33f9f4a2017b2ce55c4166e79643","integrity":"sha256-iEnu9735Fuli97sxr4fI1HrvM/n0ogF7LOVcQWbnlkM="},"flags/1x1/md-43f1bb4157545abe6e79215459efb548d913bbe7922078cd40cb722a4e19d9b4.svg":{"logical_path":"flags/1x1/md.svg","mtime":"2019-05-14T13:11:18+02:00","size":11387,"digest":"43f1bb4157545abe6e79215459efb548d913bbe7922078cd40cb722a4e19d9b4","integrity":"sha256-Q/G7QVdUWr5ueSFUWe+1SNkTu+eSIHjNQMtyKk4Z2bQ="},"flags/4x3/me-983d452d43cfb8d628bfc5c0cf4991c2ba3cf0e39e70aa5353cfd4e9ec3da62d.svg":{"logical_path":"flags/4x3/me.svg","mtime":"2019-05-14T13:11:18+02:00","size":63177,"digest":"983d452d43cfb8d628bfc5c0cf4991c2ba3cf0e39e70aa5353cfd4e9ec3da62d","integrity":"sha256-mD1FLUPPuNYov8XAz0mRwro88OOecKpTU8/U6ew9pi0="},"flags/1x1/me-104d6a96038ef06d3d8b89c9221996f3649b5b821139b11b2e07695b0f6fda2f.svg":{"logical_path":"flags/1x1/me.svg","mtime":"2019-05-14T13:11:18+02:00","size":64191,"digest":"104d6a96038ef06d3d8b89c9221996f3649b5b821139b11b2e07695b0f6fda2f","integrity":"sha256-EE1qlgOO8G09i4nJIhmW82SbW4IRObEbLgdpWw9v2i8="},"flags/4x3/mf-31fb851bfcc2340d2fa43e86a099cc7becfc8e7f996a4d2ca56bd050e6537086.svg":{"logical_path":"flags/4x3/mf.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"31fb851bfcc2340d2fa43e86a099cc7becfc8e7f996a4d2ca56bd050e6537086","integrity":"sha256-MfuFG/zCNA0vpD6GoJnMe+z8jn+Zak0spWvQUOZTcIY="},"flags/1x1/mf-fe20ce9bf911631d6e79edf21c8cff0716f2dc1ffded39515735444d9a66fa55.svg":{"logical_path":"flags/1x1/mf.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"fe20ce9bf911631d6e79edf21c8cff0716f2dc1ffded39515735444d9a66fa55","integrity":"sha256-/iDOm/kRYx1uee3yHIz/Bxby3B/97TlRVzVETZpm+lU="},"flags/4x3/mg-5effe963e29f804a26f95dbbc9519add454a0fd9eb918ddfeb55e1e99a1a2701.svg":{"logical_path":"flags/4x3/mg.svg","mtime":"2019-05-14T13:11:18+02:00","size":305,"digest":"5effe963e29f804a26f95dbbc9519add454a0fd9eb918ddfeb55e1e99a1a2701","integrity":"sha256-Xv/pY+KfgEom+V27yVGa3UVKD9nrkY3f61Xh6ZoaJwE="},"flags/1x1/mg-9e546cfb78810d9b25c814a84aadd6907880b8e0cdd2e4e30738b519e7c1ac91.svg":{"logical_path":"flags/1x1/mg.svg","mtime":"2019-05-14T13:11:18+02:00","size":305,"digest":"9e546cfb78810d9b25c814a84aadd6907880b8e0cdd2e4e30738b519e7c1ac91","integrity":"sha256-nlRs+3iBDZslyBSoSq3WkHiAuODN0uTjBzi1GefBrJE="},"flags/4x3/mh-d8cfd123007dbb99aa700c335957926a6d5e877ab49680c79629a32716d7a782.svg":{"logical_path":"flags/4x3/mh.svg","mtime":"2019-05-14T13:11:18+02:00","size":744,"digest":"d8cfd123007dbb99aa700c335957926a6d5e877ab49680c79629a32716d7a782","integrity":"sha256-2M/RIwB9u5mqcAwzWVeSam1eh3q0loDHlimjJxbXp4I="},"flags/1x1/mh-3fe03d4d063a4729fc8b68fd5e9d7d2eef6e65c4e82954c83f76b138cea2eb45.svg":{"logical_path":"flags/1x1/mh.svg","mtime":"2019-05-14T13:11:18+02:00","size":767,"digest":"3fe03d4d063a4729fc8b68fd5e9d7d2eef6e65c4e82954c83f76b138cea2eb45","integrity":"sha256-P+A9TQY6Ryn8i2j9Xp19Lu9uZcToKVTIP3axOM6i60U="},"flags/4x3/mk-6e8071d15f2ff125d30bf89d000dcb47db9545cf9b7ff04f1474650ec2f4d25c.svg":{"logical_path":"flags/4x3/mk.svg","mtime":"2019-05-14T13:11:18+02:00","size":385,"digest":"6e8071d15f2ff125d30bf89d000dcb47db9545cf9b7ff04f1474650ec2f4d25c","integrity":"sha256-boBx0V8v8SXTC/idAA3LR9uVRc+bf/BPFHRlDsL00lw="},"flags/1x1/mk-fdc9212f9f311cbface56b6587468a2e845111b697edc11b7edda9fcf100c1d5.svg":{"logical_path":"flags/1x1/mk.svg","mtime":"2019-05-14T13:11:18+02:00","size":413,"digest":"fdc9212f9f311cbface56b6587468a2e845111b697edc11b7edda9fcf100c1d5","integrity":"sha256-/ckhL58xHL+s5Wtlh0aKLoRREbaX7cEbft2p/PEAwdU="},"flags/4x3/ml-a730102e0c6f6362de9c10ef8da6cf7b123465d01a297e7a89808b01fa4771cd.svg":{"logical_path":"flags/4x3/ml.svg","mtime":"2019-05-14T13:11:18+02:00","size":279,"digest":"a730102e0c6f6362de9c10ef8da6cf7b123465d01a297e7a89808b01fa4771cd","integrity":"sha256-pzAQLgxvY2LenBDvjabPexI0ZdAaKX56iYCLAfpHcc0="},"flags/1x1/ml-a661355da206b0cb7ac4c84b6cdf7e411fbca8fcb271ae999fa60d5c67578192.svg":{"logical_path":"flags/1x1/ml.svg","mtime":"2019-05-14T13:11:18+02:00","size":282,"digest":"a661355da206b0cb7ac4c84b6cdf7e411fbca8fcb271ae999fa60d5c67578192","integrity":"sha256-pmE1XaIGsMt6xMhLbN9+QR+8qPyyca6Zn6YNXGdXgZI="},"flags/4x3/mm-6d0d207d662477110f2b863488088818d8400386358dcbc669a2d8c54d1bae16.svg":{"logical_path":"flags/4x3/mm.svg","mtime":"2019-05-14T13:11:18+02:00","size":851,"digest":"6d0d207d662477110f2b863488088818d8400386358dcbc669a2d8c54d1bae16","integrity":"sha256-bQ0gfWYkdxEPK4Y0iAiIGNhAA4Y1jcvGaaLYxU0brhY="},"flags/1x1/mm-de7d46b6543343af61ba997045cb41a707bd0db1e7a5879971ca8fddcbdf9e99.svg":{"logical_path":"flags/1x1/mm.svg","mtime":"2019-05-14T13:11:18+02:00","size":868,"digest":"de7d46b6543343af61ba997045cb41a707bd0db1e7a5879971ca8fddcbdf9e99","integrity":"sha256-3n1GtlQzQ69huplwRctBpwe9DbHnpYeZccqP3cvfnpk="},"flags/4x3/mn-656eb51e88bfce82401e4080eb791ddf16d571cbba102cdd4316c5de4711ac65.svg":{"logical_path":"flags/4x3/mn.svg","mtime":"2019-05-14T13:11:18+02:00","size":1256,"digest":"656eb51e88bfce82401e4080eb791ddf16d571cbba102cdd4316c5de4711ac65","integrity":"sha256-ZW61Hoi/zoJAHkCA63kd3xbVccu6ECzdQxbF3kcRrGU="},"flags/1x1/mn-ad22cb2c195a7d8ca8e4174db011d5f58238ee25039b5b2da2649d8ca8b00123.svg":{"logical_path":"flags/1x1/mn.svg","mtime":"2019-05-14T13:11:18+02:00","size":1263,"digest":"ad22cb2c195a7d8ca8e4174db011d5f58238ee25039b5b2da2649d8ca8b00123","integrity":"sha256-rSLLLBlafYyo5BdNsBHV9YI47iUDm1stomSdjKiwASM="},"flags/4x3/mo-37a1088aa687af13951bc93886e3e51cb246eccfde1b56528f189327ea291792.svg":{"logical_path":"flags/4x3/mo.svg","mtime":"2019-05-14T13:11:18+02:00","size":1516,"digest":"37a1088aa687af13951bc93886e3e51cb246eccfde1b56528f189327ea291792","integrity":"sha256-N6EIiqaHrxOVG8k4huPlHLJG7M/eG1ZSjxiTJ+opF5I="},"flags/1x1/mo-b463a1c37b69131d662e3fb2ae937583458824a09bcf68fc7ed2d7fd729138d1.svg":{"logical_path":"flags/1x1/mo.svg","mtime":"2019-05-14T13:11:18+02:00","size":1550,"digest":"b463a1c37b69131d662e3fb2ae937583458824a09bcf68fc7ed2d7fd729138d1","integrity":"sha256-tGOhw3tpEx1mLj+yrpN1g0WIJKCbz2j8ftLX/XKRONE="},"flags/4x3/mp-ecd12cadc358fdf293e856c0a3ffc09409123cabd3c7201225b2d21b59551e14.svg":{"logical_path":"flags/4x3/mp.svg","mtime":"2019-05-14T13:11:18+02:00","size":23425,"digest":"ecd12cadc358fdf293e856c0a3ffc09409123cabd3c7201225b2d21b59551e14","integrity":"sha256-7NEsrcNY/fKT6FbAo//AlAkSPKvTxyASJbLSG1lVHhQ="},"flags/1x1/mp-d1f4ba10c1409e713253f1fbb107eeccbd4ec1a8f9036663f1ac1991aee53835.svg":{"logical_path":"flags/1x1/mp.svg","mtime":"2019-05-14T13:11:18+02:00","size":23663,"digest":"d1f4ba10c1409e713253f1fbb107eeccbd4ec1a8f9036663f1ac1991aee53835","integrity":"sha256-0fS6EMFAnnEyU/H7sQfuzL1Owaj5A2Zj8awZka7lODU="},"flags/4x3/mq-b4e1b08a93c1364c79e6d61f95b16fca5b884da6e77835bc0e0adfff8ecc2d7f.svg":{"logical_path":"flags/4x3/mq.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"b4e1b08a93c1364c79e6d61f95b16fca5b884da6e77835bc0e0adfff8ecc2d7f","integrity":"sha256-tOGwipPBNkx55tYflbFvyluITabneDW8Dgrf/47MLX8="},"flags/1x1/mq-19cb6f7cb7354c3fd40e987c93a2d76329d34b2ed3873c3f25fe56802f251ea8.svg":{"logical_path":"flags/1x1/mq.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"19cb6f7cb7354c3fd40e987c93a2d76329d34b2ed3873c3f25fe56802f251ea8","integrity":"sha256-GctvfLc1TD/UDph8k6LXYynTSy7Thzw/Jf5WgC8lHqg="},"flags/4x3/mr-9f64af3ed5c6d8d1f68b5cb09fd1aa9d28c3c95107e063f64a0ef95f0cb9429a.svg":{"logical_path":"flags/4x3/mr.svg","mtime":"2019-05-14T13:11:18+02:00","size":450,"digest":"9f64af3ed5c6d8d1f68b5cb09fd1aa9d28c3c95107e063f64a0ef95f0cb9429a","integrity":"sha256-n2SvPtXG2NH2i1ywn9GqnSjDyVEH4GP2Sg75Xwy5Qpo="},"flags/1x1/mr-0e79b7bcc669bb871d94021db2b78b162b9867c7eaf934d8f7a3025fd5903576.svg":{"logical_path":"flags/1x1/mr.svg","mtime":"2019-05-14T13:11:18+02:00","size":438,"digest":"0e79b7bcc669bb871d94021db2b78b162b9867c7eaf934d8f7a3025fd5903576","integrity":"sha256-Dnm3vMZpu4cdlAIdsreLFiuYZ8fq+TTY96MCX9WQNXY="},"flags/4x3/ms-32620dd70353777b2ee62951556976f398cd38ae359b5a8c97311a1dc61eb8bc.svg":{"logical_path":"flags/4x3/ms.svg","mtime":"2019-05-14T13:11:18+02:00","size":6792,"digest":"32620dd70353777b2ee62951556976f398cd38ae359b5a8c97311a1dc61eb8bc","integrity":"sha256-MmIN1wNTd3su5ilRVWl285jNOK41m1qMlzEaHcYeuLw="},"flags/1x1/ms-4104d4f36cb5cf1c6de78e52e90bc3c5b8bfa262617b16a737673feb8c30a00c.svg":{"logical_path":"flags/1x1/ms.svg","mtime":"2019-05-14T13:11:18+02:00","size":6700,"digest":"4104d4f36cb5cf1c6de78e52e90bc3c5b8bfa262617b16a737673feb8c30a00c","integrity":"sha256-QQTU82y1zxxt545S6QvDxbi/omJhexanN2c/64wwoAw="},"flags/4x3/mt-0c9819aa69b34b84c1ee43620922737122eb38f107be9864a0690ac66ef8aa64.svg":{"logical_path":"flags/4x3/mt.svg","mtime":"2019-05-14T13:11:18+02:00","size":8807,"digest":"0c9819aa69b34b84c1ee43620922737122eb38f107be9864a0690ac66ef8aa64","integrity":"sha256-DJgZqmmzS4TB7kNiCSJzcSLrOPEHvphkoGkKxm74qmQ="},"flags/1x1/mt-3c3fe71f2a2bf0d961fd145ad7e48ca1e9d3a05cce514354714ba4568503d106.svg":{"logical_path":"flags/1x1/mt.svg","mtime":"2019-05-14T13:11:18+02:00","size":10519,"digest":"3c3fe71f2a2bf0d961fd145ad7e48ca1e9d3a05cce514354714ba4568503d106","integrity":"sha256-PD/nHyor8Nlh/RRa1+SMoenToFzOUUNUcUukVoUD0QY="},"flags/4x3/mu-c78c23f1499756b9db762ae434ca354d1481447fa94c66bc10aca9443b399059.svg":{"logical_path":"flags/4x3/mu.svg","mtime":"2019-05-14T13:11:18+02:00","size":322,"digest":"c78c23f1499756b9db762ae434ca354d1481447fa94c66bc10aca9443b399059","integrity":"sha256-x4wj8UmXVrnbdirkNMo1TRSBRH+pTGa8EKypRDs5kFk="},"flags/1x1/mu-91ebc79d0fa306127ea8b7a33f77d5b28f35c516ea91ff0468c7344dc838db69.svg":{"logical_path":"flags/1x1/mu.svg","mtime":"2019-05-14T13:11:18+02:00","size":322,"digest":"91ebc79d0fa306127ea8b7a33f77d5b28f35c516ea91ff0468c7344dc838db69","integrity":"sha256-kevHnQ+jBhJ+qLejP3fVso81xRbqkf8EaMc0Tcg422k="},"flags/4x3/mv-a17c947e17adae6aacef01a3e131c4150aa094911b53fbaead41783683e008eb.svg":{"logical_path":"flags/4x3/mv.svg","mtime":"2019-05-14T13:11:18+02:00","size":292,"digest":"a17c947e17adae6aacef01a3e131c4150aa094911b53fbaead41783683e008eb","integrity":"sha256-oXyUfhetrmqs7wGj4THEFQqglJEbU/uurUF4NoPgCOs="},"flags/1x1/mv-d138e94d9d2ed093ef1425c1164493b780202f9a7f7937241a7b081b79ff8b01.svg":{"logical_path":"flags/1x1/mv.svg","mtime":"2019-05-14T13:11:18+02:00","size":310,"digest":"d138e94d9d2ed093ef1425c1164493b780202f9a7f7937241a7b081b79ff8b01","integrity":"sha256-0TjpTZ0u0JPvFCXBFkSTt4AgL5p/eTckGnsIG3n/iwE="},"flags/4x3/mw-21f116afdf71df80e3c59084c6ba640814fa5389430328ff55c9403b5c239632.svg":{"logical_path":"flags/4x3/mw.svg","mtime":"2019-05-14T13:11:18+02:00","size":3721,"digest":"21f116afdf71df80e3c59084c6ba640814fa5389430328ff55c9403b5c239632","integrity":"sha256-IfEWr99x34DjxZCExrpkCBT6U4lDAyj/VclAO1wjljI="},"flags/1x1/mw-5c2228d3f1cf1f9cf8cb158e813202981828c11e8caf117836fc57fa6bc1c788.svg":{"logical_path":"flags/1x1/mw.svg","mtime":"2019-05-14T13:11:18+02:00","size":3930,"digest":"5c2228d3f1cf1f9cf8cb158e813202981828c11e8caf117836fc57fa6bc1c788","integrity":"sha256-XCIo0/HPH5z4yxWOgTICmBgowR6MrxF4NvxX+mvBx4g="},"flags/4x3/mx-a235f9b16921590b7e78caa6f76339361356946eaf0046badd10732b4647c0b6.svg":{"logical_path":"flags/4x3/mx.svg","mtime":"2019-05-14T13:11:18+02:00","size":95864,"digest":"a235f9b16921590b7e78caa6f76339361356946eaf0046badd10732b4647c0b6","integrity":"sha256-ojX5sWkhWQt+eMqm92M5NhNWlG6vAEa63RBzK0ZHwLY="},"flags/1x1/mx-cdab01ebcdccc020ca16e1355ef1fd18ca0043b501f399ca8edc48adfa8c7292.svg":{"logical_path":"flags/1x1/mx.svg","mtime":"2019-05-14T13:11:18+02:00","size":91341,"digest":"cdab01ebcdccc020ca16e1355ef1fd18ca0043b501f399ca8edc48adfa8c7292","integrity":"sha256-zasB683MwCDKFuE1XvH9GMoAQ7UB85nKjtxIrfqMcpI="},"flags/4x3/my-0ed63574cf5f20c0663ab8cd1f700e150fb641fd0b93602ba013abbfaae5ee59.svg":{"logical_path":"flags/4x3/my.svg","mtime":"2019-05-14T13:11:18+02:00","size":1284,"digest":"0ed63574cf5f20c0663ab8cd1f700e150fb641fd0b93602ba013abbfaae5ee59","integrity":"sha256-DtY1dM9fIMBmOrjNH3AOFQ+2Qf0Lk2AroBOrv6rl7lk="},"flags/1x1/my-5e8d31ef06ffc8af33a5616d760592ecd022c52afc8ba33c721f1e4989da0628.svg":{"logical_path":"flags/1x1/my.svg","mtime":"2019-05-14T13:11:18+02:00","size":1275,"digest":"5e8d31ef06ffc8af33a5616d760592ecd022c52afc8ba33c721f1e4989da0628","integrity":"sha256-Xo0x7wb/yK8zpWFtdgWS7NAixSr8i6M8ch8eSYnaBig="},"flags/4x3/mz-752e2293917b1d2ece3f097104caeadf6a679054a779e9d3be8e49dc324bb88a.svg":{"logical_path":"flags/4x3/mz.svg","mtime":"2019-05-14T13:11:18+02:00","size":2623,"digest":"752e2293917b1d2ece3f097104caeadf6a679054a779e9d3be8e49dc324bb88a","integrity":"sha256-dS4ik5F7HS7OPwlxBMrq32pnkFSneenTvo5J3DJLuIo="},"flags/1x1/mz-300cba975ad43c962ceca0d266ded1fe3d21d6b4d701d657fb42b27268ea2964.svg":{"logical_path":"flags/1x1/mz.svg","mtime":"2019-05-14T13:11:18+02:00","size":2604,"digest":"300cba975ad43c962ceca0d266ded1fe3d21d6b4d701d657fb42b27268ea2964","integrity":"sha256-MAy6l1rUPJYs7KDSZt7R/j0h1rTXAdZX+0KycmjqKWQ="},"flags/4x3/na-a0655a2e70751278e6a60d31e818f672864a6e68e8b3d3361b2fbb70fa9bfef8.svg":{"logical_path":"flags/4x3/na.svg","mtime":"2019-05-14T13:11:18+02:00","size":1005,"digest":"a0655a2e70751278e6a60d31e818f672864a6e68e8b3d3361b2fbb70fa9bfef8","integrity":"sha256-oGVaLnB1Enjmpg0x6Bj2coZKbmjos9M2Gy+7cPqb/vg="},"flags/1x1/na-1ce089a189db5be15eb05df8155f9bd017b61fc1a497e5b3021ff2ca664e122d.svg":{"logical_path":"flags/1x1/na.svg","mtime":"2019-05-14T13:11:18+02:00","size":983,"digest":"1ce089a189db5be15eb05df8155f9bd017b61fc1a497e5b3021ff2ca664e122d","integrity":"sha256-HOCJoYnbW+FesF34FV+b0Be2H8Gkl+WzAh/yymZOEi0="},"flags/4x3/nc-0c7171d91c44414ed69808611db588f1283ee7e34ea8a74a9a5101ba4b1cb305.svg":{"logical_path":"flags/4x3/nc.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"0c7171d91c44414ed69808611db588f1283ee7e34ea8a74a9a5101ba4b1cb305","integrity":"sha256-DHFx2RxEQU7WmAhhHbWI8Sg+5+NOqKdKmlEBukscswU="},"flags/1x1/nc-d3a1629f06dc3200af7669f2d895fce1908d2c1ca02d71e530bdfa6646a9516c.svg":{"logical_path":"flags/1x1/nc.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"d3a1629f06dc3200af7669f2d895fce1908d2c1ca02d71e530bdfa6646a9516c","integrity":"sha256-06FinwbcMgCvdmny2JX84ZCNLBygLXHlML36ZkapUWw="},"flags/4x3/ne-2b61d30a6cb4554535538e3b753926853e8c629a494a347286b9731c803548e4.svg":{"logical_path":"flags/4x3/ne.svg","mtime":"2019-05-14T13:11:18+02:00","size":279,"digest":"2b61d30a6cb4554535538e3b753926853e8c629a494a347286b9731c803548e4","integrity":"sha256-K2HTCmy0VUU1U447dTkmhT6MYppJSjRyhrlzHIA1SOQ="},"flags/1x1/ne-9c5f798ccd7d3dd3771ae628b4a39dfb2a4578fefd2e006f3ce89c3e494d0cb1.svg":{"logical_path":"flags/1x1/ne.svg","mtime":"2019-05-14T13:11:18+02:00","size":285,"digest":"9c5f798ccd7d3dd3771ae628b4a39dfb2a4578fefd2e006f3ce89c3e494d0cb1","integrity":"sha256-nF95jM19PdN3GuYotKOd+ypFeP79LgBvPOicPklNDLE="},"flags/4x3/nf-4e615baa83a8b4db3e39fe1d251ab913943d64e0cd320f251d619ab54e7512d3.svg":{"logical_path":"flags/4x3/nf.svg","mtime":"2019-05-14T13:11:18+02:00","size":5845,"digest":"4e615baa83a8b4db3e39fe1d251ab913943d64e0cd320f251d619ab54e7512d3","integrity":"sha256-TmFbqoOotNs+Of4dJRq5E5Q9ZODNMg8lHWGatU51EtM="},"flags/1x1/nf-45403247c90050484813acf23c50f543779528e346317274373c3c24fd830103.svg":{"logical_path":"flags/1x1/nf.svg","mtime":"2019-05-14T13:11:18+02:00","size":5598,"digest":"45403247c90050484813acf23c50f543779528e346317274373c3c24fd830103","integrity":"sha256-RUAyR8kAUEhIE6zyPFD1Q3eVKONGMXJ0Nzw8JP2DAQM="},"flags/4x3/ng-d52fd188be973f31dd34e5a0b3fed0de68fe736c8a41c6028d9c248c038c8641.svg":{"logical_path":"flags/4x3/ng.svg","mtime":"2019-05-14T13:11:18+02:00","size":263,"digest":"d52fd188be973f31dd34e5a0b3fed0de68fe736c8a41c6028d9c248c038c8641","integrity":"sha256-1S/RiL6XPzHdNOWgs/7Q3mj+c2yKQcYCjZwkjAOMhkE="},"flags/1x1/ng-f22edcc5867554d69ecbe15add0fbbb1389631f3ced07a4f820065c7770c65f5.svg":{"logical_path":"flags/1x1/ng.svg","mtime":"2019-05-14T13:11:18+02:00","size":263,"digest":"f22edcc5867554d69ecbe15add0fbbb1389631f3ced07a4f820065c7770c65f5","integrity":"sha256-8i7cxYZ1VNaey+Fa3Q+7sTiWMfPO0HpPggBlx3cMZfU="},"flags/4x3/ni-2fbb883e46fbe3b2ecfed9dac004ceb546f25c77a84a5966eea224674aebc610.svg":{"logical_path":"flags/4x3/ni.svg","mtime":"2019-05-14T13:11:18+02:00","size":18584,"digest":"2fbb883e46fbe3b2ecfed9dac004ceb546f25c77a84a5966eea224674aebc610","integrity":"sha256-L7uIPkb747Ls/tnawATOtUbyXHeoSllm7qIkZ0rrxhA="},"flags/1x1/ni-214aed148b615c4846f842b47f99cf178ac62a96cf18c5dd6b23467184b56680.svg":{"logical_path":"flags/1x1/ni.svg","mtime":"2019-05-14T13:11:18+02:00","size":18664,"digest":"214aed148b615c4846f842b47f99cf178ac62a96cf18c5dd6b23467184b56680","integrity":"sha256-IUrtFIthXEhG+EK0f5nPF4rGKpbPGMXdayNGcYS1ZoA="},"flags/4x3/nl-4f0ecea529dd4c0099dd41a7801fa5ac44aa04cd872ca31e11efd58b5a813774.svg":{"logical_path":"flags/4x3/nl.svg","mtime":"2019-05-14T13:11:18+02:00","size":367,"digest":"4f0ecea529dd4c0099dd41a7801fa5ac44aa04cd872ca31e11efd58b5a813774","integrity":"sha256-Tw7OpSndTACZ3UGngB+lrESqBM2HLKMeEe/Vi1qBN3Q="},"flags/1x1/nl-9c8f60e638879d642487818975e58c61cd3102f0e68c360708243c076436ff68.svg":{"logical_path":"flags/1x1/nl.svg","mtime":"2019-05-14T13:11:18+02:00","size":375,"digest":"9c8f60e638879d642487818975e58c61cd3102f0e68c360708243c076436ff68","integrity":"sha256-nI9g5jiHnWQkh4GJdeWMYc0xAvDmjDYHCCQ8B2Q2/2g="},"flags/4x3/no-270f7ee9d1d2efa6abf16f693faba8586adae842d79d8aad9e3f37e96c27cbce.svg":{"logical_path":"flags/4x3/no.svg","mtime":"2019-05-14T13:11:18+02:00","size":324,"digest":"270f7ee9d1d2efa6abf16f693faba8586adae842d79d8aad9e3f37e96c27cbce","integrity":"sha256-Jw9+6dHS76ar8W9pP6uoWGra6ELXnYqtnj836Wwny84="},"flags/1x1/no-7d377325e8c5ec4de0376e9f4c13463f183af637e6c443716f22020c7a313979.svg":{"logical_path":"flags/1x1/no.svg","mtime":"2019-05-14T13:11:18+02:00","size":324,"digest":"7d377325e8c5ec4de0376e9f4c13463f183af637e6c443716f22020c7a313979","integrity":"sha256-fTdzJejF7E3gN26fTBNGPxg69jfmxENxbyICDHoxOXk="},"flags/4x3/np-69637ddb3a173c4522a71598278aa32462e1762e34dd99c9dc99a515433a6cf8.svg":{"logical_path":"flags/4x3/np.svg","mtime":"2019-05-14T13:11:18+02:00","size":1061,"digest":"69637ddb3a173c4522a71598278aa32462e1762e34dd99c9dc99a515433a6cf8","integrity":"sha256-aWN92zoXPEUipxWYJ4qjJGLhdi403ZnJ3JmlFUM6bPg="},"flags/1x1/np-44ead118cce3a1fcbb720cc8d6eab6ecb6b62292315f61ae5963a40262ee11d2.svg":{"logical_path":"flags/1x1/np.svg","mtime":"2019-05-14T13:11:18+02:00","size":1199,"digest":"44ead118cce3a1fcbb720cc8d6eab6ecb6b62292315f61ae5963a40262ee11d2","integrity":"sha256-ROrRGMzjofy7cgzI1uq27La2IpIxX2GuWWOkAmLuEdI="},"flags/4x3/nr-0bd3c0ba7bbac4bd5985b838096eeebd67711d39065619ef092fa4bb55b22a6d.svg":{"logical_path":"flags/4x3/nr.svg","mtime":"2019-05-14T13:11:18+02:00","size":648,"digest":"0bd3c0ba7bbac4bd5985b838096eeebd67711d39065619ef092fa4bb55b22a6d","integrity":"sha256-C9PAunu6xL1Zhbg4CW7uvWdxHTkGVhnvCS+ku1WyKm0="},"flags/1x1/nr-63b9c44e5dd66a59895f52707dc24db5bd1eab6e535298d24e414c0f2dafcb3c.svg":{"logical_path":"flags/1x1/nr.svg","mtime":"2019-05-14T13:11:18+02:00","size":671,"digest":"63b9c44e5dd66a59895f52707dc24db5bd1eab6e535298d24e414c0f2dafcb3c","integrity":"sha256-Y7nETl3WalmJX1JwfcJNtb0eq25TUpjSTkFMDy2vyzw="},"flags/4x3/nu-259989e1eea0cbf6b41a33176a4c9c1eaa2e7ae6571ad80a324c6309bd5aa5fc.svg":{"logical_path":"flags/4x3/nu.svg","mtime":"2019-05-14T13:11:18+02:00","size":1748,"digest":"259989e1eea0cbf6b41a33176a4c9c1eaa2e7ae6571ad80a324c6309bd5aa5fc","integrity":"sha256-JZmJ4e6gy/a0GjMXakycHqoueuZXGtgKMkxjCb1apfw="},"flags/1x1/nu-1cb535708f64ed8b386a245e571e677e935009af92f2b214760a2832c1ee1b53.svg":{"logical_path":"flags/1x1/nu.svg","mtime":"2019-05-14T13:11:18+02:00","size":1736,"digest":"1cb535708f64ed8b386a245e571e677e935009af92f2b214760a2832c1ee1b53","integrity":"sha256-HLU1cI9k7Ys4aiReVx5nfpNQCa+S8rIUdgooMsHuG1M="},"flags/4x3/nz-90ceca2a683fbec395a91b77b0880cea99c3b2cbdb24caa5474925cbdcc3675e.svg":{"logical_path":"flags/4x3/nz.svg","mtime":"2019-05-14T13:11:18+02:00","size":3019,"digest":"90ceca2a683fbec395a91b77b0880cea99c3b2cbdb24caa5474925cbdcc3675e","integrity":"sha256-kM7KKmg/vsOVqRt3sIgM6pnDssvbJMqlR0kly9zDZ14="},"flags/1x1/nz-b0d78f165a72edd46599222a2ea5f6a91a8252975cb03e33c4ca08e389859aac.svg":{"logical_path":"flags/1x1/nz.svg","mtime":"2019-05-14T13:11:18+02:00","size":3045,"digest":"b0d78f165a72edd46599222a2ea5f6a91a8252975cb03e33c4ca08e389859aac","integrity":"sha256-sNePFlpy7dRlmSIqLqX2qRqCUpdcsD4zxMoI44mFmqw="},"flags/4x3/om-aadcca7bc7ad318400097b84849dd64c4744306cd9b4f152fba34f2e84116965.svg":{"logical_path":"flags/4x3/om.svg","mtime":"2019-05-14T13:11:18+02:00","size":22891,"digest":"aadcca7bc7ad318400097b84849dd64c4744306cd9b4f152fba34f2e84116965","integrity":"sha256-qtzKe8etMYQACXuEhJ3WTEdEMGzZtPFS+6NPLoQRaWU="},"flags/1x1/om-705e2bd2b2fc7d13c152aa06bfb9e6ee4ad8b299f8c06ca16adad0b18b2b18ed.svg":{"logical_path":"flags/1x1/om.svg","mtime":"2019-05-14T13:11:18+02:00","size":22875,"digest":"705e2bd2b2fc7d13c152aa06bfb9e6ee4ad8b299f8c06ca16adad0b18b2b18ed","integrity":"sha256-cF4r0rL8fRPBUqoGv7nm7krYspn4wGyhatrQsYsrGO0="},"flags/4x3/pa-027e679bd65dcaa2c53145a14669c1e674a467a889ef702cbe2a260f7ca8ad38.svg":{"logical_path":"flags/4x3/pa.svg","mtime":"2019-05-14T13:11:18+02:00","size":746,"digest":"027e679bd65dcaa2c53145a14669c1e674a467a889ef702cbe2a260f7ca8ad38","integrity":"sha256-An5nm9ZdyqLFMUWhRmnB5nSkZ6iJ73AsviomD3yorTg="},"flags/1x1/pa-edeb4faeadaa286de7fdc667e25d38ad0cdbccaec5023182fed6a3c74e8b09eb.svg":{"logical_path":"flags/1x1/pa.svg","mtime":"2019-05-14T13:11:18+02:00","size":662,"digest":"edeb4faeadaa286de7fdc667e25d38ad0cdbccaec5023182fed6a3c74e8b09eb","integrity":"sha256-7etPrq2qKG3n/cZn4l04rQzbzK7FAjGC/tajx06LCes="},"flags/4x3/pe-7ec59842737c90d6ff543f1831fd69b51e1e7ee1b068c3ac6259cbf2c214d611.svg":{"logical_path":"flags/4x3/pe.svg","mtime":"2019-05-14T13:11:18+02:00","size":74343,"digest":"7ec59842737c90d6ff543f1831fd69b51e1e7ee1b068c3ac6259cbf2c214d611","integrity":"sha256-fsWYQnN8kNb/VD8YMf1ptR4efuGwaMOsYlnL8sIU1hE="},"flags/1x1/pe-97d1b8ed1d4ed5e5f0348a731ca4a3a4b9abc7d440447dc87a521f229f375ed3.svg":{"logical_path":"flags/1x1/pe.svg","mtime":"2019-05-14T13:11:18+02:00","size":73629,"digest":"97d1b8ed1d4ed5e5f0348a731ca4a3a4b9abc7d440447dc87a521f229f375ed3","integrity":"sha256-l9G47R1O1eXwNIpzHKSjpLmrx9RARH3IelIfIp83XtM="},"flags/4x3/pf-27955c73c5be4043c5b7ddf64c8f46d11c6648e3b1fc0efe028b8afea21a40e1.svg":{"logical_path":"flags/4x3/pf.svg","mtime":"2019-05-14T13:11:18+02:00","size":4292,"digest":"27955c73c5be4043c5b7ddf64c8f46d11c6648e3b1fc0efe028b8afea21a40e1","integrity":"sha256-J5Vcc8W+QEPFt932TI9G0RxmSOOx/A7+AouK/qIaQOE="},"flags/1x1/pf-83e3e1d36fba45e015c62f938e6d182029edc05ebfdc50bcb33860f36f96d73a.svg":{"logical_path":"flags/1x1/pf.svg","mtime":"2019-05-14T13:11:18+02:00","size":4235,"digest":"83e3e1d36fba45e015c62f938e6d182029edc05ebfdc50bcb33860f36f96d73a","integrity":"sha256-g+Ph02+6ReAVxi+Tjm0YICntwF6/3FC8szhg82+W1zo="},"flags/4x3/pg-c2fdd2551f9044c461eccfae2d7ba0a347a99143f6002b71a429942af0217897.svg":{"logical_path":"flags/4x3/pg.svg","mtime":"2019-05-14T13:11:18+02:00","size":1671,"digest":"c2fdd2551f9044c461eccfae2d7ba0a347a99143f6002b71a429942af0217897","integrity":"sha256-wv3SVR+QRMRh7M+uLXugo0epkUP2ACtxpCmUKvAheJc="},"flags/1x1/pg-cf60257fa85f9270b1e9980e703435186110167f76c153bc460c10ee8b2d4b09.svg":{"logical_path":"flags/1x1/pg.svg","mtime":"2019-05-14T13:11:18+02:00","size":2111,"digest":"cf60257fa85f9270b1e9980e703435186110167f76c153bc460c10ee8b2d4b09","integrity":"sha256-z2Alf6hfknCx6ZgOcDQ1GGEQFn92wVO8RgwQ7ostSwk="},"flags/4x3/ph-bf3394850a6cec6a535420eabce263e7f8193413e4af1fb317c76da025388c1b.svg":{"logical_path":"flags/4x3/ph.svg","mtime":"2019-05-14T13:11:18+02:00","size":1303,"digest":"bf3394850a6cec6a535420eabce263e7f8193413e4af1fb317c76da025388c1b","integrity":"sha256-vzOUhQps7GpTVCDqvOJj5/gZNBPkrx+zF8dtoCU4jBs="},"flags/1x1/ph-006c3218effe4269252cb9638de82ea339eb2894951705c630533ceffa842169.svg":{"logical_path":"flags/1x1/ph.svg","mtime":"2019-05-14T13:11:18+02:00","size":1303,"digest":"006c3218effe4269252cb9638de82ea339eb2894951705c630533ceffa842169","integrity":"sha256-AGwyGO/+QmklLLljjeguoznrKJSVFwXGMFM87/qEIWk="},"flags/4x3/pk-b64f6a32e5bb598f57cfe49c4899c2021f2d153653f3d92101e6e11b2158e500.svg":{"logical_path":"flags/4x3/pk.svg","mtime":"2019-05-14T13:11:18+02:00","size":743,"digest":"b64f6a32e5bb598f57cfe49c4899c2021f2d153653f3d92101e6e11b2158e500","integrity":"sha256-tk9qMuW7WY9Xz+ScSJnCAh8tFTZT89khAebhGyFY5QA="},"flags/1x1/pk-d2d58def913c9081c5eeeda5f0b6895068ec13c955694e359531e23422145e60.svg":{"logical_path":"flags/1x1/pk.svg","mtime":"2019-05-14T13:11:18+02:00","size":694,"digest":"d2d58def913c9081c5eeeda5f0b6895068ec13c955694e359531e23422145e60","integrity":"sha256-0tWN75E8kIHF7u2l8LaJUGjsE8lVaU41lTHiNCIUXmA="},"flags/4x3/pl-f55a710991a94c2e6c2f9f1a7a4a36ebb84b24b7c9d9df4e1ffe86d61321fa6f.svg":{"logical_path":"flags/4x3/pl.svg","mtime":"2019-05-14T13:11:18+02:00","size":228,"digest":"f55a710991a94c2e6c2f9f1a7a4a36ebb84b24b7c9d9df4e1ffe86d61321fa6f","integrity":"sha256-9VpxCZGpTC5sL58aeko267hLJLfJ2d9OH/6G1hMh+m8="},"flags/1x1/pl-fafb539259385f2b99df910cff085710a9b4d9706b74e4e0f8a6ef627615c4e7.svg":{"logical_path":"flags/1x1/pl.svg","mtime":"2019-05-14T13:11:18+02:00","size":228,"digest":"fafb539259385f2b99df910cff085710a9b4d9706b74e4e0f8a6ef627615c4e7","integrity":"sha256-+vtTklk4XyuZ35EM/whXEKm02XBrdOTg+KbvYnYVxOc="},"flags/4x3/pm-8f6338d2ae3e0e42adc9754720ca21ad4979095cf6d7467a8db5a5a1c3e0b2a5.svg":{"logical_path":"flags/4x3/pm.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"8f6338d2ae3e0e42adc9754720ca21ad4979095cf6d7467a8db5a5a1c3e0b2a5","integrity":"sha256-j2M40q4+DkKtyXVHIMohrUl5CVz210Z6jbWlocPgsqU="},"flags/1x1/pm-63029c6198dc42c404ec39807a99528b1d198eeeea6f9a1e309548242480140b.svg":{"logical_path":"flags/1x1/pm.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"63029c6198dc42c404ec39807a99528b1d198eeeea6f9a1e309548242480140b","integrity":"sha256-YwKcYZjcQsQE7DmAeplSix0Zju7qb5oeMJVIJCSAFAs="},"flags/4x3/pn-4006c11ca83011c0dd60a13ac30b27da0578b9f1368bd8c6de5aab423f6662d8.svg":{"logical_path":"flags/4x3/pn.svg","mtime":"2019-05-14T13:11:18+02:00","size":10953,"digest":"4006c11ca83011c0dd60a13ac30b27da0578b9f1368bd8c6de5aab423f6662d8","integrity":"sha256-QAbBHKgwEcDdYKE6wwsn2gV4ufE2i9jG3lqrQj9mYtg="},"flags/1x1/pn-6c433f7f9cb79c6d5ed7bbeade8a495e3b26ca2604f4fd3995096109684ac5dd.svg":{"logical_path":"flags/1x1/pn.svg","mtime":"2019-05-14T13:11:18+02:00","size":8624,"digest":"6c433f7f9cb79c6d5ed7bbeade8a495e3b26ca2604f4fd3995096109684ac5dd","integrity":"sha256-bEM/f5y3nG1e17vq3opJXjsmyiYE9P05lQlhCWhKxd0="},"flags/4x3/pr-6287e1515fa80e2d05133ed93f14ca03a1be6909a9ef6c736fd60f9c9fe73132.svg":{"logical_path":"flags/4x3/pr.svg","mtime":"2019-05-14T13:11:18+02:00","size":634,"digest":"6287e1515fa80e2d05133ed93f14ca03a1be6909a9ef6c736fd60f9c9fe73132","integrity":"sha256-YofhUV+oDi0FEz7ZPxTKA6G+aQmp72xzb9YPnJ/nMTI="},"flags/1x1/pr-526985b3a6d2d6de577ed0ed92d0b49ce854667e3ff630304813fd5af15527cd.svg":{"logical_path":"flags/1x1/pr.svg","mtime":"2019-05-14T13:11:18+02:00","size":622,"digest":"526985b3a6d2d6de577ed0ed92d0b49ce854667e3ff630304813fd5af15527cd","integrity":"sha256-UmmFs6bS1t5XftDtktC0nOhUZn4/9jAwSBP9WvFVJ80="},"flags/4x3/ps-31f50e1fcb44b9aa6e9ce4473c3085f744e70ea0fa1fd8d85787f4e7b0c4a69b.svg":{"logical_path":"flags/4x3/ps.svg","mtime":"2019-05-14T13:11:18+02:00","size":558,"digest":"31f50e1fcb44b9aa6e9ce4473c3085f744e70ea0fa1fd8d85787f4e7b0c4a69b","integrity":"sha256-MfUOH8tEuapunORHPDCF90TnDqD6H9jYV4f057DEpps="},"flags/1x1/ps-c43918bc71bef71b24dd46e8cacc53e0df53e02dcce6199d06d11a4637f08a04.svg":{"logical_path":"flags/1x1/ps.svg","mtime":"2019-05-14T13:11:18+02:00","size":544,"digest":"c43918bc71bef71b24dd46e8cacc53e0df53e02dcce6199d06d11a4637f08a04","integrity":"sha256-xDkYvHG+9xsk3UboysxT4N9T4C3M5hmdBtEaRjfwigQ="},"flags/4x3/pt-9aab20caed714ee47fc408f017037aea94a649b3ba4d87e2da37870ee31e4f92.svg":{"logical_path":"flags/4x3/pt.svg","mtime":"2019-05-14T13:11:18+02:00","size":8393,"digest":"9aab20caed714ee47fc408f017037aea94a649b3ba4d87e2da37870ee31e4f92","integrity":"sha256-mqsgyu1xTuR/xAjwFwN66pSmSbO6TYfi2jeHDuMeT5I="},"flags/1x1/pt-a309869e5018c9690a65ebdf8a2d69d61f82772068a7920f9680ed0581ae5966.svg":{"logical_path":"flags/1x1/pt.svg","mtime":"2019-05-14T13:11:18+02:00","size":8775,"digest":"a309869e5018c9690a65ebdf8a2d69d61f82772068a7920f9680ed0581ae5966","integrity":"sha256-owmGnlAYyWkKZevfii1p1h+CdyBop5IPloDtBYGuWWY="},"flags/4x3/pw-9262037d114d0f61571c74f9a5455809709b43e6565443ae2667981eecb5f12a.svg":{"logical_path":"flags/4x3/pw.svg","mtime":"2019-05-14T13:11:18+02:00","size":467,"digest":"9262037d114d0f61571c74f9a5455809709b43e6565443ae2667981eecb5f12a","integrity":"sha256-kmIDfRFND2FXHHT5pUVYCXCbQ+ZWVEOuJmeYHuy18So="},"flags/1x1/pw-a6f42019653ae26d43c6e9b7bef83fc98cff8ec5e8d0c50ad7cb0a17d5e565a6.svg":{"logical_path":"flags/1x1/pw.svg","mtime":"2019-05-14T13:11:18+02:00","size":511,"digest":"a6f42019653ae26d43c6e9b7bef83fc98cff8ec5e8d0c50ad7cb0a17d5e565a6","integrity":"sha256-pvQgGWU64m1Dxum3vvg/yYz/jsXo0MUK18sKF9XlZaY="},"flags/4x3/py-5bc9e9f0dee94ae3d9bd80ae6fb1aac297dc81a1c592d0a73bc3383bce73af74.svg":{"logical_path":"flags/4x3/py.svg","mtime":"2019-05-14T13:11:18+02:00","size":17312,"digest":"5bc9e9f0dee94ae3d9bd80ae6fb1aac297dc81a1c592d0a73bc3383bce73af74","integrity":"sha256-W8np8N7pSuPZvYCub7GqwpfcgaHFktCnO8M4O85zr3Q="},"flags/1x1/py-182eff300f4507fd9399fb6310d1cd3b45adadd7924ad2814003c7111ec5c0de.svg":{"logical_path":"flags/1x1/py.svg","mtime":"2019-05-14T13:11:18+02:00","size":17478,"digest":"182eff300f4507fd9399fb6310d1cd3b45adadd7924ad2814003c7111ec5c0de","integrity":"sha256-GC7/MA9FB/2TmftjENHNO0WtrdeSStKBQAPHER7FwN4="},"flags/4x3/qa-32c93970f8e521850eddfaf2a89dfff987f0ae3b0b73a253c301b61cf547cf9e.svg":{"logical_path":"flags/4x3/qa.svg","mtime":"2019-05-14T13:11:18+02:00","size":362,"digest":"32c93970f8e521850eddfaf2a89dfff987f0ae3b0b73a253c301b61cf547cf9e","integrity":"sha256-Msk5cPjlIYUO3fryqJ3/+YfwrjsLc6JTwwG2HPVHz54="},"flags/1x1/qa-182e4d8ace2607d0c02d3c29d65eb084af71092357006bc41cd601981ec3b81c.svg":{"logical_path":"flags/1x1/qa.svg","mtime":"2019-05-14T13:11:18+02:00","size":359,"digest":"182e4d8ace2607d0c02d3c29d65eb084af71092357006bc41cd601981ec3b81c","integrity":"sha256-GC5Nis4mB9DALTwp1l6whK9xCSNXAGvEHNYBmB7DuBw="},"flags/4x3/re-8b2ea1f2727c266a2b80cb12a9b7195f6b656f521552b67893b6761a07f9bc92.svg":{"logical_path":"flags/4x3/re.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"8b2ea1f2727c266a2b80cb12a9b7195f6b656f521552b67893b6761a07f9bc92","integrity":"sha256-iy6h8nJ8JmorgMsSqbcZX2tlb1IVUrZ4k7Z2Ggf5vJI="},"flags/1x1/re-07eb7d855022bc678b47b0ce5fd05da5044d6dde86ad3697d4ae55c68ff447c1.svg":{"logical_path":"flags/1x1/re.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"07eb7d855022bc678b47b0ce5fd05da5044d6dde86ad3697d4ae55c68ff447c1","integrity":"sha256-B+t9hVAivGeLR7DOX9BdpQRNbd6GrTaX1K5Vxo/0R8E="},"flags/4x3/ro-4ab797571e1d9eb326486f75654a4590fd33f20444f85b77ba0997eb6138c21f.svg":{"logical_path":"flags/4x3/ro.svg","mtime":"2019-05-14T13:11:18+02:00","size":308,"digest":"4ab797571e1d9eb326486f75654a4590fd33f20444f85b77ba0997eb6138c21f","integrity":"sha256-SreXVx4dnrMmSG91ZUpFkP0z8gRE+Ft3ugmX62E4wh8="},"flags/1x1/ro-ddfcbaec04d11bf7f95abebd1d3a42b2862b1af8fca9b02764a6ed0e409a1d75.svg":{"logical_path":"flags/1x1/ro.svg","mtime":"2019-05-14T13:11:18+02:00","size":308,"digest":"ddfcbaec04d11bf7f95abebd1d3a42b2862b1af8fca9b02764a6ed0e409a1d75","integrity":"sha256-3fy67ATRG/f5Wr69HTpCsoYrGvj8qbAnZKbtDkCaHXU="},"flags/4x3/rs-dd8a52473ea40e23b393b5f4a30d1edd91865aab167f0c1835ae84b15dcce585.svg":{"logical_path":"flags/4x3/rs.svg","mtime":"2019-05-14T13:11:18+02:00","size":187640,"digest":"dd8a52473ea40e23b393b5f4a30d1edd91865aab167f0c1835ae84b15dcce585","integrity":"sha256-3YpSRz6kDiOzk7X0ow0e3ZGGWqsWfwwYNa6EsV3M5YU="},"flags/1x1/rs-42bf40209c92e4e7169daf29fbcb7253b2804eee7a463051529327f38851f865.svg":{"logical_path":"flags/1x1/rs.svg","mtime":"2019-05-14T13:11:18+02:00","size":187503,"digest":"42bf40209c92e4e7169daf29fbcb7253b2804eee7a463051529327f38851f865","integrity":"sha256-Qr9AIJyS5OcWna8p+8tyU7KATu56RjBRUpMn84hR+GU="},"flags/4x3/ru-13f4525a4caad6e31afa523d2bc4a0c1e6377c0bef1bfd872682130d3f199d1d.svg":{"logical_path":"flags/4x3/ru.svg","mtime":"2019-05-14T13:11:18+02:00","size":289,"digest":"13f4525a4caad6e31afa523d2bc4a0c1e6377c0bef1bfd872682130d3f199d1d","integrity":"sha256-E/RSWkyq1uMa+lI9K8SgweY3fAvvG/2HJoITDT8ZnR0="},"flags/1x1/ru-b9792a963faf667447e0456dba5be80a3b37c197a4284d1539a3433721d9e2fe.svg":{"logical_path":"flags/1x1/ru.svg","mtime":"2019-05-14T13:11:18+02:00","size":293,"digest":"b9792a963faf667447e0456dba5be80a3b37c197a4284d1539a3433721d9e2fe","integrity":"sha256-uXkqlj+vZnRH4EVtulvoCjs3wZekKE0VOaNDNyHZ4v4="},"flags/4x3/rw-bc38bcd6e19d2941839b253af6e863b13338cde1174874f9674471026c15e422.svg":{"logical_path":"flags/4x3/rw.svg","mtime":"2019-05-14T13:11:18+02:00","size":750,"digest":"bc38bcd6e19d2941839b253af6e863b13338cde1174874f9674471026c15e422","integrity":"sha256-vDi81uGdKUGDmyU69uhjsTM4zeEXSHT5Z0RxAmwV5CI="},"flags/1x1/rw-456698123775b83d2b0fa1b9fe073f9ccdba0b6bf39a703b8979dcce158eb32c.svg":{"logical_path":"flags/1x1/rw.svg","mtime":"2019-05-14T13:11:18+02:00","size":751,"digest":"456698123775b83d2b0fa1b9fe073f9ccdba0b6bf39a703b8979dcce158eb32c","integrity":"sha256-RWaYEjd1uD0rD6G5/gc/nM26C2vzmnA7iXnczhWOsyw="},"flags/4x3/sa-2b2fd6abb48415d5407c576c24a24fbd80af5877ef06cf2d026452f6c67f5f4d.svg":{"logical_path":"flags/4x3/sa.svg","mtime":"2019-05-14T13:11:18+02:00","size":10303,"digest":"2b2fd6abb48415d5407c576c24a24fbd80af5877ef06cf2d026452f6c67f5f4d","integrity":"sha256-Ky/Wq7SEFdVAfFdsJKJPvYCvWHfvBs8tAmRS9sZ/X00="},"flags/1x1/sa-d9ebc73e7957f86604164dd5054fb32601ad14d7dfd4bfe73da5bdd10bb2f8ae.svg":{"logical_path":"flags/1x1/sa.svg","mtime":"2019-05-14T13:11:18+02:00","size":10233,"digest":"d9ebc73e7957f86604164dd5054fb32601ad14d7dfd4bfe73da5bdd10bb2f8ae","integrity":"sha256-2evHPnlX+GYEFk3VBU+zJgGtFNff1L/nPaW90Quy+K4="},"flags/4x3/sb-37761927039d0a37ba0995c59fd31bbe36c8a0ca161e5b72b8131e3659f8dddf.svg":{"logical_path":"flags/4x3/sb.svg","mtime":"2019-05-14T13:11:18+02:00","size":950,"digest":"37761927039d0a37ba0995c59fd31bbe36c8a0ca161e5b72b8131e3659f8dddf","integrity":"sha256-N3YZJwOdCje6CZXFn9MbvjbIoMoWHltyuBMeNln43d8="},"flags/1x1/sb-bedbf8464cd82f391bfe6178c63055b650d0cf3aee60c37fa79a586f95783b79.svg":{"logical_path":"flags/1x1/sb.svg","mtime":"2019-05-14T13:11:18+02:00","size":956,"digest":"bedbf8464cd82f391bfe6178c63055b650d0cf3aee60c37fa79a586f95783b79","integrity":"sha256-vtv4RkzYLzkb/mF4xjBVtlDQzzruYMN/p5pYb5V4O3k="},"flags/4x3/sc-f6a2f8f37be93f07600b491b52cb58d80d74b92d8ace0af313f4ce081b0d1345.svg":{"logical_path":"flags/4x3/sc.svg","mtime":"2019-05-14T13:11:18+02:00","size":568,"digest":"f6a2f8f37be93f07600b491b52cb58d80d74b92d8ace0af313f4ce081b0d1345","integrity":"sha256-9qL483vpPwdgC0kbUstY2A10uS2KzgrzE/TOCBsNE0U="},"flags/1x1/sc-5dcd01b98c34460c9624280fb5047811fbae7d976620cd0a70ad4263a9085b60.svg":{"logical_path":"flags/1x1/sc.svg","mtime":"2019-05-14T13:11:18+02:00","size":573,"digest":"5dcd01b98c34460c9624280fb5047811fbae7d976620cd0a70ad4263a9085b60","integrity":"sha256-Xc0BuYw0RgyWJCgPtQR4EfuufZdmIM0KcK1CY6kIW2A="},"flags/4x3/sd-cc9cf97e8a37622b9e1bad28811d46c4471595afa448dc055e0e3aae7687fe4b.svg":{"logical_path":"flags/4x3/sd.svg","mtime":"2019-05-14T13:11:18+02:00","size":494,"digest":"cc9cf97e8a37622b9e1bad28811d46c4471595afa448dc055e0e3aae7687fe4b","integrity":"sha256-zJz5foo3YiueG60ogR1GxEcVla+kSNwFXg46rnaH/ks="},"flags/1x1/sd-1f5d13f9780085acbaad13d959b1918c796ba7b0450954b15d145e87cebe045c.svg":{"logical_path":"flags/1x1/sd.svg","mtime":"2019-05-14T13:11:18+02:00","size":496,"digest":"1f5d13f9780085acbaad13d959b1918c796ba7b0450954b15d145e87cebe045c","integrity":"sha256-H10T+XgAhay6rRPZWbGRjHlrp7BFCVSxXRReh86+BFw="},"flags/4x3/se-84b06bcd5bd90ea8dd6d1c3c8d2799a843c47b0256ce098aef75414964618286.svg":{"logical_path":"flags/4x3/se.svg","mtime":"2019-05-14T13:11:18+02:00","size":688,"digest":"84b06bcd5bd90ea8dd6d1c3c8d2799a843c47b0256ce098aef75414964618286","integrity":"sha256-hLBrzVvZDqjdbRw8jSeZqEPEewJWzgmK73VBSWRhgoY="},"flags/1x1/se-39f128686652cf914f8601110fcc9ac879bca204407013b93aff4ca4fb2ed9bc.svg":{"logical_path":"flags/1x1/se.svg","mtime":"2019-05-14T13:11:18+02:00","size":701,"digest":"39f128686652cf914f8601110fcc9ac879bca204407013b93aff4ca4fb2ed9bc","integrity":"sha256-OfEoaGZSz5FPhgERD8yayHm8ogRAcBO5Ov9MpPsu2bw="},"flags/4x3/sg-a82acd90077e76318ddb0be96999d9695b9a9f4627e8a0f341d3987a62747dcc.svg":{"logical_path":"flags/4x3/sg.svg","mtime":"2019-05-14T13:11:18+02:00","size":890,"digest":"a82acd90077e76318ddb0be96999d9695b9a9f4627e8a0f341d3987a62747dcc","integrity":"sha256-qCrNkAd+djGN2wvpaZnZaVuan0Yn6KDzQdOYemJ0fcw="},"flags/1x1/sg-c22e093634568aae249bf35f9ddcaa6796b5f27d76c39ff5336abf7f1b8a47d4.svg":{"logical_path":"flags/1x1/sg.svg","mtime":"2019-05-14T13:11:18+02:00","size":954,"digest":"c22e093634568aae249bf35f9ddcaa6796b5f27d76c39ff5336abf7f1b8a47d4","integrity":"sha256-wi4JNjRWiq4km/NfndyqZ5a18n12w5/1M2q/fxuKR9Q="},"flags/4x3/sh-57470d9a75955f0fac605a94e853bab524c7461a4c025e809fb09db762ebe46f.svg":{"logical_path":"flags/4x3/sh.svg","mtime":"2019-05-14T13:11:18+02:00","size":29702,"digest":"57470d9a75955f0fac605a94e853bab524c7461a4c025e809fb09db762ebe46f","integrity":"sha256-V0cNmnWVXw+sYFqU6FO6tSTHRhpMAl6An7Cdt2Lr5G8="},"flags/1x1/sh-8d06a0fff61e51eb65357d138e00736545835b8649aa2694152f4cdc9f941c16.svg":{"logical_path":"flags/1x1/sh.svg","mtime":"2019-05-14T13:11:18+02:00","size":30308,"digest":"8d06a0fff61e51eb65357d138e00736545835b8649aa2694152f4cdc9f941c16","integrity":"sha256-jQag//YeUetlNX0TjgBzZUWDW4ZJqiaUFS9M3J+UHBY="},"flags/4x3/si-289d6417f154323e7922df09ffc0f49ded31548c7ee8020c39cb85724ffbcea8.svg":{"logical_path":"flags/4x3/si.svg","mtime":"2019-05-14T13:11:18+02:00","size":2055,"digest":"289d6417f154323e7922df09ffc0f49ded31548c7ee8020c39cb85724ffbcea8","integrity":"sha256-KJ1kF/FUMj55It8J/8D0ne0xVIx+6AIMOcuFck/7zqg="},"flags/1x1/si-ca40a5f4f38119d6f52ffd3ddb36af95951a2aa1fadcd897f5bc1641bb2e0051.svg":{"logical_path":"flags/1x1/si.svg","mtime":"2019-05-14T13:11:18+02:00","size":2068,"digest":"ca40a5f4f38119d6f52ffd3ddb36af95951a2aa1fadcd897f5bc1641bb2e0051","integrity":"sha256-ykCl9POBGdb1L/092zavlZUaKqH63NiX9bwWQbsuAFE="},"flags/4x3/sj-67d4cdd268d0c0cd93fc561b506cb5646cb508385c93ed350d11f94aa1c83833.svg":{"logical_path":"flags/4x3/sj.svg","mtime":"2019-05-14T13:11:18+02:00","size":324,"digest":"67d4cdd268d0c0cd93fc561b506cb5646cb508385c93ed350d11f94aa1c83833","integrity":"sha256-Z9TN0mjQwM2T/FYbUGy1ZGy1CDhck+01DRH5SqHIODM="},"flags/1x1/sj-f7c489607033138039612d6abe7f4b0b4b6dada5cac75d78204f404a0d292b1c.svg":{"logical_path":"flags/1x1/sj.svg","mtime":"2019-05-14T13:11:18+02:00","size":324,"digest":"f7c489607033138039612d6abe7f4b0b4b6dada5cac75d78204f404a0d292b1c","integrity":"sha256-98SJYHAzE4A5YS1qvn9LC0ttraXKx114IE9ASg0pKxw="},"flags/4x3/sk-a0bdbb7f5d6998ffe9fcbc80bbdf0e6cff3629740d2ce1b8d61025e0a8b322b5.svg":{"logical_path":"flags/4x3/sk.svg","mtime":"2019-05-14T13:11:18+02:00","size":1208,"digest":"a0bdbb7f5d6998ffe9fcbc80bbdf0e6cff3629740d2ce1b8d61025e0a8b322b5","integrity":"sha256-oL27f11pmP/p/LyAu98ObP82KXQNLOG41hAl4KizIrU="},"flags/1x1/sk-a82a813b2d81af9be1aa775f22b2c2457d11e870e072d7e23957a11d0878faed.svg":{"logical_path":"flags/1x1/sk.svg","mtime":"2019-05-14T13:11:18+02:00","size":1187,"digest":"a82a813b2d81af9be1aa775f22b2c2457d11e870e072d7e23957a11d0878faed","integrity":"sha256-qCqBOy2Br5vhqndfIrLCRX0R6HDgctfiOVehHQh4+u0="},"flags/4x3/sl-be265bed24cfe0b25778201f251e52e4e721e3d319795875913805d1aea84ebb.svg":{"logical_path":"flags/4x3/sl.svg","mtime":"2019-05-14T13:11:18+02:00","size":278,"digest":"be265bed24cfe0b25778201f251e52e4e721e3d319795875913805d1aea84ebb","integrity":"sha256-viZb7STP4LJXeCAfJR5S5Och49MZeVh1kTgF0a6oTrs="},"flags/1x1/sl-cb8bccbaa21957f006ed4ae0144da81c999e93bd8014023b16b500fdcdc397d3.svg":{"logical_path":"flags/1x1/sl.svg","mtime":"2019-05-14T13:11:18+02:00","size":441,"digest":"cb8bccbaa21957f006ed4ae0144da81c999e93bd8014023b16b500fdcdc397d3","integrity":"sha256-y4vMuqIZV/AG7UrgFE2oHJmek72AFAI7FrUA/c3Dl9M="},"flags/4x3/sm-d7818df3f8f2d5dbed27dc5a0a80b1e41cdcd6130eeff221da58f0321e925f27.svg":{"logical_path":"flags/4x3/sm.svg","mtime":"2019-05-14T13:11:18+02:00","size":15960,"digest":"d7818df3f8f2d5dbed27dc5a0a80b1e41cdcd6130eeff221da58f0321e925f27","integrity":"sha256-14GN8/jy1dvtJ9xaCoCx5Bzc1hMO7/Ih2ljwMh6SXyc="},"flags/1x1/sm-6f87660dcac925bbdb036c79a0e20d3b208215d327be4c4764ae1069d6464efd.svg":{"logical_path":"flags/1x1/sm.svg","mtime":"2019-05-14T13:11:18+02:00","size":15881,"digest":"6f87660dcac925bbdb036c79a0e20d3b208215d327be4c4764ae1069d6464efd","integrity":"sha256-b4dmDcrJJbvbA2x5oOINOyCCFdMnvkxHZK4QadZGTv0="},"flags/4x3/sn-b131b17a374bcfbd00d442d282fa52f0e4e0e448cda1cdfaac25a95ff56443c0.svg":{"logical_path":"flags/4x3/sn.svg","mtime":"2019-05-14T13:11:18+02:00","size":427,"digest":"b131b17a374bcfbd00d442d282fa52f0e4e0e448cda1cdfaac25a95ff56443c0","integrity":"sha256-sTGxejdLz70A1ELSgvpS8OTg5EjNoc36rCWpX/VkQ8A="},"flags/1x1/sn-d180d3ce9846966dee6a3d9433ede7d24801dc4311636aabd470ec5b8765d772.svg":{"logical_path":"flags/1x1/sn.svg","mtime":"2019-05-14T13:11:18+02:00","size":418,"digest":"d180d3ce9846966dee6a3d9433ede7d24801dc4311636aabd470ec5b8765d772","integrity":"sha256-0YDTzphGlm3uaj2UM+3n0kgB3EMRY2qr1HDsW4dl13I="},"flags/4x3/so-3b5b77b371299478144a94b60c99524fb6b99bfedb3dcc976ab70185e07f399e.svg":{"logical_path":"flags/4x3/so.svg","mtime":"2019-05-14T13:11:18+02:00","size":494,"digest":"3b5b77b371299478144a94b60c99524fb6b99bfedb3dcc976ab70185e07f399e","integrity":"sha256-O1t3s3EplHgUSpS2DJlST7a5m/7bPcyXarcBheB/OZ4="},"flags/1x1/so-50aa941f2d2954285ef9e5ac260cdd264a73cf2e4b0c627677f04141fff2afd3.svg":{"logical_path":"flags/1x1/so.svg","mtime":"2019-05-14T13:11:18+02:00","size":501,"digest":"50aa941f2d2954285ef9e5ac260cdd264a73cf2e4b0c627677f04141fff2afd3","integrity":"sha256-UKqUHy0pVChe+eWsJgzdJkpzzy5LDGJ2d/BBQf/yr9M="},"flags/4x3/sr-94d0f0aefcbdea8d7ba35648eda5037e99bf4126723ce36416582ea43b08d3e2.svg":{"logical_path":"flags/4x3/sr.svg","mtime":"2019-05-14T13:11:18+02:00","size":318,"digest":"94d0f0aefcbdea8d7ba35648eda5037e99bf4126723ce36416582ea43b08d3e2","integrity":"sha256-lNDwrvy96o17o1ZI7aUDfpm/QSZyPONkFlgupDsI0+I="},"flags/1x1/sr-3944d683068d437471725d22fd71ccbe6a63ae307ff9775690417d3bf262cf82.svg":{"logical_path":"flags/1x1/sr.svg","mtime":"2019-05-14T13:11:18+02:00","size":323,"digest":"3944d683068d437471725d22fd71ccbe6a63ae307ff9775690417d3bf262cf82","integrity":"sha256-OUTWgwaNQ3Rxcl0i/XHMvmpjrjB/+XdWkEF9O/Jiz4I="},"flags/4x3/ss-f391e5002cbce83f97f7d1a11c284fa2e36a7d6dc734757d733656801ab17d0a.svg":{"logical_path":"flags/4x3/ss.svg","mtime":"2019-05-14T13:11:18+02:00","size":389,"digest":"f391e5002cbce83f97f7d1a11c284fa2e36a7d6dc734757d733656801ab17d0a","integrity":"sha256-85HlACy86D+X99GhHChPouNqfW3HNHV9czZWgBqxfQo="},"flags/1x1/ss-853bd9f713d2f6b1fe540a82e8bf4754912da21575b3fe756b8741767f318f7a.svg":{"logical_path":"flags/1x1/ss.svg","mtime":"2019-05-14T13:11:18+02:00","size":400,"digest":"853bd9f713d2f6b1fe540a82e8bf4754912da21575b3fe756b8741767f318f7a","integrity":"sha256-hTvZ9xPS9rH+VAqC6L9HVJEtohV1s/51a4dBdn8xj3o="},"flags/4x3/st-b52bb48a2c0800f5cb4b07bdd93c3908f77bcb6800be883ebf943bbd3d99d42c.svg":{"logical_path":"flags/4x3/st.svg","mtime":"2019-05-14T13:11:18+02:00","size":919,"digest":"b52bb48a2c0800f5cb4b07bdd93c3908f77bcb6800be883ebf943bbd3d99d42c","integrity":"sha256-tSu0iiwIAPXLSwe92Tw5CPd7y2gAvog+v5Q7vT2Z1Cw="},"flags/1x1/st-d8b5b1c8b9fe947086a4d277d2ac5d6b9cff188dfd37bda66c8bf5e02c5facc8.svg":{"logical_path":"flags/1x1/st.svg","mtime":"2019-05-14T13:11:18+02:00","size":923,"digest":"d8b5b1c8b9fe947086a4d277d2ac5d6b9cff188dfd37bda66c8bf5e02c5facc8","integrity":"sha256-2LWxyLn+lHCGpNJ30qxda5z/GI39N72mbIv14CxfrMg="},"flags/4x3/sv-6d02d63c7f04c9388e98f892cc43d8daa2110fc84242758d5627fcd247bfd09b.svg":{"logical_path":"flags/4x3/sv.svg","mtime":"2019-05-14T13:11:18+02:00","size":84037,"digest":"6d02d63c7f04c9388e98f892cc43d8daa2110fc84242758d5627fcd247bfd09b","integrity":"sha256-bQLWPH8EyTiOmPiSzEPY2qIRD8hCQnWNVif80ke/0Js="},"flags/1x1/sv-fb4c8d7eb98396a93c5b9c37195d70e809e0d71d8b8f9316e842121f95bb82ea.svg":{"logical_path":"flags/1x1/sv.svg","mtime":"2019-05-14T13:11:18+02:00","size":84509,"digest":"fb4c8d7eb98396a93c5b9c37195d70e809e0d71d8b8f9316e842121f95bb82ea","integrity":"sha256-+0yNfrmDlqk8W5w3GV1w6Ang1x2Lj5MW6EISH5W7guo="},"flags/4x3/sx-fb6a7b1cbc5b29eeeb39a5aec64ef7aad432c37bbe848d29955a3786b9763224.svg":{"logical_path":"flags/4x3/sx.svg","mtime":"2019-05-14T13:11:18+02:00","size":13306,"digest":"fb6a7b1cbc5b29eeeb39a5aec64ef7aad432c37bbe848d29955a3786b9763224","integrity":"sha256-+2p7HLxbKe7rOaWuxk73qtQyw3u+hI0plVo3hrl2MiQ="},"flags/1x1/sx-a37b124212f8530b921aef7657cfb35c2895a731c7a06f333faee4c93f32806a.svg":{"logical_path":"flags/1x1/sx.svg","mtime":"2019-05-14T13:11:18+02:00","size":13115,"digest":"a37b124212f8530b921aef7657cfb35c2895a731c7a06f333faee4c93f32806a","integrity":"sha256-o3sSQhL4UwuSGu92V8+zXCiVpzHHoG8zP67kyT8ygGo="},"flags/4x3/sy-e35f8d88c864ed4f38edb2f9f96d5bd69f6df078b50515b8c5467bf6b1689f50.svg":{"logical_path":"flags/4x3/sy.svg","mtime":"2019-05-14T13:11:18+02:00","size":568,"digest":"e35f8d88c864ed4f38edb2f9f96d5bd69f6df078b50515b8c5467bf6b1689f50","integrity":"sha256-41+NiMhk7U847bL5+W1b1p9t8Hi1BRW4xUZ79rFon1A="},"flags/1x1/sy-5d537bd5b42b58f6e8a7e33fbe5942a16126abb639edf9cb58b88938c57ebaa9.svg":{"logical_path":"flags/1x1/sy.svg","mtime":"2019-05-14T13:11:18+02:00","size":582,"digest":"5d537bd5b42b58f6e8a7e33fbe5942a16126abb639edf9cb58b88938c57ebaa9","integrity":"sha256-XVN71bQrWPbop+M/vllCoWEmq7Y57fnLWLiJOMV+uqk="},"flags/4x3/sz-c65ae592e943217787848364bdb4c57335869f4626ce705adabdc2620669c1c6.svg":{"logical_path":"flags/4x3/sz.svg","mtime":"2019-05-14T13:11:18+02:00","size":6755,"digest":"c65ae592e943217787848364bdb4c57335869f4626ce705adabdc2620669c1c6","integrity":"sha256-xlrlkulDIXeHhINkvbTFczWGn0YmznBa2r3CYgZpwcY="},"flags/1x1/sz-dd3d1c65bdf09317553f205e588e3dc7336acec1cb9315bfbe0f5bd8ca5bba3f.svg":{"logical_path":"flags/1x1/sz.svg","mtime":"2019-05-14T13:11:18+02:00","size":6706,"digest":"dd3d1c65bdf09317553f205e588e3dc7336acec1cb9315bfbe0f5bd8ca5bba3f","integrity":"sha256-3T0cZb3wkxdVPyBeWI49xzNqzsHLkxW/vg9b2Mpbuj8="},"flags/4x3/tc-594b6cc87040836c6d6777afb5833d565d3e5e75f404350a51443ec4588a1ccb.svg":{"logical_path":"flags/4x3/tc.svg","mtime":"2019-05-14T13:11:18+02:00","size":14585,"digest":"594b6cc87040836c6d6777afb5833d565d3e5e75f404350a51443ec4588a1ccb","integrity":"sha256-WUtsyHBAg2xtZ3evtYM9Vl0+XnX0BDUKUUQ+xFiKHMs="},"flags/1x1/tc-34a37006252eea340488220585c31d047b57e3e7934c77180d930972aaceadc3.svg":{"logical_path":"flags/1x1/tc.svg","mtime":"2019-05-14T13:11:18+02:00","size":14843,"digest":"34a37006252eea340488220585c31d047b57e3e7934c77180d930972aaceadc3","integrity":"sha256-NKNwBiUu6jQEiCIFhcMdBHtX4+eTTHcYDZMJcqrOrcM="},"flags/4x3/td-b67a1978e3badb895ff640c80bb6c0e33eac354220c08cf3fc93d62bf5d685a3.svg":{"logical_path":"flags/4x3/td.svg","mtime":"2019-05-14T13:11:18+02:00","size":270,"digest":"b67a1978e3badb895ff640c80bb6c0e33eac354220c08cf3fc93d62bf5d685a3","integrity":"sha256-tnoZeOO624lf9kDIC7bA4z6sNUIgwIzz/JPWK/XWhaM="},"flags/1x1/td-556b3a7991c17010cb7e1ff23c4edcc2dcdb8c406a128d407fd165ea8a19d311.svg":{"logical_path":"flags/1x1/td.svg","mtime":"2019-05-14T13:11:18+02:00","size":282,"digest":"556b3a7991c17010cb7e1ff23c4edcc2dcdb8c406a128d407fd165ea8a19d311","integrity":"sha256-VWs6eZHBcBDLfh/yPE7cwtzbjEBqEo1Af9Fl6ooZ0xE="},"flags/4x3/tf-35cd83351521f3022a43e01f0c40f34663a66ac1e92045979f31d3fd65c16d02.svg":{"logical_path":"flags/4x3/tf.svg","mtime":"2019-05-14T13:11:18+02:00","size":1091,"digest":"35cd83351521f3022a43e01f0c40f34663a66ac1e92045979f31d3fd65c16d02","integrity":"sha256-Nc2DNRUh8wIqQ+AfDEDzRmOmasHpIEWXnzHT/WXBbQI="},"flags/1x1/tf-485e71f61ff577735dbc4ba1025515c22a83c48ee7f3a2ed49804766c35f6ea5.svg":{"logical_path":"flags/1x1/tf.svg","mtime":"2019-05-14T13:11:18+02:00","size":1199,"digest":"485e71f61ff577735dbc4ba1025515c22a83c48ee7f3a2ed49804766c35f6ea5","integrity":"sha256-SF5x9h/1d3NdvEuhAlUVwiqDxI7n86LtSYBHZsNfbqU="},"flags/4x3/tg-24b25f4c2213fe35e5f5586d7ab23abf0c25ad2049708cd52ba72e1ec7b754ff.svg":{"logical_path":"flags/4x3/tg.svg","mtime":"2019-05-14T13:11:18+02:00","size":725,"digest":"24b25f4c2213fe35e5f5586d7ab23abf0c25ad2049708cd52ba72e1ec7b754ff","integrity":"sha256-JLJfTCIT/jXl9VhterI6vwwlrSBJcIzVK6cuHse3VP8="},"flags/1x1/tg-05f3d98392a5ec3e4aecf8f629d3d03f05ac55abb7d9d84187d599acfe271374.svg":{"logical_path":"flags/1x1/tg.svg","mtime":"2019-05-14T13:11:18+02:00","size":736,"digest":"05f3d98392a5ec3e4aecf8f629d3d03f05ac55abb7d9d84187d599acfe271374","integrity":"sha256-BfPZg5Kl7D5K7Pj2KdPQPwWsVau32dhBh9WZrP4nE3Q="},"flags/4x3/th-cc936bacd84dddd15454ef06bc64e357f83854af34692fc37363272d61f637d4.svg":{"logical_path":"flags/4x3/th.svg","mtime":"2019-05-14T13:11:18+02:00","size":287,"digest":"cc936bacd84dddd15454ef06bc64e357f83854af34692fc37363272d61f637d4","integrity":"sha256-zJNrrNhN3dFUVO8GvGTjV/g4VK80aS/Dc2MnLWH2N9Q="},"flags/1x1/th-de82cbd770db2be53a8e3d59d86e2b748a5d3f96eb8584f7b9364cefbd06a172.svg":{"logical_path":"flags/1x1/th.svg","mtime":"2019-05-14T13:11:18+02:00","size":288,"digest":"de82cbd770db2be53a8e3d59d86e2b748a5d3f96eb8584f7b9364cefbd06a172","integrity":"sha256-3oLL13DbK+U6jj1Z2G4rdIpdP5brhYT3uTZM770GoXI="},"flags/4x3/tj-b90bf3e2dd63265d55b67962b160df65f021c42b6ea304e2943c10b9e2a8749d.svg":{"logical_path":"flags/4x3/tj.svg","mtime":"2019-05-14T13:11:18+02:00","size":1831,"digest":"b90bf3e2dd63265d55b67962b160df65f021c42b6ea304e2943c10b9e2a8749d","integrity":"sha256-uQvz4t1jJl1VtnlisWDfZfAhxCtuowTilDwQueKodJ0="},"flags/1x1/tj-5f6571e74b1f8720f9ecc2d3aa2098ca45d2e7ad6602b2a57c206384719b9f36.svg":{"logical_path":"flags/1x1/tj.svg","mtime":"2019-05-14T13:11:18+02:00","size":1788,"digest":"5f6571e74b1f8720f9ecc2d3aa2098ca45d2e7ad6602b2a57c206384719b9f36","integrity":"sha256-X2Vx50sfhyD57MLTqiCYykXS561mArKlfCBjhHGbnzY="},"flags/4x3/tk-602520b29b909c96baea17a38eb654d6c6fbc7088f46a0cb8d8fe34ff92e3cb8.svg":{"logical_path":"flags/4x3/tk.svg","mtime":"2019-05-14T13:11:18+02:00","size":791,"digest":"602520b29b909c96baea17a38eb654d6c6fbc7088f46a0cb8d8fe34ff92e3cb8","integrity":"sha256-YCUgspuQnJa66hejjrZU1sb7xwiPRqDLjY/jT/kuPLg="},"flags/1x1/tk-fe1dc8aaa0643a45a74ecec8aec09f0fe2207d104bb3c28c0b84405f1275aeba.svg":{"logical_path":"flags/1x1/tk.svg","mtime":"2019-05-14T13:11:18+02:00","size":781,"digest":"fe1dc8aaa0643a45a74ecec8aec09f0fe2207d104bb3c28c0b84405f1275aeba","integrity":"sha256-/h3IqqBkOkWnTs7IrsCfD+IgfRBLs8KMC4RAXxJ1rro="},"flags/4x3/tl-ebdb862aa5ae5de1a72242571deaa70bfb222f488a93b70e304f2075b474d54b.svg":{"logical_path":"flags/4x3/tl.svg","mtime":"2019-05-14T13:11:18+02:00","size":600,"digest":"ebdb862aa5ae5de1a72242571deaa70bfb222f488a93b70e304f2075b474d54b","integrity":"sha256-69uGKqWuXeGnIkJXHeqnC/siL0iKk7cOME8gdbR01Us="},"flags/1x1/tl-485f02183bdb192ba3ce6e5f076e184112739f883ae0a8fde33c454377b848d6.svg":{"logical_path":"flags/1x1/tl.svg","mtime":"2019-05-14T13:11:18+02:00","size":582,"digest":"485f02183bdb192ba3ce6e5f076e184112739f883ae0a8fde33c454377b848d6","integrity":"sha256-SF8CGDvbGSujzm5fB24YQRJzn4g64Kj94zxFQ3e4SNY="},"flags/4x3/tm-5ddb4128bf0becd7c60413d5418027f5f01ca4bc72561d54b94febfee7a5a24b.svg":{"logical_path":"flags/4x3/tm.svg","mtime":"2019-05-14T13:11:18+02:00","size":32579,"digest":"5ddb4128bf0becd7c60413d5418027f5f01ca4bc72561d54b94febfee7a5a24b","integrity":"sha256-XdtBKL8L7NfGBBPVQYAn9fAcpLxyVh1UuU/r/ueloks="},"flags/1x1/tm-3521ad569a4095aa8d4166d5d9094fccfdbb3ea411207ad685b6dd5814ef3392.svg":{"logical_path":"flags/1x1/tm.svg","mtime":"2019-05-14T13:11:18+02:00","size":31884,"digest":"3521ad569a4095aa8d4166d5d9094fccfdbb3ea411207ad685b6dd5814ef3392","integrity":"sha256-NSGtVppAlaqNQWbV2QlPzP27PqQRIHrWhbbdWBTvM5I="},"flags/4x3/tn-ca27eb50d88b11d20b5b09e2bbecb7753267222489920c526608e5d2acd22d79.svg":{"logical_path":"flags/4x3/tn.svg","mtime":"2019-05-14T13:11:18+02:00","size":753,"digest":"ca27eb50d88b11d20b5b09e2bbecb7753267222489920c526608e5d2acd22d79","integrity":"sha256-yifrUNiLEdILWwniu+y3dTJnIiSJkgxSZgjl0qzSLXk="},"flags/1x1/tn-222c6cd4742c558f48ebcacb47ea334057642fffa3456a1c75e0fad9e728d09b.svg":{"logical_path":"flags/1x1/tn.svg","mtime":"2019-05-14T13:11:18+02:00","size":743,"digest":"222c6cd4742c558f48ebcacb47ea334057642fffa3456a1c75e0fad9e728d09b","integrity":"sha256-Iixs1HQsVY9I68rLR+ozQFdkL/+jRWocdeD62eco0Js="},"flags/4x3/to-c9c509fc24f591fbe52bbf732c44291384c787796e1fc9c703a973587c3f8ad1.svg":{"logical_path":"flags/4x3/to.svg","mtime":"2019-05-14T13:11:18+02:00","size":358,"digest":"c9c509fc24f591fbe52bbf732c44291384c787796e1fc9c703a973587c3f8ad1","integrity":"sha256-ycUJ/CT1kfvlK79zLEQpE4THh3luH8nHA6lzWHw/itE="},"flags/1x1/to-cf26dfb44b56b915b2f11896355cb778b938ed54423311d69d7cda9626887dda.svg":{"logical_path":"flags/1x1/to.svg","mtime":"2019-05-14T13:11:18+02:00","size":364,"digest":"cf26dfb44b56b915b2f11896355cb778b938ed54423311d69d7cda9626887dda","integrity":"sha256-zybftEtWuRWy8RiWNVy3eLk47VRCMxHWnXzaliaIfdo="},"flags/4x3/tr-c40f697070cf8d8358785b9203d1c8f438976e3cd644a87d9ee16fa9960deaa4.svg":{"logical_path":"flags/4x3/tr.svg","mtime":"2019-05-14T13:11:18+02:00","size":557,"digest":"c40f697070cf8d8358785b9203d1c8f438976e3cd644a87d9ee16fa9960deaa4","integrity":"sha256-xA9pcHDPjYNYeFuSA9HI9DiXbjzWRKh9nuFvqZYN6qQ="},"flags/1x1/tr-627dcf91a1e5153c045e33a3459b5d56002530fddd3fc53927f4d0fb7ea004a5.svg":{"logical_path":"flags/1x1/tr.svg","mtime":"2019-05-14T13:11:18+02:00","size":578,"digest":"627dcf91a1e5153c045e33a3459b5d56002530fddd3fc53927f4d0fb7ea004a5","integrity":"sha256-Yn3PkaHlFTwEXjOjRZtdVgAlMP3dP8U5J/TQ+36gBKU="},"flags/4x3/tt-04786ffedbde2c96a30ad1cbf4db000848f14bd700324651fc88364e5f3c2fd0.svg":{"logical_path":"flags/4x3/tt.svg","mtime":"2019-05-14T13:11:18+02:00","size":324,"digest":"04786ffedbde2c96a30ad1cbf4db000848f14bd700324651fc88364e5f3c2fd0","integrity":"sha256-BHhv/tveLJajCtHL9NsACEjxS9cAMkZR/Ig2Tl88L9A="},"flags/1x1/tt-6a3c73bfa7782366d95e673d847ef8f84c0475b364d359def1efd264297bac30.svg":{"logical_path":"flags/1x1/tt.svg","mtime":"2019-05-14T13:11:18+02:00","size":323,"digest":"6a3c73bfa7782366d95e673d847ef8f84c0475b364d359def1efd264297bac30","integrity":"sha256-ajxzv6d4I2bZXmc9hH74+EwEdbNk01ne8e/SZCl7rDA="},"flags/4x3/tv-20b56e7c0a2fbaa2a0b7b1bd87afc6368440f175fb3a0589de5e34e99d163fd7.svg":{"logical_path":"flags/4x3/tv.svg","mtime":"2019-05-14T13:11:18+02:00","size":2299,"digest":"20b56e7c0a2fbaa2a0b7b1bd87afc6368440f175fb3a0589de5e34e99d163fd7","integrity":"sha256-ILVufAovuqKgt7G9h6/GNoRA8XX7OgWJ3l406Z0WP9c="},"flags/1x1/tv-8bce1d7bde2e20dcc473ed3a33c66e4bedcf1acf2d2fff6d54353a480b8cafbc.svg":{"logical_path":"flags/1x1/tv.svg","mtime":"2019-05-14T13:11:18+02:00","size":2166,"digest":"8bce1d7bde2e20dcc473ed3a33c66e4bedcf1acf2d2fff6d54353a480b8cafbc","integrity":"sha256-i84de94uINzEc+06M8ZuS+3PGs8tL/9tVDU6SAuMr7w="},"flags/4x3/tw-36070ac0a15ab1f4811478da62e7678756a9aa266b141ed0549aba1c0e04333a.svg":{"logical_path":"flags/4x3/tw.svg","mtime":"2019-05-14T13:11:18+02:00","size":945,"digest":"36070ac0a15ab1f4811478da62e7678756a9aa266b141ed0549aba1c0e04333a","integrity":"sha256-NgcKwKFasfSBFHjaYudnh1apqiZrFB7QVJq6HA4EMzo="},"flags/1x1/tw-fd7a0db2f3808842ca99176f097356fe9e6f3c120d6aa9e8c4a9c2dd4c3943ba.svg":{"logical_path":"flags/1x1/tw.svg","mtime":"2019-05-14T13:11:18+02:00","size":960,"digest":"fd7a0db2f3808842ca99176f097356fe9e6f3c120d6aa9e8c4a9c2dd4c3943ba","integrity":"sha256-/XoNsvOAiELKmRdvCXNW/p5vPBINaqnoxKnC3Uw5Q7o="},"flags/4x3/tz-51ad7d69f059075df61b9226468af0d78642af4ad34a7540f64c5bea82e803d7.svg":{"logical_path":"flags/4x3/tz.svg","mtime":"2019-05-14T13:11:18+02:00","size":546,"digest":"51ad7d69f059075df61b9226468af0d78642af4ad34a7540f64c5bea82e803d7","integrity":"sha256-Ua19afBZB132G5ImRorw14ZCr0rTSnVA9kxb6oLoA9c="},"flags/1x1/tz-0703f29a7ae02a9a1753cb1726dd2934d75ed3a12e8d63faa9fa866e1fe61440.svg":{"logical_path":"flags/1x1/tz.svg","mtime":"2019-05-14T13:11:18+02:00","size":605,"digest":"0703f29a7ae02a9a1753cb1726dd2934d75ed3a12e8d63faa9fa866e1fe61440","integrity":"sha256-BwPymnrgKpoXU8sXJt0pNNde06EujWP6qfqGbh/mFEA="},"flags/4x3/ua-7f7db03c3b492aaacd11b0abac70d543a7c0ec5265a36d529bbb80a7c432d81a.svg":{"logical_path":"flags/4x3/ua.svg","mtime":"2019-05-14T13:11:18+02:00","size":241,"digest":"7f7db03c3b492aaacd11b0abac70d543a7c0ec5265a36d529bbb80a7c432d81a","integrity":"sha256-f32wPDtJKqrNEbCrrHDVQ6fA7FJlo21Sm7uAp8Qy2Bo="},"flags/1x1/ua-25192fa80f120edb1dd1c4757fd7b79ef38f5e1729238f4135003e6a1501bf28.svg":{"logical_path":"flags/1x1/ua.svg","mtime":"2019-05-14T13:11:18+02:00","size":241,"digest":"25192fa80f120edb1dd1c4757fd7b79ef38f5e1729238f4135003e6a1501bf28","integrity":"sha256-JRkvqA8SDtsd0cR1f9e3nvOPXhcpI49BNQA+ahUBvyg="},"flags/4x3/ug-7635df53eafdf411be0809df835bfbcffd61badd6c4df3db0909c8b3188015a0.svg":{"logical_path":"flags/4x3/ug.svg","mtime":"2019-05-14T13:11:18+02:00","size":3959,"digest":"7635df53eafdf411be0809df835bfbcffd61badd6c4df3db0909c8b3188015a0","integrity":"sha256-djXfU+r99BG+CAnfg1v7z/1hut1sTfPbCQnIsxiAFaA="},"flags/1x1/ug-537f34f64e723fbe7cb7902ea0e61303f1ada79214197efc39ebe2c52ce24186.svg":{"logical_path":"flags/1x1/ug.svg","mtime":"2019-05-14T13:11:18+02:00","size":4038,"digest":"537f34f64e723fbe7cb7902ea0e61303f1ada79214197efc39ebe2c52ce24186","integrity":"sha256-U3809k5yP758t5AuoOYTA/Gtp5IUGX78OevixSziQYY="},"flags/4x3/um-a0ae80e34bbf94677dd6052ea87cc0090aba747dab5440e5ca6e231f7f07c96d.svg":{"logical_path":"flags/4x3/um.svg","mtime":"2019-05-14T13:11:18+02:00","size":4524,"digest":"a0ae80e34bbf94677dd6052ea87cc0090aba747dab5440e5ca6e231f7f07c96d","integrity":"sha256-oK6A40u/lGd91gUuqHzACQq6dH2rVEDlym4jH38HyW0="},"flags/1x1/um-3f1bc09babe7fdcf32518bb49d1aac3a66d0204f955eacca291c58d4f4ef895a.svg":{"logical_path":"flags/1x1/um.svg","mtime":"2019-05-14T13:11:18+02:00","size":3975,"digest":"3f1bc09babe7fdcf32518bb49d1aac3a66d0204f955eacca291c58d4f4ef895a","integrity":"sha256-PxvAm6vn/c8yUYu0nRqsOmbQIE+VXqzKKRxY1PTviVo="},"flags/4x3/us-aefd8f7e57d11f7b0416d01d9c665ab3848b10af849f35a4d772d58d24d83329.svg":{"logical_path":"flags/4x3/us.svg","mtime":"2019-05-14T13:11:18+02:00","size":4468,"digest":"aefd8f7e57d11f7b0416d01d9c665ab3848b10af849f35a4d772d58d24d83329","integrity":"sha256-rv2PflfRH3sEFtAdnGZas4SLEK+EnzWk13LVjSTYMyk="},"flags/1x1/us-87af45be9346e8c820312976abe332ee11f8931e29fa361328d28660a711b1e2.svg":{"logical_path":"flags/1x1/us.svg","mtime":"2019-05-14T13:11:18+02:00","size":3924,"digest":"87af45be9346e8c820312976abe332ee11f8931e29fa361328d28660a711b1e2","integrity":"sha256-h69FvpNG6MggMSl2q+My7hH4kx4p+jYTKNKGYKcRseI="},"flags/4x3/uy-9f636c8283abf56cc930746fd427c1d1644dcf8736c537629df13f760da96ebc.svg":{"logical_path":"flags/4x3/uy.svg","mtime":"2019-05-14T13:11:18+02:00","size":1721,"digest":"9f636c8283abf56cc930746fd427c1d1644dcf8736c537629df13f760da96ebc","integrity":"sha256-n2NsgoOr9WzJMHRv1CfB0WRNz4c2xTdinfE/dg2pbrw="},"flags/1x1/uy-e216b762a93ec55bf9b4ae3d35b7febe0b192a12246fd66c45139ce77fb2095e.svg":{"logical_path":"flags/1x1/uy.svg","mtime":"2019-05-14T13:11:18+02:00","size":1718,"digest":"e216b762a93ec55bf9b4ae3d35b7febe0b192a12246fd66c45139ce77fb2095e","integrity":"sha256-4ha3Yqk+xVv5tK49Nbf+vgsZKhIkb9ZsRROc53+yCV4="},"flags/4x3/uz-697d596705372323beddccb3626d1ce405b36249315c6b006ff1529e24909ceb.svg":{"logical_path":"flags/4x3/uz.svg","mtime":"2019-05-14T13:11:18+02:00","size":1457,"digest":"697d596705372323beddccb3626d1ce405b36249315c6b006ff1529e24909ceb","integrity":"sha256-aX1ZZwU3IyO+3cyzYm0c5AWzYkkxXGsAb/FSniSQnOs="},"flags/1x1/uz-aa34cbe4f6f0e4b5d890975578d28cc9b1e88ebd503d3bdca693748eb29b3353.svg":{"logical_path":"flags/1x1/uz.svg","mtime":"2019-05-14T13:11:18+02:00","size":1457,"digest":"aa34cbe4f6f0e4b5d890975578d28cc9b1e88ebd503d3bdca693748eb29b3353","integrity":"sha256-qjTL5Pbw5LXYkJdVeNKMybHojr1QPTvcppN0jrKbM1M="},"flags/4x3/va-d24d3c5bee108c396997c3d5b2bd2273433752d8c222eb531650e51551a4afd0.svg":{"logical_path":"flags/4x3/va.svg","mtime":"2019-05-14T13:11:18+02:00","size":91241,"digest":"d24d3c5bee108c396997c3d5b2bd2273433752d8c222eb531650e51551a4afd0","integrity":"sha256-0k08W+4QjDlpl8PVsr0ic0M3UtjCIutTFlDlFVGkr9A="},"flags/1x1/va-01160c1bffda12f0b94554ba0c50162a88da807943617334bd4c57a030985e95.svg":{"logical_path":"flags/1x1/va.svg","mtime":"2019-05-14T13:11:18+02:00","size":90876,"digest":"01160c1bffda12f0b94554ba0c50162a88da807943617334bd4c57a030985e95","integrity":"sha256-ARYMG//aEvC5RVS6DFAWKojagHlDYXM0vUxXoDCYXpU="},"flags/4x3/vc-ddf979bee2889414e5a05ac55f39a9c93f34e0aff0d35f007605049a2d8b5afb.svg":{"logical_path":"flags/4x3/vc.svg","mtime":"2019-05-14T13:11:18+02:00","size":454,"digest":"ddf979bee2889414e5a05ac55f39a9c93f34e0aff0d35f007605049a2d8b5afb","integrity":"sha256-3fl5vuKIlBTloFrFXzmpyT804K/w018AdgUEmi2LWvs="},"flags/1x1/vc-ac776e16dec19ff2e2d9238f541dae5d977282b451a83ab3d4122efed2392be9.svg":{"logical_path":"flags/1x1/vc.svg","mtime":"2019-05-14T13:11:18+02:00","size":501,"digest":"ac776e16dec19ff2e2d9238f541dae5d977282b451a83ab3d4122efed2392be9","integrity":"sha256-rHduFt7Bn/Li2SOPVB2uXZdygrRRqDqz1BIu/tI5K+k="},"flags/4x3/ve-e23abd006cc75a8c4f9ec1cb122b46f9b52e26c5606532d2c868277d4ccd523b.svg":{"logical_path":"flags/4x3/ve.svg","mtime":"2019-05-14T13:11:18+02:00","size":1171,"digest":"e23abd006cc75a8c4f9ec1cb122b46f9b52e26c5606532d2c868277d4ccd523b","integrity":"sha256-4jq9AGzHWoxPnsHLEitG+bUuJsVgZTLSyGgnfUzNUjs="},"flags/1x1/ve-1480713f28719e0a83da2c5f1333407dbfa5bcc0de8c9ba718fcf47273ee95ef.svg":{"logical_path":"flags/1x1/ve.svg","mtime":"2019-05-14T13:11:18+02:00","size":1191,"digest":"1480713f28719e0a83da2c5f1333407dbfa5bcc0de8c9ba718fcf47273ee95ef","integrity":"sha256-FIBxPyhxngqD2ixfEzNAfb+lvMDejJunGPz0cnPule8="},"flags/4x3/vg-7f8f24a4d6995e4dd39e3d9098dad5e14649821fa12ffc200edf0a586285ee15.svg":{"logical_path":"flags/4x3/vg.svg","mtime":"2019-05-14T13:11:18+02:00","size":24818,"digest":"7f8f24a4d6995e4dd39e3d9098dad5e14649821fa12ffc200edf0a586285ee15","integrity":"sha256-f48kpNaZXk3Tnj2QmNrV4UZJgh+hL/wgDt8KWGKF7hU="},"flags/1x1/vg-b464b6a78e46c29df9e4bdadc2646208f11c59168706456075f970552a24efa8.svg":{"logical_path":"flags/1x1/vg.svg","mtime":"2019-05-14T13:11:18+02:00","size":24997,"digest":"b464b6a78e46c29df9e4bdadc2646208f11c59168706456075f970552a24efa8","integrity":"sha256-tGS2p45Gwp355L2twmRiCPEcWRaHBkVgdflwVSok76g="},"flags/4x3/vi-58311325a293b046044976d899f288ce0fbe9bfd705a23947a9b38d7991983d7.svg":{"logical_path":"flags/4x3/vi.svg","mtime":"2019-05-14T13:11:18+02:00","size":8775,"digest":"58311325a293b046044976d899f288ce0fbe9bfd705a23947a9b38d7991983d7","integrity":"sha256-WDETJaKTsEYESXbYmfKIzg++m/1wWiOUeps415kZg9c="},"flags/1x1/vi-1c132d2cff66cdbdb7b6acf504bb0cd9d7579595d80c3fa6604ff24ca7a0184d.svg":{"logical_path":"flags/1x1/vi.svg","mtime":"2019-05-14T13:11:18+02:00","size":8730,"digest":"1c132d2cff66cdbdb7b6acf504bb0cd9d7579595d80c3fa6604ff24ca7a0184d","integrity":"sha256-HBMtLP9mzb23tqz1BLsM2ddXlZXYDD+mYE/yTKegGE0="},"flags/4x3/vn-a918d3c9cdc368b1d2ff9614d58cbcd1d43b725889b0ba18f5d4e693071e389a.svg":{"logical_path":"flags/4x3/vn.svg","mtime":"2019-05-14T13:11:18+02:00","size":492,"digest":"a918d3c9cdc368b1d2ff9614d58cbcd1d43b725889b0ba18f5d4e693071e389a","integrity":"sha256-qRjTyc3DaLHS/5YU1Yy80dQ7cliJsLoY9dTmkwceOJo="},"flags/1x1/vn-895e428ae3d98c99dbb02088cf8ef040bfb031df6f16c3c8fc3678505d869791.svg":{"logical_path":"flags/1x1/vn.svg","mtime":"2019-05-14T13:11:18+02:00","size":501,"digest":"895e428ae3d98c99dbb02088cf8ef040bfb031df6f16c3c8fc3678505d869791","integrity":"sha256-iV5CiuPZjJnbsCCIz47wQL+wMd9vFsPI/DZ4UF2Gl5E="},"flags/4x3/vu-2c286c778a7bed03cb603ab24b68dc91868f4f054cf4f851bdd17aa16731571c.svg":{"logical_path":"flags/4x3/vu.svg","mtime":"2019-05-14T13:11:18+02:00","size":3771,"digest":"2c286c778a7bed03cb603ab24b68dc91868f4f054cf4f851bdd17aa16731571c","integrity":"sha256-LChsd4p77QPLYDqyS2jckYaPTwVM9PhRvdF6oWcxVxw="},"flags/1x1/vu-51ef23121e2641ebeeac50d31c4e52b7d00d3ab1bc9fc0ad95ea86fd3631975a.svg":{"logical_path":"flags/1x1/vu.svg","mtime":"2019-05-14T13:11:18+02:00","size":3740,"digest":"51ef23121e2641ebeeac50d31c4e52b7d00d3ab1bc9fc0ad95ea86fd3631975a","integrity":"sha256-Ue8jEh4mQevurFDTHE5St9ANOrG8n8CtleqG/TYxl1o="},"flags/4x3/wf-f7e9ac5edac196ac32d7bafa04b5c0d924b89e9d7e4f3535a6a26c6c1523639c.svg":{"logical_path":"flags/4x3/wf.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"f7e9ac5edac196ac32d7bafa04b5c0d924b89e9d7e4f3535a6a26c6c1523639c","integrity":"sha256-9+msXtrBlqwy17r6BLXA2SS4np1+TzU1pqJsbBUjY5w="},"flags/1x1/wf-95a920a79aa32d92f8a362321aae4230e17025ac04d976593f4423d0c37c1aee.svg":{"logical_path":"flags/1x1/wf.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"95a920a79aa32d92f8a362321aae4230e17025ac04d976593f4423d0c37c1aee","integrity":"sha256-lakgp5qjLZL4o2IyGq5CMOFwJawE2XZZP0Qj0MN8Gu4="},"flags/4x3/ws-efc6505a802a3fa2018bc102fc2e11db8c738464c619381b6edc32d0a89341a3.svg":{"logical_path":"flags/4x3/ws.svg","mtime":"2019-05-14T13:11:18+02:00","size":663,"digest":"efc6505a802a3fa2018bc102fc2e11db8c738464c619381b6edc32d0a89341a3","integrity":"sha256-78ZQWoAqP6IBi8EC/C4R24xzhGTGGTgbbtwy0KiTQaM="},"flags/1x1/ws-e3afb81c037c814620027bf61ac5e266683cab7ba5796ecf10b64c110cfcb932.svg":{"logical_path":"flags/1x1/ws.svg","mtime":"2019-05-14T13:11:18+02:00","size":645,"digest":"e3afb81c037c814620027bf61ac5e266683cab7ba5796ecf10b64c110cfcb932","integrity":"sha256-46+4HAN8gUYgAnv2GsXiZmg8q3uleW7PELZMEQz8uTI="},"flags/4x3/ye-fd88856e70d66b01b4f0f608936a61cf3b1d9dad40a2932fc5da4d01f72a447b.svg":{"logical_path":"flags/4x3/ye.svg","mtime":"2019-05-14T13:11:18+02:00","size":278,"digest":"fd88856e70d66b01b4f0f608936a61cf3b1d9dad40a2932fc5da4d01f72a447b","integrity":"sha256-/YiFbnDWawG08PYIk2phzzsdna1AopMvxdpNAfcqRHs="},"flags/1x1/ye-0c0e32330871e6d83af54affb7dadbbe736f9799068508211fbae54db9bbdcc6.svg":{"logical_path":"flags/1x1/ye.svg","mtime":"2019-05-14T13:11:18+02:00","size":278,"digest":"0c0e32330871e6d83af54affb7dadbbe736f9799068508211fbae54db9bbdcc6","integrity":"sha256-DA4yMwhx5tg69Ur/t9rbvnNvl5kGhQghH7rlTbm73MY="},"flags/4x3/yt-2eef17b543424082d9f9b42a67e84c20b52e7f7eae8c4326d60711158da51d5b.svg":{"logical_path":"flags/4x3/yt.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"2eef17b543424082d9f9b42a67e84c20b52e7f7eae8c4326d60711158da51d5b","integrity":"sha256-Lu8XtUNCQILZ+bQqZ+hMILUuf36ujEMm1gcRFY2lHVs="},"flags/1x1/yt-911da8075337fd8f75ecc8a338c294cb771c6b9a08576f96c9de1437888cd2a7.svg":{"logical_path":"flags/1x1/yt.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"911da8075337fd8f75ecc8a338c294cb771c6b9a08576f96c9de1437888cd2a7","integrity":"sha256-kR2oB1M3/Y917MijOMKUy3cca5oIV2+Wyd4UN4iM0qc="},"flags/4x3/za-45991a2aee307198510e56bf92523070aac4241cafe6c3ddb8f89b20a61d6371.svg":{"logical_path":"flags/4x3/za.svg","mtime":"2019-05-14T13:11:18+02:00","size":856,"digest":"45991a2aee307198510e56bf92523070aac4241cafe6c3ddb8f89b20a61d6371","integrity":"sha256-RZkaKu4wcZhRDla/klIwcKrEJByv5sPduPibIKYdY3E="},"flags/1x1/za-bc09a89b29311ea7e582ef60bf4e18aff7c29de6fbefe309463ca765723a0ce8.svg":{"logical_path":"flags/1x1/za.svg","mtime":"2019-05-14T13:11:18+02:00","size":875,"digest":"bc09a89b29311ea7e582ef60bf4e18aff7c29de6fbefe309463ca765723a0ce8","integrity":"sha256-vAmomykxHqflgu9gv04Yr/fCneb77+MJRjynZXI6DOg="},"flags/4x3/zm-07c0f30d86e66d0cad9d66cd9c9384d9cce1844f159d245deff6717101fe49c2.svg":{"logical_path":"flags/4x3/zm.svg","mtime":"2019-05-14T13:11:18+02:00","size":5508,"digest":"07c0f30d86e66d0cad9d66cd9c9384d9cce1844f159d245deff6717101fe49c2","integrity":"sha256-B8DzDYbmbQytnWbNnJOE2czhhE8VnSRd7/ZxcQH+ScI="},"flags/1x1/zm-fc5bce3834c71fe36617ea5f57f0bd1dcf3880a7c6aa515dcf92ae067f796241.svg":{"logical_path":"flags/1x1/zm.svg","mtime":"2019-05-14T13:11:18+02:00","size":5429,"digest":"fc5bce3834c71fe36617ea5f57f0bd1dcf3880a7c6aa515dcf92ae067f796241","integrity":"sha256-/FvOODTHH+NmF+pfV/C9Hc84gKfGqlFdz5KuBn95YkE="},"flags/4x3/zw-5217c74f14d9fdda244b69c5982bbabee052ac0f1cc0704926e8b1e621e50f9a.svg":{"logical_path":"flags/4x3/zw.svg","mtime":"2019-05-14T13:11:18+02:00","size":6791,"digest":"5217c74f14d9fdda244b69c5982bbabee052ac0f1cc0704926e8b1e621e50f9a","integrity":"sha256-UhfHTxTZ/dokS2nFmCu6vuBSrA8cwHBJJuix5iHlD5o="},"flags/1x1/zw-a33b191c631709b9e1d85e06f5b15535fb544d4668c8bef865ede2a0b6a88ed9.svg":{"logical_path":"flags/1x1/zw.svg","mtime":"2019-05-14T13:11:18+02:00","size":6770,"digest":"a33b191c631709b9e1d85e06f5b15535fb544d4668c8bef865ede2a0b6a88ed9","integrity":"sha256-ozsZHGMXCbnh2F4G9bFVNftUTUZoyL74Ze3ioLaojtk="},"flags/4x3/es-ct-bcbb454a50c9a647efd43dcf041445f15e8dd70654bde530bf62401d4fb7738d.svg":{"logical_path":"flags/4x3/es-ct.svg","mtime":"2019-05-14T13:11:18+02:00","size":261,"digest":"bcbb454a50c9a647efd43dcf041445f15e8dd70654bde530bf62401d4fb7738d","integrity":"sha256-vLtFSlDJpkfv1D3PBBRF8V6N1wZUveUwv2JAHU+3c40="},"flags/1x1/es-ct-7f13eb2b2f5c11dccd7043286bed7540d4dad4b1a8367b0aca1b8405a351b2ef.svg":{"logical_path":"flags/1x1/es-ct.svg","mtime":"2019-05-14T13:11:18+02:00","size":260,"digest":"7f13eb2b2f5c11dccd7043286bed7540d4dad4b1a8367b0aca1b8405a351b2ef","integrity":"sha256-fxPrKy9cEdzNcEMoa+11QNTa1LGoNnsKyhuEBaNRsu8="},"flags/4x3/eu-5f129db64306353251b78f998d531d2f1019404cfa890ae63ed70dc316c7f240.svg":{"logical_path":"flags/4x3/eu.svg","mtime":"2019-05-14T13:11:18+02:00","size":1252,"digest":"5f129db64306353251b78f998d531d2f1019404cfa890ae63ed70dc316c7f240","integrity":"sha256-XxKdtkMGNTJRt4+ZjVMdLxAZQEz6iQrmPtcNwxbH8kA="},"flags/1x1/eu-ec59ac8daf2a63ea8e299ad63a208445d68a96affe6a10a7328acb6799d44127.svg":{"logical_path":"flags/1x1/eu.svg","mtime":"2019-05-14T13:11:18+02:00","size":1253,"digest":"ec59ac8daf2a63ea8e299ad63a208445d68a96affe6a10a7328acb6799d44127","integrity":"sha256-7Fmsja8qY+qOKZrWOiCERdaKlq/+ahCnMorLZ5nUQSc="},"flags/4x3/gb-eng-1895f4e35ae299f5d869da2462ffcf98df4b08dcddc531c8f175e49720001a14.svg":{"logical_path":"flags/4x3/gb-eng.svg","mtime":"2019-05-14T13:11:18+02:00","size":245,"digest":"1895f4e35ae299f5d869da2462ffcf98df4b08dcddc531c8f175e49720001a14","integrity":"sha256-GJX041rimfXYadokYv/PmN9LCNzdxTHI8XXklyAAGhQ="},"flags/1x1/gb-eng-d11afb87f40f35acda435a886ea044bd5e0b6f363ba0c7319f1d0181551fecf3.svg":{"logical_path":"flags/1x1/gb-eng.svg","mtime":"2019-05-14T13:11:18+02:00","size":235,"digest":"d11afb87f40f35acda435a886ea044bd5e0b6f363ba0c7319f1d0181551fecf3","integrity":"sha256-0Rr7h/QPNazaQ1qIbqBEvV4LbzY7oMcxnx0BgVUf7PM="},"flags/4x3/gb-nir-b280f09c787f495c1074376cd67537b40216f672917e7d204bb12b8e7c72afaf.svg":{"logical_path":"flags/4x3/gb-nir.svg","mtime":"2019-05-14T13:11:18+02:00","size":23738,"digest":"b280f09c787f495c1074376cd67537b40216f672917e7d204bb12b8e7c72afaf","integrity":"sha256-soDwnHh/SVwQdDds1nU3tAIW9nKRfn0gS7Erjnxyr68="},"flags/1x1/gb-nir-2e516e72e0e8e244ef430e6608322f8c4fb276807ab033279b2a6570dd68fd41.svg":{"logical_path":"flags/1x1/gb-nir.svg","mtime":"2019-05-14T13:11:18+02:00","size":25263,"digest":"2e516e72e0e8e244ef430e6608322f8c4fb276807ab033279b2a6570dd68fd41","integrity":"sha256-LlFucuDo4kTvQw5mCDIvjE+ydoB6sDMnmyplcN1o/UE="},"flags/4x3/gb-sct-1b9e407802ae901cf8da740c382ec2b19821837d76271a73346e0c63c2244506.svg":{"logical_path":"flags/4x3/gb-sct.svg","mtime":"2019-05-14T13:11:18+02:00","size":234,"digest":"1b9e407802ae901cf8da740c382ec2b19821837d76271a73346e0c63c2244506","integrity":"sha256-G55AeAKukBz42nQMOC7CsZghg312JxpzNG4MY8IkRQY="},"flags/1x1/gb-sct-d01e8a06a340e30ce52e8a3aba7ca6207afb96fdb238a815cc6cb92df8fa5df3.svg":{"logical_path":"flags/1x1/gb-sct.svg","mtime":"2019-05-14T13:11:18+02:00","size":242,"digest":"d01e8a06a340e30ce52e8a3aba7ca6207afb96fdb238a815cc6cb92df8fa5df3","integrity":"sha256-0B6KBqNA4wzlLoo6unymIHr7lv2yOKgVzGy5Lfj6XfM="},"flags/4x3/gb-wls-5232b3e376a19866cddec8225cba242783b2a48063811957f1ce5a2c347c5bc9.svg":{"logical_path":"flags/4x3/gb-wls.svg","mtime":"2019-05-14T13:11:18+02:00","size":9188,"digest":"5232b3e376a19866cddec8225cba242783b2a48063811957f1ce5a2c347c5bc9","integrity":"sha256-UjKz43ahmGbN3sgiXLokJ4OypIBjgRlX8c5aLDR8W8k="},"flags/1x1/gb-wls-126615bc3597fda1ca4ee931ef24f6c2cf2547998c06db9c1ded69fe66c479e9.svg":{"logical_path":"flags/1x1/gb-wls.svg","mtime":"2019-05-14T13:11:18+02:00","size":9083,"digest":"126615bc3597fda1ca4ee931ef24f6c2cf2547998c06db9c1ded69fe66c479e9","integrity":"sha256-EmYVvDWX/aHKTukx7yT2ws8lR5mMBtucHe1p/mbEeek="},"flags/4x3/un-31dece22ae18c3e01e86648ef3ef45f2f5b3d9d28a1e2bbbcdb1d87c37af55af.svg":{"logical_path":"flags/4x3/un.svg","mtime":"2019-05-14T13:11:18+02:00","size":20268,"digest":"31dece22ae18c3e01e86648ef3ef45f2f5b3d9d28a1e2bbbcdb1d87c37af55af","integrity":"sha256-Md7OIq4Yw+AehmSO8+9F8vWz2dKKHiu7zbHYfDevVa8="},"flags/1x1/un-455b5f3173ca9ac64f2135fac4ead7217d7fbe07551d0d2cc60216f83208f798.svg":{"logical_path":"flags/1x1/un.svg","mtime":"2019-05-14T13:11:18+02:00","size":20476,"digest":"455b5f3173ca9ac64f2135fac4ead7217d7fbe07551d0d2cc60216f83208f798","integrity":"sha256-RVtfMXPKmsZPITX6xOrXIX1/vgdVHQ0sxgIW+DII95g="},"leaflet/dist/images/layers-1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6.png":{"logical_path":"leaflet/dist/images/layers.png","mtime":"2019-05-14T13:13:00+02:00","size":696,"digest":"1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6","integrity":"sha256-Hbvp0CjikvNvy6j4s6KNXokydU/CIVuaxp5M3s9RB8Y="},"leaflet/dist/images/layers-2x-066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf.png":{"logical_path":"leaflet/dist/images/layers-2x.png","mtime":"2019-05-14T13:13:00+02:00","size":1259,"digest":"066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf","integrity":"sha256-Bm2sqFDY/77wB68AsG6sABVyje4nnFHzy2xxbffELt8="},"leaflet/dist/images/marker-icon-574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437.png":{"logical_path":"leaflet/dist/images/marker-icon.png","mtime":"2019-05-14T13:13:00+02:00","size":1466,"digest":"574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437","integrity":"sha256-V0w6XMqF9BFAhbaEFZbWLwDXyJLHsD8oy/owHesdxDc="},"markers-soft-e78784e4ed70aaffddd73c315fab590233cc4e7b72388d7dd47a14796fc7c739.png":{"logical_path":"markers-soft.png","mtime":"2016-05-21T23:41:15+02:00","size":41226,"digest":"e78784e4ed70aaffddd73c315fab590233cc4e7b72388d7dd47a14796fc7c739","integrity":"sha256-54eE5O1wqv/d1zwxX6tZAjPMTntyOI191HoUeW/Hxzk="},"markers-shadow-8703a2262710f5e3d29e65d2acdf90d6512e159e119d27b8234731d8a6208a20.png":{"logical_path":"markers-shadow.png","mtime":"2016-05-21T23:41:15+02:00","size":535,"digest":"8703a2262710f5e3d29e65d2acdf90d6512e159e119d27b8234731d8a6208a20","integrity":"sha256-hwOiJicQ9ePSnmXSrN+Q1lEuFZ4RnSe4I0cx2KYgiiA="},"markers-soft@2x-c1e77253a8bfbe30cec24885d7046f443b76ebb66f4c961f77083b03f4a5cbaf.png":{"logical_path":"markers-soft@2x.png","mtime":"2016-05-21T23:41:15+02:00","size":66408,"digest":"c1e77253a8bfbe30cec24885d7046f443b76ebb66f4c961f77083b03f4a5cbaf","integrity":"sha256-wedyU6i/vjDOwkiF1wRvRDt267ZvTJYfdwg7A/Sly68="},"markers-shadow@2x-b21a536be27313fb504f69f5899ff0b1245b276571769ac08d6c32c35676e47a.png":{"logical_path":"markers-shadow@2x.png","mtime":"2016-05-21T23:41:15+02:00","size":1469,"digest":"b21a536be27313fb504f69f5899ff0b1245b276571769ac08d6c32c35676e47a","integrity":"sha256-shpTa+JzE/tQT2n1iZ/wsSRbJ2VxdprAjWwyw1Z25Ho="},"tinymce/langs/fr_FR-6aba16704f73dd83662a78ca3360f3d98b1f1ed80a67560313554446915611a5.js":{"logical_path":"tinymce/langs/fr_FR.js","mtime":"2019-04-17T02:49:18+02:00","size":14986,"digest":"6aba16704f73dd83662a78ca3360f3d98b1f1ed80a67560313554446915611a5","integrity":"sha256-aroWcE9z3YNmKnjKM2Dz2YsfHtgKZ1YDE1VERpFWEaU="},"markers-matte-497826545a90e09a240504d14530eba45823b19fd44175e09e27c47cd822ddb9.png":{"logical_path":"markers-matte.png","mtime":"2016-05-21T23:41:15+02:00","size":14323,"digest":"497826545a90e09a240504d14530eba45823b19fd44175e09e27c47cd822ddb9","integrity":"sha256-SXgmVFqQ4JokBQTRRTDrpFgjsZ/UQXXgnifEfNgi3bk="},"markers-matte@2x-948fc8c4426f04f60964ed20394247f45b0b60e575d02398b9b6810e7a29a823.png":{"logical_path":"markers-matte@2x.png","mtime":"2016-05-21T23:41:15+02:00","size":31113,"digest":"948fc8c4426f04f60964ed20394247f45b0b60e575d02398b9b6810e7a29a823","integrity":"sha256-lI/IxEJvBPYJZO0gOUJH9FsLYOV10COYubaBDnopqCM="},"markers-plain-cf233423aa44e75ac0031e77b8ba571cd3331010517e1197e63fb7b06856c1ff.png":{"logical_path":"markers-plain.png","mtime":"2016-05-21T23:41:15+02:00","size":7946,"digest":"cf233423aa44e75ac0031e77b8ba571cd3331010517e1197e63fb7b06856c1ff","integrity":"sha256-zyM0I6pE51rAAx53uLpXHNMzEBBRfhGX5j+3sGhWwf8="},"leaflet/dist/images/marker-icon-2x-00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528.png":{"logical_path":"leaflet/dist/images/marker-icon-2x.png","mtime":"2019-05-14T13:13:00+02:00","size":2464,"digest":"00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528","integrity":"sha256-ABecTB7oMNOhCEEq4NKU9Vd2z+sIXGASmjmqb8SuJSg="},"leaflet/dist/images/marker-shadow-264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da.png":{"logical_path":"leaflet/dist/images/marker-shadow.png","mtime":"2019-05-14T13:13:00+02:00","size":618,"digest":"264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da","integrity":"sha256-Jk9cZAM58ELdcpBiz8BMF/jqDymIK1OOOEjtjxDttNo="},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-ae65a7ae22c4c23115948fdeb5c05c9137dbd13ca2d426b3c4c3c4183451e410.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2019-05-14T13:12:47+02:00","size":86,"digest":"ae65a7ae22c4c23115948fdeb5c05c9137dbd13ca2d426b3c4c3c4183451e410","integrity":"sha256-rmWnriLEwjEVlI/etcBckTfb0Tyi1CazxMPEGDRR5BA="},"jquery-ui/ui-icons_444444_256x240-31d988765b4e6f56553c29588c500381dc3e6f0aa2980c8212202e5644aefd5d.png":{"logical_path":"jquery-ui/ui-icons_444444_256x240.png","mtime":"2019-05-14T13:12:47+02:00","size":3756,"digest":"31d988765b4e6f56553c29588c500381dc3e6f0aa2980c8212202e5644aefd5d","integrity":"sha256-MdmIdltOb1ZVPClYjFADgdw+bwqimAyCEiAuVkSu/V0="},"jquery-ui/ui-icons_555555_256x240-32175261daee76c82bb0edf0eea16a56421866fbc31e94f3c1d570aa114502f5.png":{"logical_path":"jquery-ui/ui-icons_555555_256x240.png","mtime":"2019-05-14T13:12:47+02:00","size":3756,"digest":"32175261daee76c82bb0edf0eea16a56421866fbc31e94f3c1d570aa114502f5","integrity":"sha256-MhdSYdrudsgrsO3w7qFqVkIYZvvDHpTzwdVwqhFFAvU="},"jquery-ui/ui-icons_777620_256x240-0b020fc6e696d88d296e7bb1f61f1eb2ad827848e2c7382a4c3e0999e702dd9b.png":{"logical_path":"jquery-ui/ui-icons_777620_256x240.png","mtime":"2019-05-14T13:12:47+02:00","size":3756,"digest":"0b020fc6e696d88d296e7bb1f61f1eb2ad827848e2c7382a4c3e0999e702dd9b","integrity":"sha256-CwIPxuaW2I0pbnux9h8esq2CeEjixzgqTD4JmecC3Zs="},"jquery-ui/ui-icons_777777_256x240-faf32007ae120c302213557626e660dd10e711c5dd4f1113d35f26dc05b78d2f.png":{"logical_path":"jquery-ui/ui-icons_777777_256x240.png","mtime":"2019-05-14T13:12:47+02:00","size":3756,"digest":"faf32007ae120c302213557626e660dd10e711c5dd4f1113d35f26dc05b78d2f","integrity":"sha256-+vMgB64SDDAiE1V2JuZg3RDnEcXdTxET018m3AW3jS8="},"jquery-ui/ui-icons_cc0000_256x240-40985a64b4d5dd213fba27fcd862a1bd1b337a97674f6ff0b9ec20abcee4bc69.png":{"logical_path":"jquery-ui/ui-icons_cc0000_256x240.png","mtime":"2019-05-14T13:12:47+02:00","size":3756,"digest":"40985a64b4d5dd213fba27fcd862a1bd1b337a97674f6ff0b9ec20abcee4bc69","integrity":"sha256-QJhaZLTV3SE/uif82GKhvRszepdnT2/wuewgq87kvGk="},"jquery-ui/ui-icons_ffffff_256x240-350df1b7131037de20e83c5c0f3a41a770d2ac48b5762ea772b3f4a8a7b9d47a.png":{"logical_path":"jquery-ui/ui-icons_ffffff_256x240.png","mtime":"2019-05-14T13:12:47+02:00","size":3756,"digest":"350df1b7131037de20e83c5c0f3a41a770d2ac48b5762ea772b3f4a8a7b9d47a","integrity":"sha256-NQ3xtxMQN94g6DxcDzpBp3DSrEi1di6ncrP0qKe51Ho="},"tinymce/preinit-84328a53e798df12f891eb49871773fd9f925439c8630e9e22423a82ef9e6f89.js":{"logical_path":"tinymce/preinit.js","mtime":"2019-05-14T13:13:17+02:00","size":82,"digest":"84328a53e798df12f891eb49871773fd9f925439c8630e9e22423a82ef9e6f89","integrity":"sha256-hDKKU+eY3xL4ketJhxdz/Z+SVDnIYw6eIkI6gu+eb4k="},"tinymce/rails-bf7fd5c952f25481010758dde6a2681498074f9509230f601b317356a6a54fca.js":{"logical_path":"tinymce/rails.js","mtime":"2019-05-14T13:13:17+02:00","size":1345,"digest":"bf7fd5c952f25481010758dde6a2681498074f9509230f601b317356a6a54fca","integrity":"sha256-v3/VyVLyVIEBB1jd5qJoFJgHT5UJIw9gGzFzVqalT8o="},"tinymce/tinymce-56cf2f2424cb80d80288b9207d6d01dffdcf3b6849e1414c1f7df44b8c95db86.js":{"logical_path":"tinymce/tinymce.js","mtime":"2019-05-14T13:13:17+02:00","size":1042418,"digest":"56cf2f2424cb80d80288b9207d6d01dffdcf3b6849e1414c1f7df44b8c95db86","integrity":"sha256-Vs8vJCTLgNgCiLkgfW0B3/3PO2hJ4UFMH330S4yV24Y="},"tinymce/jquery.tinymce-05402ca7d9e16d0a48a6259f8c005507d800186c5187f8cab94e79803c657535.js":{"logical_path":"tinymce/jquery.tinymce.js","mtime":"2019-05-14T13:13:17+02:00","size":6689,"digest":"05402ca7d9e16d0a48a6259f8c005507d800186c5187f8cab94e79803c657535","integrity":"sha256-BUAsp9nhbQpIpiWfjABVB9gAGGxRh/jKuU55gDxldTU="},"tinymce/langs/readme-5a8b6a04d57b5c88e3fb7f2a870b8e2d3a48ec03ce6474206c41df78c155b2de.md":{"logical_path":"tinymce/langs/readme.md","mtime":"2019-05-14T13:13:17+02:00","size":151,"digest":"5a8b6a04d57b5c88e3fb7f2a870b8e2d3a48ec03ce6474206c41df78c155b2de","integrity":"sha256-WotqBNV7XIjj+38qhwuOLTpI7APOZHQgbEHfeMFVst4="},"tinymce/license-47a9dcd2574891a5a465112fd9dfcebcc7e61844edec27fa936a64642008fe66.txt":{"logical_path":"tinymce/license.txt","mtime":"2019-05-14T13:13:17+02:00","size":26441,"digest":"47a9dcd2574891a5a465112fd9dfcebcc7e61844edec27fa936a64642008fe66","integrity":"sha256-R6nc0ldIkaWkZREv2d/OvMfmGETt7Cf6k2pkZCAI/mY="},"tinymce/plugins/advlist/plugin-b7c8cf80403d2ccef198eece952f4426ca2dbc41bd3797796a75f984a9382ade.js":{"logical_path":"tinymce/plugins/advlist/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":4121,"digest":"b7c8cf80403d2ccef198eece952f4426ca2dbc41bd3797796a75f984a9382ade","integrity":"sha256-t8jPgEA9LM7xmO7OlS9EJsotvEG9N5d5anX5hKk4Kt4="},"tinymce/plugins/anchor/plugin-0e1e67988d427784f73513db28a206eb47a3ef546aa87882a80975a16111a33a.js":{"logical_path":"tinymce/plugins/anchor/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":2108,"digest":"0e1e67988d427784f73513db28a206eb47a3ef546aa87882a80975a16111a33a","integrity":"sha256-Dh5nmI1Cd4T3NRPbKKIG60ej71RqqHiCqAl1oWERozo="},"tinymce/plugins/autolink/plugin-2e8a38a913070f4b3fb0252a5b5625057b8ee9f6fc529d65d3003328d112d5d8.js":{"logical_path":"tinymce/plugins/autolink/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":2428,"digest":"2e8a38a913070f4b3fb0252a5b5625057b8ee9f6fc529d65d3003328d112d5d8","integrity":"sha256-Loo4qRMHD0s/sCUqW1YlBXuO6fb8Up1l0wAzKNES1dg="},"tinymce/plugins/autoresize/plugin-2adac0d857ae16f93c7ca4f92e36e76f4bbf885cb9a72755af78889627ed8738.js":{"logical_path":"tinymce/plugins/autoresize/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":2233,"digest":"2adac0d857ae16f93c7ca4f92e36e76f4bbf885cb9a72755af78889627ed8738","integrity":"sha256-KtrA2FeuFvk8fKT5Ljbnb0u/iFy5pydVr3iIlifthzg="},"tinymce/plugins/autosave/plugin-a6960dd7eb9a053b0ce876b2eb946f8bf8fc429de45466e73d17129213229674.js":{"logical_path":"tinymce/plugins/autosave/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":3321,"digest":"a6960dd7eb9a053b0ce876b2eb946f8bf8fc429de45466e73d17129213229674","integrity":"sha256-ppYN1+uaBTsM6Hay65Rvi/j8Qp3kVGbnPRcSkhMilnQ="},"tinymce/plugins/bbcode/plugin-1a9fd62a2514ce8e15e8a3a99473674c1042c23adb359b35523931407910c7aa.js":{"logical_path":"tinymce/plugins/bbcode/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":3151,"digest":"1a9fd62a2514ce8e15e8a3a99473674c1042c23adb359b35523931407910c7aa","integrity":"sha256-Gp/WKiUUzo4V6KOplHNnTBBCwjrbNZs1UjkxQHkQx6o="},"tinymce/plugins/charmap/plugin-e68609a6c6f050af409dc34cba1eaf97b45dc4219500de60bb3ed63ea49279a0.js":{"logical_path":"tinymce/plugins/charmap/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":11935,"digest":"e68609a6c6f050af409dc34cba1eaf97b45dc4219500de60bb3ed63ea49279a0","integrity":"sha256-5oYJpsbwUK9AncNMuh6vl7RdxCGVAN5guz7WPqSSeaA="},"tinymce/plugins/code/plugin-32c177297fd26a1ceaa79d4b0c10ff5c3b332141dce46b97931e3228daa9bf1a.js":{"logical_path":"tinymce/plugins/code/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1225,"digest":"32c177297fd26a1ceaa79d4b0c10ff5c3b332141dce46b97931e3228daa9bf1a","integrity":"sha256-MsF3KX/Sahzqp51LDBD/XDszIUHc5GuXkx4yKNqpvxo="},"tinymce/plugins/codesample/plugin-d495c33177247da2e3845e4d849182792be7b0347e8707dd133db053727f86e9.js":{"logical_path":"tinymce/plugins/codesample/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":21054,"digest":"d495c33177247da2e3845e4d849182792be7b0347e8707dd133db053727f86e9","integrity":"sha256-1JXDMXckfaLjhF5NhJGCeSvnsDR+hwfdEz2wU3J/huk="},"tinymce/plugins/colorpicker/plugin-3270f40522357ea68191288332b98cbbdafe950a758b5f1514ad8890ba68619f.js":{"logical_path":"tinymce/plugins/colorpicker/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":541,"digest":"3270f40522357ea68191288332b98cbbdafe950a758b5f1514ad8890ba68619f","integrity":"sha256-MnD0BSI1fqaBkSiDMrmMu9r+lQp1i18VFK2IkLpoYZ8="},"tinymce/plugins/contextmenu/plugin-b528042e89738439d9d4b9d008a3a75284ef5233cd15aaa29c7e1ce6d48fb12e.js":{"logical_path":"tinymce/plugins/contextmenu/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":541,"digest":"b528042e89738439d9d4b9d008a3a75284ef5233cd15aaa29c7e1ce6d48fb12e","integrity":"sha256-tSgELolzhDnZ1LnQCKOnUoTvUjPNFaqinH4c5tSPsS4="},"tinymce/plugins/directionality/plugin-5004dc6b7d90139d4b1cf32d788845a48efc7055adb3aa25993219dd4df2fe5c.js":{"logical_path":"tinymce/plugins/directionality/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":4316,"digest":"5004dc6b7d90139d4b1cf32d788845a48efc7055adb3aa25993219dd4df2fe5c","integrity":"sha256-UATca32QE51LHPMteIhFpI78cFWts6olmTIZ3U3y/lw="},"tinymce/plugins/emoticons/js/emojis-c6f728975b5c86aca22f396025edefe6107b0dd4d95f5ef80daef569b545bce8.js":{"logical_path":"tinymce/plugins/emoticons/js/emojis.js","mtime":"2019-05-14T13:13:17+02:00","size":193207,"digest":"c6f728975b5c86aca22f396025edefe6107b0dd4d95f5ef80daef569b545bce8","integrity":"sha256-xvcol1tchqyiLzlgJe3v5hB7DdTZX174Da71abVFvOg="},"tinymce/plugins/emoticons/plugin-f4db839825ea5c884c78a8c289494544ac0fd28a14506f0d3cbb7362a9e9db77.js":{"logical_path":"tinymce/plugins/emoticons/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":8141,"digest":"f4db839825ea5c884c78a8c289494544ac0fd28a14506f0d3cbb7362a9e9db77","integrity":"sha256-9NuDmCXqXIhMeKjCiUlFRKwP0ooUUG8NPLtzYqnp23c="},"tinymce/plugins/fullpage/plugin-7040866d45dd50402f2871efcfb289ec8ca80b8699f1461c721b0b20bca76051.js":{"logical_path":"tinymce/plugins/fullpage/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":8195,"digest":"7040866d45dd50402f2871efcfb289ec8ca80b8699f1461c721b0b20bca76051","integrity":"sha256-cECGbUXdUEAvKHHvz7KJ7IyoC4aZ8UYcchsLILynYFE="},"tinymce/plugins/fullscreen/plugin-f548bdf0cbc2fd41c3c32938629a1b021e19680bac7869c274be5f3615eccfe7.js":{"logical_path":"tinymce/plugins/fullscreen/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":2668,"digest":"f548bdf0cbc2fd41c3c32938629a1b021e19680bac7869c274be5f3615eccfe7","integrity":"sha256-9Ui98MvC/UHDwyk4YpobAh4ZaAuseGnCdL5fNhXsz+c="},"tinymce/plugins/help/plugin-366b05965f3d6cfddaba02c6784e0f377497beda0f28cc8cd840510fd8b657f4.js":{"logical_path":"tinymce/plugins/help/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":9311,"digest":"366b05965f3d6cfddaba02c6784e0f377497beda0f28cc8cd840510fd8b657f4","integrity":"sha256-NmsFll89bP3augLGeE4PN3SXvtoPKMyM2EBRD9i2V/Q="},"tinymce/plugins/hr/plugin-0e5548067a2ab0ad967e296104249f6b5d24a16b80befcdd3888c17b1a0e5624.js":{"logical_path":"tinymce/plugins/hr/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":840,"digest":"0e5548067a2ab0ad967e296104249f6b5d24a16b80befcdd3888c17b1a0e5624","integrity":"sha256-DlVIBnoqsK2WfilhBCSfa10koWuAvvzdOIjBexoOViQ="},"tinymce/plugins/image/plugin-53dce3c317e386c1989a5d82ec151d440f9ffc32a643dc9fba76ae2b036300c9.js":{"logical_path":"tinymce/plugins/image/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":28452,"digest":"53dce3c317e386c1989a5d82ec151d440f9ffc32a643dc9fba76ae2b036300c9","integrity":"sha256-U9zjwxfjhsGYml2C7BUdRA+f/DKmQ9yfunauKwNjAMk="},"tinymce/plugins/imagetools/plugin-49936c4208b2d6fbb340d11c56fa2a146d14c770e4cb39760a11099fea5c7aaa.js":{"logical_path":"tinymce/plugins/imagetools/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":22508,"digest":"49936c4208b2d6fbb340d11c56fa2a146d14c770e4cb39760a11099fea5c7aaa","integrity":"sha256-SZNsQgiy1vuzQNEcVvoqFG0Ux3Dkyzl2ChEJn+pceqo="},"tinymce/plugins/importcss/plugin-30cba659cc747bccf69602963b3c2b83e00c26e65f2b63e23eba5be5f8af5452.js":{"logical_path":"tinymce/plugins/importcss/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":4870,"digest":"30cba659cc747bccf69602963b3c2b83e00c26e65f2b63e23eba5be5f8af5452","integrity":"sha256-MMumWcx0e8z2lgKWOzwrg+AMJuZfK2PiPrpb5fivVFI="},"tinymce/plugins/insertdatetime/plugin-8559e2bda84f040abc77afc6610c0b61567fe174dcf2079b5aff82513c5ebe96.js":{"logical_path":"tinymce/plugins/insertdatetime/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":3205,"digest":"8559e2bda84f040abc77afc6610c0b61567fe174dcf2079b5aff82513c5ebe96","integrity":"sha256-hVnivahPBAq8d6/GYQwLYVZ/4XTc8gebWv+CUTxevpY="},"tinymce/plugins/legacyoutput/plugin-acfac6647afd7c0a7c720aea06b9a74a6580840858fe00327a311a6418d3dae3.js":{"logical_path":"tinymce/plugins/legacyoutput/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":2795,"digest":"acfac6647afd7c0a7c720aea06b9a74a6580840858fe00327a311a6418d3dae3","integrity":"sha256-rPrGZHr9fAp8cgrqBrmnSmWAhAhY/gAyejEaZBjT2uM="},"tinymce/plugins/link/plugin-93a36e0f077d895707d9885a76c26e5b08e5acfab9f3d52cdd1ccc5d89404f1e.js":{"logical_path":"tinymce/plugins/link/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":16484,"digest":"93a36e0f077d895707d9885a76c26e5b08e5acfab9f3d52cdd1ccc5d89404f1e","integrity":"sha256-k6NuDwd9iVcH2YhadsJuWwjlrPq589Us3RzMXYlATx4="},"tinymce/plugins/lists/plugin-354eba74c0107c7f347aaab0ac206e01b8e0503d00f28cc0cc55f6c04f901f9e.js":{"logical_path":"tinymce/plugins/lists/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":27854,"digest":"354eba74c0107c7f347aaab0ac206e01b8e0503d00f28cc0cc55f6c04f901f9e","integrity":"sha256-NU66dMAQfH80eqqwrCBuAbjgUD0A8ozAzFX2wE+QH54="},"tinymce/plugins/media/plugin-ab1015dd22dff3d1edcc2d04b54f39b3f7ff7f7d783c0880b5edf6de58d78937.js":{"logical_path":"tinymce/plugins/media/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":17440,"digest":"ab1015dd22dff3d1edcc2d04b54f39b3f7ff7f7d783c0880b5edf6de58d78937","integrity":"sha256-qxAV3SLf89HtzC0EtU85s/f/f314PAiAte323ljXiTc="},"tinymce/plugins/nonbreaking/plugin-6039d3b3f9c68a3b29a6bb476760fa62da1d941e38ef8cb91e61c4aaa9456f98.js":{"logical_path":"tinymce/plugins/nonbreaking/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1421,"digest":"6039d3b3f9c68a3b29a6bb476760fa62da1d941e38ef8cb91e61c4aaa9456f98","integrity":"sha256-YDnTs/nGijspprtHZ2D6YtodlB4474y5HmHEqqlFb5g="},"tinymce/plugins/noneditable/plugin-3cb8e1ac660348b0453dca0e8549a9325dca0cf259adb96802f37e83fb8d17be.js":{"logical_path":"tinymce/plugins/noneditable/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1841,"digest":"3cb8e1ac660348b0453dca0e8549a9325dca0cf259adb96802f37e83fb8d17be","integrity":"sha256-PLjhrGYDSLBFPcoOhUmpMl3KDPJZrbloAvN+g/uNF74="},"tinymce/plugins/pagebreak/plugin-9e005e9e9abb08da742141d002238561c30dcd15549168e17c690f2c7c7a9dd3.js":{"logical_path":"tinymce/plugins/pagebreak/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1843,"digest":"9e005e9e9abb08da742141d002238561c30dcd15549168e17c690f2c7c7a9dd3","integrity":"sha256-ngBenpq7CNp0IUHQAiOFYcMNzRVUkWjhfGkPLHx6ndM="},"tinymce/plugins/paste/plugin-437f540601d04f07cb4c2434fdf377be3ac9634b180a878c2f2987f3ad897afc.js":{"logical_path":"tinymce/plugins/paste/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":24156,"digest":"437f540601d04f07cb4c2434fdf377be3ac9634b180a878c2f2987f3ad897afc","integrity":"sha256-Q39UBgHQTwfLTCQ0/fN3vjrJY0sYCoeMLymH862Jevw="},"tinymce/plugins/preview/plugin-36ce30c549b23aed9dd151603a23aafab512529d586067e34974877992c79eed.js":{"logical_path":"tinymce/plugins/preview/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1971,"digest":"36ce30c549b23aed9dd151603a23aafab512529d586067e34974877992c79eed","integrity":"sha256-Ns4wxUmyOu2d0VFgOiOq+rUSUp1YYGfjSXSHeZLHnu0="},"tinymce/plugins/print/plugin-4a91981252ff653a07dd12936abfb0b0c4191e33d85f5c5d5f7e8e73581b6a57.js":{"logical_path":"tinymce/plugins/print/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":787,"digest":"4a91981252ff653a07dd12936abfb0b0c4191e33d85f5c5d5f7e8e73581b6a57","integrity":"sha256-SpGYElL/ZToH3RKTar+wsMQZHjPYX1xdX36Oc1gbalc="},"tinymce/plugins/quickbars/plugin-54bba909c7a5b3f9086cec22e918e378945dfb855e4041a85c9e0fb00faaa510.js":{"logical_path":"tinymce/plugins/quickbars/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":10934,"digest":"54bba909c7a5b3f9086cec22e918e378945dfb855e4041a85c9e0fb00faaa510","integrity":"sha256-VLupCcels/kIbOwi6RjjeJRd+4VeQEGoXJ4PsA+qpRA="},"tinymce/plugins/save/plugin-0fd05e2ed11aac190c5d2a0ac32aa675d0bea06b519301d89151aaaa7b124674.js":{"logical_path":"tinymce/plugins/save/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1829,"digest":"0fd05e2ed11aac190c5d2a0ac32aa675d0bea06b519301d89151aaaa7b124674","integrity":"sha256-D9BeLtEarBkMXSoKwyqmddC+oGtRkwHYkVGqqnsSRnQ="},"tinymce/plugins/searchreplace/plugin-4bb6490f6586b4c50a56757a69be8e6577544d5353881a02621e2200b54e8a18.js":{"logical_path":"tinymce/plugins/searchreplace/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":8871,"digest":"4bb6490f6586b4c50a56757a69be8e6577544d5353881a02621e2200b54e8a18","integrity":"sha256-S7ZJD2WGtMUKVnV6ab6OZXdUTVNTiBoCYh4iALVOihg="},"tinymce/plugins/spellchecker/plugin-8fcd863cbf64e3cc62fe3fc1a4bfe417f8401b1d204d91d1c9da880c29a52162.js":{"logical_path":"tinymce/plugins/spellchecker/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":10437,"digest":"8fcd863cbf64e3cc62fe3fc1a4bfe417f8401b1d204d91d1c9da880c29a52162","integrity":"sha256-j82GPL9k48xi/j/BpL/kF/hAGx0gTZHRydqIDCmlIWI="},"tinymce/plugins/tabfocus/plugin-cbc31c55658d581cc1e0130e5bae26fb27f10e7f0c53879845d6295ffb27fefa.js":{"logical_path":"tinymce/plugins/tabfocus/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1915,"digest":"cbc31c55658d581cc1e0130e5bae26fb27f10e7f0c53879845d6295ffb27fefa","integrity":"sha256-y8McVWWNWBzB4BMOW64m+yfxDn8MU4eYRdYpX/sn/vo="},"tinymce/plugins/table/plugin-b11c6cd37f6d5badf46a9d96e452118b81881beb07fe41d2c0a3f7b405902234.js":{"logical_path":"tinymce/plugins/table/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":120791,"digest":"b11c6cd37f6d5badf46a9d96e452118b81881beb07fe41d2c0a3f7b405902234","integrity":"sha256-sRxs039tW630ap2W5FIRi4GIG+sH/kHSwKP3tAWQIjQ="},"tinymce/plugins/template/plugin-62d74415b497183892c093351d57ee4fe36938be5b0a84360925501efede022a.js":{"logical_path":"tinymce/plugins/template/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":7975,"digest":"62d74415b497183892c093351d57ee4fe36938be5b0a84360925501efede022a","integrity":"sha256-YtdEFbSXGDiSwJM1HVfuT+NpOL5bCoQ2CSVQHv7eAio="},"tinymce/plugins/textcolor/plugin-77c1248e72fe32cf181c36a070147484ee4560710d5f617a4670d65d11202207.js":{"logical_path":"tinymce/plugins/textcolor/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":537,"digest":"77c1248e72fe32cf181c36a070147484ee4560710d5f617a4670d65d11202207","integrity":"sha256-d8EkjnL+Ms8YHDagcBR0hO5FYHENX2F6RnDWXREgIgc="},"tinymce/plugins/textpattern/plugin-14c80d034b4d08368543a88cfdd7a71fe044d76a511e087752420957fe192e66.js":{"logical_path":"tinymce/plugins/textpattern/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":16350,"digest":"14c80d034b4d08368543a88cfdd7a71fe044d76a511e087752420957fe192e66","integrity":"sha256-FMgNA0tNCDaFQ6iM/denH+BE12pRHgh3UkIJV/4ZLmY="},"tinymce/plugins/toc/plugin-e6c05b09e6066ce22300ca4942a530d621362f8a2d69d21d486bf5f57ce86c63.js":{"logical_path":"tinymce/plugins/toc/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":3522,"digest":"e6c05b09e6066ce22300ca4942a530d621362f8a2d69d21d486bf5f57ce86c63","integrity":"sha256-5sBbCeYGbOIjAMpJQqUw1iE2L4otadIdSGv19XzobGM="},"tinymce/plugins/visualblocks/plugin-dc48dde1907640cf2cc67ab99de28b69b7b7a04479c9a2d3284a21e190a2fc5b.js":{"logical_path":"tinymce/plugins/visualblocks/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1655,"digest":"dc48dde1907640cf2cc67ab99de28b69b7b7a04479c9a2d3284a21e190a2fc5b","integrity":"sha256-3Ejd4ZB2QM8sxnq5neKLabe3oER5yaLTKEoh4ZCi/Fs="},"tinymce/plugins/visualchars/plugin-7a67008641a389395f71289303344cf2f9e699970d8ac27f8be769281c56a157.js":{"logical_path":"tinymce/plugins/visualchars/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":5729,"digest":"7a67008641a389395f71289303344cf2f9e699970d8ac27f8be769281c56a157","integrity":"sha256-emcAhkGjiTlfcSiTAzRM8vnmmZcNisJ/i+dpKBxWoVc="},"tinymce/plugins/wordcount/plugin-adeca7c01633cf92382c63b9f99934fcc1f8f4034b84b8a653f800bc6deadf86.js":{"logical_path":"tinymce/plugins/wordcount/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":12489,"digest":"adeca7c01633cf92382c63b9f99934fcc1f8f4034b84b8a653f800bc6deadf86","integrity":"sha256-reynwBYzz5I4LGO5+Zk0/MH49ANLhLimU/gAvG3q34Y="},"tinymce/skins/content/default/content-59af8e2bdcb843082433e35a13e74452bb71675b4d09a1020fb82ec12f905178.css":{"logical_path":"tinymce/skins/content/default/content.css","mtime":"2019-05-14T13:13:17+02:00","size":569,"digest":"59af8e2bdcb843082433e35a13e74452bb71675b4d09a1020fb82ec12f905178","integrity":"sha256-Wa+OK9y4QwgkM+NaE+dEUrtxZ1tNCaECD7guwS+QUXg="},"tinymce/skins/content/default/content.min-59af8e2bdcb843082433e35a13e74452bb71675b4d09a1020fb82ec12f905178.css":{"logical_path":"tinymce/skins/content/default/content.min.css","mtime":"2019-05-14T13:13:17+02:00","size":569,"digest":"59af8e2bdcb843082433e35a13e74452bb71675b4d09a1020fb82ec12f905178","integrity":"sha256-Wa+OK9y4QwgkM+NaE+dEUrtxZ1tNCaECD7guwS+QUXg="},"tinymce/skins/content/document/content-1e26cccef0052522affb81bf2148310236b19cddf8132f0239d8c7566722e943.css":{"logical_path":"tinymce/skins/content/document/content.css","mtime":"2019-05-14T13:13:17+02:00","size":653,"digest":"1e26cccef0052522affb81bf2148310236b19cddf8132f0239d8c7566722e943","integrity":"sha256-HibMzvAFJSKv+4G/IUgxAjaxnN34Ey8COdjHVmci6UM="},"tinymce/skins/content/document/content.min-1e26cccef0052522affb81bf2148310236b19cddf8132f0239d8c7566722e943.css":{"logical_path":"tinymce/skins/content/document/content.min.css","mtime":"2019-05-14T13:13:17+02:00","size":653,"digest":"1e26cccef0052522affb81bf2148310236b19cddf8132f0239d8c7566722e943","integrity":"sha256-HibMzvAFJSKv+4G/IUgxAjaxnN34Ey8COdjHVmci6UM="},"tinymce/skins/content/writer/content-eea5c153ee2a10ed0864d84fa1dffb95ea6def7e579978cd2dd3d8f0956c9656.css":{"logical_path":"tinymce/skins/content/writer/content.css","mtime":"2019-05-14T13:13:17+02:00","size":590,"digest":"eea5c153ee2a10ed0864d84fa1dffb95ea6def7e579978cd2dd3d8f0956c9656","integrity":"sha256-7qXBU+4qEO0IZNhPod/7lept735XmXjNLdPY8JVsllY="},"tinymce/skins/content/writer/content.min-eea5c153ee2a10ed0864d84fa1dffb95ea6def7e579978cd2dd3d8f0956c9656.css":{"logical_path":"tinymce/skins/content/writer/content.min.css","mtime":"2019-05-14T13:13:17+02:00","size":590,"digest":"eea5c153ee2a10ed0864d84fa1dffb95ea6def7e579978cd2dd3d8f0956c9656","integrity":"sha256-7qXBU+4qEO0IZNhPod/7lept735XmXjNLdPY8JVsllY="},"tinymce/skins/ui/oxide/content-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css":{"logical_path":"tinymce/skins/ui/oxide/content.css","mtime":"2019-05-14T13:13:17+02:00","size":16213,"digest":"158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1","integrity":"sha256-FYp9nMLCIqQo9HqXBOyMuR2NiwpbGHJSV+a+jt6aBvE="},"tinymce/skins/ui/oxide/content.inline-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css":{"logical_path":"tinymce/skins/ui/oxide/content.inline.css","mtime":"2019-05-14T13:13:17+02:00","size":16417,"digest":"a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2","integrity":"sha256-oxmkuMLbJ7FXbiLZDtknrM7oh8ElQD+dQs5IFVxGcvI="},"tinymce/skins/ui/oxide/content.inline.min-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css":{"logical_path":"tinymce/skins/ui/oxide/content.inline.min.css","mtime":"2019-05-14T13:13:17+02:00","size":16417,"digest":"a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2","integrity":"sha256-oxmkuMLbJ7FXbiLZDtknrM7oh8ElQD+dQs5IFVxGcvI="},"tinymce/skins/ui/oxide/content.min-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css":{"logical_path":"tinymce/skins/ui/oxide/content.min.css","mtime":"2019-05-14T13:13:17+02:00","size":16213,"digest":"158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1","integrity":"sha256-FYp9nMLCIqQo9HqXBOyMuR2NiwpbGHJSV+a+jt6aBvE="},"tinymce/skins/ui/oxide/content.mobile-230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346.css":{"logical_path":"tinymce/skins/ui/oxide/content.mobile.css","mtime":"2019-05-14T13:13:17+02:00","size":235,"digest":"230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346","integrity":"sha256-Iwwx9lNWx8sXmSRKNPenIskqbWFOBuWdSNsOvM1/I0Y="},"tinymce/skins/ui/oxide/content.mobile.min-230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346.css":{"logical_path":"tinymce/skins/ui/oxide/content.mobile.min.css","mtime":"2019-05-14T13:13:17+02:00","size":235,"digest":"230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346","integrity":"sha256-Iwwx9lNWx8sXmSRKNPenIskqbWFOBuWdSNsOvM1/I0Y="},"tinymce/skins/ui/oxide/fonts/tinymce-mobile-e64bf156a432d63f5b34b4567b513dc0d351b49161c7f608fb82574bfdd9d213.woff":{"logical_path":"tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff","mtime":"2019-05-14T13:13:17+02:00","size":4624,"digest":"e64bf156a432d63f5b34b4567b513dc0d351b49161c7f608fb82574bfdd9d213","integrity":"sha256-5kvxVqQy1j9bNLRWe1E9wNNRtJFhx/YI+4JXS/3Z0hM="},"tinymce/skins/ui/oxide/skin-19f5d58bf005d2ff7a6d60bb3ddfa1772a55a8e556f723a3b21340bcf1003f48.css":{"logical_path":"tinymce/skins/ui/oxide/skin.css","mtime":"2019-05-14T13:13:17+02:00","size":43226,"digest":"19f5d58bf005d2ff7a6d60bb3ddfa1772a55a8e556f723a3b21340bcf1003f48","integrity":"sha256-GfXVi/AF0v96bWC7Pd+hdypVqOVW9yOjshNAvPEAP0g="},"tinymce/skins/ui/oxide/skin.min-19f5d58bf005d2ff7a6d60bb3ddfa1772a55a8e556f723a3b21340bcf1003f48.css":{"logical_path":"tinymce/skins/ui/oxide/skin.min.css","mtime":"2019-05-14T13:13:17+02:00","size":43226,"digest":"19f5d58bf005d2ff7a6d60bb3ddfa1772a55a8e556f723a3b21340bcf1003f48","integrity":"sha256-GfXVi/AF0v96bWC7Pd+hdypVqOVW9yOjshNAvPEAP0g="},"tinymce/skins/ui/oxide/skin.mobile-22703cb423be432b125a19fa94a29a8122b722be4f7c1b303102ce16ed839e22.css":{"logical_path":"tinymce/skins/ui/oxide/skin.mobile.css","mtime":"2019-05-14T13:13:17+02:00","size":28233,"digest":"22703cb423be432b125a19fa94a29a8122b722be4f7c1b303102ce16ed839e22","integrity":"sha256-InA8tCO+QysSWhn6lKKagSK3Ir5PfBswMQLOFu2DniI="},"tinymce/skins/ui/oxide/skin.mobile.min-22703cb423be432b125a19fa94a29a8122b722be4f7c1b303102ce16ed839e22.css":{"logical_path":"tinymce/skins/ui/oxide/skin.mobile.min.css","mtime":"2019-05-14T13:13:17+02:00","size":28233,"digest":"22703cb423be432b125a19fa94a29a8122b722be4f7c1b303102ce16ed839e22","integrity":"sha256-InA8tCO+QysSWhn6lKKagSK3Ir5PfBswMQLOFu2DniI="},"tinymce/skins/ui/oxide-dark/content-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css":{"logical_path":"tinymce/skins/ui/oxide-dark/content.css","mtime":"2019-05-14T13:13:17+02:00","size":16213,"digest":"158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1","integrity":"sha256-FYp9nMLCIqQo9HqXBOyMuR2NiwpbGHJSV+a+jt6aBvE="},"tinymce/skins/ui/oxide-dark/content.inline-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css":{"logical_path":"tinymce/skins/ui/oxide-dark/content.inline.css","mtime":"2019-05-14T13:13:17+02:00","size":16417,"digest":"a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2","integrity":"sha256-oxmkuMLbJ7FXbiLZDtknrM7oh8ElQD+dQs5IFVxGcvI="},"tinymce/skins/ui/oxide-dark/content.inline.min-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css":{"logical_path":"tinymce/skins/ui/oxide-dark/content.inline.min.css","mtime":"2019-05-14T13:13:17+02:00","size":16417,"digest":"a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2","integrity":"sha256-oxmkuMLbJ7FXbiLZDtknrM7oh8ElQD+dQs5IFVxGcvI="},"tinymce/skins/ui/oxide-dark/content.min-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css":{"logical_path":"tinymce/skins/ui/oxide-dark/content.min.css","mtime":"2019-05-14T13:13:17+02:00","size":16213,"digest":"158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1","integrity":"sha256-FYp9nMLCIqQo9HqXBOyMuR2NiwpbGHJSV+a+jt6aBvE="},"tinymce/skins/ui/oxide-dark/skin-5d441f8e6ccc16da2e10963a472fe7e4b593b36d470a913abff2c1592a37c768.css":{"logical_path":"tinymce/skins/ui/oxide-dark/skin.css","mtime":"2019-05-14T13:13:17+02:00","size":43207,"digest":"5d441f8e6ccc16da2e10963a472fe7e4b593b36d470a913abff2c1592a37c768","integrity":"sha256-XUQfjmzMFtouEJY6Ry/n5LWTs21HCpE6v/LBWSo3x2g="},"tinymce/skins/ui/oxide-dark/skin.min-5d441f8e6ccc16da2e10963a472fe7e4b593b36d470a913abff2c1592a37c768.css":{"logical_path":"tinymce/skins/ui/oxide-dark/skin.min.css","mtime":"2019-05-14T13:13:17+02:00","size":43207,"digest":"5d441f8e6ccc16da2e10963a472fe7e4b593b36d470a913abff2c1592a37c768","integrity":"sha256-XUQfjmzMFtouEJY6Ry/n5LWTs21HCpE6v/LBWSo3x2g="},"tinymce/themes/mobile/theme-3ebedb886fbcc21c3b79f250f398c0ff4a2d870dd7a737322aceef1f2479ccd2.js":{"logical_path":"tinymce/themes/mobile/theme.js","mtime":"2019-05-14T13:13:17+02:00","size":172439,"digest":"3ebedb886fbcc21c3b79f250f398c0ff4a2d870dd7a737322aceef1f2479ccd2","integrity":"sha256-Pr7biG+8whw7efJQ85jA/0othw3XpzcyKs7vHyR5zNI="},"tinymce/themes/silver/theme-02294426af3edeff56daa3e5fd3ef013944295525b150b8114eaca9de6201af7.js":{"logical_path":"tinymce/themes/silver/theme.js","mtime":"2019-05-14T13:13:17+02:00","size":357473,"digest":"02294426af3edeff56daa3e5fd3ef013944295525b150b8114eaca9de6201af7","integrity":"sha256-AilEJq8+3v9W2qPl/T7wE5RClVJbFQuBFOrKneYgGvc="},"application-e97f1694bd74fef5df4337d8faa6cde48d33f29e71594d3e3b40deef8fd34383.js":{"logical_path":"application.js","mtime":"2019-05-14T15:14:02+02:00","size":1965665,"digest":"e97f1694bd74fef5df4337d8faa6cde48d33f29e71594d3e3b40deef8fd34383","integrity":"sha256-6X8WlL10/vXfQzfY+qbN5I0z8p5xWU0+O0De74/TQ4M="},"application-665c7bdc2a85d2beeb41b3c165fec5272f5d00671d445bef7cd32341457f4051.js":{"logical_path":"application.js","mtime":"2019-05-14T22:58:40+02:00","size":1965802,"digest":"665c7bdc2a85d2beeb41b3c165fec5272f5d00671d445bef7cd32341457f4051","integrity":"sha256-Zlx73CqF0r7rQbPBZf7FJy9dAGcdRFvvfNMjQUV/QFE="},"application-3d5e23cf328582872a3d1bc4cbba74e4eff77c54728da6aee7f8473b5a2824dc.css":{"logical_path":"application.css","mtime":"2019-05-14T22:58:40+02:00","size":170796,"digest":"3d5e23cf328582872a3d1bc4cbba74e4eff77c54728da6aee7f8473b5a2824dc","integrity":"sha256-PV4jzzKFgocqPRvEy7p05O/3fFRyjaau5/hHO1ooJNw="},"active_admin-7af08a6e48da4e83664b81e446c23823296e4341041da5d930b7e0bc0c2b7be9.css":{"logical_path":"active_admin.css","mtime":"2019-05-21T21:41:04+02:00","size":105662,"digest":"7af08a6e48da4e83664b81e446c23823296e4341041da5d930b7e0bc0c2b7be9","integrity":"sha256-evCKbkjaToNmS4HkRsI4IyluQ0EEHaXZMLfgvAwre+k="},"application-870592844092d1ae784a86ed11f00302cb2aab752e76420235634a592b07cd40.js":{"logical_path":"application.js","mtime":"2019-05-21T22:19:54+02:00","size":1965802,"digest":"870592844092d1ae784a86ed11f00302cb2aab752e76420235634a592b07cd40","integrity":"sha256-hwWShECS0a54SobtEfADAssqq3UudkICNWNKWSsHzUA="},"application-7759ab5fd18acdafc46a921094dd497a51f5ed55c3d5fe10db48d1ff157f5460.css":{"logical_path":"application.css","mtime":"2019-05-21T22:19:54+02:00","size":170700,"digest":"7759ab5fd18acdafc46a921094dd497a51f5ed55c3d5fe10db48d1ff157f5460","integrity":"sha256-d1mrX9GKza/EapIQlN1JelH17VXD1f4Q20jR/xV/VGA="}},"assets":{"active_admin.css":"active_admin-7af08a6e48da4e83664b81e446c23823296e4341041da5d930b7e0bc0c2b7be9.css","active_admin/nested_menu_arrow.gif":"active_admin/nested_menu_arrow-15084d93c65c1964d7077700ea748bd2d70cfa2d4c19707c58a9c64e232dd442.gif","active_admin/nested_menu_arrow_dark.gif":"active_admin/nested_menu_arrow_dark-7c43b8e0a5f8823875f49a093c9d7a6b374f885b6f9cc248ae9cd7e6e9b29034.gif","active_admin/orderable.png":"active_admin/orderable-29374dbb55b0012d78a37c614d573bb3474f0779849b478a147d0f1845ca6617.png","active_admin/print.css":"active_admin/print-cf99cbf27fb92065a9eacd28e6fad48fa72cadaf6e0918790e8d35b11d8f99f6.css","active_admin.js":"active_admin-71f5376a62a9260af4c6b4c0930c35cdf18e4e35221289beb36ba77fac8bb030.js","tinymce.js":"tinymce-1103c4904fc1df026a84e5ce890ce02b9a9fda036966b0fb34ad900ccb83c712.js","modernizr.js":"modernizr-654222debe8018b12f1993ceddff30dc163a7d5008d79869c399d6d167321f97.js","font-awesome/fa-brands-400.eot":"font-awesome/fa-brands-400-bd4e21d8e25a889e979ac2367770c36863443b8e0f99feeaee09a62625b9cb13.eot","font-awesome/fa-regular-400.eot":"font-awesome/fa-regular-400-4aa44a07b71f47067872c8f177f31babc0c609af2b384511353c89b1ca804458.eot","font-awesome/fa-solid-900.eot":"font-awesome/fa-solid-900-e153efe317e731e59eb8d6d1a568a811b8f7dd5df3823c327103be8e4a0047e4.eot","font-awesome/fa-brands-400.svg":"font-awesome/fa-brands-400-e281f2a25598bf8b40a77f3c5228b51900788224e91dade3f4a0f8c383505f43.svg","font-awesome/fa-regular-400.svg":"font-awesome/fa-regular-400-934530d864b6f03fad8e87b66daf829d17f0e7afbd74baead32a6a4157d584c2.svg","font-awesome/fa-solid-900.svg":"font-awesome/fa-solid-900-d5b212510d72b66bdb7feb22c611456621c3dd1a2e88cc42983d7d4c9ab79563.svg","font-awesome/fa-brands-400.ttf":"font-awesome/fa-brands-400-70726f98e0d98f543d5fde05a3a74bb131c5c67f5fbffcf4d41b7f68bca2b56b.ttf","font-awesome/fa-regular-400.ttf":"font-awesome/fa-regular-400-112491dccca97bf50ec7adff8d430dcba6d0b71e0a0b20386f814f3bf5bb94b5.ttf","font-awesome/fa-solid-900.ttf":"font-awesome/fa-solid-900-7a58f741ff539af94798ff561c918e5841d7e6164e90cbe57befdec4a16f6a4e.ttf","font-awesome/fa-brands-400.woff":"font-awesome/fa-brands-400-17ce8b9d612897d1fefd5cd2096dbd83b82d05dd5d1f60421aca15c4ce2445ac.woff","font-awesome/fa-regular-400.woff":"font-awesome/fa-regular-400-2835b63ffc892d01aac2cc346969b501c845d9184f738589779ec176937e1f33.woff","font-awesome/fa-solid-900.woff":"font-awesome/fa-solid-900-20464aebbff54cc17776497ce4112c3374a54b38f7ba5f58eec12174149d6742.woff","font-awesome/fa-brands-400.woff2":"font-awesome/fa-brands-400-dc64d7192f84497cacad5c10aef682562c24aa6124270f85fe247e223607f3ed.woff2","font-awesome/fa-regular-400.woff2":"font-awesome/fa-regular-400-ccf4db1eeb68c96e05e74f8ebfa75cc60c3a0fed862dae6b0ad85d4e1b5b4e4f.woff2","font-awesome/fa-solid-900.woff2":"font-awesome/fa-solid-900-f18c486a80175cf02fee0e05c2b4acd86c04cdbaecec61c1ef91f920509b5efe.woff2","agendadescommuns.png":"agendadescommuns-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png","alert.png":"alert-762ace9479328243a44061346b64c4d6b997e963c68dfc6bddd9e4d241192906.png","baby_gnu_adl.png":"baby_gnu_adl-463a81820aa2d4ffd8e7210dbce1a19ffcac67ef362aa7b092280c6f95c903fc.png","baby_gnu_adl.svg":"baby_gnu_adl-97251005d3225cf1d58b8c497d6b7905dbc9560cc8acd50118fcce60d0a2679e.svg","communs.png":"communs-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png","lef-small.png":"lef-small-93285d531af463f877951d63fe844a6e9600b782c2c81f78723b730072fa942e.png","lef.png":"lef-7e9152b909c78144ff44ca2254c06709333bef0b8d4985deb1361aba5c63c86d.png","linux-presentation-day.png":"linux-presentation-day-863b30562924505dd21841220861f83643d310e0b943a0e6a905462ddfac86f1.png","priorite-logiciel-libre-je-soutiens-april_2_m.png":"priorite-logiciel-libre-je-soutiens-april_2_m-6442e454e96ed45cc1ebc40673a6c50bd286b9c28ea6a8b58572e94f7d6459fc.png","regions/CA-QC.png":"regions/CA-QC-70699e6a6e25c69040a3f1548b0afd829c4903ccca2760b6c10f49cc87d5d174.png","team.png":"team-65c86021cf8a1154493664094aeafcbe3e5aa13dc675bb8ef34b220481db98fa.png","application.js":"application-870592844092d1ae784a86ed11f00302cb2aab752e76420235634a592b07cd40.js","application.css":"application-7759ab5fd18acdafc46a921094dd497a51f5ed55c3d5fe10db48d1ff157f5460.css","flags/4x3/ad.svg":"flags/4x3/ad-f67c4e5a3f709ead53c04d9ff35614e6c67517c3d3289170f7a317390f661497.svg","flags/1x1/ad.svg":"flags/1x1/ad-a315836ec2c9dcc11ef9bfd8b18aa7ccfc2d31435cbf46a2c31930836076e09c.svg","flags/4x3/ae.svg":"flags/4x3/ae-7a3b3dc0f50b5310014cfbcc8200a5f1ce568127bf43452e40e8158e0cff2d2e.svg","flags/1x1/ae.svg":"flags/1x1/ae-bcdd9a4da09598785f3e31db4ff431e22687b2ead18209a3e615600655068cd5.svg","flags/4x3/af.svg":"flags/4x3/af-01601b521fa86582e32c39eed8c88480afec1f801b6de929b52ed7e49da47260.svg","flags/1x1/af.svg":"flags/1x1/af-6332cf754a5e2866db631923e1f7cfc52a0a554d32b97bcf19f8263819e4ca7d.svg","flags/4x3/ag.svg":"flags/4x3/ag-cb6952d821bac7855231c2cb4d1c44f7c730f6b3621518ab20f30d2b9afe604b.svg","flags/1x1/ag.svg":"flags/1x1/ag-14f7d9978487aaf4446b55167e85a711c48a13ff07edac175c172969a38650c4.svg","flags/4x3/ai.svg":"flags/4x3/ai-f07c6cc0646fdfa441b9a506e1d46e8dce0d97b37222292e9c6733c995dc89bc.svg","flags/1x1/ai.svg":"flags/1x1/ai-95099e544de29bcea3ba735de535823f2e19aeb4043e82dbc1d9862f9262b810.svg","flags/4x3/al.svg":"flags/4x3/al-9b997f2720de861e1b0ccec8ddf42a2890795ebf50817f9223e1ceba712c9b03.svg","flags/1x1/al.svg":"flags/1x1/al-94852d2711fc23abf3423534b9edb950a0c6aabf1d2d98bf2643f3c7dadfac09.svg","flags/4x3/am.svg":"flags/4x3/am-85a199ec21d1af74a256335ead0c1e38592bb603d8da81feda4678945e9e00e6.svg","flags/1x1/am.svg":"flags/1x1/am-869391b014ac299924d30777d72a4aba430752177290a90a1fc3255a7ad79ee7.svg","flags/4x3/ao.svg":"flags/4x3/ao-29224a61bf632826d530cda55d87c2615884bd2c2c3a322036ed468e34d85c75.svg","flags/1x1/ao.svg":"flags/1x1/ao-048eacbc862fe1868cf0ec73457b70a8b49a598c80dea049856f0e1fd6fec83e.svg","flags/4x3/aq.svg":"flags/4x3/aq-b401a776d2f1a7944170114f0aeeceab5e1d962df3de7ed1eff47d96824b73fd.svg","flags/1x1/aq.svg":"flags/1x1/aq-a8d7ce9bfb860b6e2b58608b50bf2cafc5220c77f6d049ab7770891f64334531.svg","flags/4x3/ar.svg":"flags/4x3/ar-bf73475bb707100874dec538ce4b7e1b5afc4ed67dc50a8a800ee519e51cc826.svg","flags/1x1/ar.svg":"flags/1x1/ar-fc6582cc6d3ef0782805d8497ee77ab2d836c53422e91007e48f81a4a9fa2e60.svg","flags/4x3/as.svg":"flags/4x3/as-79d395190345206ea03475b67b44638e1111562411504b60646483c9c0b0f7d1.svg","flags/1x1/as.svg":"flags/1x1/as-04f0db77c5d8610a55c69508b226a7c338924f8cf7d6577d5d6590e85ee57183.svg","flags/4x3/at.svg":"flags/4x3/at-3d197de8f1f0096a2b0d440b6fc7d80821585a6637e646c05487a87718bf6b5f.svg","flags/1x1/at.svg":"flags/1x1/at-ec4db9aeac793827ac7c8e40c072a76f7675010058cc8c8dfd3a86bb5acfa6b8.svg","flags/4x3/au.svg":"flags/4x3/au-126fa2500a315287a5f847f4d958bb929f11da9b39f35912cc440c0fcffb8b12.svg","flags/1x1/au.svg":"flags/1x1/au-bf990dcc957c9f74eb908e8ffa733f1731277bf6ec8b7301a6ea1ed92b59cc4b.svg","flags/4x3/aw.svg":"flags/4x3/aw-4524643452423e95f3b0dbe6216b059a9e52126b34c73ae4b3c17b682f893aa6.svg","flags/1x1/aw.svg":"flags/1x1/aw-f7002bceef55486a442bf6bf433be0c60d0b15b2aa548b81c524c67ccf0565a8.svg","flags/4x3/ax.svg":"flags/4x3/ax-c297e0eb654ca62e58f5eb3abb70df9f245e4919490f29bd0f1d49c4fe052d90.svg","flags/1x1/ax.svg":"flags/1x1/ax-a1245689ecbf321c0a9e556bba17f3c9f2aeb8b1f63d14fcb591d76a87f12880.svg","flags/4x3/az.svg":"flags/4x3/az-132e68d5e0386d3b9fa05b4288a0fd66f1414e2bc7af6b9d437b6935a7dfa00c.svg","flags/1x1/az.svg":"flags/1x1/az-3990c0526b933bd650285d821f2b93e432a73ba709869549b8ef75b051d3bd2d.svg","flags/4x3/ba.svg":"flags/4x3/ba-89dd0c1600d94741de7d667a487310193a0c48c4cf1a5159c3bf9dd37d65d2b5.svg","flags/1x1/ba.svg":"flags/1x1/ba-2dbe90eb12b937f4a9ae8db95760930a3e318f4ce5829ac05e292ead698bae5a.svg","flags/4x3/bb.svg":"flags/4x3/bb-16f8249ff958bfbc18fb1f23a5282000347bffdb5769ac620966185b1dcb57f6.svg","flags/1x1/bb.svg":"flags/1x1/bb-fae92d8426196ae24ffa561aca72613fae651a5e9c0bcda63ecc877add05b060.svg","flags/4x3/bd.svg":"flags/4x3/bd-8dac0547e73ee25a04148a3f0fd026a90e56c23b7e92921565d4263050ba77a6.svg","flags/1x1/bd.svg":"flags/1x1/bd-ecc3c3e87d4cc59c8350f2b4d7dca8f5cf46bdb26319db0ee80b744482af50c1.svg","flags/4x3/be.svg":"flags/4x3/be-a180ca68521188017bb5367f19e503d9599d6cbecd61bf054e59a57f58e648ae.svg","flags/1x1/be.svg":"flags/1x1/be-c8d4194137bd01955285b329dfdf996490d16c3116a92ce2f322e354b6d7494e.svg","flags/4x3/bf.svg":"flags/4x3/bf-6b214936ef89f19133d4a84e99cdf0cfdb99d6409f2f373f6d18694423013313.svg","flags/1x1/bf.svg":"flags/1x1/bf-04c7d61aa314adab5a41bd79d77aa780c10136bb6b8f4c62423e61e23e3851ee.svg","flags/4x3/bg.svg":"flags/4x3/bg-dd3985ba746942b0e65bc52a280cc4d28fb24fd2c7d9e22ac9afd2d75ee7bfc4.svg","flags/1x1/bg.svg":"flags/1x1/bg-f59294a736d5bdc0f102b58d70dbe45d02bd92df822820bf95336840f75a0746.svg","flags/4x3/bh.svg":"flags/4x3/bh-7c82c4a6ba963172c6c1b4423f39a0ebe9c999449cc7dd87018917943db4735c.svg","flags/1x1/bh.svg":"flags/1x1/bh-6893aac3e55c6480e9dac0c023ec2179f6c12a0da82a0bc2717134384c097e88.svg","flags/4x3/bi.svg":"flags/4x3/bi-4fcd0116f7f93c0564c6955806f3c3563d0ea7334ae406f29a897255845c923c.svg","flags/1x1/bi.svg":"flags/1x1/bi-91c34eb431b26be67852782a0b93e1d7d577a925454d6c8cea00a0d872d2de8a.svg","flags/4x3/bj.svg":"flags/4x3/bj-63bddb4268f5f8c2ed867041bcf058fb18fcd9d1e0799e01286fca2d5e961c7f.svg","flags/1x1/bj.svg":"flags/1x1/bj-e2606c5a8498c474a6b6708626b88108fcb73840344766566dc56f804279cdfc.svg","flags/4x3/bl.svg":"flags/4x3/bl-824a7265f48789d5e1ad5c5b0042a13a7d2d4357210e5bd8124fca19931e8c74.svg","flags/1x1/bl.svg":"flags/1x1/bl-ba6a7881b0ca72ac57aee4d823ae611ab4ad24a938ee9e01a7a4d5ae04cfccf6.svg","flags/4x3/bm.svg":"flags/4x3/bm-2e2f09e5a4edf4b18afff581656f50b0b4c37783db29591ff00ca768f7f755bc.svg","flags/1x1/bm.svg":"flags/1x1/bm-f553f953f8784ea4d67a5197f5d808a67747eb8a1cb56990d6838e690090d2d6.svg","flags/4x3/bn.svg":"flags/4x3/bn-bcf9967c12eb6397346cb5b960ae92efa41f314f780d09a3d7c81f5dacac4180.svg","flags/1x1/bn.svg":"flags/1x1/bn-1d1aad3fe9fd33ce922eba33c9ae6047a5646349239c20d1bc7307ec6d19a043.svg","flags/4x3/bo.svg":"flags/4x3/bo-fa423f2bb4ab6e8e9dd399ad73781ea8d9cbafd30f1b7ee0bcecfb9e7b75581e.svg","flags/1x1/bo.svg":"flags/1x1/bo-f5faa29e40191e0c76070ac1a1d2a1f2b18e9cd358b8a77cefaed8efc49a265e.svg","flags/4x3/bq.svg":"flags/4x3/bq-493c92ab19204c3ad319e6caba021df050132b99bd57a8f9b74131b78229c29e.svg","flags/1x1/bq.svg":"flags/1x1/bq-6e30bbeabc2aa097f657a411984b3c23278a8fcce2fc016b1cd6d2262f672d33.svg","flags/4x3/br.svg":"flags/4x3/br-cf3ba80ec2c9fd4d3c845c3a3c43a2b9d81cf90707a2918789e8b1f596833e01.svg","flags/1x1/br.svg":"flags/1x1/br-7bf4e4b31650ac25f0bc6c86eb87491a7e5a8eac13acccfcbde44346c88728f6.svg","flags/4x3/bs.svg":"flags/4x3/bs-69f60b5fea96b67dd939e597099994921bb3dc3bcf31b8dee7cc45be2885c836.svg","flags/1x1/bs.svg":"flags/1x1/bs-f5d6acf7ef7a240dc09ac88710fd77fd3494501104392db74d5c540d482f2262.svg","flags/4x3/bt.svg":"flags/4x3/bt-6c20b0c00e12d5898be0239a0c66ce775debd0bd536de56a271859a0285a039e.svg","flags/1x1/bt.svg":"flags/1x1/bt-58de3ca9438811ef1920e2f84c4ba4ce32d01069f4d197ab5d577de6acbe0c85.svg","flags/4x3/bv.svg":"flags/4x3/bv-ff173190fc339b3cb8b6e8235bc5e373853d7127fd94cbc32ac737e839aeb586.svg","flags/1x1/bv.svg":"flags/1x1/bv-59616ff1a722959064c83927ca2e49c1fce42a9b18e91b9ecbb74f62527aff43.svg","flags/4x3/bw.svg":"flags/4x3/bw-4bb1d3131b88c65b5decc67f7b44903e931bca2fcac841942591c599f0cbb850.svg","flags/1x1/bw.svg":"flags/1x1/bw-e08f50c0836ca5858aed7b0526aed6fb630da8dc6b6b96bd9a476af599dc89d6.svg","flags/4x3/by.svg":"flags/4x3/by-324ac96bfbe075781c664be3b9e2ac6b4d2a46dd2b418ca0920284f64394c7d4.svg","flags/1x1/by.svg":"flags/1x1/by-37b80e8bf7e51fef99a8307d6dffb04ee164790ceeafef606d516ca333e9488a.svg","flags/4x3/bz.svg":"flags/4x3/bz-156fdc45f8c15c9520a1ea9fc0f395f294f02077408ea1938c222a37cfbb7f1d.svg","flags/1x1/bz.svg":"flags/1x1/bz-24577d4e7b29b33ab3b1d37914c8479889baa7e8c8399c6d1c99faed31ab053a.svg","flags/4x3/ca.svg":"flags/4x3/ca-0d57cab46d5dbb0012a5e4ae0a9efee3baee90d5d157950a6c5d67edf2daa58f.svg","flags/1x1/ca.svg":"flags/1x1/ca-192a6fb0544e5a6f33a32149d62f1e7ac0a1d61c5c5afa57f3a42346ca8e8c90.svg","flags/4x3/cc.svg":"flags/4x3/cc-a35f2a9e10a28d6918ced65e0623b03bb2fbf1f20670b581bc0a409d33b4e843.svg","flags/1x1/cc.svg":"flags/1x1/cc-d2025eefc9d30f724f3fcd95c0fd9f7938930ecb01af7e0cd6ee6553d7358eb6.svg","flags/4x3/cd.svg":"flags/4x3/cd-5d2127c991b30522ae0a29d05facbc88728c050d7e333a60d614af1545459c5c.svg","flags/1x1/cd.svg":"flags/1x1/cd-59dacf424d1c8c779db66c5b7f2a93a3c8f14976c2975ccfb07639676a1602e3.svg","flags/4x3/cf.svg":"flags/4x3/cf-ac0aaffba354d848eba2501a402ee81dc96a56ad0acd3741ec9905e76c372e1e.svg","flags/1x1/cf.svg":"flags/1x1/cf-e637674faf7edcdad37182192d038448c157421ab0c69377d9b8e56ab2c0249d.svg","flags/4x3/cg.svg":"flags/4x3/cg-3729f717c83c9df7d0543a1a5d4a506efe184bdfeb39f9260b4b63edf19d2538.svg","flags/1x1/cg.svg":"flags/1x1/cg-8353ff1f251714b1b8905eec1722378426719955d0637d206d35d1dcfa68ddcf.svg","flags/4x3/ch.svg":"flags/4x3/ch-6739edee6d1ef72c4ed97cfe723d3bb7f17e4df5390f3a4ae234f1ffdeece0cf.svg","flags/1x1/ch.svg":"flags/1x1/ch-7c3dec465228981c57a90a3a7b3a6c42dd3e699230663e770b55008ce6d14208.svg","flags/4x3/ci.svg":"flags/4x3/ci-3e076d13c9524149508c442f8f727424660124e3591280d8ae9bddf9d8272a1e.svg","flags/1x1/ci.svg":"flags/1x1/ci-691a0a8577b7d555fc90dc7170adc9ec7571191cb3507c46c0e8516fd1778a91.svg","flags/4x3/ck.svg":"flags/4x3/ck-9cff098e505afde9bf5166cb7b0c409178575633b913ce08c1c700d08c477db6.svg","flags/1x1/ck.svg":"flags/1x1/ck-9c8dffa3bd5953d8a121780831f25b58738e67f3be71961894c56dfd25848c88.svg","flags/4x3/cl.svg":"flags/4x3/cl-a4c57ec2bb9adcb67e1850256e5165227b764187d6941a38d95d0def5144699b.svg","flags/1x1/cl.svg":"flags/1x1/cl-5a3e95cf63358e3911c97404818c2cddfd46414d8445e47d6976ee166c48926c.svg","flags/4x3/cm.svg":"flags/4x3/cm-5dce9f36d92a61bdc0c482141bdb4f55bfcec0a2ecc745db643a7953e2e5a722.svg","flags/1x1/cm.svg":"flags/1x1/cm-d8d21f54c44df5df9edef227691384a4ad37c15ff57c8aa0dead684d19eac8cd.svg","flags/4x3/cn.svg":"flags/4x3/cn-48ce1c2837bb806a6aaf8b7a9878b6d040c0d069a0ffca9a8a49e7a31aa30e7f.svg","flags/1x1/cn.svg":"flags/1x1/cn-e6be64c6c4a976e64d39bfe8a6ae4a5b1d38a6aa1b138ddcacf34a942dff50bc.svg","flags/4x3/co.svg":"flags/4x3/co-648d3ff596a0ecf3e85ac17c53abe1d7ca4759688e10a7a3a8b56f096ba6b6f7.svg","flags/1x1/co.svg":"flags/1x1/co-d3c16180c6bce630f762aff789104d10e9dbc949e740535a61396cd0ec34c1a1.svg","flags/4x3/cr.svg":"flags/4x3/cr-84aec60f19bd33e1ac1a209155fec8d372e17cb59dc1346bb9124e5cc867375d.svg","flags/1x1/cr.svg":"flags/1x1/cr-5371cf8bc5ad1a805155c1b3065e420a0a418c8d63b472bc545890289a365b35.svg","flags/4x3/cu.svg":"flags/4x3/cu-bb3f857e02aeab606120d9f164283f07a44b227f12aad7d6d344c7579f7b3ff0.svg","flags/1x1/cu.svg":"flags/1x1/cu-02c0054169b874a8d231de1f45b2d0884de48848157734e0ddcd0f684c05c18d.svg","flags/4x3/cv.svg":"flags/4x3/cv-90ee90ab59713454a218d8c300c71139e62655de80bfbea81df93142a529b81f.svg","flags/1x1/cv.svg":"flags/1x1/cv-2cf3eede97a468d28459ccc2271c28bb5b6029af2388b0301f6203be55e49308.svg","flags/4x3/cw.svg":"flags/4x3/cw-d46beb7b10b40fa82cfd40eb86a3b3879f59f5da2a2f5ef91d121ab9b16c0aad.svg","flags/1x1/cw.svg":"flags/1x1/cw-ba78c834e61b24a8a2b6bc7c80ab9f14e42c3c69415941ddb7c8c1f652ccd8b5.svg","flags/4x3/cx.svg":"flags/4x3/cx-28187fb9d91bedc6f239b107d26eb6ec1cc2a0c7730810306c5a6b313c14f2b2.svg","flags/1x1/cx.svg":"flags/1x1/cx-8ebe073d997f93d092a493300ea1d234c91aef80c6e8f431e88aa7f8e724f9a6.svg","flags/4x3/cy.svg":"flags/4x3/cy-8d633ecabc7968bb8a869c62545f122aacbbc3e108c25ceb421bb8bc8734b9be.svg","flags/1x1/cy.svg":"flags/1x1/cy-6ef37fdd7518f18727bec1ed9741bb4d1f854dde7ef1a7e9fd2f4ba6291a7790.svg","flags/4x3/cz.svg":"flags/4x3/cz-6c94e3d53fc1ae5982d8eb058b76d86f07d3fb4cd325698fea3291fa35504c56.svg","flags/1x1/cz.svg":"flags/1x1/cz-af9898ebd32559cdbea2fd17b351e5eedafccada6fbc6a2b7952cad78369817e.svg","flags/4x3/de.svg":"flags/4x3/de-e7323083675d25107c85f0cea6534bd21d21e77e6d524d92e1b2d0a4e21117a1.svg","flags/1x1/de.svg":"flags/1x1/de-fdb60146952d3b2d104310b28882a0ecde44d808240c3bab2cd6c302a538b266.svg","flags/4x3/dj.svg":"flags/4x3/dj-546da4a0dae9b1ab74dc6ac6076d0c706f37ef2a0d799342dd0345e11f770f03.svg","flags/1x1/dj.svg":"flags/1x1/dj-c0481b667f003d9d5a3c93861023a97a98224227ac19aa7e07b5b6edd35fe900.svg","flags/4x3/dk.svg":"flags/4x3/dk-a13735c0337ab4679cd8679508bf5e8067637ab611ca5c54172c621d740420e5.svg","flags/1x1/dk.svg":"flags/1x1/dk-822a3b8b6948f49aa81fe7620bd173453d9a45406a9680f24bad7e714e58cb7c.svg","flags/4x3/dm.svg":"flags/4x3/dm-7713fabd3cf341694b4c1ef5d1379820773722b61c190234ac7416f2872e3940.svg","flags/1x1/dm.svg":"flags/1x1/dm-33d984fc9897bb2a3bd16c6672b876effc1a8adc0c57ad122a16db54061e4e46.svg","flags/4x3/do.svg":"flags/4x3/do-714b6f307ea3a9c3d30348684b8574e8b7f5078f51649dfa97ae2a69a7108b4a.svg","flags/1x1/do.svg":"flags/1x1/do-d37306c4b346f89ea14739144374caad69652be31e8ce8e2504c9a0d422a4857.svg","flags/4x3/dz.svg":"flags/4x3/dz-a96e943c830558fe9823044aac2bfb3f6a4caf3bd3c57943352280a7f6b68cb1.svg","flags/1x1/dz.svg":"flags/1x1/dz-09400d3b2c58e641a1641a687b81476761d05f9d0ff65861aeaa33c7f508cda4.svg","flags/4x3/ec.svg":"flags/4x3/ec-6762ba85ea0f7bb289b0aa6219c797e5243103d281b1462c61b61030fa329d5e.svg","flags/1x1/ec.svg":"flags/1x1/ec-7410a75a013738fbb8cbd756d967380e02ae54ca74e9ef9a41c4b583c2c2794f.svg","flags/4x3/ee.svg":"flags/4x3/ee-ce3b622214bd9eefb43373cae2811ea8cf6ef6a16bb6afbaa5bcaaea34024da0.svg","flags/1x1/ee.svg":"flags/1x1/ee-a207a8363b4dde44f59951501c2cb539419e92b0814b25d6448710ced52226f8.svg","flags/4x3/eg.svg":"flags/4x3/eg-16a11fa93856ddc5fd46f8811adfc93660175724b20eaab55ff046855a352d2c.svg","flags/1x1/eg.svg":"flags/1x1/eg-9f4d098c604326bbc3692f9e2f335dbc9b34bdf2706565bf448380f0a889d1e2.svg","flags/4x3/eh.svg":"flags/4x3/eh-9cf4a74d29c1a1afc4137deeb5b678d55c8fbdf8d181217267f3a5cce6a76a97.svg","flags/1x1/eh.svg":"flags/1x1/eh-16c3327dbcf3483e634b3536b056324b5478212dae6d060f2ffb2ec961cd382f.svg","flags/4x3/er.svg":"flags/4x3/er-69a1e1e45289d1282df4b1e5ce5e712d69fbe314abd0c922353fce90814c543e.svg","flags/1x1/er.svg":"flags/1x1/er-90d49408e58955cf1cf3185b0193e03c4a107042d47ef5e975dbbe10c6ef7f4a.svg","flags/4x3/es.svg":"flags/4x3/es-50e59681c6b6412498bd9cbfc473abedc713db75c54c538b839db3c394d64499.svg","flags/1x1/es.svg":"flags/1x1/es-29c68fa3c9c8c2adacdc2eb0162e9c2fa998faa408836900ec6285000476800d.svg","flags/4x3/et.svg":"flags/4x3/et-14263ba7ea890fd0a4d89a2791343ecb7acc89aab1fc2593e00a6093b22251df.svg","flags/1x1/et.svg":"flags/1x1/et-086eefb70e9adad537cc1c640a72cc0fa843ec7a9b06b2778aa98b2db055bfe6.svg","flags/4x3/fi.svg":"flags/4x3/fi-a4c41caa02a4f6803ea0d6c36de4beebf20d150e3df742b1369a4099c2ff648e.svg","flags/1x1/fi.svg":"flags/1x1/fi-c5fdf318fac5fdfc94fe54268618e58a2bc5933617ead09992900f90cc25de9a.svg","flags/4x3/fj.svg":"flags/4x3/fj-cb0cc4b3b5c202f07487ee519f48b3eadb47035f5f2d5d3f99d20f81e48d6b79.svg","flags/1x1/fj.svg":"flags/1x1/fj-c2c7fd536841925e7647b2d510d6a0c58700e2a8ded0e42008fb93ffacde101f.svg","flags/4x3/fk.svg":"flags/4x3/fk-cb61eaa0d7221823f7d17de59ea88ed16b506f9585ab0c7291cf839449d82968.svg","flags/1x1/fk.svg":"flags/1x1/fk-a871742380ae157d1211a63cc35cd3621b1bf6de6d67e4a8e3565ad200b1d8cf.svg","flags/4x3/fm.svg":"flags/4x3/fm-079b937562a9a412aae8fb762b571ddb49bf23627943c97247b6a9bbdb768153.svg","flags/1x1/fm.svg":"flags/1x1/fm-dbec73633ecd8a6c50f56d54df36bbe6a2f8fb534ac7658477c82cad14a806a8.svg","flags/4x3/fo.svg":"flags/4x3/fo-27279c2481bb1cb3e44850a948987d6a8411acffa770c3aecd1b76d4c5853413.svg","flags/1x1/fo.svg":"flags/1x1/fo-7cb4fdbba1c7223702d843cb0709ddc799f89f909dfe101e3e36d6bf36c3e67f.svg","flags/4x3/fr.svg":"flags/4x3/fr-30ed2f68dc9a17927643640f48f3d2a858bd041770547035349c6e79713cd84e.svg","flags/1x1/fr.svg":"flags/1x1/fr-6b849151204c66fa661c30b34e62919a13b9e66b7cd37a4fc8962e8e0baf9bdc.svg","flags/4x3/ga.svg":"flags/4x3/ga-e3840f9d5bd6ee08db748d37a534500b837bee0f8ce65987b2f099a6afd2cc63.svg","flags/1x1/ga.svg":"flags/1x1/ga-9eafd5388042b3d2258ac6223075b726426210136b9851b637973105721b64d9.svg","flags/4x3/gb.svg":"flags/4x3/gb-ce93c8a6b974d63998e263f6d25f898fc20580a28464457f2f4463b687e4fe8d.svg","flags/1x1/gb.svg":"flags/1x1/gb-1d93e1ce2e2e10c1709e4dc50ac956c007b2c1a63a4bc22ddfd64354f79ad457.svg","flags/4x3/gd.svg":"flags/4x3/gd-7c3a6b6068bbd9a6abc98c2297dd4acd5e31022e5a4210fc0e1205ec28498fa2.svg","flags/1x1/gd.svg":"flags/1x1/gd-2310bc03d9e8ddc8599b40891bfb10b812b07023881599a7e02e3028d1bc9ca8.svg","flags/4x3/ge.svg":"flags/4x3/ge-501c0135fb8c377dbd2859ff6290b47ef4907a8e2ab2ae1e39116b716db6795f.svg","flags/1x1/ge.svg":"flags/1x1/ge-ca9ee36883ec12048fbb7fbbfaf231c0d4848ae0b07dab74a46d53b7b34d8114.svg","flags/4x3/gf.svg":"flags/4x3/gf-7c165f90bfe6ac3674903632182221a992f017ff706354b1761002382e89c2c2.svg","flags/1x1/gf.svg":"flags/1x1/gf-8838337b15cdcf143fac16c714e8dbf2d893d2ea8f1c8ef06dadcb652dfec41c.svg","flags/4x3/gg.svg":"flags/4x3/gg-2c7bfc50d5bcd374b5f6107974d06af24e70edba31ad71a225e0c2ecc2d6e778.svg","flags/1x1/gg.svg":"flags/1x1/gg-509489b1792831bb27d6975c76aa0a2ac2fa2c3906bcf844f616de5e0fbbc359.svg","flags/4x3/gh.svg":"flags/4x3/gh-79c187756e93df22fae571ad9419629c5247c016e32a74471e0d461048fdf5cf.svg","flags/1x1/gh.svg":"flags/1x1/gh-e7bf18e6337982ee31e3673ab93e722b3410b7a4c202656a4bc3887d8656286b.svg","flags/4x3/gi.svg":"flags/4x3/gi-ed99b369c8c77e64abd59fab1f28155d71b4378b49625c66ab0ab6dff4f88087.svg","flags/1x1/gi.svg":"flags/1x1/gi-2e563e96e766e13c0a9c5a3a372059a44739bb696e853d71a6f6b08c491dfb9a.svg","flags/4x3/gl.svg":"flags/4x3/gl-612e560dbad68d540be672b80e22c54db43d6e2070523e81c156ccd6b3fc4260.svg","flags/1x1/gl.svg":"flags/1x1/gl-a9bb35d2b9ff27638658d9ad6b9e2c4f452072b9a80b508d32e76d37bf62cf6e.svg","flags/4x3/gm.svg":"flags/4x3/gm-4a6f9670a41548cceaced2b728e4bc56acbc4a3ba5544e7a097f7dae7a8bb045.svg","flags/1x1/gm.svg":"flags/1x1/gm-b67f9f6bce2f8c8700c198de8bfafac72d01b8a1e55b77f71e8cafdc58f8af5c.svg","flags/4x3/gn.svg":"flags/4x3/gn-873b4eb52f34c7558bef93cfd1b82117b5c32c9fbc0610f8821ccd22f28abe28.svg","flags/1x1/gn.svg":"flags/1x1/gn-72f51dc30cf0ed5459ad0f239cf3043eac05ece75945bcaf4ea6653af868c504.svg","flags/4x3/gp.svg":"flags/4x3/gp-4559cad3eb2d173214161d16b0237c68f5c817749a39c862fa7b23dfb4aee923.svg","flags/1x1/gp.svg":"flags/1x1/gp-d6669532054db5b7e441f4858c28920246a65ca3e8a15518c64c7bbb4f9c6416.svg","flags/4x3/gq.svg":"flags/4x3/gq-0c8dfe7f9543307056bbe6d6e44a16c17201228e5344d5afec1ccf1b9a5eb2f9.svg","flags/1x1/gq.svg":"flags/1x1/gq-ecb761e6db59b9bf8ba37533eaf0c60b7fcc7c0dfa2fcf281ee84c970dcb10f8.svg","flags/4x3/gr.svg":"flags/4x3/gr-4a4086310397bffa682d439be8650a9e28d94e32963b6411b61435292ac4cf80.svg","flags/1x1/gr.svg":"flags/1x1/gr-0cbd171892c0568b055d3b6585d58ac13dd60dfbcfad16eda1f4f9ead11dd16f.svg","flags/4x3/gs.svg":"flags/4x3/gs-e45169a93a9e94c15f5cb765a6c863319171fb9b4dce56094411829cd688d486.svg","flags/1x1/gs.svg":"flags/1x1/gs-3efc9e1b32961f9aa9d7faa2626e596282b63d049f6717c2378b28e3f508e79a.svg","flags/4x3/gt.svg":"flags/4x3/gt-64a7345cf66facf7f323d2142aebb4172191108a78ac7493b1a6077b78ac8ec5.svg","flags/1x1/gt.svg":"flags/1x1/gt-436a2af3d95cf3cb13ded897f319cfd6e2c087d678ad0e971c198b0d2c029911.svg","flags/4x3/gu.svg":"flags/4x3/gu-f560822ee237e5277829e63613a615a2ee3d8cc6196dffffe0f0d56a49b11c53.svg","flags/1x1/gu.svg":"flags/1x1/gu-a71c9d290c66c1a0929b05436dc6a8229b1147d7cc62336e04c9adf697030450.svg","flags/4x3/gw.svg":"flags/4x3/gw-0dc9ec17735ed605b68672947ce55c49a4ec1551491ccd121f482c1875cdf219.svg","flags/1x1/gw.svg":"flags/1x1/gw-7868c305e4a64b0d8ebfd3f7cb8c881841d71a7e0c3ead2683fe503c80de0674.svg","flags/4x3/gy.svg":"flags/4x3/gy-c9126e544c62508abfb898f0af0bd79c46f4c767c9ed6f928418a24b0f246d85.svg","flags/1x1/gy.svg":"flags/1x1/gy-0e3b849ce460f8ab1ec7cf66a25be1ba91e89b72d8b0aa679a0553464f37a972.svg","flags/4x3/hk.svg":"flags/4x3/hk-cece9126ccbf9151feadfed75791ebf32d4a16beab12f182404519d0cc24eec7.svg","flags/1x1/hk.svg":"flags/1x1/hk-9fad00e06f9034877149394914baa2bc3292223b0e32df2b1f9399d4de6e167d.svg","flags/4x3/hm.svg":"flags/4x3/hm-4b4923b81da24d62ebf31a9bc0addf76beef84593374b1cbd03ba19f3b12e3e9.svg","flags/1x1/hm.svg":"flags/1x1/hm-776c822113a22e83581234d05f40bfc0ed38b60648d87f513f3da3fff96ffb61.svg","flags/4x3/hn.svg":"flags/4x3/hn-855c830786283862a5f399e0d69dffe52b6223b91b32e31b55d55c82f2fa32c9.svg","flags/1x1/hn.svg":"flags/1x1/hn-64c38bac9403417c4e276bf5536d284fc5410fc04b80acd39a961d298f430dbd.svg","flags/4x3/hr.svg":"flags/4x3/hr-c8cad861f7398a22b9d27ea682d2778df0dde8e146d30142b5294daf988854af.svg","flags/1x1/hr.svg":"flags/1x1/hr-60c093df6760e4cc6abe26c37a52be3b51458f02712f18e11f08b07dc623b489.svg","flags/4x3/ht.svg":"flags/4x3/ht-fe81da06228fa36e7f211bec0d9f0c020f5b9c7f81534b4cb2251848aa276b16.svg","flags/1x1/ht.svg":"flags/1x1/ht-dd0197c078859c5a66ff3a51d3a3f92809768e36bfabdec0fc0ab60d068afcd9.svg","flags/4x3/hu.svg":"flags/4x3/hu-9aa998e636687aede491e307f3d068dbe58f2d90bfdfaec0e7ad03baa5b36344.svg","flags/1x1/hu.svg":"flags/1x1/hu-06858d0fbd4320496e849010e35c8fe82eb618188cf6ec329aef93f5e7af1c23.svg","flags/4x3/id.svg":"flags/4x3/id-775dbfedd6533afdf5bd017ccc1ad4f8f4238cbe87393d9c837a669196f17293.svg","flags/1x1/id.svg":"flags/1x1/id-3920ce662a7ea937b2c11707d8e1f53db52611dd004edf753b0389ed490d9d29.svg","flags/4x3/ie.svg":"flags/4x3/ie-6368a1c92440fcf80d3c35607543bcaa2d4662d6e0bc7acf6749ddbc418a72c0.svg","flags/1x1/ie.svg":"flags/1x1/ie-1997e9de640fa764677aa8f5d52f7888bb24a029160e8f67b06dbd043b4f11b3.svg","flags/4x3/il.svg":"flags/4x3/il-d76883a2330f9a05a4a64990ba955fc1be90bb46bcb19ae548c21816e7e74178.svg","flags/1x1/il.svg":"flags/1x1/il-f5e643d0e10169a438119dc441ea3100b52a2ff569bbb3a3ad6d1131b47602d8.svg","flags/4x3/im.svg":"flags/4x3/im-bbae8aa9dd129f8446556afe4904194ad43377d882f9a705fcf1da2bdbfabccf.svg","flags/1x1/im.svg":"flags/1x1/im-767d72c2e72d732d65c9b016adad983778dfbbb2b5b52e71830f4e41297728d3.svg","flags/4x3/in.svg":"flags/4x3/in-519e33321b8b2ba70a0b7557d66c62d7efdc9723896c49f82528b107028ffe29.svg","flags/1x1/in.svg":"flags/1x1/in-27831f76dc6a218a529b6e5d0eafc4c19c999461327b7c013f59226c0601a361.svg","flags/4x3/io.svg":"flags/4x3/io-8d25a8e98f682199b413adfbcb6898c37058c9bae085e427fbab03d56e8c0de6.svg","flags/1x1/io.svg":"flags/1x1/io-627f3b0cef72fd91ff426d74a007dc32d74c9fe677cf2c8355cba84359e16fde.svg","flags/4x3/iq.svg":"flags/4x3/iq-96b24d1439184d0a4c35ca7cea65e5f20469a0e8c8438963aad016e59c399cc6.svg","flags/1x1/iq.svg":"flags/1x1/iq-af04db139f8c44cfe0c612e2c05e848ccfad88fbbfcb58e88cdb7c80db365669.svg","flags/4x3/ir.svg":"flags/4x3/ir-db2c230d355ade2b1ac235ec647bb1535e4703c639a44f9ce112473272ee1019.svg","flags/1x1/ir.svg":"flags/1x1/ir-c648cbf56fc8f324fda477ea816783c9df8a7d398f45f5f94acc1c16c8877b63.svg","flags/4x3/is.svg":"flags/4x3/is-29508693138977229758b0f322ba34e90dbcd7a8a74e8820729933d24051d9a7.svg","flags/1x1/is.svg":"flags/1x1/is-b1c5db1d4b4853b8144f1d88ababbf14fc88752340457ba3e2c94ab5d54c9c01.svg","flags/4x3/it.svg":"flags/4x3/it-d2c168050fc509adac1163b097b0ed409217560735b27802ae9259587c146562.svg","flags/1x1/it.svg":"flags/1x1/it-592d34fb666430fa00f98d333623d5efa3c8e0e65ac4eee06bbc4c1de7ce4bea.svg","flags/4x3/je.svg":"flags/4x3/je-b363a4e3a21630f10791c2ebeb7f918320816ef87c155d4fd29ce37982f4df35.svg","flags/1x1/je.svg":"flags/1x1/je-6d43f74e30e099bc056da925ec34c0200708f0a6e90da34db1e59d54ce10cfd9.svg","flags/4x3/jm.svg":"flags/4x3/jm-3d133fbc2564f29e036855e8be224d1579fe66fe49e0f5a2ba0bdcf3cb272823.svg","flags/1x1/jm.svg":"flags/1x1/jm-1aea8ea5d8cbc717fa3ef331d8caa9a1421c88a7bd076e40f8276a5b6f8d0467.svg","flags/4x3/jo.svg":"flags/4x3/jo-eee432339f8ea6750987e1121187eb4b53ec537dd7ccb240c018de63f7a92db6.svg","flags/1x1/jo.svg":"flags/1x1/jo-7969b2083c535c85b7e714b755459a6606940e0b5ddb1b71e24daf0a180d14aa.svg","flags/4x3/jp.svg":"flags/4x3/jp-2eadcfc67ba8cd50c1da86e08e6778e0102c3072865dab8c312cc88006da0abe.svg","flags/1x1/jp.svg":"flags/1x1/jp-551281a75e6c6fd64eb65b39f56102b52c182f6c38ee045c9422f6592f0f65c5.svg","flags/4x3/ke.svg":"flags/4x3/ke-45790bc3ec1ed8ed0124777a7c9e09163353b5af4ff70ae6604a61b53712df4b.svg","flags/1x1/ke.svg":"flags/1x1/ke-2cca24ecf024b801543c0572efc9969ffdaf25cec313e2149c64961839bc301b.svg","flags/4x3/kg.svg":"flags/4x3/kg-3879f8931d74cc9c5927261f4095b2bb786f3d62c803b2a96ec550a23fae9f49.svg","flags/1x1/kg.svg":"flags/1x1/kg-74318932808f85b72df308358f2f2699ab0cb7ab4f7ad3c84c4be4024f0fb140.svg","flags/4x3/kh.svg":"flags/4x3/kh-7409fab4ba4e676db7b5c61020b97893b1735fe0b8e39e9b4f96108400be704e.svg","flags/1x1/kh.svg":"flags/1x1/kh-2603f6a61b400cb12b87397eeba60ae1707511467d5e0c430c05809bf89e5042.svg","flags/4x3/ki.svg":"flags/4x3/ki-617c1b52f3d9aee99d094edbd1775cae77aade266a1318eb4671b2bb1620ded5.svg","flags/1x1/ki.svg":"flags/1x1/ki-74615266b440a24f09abdeae3853d7e1111f0eba77df71ccd176d83fbd1fd9ad.svg","flags/4x3/km.svg":"flags/4x3/km-0c9bcbf7e677a541fc8dff6f848c9d92b6982ac2934ae75faa56a2b846bb5698.svg","flags/1x1/km.svg":"flags/1x1/km-81b0fbe53d09194270e8ed4cbe9be8eb1ae727e77957005369ad8bdc651dd1c8.svg","flags/4x3/kn.svg":"flags/4x3/kn-0442f55f81cd3b1057c609301f0af2b503d89a895a954af8c970df997e92bd03.svg","flags/1x1/kn.svg":"flags/1x1/kn-897c34ef54bee486f0d24d2191e2400f49a19d98efb19f8c3f1a27fb0b97131a.svg","flags/4x3/kp.svg":"flags/4x3/kp-a54f7201982b29530381b71a5e2a11c1153860f22c04c0a2d91bb0d20fedf78e.svg","flags/1x1/kp.svg":"flags/1x1/kp-758eccd89ef3707808fb68d931f086e49333904f4cc67c88468f3c96fb43b7b6.svg","flags/4x3/kr.svg":"flags/4x3/kr-c0b9b2c854133410c0ad9cadbc10b1e0bacf0305519883126d55bfa3214f9d06.svg","flags/1x1/kr.svg":"flags/1x1/kr-7c0457ac5d284b28b742ea2e061a1aa2a35f63171e464b3a7eb501a48756ce7b.svg","flags/4x3/kw.svg":"flags/4x3/kw-81c3d5d25c7b840ef14783b51d18c6b7cfc61f94932c664bbc9e5879fef020eb.svg","flags/1x1/kw.svg":"flags/1x1/kw-66670211a67a4e61d4652a19d821dc5195f01a28a3a9b28b7e4c6048cd86b19c.svg","flags/4x3/ky.svg":"flags/4x3/ky-0f4ab66d951ae33f800d680aaa5704804ba9c8844d4d80e5bee2e3fa0e100af3.svg","flags/1x1/ky.svg":"flags/1x1/ky-fb5f57bb58b74d23377bad9954a75ab88d1587af68546ce137a6ae7a88a7701e.svg","flags/4x3/kz.svg":"flags/4x3/kz-39edc952c598c71be2c9510944a8faf708d8e4b367b5ad78a688d1cd37f522eb.svg","flags/1x1/kz.svg":"flags/1x1/kz-924c04dc19267b049f35213af0e2b0c540933c06389433cb4aacd8dda33b286c.svg","flags/4x3/la.svg":"flags/4x3/la-e3a36a3bd0003442c3a21d3a192995fa6fb3b3c08a2daadc8f38f62736b5b1e3.svg","flags/1x1/la.svg":"flags/1x1/la-c9d4223a897e5e2938a4892bbc593d3828093b9439fc3f6de21520e4013ddbc5.svg","flags/4x3/lb.svg":"flags/4x3/lb-508c2a5a9b50d604895675b9f1c1e5914c394a7f468f5d823eb0476acaacbc7f.svg","flags/1x1/lb.svg":"flags/1x1/lb-10c9ba8ea7aa3189f16a7273c837982a887fc4ddfc9d514d8f5a660d72356f7f.svg","flags/4x3/lc.svg":"flags/4x3/lc-04ccd92fb1578654181febaea30ebd6b6620f56115730b2a2d673c712307bf5c.svg","flags/1x1/lc.svg":"flags/1x1/lc-4ffb53afb8bd296d526ac26fd8007afc74855e92833a893d3c934a5d12eb152a.svg","flags/4x3/li.svg":"flags/4x3/li-3058dc4aeaf2bd2da8cb910892137d732b56e5e9d342e565a4059de1a8e40e40.svg","flags/1x1/li.svg":"flags/1x1/li-0780a4f218b9ee466e33d14274b8a01575a86b3787b347e3269a3b301c220d5f.svg","flags/4x3/lk.svg":"flags/4x3/lk-a13d6ab1da51be3b1d2c5b80f4d866c923d42b017e197469e1bfc0dd021c4bfe.svg","flags/1x1/lk.svg":"flags/1x1/lk-99759363f0df6b868fd1398bf05666c680bafe1eeec8b859b64d450930213e02.svg","flags/4x3/lr.svg":"flags/4x3/lr-b06a1d70899826b305ce387fa31e1fa0bdb3bcb17c1392f15f995ce1dba723cf.svg","flags/1x1/lr.svg":"flags/1x1/lr-820a9d023e5b1e68ed640bfaba8f84ad4379c42a6c5c982cb76b0390dd2bcbdd.svg","flags/4x3/ls.svg":"flags/4x3/ls-d02bcefe7c298c153665f35c33eedb08e2e2b345350e4bf1714a87abf86b2d0e.svg","flags/1x1/ls.svg":"flags/1x1/ls-85c731c313a46db12bdb27fe229e9f7d052b447c624663b73ffa1dbab97f03fb.svg","flags/4x3/lt.svg":"flags/4x3/lt-c08eb18a15d2003cb544432b11c5081d3d5741370669b4df306d1c6bce14cb51.svg","flags/1x1/lt.svg":"flags/1x1/lt-c1bd7e3d289ac9b0df06d47237780eaf4d30f01281ed50a7df9a22bc3a2489c5.svg","flags/4x3/lu.svg":"flags/4x3/lu-99e7b6adb3a9e0f867b17eb3b1f0f33db92fd27cfd7b651f62453f359bace22f.svg","flags/1x1/lu.svg":"flags/1x1/lu-ab544445f16afa450549288ac86c2cc9a458a9d7747b3a89d5ecef7db9c83ce7.svg","flags/4x3/lv.svg":"flags/4x3/lv-f8844d50b89f0369f73d580d3676553e7e55dd8ab2460e592a29a530d9bed886.svg","flags/1x1/lv.svg":"flags/1x1/lv-baeced49dd4249e36a25b0f23a5c601a69e9dee3137627cd4450194b85a99dd4.svg","flags/4x3/ly.svg":"flags/4x3/ly-03209121483967f9d74849fb9261de23e9ff2e02c4e40b29f1cda0631b8a5fae.svg","flags/1x1/ly.svg":"flags/1x1/ly-1e6e070aaa4bfc97a5a446a39bf746ab3c4c81d9f62c975cab164e16de3a3ffe.svg","flags/4x3/ma.svg":"flags/4x3/ma-9a25cc7c2868fa45b251dd1b99a0be3b583df69732146142020fe9c6c0c95b63.svg","flags/1x1/ma.svg":"flags/1x1/ma-4f18b9c355b8b8bf0db69badb235a183dbd558deb6439bf03b4f18e56837a7f3.svg","flags/4x3/mc.svg":"flags/4x3/mc-b0c50599ea2a550680a6a867579930e0b47d3e05193a7294a26b7849a7ad35e2.svg","flags/1x1/mc.svg":"flags/1x1/mc-8f1fe6210338399d8791d91f39234b1a09acf2aa5e0387696048dc7068534a28.svg","flags/4x3/md.svg":"flags/4x3/md-8849eef7bdf916e962f7bb31af87c8d47aef33f9f4a2017b2ce55c4166e79643.svg","flags/1x1/md.svg":"flags/1x1/md-43f1bb4157545abe6e79215459efb548d913bbe7922078cd40cb722a4e19d9b4.svg","flags/4x3/me.svg":"flags/4x3/me-983d452d43cfb8d628bfc5c0cf4991c2ba3cf0e39e70aa5353cfd4e9ec3da62d.svg","flags/1x1/me.svg":"flags/1x1/me-104d6a96038ef06d3d8b89c9221996f3649b5b821139b11b2e07695b0f6fda2f.svg","flags/4x3/mf.svg":"flags/4x3/mf-31fb851bfcc2340d2fa43e86a099cc7becfc8e7f996a4d2ca56bd050e6537086.svg","flags/1x1/mf.svg":"flags/1x1/mf-fe20ce9bf911631d6e79edf21c8cff0716f2dc1ffded39515735444d9a66fa55.svg","flags/4x3/mg.svg":"flags/4x3/mg-5effe963e29f804a26f95dbbc9519add454a0fd9eb918ddfeb55e1e99a1a2701.svg","flags/1x1/mg.svg":"flags/1x1/mg-9e546cfb78810d9b25c814a84aadd6907880b8e0cdd2e4e30738b519e7c1ac91.svg","flags/4x3/mh.svg":"flags/4x3/mh-d8cfd123007dbb99aa700c335957926a6d5e877ab49680c79629a32716d7a782.svg","flags/1x1/mh.svg":"flags/1x1/mh-3fe03d4d063a4729fc8b68fd5e9d7d2eef6e65c4e82954c83f76b138cea2eb45.svg","flags/4x3/mk.svg":"flags/4x3/mk-6e8071d15f2ff125d30bf89d000dcb47db9545cf9b7ff04f1474650ec2f4d25c.svg","flags/1x1/mk.svg":"flags/1x1/mk-fdc9212f9f311cbface56b6587468a2e845111b697edc11b7edda9fcf100c1d5.svg","flags/4x3/ml.svg":"flags/4x3/ml-a730102e0c6f6362de9c10ef8da6cf7b123465d01a297e7a89808b01fa4771cd.svg","flags/1x1/ml.svg":"flags/1x1/ml-a661355da206b0cb7ac4c84b6cdf7e411fbca8fcb271ae999fa60d5c67578192.svg","flags/4x3/mm.svg":"flags/4x3/mm-6d0d207d662477110f2b863488088818d8400386358dcbc669a2d8c54d1bae16.svg","flags/1x1/mm.svg":"flags/1x1/mm-de7d46b6543343af61ba997045cb41a707bd0db1e7a5879971ca8fddcbdf9e99.svg","flags/4x3/mn.svg":"flags/4x3/mn-656eb51e88bfce82401e4080eb791ddf16d571cbba102cdd4316c5de4711ac65.svg","flags/1x1/mn.svg":"flags/1x1/mn-ad22cb2c195a7d8ca8e4174db011d5f58238ee25039b5b2da2649d8ca8b00123.svg","flags/4x3/mo.svg":"flags/4x3/mo-37a1088aa687af13951bc93886e3e51cb246eccfde1b56528f189327ea291792.svg","flags/1x1/mo.svg":"flags/1x1/mo-b463a1c37b69131d662e3fb2ae937583458824a09bcf68fc7ed2d7fd729138d1.svg","flags/4x3/mp.svg":"flags/4x3/mp-ecd12cadc358fdf293e856c0a3ffc09409123cabd3c7201225b2d21b59551e14.svg","flags/1x1/mp.svg":"flags/1x1/mp-d1f4ba10c1409e713253f1fbb107eeccbd4ec1a8f9036663f1ac1991aee53835.svg","flags/4x3/mq.svg":"flags/4x3/mq-b4e1b08a93c1364c79e6d61f95b16fca5b884da6e77835bc0e0adfff8ecc2d7f.svg","flags/1x1/mq.svg":"flags/1x1/mq-19cb6f7cb7354c3fd40e987c93a2d76329d34b2ed3873c3f25fe56802f251ea8.svg","flags/4x3/mr.svg":"flags/4x3/mr-9f64af3ed5c6d8d1f68b5cb09fd1aa9d28c3c95107e063f64a0ef95f0cb9429a.svg","flags/1x1/mr.svg":"flags/1x1/mr-0e79b7bcc669bb871d94021db2b78b162b9867c7eaf934d8f7a3025fd5903576.svg","flags/4x3/ms.svg":"flags/4x3/ms-32620dd70353777b2ee62951556976f398cd38ae359b5a8c97311a1dc61eb8bc.svg","flags/1x1/ms.svg":"flags/1x1/ms-4104d4f36cb5cf1c6de78e52e90bc3c5b8bfa262617b16a737673feb8c30a00c.svg","flags/4x3/mt.svg":"flags/4x3/mt-0c9819aa69b34b84c1ee43620922737122eb38f107be9864a0690ac66ef8aa64.svg","flags/1x1/mt.svg":"flags/1x1/mt-3c3fe71f2a2bf0d961fd145ad7e48ca1e9d3a05cce514354714ba4568503d106.svg","flags/4x3/mu.svg":"flags/4x3/mu-c78c23f1499756b9db762ae434ca354d1481447fa94c66bc10aca9443b399059.svg","flags/1x1/mu.svg":"flags/1x1/mu-91ebc79d0fa306127ea8b7a33f77d5b28f35c516ea91ff0468c7344dc838db69.svg","flags/4x3/mv.svg":"flags/4x3/mv-a17c947e17adae6aacef01a3e131c4150aa094911b53fbaead41783683e008eb.svg","flags/1x1/mv.svg":"flags/1x1/mv-d138e94d9d2ed093ef1425c1164493b780202f9a7f7937241a7b081b79ff8b01.svg","flags/4x3/mw.svg":"flags/4x3/mw-21f116afdf71df80e3c59084c6ba640814fa5389430328ff55c9403b5c239632.svg","flags/1x1/mw.svg":"flags/1x1/mw-5c2228d3f1cf1f9cf8cb158e813202981828c11e8caf117836fc57fa6bc1c788.svg","flags/4x3/mx.svg":"flags/4x3/mx-a235f9b16921590b7e78caa6f76339361356946eaf0046badd10732b4647c0b6.svg","flags/1x1/mx.svg":"flags/1x1/mx-cdab01ebcdccc020ca16e1355ef1fd18ca0043b501f399ca8edc48adfa8c7292.svg","flags/4x3/my.svg":"flags/4x3/my-0ed63574cf5f20c0663ab8cd1f700e150fb641fd0b93602ba013abbfaae5ee59.svg","flags/1x1/my.svg":"flags/1x1/my-5e8d31ef06ffc8af33a5616d760592ecd022c52afc8ba33c721f1e4989da0628.svg","flags/4x3/mz.svg":"flags/4x3/mz-752e2293917b1d2ece3f097104caeadf6a679054a779e9d3be8e49dc324bb88a.svg","flags/1x1/mz.svg":"flags/1x1/mz-300cba975ad43c962ceca0d266ded1fe3d21d6b4d701d657fb42b27268ea2964.svg","flags/4x3/na.svg":"flags/4x3/na-a0655a2e70751278e6a60d31e818f672864a6e68e8b3d3361b2fbb70fa9bfef8.svg","flags/1x1/na.svg":"flags/1x1/na-1ce089a189db5be15eb05df8155f9bd017b61fc1a497e5b3021ff2ca664e122d.svg","flags/4x3/nc.svg":"flags/4x3/nc-0c7171d91c44414ed69808611db588f1283ee7e34ea8a74a9a5101ba4b1cb305.svg","flags/1x1/nc.svg":"flags/1x1/nc-d3a1629f06dc3200af7669f2d895fce1908d2c1ca02d71e530bdfa6646a9516c.svg","flags/4x3/ne.svg":"flags/4x3/ne-2b61d30a6cb4554535538e3b753926853e8c629a494a347286b9731c803548e4.svg","flags/1x1/ne.svg":"flags/1x1/ne-9c5f798ccd7d3dd3771ae628b4a39dfb2a4578fefd2e006f3ce89c3e494d0cb1.svg","flags/4x3/nf.svg":"flags/4x3/nf-4e615baa83a8b4db3e39fe1d251ab913943d64e0cd320f251d619ab54e7512d3.svg","flags/1x1/nf.svg":"flags/1x1/nf-45403247c90050484813acf23c50f543779528e346317274373c3c24fd830103.svg","flags/4x3/ng.svg":"flags/4x3/ng-d52fd188be973f31dd34e5a0b3fed0de68fe736c8a41c6028d9c248c038c8641.svg","flags/1x1/ng.svg":"flags/1x1/ng-f22edcc5867554d69ecbe15add0fbbb1389631f3ced07a4f820065c7770c65f5.svg","flags/4x3/ni.svg":"flags/4x3/ni-2fbb883e46fbe3b2ecfed9dac004ceb546f25c77a84a5966eea224674aebc610.svg","flags/1x1/ni.svg":"flags/1x1/ni-214aed148b615c4846f842b47f99cf178ac62a96cf18c5dd6b23467184b56680.svg","flags/4x3/nl.svg":"flags/4x3/nl-4f0ecea529dd4c0099dd41a7801fa5ac44aa04cd872ca31e11efd58b5a813774.svg","flags/1x1/nl.svg":"flags/1x1/nl-9c8f60e638879d642487818975e58c61cd3102f0e68c360708243c076436ff68.svg","flags/4x3/no.svg":"flags/4x3/no-270f7ee9d1d2efa6abf16f693faba8586adae842d79d8aad9e3f37e96c27cbce.svg","flags/1x1/no.svg":"flags/1x1/no-7d377325e8c5ec4de0376e9f4c13463f183af637e6c443716f22020c7a313979.svg","flags/4x3/np.svg":"flags/4x3/np-69637ddb3a173c4522a71598278aa32462e1762e34dd99c9dc99a515433a6cf8.svg","flags/1x1/np.svg":"flags/1x1/np-44ead118cce3a1fcbb720cc8d6eab6ecb6b62292315f61ae5963a40262ee11d2.svg","flags/4x3/nr.svg":"flags/4x3/nr-0bd3c0ba7bbac4bd5985b838096eeebd67711d39065619ef092fa4bb55b22a6d.svg","flags/1x1/nr.svg":"flags/1x1/nr-63b9c44e5dd66a59895f52707dc24db5bd1eab6e535298d24e414c0f2dafcb3c.svg","flags/4x3/nu.svg":"flags/4x3/nu-259989e1eea0cbf6b41a33176a4c9c1eaa2e7ae6571ad80a324c6309bd5aa5fc.svg","flags/1x1/nu.svg":"flags/1x1/nu-1cb535708f64ed8b386a245e571e677e935009af92f2b214760a2832c1ee1b53.svg","flags/4x3/nz.svg":"flags/4x3/nz-90ceca2a683fbec395a91b77b0880cea99c3b2cbdb24caa5474925cbdcc3675e.svg","flags/1x1/nz.svg":"flags/1x1/nz-b0d78f165a72edd46599222a2ea5f6a91a8252975cb03e33c4ca08e389859aac.svg","flags/4x3/om.svg":"flags/4x3/om-aadcca7bc7ad318400097b84849dd64c4744306cd9b4f152fba34f2e84116965.svg","flags/1x1/om.svg":"flags/1x1/om-705e2bd2b2fc7d13c152aa06bfb9e6ee4ad8b299f8c06ca16adad0b18b2b18ed.svg","flags/4x3/pa.svg":"flags/4x3/pa-027e679bd65dcaa2c53145a14669c1e674a467a889ef702cbe2a260f7ca8ad38.svg","flags/1x1/pa.svg":"flags/1x1/pa-edeb4faeadaa286de7fdc667e25d38ad0cdbccaec5023182fed6a3c74e8b09eb.svg","flags/4x3/pe.svg":"flags/4x3/pe-7ec59842737c90d6ff543f1831fd69b51e1e7ee1b068c3ac6259cbf2c214d611.svg","flags/1x1/pe.svg":"flags/1x1/pe-97d1b8ed1d4ed5e5f0348a731ca4a3a4b9abc7d440447dc87a521f229f375ed3.svg","flags/4x3/pf.svg":"flags/4x3/pf-27955c73c5be4043c5b7ddf64c8f46d11c6648e3b1fc0efe028b8afea21a40e1.svg","flags/1x1/pf.svg":"flags/1x1/pf-83e3e1d36fba45e015c62f938e6d182029edc05ebfdc50bcb33860f36f96d73a.svg","flags/4x3/pg.svg":"flags/4x3/pg-c2fdd2551f9044c461eccfae2d7ba0a347a99143f6002b71a429942af0217897.svg","flags/1x1/pg.svg":"flags/1x1/pg-cf60257fa85f9270b1e9980e703435186110167f76c153bc460c10ee8b2d4b09.svg","flags/4x3/ph.svg":"flags/4x3/ph-bf3394850a6cec6a535420eabce263e7f8193413e4af1fb317c76da025388c1b.svg","flags/1x1/ph.svg":"flags/1x1/ph-006c3218effe4269252cb9638de82ea339eb2894951705c630533ceffa842169.svg","flags/4x3/pk.svg":"flags/4x3/pk-b64f6a32e5bb598f57cfe49c4899c2021f2d153653f3d92101e6e11b2158e500.svg","flags/1x1/pk.svg":"flags/1x1/pk-d2d58def913c9081c5eeeda5f0b6895068ec13c955694e359531e23422145e60.svg","flags/4x3/pl.svg":"flags/4x3/pl-f55a710991a94c2e6c2f9f1a7a4a36ebb84b24b7c9d9df4e1ffe86d61321fa6f.svg","flags/1x1/pl.svg":"flags/1x1/pl-fafb539259385f2b99df910cff085710a9b4d9706b74e4e0f8a6ef627615c4e7.svg","flags/4x3/pm.svg":"flags/4x3/pm-8f6338d2ae3e0e42adc9754720ca21ad4979095cf6d7467a8db5a5a1c3e0b2a5.svg","flags/1x1/pm.svg":"flags/1x1/pm-63029c6198dc42c404ec39807a99528b1d198eeeea6f9a1e309548242480140b.svg","flags/4x3/pn.svg":"flags/4x3/pn-4006c11ca83011c0dd60a13ac30b27da0578b9f1368bd8c6de5aab423f6662d8.svg","flags/1x1/pn.svg":"flags/1x1/pn-6c433f7f9cb79c6d5ed7bbeade8a495e3b26ca2604f4fd3995096109684ac5dd.svg","flags/4x3/pr.svg":"flags/4x3/pr-6287e1515fa80e2d05133ed93f14ca03a1be6909a9ef6c736fd60f9c9fe73132.svg","flags/1x1/pr.svg":"flags/1x1/pr-526985b3a6d2d6de577ed0ed92d0b49ce854667e3ff630304813fd5af15527cd.svg","flags/4x3/ps.svg":"flags/4x3/ps-31f50e1fcb44b9aa6e9ce4473c3085f744e70ea0fa1fd8d85787f4e7b0c4a69b.svg","flags/1x1/ps.svg":"flags/1x1/ps-c43918bc71bef71b24dd46e8cacc53e0df53e02dcce6199d06d11a4637f08a04.svg","flags/4x3/pt.svg":"flags/4x3/pt-9aab20caed714ee47fc408f017037aea94a649b3ba4d87e2da37870ee31e4f92.svg","flags/1x1/pt.svg":"flags/1x1/pt-a309869e5018c9690a65ebdf8a2d69d61f82772068a7920f9680ed0581ae5966.svg","flags/4x3/pw.svg":"flags/4x3/pw-9262037d114d0f61571c74f9a5455809709b43e6565443ae2667981eecb5f12a.svg","flags/1x1/pw.svg":"flags/1x1/pw-a6f42019653ae26d43c6e9b7bef83fc98cff8ec5e8d0c50ad7cb0a17d5e565a6.svg","flags/4x3/py.svg":"flags/4x3/py-5bc9e9f0dee94ae3d9bd80ae6fb1aac297dc81a1c592d0a73bc3383bce73af74.svg","flags/1x1/py.svg":"flags/1x1/py-182eff300f4507fd9399fb6310d1cd3b45adadd7924ad2814003c7111ec5c0de.svg","flags/4x3/qa.svg":"flags/4x3/qa-32c93970f8e521850eddfaf2a89dfff987f0ae3b0b73a253c301b61cf547cf9e.svg","flags/1x1/qa.svg":"flags/1x1/qa-182e4d8ace2607d0c02d3c29d65eb084af71092357006bc41cd601981ec3b81c.svg","flags/4x3/re.svg":"flags/4x3/re-8b2ea1f2727c266a2b80cb12a9b7195f6b656f521552b67893b6761a07f9bc92.svg","flags/1x1/re.svg":"flags/1x1/re-07eb7d855022bc678b47b0ce5fd05da5044d6dde86ad3697d4ae55c68ff447c1.svg","flags/4x3/ro.svg":"flags/4x3/ro-4ab797571e1d9eb326486f75654a4590fd33f20444f85b77ba0997eb6138c21f.svg","flags/1x1/ro.svg":"flags/1x1/ro-ddfcbaec04d11bf7f95abebd1d3a42b2862b1af8fca9b02764a6ed0e409a1d75.svg","flags/4x3/rs.svg":"flags/4x3/rs-dd8a52473ea40e23b393b5f4a30d1edd91865aab167f0c1835ae84b15dcce585.svg","flags/1x1/rs.svg":"flags/1x1/rs-42bf40209c92e4e7169daf29fbcb7253b2804eee7a463051529327f38851f865.svg","flags/4x3/ru.svg":"flags/4x3/ru-13f4525a4caad6e31afa523d2bc4a0c1e6377c0bef1bfd872682130d3f199d1d.svg","flags/1x1/ru.svg":"flags/1x1/ru-b9792a963faf667447e0456dba5be80a3b37c197a4284d1539a3433721d9e2fe.svg","flags/4x3/rw.svg":"flags/4x3/rw-bc38bcd6e19d2941839b253af6e863b13338cde1174874f9674471026c15e422.svg","flags/1x1/rw.svg":"flags/1x1/rw-456698123775b83d2b0fa1b9fe073f9ccdba0b6bf39a703b8979dcce158eb32c.svg","flags/4x3/sa.svg":"flags/4x3/sa-2b2fd6abb48415d5407c576c24a24fbd80af5877ef06cf2d026452f6c67f5f4d.svg","flags/1x1/sa.svg":"flags/1x1/sa-d9ebc73e7957f86604164dd5054fb32601ad14d7dfd4bfe73da5bdd10bb2f8ae.svg","flags/4x3/sb.svg":"flags/4x3/sb-37761927039d0a37ba0995c59fd31bbe36c8a0ca161e5b72b8131e3659f8dddf.svg","flags/1x1/sb.svg":"flags/1x1/sb-bedbf8464cd82f391bfe6178c63055b650d0cf3aee60c37fa79a586f95783b79.svg","flags/4x3/sc.svg":"flags/4x3/sc-f6a2f8f37be93f07600b491b52cb58d80d74b92d8ace0af313f4ce081b0d1345.svg","flags/1x1/sc.svg":"flags/1x1/sc-5dcd01b98c34460c9624280fb5047811fbae7d976620cd0a70ad4263a9085b60.svg","flags/4x3/sd.svg":"flags/4x3/sd-cc9cf97e8a37622b9e1bad28811d46c4471595afa448dc055e0e3aae7687fe4b.svg","flags/1x1/sd.svg":"flags/1x1/sd-1f5d13f9780085acbaad13d959b1918c796ba7b0450954b15d145e87cebe045c.svg","flags/4x3/se.svg":"flags/4x3/se-84b06bcd5bd90ea8dd6d1c3c8d2799a843c47b0256ce098aef75414964618286.svg","flags/1x1/se.svg":"flags/1x1/se-39f128686652cf914f8601110fcc9ac879bca204407013b93aff4ca4fb2ed9bc.svg","flags/4x3/sg.svg":"flags/4x3/sg-a82acd90077e76318ddb0be96999d9695b9a9f4627e8a0f341d3987a62747dcc.svg","flags/1x1/sg.svg":"flags/1x1/sg-c22e093634568aae249bf35f9ddcaa6796b5f27d76c39ff5336abf7f1b8a47d4.svg","flags/4x3/sh.svg":"flags/4x3/sh-57470d9a75955f0fac605a94e853bab524c7461a4c025e809fb09db762ebe46f.svg","flags/1x1/sh.svg":"flags/1x1/sh-8d06a0fff61e51eb65357d138e00736545835b8649aa2694152f4cdc9f941c16.svg","flags/4x3/si.svg":"flags/4x3/si-289d6417f154323e7922df09ffc0f49ded31548c7ee8020c39cb85724ffbcea8.svg","flags/1x1/si.svg":"flags/1x1/si-ca40a5f4f38119d6f52ffd3ddb36af95951a2aa1fadcd897f5bc1641bb2e0051.svg","flags/4x3/sj.svg":"flags/4x3/sj-67d4cdd268d0c0cd93fc561b506cb5646cb508385c93ed350d11f94aa1c83833.svg","flags/1x1/sj.svg":"flags/1x1/sj-f7c489607033138039612d6abe7f4b0b4b6dada5cac75d78204f404a0d292b1c.svg","flags/4x3/sk.svg":"flags/4x3/sk-a0bdbb7f5d6998ffe9fcbc80bbdf0e6cff3629740d2ce1b8d61025e0a8b322b5.svg","flags/1x1/sk.svg":"flags/1x1/sk-a82a813b2d81af9be1aa775f22b2c2457d11e870e072d7e23957a11d0878faed.svg","flags/4x3/sl.svg":"flags/4x3/sl-be265bed24cfe0b25778201f251e52e4e721e3d319795875913805d1aea84ebb.svg","flags/1x1/sl.svg":"flags/1x1/sl-cb8bccbaa21957f006ed4ae0144da81c999e93bd8014023b16b500fdcdc397d3.svg","flags/4x3/sm.svg":"flags/4x3/sm-d7818df3f8f2d5dbed27dc5a0a80b1e41cdcd6130eeff221da58f0321e925f27.svg","flags/1x1/sm.svg":"flags/1x1/sm-6f87660dcac925bbdb036c79a0e20d3b208215d327be4c4764ae1069d6464efd.svg","flags/4x3/sn.svg":"flags/4x3/sn-b131b17a374bcfbd00d442d282fa52f0e4e0e448cda1cdfaac25a95ff56443c0.svg","flags/1x1/sn.svg":"flags/1x1/sn-d180d3ce9846966dee6a3d9433ede7d24801dc4311636aabd470ec5b8765d772.svg","flags/4x3/so.svg":"flags/4x3/so-3b5b77b371299478144a94b60c99524fb6b99bfedb3dcc976ab70185e07f399e.svg","flags/1x1/so.svg":"flags/1x1/so-50aa941f2d2954285ef9e5ac260cdd264a73cf2e4b0c627677f04141fff2afd3.svg","flags/4x3/sr.svg":"flags/4x3/sr-94d0f0aefcbdea8d7ba35648eda5037e99bf4126723ce36416582ea43b08d3e2.svg","flags/1x1/sr.svg":"flags/1x1/sr-3944d683068d437471725d22fd71ccbe6a63ae307ff9775690417d3bf262cf82.svg","flags/4x3/ss.svg":"flags/4x3/ss-f391e5002cbce83f97f7d1a11c284fa2e36a7d6dc734757d733656801ab17d0a.svg","flags/1x1/ss.svg":"flags/1x1/ss-853bd9f713d2f6b1fe540a82e8bf4754912da21575b3fe756b8741767f318f7a.svg","flags/4x3/st.svg":"flags/4x3/st-b52bb48a2c0800f5cb4b07bdd93c3908f77bcb6800be883ebf943bbd3d99d42c.svg","flags/1x1/st.svg":"flags/1x1/st-d8b5b1c8b9fe947086a4d277d2ac5d6b9cff188dfd37bda66c8bf5e02c5facc8.svg","flags/4x3/sv.svg":"flags/4x3/sv-6d02d63c7f04c9388e98f892cc43d8daa2110fc84242758d5627fcd247bfd09b.svg","flags/1x1/sv.svg":"flags/1x1/sv-fb4c8d7eb98396a93c5b9c37195d70e809e0d71d8b8f9316e842121f95bb82ea.svg","flags/4x3/sx.svg":"flags/4x3/sx-fb6a7b1cbc5b29eeeb39a5aec64ef7aad432c37bbe848d29955a3786b9763224.svg","flags/1x1/sx.svg":"flags/1x1/sx-a37b124212f8530b921aef7657cfb35c2895a731c7a06f333faee4c93f32806a.svg","flags/4x3/sy.svg":"flags/4x3/sy-e35f8d88c864ed4f38edb2f9f96d5bd69f6df078b50515b8c5467bf6b1689f50.svg","flags/1x1/sy.svg":"flags/1x1/sy-5d537bd5b42b58f6e8a7e33fbe5942a16126abb639edf9cb58b88938c57ebaa9.svg","flags/4x3/sz.svg":"flags/4x3/sz-c65ae592e943217787848364bdb4c57335869f4626ce705adabdc2620669c1c6.svg","flags/1x1/sz.svg":"flags/1x1/sz-dd3d1c65bdf09317553f205e588e3dc7336acec1cb9315bfbe0f5bd8ca5bba3f.svg","flags/4x3/tc.svg":"flags/4x3/tc-594b6cc87040836c6d6777afb5833d565d3e5e75f404350a51443ec4588a1ccb.svg","flags/1x1/tc.svg":"flags/1x1/tc-34a37006252eea340488220585c31d047b57e3e7934c77180d930972aaceadc3.svg","flags/4x3/td.svg":"flags/4x3/td-b67a1978e3badb895ff640c80bb6c0e33eac354220c08cf3fc93d62bf5d685a3.svg","flags/1x1/td.svg":"flags/1x1/td-556b3a7991c17010cb7e1ff23c4edcc2dcdb8c406a128d407fd165ea8a19d311.svg","flags/4x3/tf.svg":"flags/4x3/tf-35cd83351521f3022a43e01f0c40f34663a66ac1e92045979f31d3fd65c16d02.svg","flags/1x1/tf.svg":"flags/1x1/tf-485e71f61ff577735dbc4ba1025515c22a83c48ee7f3a2ed49804766c35f6ea5.svg","flags/4x3/tg.svg":"flags/4x3/tg-24b25f4c2213fe35e5f5586d7ab23abf0c25ad2049708cd52ba72e1ec7b754ff.svg","flags/1x1/tg.svg":"flags/1x1/tg-05f3d98392a5ec3e4aecf8f629d3d03f05ac55abb7d9d84187d599acfe271374.svg","flags/4x3/th.svg":"flags/4x3/th-cc936bacd84dddd15454ef06bc64e357f83854af34692fc37363272d61f637d4.svg","flags/1x1/th.svg":"flags/1x1/th-de82cbd770db2be53a8e3d59d86e2b748a5d3f96eb8584f7b9364cefbd06a172.svg","flags/4x3/tj.svg":"flags/4x3/tj-b90bf3e2dd63265d55b67962b160df65f021c42b6ea304e2943c10b9e2a8749d.svg","flags/1x1/tj.svg":"flags/1x1/tj-5f6571e74b1f8720f9ecc2d3aa2098ca45d2e7ad6602b2a57c206384719b9f36.svg","flags/4x3/tk.svg":"flags/4x3/tk-602520b29b909c96baea17a38eb654d6c6fbc7088f46a0cb8d8fe34ff92e3cb8.svg","flags/1x1/tk.svg":"flags/1x1/tk-fe1dc8aaa0643a45a74ecec8aec09f0fe2207d104bb3c28c0b84405f1275aeba.svg","flags/4x3/tl.svg":"flags/4x3/tl-ebdb862aa5ae5de1a72242571deaa70bfb222f488a93b70e304f2075b474d54b.svg","flags/1x1/tl.svg":"flags/1x1/tl-485f02183bdb192ba3ce6e5f076e184112739f883ae0a8fde33c454377b848d6.svg","flags/4x3/tm.svg":"flags/4x3/tm-5ddb4128bf0becd7c60413d5418027f5f01ca4bc72561d54b94febfee7a5a24b.svg","flags/1x1/tm.svg":"flags/1x1/tm-3521ad569a4095aa8d4166d5d9094fccfdbb3ea411207ad685b6dd5814ef3392.svg","flags/4x3/tn.svg":"flags/4x3/tn-ca27eb50d88b11d20b5b09e2bbecb7753267222489920c526608e5d2acd22d79.svg","flags/1x1/tn.svg":"flags/1x1/tn-222c6cd4742c558f48ebcacb47ea334057642fffa3456a1c75e0fad9e728d09b.svg","flags/4x3/to.svg":"flags/4x3/to-c9c509fc24f591fbe52bbf732c44291384c787796e1fc9c703a973587c3f8ad1.svg","flags/1x1/to.svg":"flags/1x1/to-cf26dfb44b56b915b2f11896355cb778b938ed54423311d69d7cda9626887dda.svg","flags/4x3/tr.svg":"flags/4x3/tr-c40f697070cf8d8358785b9203d1c8f438976e3cd644a87d9ee16fa9960deaa4.svg","flags/1x1/tr.svg":"flags/1x1/tr-627dcf91a1e5153c045e33a3459b5d56002530fddd3fc53927f4d0fb7ea004a5.svg","flags/4x3/tt.svg":"flags/4x3/tt-04786ffedbde2c96a30ad1cbf4db000848f14bd700324651fc88364e5f3c2fd0.svg","flags/1x1/tt.svg":"flags/1x1/tt-6a3c73bfa7782366d95e673d847ef8f84c0475b364d359def1efd264297bac30.svg","flags/4x3/tv.svg":"flags/4x3/tv-20b56e7c0a2fbaa2a0b7b1bd87afc6368440f175fb3a0589de5e34e99d163fd7.svg","flags/1x1/tv.svg":"flags/1x1/tv-8bce1d7bde2e20dcc473ed3a33c66e4bedcf1acf2d2fff6d54353a480b8cafbc.svg","flags/4x3/tw.svg":"flags/4x3/tw-36070ac0a15ab1f4811478da62e7678756a9aa266b141ed0549aba1c0e04333a.svg","flags/1x1/tw.svg":"flags/1x1/tw-fd7a0db2f3808842ca99176f097356fe9e6f3c120d6aa9e8c4a9c2dd4c3943ba.svg","flags/4x3/tz.svg":"flags/4x3/tz-51ad7d69f059075df61b9226468af0d78642af4ad34a7540f64c5bea82e803d7.svg","flags/1x1/tz.svg":"flags/1x1/tz-0703f29a7ae02a9a1753cb1726dd2934d75ed3a12e8d63faa9fa866e1fe61440.svg","flags/4x3/ua.svg":"flags/4x3/ua-7f7db03c3b492aaacd11b0abac70d543a7c0ec5265a36d529bbb80a7c432d81a.svg","flags/1x1/ua.svg":"flags/1x1/ua-25192fa80f120edb1dd1c4757fd7b79ef38f5e1729238f4135003e6a1501bf28.svg","flags/4x3/ug.svg":"flags/4x3/ug-7635df53eafdf411be0809df835bfbcffd61badd6c4df3db0909c8b3188015a0.svg","flags/1x1/ug.svg":"flags/1x1/ug-537f34f64e723fbe7cb7902ea0e61303f1ada79214197efc39ebe2c52ce24186.svg","flags/4x3/um.svg":"flags/4x3/um-a0ae80e34bbf94677dd6052ea87cc0090aba747dab5440e5ca6e231f7f07c96d.svg","flags/1x1/um.svg":"flags/1x1/um-3f1bc09babe7fdcf32518bb49d1aac3a66d0204f955eacca291c58d4f4ef895a.svg","flags/4x3/us.svg":"flags/4x3/us-aefd8f7e57d11f7b0416d01d9c665ab3848b10af849f35a4d772d58d24d83329.svg","flags/1x1/us.svg":"flags/1x1/us-87af45be9346e8c820312976abe332ee11f8931e29fa361328d28660a711b1e2.svg","flags/4x3/uy.svg":"flags/4x3/uy-9f636c8283abf56cc930746fd427c1d1644dcf8736c537629df13f760da96ebc.svg","flags/1x1/uy.svg":"flags/1x1/uy-e216b762a93ec55bf9b4ae3d35b7febe0b192a12246fd66c45139ce77fb2095e.svg","flags/4x3/uz.svg":"flags/4x3/uz-697d596705372323beddccb3626d1ce405b36249315c6b006ff1529e24909ceb.svg","flags/1x1/uz.svg":"flags/1x1/uz-aa34cbe4f6f0e4b5d890975578d28cc9b1e88ebd503d3bdca693748eb29b3353.svg","flags/4x3/va.svg":"flags/4x3/va-d24d3c5bee108c396997c3d5b2bd2273433752d8c222eb531650e51551a4afd0.svg","flags/1x1/va.svg":"flags/1x1/va-01160c1bffda12f0b94554ba0c50162a88da807943617334bd4c57a030985e95.svg","flags/4x3/vc.svg":"flags/4x3/vc-ddf979bee2889414e5a05ac55f39a9c93f34e0aff0d35f007605049a2d8b5afb.svg","flags/1x1/vc.svg":"flags/1x1/vc-ac776e16dec19ff2e2d9238f541dae5d977282b451a83ab3d4122efed2392be9.svg","flags/4x3/ve.svg":"flags/4x3/ve-e23abd006cc75a8c4f9ec1cb122b46f9b52e26c5606532d2c868277d4ccd523b.svg","flags/1x1/ve.svg":"flags/1x1/ve-1480713f28719e0a83da2c5f1333407dbfa5bcc0de8c9ba718fcf47273ee95ef.svg","flags/4x3/vg.svg":"flags/4x3/vg-7f8f24a4d6995e4dd39e3d9098dad5e14649821fa12ffc200edf0a586285ee15.svg","flags/1x1/vg.svg":"flags/1x1/vg-b464b6a78e46c29df9e4bdadc2646208f11c59168706456075f970552a24efa8.svg","flags/4x3/vi.svg":"flags/4x3/vi-58311325a293b046044976d899f288ce0fbe9bfd705a23947a9b38d7991983d7.svg","flags/1x1/vi.svg":"flags/1x1/vi-1c132d2cff66cdbdb7b6acf504bb0cd9d7579595d80c3fa6604ff24ca7a0184d.svg","flags/4x3/vn.svg":"flags/4x3/vn-a918d3c9cdc368b1d2ff9614d58cbcd1d43b725889b0ba18f5d4e693071e389a.svg","flags/1x1/vn.svg":"flags/1x1/vn-895e428ae3d98c99dbb02088cf8ef040bfb031df6f16c3c8fc3678505d869791.svg","flags/4x3/vu.svg":"flags/4x3/vu-2c286c778a7bed03cb603ab24b68dc91868f4f054cf4f851bdd17aa16731571c.svg","flags/1x1/vu.svg":"flags/1x1/vu-51ef23121e2641ebeeac50d31c4e52b7d00d3ab1bc9fc0ad95ea86fd3631975a.svg","flags/4x3/wf.svg":"flags/4x3/wf-f7e9ac5edac196ac32d7bafa04b5c0d924b89e9d7e4f3535a6a26c6c1523639c.svg","flags/1x1/wf.svg":"flags/1x1/wf-95a920a79aa32d92f8a362321aae4230e17025ac04d976593f4423d0c37c1aee.svg","flags/4x3/ws.svg":"flags/4x3/ws-efc6505a802a3fa2018bc102fc2e11db8c738464c619381b6edc32d0a89341a3.svg","flags/1x1/ws.svg":"flags/1x1/ws-e3afb81c037c814620027bf61ac5e266683cab7ba5796ecf10b64c110cfcb932.svg","flags/4x3/ye.svg":"flags/4x3/ye-fd88856e70d66b01b4f0f608936a61cf3b1d9dad40a2932fc5da4d01f72a447b.svg","flags/1x1/ye.svg":"flags/1x1/ye-0c0e32330871e6d83af54affb7dadbbe736f9799068508211fbae54db9bbdcc6.svg","flags/4x3/yt.svg":"flags/4x3/yt-2eef17b543424082d9f9b42a67e84c20b52e7f7eae8c4326d60711158da51d5b.svg","flags/1x1/yt.svg":"flags/1x1/yt-911da8075337fd8f75ecc8a338c294cb771c6b9a08576f96c9de1437888cd2a7.svg","flags/4x3/za.svg":"flags/4x3/za-45991a2aee307198510e56bf92523070aac4241cafe6c3ddb8f89b20a61d6371.svg","flags/1x1/za.svg":"flags/1x1/za-bc09a89b29311ea7e582ef60bf4e18aff7c29de6fbefe309463ca765723a0ce8.svg","flags/4x3/zm.svg":"flags/4x3/zm-07c0f30d86e66d0cad9d66cd9c9384d9cce1844f159d245deff6717101fe49c2.svg","flags/1x1/zm.svg":"flags/1x1/zm-fc5bce3834c71fe36617ea5f57f0bd1dcf3880a7c6aa515dcf92ae067f796241.svg","flags/4x3/zw.svg":"flags/4x3/zw-5217c74f14d9fdda244b69c5982bbabee052ac0f1cc0704926e8b1e621e50f9a.svg","flags/1x1/zw.svg":"flags/1x1/zw-a33b191c631709b9e1d85e06f5b15535fb544d4668c8bef865ede2a0b6a88ed9.svg","flags/4x3/es-ct.svg":"flags/4x3/es-ct-bcbb454a50c9a647efd43dcf041445f15e8dd70654bde530bf62401d4fb7738d.svg","flags/1x1/es-ct.svg":"flags/1x1/es-ct-7f13eb2b2f5c11dccd7043286bed7540d4dad4b1a8367b0aca1b8405a351b2ef.svg","flags/4x3/eu.svg":"flags/4x3/eu-5f129db64306353251b78f998d531d2f1019404cfa890ae63ed70dc316c7f240.svg","flags/1x1/eu.svg":"flags/1x1/eu-ec59ac8daf2a63ea8e299ad63a208445d68a96affe6a10a7328acb6799d44127.svg","flags/4x3/gb-eng.svg":"flags/4x3/gb-eng-1895f4e35ae299f5d869da2462ffcf98df4b08dcddc531c8f175e49720001a14.svg","flags/1x1/gb-eng.svg":"flags/1x1/gb-eng-d11afb87f40f35acda435a886ea044bd5e0b6f363ba0c7319f1d0181551fecf3.svg","flags/4x3/gb-nir.svg":"flags/4x3/gb-nir-b280f09c787f495c1074376cd67537b40216f672917e7d204bb12b8e7c72afaf.svg","flags/1x1/gb-nir.svg":"flags/1x1/gb-nir-2e516e72e0e8e244ef430e6608322f8c4fb276807ab033279b2a6570dd68fd41.svg","flags/4x3/gb-sct.svg":"flags/4x3/gb-sct-1b9e407802ae901cf8da740c382ec2b19821837d76271a73346e0c63c2244506.svg","flags/1x1/gb-sct.svg":"flags/1x1/gb-sct-d01e8a06a340e30ce52e8a3aba7ca6207afb96fdb238a815cc6cb92df8fa5df3.svg","flags/4x3/gb-wls.svg":"flags/4x3/gb-wls-5232b3e376a19866cddec8225cba242783b2a48063811957f1ce5a2c347c5bc9.svg","flags/1x1/gb-wls.svg":"flags/1x1/gb-wls-126615bc3597fda1ca4ee931ef24f6c2cf2547998c06db9c1ded69fe66c479e9.svg","flags/4x3/un.svg":"flags/4x3/un-31dece22ae18c3e01e86648ef3ef45f2f5b3d9d28a1e2bbbcdb1d87c37af55af.svg","flags/1x1/un.svg":"flags/1x1/un-455b5f3173ca9ac64f2135fac4ead7217d7fbe07551d0d2cc60216f83208f798.svg","leaflet/dist/images/layers.png":"leaflet/dist/images/layers-1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6.png","leaflet/dist/images/layers-2x.png":"leaflet/dist/images/layers-2x-066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf.png","leaflet/dist/images/marker-icon.png":"leaflet/dist/images/marker-icon-574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437.png","markers-soft.png":"markers-soft-e78784e4ed70aaffddd73c315fab590233cc4e7b72388d7dd47a14796fc7c739.png","markers-shadow.png":"markers-shadow-8703a2262710f5e3d29e65d2acdf90d6512e159e119d27b8234731d8a6208a20.png","markers-soft@2x.png":"markers-soft@2x-c1e77253a8bfbe30cec24885d7046f443b76ebb66f4c961f77083b03f4a5cbaf.png","markers-shadow@2x.png":"markers-shadow@2x-b21a536be27313fb504f69f5899ff0b1245b276571769ac08d6c32c35676e47a.png","tinymce/langs/fr_FR.js":"tinymce/langs/fr_FR-6aba16704f73dd83662a78ca3360f3d98b1f1ed80a67560313554446915611a5.js","markers-matte.png":"markers-matte-497826545a90e09a240504d14530eba45823b19fd44175e09e27c47cd822ddb9.png","markers-matte@2x.png":"markers-matte@2x-948fc8c4426f04f60964ed20394247f45b0b60e575d02398b9b6810e7a29a823.png","markers-plain.png":"markers-plain-cf233423aa44e75ac0031e77b8ba571cd3331010517e1197e63fb7b06856c1ff.png","leaflet/dist/images/marker-icon-2x.png":"leaflet/dist/images/marker-icon-2x-00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528.png","leaflet/dist/images/marker-shadow.png":"leaflet/dist/images/marker-shadow-264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da.png","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-ae65a7ae22c4c23115948fdeb5c05c9137dbd13ca2d426b3c4c3c4183451e410.png","jquery-ui/ui-icons_444444_256x240.png":"jquery-ui/ui-icons_444444_256x240-31d988765b4e6f56553c29588c500381dc3e6f0aa2980c8212202e5644aefd5d.png","jquery-ui/ui-icons_555555_256x240.png":"jquery-ui/ui-icons_555555_256x240-32175261daee76c82bb0edf0eea16a56421866fbc31e94f3c1d570aa114502f5.png","jquery-ui/ui-icons_777620_256x240.png":"jquery-ui/ui-icons_777620_256x240-0b020fc6e696d88d296e7bb1f61f1eb2ad827848e2c7382a4c3e0999e702dd9b.png","jquery-ui/ui-icons_777777_256x240.png":"jquery-ui/ui-icons_777777_256x240-faf32007ae120c302213557626e660dd10e711c5dd4f1113d35f26dc05b78d2f.png","jquery-ui/ui-icons_cc0000_256x240.png":"jquery-ui/ui-icons_cc0000_256x240-40985a64b4d5dd213fba27fcd862a1bd1b337a97674f6ff0b9ec20abcee4bc69.png","jquery-ui/ui-icons_ffffff_256x240.png":"jquery-ui/ui-icons_ffffff_256x240-350df1b7131037de20e83c5c0f3a41a770d2ac48b5762ea772b3f4a8a7b9d47a.png","tinymce/preinit.js":"tinymce/preinit-84328a53e798df12f891eb49871773fd9f925439c8630e9e22423a82ef9e6f89.js","tinymce/rails.js":"tinymce/rails-bf7fd5c952f25481010758dde6a2681498074f9509230f601b317356a6a54fca.js","tinymce/tinymce.js":"tinymce/tinymce-56cf2f2424cb80d80288b9207d6d01dffdcf3b6849e1414c1f7df44b8c95db86.js","tinymce/jquery.tinymce.js":"tinymce/jquery.tinymce-05402ca7d9e16d0a48a6259f8c005507d800186c5187f8cab94e79803c657535.js","tinymce/langs/readme.md":"tinymce/langs/readme-5a8b6a04d57b5c88e3fb7f2a870b8e2d3a48ec03ce6474206c41df78c155b2de.md","tinymce/license.txt":"tinymce/license-47a9dcd2574891a5a465112fd9dfcebcc7e61844edec27fa936a64642008fe66.txt","tinymce/plugins/advlist/plugin.js":"tinymce/plugins/advlist/plugin-b7c8cf80403d2ccef198eece952f4426ca2dbc41bd3797796a75f984a9382ade.js","tinymce/plugins/anchor/plugin.js":"tinymce/plugins/anchor/plugin-0e1e67988d427784f73513db28a206eb47a3ef546aa87882a80975a16111a33a.js","tinymce/plugins/autolink/plugin.js":"tinymce/plugins/autolink/plugin-2e8a38a913070f4b3fb0252a5b5625057b8ee9f6fc529d65d3003328d112d5d8.js","tinymce/plugins/autoresize/plugin.js":"tinymce/plugins/autoresize/plugin-2adac0d857ae16f93c7ca4f92e36e76f4bbf885cb9a72755af78889627ed8738.js","tinymce/plugins/autosave/plugin.js":"tinymce/plugins/autosave/plugin-a6960dd7eb9a053b0ce876b2eb946f8bf8fc429de45466e73d17129213229674.js","tinymce/plugins/bbcode/plugin.js":"tinymce/plugins/bbcode/plugin-1a9fd62a2514ce8e15e8a3a99473674c1042c23adb359b35523931407910c7aa.js","tinymce/plugins/charmap/plugin.js":"tinymce/plugins/charmap/plugin-e68609a6c6f050af409dc34cba1eaf97b45dc4219500de60bb3ed63ea49279a0.js","tinymce/plugins/code/plugin.js":"tinymce/plugins/code/plugin-32c177297fd26a1ceaa79d4b0c10ff5c3b332141dce46b97931e3228daa9bf1a.js","tinymce/plugins/codesample/plugin.js":"tinymce/plugins/codesample/plugin-d495c33177247da2e3845e4d849182792be7b0347e8707dd133db053727f86e9.js","tinymce/plugins/colorpicker/plugin.js":"tinymce/plugins/colorpicker/plugin-3270f40522357ea68191288332b98cbbdafe950a758b5f1514ad8890ba68619f.js","tinymce/plugins/contextmenu/plugin.js":"tinymce/plugins/contextmenu/plugin-b528042e89738439d9d4b9d008a3a75284ef5233cd15aaa29c7e1ce6d48fb12e.js","tinymce/plugins/directionality/plugin.js":"tinymce/plugins/directionality/plugin-5004dc6b7d90139d4b1cf32d788845a48efc7055adb3aa25993219dd4df2fe5c.js","tinymce/plugins/emoticons/js/emojis.js":"tinymce/plugins/emoticons/js/emojis-c6f728975b5c86aca22f396025edefe6107b0dd4d95f5ef80daef569b545bce8.js","tinymce/plugins/emoticons/plugin.js":"tinymce/plugins/emoticons/plugin-f4db839825ea5c884c78a8c289494544ac0fd28a14506f0d3cbb7362a9e9db77.js","tinymce/plugins/fullpage/plugin.js":"tinymce/plugins/fullpage/plugin-7040866d45dd50402f2871efcfb289ec8ca80b8699f1461c721b0b20bca76051.js","tinymce/plugins/fullscreen/plugin.js":"tinymce/plugins/fullscreen/plugin-f548bdf0cbc2fd41c3c32938629a1b021e19680bac7869c274be5f3615eccfe7.js","tinymce/plugins/help/plugin.js":"tinymce/plugins/help/plugin-366b05965f3d6cfddaba02c6784e0f377497beda0f28cc8cd840510fd8b657f4.js","tinymce/plugins/hr/plugin.js":"tinymce/plugins/hr/plugin-0e5548067a2ab0ad967e296104249f6b5d24a16b80befcdd3888c17b1a0e5624.js","tinymce/plugins/image/plugin.js":"tinymce/plugins/image/plugin-53dce3c317e386c1989a5d82ec151d440f9ffc32a643dc9fba76ae2b036300c9.js","tinymce/plugins/imagetools/plugin.js":"tinymce/plugins/imagetools/plugin-49936c4208b2d6fbb340d11c56fa2a146d14c770e4cb39760a11099fea5c7aaa.js","tinymce/plugins/importcss/plugin.js":"tinymce/plugins/importcss/plugin-30cba659cc747bccf69602963b3c2b83e00c26e65f2b63e23eba5be5f8af5452.js","tinymce/plugins/insertdatetime/plugin.js":"tinymce/plugins/insertdatetime/plugin-8559e2bda84f040abc77afc6610c0b61567fe174dcf2079b5aff82513c5ebe96.js","tinymce/plugins/legacyoutput/plugin.js":"tinymce/plugins/legacyoutput/plugin-acfac6647afd7c0a7c720aea06b9a74a6580840858fe00327a311a6418d3dae3.js","tinymce/plugins/link/plugin.js":"tinymce/plugins/link/plugin-93a36e0f077d895707d9885a76c26e5b08e5acfab9f3d52cdd1ccc5d89404f1e.js","tinymce/plugins/lists/plugin.js":"tinymce/plugins/lists/plugin-354eba74c0107c7f347aaab0ac206e01b8e0503d00f28cc0cc55f6c04f901f9e.js","tinymce/plugins/media/plugin.js":"tinymce/plugins/media/plugin-ab1015dd22dff3d1edcc2d04b54f39b3f7ff7f7d783c0880b5edf6de58d78937.js","tinymce/plugins/nonbreaking/plugin.js":"tinymce/plugins/nonbreaking/plugin-6039d3b3f9c68a3b29a6bb476760fa62da1d941e38ef8cb91e61c4aaa9456f98.js","tinymce/plugins/noneditable/plugin.js":"tinymce/plugins/noneditable/plugin-3cb8e1ac660348b0453dca0e8549a9325dca0cf259adb96802f37e83fb8d17be.js","tinymce/plugins/pagebreak/plugin.js":"tinymce/plugins/pagebreak/plugin-9e005e9e9abb08da742141d002238561c30dcd15549168e17c690f2c7c7a9dd3.js","tinymce/plugins/paste/plugin.js":"tinymce/plugins/paste/plugin-437f540601d04f07cb4c2434fdf377be3ac9634b180a878c2f2987f3ad897afc.js","tinymce/plugins/preview/plugin.js":"tinymce/plugins/preview/plugin-36ce30c549b23aed9dd151603a23aafab512529d586067e34974877992c79eed.js","tinymce/plugins/print/plugin.js":"tinymce/plugins/print/plugin-4a91981252ff653a07dd12936abfb0b0c4191e33d85f5c5d5f7e8e73581b6a57.js","tinymce/plugins/quickbars/plugin.js":"tinymce/plugins/quickbars/plugin-54bba909c7a5b3f9086cec22e918e378945dfb855e4041a85c9e0fb00faaa510.js","tinymce/plugins/save/plugin.js":"tinymce/plugins/save/plugin-0fd05e2ed11aac190c5d2a0ac32aa675d0bea06b519301d89151aaaa7b124674.js","tinymce/plugins/searchreplace/plugin.js":"tinymce/plugins/searchreplace/plugin-4bb6490f6586b4c50a56757a69be8e6577544d5353881a02621e2200b54e8a18.js","tinymce/plugins/spellchecker/plugin.js":"tinymce/plugins/spellchecker/plugin-8fcd863cbf64e3cc62fe3fc1a4bfe417f8401b1d204d91d1c9da880c29a52162.js","tinymce/plugins/tabfocus/plugin.js":"tinymce/plugins/tabfocus/plugin-cbc31c55658d581cc1e0130e5bae26fb27f10e7f0c53879845d6295ffb27fefa.js","tinymce/plugins/table/plugin.js":"tinymce/plugins/table/plugin-b11c6cd37f6d5badf46a9d96e452118b81881beb07fe41d2c0a3f7b405902234.js","tinymce/plugins/template/plugin.js":"tinymce/plugins/template/plugin-62d74415b497183892c093351d57ee4fe36938be5b0a84360925501efede022a.js","tinymce/plugins/textcolor/plugin.js":"tinymce/plugins/textcolor/plugin-77c1248e72fe32cf181c36a070147484ee4560710d5f617a4670d65d11202207.js","tinymce/plugins/textpattern/plugin.js":"tinymce/plugins/textpattern/plugin-14c80d034b4d08368543a88cfdd7a71fe044d76a511e087752420957fe192e66.js","tinymce/plugins/toc/plugin.js":"tinymce/plugins/toc/plugin-e6c05b09e6066ce22300ca4942a530d621362f8a2d69d21d486bf5f57ce86c63.js","tinymce/plugins/visualblocks/plugin.js":"tinymce/plugins/visualblocks/plugin-dc48dde1907640cf2cc67ab99de28b69b7b7a04479c9a2d3284a21e190a2fc5b.js","tinymce/plugins/visualchars/plugin.js":"tinymce/plugins/visualchars/plugin-7a67008641a389395f71289303344cf2f9e699970d8ac27f8be769281c56a157.js","tinymce/plugins/wordcount/plugin.js":"tinymce/plugins/wordcount/plugin-adeca7c01633cf92382c63b9f99934fcc1f8f4034b84b8a653f800bc6deadf86.js","tinymce/skins/content/default/content.css":"tinymce/skins/content/default/content-59af8e2bdcb843082433e35a13e74452bb71675b4d09a1020fb82ec12f905178.css","tinymce/skins/content/default/content.min.css":"tinymce/skins/content/default/content.min-59af8e2bdcb843082433e35a13e74452bb71675b4d09a1020fb82ec12f905178.css","tinymce/skins/content/document/content.css":"tinymce/skins/content/document/content-1e26cccef0052522affb81bf2148310236b19cddf8132f0239d8c7566722e943.css","tinymce/skins/content/document/content.min.css":"tinymce/skins/content/document/content.min-1e26cccef0052522affb81bf2148310236b19cddf8132f0239d8c7566722e943.css","tinymce/skins/content/writer/content.css":"tinymce/skins/content/writer/content-eea5c153ee2a10ed0864d84fa1dffb95ea6def7e579978cd2dd3d8f0956c9656.css","tinymce/skins/content/writer/content.min.css":"tinymce/skins/content/writer/content.min-eea5c153ee2a10ed0864d84fa1dffb95ea6def7e579978cd2dd3d8f0956c9656.css","tinymce/skins/ui/oxide/content.css":"tinymce/skins/ui/oxide/content-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css","tinymce/skins/ui/oxide/content.inline.css":"tinymce/skins/ui/oxide/content.inline-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css","tinymce/skins/ui/oxide/content.inline.min.css":"tinymce/skins/ui/oxide/content.inline.min-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css","tinymce/skins/ui/oxide/content.min.css":"tinymce/skins/ui/oxide/content.min-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css","tinymce/skins/ui/oxide/content.mobile.css":"tinymce/skins/ui/oxide/content.mobile-230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346.css","tinymce/skins/ui/oxide/content.mobile.min.css":"tinymce/skins/ui/oxide/content.mobile.min-230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346.css","tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff":"tinymce/skins/ui/oxide/fonts/tinymce-mobile-e64bf156a432d63f5b34b4567b513dc0d351b49161c7f608fb82574bfdd9d213.woff","tinymce/skins/ui/oxide/skin.css":"tinymce/skins/ui/oxide/skin-19f5d58bf005d2ff7a6d60bb3ddfa1772a55a8e556f723a3b21340bcf1003f48.css","tinymce/skins/ui/oxide/skin.min.css":"tinymce/skins/ui/oxide/skin.min-19f5d58bf005d2ff7a6d60bb3ddfa1772a55a8e556f723a3b21340bcf1003f48.css","tinymce/skins/ui/oxide/skin.mobile.css":"tinymce/skins/ui/oxide/skin.mobile-22703cb423be432b125a19fa94a29a8122b722be4f7c1b303102ce16ed839e22.css","tinymce/skins/ui/oxide/skin.mobile.min.css":"tinymce/skins/ui/oxide/skin.mobile.min-22703cb423be432b125a19fa94a29a8122b722be4f7c1b303102ce16ed839e22.css","tinymce/skins/ui/oxide-dark/content.css":"tinymce/skins/ui/oxide-dark/content-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css","tinymce/skins/ui/oxide-dark/content.inline.css":"tinymce/skins/ui/oxide-dark/content.inline-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css","tinymce/skins/ui/oxide-dark/content.inline.min.css":"tinymce/skins/ui/oxide-dark/content.inline.min-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css","tinymce/skins/ui/oxide-dark/content.min.css":"tinymce/skins/ui/oxide-dark/content.min-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css","tinymce/skins/ui/oxide-dark/skin.css":"tinymce/skins/ui/oxide-dark/skin-5d441f8e6ccc16da2e10963a472fe7e4b593b36d470a913abff2c1592a37c768.css","tinymce/skins/ui/oxide-dark/skin.min.css":"tinymce/skins/ui/oxide-dark/skin.min-5d441f8e6ccc16da2e10963a472fe7e4b593b36d470a913abff2c1592a37c768.css","tinymce/themes/mobile/theme.js":"tinymce/themes/mobile/theme-3ebedb886fbcc21c3b79f250f398c0ff4a2d870dd7a737322aceef1f2479ccd2.js","tinymce/themes/silver/theme.js":"tinymce/themes/silver/theme-02294426af3edeff56daa3e5fd3ef013944295525b150b8114eaca9de6201af7.js"}}
\ No newline at end of file
+{"files":{"active_admin-877e761ceb08240deef11c0e8cf64c89f98cc542a77364f1402ff4afd6449509.css":{"logical_path":"active_admin.css","mtime":"2019-05-14T13:12:35+02:00","size":105676,"digest":"877e761ceb08240deef11c0e8cf64c89f98cc542a77364f1402ff4afd6449509","integrity":"sha256-h352HOsIJA3u8RwOjPZMifmMxUKnc2TxQC/0r9ZElQk="},"active_admin/nested_menu_arrow-15084d93c65c1964d7077700ea748bd2d70cfa2d4c19707c58a9c64e232dd442.gif":{"logical_path":"active_admin/nested_menu_arrow.gif","mtime":"2019-05-14T13:10:54+02:00","size":70,"digest":"15084d93c65c1964d7077700ea748bd2d70cfa2d4c19707c58a9c64e232dd442","integrity":"sha256-FQhNk8ZcGWTXB3cA6nSL0tcM+i1MGXB8WKnGTiMt1EI="},"active_admin/nested_menu_arrow_dark-7c43b8e0a5f8823875f49a093c9d7a6b374f885b6f9cc248ae9cd7e6e9b29034.gif":{"logical_path":"active_admin/nested_menu_arrow_dark.gif","mtime":"2019-05-14T13:10:54+02:00","size":70,"digest":"7c43b8e0a5f8823875f49a093c9d7a6b374f885b6f9cc248ae9cd7e6e9b29034","integrity":"sha256-fEO44KX4gjh19JoJPJ16azdPiFtvnMJIrpzX5umykDQ="},"active_admin/orderable-29374dbb55b0012d78a37c614d573bb3474f0779849b478a147d0f1845ca6617.png":{"logical_path":"active_admin/orderable.png","mtime":"2019-05-14T13:10:54+02:00","size":220,"digest":"29374dbb55b0012d78a37c614d573bb3474f0779849b478a147d0f1845ca6617","integrity":"sha256-KTdNu1WwAS14o3xhTVc7s0dPB3mEm0eKFH0PGEXKZhc="},"active_admin/print-cf99cbf27fb92065a9eacd28e6fad48fa72cadaf6e0918790e8d35b11d8f99f6.css":{"logical_path":"active_admin/print.css","mtime":"2019-05-14T13:10:54+02:00","size":7086,"digest":"cf99cbf27fb92065a9eacd28e6fad48fa72cadaf6e0918790e8d35b11d8f99f6","integrity":"sha256-z5nL8n+5IGWp6s0o5vrUj6csra9uCRh5Do01sR2PmfY="},"active_admin-71f5376a62a9260af4c6b4c0930c35cdf18e4e35221289beb36ba77fac8bb030.js":{"logical_path":"active_admin.js","mtime":"2019-05-21T22:19:54+02:00","size":961773,"digest":"71f5376a62a9260af4c6b4c0930c35cdf18e4e35221289beb36ba77fac8bb030","integrity":"sha256-cfU3amKpJgr0xrTAkww1zfGOTjUiEom+s2unf6yLsDA="},"tinymce-1103c4904fc1df026a84e5ce890ce02b9a9fda036966b0fb34ad900ccb83c712.js":{"logical_path":"tinymce.js","mtime":"2019-05-14T13:13:17+02:00","size":1043848,"digest":"1103c4904fc1df026a84e5ce890ce02b9a9fda036966b0fb34ad900ccb83c712","integrity":"sha256-EQPEkE/B3wJqhOXOiQzgK5qf2gNpZrD7NK2QDMuDxxI="},"modernizr-654222debe8018b12f1993ceddff30dc163a7d5008d79869c399d6d167321f97.js":{"logical_path":"modernizr.js","mtime":"2019-05-14T13:12:49+02:00","size":51365,"digest":"654222debe8018b12f1993ceddff30dc163a7d5008d79869c399d6d167321f97","integrity":"sha256-ZUIi3r6AGLEvGZPO3f8w3BY6fVAI15hpw5nW0WcyH5c="},"font-awesome/fa-brands-400-bd4e21d8e25a889e979ac2367770c36863443b8e0f99feeaee09a62625b9cb13.eot":{"logical_path":"font-awesome/fa-brands-400.eot","mtime":"2019-05-14T13:12:35+02:00","size":129916,"digest":"bd4e21d8e25a889e979ac2367770c36863443b8e0f99feeaee09a62625b9cb13","integrity":"sha256-vU4h2OJaiJ6XmsI2d3DDaGNEO44Pmf7q7gmmJiW5yxM="},"font-awesome/fa-regular-400-4aa44a07b71f47067872c8f177f31babc0c609af2b384511353c89b1ca804458.eot":{"logical_path":"font-awesome/fa-regular-400.eot","mtime":"2019-05-14T13:12:35+02:00","size":34388,"digest":"4aa44a07b71f47067872c8f177f31babc0c609af2b384511353c89b1ca804458","integrity":"sha256-SqRKB7cfRwZ4csjxd/Mbq8DGCa8rOEURNTyJscqARFg="},"font-awesome/fa-solid-900-e153efe317e731e59eb8d6d1a568a811b8f7dd5df3823c327103be8e4a0047e4.eot":{"logical_path":"font-awesome/fa-solid-900.eot","mtime":"2019-05-14T13:12:35+02:00","size":186728,"digest":"e153efe317e731e59eb8d6d1a568a811b8f7dd5df3823c327103be8e4a0047e4","integrity":"sha256-4VPv4xfnMeWeuNbRpWioEbj33V3zgjwycQO+jkoAR+Q="},"font-awesome/fa-brands-400-e281f2a25598bf8b40a77f3c5228b51900788224e91dade3f4a0f8c383505f43.svg":{"logical_path":"font-awesome/fa-brands-400.svg","mtime":"2019-05-14T13:12:35+02:00","size":694583,"digest":"e281f2a25598bf8b40a77f3c5228b51900788224e91dade3f4a0f8c383505f43","integrity":"sha256-4oHyolWYv4tAp388Uii1GQB4giTpHa3j9KD4w4NQX0M="},"font-awesome/fa-regular-400-934530d864b6f03fad8e87b66daf829d17f0e7afbd74baead32a6a4157d584c2.svg":{"logical_path":"font-awesome/fa-regular-400.svg","mtime":"2019-05-14T13:12:35+02:00","size":144451,"digest":"934530d864b6f03fad8e87b66daf829d17f0e7afbd74baead32a6a4157d584c2","integrity":"sha256-k0Uw2GS28D+tjoe2ba+CnRfw56+9dLrq0ypqQVfVhMI="},"font-awesome/fa-solid-900-d5b212510d72b66bdb7feb22c611456621c3dd1a2e88cc42983d7d4c9ab79563.svg":{"logical_path":"font-awesome/fa-solid-900.svg","mtime":"2019-05-14T13:12:35+02:00","size":816926,"digest":"d5b212510d72b66bdb7feb22c611456621c3dd1a2e88cc42983d7d4c9ab79563","integrity":"sha256-1bISUQ1ytmvbf+sixhFFZiHD3RouiMxCmD19TJq3lWM="},"font-awesome/fa-brands-400-70726f98e0d98f543d5fde05a3a74bb131c5c67f5fbffcf4d41b7f68bca2b56b.ttf":{"logical_path":"font-awesome/fa-brands-400.ttf","mtime":"2019-05-14T13:12:35+02:00","size":129612,"digest":"70726f98e0d98f543d5fde05a3a74bb131c5c67f5fbffcf4d41b7f68bca2b56b","integrity":"sha256-cHJvmODZj1Q9X94Fo6dLsTHFxn9fv/z01Bt/aLyitWs="},"font-awesome/fa-regular-400-112491dccca97bf50ec7adff8d430dcba6d0b71e0a0b20386f814f3bf5bb94b5.ttf":{"logical_path":"font-awesome/fa-regular-400.ttf","mtime":"2019-05-14T13:12:35+02:00","size":34092,"digest":"112491dccca97bf50ec7adff8d430dcba6d0b71e0a0b20386f814f3bf5bb94b5","integrity":"sha256-ESSR3Mype/UOx63/jUMNy6bQtx4KCyA4b4FPO/W7lLU="},"font-awesome/fa-solid-900-7a58f741ff539af94798ff561c918e5841d7e6164e90cbe57befdec4a16f6a4e.ttf":{"logical_path":"font-awesome/fa-solid-900.ttf","mtime":"2019-05-14T13:12:35+02:00","size":186444,"digest":"7a58f741ff539af94798ff561c918e5841d7e6164e90cbe57befdec4a16f6a4e","integrity":"sha256-elj3Qf9TmvlHmP9WHJGOWEHX5hZOkMvle+/exKFvak4="},"font-awesome/fa-brands-400-17ce8b9d612897d1fefd5cd2096dbd83b82d05dd5d1f60421aca15c4ce2445ac.woff":{"logical_path":"font-awesome/fa-brands-400.woff","mtime":"2019-05-14T13:12:35+02:00","size":87688,"digest":"17ce8b9d612897d1fefd5cd2096dbd83b82d05dd5d1f60421aca15c4ce2445ac","integrity":"sha256-F86LnWEol9H+/VzSCW29g7gtBd1dH2BCGsoVxM4kRaw="},"font-awesome/fa-regular-400-2835b63ffc892d01aac2cc346969b501c845d9184f738589779ec176937e1f33.woff":{"logical_path":"font-awesome/fa-regular-400.woff","mtime":"2019-05-14T13:12:35+02:00","size":16804,"digest":"2835b63ffc892d01aac2cc346969b501c845d9184f738589779ec176937e1f33","integrity":"sha256-KDW2P/yJLQGqwsw0aWm1AchF2RhPc4WJd57BdpN+HzM="},"font-awesome/fa-solid-900-20464aebbff54cc17776497ce4112c3374a54b38f7ba5f58eec12174149d6742.woff":{"logical_path":"font-awesome/fa-solid-900.woff","mtime":"2019-05-14T13:12:35+02:00","size":96256,"digest":"20464aebbff54cc17776497ce4112c3374a54b38f7ba5f58eec12174149d6742","integrity":"sha256-IEZK67/1TMF3dkl85BEsM3SlSzj3ul9Y7sEhdBSdZ0I="},"font-awesome/fa-brands-400-dc64d7192f84497cacad5c10aef682562c24aa6124270f85fe247e223607f3ed.woff2":{"logical_path":"font-awesome/fa-brands-400.woff2","mtime":"2019-05-14T13:12:35+02:00","size":74768,"digest":"dc64d7192f84497cacad5c10aef682562c24aa6124270f85fe247e223607f3ed","integrity":"sha256-3GTXGS+ESXysrVwQrvaCViwkqmEkJw+F/iR+IjYH8+0="},"font-awesome/fa-regular-400-ccf4db1eeb68c96e05e74f8ebfa75cc60c3a0fed862dae6b0ad85d4e1b5b4e4f.woff2":{"logical_path":"font-awesome/fa-regular-400.woff2","mtime":"2019-05-14T13:12:35+02:00","size":13552,"digest":"ccf4db1eeb68c96e05e74f8ebfa75cc60c3a0fed862dae6b0ad85d4e1b5b4e4f","integrity":"sha256-zPTbHutoyW4F50+Ov6dcxgw6D+2GLa5rCthdThtbTk8="},"font-awesome/fa-solid-900-f18c486a80175cf02fee0e05c2b4acd86c04cdbaecec61c1ef91f920509b5efe.woff2":{"logical_path":"font-awesome/fa-solid-900.woff2","mtime":"2019-05-14T13:12:35+02:00","size":74256,"digest":"f18c486a80175cf02fee0e05c2b4acd86c04cdbaecec61c1ef91f920509b5efe","integrity":"sha256-8YxIaoAXXPAv7g4FwrSs2GwEzbrs7GHB75H5IFCbXv4="},"agendadescommuns-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png":{"logical_path":"agendadescommuns.png","mtime":"2018-03-01T22:17:10+01:00","size":2760,"digest":"0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33","integrity":"sha256-ABe+9T9iYcs7+VLUt4DGQwc2lxSy4eLU659p39mGqzM="},"alert-762ace9479328243a44061346b64c4d6b997e963c68dfc6bddd9e4d241192906.png":{"logical_path":"alert.png","mtime":"2014-07-04T14:08:56+02:00","size":47876,"digest":"762ace9479328243a44061346b64c4d6b997e963c68dfc6bddd9e4d241192906","integrity":"sha256-dirOlHkygkOkQGE0a2TE1rmX6WPGjfxr3dnk0kEZKQY="},"baby_gnu_adl-463a81820aa2d4ffd8e7210dbce1a19ffcac67ef362aa7b092280c6f95c903fc.png":{"logical_path":"baby_gnu_adl.png","mtime":"2018-03-01T22:17:10+01:00","size":7411,"digest":"463a81820aa2d4ffd8e7210dbce1a19ffcac67ef362aa7b092280c6f95c903fc","integrity":"sha256-RjqBggqi1P/Y5yENvOGhn/ysZ+82KqewkigMb5XJA/w="},"baby_gnu_adl-97251005d3225cf1d58b8c497d6b7905dbc9560cc8acd50118fcce60d0a2679e.svg":{"logical_path":"baby_gnu_adl.svg","mtime":"2016-09-11T17:42:49+02:00","size":109635,"digest":"97251005d3225cf1d58b8c497d6b7905dbc9560cc8acd50118fcce60d0a2679e","integrity":"sha256-lyUQBdMiXPHVi4xJfWt5BdvJVgzIrNUBGPzOYNCiZ54="},"communs-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png":{"logical_path":"communs.png","mtime":"2018-03-01T22:17:10+01:00","size":2760,"digest":"0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33","integrity":"sha256-ABe+9T9iYcs7+VLUt4DGQwc2lxSy4eLU659p39mGqzM="},"lef-small-93285d531af463f877951d63fe844a6e9600b782c2c81f78723b730072fa942e.png":{"logical_path":"lef-small.png","mtime":"2018-03-01T22:17:10+01:00","size":1059,"digest":"93285d531af463f877951d63fe844a6e9600b782c2c81f78723b730072fa942e","integrity":"sha256-kyhdUxr0Y/h3lR1j/oRKbpYAt4LCyB94cjtzAHL6lC4="},"lef-7e9152b909c78144ff44ca2254c06709333bef0b8d4985deb1361aba5c63c86d.png":{"logical_path":"lef.png","mtime":"2018-12-20T12:28:10+01:00","size":15783,"digest":"7e9152b909c78144ff44ca2254c06709333bef0b8d4985deb1361aba5c63c86d","integrity":"sha256-fpFSuQnHgUT/RMoiVMBnCTM77wuNSYXesTYaulxjyG0="},"linux-presentation-day-863b30562924505dd21841220861f83643d310e0b943a0e6a905462ddfac86f1.png":{"logical_path":"linux-presentation-day.png","mtime":"2019-04-19T16:45:03+02:00","size":9358,"digest":"863b30562924505dd21841220861f83643d310e0b943a0e6a905462ddfac86f1","integrity":"sha256-hjswVikkUF3SGEEiCGH4NkPTEOC5Q6DmqQVGLd+shvE="},"priorite-logiciel-libre-je-soutiens-april_2_m-6442e454e96ed45cc1ebc40673a6c50bd286b9c28ea6a8b58572e94f7d6459fc.png":{"logical_path":"priorite-logiciel-libre-je-soutiens-april_2_m.png","mtime":"2018-07-15T15:58:42+02:00","size":16952,"digest":"6442e454e96ed45cc1ebc40673a6c50bd286b9c28ea6a8b58572e94f7d6459fc","integrity":"sha256-ZELkVOlu1FzB68QGc6bFC9KGucKOpqi1hXLpT31kWfw="},"regions/CA-QC-70699e6a6e25c69040a3f1548b0afd829c4903ccca2760b6c10f49cc87d5d174.png":{"logical_path":"regions/CA-QC.png","mtime":"2018-03-01T22:18:39+01:00","size":469,"digest":"70699e6a6e25c69040a3f1548b0afd829c4903ccca2760b6c10f49cc87d5d174","integrity":"sha256-cGmeam4lxpBAo/FUiwr9gpxJA8zKJ2C2wQ9JzIfV0XQ="},"team-65c86021cf8a1154493664094aeafcbe3e5aa13dc675bb8ef34b220481db98fa.png":{"logical_path":"team.png","mtime":"2018-03-01T22:17:10+01:00","size":3586,"digest":"65c86021cf8a1154493664094aeafcbe3e5aa13dc675bb8ef34b220481db98fa","integrity":"sha256-ZchgIc+KEVRJNmQJSur8vj5aoT3GdbuO80siBIHbmPo="},"application-b28f5a42dc6b5de7d77e7b9ef9351c708f2153532290127f06ff78c9f4d978f2.js":{"logical_path":"application.js","mtime":"2019-05-11T17:00:57+02:00","size":1964749,"digest":"b28f5a42dc6b5de7d77e7b9ef9351c708f2153532290127f06ff78c9f4d978f2","integrity":"sha256-so9aQtxrXefXfnue+TUccI8hU1MikBJ/Bv94yfTZePI="},"application-8d9e6b02a80528a80ba3b8b8ee333f1a34e130575fb088490c2bc9403fb04597.css":{"logical_path":"application.css","mtime":"2019-05-14T15:14:02+02:00","size":170794,"digest":"8d9e6b02a80528a80ba3b8b8ee333f1a34e130575fb088490c2bc9403fb04597","integrity":"sha256-jZ5rAqgFKKgLo7i47jM/GjThMFdfsIhJDCvJQD+wRZc="},"flags/4x3/ad-f67c4e5a3f709ead53c04d9ff35614e6c67517c3d3289170f7a317390f661497.svg":{"logical_path":"flags/4x3/ad.svg","mtime":"2019-05-14T13:11:18+02:00","size":33972,"digest":"f67c4e5a3f709ead53c04d9ff35614e6c67517c3d3289170f7a317390f661497","integrity":"sha256-9nxOWj9wnq1TwE2f81YU5sZ1F8PTKJFw96MXOQ9mFJc="},"flags/1x1/ad-a315836ec2c9dcc11ef9bfd8b18aa7ccfc2d31435cbf46a2c31930836076e09c.svg":{"logical_path":"flags/1x1/ad.svg","mtime":"2019-05-14T13:11:18+02:00","size":32745,"digest":"a315836ec2c9dcc11ef9bfd8b18aa7ccfc2d31435cbf46a2c31930836076e09c","integrity":"sha256-oxWDbsLJ3MEe+b/YsYqnzPwtMUNcv0aiwxkwg2B24Jw="},"flags/4x3/ae-7a3b3dc0f50b5310014cfbcc8200a5f1ce568127bf43452e40e8158e0cff2d2e.svg":{"logical_path":"flags/4x3/ae.svg","mtime":"2019-05-14T13:11:18+02:00","size":257,"digest":"7a3b3dc0f50b5310014cfbcc8200a5f1ce568127bf43452e40e8158e0cff2d2e","integrity":"sha256-ejs9wPULUxABTPvMggCl8c5WgSe/Q0UuQOgVjgz/LS4="},"flags/1x1/ae-bcdd9a4da09598785f3e31db4ff431e22687b2ead18209a3e615600655068cd5.svg":{"logical_path":"flags/1x1/ae.svg","mtime":"2019-05-14T13:11:18+02:00","size":265,"digest":"bcdd9a4da09598785f3e31db4ff431e22687b2ead18209a3e615600655068cd5","integrity":"sha256-vN2aTaCVmHhfPjHbT/Qx4iaHsurRggmj5hVgBlUGjNU="},"flags/4x3/af-01601b521fa86582e32c39eed8c88480afec1f801b6de929b52ed7e49da47260.svg":{"logical_path":"flags/4x3/af.svg","mtime":"2019-05-14T13:11:18+02:00","size":21279,"digest":"01601b521fa86582e32c39eed8c88480afec1f801b6de929b52ed7e49da47260","integrity":"sha256-AWAbUh+oZYLjLDnu2MiEgK/sH4AbbekptS7X5J2kcmA="},"flags/1x1/af-6332cf754a5e2866db631923e1f7cfc52a0a554d32b97bcf19f8263819e4ca7d.svg":{"logical_path":"flags/1x1/af.svg","mtime":"2019-05-14T13:11:18+02:00","size":21145,"digest":"6332cf754a5e2866db631923e1f7cfc52a0a554d32b97bcf19f8263819e4ca7d","integrity":"sha256-YzLPdUpeKGbbYxkj4ffPxSoKVU0yuXvPGfgmOBnkyn0="},"flags/4x3/ag-cb6952d821bac7855231c2cb4d1c44f7c730f6b3621518ab20f30d2b9afe604b.svg":{"logical_path":"flags/4x3/ag.svg","mtime":"2019-05-14T13:11:18+02:00","size":748,"digest":"cb6952d821bac7855231c2cb4d1c44f7c730f6b3621518ab20f30d2b9afe604b","integrity":"sha256-y2lS2CG6x4VSMcLLTRxE98cw9rNiFRirIPMNK5r+YEs="},"flags/1x1/ag-14f7d9978487aaf4446b55167e85a711c48a13ff07edac175c172969a38650c4.svg":{"logical_path":"flags/1x1/ag.svg","mtime":"2019-05-14T13:11:18+02:00","size":764,"digest":"14f7d9978487aaf4446b55167e85a711c48a13ff07edac175c172969a38650c4","integrity":"sha256-FPfZl4SHqvREa1UWfoWnEcSKE/8H7awXXBcpaaOGUMQ="},"flags/4x3/ai-f07c6cc0646fdfa441b9a506e1d46e8dce0d97b37222292e9c6733c995dc89bc.svg":{"logical_path":"flags/4x3/ai.svg","mtime":"2019-05-14T13:11:18+02:00","size":42208,"digest":"f07c6cc0646fdfa441b9a506e1d46e8dce0d97b37222292e9c6733c995dc89bc","integrity":"sha256-8HxswGRv36RBuaUG4dRujc4Nl7NyIikunGczyZXcibw="},"flags/1x1/ai-95099e544de29bcea3ba735de535823f2e19aeb4043e82dbc1d9862f9262b810.svg":{"logical_path":"flags/1x1/ai.svg","mtime":"2019-05-14T13:11:18+02:00","size":47975,"digest":"95099e544de29bcea3ba735de535823f2e19aeb4043e82dbc1d9862f9262b810","integrity":"sha256-lQmeVE3im86junNd5TWCPy4ZrrQEPoLbwdmGL5JiuBA="},"flags/4x3/al-9b997f2720de861e1b0ccec8ddf42a2890795ebf50817f9223e1ceba712c9b03.svg":{"logical_path":"flags/4x3/al.svg","mtime":"2019-05-14T13:11:18+02:00","size":3221,"digest":"9b997f2720de861e1b0ccec8ddf42a2890795ebf50817f9223e1ceba712c9b03","integrity":"sha256-m5l/JyDehh4bDM7I3fQqKJB5Xr9QgX+SI+HOunEsmwM="},"flags/1x1/al-94852d2711fc23abf3423534b9edb950a0c6aabf1d2d98bf2643f3c7dadfac09.svg":{"logical_path":"flags/1x1/al.svg","mtime":"2019-05-14T13:11:18+02:00","size":3228,"digest":"94852d2711fc23abf3423534b9edb950a0c6aabf1d2d98bf2643f3c7dadfac09","integrity":"sha256-lIUtJxH8I6vzQjU0ue25UKDGqr8dLZi/JkPzx9rfrAk="},"flags/4x3/am-85a199ec21d1af74a256335ead0c1e38592bb603d8da81feda4678945e9e00e6.svg":{"logical_path":"flags/4x3/am.svg","mtime":"2019-05-14T13:11:18+02:00","size":226,"digest":"85a199ec21d1af74a256335ead0c1e38592bb603d8da81feda4678945e9e00e6","integrity":"sha256-haGZ7CHRr3SiVjNerQweOFkrtgPY2oH+2kZ4lF6eAOY="},"flags/1x1/am-869391b014ac299924d30777d72a4aba430752177290a90a1fc3255a7ad79ee7.svg":{"logical_path":"flags/1x1/am.svg","mtime":"2019-05-14T13:11:18+02:00","size":234,"digest":"869391b014ac299924d30777d72a4aba430752177290a90a1fc3255a7ad79ee7","integrity":"sha256-hpORsBSsKZkk0wd31ypKukMHUhdykKkKH8MlWnrXnuc="},"flags/4x3/ao-29224a61bf632826d530cda55d87c2615884bd2c2c3a322036ed468e34d85c75.svg":{"logical_path":"flags/4x3/ao.svg","mtime":"2019-05-14T13:11:18+02:00","size":1608,"digest":"29224a61bf632826d530cda55d87c2615884bd2c2c3a322036ed468e34d85c75","integrity":"sha256-KSJKYb9jKCbVMM2lXYfCYViEvSwsOjIgNu1GjjTYXHU="},"flags/1x1/ao-048eacbc862fe1868cf0ec73457b70a8b49a598c80dea049856f0e1fd6fec83e.svg":{"logical_path":"flags/1x1/ao.svg","mtime":"2019-05-14T13:11:18+02:00","size":1608,"digest":"048eacbc862fe1868cf0ec73457b70a8b49a598c80dea049856f0e1fd6fec83e","integrity":"sha256-BI6svIYv4YaM8OxzRXtwqLSaWYyA3qBJhW8OH9b+yD4="},"flags/4x3/aq-b401a776d2f1a7944170114f0aeeceab5e1d962df3de7ed1eff47d96824b73fd.svg":{"logical_path":"flags/4x3/aq.svg","mtime":"2019-05-14T13:11:18+02:00","size":2974,"digest":"b401a776d2f1a7944170114f0aeeceab5e1d962df3de7ed1eff47d96824b73fd","integrity":"sha256-tAGndtLxp5RBcBFPCu7Oq14dli3z3n7R7/R9loJLc/0="},"flags/1x1/aq-a8d7ce9bfb860b6e2b58608b50bf2cafc5220c77f6d049ab7770891f64334531.svg":{"logical_path":"flags/1x1/aq.svg","mtime":"2019-05-14T13:11:18+02:00","size":3183,"digest":"a8d7ce9bfb860b6e2b58608b50bf2cafc5220c77f6d049ab7770891f64334531","integrity":"sha256-qNfOm/uGC24rWGCLUL8sr8UiDHf20Emrd3CJH2QzRTE="},"flags/4x3/ar-bf73475bb707100874dec538ce4b7e1b5afc4ed67dc50a8a800ee519e51cc826.svg":{"logical_path":"flags/4x3/ar.svg","mtime":"2019-05-14T13:11:18+02:00","size":3430,"digest":"bf73475bb707100874dec538ce4b7e1b5afc4ed67dc50a8a800ee519e51cc826","integrity":"sha256-v3NHW7cHEAh03sU4zkt+G1r8TtZ9xQqKgA7lGeUcyCY="},"flags/1x1/ar-fc6582cc6d3ef0782805d8497ee77ab2d836c53422e91007e48f81a4a9fa2e60.svg":{"logical_path":"flags/1x1/ar.svg","mtime":"2019-05-14T13:11:18+02:00","size":3503,"digest":"fc6582cc6d3ef0782805d8497ee77ab2d836c53422e91007e48f81a4a9fa2e60","integrity":"sha256-/GWCzG0+8HgoBdhJfud6stg2xTQi6RAH5I+BpKn6LmA="},"flags/4x3/as-79d395190345206ea03475b67b44638e1111562411504b60646483c9c0b0f7d1.svg":{"logical_path":"flags/4x3/as.svg","mtime":"2019-05-14T13:11:18+02:00","size":8098,"digest":"79d395190345206ea03475b67b44638e1111562411504b60646483c9c0b0f7d1","integrity":"sha256-edOVGQNFIG6gNHW2e0RjjhERViQRUEtgZGSDycCw99E="},"flags/1x1/as-04f0db77c5d8610a55c69508b226a7c338924f8cf7d6577d5d6590e85ee57183.svg":{"logical_path":"flags/1x1/as.svg","mtime":"2019-05-14T13:11:18+02:00","size":7845,"digest":"04f0db77c5d8610a55c69508b226a7c338924f8cf7d6577d5d6590e85ee57183","integrity":"sha256-BPDbd8XYYQpVxpUIsianwziST4z31ld9XWWQ6F7lcYM="},"flags/4x3/at-3d197de8f1f0096a2b0d440b6fc7d80821585a6637e646c05487a87718bf6b5f.svg":{"logical_path":"flags/4x3/at.svg","mtime":"2019-05-14T13:11:18+02:00","size":243,"digest":"3d197de8f1f0096a2b0d440b6fc7d80821585a6637e646c05487a87718bf6b5f","integrity":"sha256-PRl96PHwCWorDUQLb8fYCCFYWmY35kbAVIeodxi/a18="},"flags/1x1/at-ec4db9aeac793827ac7c8e40c072a76f7675010058cc8c8dfd3a86bb5acfa6b8.svg":{"logical_path":"flags/1x1/at.svg","mtime":"2019-05-14T13:11:18+02:00","size":245,"digest":"ec4db9aeac793827ac7c8e40c072a76f7675010058cc8c8dfd3a86bb5acfa6b8","integrity":"sha256-7E25rqx5OCesfI5AwHKnb3Z1AQBYzIyN/TqGu1rPprg="},"flags/4x3/au-126fa2500a315287a5f847f4d958bb929f11da9b39f35912cc440c0fcffb8b12.svg":{"logical_path":"flags/4x3/au.svg","mtime":"2019-05-14T13:11:18+02:00","size":1335,"digest":"126fa2500a315287a5f847f4d958bb929f11da9b39f35912cc440c0fcffb8b12","integrity":"sha256-Em+iUAoxUoel+Ef02Vi7kp8R2ps581kSzEQMD8/7ixI="},"flags/1x1/au-bf990dcc957c9f74eb908e8ffa733f1731277bf6ec8b7301a6ea1ed92b59cc4b.svg":{"logical_path":"flags/1x1/au.svg","mtime":"2019-05-14T13:11:18+02:00","size":1320,"digest":"bf990dcc957c9f74eb908e8ffa733f1731277bf6ec8b7301a6ea1ed92b59cc4b","integrity":"sha256-v5kNzJV8n3TrkI6P+nM/FzEne/bsi3MBpuoe2StZzEs="},"flags/4x3/aw-4524643452423e95f3b0dbe6216b059a9e52126b34c73ae4b3c17b682f893aa6.svg":{"logical_path":"flags/4x3/aw.svg","mtime":"2019-05-14T13:11:18+02:00","size":9948,"digest":"4524643452423e95f3b0dbe6216b059a9e52126b34c73ae4b3c17b682f893aa6","integrity":"sha256-RSRkNFJCPpXzsNvmIWsFmp5SEms0xzrks8F7aC+JOqY="},"flags/1x1/aw-f7002bceef55486a442bf6bf433be0c60d0b15b2aa548b81c524c67ccf0565a8.svg":{"logical_path":"flags/1x1/aw.svg","mtime":"2019-05-14T13:11:18+02:00","size":12088,"digest":"f7002bceef55486a442bf6bf433be0c60d0b15b2aa548b81c524c67ccf0565a8","integrity":"sha256-9wArzu9VSGpEK/a/Qzvgxg0LFbKqVIuBxSTGfM8FZag="},"flags/4x3/ax-c297e0eb654ca62e58f5eb3abb70df9f245e4919490f29bd0f1d49c4fe052d90.svg":{"logical_path":"flags/4x3/ax.svg","mtime":"2019-05-14T13:11:18+02:00","size":556,"digest":"c297e0eb654ca62e58f5eb3abb70df9f245e4919490f29bd0f1d49c4fe052d90","integrity":"sha256-wpfg62VMpi5Y9es6u3DfnyReSRlJDym9Dx1JxP4FLZA="},"flags/1x1/ax-a1245689ecbf321c0a9e556bba17f3c9f2aeb8b1f63d14fcb591d76a87f12880.svg":{"logical_path":"flags/1x1/ax.svg","mtime":"2019-05-14T13:11:18+02:00","size":544,"digest":"a1245689ecbf321c0a9e556bba17f3c9f2aeb8b1f63d14fcb591d76a87f12880","integrity":"sha256-oSRWiey/MhwKnlVruhfzyfKuuLH2PRT8tZHXaofxKIA="},"flags/4x3/az-132e68d5e0386d3b9fa05b4288a0fd66f1414e2bc7af6b9d437b6935a7dfa00c.svg":{"logical_path":"flags/4x3/az.svg","mtime":"2019-05-14T13:11:18+02:00","size":515,"digest":"132e68d5e0386d3b9fa05b4288a0fd66f1414e2bc7af6b9d437b6935a7dfa00c","integrity":"sha256-Ey5o1eA4bTufoFtCiKD9ZvFBTivHr2udQ3tpNaffoAw="},"flags/1x1/az-3990c0526b933bd650285d821f2b93e432a73ba709869549b8ef75b051d3bd2d.svg":{"logical_path":"flags/1x1/az.svg","mtime":"2019-05-14T13:11:18+02:00","size":501,"digest":"3990c0526b933bd650285d821f2b93e432a73ba709869549b8ef75b051d3bd2d","integrity":"sha256-OZDAUmuTO9ZQKF2CHyuT5DKnO6cJhpVJuO91sFHTvS0="},"flags/4x3/ba-89dd0c1600d94741de7d667a487310193a0c48c4cf1a5159c3bf9dd37d65d2b5.svg":{"logical_path":"flags/4x3/ba.svg","mtime":"2019-05-14T13:11:18+02:00","size":1306,"digest":"89dd0c1600d94741de7d667a487310193a0c48c4cf1a5159c3bf9dd37d65d2b5","integrity":"sha256-id0MFgDZR0HefWZ6SHMQGToMSMTPGlFZw7+d031l0rU="},"flags/1x1/ba-2dbe90eb12b937f4a9ae8db95760930a3e318f4ce5829ac05e292ead698bae5a.svg":{"logical_path":"flags/1x1/ba.svg","mtime":"2019-05-14T13:11:18+02:00","size":1247,"digest":"2dbe90eb12b937f4a9ae8db95760930a3e318f4ce5829ac05e292ead698bae5a","integrity":"sha256-Lb6Q6xK5N/Spro25V2CTCj4xj0zlgprAXikurWmLrlo="},"flags/4x3/bb-16f8249ff958bfbc18fb1f23a5282000347bffdb5769ac620966185b1dcb57f6.svg":{"logical_path":"flags/4x3/bb.svg","mtime":"2019-05-14T13:11:18+02:00","size":613,"digest":"16f8249ff958bfbc18fb1f23a5282000347bffdb5769ac620966185b1dcb57f6","integrity":"sha256-Fvgkn/lYv7wY+x8jpSggADR7/9tXaaxiCWYYWx3LV/Y="},"flags/1x1/bb-fae92d8426196ae24ffa561aca72613fae651a5e9c0bcda63ecc877add05b060.svg":{"logical_path":"flags/1x1/bb.svg","mtime":"2019-05-14T13:11:18+02:00","size":616,"digest":"fae92d8426196ae24ffa561aca72613fae651a5e9c0bcda63ecc877add05b060","integrity":"sha256-+ukthCYZauJP+lYaynJhP65lGl6cC82mPsyHet0FsGA="},"flags/4x3/bd-8dac0547e73ee25a04148a3f0fd026a90e56c23b7e92921565d4263050ba77a6.svg":{"logical_path":"flags/4x3/bd.svg","mtime":"2019-05-14T13:11:18+02:00","size":193,"digest":"8dac0547e73ee25a04148a3f0fd026a90e56c23b7e92921565d4263050ba77a6","integrity":"sha256-jawFR+c+4loEFIo/D9AmqQ5Wwjt+kpIVZdQmMFC6d6Y="},"flags/1x1/bd-ecc3c3e87d4cc59c8350f2b4d7dca8f5cf46bdb26319db0ee80b744482af50c1.svg":{"logical_path":"flags/1x1/bd.svg","mtime":"2019-05-14T13:11:18+02:00","size":195,"digest":"ecc3c3e87d4cc59c8350f2b4d7dca8f5cf46bdb26319db0ee80b744482af50c1","integrity":"sha256-7MPD6H1MxZyDUPK019yo9c9GvbJjGdsO6At0RIKvUME="},"flags/4x3/be-a180ca68521188017bb5367f19e503d9599d6cbecd61bf054e59a57f58e648ae.svg":{"logical_path":"flags/4x3/be.svg","mtime":"2019-05-14T13:11:18+02:00","size":293,"digest":"a180ca68521188017bb5367f19e503d9599d6cbecd61bf054e59a57f58e648ae","integrity":"sha256-oYDKaFIRiAF7tTZ/GeUD2VmdbL7NYb8FTlmlf1jmSK4="},"flags/1x1/be-c8d4194137bd01955285b329dfdf996490d16c3116a92ce2f322e354b6d7494e.svg":{"logical_path":"flags/1x1/be.svg","mtime":"2019-05-14T13:11:18+02:00","size":293,"digest":"c8d4194137bd01955285b329dfdf996490d16c3116a92ce2f322e354b6d7494e","integrity":"sha256-yNQZQTe9AZVShbMp39+ZZJDRbDEWqSzi8yLjVLbXSU4="},"flags/4x3/bf-6b214936ef89f19133d4a84e99cdf0cfdb99d6409f2f373f6d18694423013313.svg":{"logical_path":"flags/4x3/bf.svg","mtime":"2019-05-14T13:11:18+02:00","size":360,"digest":"6b214936ef89f19133d4a84e99cdf0cfdb99d6409f2f373f6d18694423013313","integrity":"sha256-ayFJNu+J8ZEz1KhOmc3wz9uZ1kCfLzc/bRhpRCMBMxM="},"flags/1x1/bf-04c7d61aa314adab5a41bd79d77aa780c10136bb6b8f4c62423e61e23e3851ee.svg":{"logical_path":"flags/1x1/bf.svg","mtime":"2019-05-14T13:11:18+02:00","size":386,"digest":"04c7d61aa314adab5a41bd79d77aa780c10136bb6b8f4c62423e61e23e3851ee","integrity":"sha256-BMfWGqMUrataQb1513qngMEBNrtrj0xiQj5h4j44Ue4="},"flags/4x3/bg-dd3985ba746942b0e65bc52a280cc4d28fb24fd2c7d9e22ac9afd2d75ee7bfc4.svg":{"logical_path":"flags/4x3/bg.svg","mtime":"2019-05-14T13:11:18+02:00","size":289,"digest":"dd3985ba746942b0e65bc52a280cc4d28fb24fd2c7d9e22ac9afd2d75ee7bfc4","integrity":"sha256-3TmFunRpQrDmW8UqKAzE0o+yT9LH2eIqya/S117nv8Q="},"flags/1x1/bg-f59294a736d5bdc0f102b58d70dbe45d02bd92df822820bf95336840f75a0746.svg":{"logical_path":"flags/1x1/bg.svg","mtime":"2019-05-14T13:11:18+02:00","size":297,"digest":"f59294a736d5bdc0f102b58d70dbe45d02bd92df822820bf95336840f75a0746","integrity":"sha256-9ZKUpzbVvcDxArWNcNvkXQK9kt+CKCC/lTNoQPdaB0Y="},"flags/4x3/bh-7c82c4a6ba963172c6c1b4423f39a0ebe9c999449cc7dd87018917943db4735c.svg":{"logical_path":"flags/4x3/bh.svg","mtime":"2019-05-14T13:11:18+02:00","size":546,"digest":"7c82c4a6ba963172c6c1b4423f39a0ebe9c999449cc7dd87018917943db4735c","integrity":"sha256-fILEprqWMXLGwbRCPzmg6+nJmUScx92HAYkXlD20c1w="},"flags/1x1/bh-6893aac3e55c6480e9dac0c023ec2179f6c12a0da82a0bc2717134384c097e88.svg":{"logical_path":"flags/1x1/bh.svg","mtime":"2019-05-14T13:11:18+02:00","size":572,"digest":"6893aac3e55c6480e9dac0c023ec2179f6c12a0da82a0bc2717134384c097e88","integrity":"sha256-aJOqw+VcZIDp2sDAI+whefbBKg2oKgvCcXE0OEwJfog="},"flags/4x3/bi-4fcd0116f7f93c0564c6955806f3c3563d0ea7334ae406f29a897255845c923c.svg":{"logical_path":"flags/4x3/bi.svg","mtime":"2019-05-14T13:11:18+02:00","size":1074,"digest":"4fcd0116f7f93c0564c6955806f3c3563d0ea7334ae406f29a897255845c923c","integrity":"sha256-T80BFvf5PAVkxpVYBvPDVj0OpzNK5AbymolyVYRckjw="},"flags/1x1/bi-91c34eb431b26be67852782a0b93e1d7d577a925454d6c8cea00a0d872d2de8a.svg":{"logical_path":"flags/1x1/bi.svg","mtime":"2019-05-14T13:11:18+02:00","size":1048,"digest":"91c34eb431b26be67852782a0b93e1d7d577a925454d6c8cea00a0d872d2de8a","integrity":"sha256-kcNOtDGya+Z4UngqC5Ph19V3qSVFTWyM6gCg2HLS3oo="},"flags/4x3/bj-63bddb4268f5f8c2ed867041bcf058fb18fcd9d1e0799e01286fca2d5e961c7f.svg":{"logical_path":"flags/4x3/bj.svg","mtime":"2019-05-14T13:11:18+02:00","size":499,"digest":"63bddb4268f5f8c2ed867041bcf058fb18fcd9d1e0799e01286fca2d5e961c7f","integrity":"sha256-Y73bQmj1+MLthnBBvPBY+xj82dHgeZ4BKG/KLV6WHH8="},"flags/1x1/bj-e2606c5a8498c474a6b6708626b88108fcb73840344766566dc56f804279cdfc.svg":{"logical_path":"flags/1x1/bj.svg","mtime":"2019-05-14T13:11:18+02:00","size":502,"digest":"e2606c5a8498c474a6b6708626b88108fcb73840344766566dc56f804279cdfc","integrity":"sha256-4mBsWoSYxHSmtnCGJriBCPy3OEA0R2ZWbcVvgEJ5zfw="},"flags/4x3/bl-824a7265f48789d5e1ad5c5b0042a13a7d2d4357210e5bd8124fca19931e8c74.svg":{"logical_path":"flags/4x3/bl.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"824a7265f48789d5e1ad5c5b0042a13a7d2d4357210e5bd8124fca19931e8c74","integrity":"sha256-gkpyZfSHidXhrVxbAEKhOn0tQ1chDlvYEk/KGZMejHQ="},"flags/1x1/bl-ba6a7881b0ca72ac57aee4d823ae611ab4ad24a938ee9e01a7a4d5ae04cfccf6.svg":{"logical_path":"flags/1x1/bl.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"ba6a7881b0ca72ac57aee4d823ae611ab4ad24a938ee9e01a7a4d5ae04cfccf6","integrity":"sha256-ump4gbDKcqxXruTYI65hGrStJKk47p4Bp6TVrgTPzPY="},"flags/4x3/bm-2e2f09e5a4edf4b18afff581656f50b0b4c37783db29591ff00ca768f7f755bc.svg":{"logical_path":"flags/4x3/bm.svg","mtime":"2019-05-14T13:11:18+02:00","size":22650,"digest":"2e2f09e5a4edf4b18afff581656f50b0b4c37783db29591ff00ca768f7f755bc","integrity":"sha256-Li8J5aTt9LGK//WBZW9QsLTDd4PbKVkf8AynaPf3Vbw="},"flags/1x1/bm-f553f953f8784ea4d67a5197f5d808a67747eb8a1cb56990d6838e690090d2d6.svg":{"logical_path":"flags/1x1/bm.svg","mtime":"2019-05-14T13:11:18+02:00","size":22337,"digest":"f553f953f8784ea4d67a5197f5d808a67747eb8a1cb56990d6838e690090d2d6","integrity":"sha256-9VP5U/h4TqTWelGX9dgIpndH64octWmQ1oOOaQCQ0tY="},"flags/4x3/bn-bcf9967c12eb6397346cb5b960ae92efa41f314f780d09a3d7c81f5dacac4180.svg":{"logical_path":"flags/4x3/bn.svg","mtime":"2019-05-14T13:11:18+02:00","size":14387,"digest":"bcf9967c12eb6397346cb5b960ae92efa41f314f780d09a3d7c81f5dacac4180","integrity":"sha256-vPmWfBLrY5c0bLW5YK6S76QfMU94DQmj18gfXaysQYA="},"flags/1x1/bn-1d1aad3fe9fd33ce922eba33c9ae6047a5646349239c20d1bc7307ec6d19a043.svg":{"logical_path":"flags/1x1/bn.svg","mtime":"2019-05-14T13:11:18+02:00","size":14521,"digest":"1d1aad3fe9fd33ce922eba33c9ae6047a5646349239c20d1bc7307ec6d19a043","integrity":"sha256-HRqtP+n9M86SLrozya5gR6VkY0kjnCDRvHMH7G0ZoEM="},"flags/4x3/bo-fa423f2bb4ab6e8e9dd399ad73781ea8d9cbafd30f1b7ee0bcecfb9e7b75581e.svg":{"logical_path":"flags/4x3/bo.svg","mtime":"2019-05-14T13:11:18+02:00","size":118272,"digest":"fa423f2bb4ab6e8e9dd399ad73781ea8d9cbafd30f1b7ee0bcecfb9e7b75581e","integrity":"sha256-+kI/K7Srbo6d05mtc3geqNnLr9MPG37gvOz7nnt1WB4="},"flags/1x1/bo-f5faa29e40191e0c76070ac1a1d2a1f2b18e9cd358b8a77cefaed8efc49a265e.svg":{"logical_path":"flags/1x1/bo.svg","mtime":"2019-05-14T13:11:18+02:00","size":119850,"digest":"f5faa29e40191e0c76070ac1a1d2a1f2b18e9cd358b8a77cefaed8efc49a265e","integrity":"sha256-9fqinkAZHgx2BwrBodKh8rGOnNNYuKd8767Y78SaJl4="},"flags/4x3/bq-493c92ab19204c3ad319e6caba021df050132b99bd57a8f9b74131b78229c29e.svg":{"logical_path":"flags/4x3/bq.svg","mtime":"2019-05-14T13:11:18+02:00","size":227,"digest":"493c92ab19204c3ad319e6caba021df050132b99bd57a8f9b74131b78229c29e","integrity":"sha256-STySqxkgTDrTGebKugId8FATK5m9V6j5t0Ext4Ipwp4="},"flags/1x1/bq-6e30bbeabc2aa097f657a411984b3c23278a8fcce2fc016b1cd6d2262f672d33.svg":{"logical_path":"flags/1x1/bq.svg","mtime":"2019-05-14T13:11:18+02:00","size":231,"digest":"6e30bbeabc2aa097f657a411984b3c23278a8fcce2fc016b1cd6d2262f672d33","integrity":"sha256-bjC76rwqoJf2V6QRmEs8IyeKj8zi/AFrHNbSJi9nLTM="},"flags/4x3/br-cf3ba80ec2c9fd4d3c845c3a3c43a2b9d81cf90707a2918789e8b1f596833e01.svg":{"logical_path":"flags/4x3/br.svg","mtime":"2019-05-14T13:11:18+02:00","size":8244,"digest":"cf3ba80ec2c9fd4d3c845c3a3c43a2b9d81cf90707a2918789e8b1f596833e01","integrity":"sha256-zzuoDsLJ/U08hFw6PEOiudgc+QcHopGHieix9ZaDPgE="},"flags/1x1/br-7bf4e4b31650ac25f0bc6c86eb87491a7e5a8eac13acccfcbde44346c88728f6.svg":{"logical_path":"flags/1x1/br.svg","mtime":"2019-05-14T13:11:18+02:00","size":7852,"digest":"7bf4e4b31650ac25f0bc6c86eb87491a7e5a8eac13acccfcbde44346c88728f6","integrity":"sha256-e/TksxZQrCXwvGyG64dJGn5ajqwTrMz8veRDRsiHKPY="},"flags/4x3/bs-69f60b5fea96b67dd939e597099994921bb3dc3bcf31b8dee7cc45be2885c836.svg":{"logical_path":"flags/4x3/bs.svg","mtime":"2019-05-14T13:11:18+02:00","size":549,"digest":"69f60b5fea96b67dd939e597099994921bb3dc3bcf31b8dee7cc45be2885c836","integrity":"sha256-afYLX+qWtn3ZOeWXCZmUkhuz3DvPMbje58xFviiFyDY="},"flags/1x1/bs-f5d6acf7ef7a240dc09ac88710fd77fd3494501104392db74d5c540d482f2262.svg":{"logical_path":"flags/1x1/bs.svg","mtime":"2019-05-14T13:11:18+02:00","size":571,"digest":"f5d6acf7ef7a240dc09ac88710fd77fd3494501104392db74d5c540d482f2262","integrity":"sha256-9das9+96JA3AmsiHEP13/TSUUBEEOS23TVxUDUgvImI="},"flags/4x3/bt-6c20b0c00e12d5898be0239a0c66ce775debd0bd536de56a271859a0285a039e.svg":{"logical_path":"flags/4x3/bt.svg","mtime":"2019-05-14T13:11:18+02:00","size":25345,"digest":"6c20b0c00e12d5898be0239a0c66ce775debd0bd536de56a271859a0285a039e","integrity":"sha256-bCCwwA4S1YmL4COaDGbOd13r0L1TbeVqJxhZoChaA54="},"flags/1x1/bt-58de3ca9438811ef1920e2f84c4ba4ce32d01069f4d197ab5d577de6acbe0c85.svg":{"logical_path":"flags/1x1/bt.svg","mtime":"2019-05-14T13:11:18+02:00","size":25172,"digest":"58de3ca9438811ef1920e2f84c4ba4ce32d01069f4d197ab5d577de6acbe0c85","integrity":"sha256-WN48qUOIEe8ZIOL4TEukzjLQEGn00ZerXVd95qy+DIU="},"flags/4x3/bv-ff173190fc339b3cb8b6e8235bc5e373853d7127fd94cbc32ac737e839aeb586.svg":{"logical_path":"flags/4x3/bv.svg","mtime":"2019-05-14T13:11:18+02:00","size":582,"digest":"ff173190fc339b3cb8b6e8235bc5e373853d7127fd94cbc32ac737e839aeb586","integrity":"sha256-/xcxkPwzmzy4tugjW8Xjc4U9cSf9lMvDKsc36DmutYY="},"flags/1x1/bv-59616ff1a722959064c83927ca2e49c1fce42a9b18e91b9ecbb74f62527aff43.svg":{"logical_path":"flags/1x1/bv.svg","mtime":"2019-05-14T13:11:18+02:00","size":585,"digest":"59616ff1a722959064c83927ca2e49c1fce42a9b18e91b9ecbb74f62527aff43","integrity":"sha256-WWFv8acilZBkyDknyi5JwfzkKpsY6Ruey7dPYlJ6/0M="},"flags/4x3/bw-4bb1d3131b88c65b5decc67f7b44903e931bca2fcac841942591c599f0cbb850.svg":{"logical_path":"flags/4x3/bw.svg","mtime":"2019-05-14T13:11:18+02:00","size":255,"digest":"4bb1d3131b88c65b5decc67f7b44903e931bca2fcac841942591c599f0cbb850","integrity":"sha256-S7HTExuIxltd7MZ/e0SQPpMbyi/KyEGUJZHFmfDLuFA="},"flags/1x1/bw-e08f50c0836ca5858aed7b0526aed6fb630da8dc6b6b96bd9a476af599dc89d6.svg":{"logical_path":"flags/1x1/bw.svg","mtime":"2019-05-14T13:11:18+02:00","size":257,"digest":"e08f50c0836ca5858aed7b0526aed6fb630da8dc6b6b96bd9a476af599dc89d6","integrity":"sha256-4I9QwINspYWK7XsFJq7W+2MNqNxra5a9mkdq9ZncidY="},"flags/4x3/by-324ac96bfbe075781c664be3b9e2ac6b4d2a46dd2b418ca0920284f64394c7d4.svg":{"logical_path":"flags/4x3/by.svg","mtime":"2019-05-14T13:11:18+02:00","size":5998,"digest":"324ac96bfbe075781c664be3b9e2ac6b4d2a46dd2b418ca0920284f64394c7d4","integrity":"sha256-MkrJa/vgdXgcZkvjueKsa00qRt0rQYygkgKE9kOUx9Q="},"flags/1x1/by-37b80e8bf7e51fef99a8307d6dffb04ee164790ceeafef606d516ca333e9488a.svg":{"logical_path":"flags/1x1/by.svg","mtime":"2019-05-14T13:11:18+02:00","size":6105,"digest":"37b80e8bf7e51fef99a8307d6dffb04ee164790ceeafef606d516ca333e9488a","integrity":"sha256-N7gOi/flH++ZqDB9bf+wTuFkeQzur+9gbVFsozPpSIo="},"flags/4x3/bz-156fdc45f8c15c9520a1ea9fc0f395f294f02077408ea1938c222a37cfbb7f1d.svg":{"logical_path":"flags/4x3/bz.svg","mtime":"2019-05-14T13:11:18+02:00","size":46916,"digest":"156fdc45f8c15c9520a1ea9fc0f395f294f02077408ea1938c222a37cfbb7f1d","integrity":"sha256-FW/cRfjBXJUgoeqfwPOV8pTwIHdAjqGTjCIqN8+7fx0="},"flags/1x1/bz-24577d4e7b29b33ab3b1d37914c8479889baa7e8c8399c6d1c99faed31ab053a.svg":{"logical_path":"flags/1x1/bz.svg","mtime":"2019-05-14T13:11:18+02:00","size":47160,"digest":"24577d4e7b29b33ab3b1d37914c8479889baa7e8c8399c6d1c99faed31ab053a","integrity":"sha256-JFd9TnspszqzsdN5FMhHmIm6p+jIOZxtHJn67TGrBTo="},"flags/4x3/ca-0d57cab46d5dbb0012a5e4ae0a9efee3baee90d5d157950a6c5d67edf2daa58f.svg":{"logical_path":"flags/4x3/ca.svg","mtime":"2019-05-14T13:11:18+02:00","size":731,"digest":"0d57cab46d5dbb0012a5e4ae0a9efee3baee90d5d157950a6c5d67edf2daa58f","integrity":"sha256-DVfKtG1duwASpeSuCp7+47rukNXRV5UKbF1n7fLapY8="},"flags/1x1/ca-192a6fb0544e5a6f33a32149d62f1e7ac0a1d61c5c5afa57f3a42346ca8e8c90.svg":{"logical_path":"flags/1x1/ca.svg","mtime":"2019-05-14T13:11:18+02:00","size":712,"digest":"192a6fb0544e5a6f33a32149d62f1e7ac0a1d61c5c5afa57f3a42346ca8e8c90","integrity":"sha256-GSpvsFROWm8zoyFJ1i8eesCh1hxcWvpX86QjRsqOjJA="},"flags/4x3/cc-a35f2a9e10a28d6918ced65e0623b03bb2fbf1f20670b581bc0a409d33b4e843.svg":{"logical_path":"flags/4x3/cc.svg","mtime":"2019-05-14T13:11:18+02:00","size":3144,"digest":"a35f2a9e10a28d6918ced65e0623b03bb2fbf1f20670b581bc0a409d33b4e843","integrity":"sha256-o18qnhCijWkYztZeBiOwO7L78fIGcLWBvApAnTO06EM="},"flags/1x1/cc-d2025eefc9d30f724f3fcd95c0fd9f7938930ecb01af7e0cd6ee6553d7358eb6.svg":{"logical_path":"flags/1x1/cc.svg","mtime":"2019-05-14T13:11:18+02:00","size":3092,"digest":"d2025eefc9d30f724f3fcd95c0fd9f7938930ecb01af7e0cd6ee6553d7358eb6","integrity":"sha256-0gJe78nTD3JPP82VwP2feTiTDssBr34M1u5lU9c1jrY="},"flags/4x3/cd-5d2127c991b30522ae0a29d05facbc88728c050d7e333a60d614af1545459c5c.svg":{"logical_path":"flags/4x3/cd.svg","mtime":"2019-05-14T13:11:18+02:00","size":352,"digest":"5d2127c991b30522ae0a29d05facbc88728c050d7e333a60d614af1545459c5c","integrity":"sha256-XSEnyZGzBSKuCinQX6y8iHKMBQ1+Mzpg1hSvFUVFnFw="},"flags/1x1/cd-59dacf424d1c8c779db66c5b7f2a93a3c8f14976c2975ccfb07639676a1602e3.svg":{"logical_path":"flags/1x1/cd.svg","mtime":"2019-05-14T13:11:18+02:00","size":510,"digest":"59dacf424d1c8c779db66c5b7f2a93a3c8f14976c2975ccfb07639676a1602e3","integrity":"sha256-WdrPQk0cjHedtmxbfyqTo8jxSXbCl1zPsHY5Z2oWAuM="},"flags/4x3/cf-ac0aaffba354d848eba2501a402ee81dc96a56ad0acd3741ec9905e76c372e1e.svg":{"logical_path":"flags/4x3/cf.svg","mtime":"2019-05-14T13:11:18+02:00","size":689,"digest":"ac0aaffba354d848eba2501a402ee81dc96a56ad0acd3741ec9905e76c372e1e","integrity":"sha256-rAqv+6NU2EjrolAaQC7oHclqVq0KzTdB7JkF52w3Lh4="},"flags/1x1/cf-e637674faf7edcdad37182192d038448c157421ab0c69377d9b8e56ab2c0249d.svg":{"logical_path":"flags/1x1/cf.svg","mtime":"2019-05-14T13:11:18+02:00","size":635,"digest":"e637674faf7edcdad37182192d038448c157421ab0c69377d9b8e56ab2c0249d","integrity":"sha256-5jdnT69+3NrTcYIZLQOESMFXQhqwxpN32bjlarLAJJ0="},"flags/4x3/cg-3729f717c83c9df7d0543a1a5d4a506efe184bdfeb39f9260b4b63edf19d2538.svg":{"logical_path":"flags/4x3/cg.svg","mtime":"2019-05-14T13:11:18+02:00","size":484,"digest":"3729f717c83c9df7d0543a1a5d4a506efe184bdfeb39f9260b4b63edf19d2538","integrity":"sha256-Nyn3F8g8nffQVDoaXUpQbv4YS9/rOfkmC0tj7fGdJTg="},"flags/1x1/cg-8353ff1f251714b1b8905eec1722378426719955d0637d206d35d1dcfa68ddcf.svg":{"logical_path":"flags/1x1/cg.svg","mtime":"2019-05-14T13:11:18+02:00","size":472,"digest":"8353ff1f251714b1b8905eec1722378426719955d0637d206d35d1dcfa68ddcf","integrity":"sha256-g1P/HyUXFLG4kF7sFyI3hCZxmVXQY30gbTXR3Ppo3c8="},"flags/4x3/ch-6739edee6d1ef72c4ed97cfe723d3bb7f17e4df5390f3a4ae234f1ffdeece0cf.svg":{"logical_path":"flags/4x3/ch.svg","mtime":"2019-05-14T13:11:18+02:00","size":300,"digest":"6739edee6d1ef72c4ed97cfe723d3bb7f17e4df5390f3a4ae234f1ffdeece0cf","integrity":"sha256-Zznt7m0e9yxO2Xz+cj07t/F+TfU5DzpK4jTx/97s4M8="},"flags/1x1/ch-7c3dec465228981c57a90a3a7b3a6c42dd3e699230663e770b55008ce6d14208.svg":{"logical_path":"flags/1x1/ch.svg","mtime":"2019-05-14T13:11:18+02:00","size":298,"digest":"7c3dec465228981c57a90a3a7b3a6c42dd3e699230663e770b55008ce6d14208","integrity":"sha256-fD3sRlIomBxXqQo6ezpsQt0+aZIwZj53C1UAjObRQgg="},"flags/4x3/ci-3e076d13c9524149508c442f8f727424660124e3591280d8ae9bddf9d8272a1e.svg":{"logical_path":"flags/4x3/ci.svg","mtime":"2019-05-14T13:11:18+02:00","size":283,"digest":"3e076d13c9524149508c442f8f727424660124e3591280d8ae9bddf9d8272a1e","integrity":"sha256-PgdtE8lSQUlQjEQvj3J0JGYBJONZEoDYrpvd+dgnKh4="},"flags/1x1/ci-691a0a8577b7d555fc90dc7170adc9ec7571191cb3507c46c0e8516fd1778a91.svg":{"logical_path":"flags/1x1/ci.svg","mtime":"2019-05-14T13:11:18+02:00","size":286,"digest":"691a0a8577b7d555fc90dc7170adc9ec7571191cb3507c46c0e8516fd1778a91","integrity":"sha256-aRoKhXe31VX8kNxxcK3J7HVxGRyzUHxGwOhRb9F3ipE="},"flags/4x3/ck-9cff098e505afde9bf5166cb7b0c409178575633b913ce08c1c700d08c477db6.svg":{"logical_path":"flags/4x3/ck.svg","mtime":"2019-05-14T13:11:18+02:00","size":1887,"digest":"9cff098e505afde9bf5166cb7b0c409178575633b913ce08c1c700d08c477db6","integrity":"sha256-nP8JjlBa/em/UWbLewxAkXhXVjO5E84IwccA0IxHfbY="},"flags/1x1/ck-9c8dffa3bd5953d8a121780831f25b58738e67f3be71961894c56dfd25848c88.svg":{"logical_path":"flags/1x1/ck.svg","mtime":"2019-05-14T13:11:18+02:00","size":1846,"digest":"9c8dffa3bd5953d8a121780831f25b58738e67f3be71961894c56dfd25848c88","integrity":"sha256-nI3/o71ZU9ihIXgIMfJbWHOOZ/O+cZYYlMVt/SWEjIg="},"flags/4x3/cl-a4c57ec2bb9adcb67e1850256e5165227b764187d6941a38d95d0def5144699b.svg":{"logical_path":"flags/4x3/cl.svg","mtime":"2019-05-14T13:11:18+02:00","size":560,"digest":"a4c57ec2bb9adcb67e1850256e5165227b764187d6941a38d95d0def5144699b","integrity":"sha256-pMV+wrua3LZ+GFAlblFlInt2QYfWlBo42V0N71FEaZs="},"flags/1x1/cl-5a3e95cf63358e3911c97404818c2cddfd46414d8445e47d6976ee166c48926c.svg":{"logical_path":"flags/1x1/cl.svg","mtime":"2019-05-14T13:11:18+02:00","size":577,"digest":"5a3e95cf63358e3911c97404818c2cddfd46414d8445e47d6976ee166c48926c","integrity":"sha256-Wj6Vz2M1jjkRyXQEgYws3f1GQU2EReR9aXbuFmxIkmw="},"flags/4x3/cm-5dce9f36d92a61bdc0c482141bdb4f55bfcec0a2ecc745db643a7953e2e5a722.svg":{"logical_path":"flags/4x3/cm.svg","mtime":"2019-05-14T13:11:18+02:00","size":827,"digest":"5dce9f36d92a61bdc0c482141bdb4f55bfcec0a2ecc745db643a7953e2e5a722","integrity":"sha256-Xc6fNtkqYb3AxIIUG9tPVb/OwKLsx0XbZDp5U+LlpyI="},"flags/1x1/cm-d8d21f54c44df5df9edef227691384a4ad37c15ff57c8aa0dead684d19eac8cd.svg":{"logical_path":"flags/1x1/cm.svg","mtime":"2019-05-14T13:11:18+02:00","size":827,"digest":"d8d21f54c44df5df9edef227691384a4ad37c15ff57c8aa0dead684d19eac8cd","integrity":"sha256-2NIfVMRN9d+e3vInaROEpK03wV/1fIqg3q1oTRnqyM0="},"flags/4x3/cn-48ce1c2837bb806a6aaf8b7a9878b6d040c0d069a0ffca9a8a49e7a31aa30e7f.svg":{"logical_path":"flags/4x3/cn.svg","mtime":"2019-05-14T13:11:18+02:00","size":804,"digest":"48ce1c2837bb806a6aaf8b7a9878b6d040c0d069a0ffca9a8a49e7a31aa30e7f","integrity":"sha256-SM4cKDe7gGpqr4t6mHi20EDA0Gmg/8qaiknnoxqjDn8="},"flags/1x1/cn-e6be64c6c4a976e64d39bfe8a6ae4a5b1d38a6aa1b138ddcacf34a942dff50bc.svg":{"logical_path":"flags/1x1/cn.svg","mtime":"2019-05-14T13:11:18+02:00","size":746,"digest":"e6be64c6c4a976e64d39bfe8a6ae4a5b1d38a6aa1b138ddcacf34a942dff50bc","integrity":"sha256-5r5kxsSpduZNOb/opq5KWx04pqobE43crPNKlC3/ULw="},"flags/4x3/co-648d3ff596a0ecf3e85ac17c53abe1d7ca4759688e10a7a3a8b56f096ba6b6f7.svg":{"logical_path":"flags/4x3/co.svg","mtime":"2019-05-14T13:11:18+02:00","size":292,"digest":"648d3ff596a0ecf3e85ac17c53abe1d7ca4759688e10a7a3a8b56f096ba6b6f7","integrity":"sha256-ZI0/9Zag7PPoWsF8U6vh18pHWWiOEKejqLVvCWumtvc="},"flags/1x1/co-d3c16180c6bce630f762aff789104d10e9dbc949e740535a61396cd0ec34c1a1.svg":{"logical_path":"flags/1x1/co.svg","mtime":"2019-05-14T13:11:18+02:00","size":292,"digest":"d3c16180c6bce630f762aff789104d10e9dbc949e740535a61396cd0ec34c1a1","integrity":"sha256-08FhgMa85jD3Yq/3iRBNEOnbyUnnQFNaYTls0Ow0waE="},"flags/4x3/cr-84aec60f19bd33e1ac1a209155fec8d372e17cb59dc1346bb9124e5cc867375d.svg":{"logical_path":"flags/4x3/cr.svg","mtime":"2019-05-14T13:11:18+02:00","size":296,"digest":"84aec60f19bd33e1ac1a209155fec8d372e17cb59dc1346bb9124e5cc867375d","integrity":"sha256-hK7GDxm9M+GsGiCRVf7I03LhfLWdwTRruRJOXMhnN10="},"flags/1x1/cr-5371cf8bc5ad1a805155c1b3065e420a0a418c8d63b472bc545890289a365b35.svg":{"logical_path":"flags/1x1/cr.svg","mtime":"2019-05-14T13:11:18+02:00","size":296,"digest":"5371cf8bc5ad1a805155c1b3065e420a0a418c8d63b472bc545890289a365b35","integrity":"sha256-U3HPi8WtGoBRVcGzBl5CCgpBjI1jtHK8VFiQKJo2WzU="},"flags/4x3/cu-bb3f857e02aeab606120d9f164283f07a44b227f12aad7d6d344c7579f7b3ff0.svg":{"logical_path":"flags/4x3/cu.svg","mtime":"2019-05-14T13:11:18+02:00","size":619,"digest":"bb3f857e02aeab606120d9f164283f07a44b227f12aad7d6d344c7579f7b3ff0","integrity":"sha256-uz+FfgKuq2BhINnxZCg/B6RLIn8SqtfW00THV597P/A="},"flags/1x1/cu-02c0054169b874a8d231de1f45b2d0884de48848157734e0ddcd0f684c05c18d.svg":{"logical_path":"flags/1x1/cu.svg","mtime":"2019-05-14T13:11:18+02:00","size":576,"digest":"02c0054169b874a8d231de1f45b2d0884de48848157734e0ddcd0f684c05c18d","integrity":"sha256-AsAFQWm4dKjSMd4fRbLQiE3kiEgVdzTg3c0PaEwFwY0="},"flags/4x3/cv-90ee90ab59713454a218d8c300c71139e62655de80bfbea81df93142a529b81f.svg":{"logical_path":"flags/4x3/cv.svg","mtime":"2019-05-14T13:11:18+02:00","size":1414,"digest":"90ee90ab59713454a218d8c300c71139e62655de80bfbea81df93142a529b81f","integrity":"sha256-kO6Qq1lxNFSiGNjDAMcROeYmVd6Av76oHfkxQqUpuB8="},"flags/1x1/cv-2cf3eede97a468d28459ccc2271c28bb5b6029af2388b0301f6203be55e49308.svg":{"logical_path":"flags/1x1/cv.svg","mtime":"2019-05-14T13:11:18+02:00","size":1362,"digest":"2cf3eede97a468d28459ccc2271c28bb5b6029af2388b0301f6203be55e49308","integrity":"sha256-LPPu3pekaNKEWczCJxwou1tgKa8jiLAwH2IDvlXkkwg="},"flags/4x3/cw-d46beb7b10b40fa82cfd40eb86a3b3879f59f5da2a2f5ef91d121ab9b16c0aad.svg":{"logical_path":"flags/4x3/cw.svg","mtime":"2019-05-14T13:11:18+02:00","size":678,"digest":"d46beb7b10b40fa82cfd40eb86a3b3879f59f5da2a2f5ef91d121ab9b16c0aad","integrity":"sha256-1GvrexC0D6gs/UDrhqOzh59Z9doqL175HRIaubFsCq0="},"flags/1x1/cw-ba78c834e61b24a8a2b6bc7c80ab9f14e42c3c69415941ddb7c8c1f652ccd8b5.svg":{"logical_path":"flags/1x1/cw.svg","mtime":"2019-05-14T13:11:18+02:00","size":685,"digest":"ba78c834e61b24a8a2b6bc7c80ab9f14e42c3c69415941ddb7c8c1f652ccd8b5","integrity":"sha256-unjINOYbJKiitrx8gKufFOQsPGlBWUHdt8jB9lLM2LU="},"flags/4x3/cx-28187fb9d91bedc6f239b107d26eb6ec1cc2a0c7730810306c5a6b313c14f2b2.svg":{"logical_path":"flags/4x3/cx.svg","mtime":"2019-05-14T13:11:18+02:00","size":2469,"digest":"28187fb9d91bedc6f239b107d26eb6ec1cc2a0c7730810306c5a6b313c14f2b2","integrity":"sha256-KBh/udkb7cbyObEH0m627BzCoMdzCBAwbFprMTwU8rI="},"flags/1x1/cx-8ebe073d997f93d092a493300ea1d234c91aef80c6e8f431e88aa7f8e724f9a6.svg":{"logical_path":"flags/1x1/cx.svg","mtime":"2019-05-14T13:11:18+02:00","size":2508,"digest":"8ebe073d997f93d092a493300ea1d234c91aef80c6e8f431e88aa7f8e724f9a6","integrity":"sha256-jr4HPZl/k9CSpJMwDqHSNMka74DG6PQx6Iqn+Ock+aY="},"flags/4x3/cy-8d633ecabc7968bb8a869c62545f122aacbbc3e108c25ceb421bb8bc8734b9be.svg":{"logical_path":"flags/4x3/cy.svg","mtime":"2019-05-14T13:11:18+02:00","size":5949,"digest":"8d633ecabc7968bb8a869c62545f122aacbbc3e108c25ceb421bb8bc8734b9be","integrity":"sha256-jWM+yrx5aLuKhpxiVF8SKqy7w+EIwlzrQhu4vIc0ub4="},"flags/1x1/cy-6ef37fdd7518f18727bec1ed9741bb4d1f854dde7ef1a7e9fd2f4ba6291a7790.svg":{"logical_path":"flags/1x1/cy.svg","mtime":"2019-05-14T13:11:18+02:00","size":6053,"digest":"6ef37fdd7518f18727bec1ed9741bb4d1f854dde7ef1a7e9fd2f4ba6291a7790","integrity":"sha256-bvN/3XUY8YcnvsHtl0G7TR+FTd5+8afp/S9Lpikad5A="},"flags/4x3/cz-6c94e3d53fc1ae5982d8eb058b76d86f07d3fb4cd325698fea3291fa35504c56.svg":{"logical_path":"flags/4x3/cz.svg","mtime":"2019-05-14T13:11:18+02:00","size":481,"digest":"6c94e3d53fc1ae5982d8eb058b76d86f07d3fb4cd325698fea3291fa35504c56","integrity":"sha256-bJTj1T/BrlmC2OsFi3bYbwfT+0zTJWmP6jKR+jVQTFY="},"flags/1x1/cz-af9898ebd32559cdbea2fd17b351e5eedafccada6fbc6a2b7952cad78369817e.svg":{"logical_path":"flags/1x1/cz.svg","mtime":"2019-05-14T13:11:18+02:00","size":483,"digest":"af9898ebd32559cdbea2fd17b351e5eedafccada6fbc6a2b7952cad78369817e","integrity":"sha256-r5iY69MlWc2+ov0Xs1Hl7tr8ytpvvGoreVLK14NpgX4="},"flags/4x3/de-e7323083675d25107c85f0cea6534bd21d21e77e6d524d92e1b2d0a4e21117a1.svg":{"logical_path":"flags/4x3/de.svg","mtime":"2019-05-14T13:11:18+02:00","size":216,"digest":"e7323083675d25107c85f0cea6534bd21d21e77e6d524d92e1b2d0a4e21117a1","integrity":"sha256-5zIwg2ddJRB8hfDOplNL0h0h535tUk2S4bLQpOIRF6E="},"flags/1x1/de-fdb60146952d3b2d104310b28882a0ecde44d808240c3bab2cd6c302a538b266.svg":{"logical_path":"flags/1x1/de.svg","mtime":"2019-05-14T13:11:18+02:00","size":224,"digest":"fdb60146952d3b2d104310b28882a0ecde44d808240c3bab2cd6c302a538b266","integrity":"sha256-/bYBRpUtOy0QQxCyiIKg7N5E2AgkDDurLNbDAqU4smY="},"flags/4x3/dj-546da4a0dae9b1ab74dc6ac6076d0c706f37ef2a0d799342dd0345e11f770f03.svg":{"logical_path":"flags/4x3/dj.svg","mtime":"2019-05-14T13:11:18+02:00","size":588,"digest":"546da4a0dae9b1ab74dc6ac6076d0c706f37ef2a0d799342dd0345e11f770f03","integrity":"sha256-VG2koNrpsat03GrGB20McG837yoNeZNC3QNF4R93DwM="},"flags/1x1/dj-c0481b667f003d9d5a3c93861023a97a98224227ac19aa7e07b5b6edd35fe900.svg":{"logical_path":"flags/1x1/dj.svg","mtime":"2019-05-14T13:11:18+02:00","size":588,"digest":"c0481b667f003d9d5a3c93861023a97a98224227ac19aa7e07b5b6edd35fe900","integrity":"sha256-wEgbZn8APZ1aPJOGECOpepgiQiesGap+B7W27dNf6QA="},"flags/4x3/dk-a13735c0337ab4679cd8679508bf5e8067637ab611ca5c54172c621d740420e5.svg":{"logical_path":"flags/4x3/dk.svg","mtime":"2019-05-14T13:11:18+02:00","size":242,"digest":"a13735c0337ab4679cd8679508bf5e8067637ab611ca5c54172c621d740420e5","integrity":"sha256-oTc1wDN6tGec2GeVCL9egGdjerYRylxUFyxiHXQEIOU="},"flags/1x1/dk-822a3b8b6948f49aa81fe7620bd173453d9a45406a9680f24bad7e714e58cb7c.svg":{"logical_path":"flags/1x1/dk.svg","mtime":"2019-05-14T13:11:18+02:00","size":238,"digest":"822a3b8b6948f49aa81fe7620bd173453d9a45406a9680f24bad7e714e58cb7c","integrity":"sha256-gio7i2lI9JqoH+diC9FzRT2aRUBqloDyS61+cU5Yy3w="},"flags/4x3/dm-7713fabd3cf341694b4c1ef5d1379820773722b61c190234ac7416f2872e3940.svg":{"logical_path":"flags/4x3/dm.svg","mtime":"2019-05-14T13:11:18+02:00","size":16026,"digest":"7713fabd3cf341694b4c1ef5d1379820773722b61c190234ac7416f2872e3940","integrity":"sha256-dxP6vTzzQWlLTB710TeYIHc3IrYcGQI0rHQW8ocuOUA="},"flags/1x1/dm-33d984fc9897bb2a3bd16c6672b876effc1a8adc0c57ad122a16db54061e4e46.svg":{"logical_path":"flags/1x1/dm.svg","mtime":"2019-05-14T13:11:18+02:00","size":16514,"digest":"33d984fc9897bb2a3bd16c6672b876effc1a8adc0c57ad122a16db54061e4e46","integrity":"sha256-M9mE/JiXuyo70Wxmcrh27/waitwMV60SKhbbVAYeTkY="},"flags/4x3/do-714b6f307ea3a9c3d30348684b8574e8b7f5078f51649dfa97ae2a69a7108b4a.svg":{"logical_path":"flags/4x3/do.svg","mtime":"2019-05-14T13:11:18+02:00","size":394146,"digest":"714b6f307ea3a9c3d30348684b8574e8b7f5078f51649dfa97ae2a69a7108b4a","integrity":"sha256-cUtvMH6jqcPTA0hoS4V06Lf1B49RZJ36l64qaacQi0o="},"flags/1x1/do-d37306c4b346f89ea14739144374caad69652be31e8ce8e2504c9a0d422a4857.svg":{"logical_path":"flags/1x1/do.svg","mtime":"2019-05-14T13:11:18+02:00","size":391714,"digest":"d37306c4b346f89ea14739144374caad69652be31e8ce8e2504c9a0d422a4857","integrity":"sha256-03MGxLNG+J6hRzkUQ3TKrWllK+MejOjiUEyaDUIqSFc="},"flags/4x3/dz-a96e943c830558fe9823044aac2bfb3f6a4caf3bd3c57943352280a7f6b68cb1.svg":{"logical_path":"flags/4x3/dz.svg","mtime":"2019-05-14T13:11:18+02:00","size":301,"digest":"a96e943c830558fe9823044aac2bfb3f6a4caf3bd3c57943352280a7f6b68cb1","integrity":"sha256-qW6UPIMFWP6YIwRKrCv7P2pMrzvTxXlDNSKAp/a2jLE="},"flags/1x1/dz-09400d3b2c58e641a1641a687b81476761d05f9d0ff65861aeaa33c7f508cda4.svg":{"logical_path":"flags/1x1/dz.svg","mtime":"2019-05-14T13:11:18+02:00","size":312,"digest":"09400d3b2c58e641a1641a687b81476761d05f9d0ff65861aeaa33c7f508cda4","integrity":"sha256-CUANOyxY5kGhZBpoe4FHZ2HQX50P9lhhrqozx/UIzaQ="},"flags/4x3/ec-6762ba85ea0f7bb289b0aa6219c797e5243103d281b1462c61b61030fa329d5e.svg":{"logical_path":"flags/4x3/ec.svg","mtime":"2019-05-14T13:11:18+02:00","size":29417,"digest":"6762ba85ea0f7bb289b0aa6219c797e5243103d281b1462c61b61030fa329d5e","integrity":"sha256-Z2K6heoPe7KJsKpiGceX5SQxA9KBsUYsYbYQMPoynV4="},"flags/1x1/ec-7410a75a013738fbb8cbd756d967380e02ae54ca74e9ef9a41c4b583c2c2794f.svg":{"logical_path":"flags/1x1/ec.svg","mtime":"2019-05-14T13:11:18+02:00","size":29972,"digest":"7410a75a013738fbb8cbd756d967380e02ae54ca74e9ef9a41c4b583c2c2794f","integrity":"sha256-dBCnWgE3OPu4y9dW2Wc4DgKuVMp06e+aQcS1g8LCeU8="},"flags/4x3/ee-ce3b622214bd9eefb43373cae2811ea8cf6ef6a16bb6afbaa5bcaaea34024da0.svg":{"logical_path":"flags/4x3/ee.svg","mtime":"2019-05-14T13:11:18+02:00","size":324,"digest":"ce3b622214bd9eefb43373cae2811ea8cf6ef6a16bb6afbaa5bcaaea34024da0","integrity":"sha256-zjtiIhS9nu+0M3PK4oEeqM9u9qFrtq+6pbyq6jQCTaA="},"flags/1x1/ee-a207a8363b4dde44f59951501c2cb539419e92b0814b25d6448710ced52226f8.svg":{"logical_path":"flags/1x1/ee.svg","mtime":"2019-05-14T13:11:18+02:00","size":355,"digest":"a207a8363b4dde44f59951501c2cb539419e92b0814b25d6448710ced52226f8","integrity":"sha256-ogeoNjtN3kT1mVFQHCy1OUGekrCBSyXWRIcQztUiJvg="},"flags/4x3/eg-16a11fa93856ddc5fd46f8811adfc93660175724b20eaab55ff046855a352d2c.svg":{"logical_path":"flags/4x3/eg.svg","mtime":"2019-05-14T13:11:18+02:00","size":9978,"digest":"16a11fa93856ddc5fd46f8811adfc93660175724b20eaab55ff046855a352d2c","integrity":"sha256-FqEfqThW3cX9RviBGt/JNmAXVySyDqq1X/BGhVo1LSw="},"flags/1x1/eg-9f4d098c604326bbc3692f9e2f335dbc9b34bdf2706565bf448380f0a889d1e2.svg":{"logical_path":"flags/1x1/eg.svg","mtime":"2019-05-14T13:11:18+02:00","size":9992,"digest":"9f4d098c604326bbc3692f9e2f335dbc9b34bdf2706565bf448380f0a889d1e2","integrity":"sha256-n00JjGBDJrvDaS+eLzNdvJs0vfJwZWW/RIOA8KiJ0eI="},"flags/4x3/eh-9cf4a74d29c1a1afc4137deeb5b678d55c8fbdf8d181217267f3a5cce6a76a97.svg":{"logical_path":"flags/4x3/eh.svg","mtime":"2019-05-14T13:11:18+02:00","size":878,"digest":"9cf4a74d29c1a1afc4137deeb5b678d55c8fbdf8d181217267f3a5cce6a76a97","integrity":"sha256-nPSnTSnBoa/EE33utbZ41VyPvfjRgSFyZ/OlzOanapc="},"flags/1x1/eh-16c3327dbcf3483e634b3536b056324b5478212dae6d060f2ffb2ec961cd382f.svg":{"logical_path":"flags/1x1/eh.svg","mtime":"2019-05-14T13:11:18+02:00","size":828,"digest":"16c3327dbcf3483e634b3536b056324b5478212dae6d060f2ffb2ec961cd382f","integrity":"sha256-FsMyfbzzSD5jSzU2sFYyS1R4IS2ubQYPL/suyWHNOC8="},"flags/4x3/er-69a1e1e45289d1282df4b1e5ce5e712d69fbe314abd0c922353fce90814c543e.svg":{"logical_path":"flags/4x3/er.svg","mtime":"2019-05-14T13:11:18+02:00","size":3207,"digest":"69a1e1e45289d1282df4b1e5ce5e712d69fbe314abd0c922353fce90814c543e","integrity":"sha256-aaHh5FKJ0Sgt9LHlzl5xLWn74xSr0MkiNT/OkIFMVD4="},"flags/1x1/er-90d49408e58955cf1cf3185b0193e03c4a107042d47ef5e975dbbe10c6ef7f4a.svg":{"logical_path":"flags/1x1/er.svg","mtime":"2019-05-14T13:11:18+02:00","size":3395,"digest":"90d49408e58955cf1cf3185b0193e03c4a107042d47ef5e975dbbe10c6ef7f4a","integrity":"sha256-kNSUCOWJVc8c8xhbAZPgPEoQcELUfvXpddu+EMbvf0o="},"flags/4x3/es-50e59681c6b6412498bd9cbfc473abedc713db75c54c538b839db3c394d64499.svg":{"logical_path":"flags/4x3/es.svg","mtime":"2019-05-14T13:11:18+02:00","size":92574,"digest":"50e59681c6b6412498bd9cbfc473abedc713db75c54c538b839db3c394d64499","integrity":"sha256-UOWWgca2QSSYvZy/xHOr7ccT23XFTFOLg52zw5TWRJk="},"flags/1x1/es-29c68fa3c9c8c2adacdc2eb0162e9c2fa998faa408836900ec6285000476800d.svg":{"logical_path":"flags/1x1/es.svg","mtime":"2019-05-14T13:11:18+02:00","size":94269,"digest":"29c68fa3c9c8c2adacdc2eb0162e9c2fa998faa408836900ec6285000476800d","integrity":"sha256-KcaPo8nIwq2s3C6wFi6cL6mY+qQIg2kA7GKFAAR2gA0="},"flags/4x3/et-14263ba7ea890fd0a4d89a2791343ecb7acc89aab1fc2593e00a6093b22251df.svg":{"logical_path":"flags/4x3/et.svg","mtime":"2019-05-14T13:11:18+02:00","size":1243,"digest":"14263ba7ea890fd0a4d89a2791343ecb7acc89aab1fc2593e00a6093b22251df","integrity":"sha256-FCY7p+qJD9Ck2JonkTQ+y3rMiaqx/CWT4Apgk7IiUd8="},"flags/1x1/et-086eefb70e9adad537cc1c640a72cc0fa843ec7a9b06b2778aa98b2db055bfe6.svg":{"logical_path":"flags/1x1/et.svg","mtime":"2019-05-14T13:11:18+02:00","size":1242,"digest":"086eefb70e9adad537cc1c640a72cc0fa843ec7a9b06b2778aa98b2db055bfe6","integrity":"sha256-CG7vtw6a2tU3zBxkCnLMD6hD7HqbBrJ3iqmLLbBVv+Y="},"flags/4x3/fi-a4c41caa02a4f6803ea0d6c36de4beebf20d150e3df742b1369a4099c2ff648e.svg":{"logical_path":"flags/4x3/fi.svg","mtime":"2019-05-14T13:11:18+02:00","size":240,"digest":"a4c41caa02a4f6803ea0d6c36de4beebf20d150e3df742b1369a4099c2ff648e","integrity":"sha256-pMQcqgKk9oA+oNbDbeS+6/INFQ4990KxNppAmcL/ZI4="},"flags/1x1/fi-c5fdf318fac5fdfc94fe54268618e58a2bc5933617ead09992900f90cc25de9a.svg":{"logical_path":"flags/1x1/fi.svg","mtime":"2019-05-14T13:11:18+02:00","size":243,"digest":"c5fdf318fac5fdfc94fe54268618e58a2bc5933617ead09992900f90cc25de9a","integrity":"sha256-xf3zGPrF/fyU/lQmhhjliivFkzYX6tCZkpAPkMwl3po="},"flags/4x3/fj-cb0cc4b3b5c202f07487ee519f48b3eadb47035f5f2d5d3f99d20f81e48d6b79.svg":{"logical_path":"flags/4x3/fj.svg","mtime":"2019-05-14T13:11:18+02:00","size":27388,"digest":"cb0cc4b3b5c202f07487ee519f48b3eadb47035f5f2d5d3f99d20f81e48d6b79","integrity":"sha256-ywzEs7XCAvB0h+5Rn0iz6ttHA19fLV0/mdIPgeSNa3k="},"flags/1x1/fj-c2c7fd536841925e7647b2d510d6a0c58700e2a8ded0e42008fb93ffacde101f.svg":{"logical_path":"flags/1x1/fj.svg","mtime":"2019-05-14T13:11:18+02:00","size":27519,"digest":"c2c7fd536841925e7647b2d510d6a0c58700e2a8ded0e42008fb93ffacde101f","integrity":"sha256-wsf9U2hBkl52R7LVENagxYcA4qje0OQgCPuT/6zeEB8="},"flags/4x3/fk-cb61eaa0d7221823f7d17de59ea88ed16b506f9585ab0c7291cf839449d82968.svg":{"logical_path":"flags/4x3/fk.svg","mtime":"2019-05-14T13:11:18+02:00","size":30453,"digest":"cb61eaa0d7221823f7d17de59ea88ed16b506f9585ab0c7291cf839449d82968","integrity":"sha256-y2HqoNciGCP30X3lnqiO0WtQb5WFqwxykc+DlEnYKWg="},"flags/1x1/fk-a871742380ae157d1211a63cc35cd3621b1bf6de6d67e4a8e3565ad200b1d8cf.svg":{"logical_path":"flags/1x1/fk.svg","mtime":"2019-05-14T13:11:18+02:00","size":30648,"digest":"a871742380ae157d1211a63cc35cd3621b1bf6de6d67e4a8e3565ad200b1d8cf","integrity":"sha256-qHF0I4CuFX0SEaY8w1zTYhsb9t5tZ+So41Za0gCx2M8="},"flags/4x3/fm-079b937562a9a412aae8fb762b571ddb49bf23627943c97247b6a9bbdb768153.svg":{"logical_path":"flags/4x3/fm.svg","mtime":"2019-05-14T13:11:18+02:00","size":773,"digest":"079b937562a9a412aae8fb762b571ddb49bf23627943c97247b6a9bbdb768153","integrity":"sha256-B5uTdWKppBKq6Pt2K1cd20m/I2J5Q8lyR7apu9t2gVM="},"flags/1x1/fm-dbec73633ecd8a6c50f56d54df36bbe6a2f8fb534ac7658477c82cad14a806a8.svg":{"logical_path":"flags/1x1/fm.svg","mtime":"2019-05-14T13:11:18+02:00","size":763,"digest":"dbec73633ecd8a6c50f56d54df36bbe6a2f8fb534ac7658477c82cad14a806a8","integrity":"sha256-2+xzYz7NimxQ9W1U3za75qL4+1NKx2WEd8gsrRSoBqg="},"flags/4x3/fo-27279c2481bb1cb3e44850a948987d6a8411acffa770c3aecd1b76d4c5853413.svg":{"logical_path":"flags/4x3/fo.svg","mtime":"2019-05-14T13:11:18+02:00","size":567,"digest":"27279c2481bb1cb3e44850a948987d6a8411acffa770c3aecd1b76d4c5853413","integrity":"sha256-JyecJIG7HLPkSFCpSJh9aoQRrP+ncMOuzRt21MWFNBM="},"flags/1x1/fo-7cb4fdbba1c7223702d843cb0709ddc799f89f909dfe101e3e36d6bf36c3e67f.svg":{"logical_path":"flags/1x1/fo.svg","mtime":"2019-05-14T13:11:18+02:00","size":537,"digest":"7cb4fdbba1c7223702d843cb0709ddc799f89f909dfe101e3e36d6bf36c3e67f","integrity":"sha256-fLT9u6HHIjcC2EPLBwndx5n4n5Cd/hAePjbWvzbD5n8="},"flags/4x3/fr-30ed2f68dc9a17927643640f48f3d2a858bd041770547035349c6e79713cd84e.svg":{"logical_path":"flags/4x3/fr.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"30ed2f68dc9a17927643640f48f3d2a858bd041770547035349c6e79713cd84e","integrity":"sha256-MO0vaNyaF5J2Q2QPSPPSqFi9BBdwVHA1NJxueXE82E4="},"flags/1x1/fr-6b849151204c66fa661c30b34e62919a13b9e66b7cd37a4fc8962e8e0baf9bdc.svg":{"logical_path":"flags/1x1/fr.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"6b849151204c66fa661c30b34e62919a13b9e66b7cd37a4fc8962e8e0baf9bdc","integrity":"sha256-a4SRUSBMZvpmHDCzTmKRmhO55mt803pPyJYujguvm9w="},"flags/4x3/ga-e3840f9d5bd6ee08db748d37a534500b837bee0f8ce65987b2f099a6afd2cc63.svg":{"logical_path":"flags/4x3/ga.svg","mtime":"2019-05-14T13:11:18+02:00","size":277,"digest":"e3840f9d5bd6ee08db748d37a534500b837bee0f8ce65987b2f099a6afd2cc63","integrity":"sha256-44QPnVvW7gjbdI03pTRQC4N77g+M5lmHsvCZpq/SzGM="},"flags/1x1/ga-9eafd5388042b3d2258ac6223075b726426210136b9851b637973105721b64d9.svg":{"logical_path":"flags/1x1/ga.svg","mtime":"2019-05-14T13:11:18+02:00","size":281,"digest":"9eafd5388042b3d2258ac6223075b726426210136b9851b637973105721b64d9","integrity":"sha256-nq/VOIBCs9IlisYiMHW3JkJiEBNrmFG2N5cxBXIbZNk="},"flags/4x3/gb-ce93c8a6b974d63998e263f6d25f898fc20580a28464457f2f4463b687e4fe8d.svg":{"logical_path":"flags/4x3/gb.svg","mtime":"2019-05-14T13:11:18+02:00","size":834,"digest":"ce93c8a6b974d63998e263f6d25f898fc20580a28464457f2f4463b687e4fe8d","integrity":"sha256-zpPIprl01jmY4mP20l+Jj8IFgKKEZEV/L0Rjtofk/o0="},"flags/1x1/gb-1d93e1ce2e2e10c1709e4dc50ac956c007b2c1a63a4bc22ddfd64354f79ad457.svg":{"logical_path":"flags/1x1/gb.svg","mtime":"2019-05-14T13:11:18+02:00","size":792,"digest":"1d93e1ce2e2e10c1709e4dc50ac956c007b2c1a63a4bc22ddfd64354f79ad457","integrity":"sha256-HZPhzi4uEMFwnk3FCslWwAeywaY6S8It39ZDVPea1Fc="},"flags/4x3/gd-7c3a6b6068bbd9a6abc98c2297dd4acd5e31022e5a4210fc0e1205ec28498fa2.svg":{"logical_path":"flags/4x3/gd.svg","mtime":"2019-05-14T13:11:18+02:00","size":1694,"digest":"7c3a6b6068bbd9a6abc98c2297dd4acd5e31022e5a4210fc0e1205ec28498fa2","integrity":"sha256-fDprYGi72aaryYwil91KzV4xAi5aQhD8DhIF7ChJj6I="},"flags/1x1/gd-2310bc03d9e8ddc8599b40891bfb10b812b07023881599a7e02e3028d1bc9ca8.svg":{"logical_path":"flags/1x1/gd.svg","mtime":"2019-05-14T13:11:18+02:00","size":1834,"digest":"2310bc03d9e8ddc8599b40891bfb10b812b07023881599a7e02e3028d1bc9ca8","integrity":"sha256-IxC8A9no3chZm0CJG/sQuBKwcCOIFZmn4C4wKNG8nKg="},"flags/4x3/ge-501c0135fb8c377dbd2859ff6290b47ef4907a8e2ab2ae1e39116b716db6795f.svg":{"logical_path":"flags/4x3/ge.svg","mtime":"2019-05-14T13:11:18+02:00","size":1400,"digest":"501c0135fb8c377dbd2859ff6290b47ef4907a8e2ab2ae1e39116b716db6795f","integrity":"sha256-UBwBNfuMN329KFn/YpC0fvSQeo4qsq4eORFrcW22eV8="},"flags/1x1/ge-ca9ee36883ec12048fbb7fbbfaf231c0d4848ae0b07dab74a46d53b7b34d8114.svg":{"logical_path":"flags/1x1/ge.svg","mtime":"2019-05-14T13:11:18+02:00","size":1544,"digest":"ca9ee36883ec12048fbb7fbbfaf231c0d4848ae0b07dab74a46d53b7b34d8114","integrity":"sha256-yp7jaIPsEgSPu3+7+vIxwNSEiuCwfat0pG1Tt7NNgRQ="},"flags/4x3/gf-7c165f90bfe6ac3674903632182221a992f017ff706354b1761002382e89c2c2.svg":{"logical_path":"flags/4x3/gf.svg","mtime":"2019-05-14T13:11:18+02:00","size":261,"digest":"7c165f90bfe6ac3674903632182221a992f017ff706354b1761002382e89c2c2","integrity":"sha256-fBZfkL/mrDZ0kDYyGCIhqZLwF/9wY1SxdhACOC6JwsI="},"flags/1x1/gf-8838337b15cdcf143fac16c714e8dbf2d893d2ea8f1c8ef06dadcb652dfec41c.svg":{"logical_path":"flags/1x1/gf.svg","mtime":"2019-05-14T13:11:18+02:00","size":264,"digest":"8838337b15cdcf143fac16c714e8dbf2d893d2ea8f1c8ef06dadcb652dfec41c","integrity":"sha256-iDgzexXNzxQ/rBbHFOjb8tiT0uqPHI7wba3LZS3+xBw="},"flags/4x3/gg-2c7bfc50d5bcd374b5f6107974d06af24e70edba31ad71a225e0c2ecc2d6e778.svg":{"logical_path":"flags/4x3/gg.svg","mtime":"2019-05-14T13:11:18+02:00","size":598,"digest":"2c7bfc50d5bcd374b5f6107974d06af24e70edba31ad71a225e0c2ecc2d6e778","integrity":"sha256-LHv8UNW803S19hB5dNBq8k5w7boxrXGiJeDC7MLW53g="},"flags/1x1/gg-509489b1792831bb27d6975c76aa0a2ac2fa2c3906bcf844f616de5e0fbbc359.svg":{"logical_path":"flags/1x1/gg.svg","mtime":"2019-05-14T13:11:18+02:00","size":628,"digest":"509489b1792831bb27d6975c76aa0a2ac2fa2c3906bcf844f616de5e0fbbc359","integrity":"sha256-UJSJsXkoMbsn1pdcdqoKKsL6LDkGvPhE9hbeXg+7w1k="},"flags/4x3/gh-79c187756e93df22fae571ad9419629c5247c016e32a74471e0d461048fdf5cf.svg":{"logical_path":"flags/4x3/gh.svg","mtime":"2019-05-14T13:11:18+02:00","size":286,"digest":"79c187756e93df22fae571ad9419629c5247c016e32a74471e0d461048fdf5cf","integrity":"sha256-ecGHdW6T3yL65XGtlBlinFJHwBbjKnRHHg1GEEj99c8="},"flags/1x1/gh-e7bf18e6337982ee31e3673ab93e722b3410b7a4c202656a4bc3887d8656286b.svg":{"logical_path":"flags/1x1/gh.svg","mtime":"2019-05-14T13:11:18+02:00","size":299,"digest":"e7bf18e6337982ee31e3673ab93e722b3410b7a4c202656a4bc3887d8656286b","integrity":"sha256-578Y5jN5gu4x42c6uT5yKzQQt6TCAmVqS8OIfYZWKGs="},"flags/4x3/gi-ed99b369c8c77e64abd59fab1f28155d71b4378b49625c66ab0ab6dff4f88087.svg":{"logical_path":"flags/4x3/gi.svg","mtime":"2019-05-14T13:11:18+02:00","size":2972,"digest":"ed99b369c8c77e64abd59fab1f28155d71b4378b49625c66ab0ab6dff4f88087","integrity":"sha256-7ZmzacjHfmSr1Z+rHygVXXG0N4tJYlxmqwq23/T4gIc="},"flags/1x1/gi-2e563e96e766e13c0a9c5a3a372059a44739bb696e853d71a6f6b08c491dfb9a.svg":{"logical_path":"flags/1x1/gi.svg","mtime":"2019-05-14T13:11:18+02:00","size":2964,"digest":"2e563e96e766e13c0a9c5a3a372059a44739bb696e853d71a6f6b08c491dfb9a","integrity":"sha256-LlY+ludm4TwKnFo6NyBZpEc5u2luhT1xpvawjEkd+5o="},"flags/4x3/gl-612e560dbad68d540be672b80e22c54db43d6e2070523e81c156ccd6b3fc4260.svg":{"logical_path":"flags/4x3/gl.svg","mtime":"2019-05-14T13:11:18+02:00","size":229,"digest":"612e560dbad68d540be672b80e22c54db43d6e2070523e81c156ccd6b3fc4260","integrity":"sha256-YS5WDbrWjVQL5nK4DiLFTbQ9biBwUj6BwVbM1rP8QmA="},"flags/1x1/gl-a9bb35d2b9ff27638658d9ad6b9e2c4f452072b9a80b508d32e76d37bf62cf6e.svg":{"logical_path":"flags/1x1/gl.svg","mtime":"2019-05-14T13:11:18+02:00","size":243,"digest":"a9bb35d2b9ff27638658d9ad6b9e2c4f452072b9a80b508d32e76d37bf62cf6e","integrity":"sha256-qbs10rn/J2OGWNmta54sT0UgcrmoC1CNMudtN79iz24="},"flags/4x3/gm-4a6f9670a41548cceaced2b728e4bc56acbc4a3ba5544e7a097f7dae7a8bb045.svg":{"logical_path":"flags/4x3/gm.svg","mtime":"2019-05-14T13:11:18+02:00","size":543,"digest":"4a6f9670a41548cceaced2b728e4bc56acbc4a3ba5544e7a097f7dae7a8bb045","integrity":"sha256-Sm+WcKQVSMzqztK3KOS8Vqy8SjulVE56CX99rnqLsEU="},"flags/1x1/gm-b67f9f6bce2f8c8700c198de8bfafac72d01b8a1e55b77f71e8cafdc58f8af5c.svg":{"logical_path":"flags/1x1/gm.svg","mtime":"2019-05-14T13:11:18+02:00","size":385,"digest":"b67f9f6bce2f8c8700c198de8bfafac72d01b8a1e55b77f71e8cafdc58f8af5c","integrity":"sha256-tn+fa84vjIcAwZjei/r6xy0BuKHlW3f3Hoyv3Fj4r1w="},"flags/4x3/gn-873b4eb52f34c7558bef93cfd1b82117b5c32c9fbc0610f8821ccd22f28abe28.svg":{"logical_path":"flags/4x3/gn.svg","mtime":"2019-05-14T13:11:18+02:00","size":298,"digest":"873b4eb52f34c7558bef93cfd1b82117b5c32c9fbc0610f8821ccd22f28abe28","integrity":"sha256-hztOtS80x1WL75PP0bghF7XDLJ+8BhD4ghzNIvKKvig="},"flags/1x1/gn-72f51dc30cf0ed5459ad0f239cf3043eac05ece75945bcaf4ea6653af868c504.svg":{"logical_path":"flags/1x1/gn.svg","mtime":"2019-05-14T13:11:18+02:00","size":298,"digest":"72f51dc30cf0ed5459ad0f239cf3043eac05ece75945bcaf4ea6653af868c504","integrity":"sha256-cvUdwwzw7VRZrQ8jnPMEPqwF7OdZRbyvTqZlOvhoxQQ="},"flags/4x3/gp-4559cad3eb2d173214161d16b0237c68f5c817749a39c862fa7b23dfb4aee923.svg":{"logical_path":"flags/4x3/gp.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"4559cad3eb2d173214161d16b0237c68f5c817749a39c862fa7b23dfb4aee923","integrity":"sha256-RVnK0+stFzIUFh0WsCN8aPXIF3SaOchi+nsj37Su6SM="},"flags/1x1/gp-d6669532054db5b7e441f4858c28920246a65ca3e8a15518c64c7bbb4f9c6416.svg":{"logical_path":"flags/1x1/gp.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"d6669532054db5b7e441f4858c28920246a65ca3e8a15518c64c7bbb4f9c6416","integrity":"sha256-1maVMgVNtbfkQfSFjCiSAkamXKPooVUYxkx7u0+cZBY="},"flags/4x3/gq-0c8dfe7f9543307056bbe6d6e44a16c17201228e5344d5afec1ccf1b9a5eb2f9.svg":{"logical_path":"flags/4x3/gq.svg","mtime":"2019-05-14T13:11:18+02:00","size":5188,"digest":"0c8dfe7f9543307056bbe6d6e44a16c17201228e5344d5afec1ccf1b9a5eb2f9","integrity":"sha256-DI3+f5VDMHBWu+bW5EoWwXIBIo5TRNWv7BzPG5pesvk="},"flags/1x1/gq-ecb761e6db59b9bf8ba37533eaf0c60b7fcc7c0dfa2fcf281ee84c970dcb10f8.svg":{"logical_path":"flags/1x1/gq.svg","mtime":"2019-05-14T13:11:18+02:00","size":5280,"digest":"ecb761e6db59b9bf8ba37533eaf0c60b7fcc7c0dfa2fcf281ee84c970dcb10f8","integrity":"sha256-7Ldh5ttZub+Lo3Uz6vDGC3/MfA36L88oHuhMlw3LEPg="},"flags/4x3/gr-4a4086310397bffa682d439be8650a9e28d94e32963b6411b61435292ac4cf80.svg":{"logical_path":"flags/4x3/gr.svg","mtime":"2019-05-14T13:11:18+02:00","size":818,"digest":"4a4086310397bffa682d439be8650a9e28d94e32963b6411b61435292ac4cf80","integrity":"sha256-SkCGMQOXv/poLUOb6GUKnijZTjKWO2QRthQ1KSrEz4A="},"flags/1x1/gr-0cbd171892c0568b055d3b6585d58ac13dd60dfbcfad16eda1f4f9ead11dd16f.svg":{"logical_path":"flags/1x1/gr.svg","mtime":"2019-05-14T13:11:18+02:00","size":875,"digest":"0cbd171892c0568b055d3b6585d58ac13dd60dfbcfad16eda1f4f9ead11dd16f","integrity":"sha256-DL0XGJLAVosFXTtlhdWKwT3WDfvPrRbtofT56tEd0W8="},"flags/4x3/gs-e45169a93a9e94c15f5cb765a6c863319171fb9b4dce56094411829cd688d486.svg":{"logical_path":"flags/4x3/gs.svg","mtime":"2019-05-14T13:11:18+02:00","size":34658,"digest":"e45169a93a9e94c15f5cb765a6c863319171fb9b4dce56094411829cd688d486","integrity":"sha256-5FFpqTqelMFfXLdlpshjMZFx+5tNzlYJRBGCnNaI1IY="},"flags/1x1/gs-3efc9e1b32961f9aa9d7faa2626e596282b63d049f6717c2378b28e3f508e79a.svg":{"logical_path":"flags/1x1/gs.svg","mtime":"2019-05-14T13:11:18+02:00","size":35151,"digest":"3efc9e1b32961f9aa9d7faa2626e596282b63d049f6717c2378b28e3f508e79a","integrity":"sha256-PvyeGzKWH5qp1/qiYm5ZYoK2PQSfZxfCN4so4/UI55o="},"flags/4x3/gt-64a7345cf66facf7f323d2142aebb4172191108a78ac7493b1a6077b78ac8ec5.svg":{"logical_path":"flags/4x3/gt.svg","mtime":"2019-05-14T13:11:18+02:00","size":37857,"digest":"64a7345cf66facf7f323d2142aebb4172191108a78ac7493b1a6077b78ac8ec5","integrity":"sha256-ZKc0XPZvrPfzI9IUKuu0FyGREIp4rHSTsaYHe3isjsU="},"flags/1x1/gt-436a2af3d95cf3cb13ded897f319cfd6e2c087d678ad0e971c198b0d2c029911.svg":{"logical_path":"flags/1x1/gt.svg","mtime":"2019-05-14T13:11:18+02:00","size":37857,"digest":"436a2af3d95cf3cb13ded897f319cfd6e2c087d678ad0e971c198b0d2c029911","integrity":"sha256-Q2oq89lc88sT3tiX8xnP1uLAh9Z4rQ6XHBmLDSwCmRE="},"flags/4x3/gu-f560822ee237e5277829e63613a615a2ee3d8cc6196dffffe0f0d56a49b11c53.svg":{"logical_path":"flags/4x3/gu.svg","mtime":"2019-05-14T13:11:18+02:00","size":4859,"digest":"f560822ee237e5277829e63613a615a2ee3d8cc6196dffffe0f0d56a49b11c53","integrity":"sha256-9WCCLuI35Sd4KeY2E6YVou49jMYZbf//4PDVakmxHFM="},"flags/1x1/gu-a71c9d290c66c1a0929b05436dc6a8229b1147d7cc62336e04c9adf697030450.svg":{"logical_path":"flags/1x1/gu.svg","mtime":"2019-05-14T13:11:18+02:00","size":4644,"digest":"a71c9d290c66c1a0929b05436dc6a8229b1147d7cc62336e04c9adf697030450","integrity":"sha256-pxydKQxmwaCSmwVDbcaoIpsRR9fMYjNuBMmt9pcDBFA="},"flags/4x3/gw-0dc9ec17735ed605b68672947ce55c49a4ec1551491ccd121f482c1875cdf219.svg":{"logical_path":"flags/4x3/gw.svg","mtime":"2019-05-14T13:11:18+02:00","size":816,"digest":"0dc9ec17735ed605b68672947ce55c49a4ec1551491ccd121f482c1875cdf219","integrity":"sha256-DcnsF3Ne1gW2hnKUfOVcSaTsFVFJHM0SH0gsGHXN8hk="},"flags/1x1/gw-7868c305e4a64b0d8ebfd3f7cb8c881841d71a7e0c3ead2683fe503c80de0674.svg":{"logical_path":"flags/1x1/gw.svg","mtime":"2019-05-14T13:11:18+02:00","size":892,"digest":"7868c305e4a64b0d8ebfd3f7cb8c881841d71a7e0c3ead2683fe503c80de0674","integrity":"sha256-eGjDBeSmSw2Ov9P3y4yIGEHXGn4MPq0mg/5QPIDeBnQ="},"flags/4x3/gy-c9126e544c62508abfb898f0af0bd79c46f4c767c9ed6f928418a24b0f246d85.svg":{"logical_path":"flags/4x3/gy.svg","mtime":"2019-05-14T13:11:18+02:00","size":491,"digest":"c9126e544c62508abfb898f0af0bd79c46f4c767c9ed6f928418a24b0f246d85","integrity":"sha256-yRJuVExiUIq/uJjwrwvXnEb0x2fJ7W+ShBiiSw8kbYU="},"flags/1x1/gy-0e3b849ce460f8ab1ec7cf66a25be1ba91e89b72d8b0aa679a0553464f37a972.svg":{"logical_path":"flags/1x1/gy.svg","mtime":"2019-05-14T13:11:18+02:00","size":484,"digest":"0e3b849ce460f8ab1ec7cf66a25be1ba91e89b72d8b0aa679a0553464f37a972","integrity":"sha256-DjuEnORg+Ksex89molvhupHom3LYsKpnmgVTRk83qXI="},"flags/4x3/hk-cece9126ccbf9151feadfed75791ebf32d4a16beab12f182404519d0cc24eec7.svg":{"logical_path":"flags/4x3/hk.svg","mtime":"2019-05-14T13:11:18+02:00","size":3511,"digest":"cece9126ccbf9151feadfed75791ebf32d4a16beab12f182404519d0cc24eec7","integrity":"sha256-zs6RJsy/kVH+rf7XV5Hr8y1KFr6rEvGCQEUZ0Mwk7sc="},"flags/1x1/hk-9fad00e06f9034877149394914baa2bc3292223b0e32df2b1f9399d4de6e167d.svg":{"logical_path":"flags/1x1/hk.svg","mtime":"2019-05-14T13:11:18+02:00","size":3561,"digest":"9fad00e06f9034877149394914baa2bc3292223b0e32df2b1f9399d4de6e167d","integrity":"sha256-n60A4G+QNIdxSTlJFLqivDKSIjsOMt8rH5OZ1N5uFn0="},"flags/4x3/hm-4b4923b81da24d62ebf31a9bc0addf76beef84593374b1cbd03ba19f3b12e3e9.svg":{"logical_path":"flags/4x3/hm.svg","mtime":"2019-05-14T13:11:18+02:00","size":1328,"digest":"4b4923b81da24d62ebf31a9bc0addf76beef84593374b1cbd03ba19f3b12e3e9","integrity":"sha256-S0kjuB2iTWLr8xqbwK3fdr7vhFkzdLHL0DuhnzsS4+k="},"flags/1x1/hm-776c822113a22e83581234d05f40bfc0ed38b60648d87f513f3da3fff96ffb61.svg":{"logical_path":"flags/1x1/hm.svg","mtime":"2019-05-14T13:11:18+02:00","size":1312,"digest":"776c822113a22e83581234d05f40bfc0ed38b60648d87f513f3da3fff96ffb61","integrity":"sha256-d2yCIROiLoNYEjTQX0C/wO04tgZI2H9RPz2j//lv+2E="},"flags/4x3/hn-855c830786283862a5f399e0d69dffe52b6223b91b32e31b55d55c82f2fa32c9.svg":{"logical_path":"flags/4x3/hn.svg","mtime":"2019-05-14T13:11:18+02:00","size":1115,"digest":"855c830786283862a5f399e0d69dffe52b6223b91b32e31b55d55c82f2fa32c9","integrity":"sha256-hVyDB4YoOGKl85ng1p3/5StiI7kbMuMbVdVcgvL6Msk="},"flags/1x1/hn-64c38bac9403417c4e276bf5536d284fc5410fc04b80acd39a961d298f430dbd.svg":{"logical_path":"flags/1x1/hn.svg","mtime":"2019-05-14T13:11:18+02:00","size":1119,"digest":"64c38bac9403417c4e276bf5536d284fc5410fc04b80acd39a961d298f430dbd","integrity":"sha256-ZMOLrJQDQXxOJ2v1U20oT8VBD8BLgKzTmpYdKY9DDb0="},"flags/4x3/hr-c8cad861f7398a22b9d27ea682d2778df0dde8e146d30142b5294daf988854af.svg":{"logical_path":"flags/4x3/hr.svg","mtime":"2019-05-14T13:11:18+02:00","size":41617,"digest":"c8cad861f7398a22b9d27ea682d2778df0dde8e146d30142b5294daf988854af","integrity":"sha256-yMrYYfc5iiK50n6mgtJ3jfDd6OFG0wFCtSlNr5iIVK8="},"flags/1x1/hr-60c093df6760e4cc6abe26c37a52be3b51458f02712f18e11f08b07dc623b489.svg":{"logical_path":"flags/1x1/hr.svg","mtime":"2019-05-14T13:11:18+02:00","size":41808,"digest":"60c093df6760e4cc6abe26c37a52be3b51458f02712f18e11f08b07dc623b489","integrity":"sha256-YMCT32dg5MxqvibDelK+O1FFjwJxLxjhHwiwfcYjtIk="},"flags/4x3/ht-fe81da06228fa36e7f211bec0d9f0c020f5b9c7f81534b4cb2251848aa276b16.svg":{"logical_path":"flags/4x3/ht.svg","mtime":"2019-05-14T13:11:18+02:00","size":15231,"digest":"fe81da06228fa36e7f211bec0d9f0c020f5b9c7f81534b4cb2251848aa276b16","integrity":"sha256-/oHaBiKPo25/IRvsDZ8MAg9bnH+BU0tMsiUYSKonaxY="},"flags/1x1/ht-dd0197c078859c5a66ff3a51d3a3f92809768e36bfabdec0fc0ab60d068afcd9.svg":{"logical_path":"flags/1x1/ht.svg","mtime":"2019-05-14T13:11:18+02:00","size":15317,"digest":"dd0197c078859c5a66ff3a51d3a3f92809768e36bfabdec0fc0ab60d068afcd9","integrity":"sha256-3QGXwHiFnFpm/zpR06P5KAl2jja/q97A/Aq2DQaK/Nk="},"flags/4x3/hu-9aa998e636687aede491e307f3d068dbe58f2d90bfdfaec0e7ad03baa5b36344.svg":{"logical_path":"flags/4x3/hu.svg","mtime":"2019-05-14T13:11:18+02:00","size":277,"digest":"9aa998e636687aede491e307f3d068dbe58f2d90bfdfaec0e7ad03baa5b36344","integrity":"sha256-mqmY5jZoeu3kkeMH89Bo2+WPLZC/367A560DuqWzY0Q="},"flags/1x1/hu-06858d0fbd4320496e849010e35c8fe82eb618188cf6ec329aef93f5e7af1c23.svg":{"logical_path":"flags/1x1/hu.svg","mtime":"2019-05-14T13:11:18+02:00","size":279,"digest":"06858d0fbd4320496e849010e35c8fe82eb618188cf6ec329aef93f5e7af1c23","integrity":"sha256-BoWND71DIEluhJAQ41yP6C62GBiM9uwymu+T9eevHCM="},"flags/4x3/id-775dbfedd6533afdf5bd017ccc1ad4f8f4238cbe87393d9c837a669196f17293.svg":{"logical_path":"flags/4x3/id.svg","mtime":"2019-05-14T13:11:18+02:00","size":240,"digest":"775dbfedd6533afdf5bd017ccc1ad4f8f4238cbe87393d9c837a669196f17293","integrity":"sha256-d12/7dZTOv31vQF8zBrU+PQjjL6HOT2cg3pmkZbxcpM="},"flags/1x1/id-3920ce662a7ea937b2c11707d8e1f53db52611dd004edf753b0389ed490d9d29.svg":{"logical_path":"flags/1x1/id.svg","mtime":"2019-05-14T13:11:18+02:00","size":242,"digest":"3920ce662a7ea937b2c11707d8e1f53db52611dd004edf753b0389ed490d9d29","integrity":"sha256-OSDOZip+qTeywRcH2OH1PbUmEd0ATt91OwOJ7UkNnSk="},"flags/4x3/ie-6368a1c92440fcf80d3c35607543bcaa2d4662d6e0bc7acf6749ddbc418a72c0.svg":{"logical_path":"flags/4x3/ie.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"6368a1c92440fcf80d3c35607543bcaa2d4662d6e0bc7acf6749ddbc418a72c0","integrity":"sha256-Y2ihySRA/PgNPDVgdUO8qi1GYtbgvHrPZ0ndvEGKcsA="},"flags/1x1/ie-1997e9de640fa764677aa8f5d52f7888bb24a029160e8f67b06dbd043b4f11b3.svg":{"logical_path":"flags/1x1/ie.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"1997e9de640fa764677aa8f5d52f7888bb24a029160e8f67b06dbd043b4f11b3","integrity":"sha256-GZfp3mQPp2Rneqj11S94iLskoCkWDo9nsG29BDtPEbM="},"flags/4x3/il-d76883a2330f9a05a4a64990ba955fc1be90bb46bcb19ae548c21816e7e74178.svg":{"logical_path":"flags/4x3/il.svg","mtime":"2019-05-14T13:11:18+02:00","size":898,"digest":"d76883a2330f9a05a4a64990ba955fc1be90bb46bcb19ae548c21816e7e74178","integrity":"sha256-12iDojMPmgWkpkmQupVfwb6Qu0a8sZrlSMIYFufnQXg="},"flags/1x1/il-f5e643d0e10169a438119dc441ea3100b52a2ff569bbb3a3ad6d1131b47602d8.svg":{"logical_path":"flags/1x1/il.svg","mtime":"2019-05-14T13:11:18+02:00","size":851,"digest":"f5e643d0e10169a438119dc441ea3100b52a2ff569bbb3a3ad6d1131b47602d8","integrity":"sha256-9eZD0OEBaaQ4EZ3EQeoxALUqL/Vpu7OjrW0RMbR2Atg="},"flags/4x3/im-bbae8aa9dd129f8446556afe4904194ad43377d882f9a705fcf1da2bdbfabccf.svg":{"logical_path":"flags/4x3/im.svg","mtime":"2019-05-14T13:11:18+02:00","size":9948,"digest":"bbae8aa9dd129f8446556afe4904194ad43377d882f9a705fcf1da2bdbfabccf","integrity":"sha256-u66Kqd0Sn4RGVWr+SQQZStQzd9iC+acF/PHaK9v6vM8="},"flags/1x1/im-767d72c2e72d732d65c9b016adad983778dfbbb2b5b52e71830f4e41297728d3.svg":{"logical_path":"flags/1x1/im.svg","mtime":"2019-05-14T13:11:18+02:00","size":10295,"digest":"767d72c2e72d732d65c9b016adad983778dfbbb2b5b52e71830f4e41297728d3","integrity":"sha256-dn1ywuctcy1lybAWra2YN3jfu7K1tS5xgw9OQSl3KNM="},"flags/4x3/in-519e33321b8b2ba70a0b7557d66c62d7efdc9723896c49f82528b107028ffe29.svg":{"logical_path":"flags/4x3/in.svg","mtime":"2019-05-14T13:11:18+02:00","size":1077,"digest":"519e33321b8b2ba70a0b7557d66c62d7efdc9723896c49f82528b107028ffe29","integrity":"sha256-UZ4zMhuLK6cKC3VX1mxi1+/clyOJbEn4JSixBwKP/ik="},"flags/1x1/in-27831f76dc6a218a529b6e5d0eafc4c19c999461327b7c013f59226c0601a361.svg":{"logical_path":"flags/1x1/in.svg","mtime":"2019-05-14T13:11:18+02:00","size":1091,"digest":"27831f76dc6a218a529b6e5d0eafc4c19c999461327b7c013f59226c0601a361","integrity":"sha256-J4MfdtxqIYpSm25dDq/EwZyZlGEye3wBP1kibAYBo2E="},"flags/4x3/io-8d25a8e98f682199b413adfbcb6898c37058c9bae085e427fbab03d56e8c0de6.svg":{"logical_path":"flags/4x3/io.svg","mtime":"2019-05-14T13:11:18+02:00","size":27446,"digest":"8d25a8e98f682199b413adfbcb6898c37058c9bae085e427fbab03d56e8c0de6","integrity":"sha256-jSWo6Y9oIZm0E637y2iYw3BYybrgheQn+6sD1W6MDeY="},"flags/1x1/io-627f3b0cef72fd91ff426d74a007dc32d74c9fe677cf2c8355cba84359e16fde.svg":{"logical_path":"flags/1x1/io.svg","mtime":"2019-05-14T13:11:18+02:00","size":27497,"digest":"627f3b0cef72fd91ff426d74a007dc32d74c9fe677cf2c8355cba84359e16fde","integrity":"sha256-Yn87DO9y/ZH/Qm10oAfcMtdMn+Z3zyyDVcuoQ1nhb94="},"flags/4x3/iq-96b24d1439184d0a4c35ca7cea65e5f20469a0e8c8438963aad016e59c399cc6.svg":{"logical_path":"flags/4x3/iq.svg","mtime":"2019-05-14T13:11:18+02:00","size":1479,"digest":"96b24d1439184d0a4c35ca7cea65e5f20469a0e8c8438963aad016e59c399cc6","integrity":"sha256-lrJNFDkYTQpMNcp86mXl8gRpoOjIQ4ljqtAW5Zw5nMY="},"flags/1x1/iq-af04db139f8c44cfe0c612e2c05e848ccfad88fbbfcb58e88cdb7c80db365669.svg":{"logical_path":"flags/1x1/iq.svg","mtime":"2019-05-14T13:11:18+02:00","size":1484,"digest":"af04db139f8c44cfe0c612e2c05e848ccfad88fbbfcb58e88cdb7c80db365669","integrity":"sha256-rwTbE5+MRM/gxhLiwF6EjM+tiPu/y1jojNt8gNs2Vmk="},"flags/4x3/ir-db2c230d355ade2b1ac235ec647bb1535e4703c639a44f9ce112473272ee1019.svg":{"logical_path":"flags/4x3/ir.svg","mtime":"2019-05-14T13:11:18+02:00","size":15484,"digest":"db2c230d355ade2b1ac235ec647bb1535e4703c639a44f9ce112473272ee1019","integrity":"sha256-2ywjDTVa3isawjXsZHuxU15HA8Y5pE+c4RJHMnLuEBk="},"flags/1x1/ir-c648cbf56fc8f324fda477ea816783c9df8a7d398f45f5f94acc1c16c8877b63.svg":{"logical_path":"flags/1x1/ir.svg","mtime":"2019-05-14T13:11:18+02:00","size":15387,"digest":"c648cbf56fc8f324fda477ea816783c9df8a7d398f45f5f94acc1c16c8877b63","integrity":"sha256-xkjL9W/I8yT9pHfqgWeDyd+KfTmPRfX5SswcFsiHe2M="},"flags/4x3/is-29508693138977229758b0f322ba34e90dbcd7a8a74e8820729933d24051d9a7.svg":{"logical_path":"flags/4x3/is.svg","mtime":"2019-05-14T13:11:18+02:00","size":521,"digest":"29508693138977229758b0f322ba34e90dbcd7a8a74e8820729933d24051d9a7","integrity":"sha256-KVCGkxOJdyKXWLDzIro06Q2816inToggcpkz0kBR2ac="},"flags/1x1/is-b1c5db1d4b4853b8144f1d88ababbf14fc88752340457ba3e2c94ab5d54c9c01.svg":{"logical_path":"flags/1x1/is.svg","mtime":"2019-05-14T13:11:18+02:00","size":529,"digest":"b1c5db1d4b4853b8144f1d88ababbf14fc88752340457ba3e2c94ab5d54c9c01","integrity":"sha256-scXbHUtIU7gUTx2Iq6u/FPyIdSNARXuj4slKtdVMnAE="},"flags/4x3/it-d2c168050fc509adac1163b097b0ed409217560735b27802ae9259587c146562.svg":{"logical_path":"flags/4x3/it.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"d2c168050fc509adac1163b097b0ed409217560735b27802ae9259587c146562","integrity":"sha256-0sFoBQ/FCa2sEWOwl7DtQJIXVgc1sngCrpJZWHwUZWI="},"flags/1x1/it-592d34fb666430fa00f98d333623d5efa3c8e0e65ac4eee06bbc4c1de7ce4bea.svg":{"logical_path":"flags/1x1/it.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"592d34fb666430fa00f98d333623d5efa3c8e0e65ac4eee06bbc4c1de7ce4bea","integrity":"sha256-WS00+2ZkMPoA+Y0zNiPV76PI4OZaxO7ga7xMHefOS+o="},"flags/4x3/je-b363a4e3a21630f10791c2ebeb7f918320816ef87c155d4fd29ce37982f4df35.svg":{"logical_path":"flags/4x3/je.svg","mtime":"2019-05-14T13:11:18+02:00","size":4776,"digest":"b363a4e3a21630f10791c2ebeb7f918320816ef87c155d4fd29ce37982f4df35","integrity":"sha256-s2Ok46IWMPEHkcLr63+RgyCBbvh8FV1P0pzjeYL03zU="},"flags/1x1/je-6d43f74e30e099bc056da925ec34c0200708f0a6e90da34db1e59d54ce10cfd9.svg":{"logical_path":"flags/1x1/je.svg","mtime":"2019-05-14T13:11:18+02:00","size":4757,"digest":"6d43f74e30e099bc056da925ec34c0200708f0a6e90da34db1e59d54ce10cfd9","integrity":"sha256-bUP3TjDgmbwFbakl7DTAIAcI8KbpDaNNseWdVM4Qz9k="},"flags/4x3/jm-3d133fbc2564f29e036855e8be224d1579fe66fe49e0f5a2ba0bdcf3cb272823.svg":{"logical_path":"flags/4x3/jm.svg","mtime":"2019-05-14T13:11:18+02:00","size":392,"digest":"3d133fbc2564f29e036855e8be224d1579fe66fe49e0f5a2ba0bdcf3cb272823","integrity":"sha256-PRM/vCVk8p4DaFXoviJNFXn+Zv5J4PWiugvc88snKCM="},"flags/1x1/jm-1aea8ea5d8cbc717fa3ef331d8caa9a1421c88a7bd076e40f8276a5b6f8d0467.svg":{"logical_path":"flags/1x1/jm.svg","mtime":"2019-05-14T13:11:18+02:00","size":392,"digest":"1aea8ea5d8cbc717fa3ef331d8caa9a1421c88a7bd076e40f8276a5b6f8d0467","integrity":"sha256-GuqOpdjLxxf6PvMx2MqpoUIciKe9B25A+CdqW2+NBGc="},"flags/4x3/jo-eee432339f8ea6750987e1121187eb4b53ec537dd7ccb240c018de63f7a92db6.svg":{"logical_path":"flags/4x3/jo.svg","mtime":"2019-05-14T13:11:18+02:00","size":717,"digest":"eee432339f8ea6750987e1121187eb4b53ec537dd7ccb240c018de63f7a92db6","integrity":"sha256-7uQyM5+OpnUJh+ESEYfrS1PsU33XzLJAwBjeY/epLbY="},"flags/1x1/jo-7969b2083c535c85b7e714b755459a6606940e0b5ddb1b71e24daf0a180d14aa.svg":{"logical_path":"flags/1x1/jo.svg","mtime":"2019-05-14T13:11:18+02:00","size":694,"digest":"7969b2083c535c85b7e714b755459a6606940e0b5ddb1b71e24daf0a180d14aa","integrity":"sha256-eWmyCDxTXIW35xS3VUWaZgaUDgtd2xtx4k2vChgNFKo="},"flags/4x3/jp-2eadcfc67ba8cd50c1da86e08e6778e0102c3072865dab8c312cc88006da0abe.svg":{"logical_path":"flags/4x3/jp.svg","mtime":"2019-05-14T13:11:18+02:00","size":484,"digest":"2eadcfc67ba8cd50c1da86e08e6778e0102c3072865dab8c312cc88006da0abe","integrity":"sha256-Lq3PxnuozVDB2obgjmd44BAsMHKGXauMMSzIgAbaCr4="},"flags/1x1/jp-551281a75e6c6fd64eb65b39f56102b52c182f6c38ee045c9422f6592f0f65c5.svg":{"logical_path":"flags/1x1/jp.svg","mtime":"2019-05-14T13:11:18+02:00","size":500,"digest":"551281a75e6c6fd64eb65b39f56102b52c182f6c38ee045c9422f6592f0f65c5","integrity":"sha256-VRKBp15sb9ZOtls59WECtSwYL2w47gRclCL2WS8PZcU="},"flags/4x3/ke-45790bc3ec1ed8ed0124777a7c9e09163353b5af4ff70ae6604a61b53712df4b.svg":{"logical_path":"flags/4x3/ke.svg","mtime":"2019-05-14T13:11:18+02:00","size":1383,"digest":"45790bc3ec1ed8ed0124777a7c9e09163353b5af4ff70ae6604a61b53712df4b","integrity":"sha256-RXkLw+we2O0BJHd6fJ4JFjNTta9P9wrmYEphtTcS30s="},"flags/1x1/ke-2cca24ecf024b801543c0572efc9969ffdaf25cec313e2149c64961839bc301b.svg":{"logical_path":"flags/1x1/ke.svg","mtime":"2019-05-14T13:11:18+02:00","size":1495,"digest":"2cca24ecf024b801543c0572efc9969ffdaf25cec313e2149c64961839bc301b","integrity":"sha256-LMok7PAkuAFUPAVy78mWn/2vJc7DE+IUnGSWGDm8MBs="},"flags/4x3/kg-3879f8931d74cc9c5927261f4095b2bb786f3d62c803b2a96ec550a23fae9f49.svg":{"logical_path":"flags/4x3/kg.svg","mtime":"2019-05-14T13:11:18+02:00","size":3387,"digest":"3879f8931d74cc9c5927261f4095b2bb786f3d62c803b2a96ec550a23fae9f49","integrity":"sha256-OHn4kx10zJxZJyYfQJWyu3hvPWLIA7KpbsVQoj+un0k="},"flags/1x1/kg-74318932808f85b72df308358f2f2699ab0cb7ab4f7ad3c84c4be4024f0fb140.svg":{"logical_path":"flags/1x1/kg.svg","mtime":"2019-05-14T13:11:18+02:00","size":3337,"digest":"74318932808f85b72df308358f2f2699ab0cb7ab4f7ad3c84c4be4024f0fb140","integrity":"sha256-dDGJMoCPhbct8wg1jy8mmasMt6tPetPITEvkAk8PsUA="},"flags/4x3/kh-7409fab4ba4e676db7b5c61020b97893b1735fe0b8e39e9b4f96108400be704e.svg":{"logical_path":"flags/4x3/kh.svg","mtime":"2019-05-14T13:11:18+02:00","size":7295,"digest":"7409fab4ba4e676db7b5c61020b97893b1735fe0b8e39e9b4f96108400be704e","integrity":"sha256-dAn6tLpOZ223tcYQILl4k7FzX+C4456bT5YQhAC+cE4="},"flags/1x1/kh-2603f6a61b400cb12b87397eeba60ae1707511467d5e0c430c05809bf89e5042.svg":{"logical_path":"flags/1x1/kh.svg","mtime":"2019-05-14T13:11:18+02:00","size":7296,"digest":"2603f6a61b400cb12b87397eeba60ae1707511467d5e0c430c05809bf89e5042","integrity":"sha256-JgP2phtADLErhzl+66YK4XB1EUZ9XgxDDAWAm/ieUEI="},"flags/4x3/ki-617c1b52f3d9aee99d094edbd1775cae77aade266a1318eb4671b2bb1620ded5.svg":{"logical_path":"flags/4x3/ki.svg","mtime":"2019-05-14T13:11:18+02:00","size":5818,"digest":"617c1b52f3d9aee99d094edbd1775cae77aade266a1318eb4671b2bb1620ded5","integrity":"sha256-YXwbUvPZrumdCU7b0Xdcrneq3iZqExjrRnGyuxYg3tU="},"flags/1x1/ki-74615266b440a24f09abdeae3853d7e1111f0eba77df71ccd176d83fbd1fd9ad.svg":{"logical_path":"flags/1x1/ki.svg","mtime":"2019-05-14T13:11:18+02:00","size":5955,"digest":"74615266b440a24f09abdeae3853d7e1111f0eba77df71ccd176d83fbd1fd9ad","integrity":"sha256-dGFSZrRAok8Jq96uOFPX4REfDrp333HM0XbYP70f2a0="},"flags/4x3/km-0c9bcbf7e677a541fc8dff6f848c9d92b6982ac2934ae75faa56a2b846bb5698.svg":{"logical_path":"flags/4x3/km.svg","mtime":"2019-05-14T13:11:18+02:00","size":1061,"digest":"0c9bcbf7e677a541fc8dff6f848c9d92b6982ac2934ae75faa56a2b846bb5698","integrity":"sha256-DJvL9+Z3pUH8jf9vhIydkraYKsKTSudfqlaiuEa7Vpg="},"flags/1x1/km-81b0fbe53d09194270e8ed4cbe9be8eb1ae727e77957005369ad8bdc651dd1c8.svg":{"logical_path":"flags/1x1/km.svg","mtime":"2019-05-14T13:11:18+02:00","size":1044,"digest":"81b0fbe53d09194270e8ed4cbe9be8eb1ae727e77957005369ad8bdc651dd1c8","integrity":"sha256-gbD75T0JGUJw6O1Mvpvo6xrnJ+d5VwBTaa2L3GUd0cg="},"flags/4x3/kn-0442f55f81cd3b1057c609301f0af2b503d89a895a954af8c970df997e92bd03.svg":{"logical_path":"flags/4x3/kn.svg","mtime":"2019-05-14T13:11:18+02:00","size":816,"digest":"0442f55f81cd3b1057c609301f0af2b503d89a895a954af8c970df997e92bd03","integrity":"sha256-BEL1X4HNOxBXxgkwHwrytQPYmolalUr4yXDfmX6SvQM="},"flags/1x1/kn-897c34ef54bee486f0d24d2191e2400f49a19d98efb19f8c3f1a27fb0b97131a.svg":{"logical_path":"flags/1x1/kn.svg","mtime":"2019-05-14T13:11:18+02:00","size":820,"digest":"897c34ef54bee486f0d24d2191e2400f49a19d98efb19f8c3f1a27fb0b97131a","integrity":"sha256-iXw071S+5Ibw0k0hkeJAD0mhnZjvsZ+MPxon+wuXExo="},"flags/4x3/kp-a54f7201982b29530381b71a5e2a11c1153860f22c04c0a2d91bb0d20fedf78e.svg":{"logical_path":"flags/4x3/kp.svg","mtime":"2019-05-14T13:11:18+02:00","size":792,"digest":"a54f7201982b29530381b71a5e2a11c1153860f22c04c0a2d91bb0d20fedf78e","integrity":"sha256-pU9yAZgrKVMDgbcaXioRwRU4YPIsBMCi2Ruw0g/t944="},"flags/1x1/kp-758eccd89ef3707808fb68d931f086e49333904f4cc67c88468f3c96fb43b7b6.svg":{"logical_path":"flags/1x1/kp.svg","mtime":"2019-05-14T13:11:18+02:00","size":855,"digest":"758eccd89ef3707808fb68d931f086e49333904f4cc67c88468f3c96fb43b7b6","integrity":"sha256-dY7M2J7zcHgI+2jZMfCG5JMzkE9MxnyIRo88lvtDt7Y="},"flags/4x3/kr-c0b9b2c854133410c0ad9cadbc10b1e0bacf0305519883126d55bfa3214f9d06.svg":{"logical_path":"flags/4x3/kr.svg","mtime":"2019-05-14T13:11:18+02:00","size":1827,"digest":"c0b9b2c854133410c0ad9cadbc10b1e0bacf0305519883126d55bfa3214f9d06","integrity":"sha256-wLmyyFQTNBDArZytvBCx4LrPAwVRmIMSbVW/oyFPnQY="},"flags/1x1/kr-7c0457ac5d284b28b742ea2e061a1aa2a35f63171e464b3a7eb501a48756ce7b.svg":{"logical_path":"flags/1x1/kr.svg","mtime":"2019-05-14T13:11:18+02:00","size":1733,"digest":"7c0457ac5d284b28b742ea2e061a1aa2a35f63171e464b3a7eb501a48756ce7b","integrity":"sha256-fARXrF0oSyi3QuouBhoaoqNfYxceRks6frUBpIdWzns="},"flags/4x3/kw-81c3d5d25c7b840ef14783b51d18c6b7cfc61f94932c664bbc9e5879fef020eb.svg":{"logical_path":"flags/4x3/kw.svg","mtime":"2019-05-14T13:11:18+02:00","size":506,"digest":"81c3d5d25c7b840ef14783b51d18c6b7cfc61f94932c664bbc9e5879fef020eb","integrity":"sha256-gcPV0lx7hA7xR4O1HRjGt8/GH5STLGZLvJ5Yef7wIOs="},"flags/1x1/kw-66670211a67a4e61d4652a19d821dc5195f01a28a3a9b28b7e4c6048cd86b19c.svg":{"logical_path":"flags/1x1/kw.svg","mtime":"2019-05-14T13:11:18+02:00","size":510,"digest":"66670211a67a4e61d4652a19d821dc5195f01a28a3a9b28b7e4c6048cd86b19c","integrity":"sha256-ZmcCEaZ6TmHUZSoZ2CHcUZXwGiijqbKLfkxgSM2GsZw="},"flags/4x3/ky-0f4ab66d951ae33f800d680aaa5704804ba9c8844d4d80e5bee2e3fa0e100af3.svg":{"logical_path":"flags/4x3/ky.svg","mtime":"2019-05-14T13:11:18+02:00","size":21886,"digest":"0f4ab66d951ae33f800d680aaa5704804ba9c8844d4d80e5bee2e3fa0e100af3","integrity":"sha256-D0q2bZUa4z+ADWgKqlcEgEupyIRNTYDlvuLj+g4QCvM="},"flags/1x1/ky-fb5f57bb58b74d23377bad9954a75ab88d1587af68546ce137a6ae7a88a7701e.svg":{"logical_path":"flags/1x1/ky.svg","mtime":"2019-05-14T13:11:18+02:00","size":22495,"digest":"fb5f57bb58b74d23377bad9954a75ab88d1587af68546ce137a6ae7a88a7701e","integrity":"sha256-+19Xu1i3TSM3e62ZVKdauI0Vh69oVGzhN6aueoincB4="},"flags/4x3/kz-39edc952c598c71be2c9510944a8faf708d8e4b367b5ad78a688d1cd37f522eb.svg":{"logical_path":"flags/4x3/kz.svg","mtime":"2019-05-14T13:11:18+02:00","size":11339,"digest":"39edc952c598c71be2c9510944a8faf708d8e4b367b5ad78a688d1cd37f522eb","integrity":"sha256-Oe3JUsWYxxviyVEJRKj69wjY5LNnta14pojRzTf1Ius="},"flags/1x1/kz-924c04dc19267b049f35213af0e2b0c540933c06389433cb4aacd8dda33b286c.svg":{"logical_path":"flags/1x1/kz.svg","mtime":"2019-05-14T13:11:18+02:00","size":11433,"digest":"924c04dc19267b049f35213af0e2b0c540933c06389433cb4aacd8dda33b286c","integrity":"sha256-kkwE3BkmewSfNSE68OKwxUCTPAY4lDPLSqzY3aM7KGw="},"flags/4x3/la-e3a36a3bd0003442c3a21d3a192995fa6fb3b3c08a2daadc8f38f62736b5b1e3.svg":{"logical_path":"flags/4x3/la.svg","mtime":"2019-05-14T13:11:18+02:00","size":457,"digest":"e3a36a3bd0003442c3a21d3a192995fa6fb3b3c08a2daadc8f38f62736b5b1e3","integrity":"sha256-46NqO9AANELDoh06GSmV+m+zs8CKLarcjzj2Jza1seM="},"flags/1x1/la-c9d4223a897e5e2938a4892bbc593d3828093b9439fc3f6de21520e4013ddbc5.svg":{"logical_path":"flags/1x1/la.svg","mtime":"2019-05-14T13:11:18+02:00","size":507,"digest":"c9d4223a897e5e2938a4892bbc593d3828093b9439fc3f6de21520e4013ddbc5","integrity":"sha256-ydQiOol+Xik4pIkrvFk9OCgJO5Q5/D9t4hUg5AE928U="},"flags/4x3/lb-508c2a5a9b50d604895675b9f1c1e5914c394a7f468f5d823eb0476acaacbc7f.svg":{"logical_path":"flags/4x3/lb.svg","mtime":"2019-05-14T13:11:18+02:00","size":2814,"digest":"508c2a5a9b50d604895675b9f1c1e5914c394a7f468f5d823eb0476acaacbc7f","integrity":"sha256-UIwqWptQ1gSJVnW58cHlkUw5Sn9Gj12CPrBHasqsvH8="},"flags/1x1/lb-10c9ba8ea7aa3189f16a7273c837982a887fc4ddfc9d514d8f5a660d72356f7f.svg":{"logical_path":"flags/1x1/lb.svg","mtime":"2019-05-14T13:11:18+02:00","size":2754,"digest":"10c9ba8ea7aa3189f16a7273c837982a887fc4ddfc9d514d8f5a660d72356f7f","integrity":"sha256-EMm6jqeqMYnxanJzyDeYKoh/xN38nVFNj1pmDXI1b38="},"flags/4x3/lc-04ccd92fb1578654181febaea30ebd6b6620f56115730b2a2d673c712307bf5c.svg":{"logical_path":"flags/4x3/lc.svg","mtime":"2019-05-14T13:11:18+02:00","size":373,"digest":"04ccd92fb1578654181febaea30ebd6b6620f56115730b2a2d673c712307bf5c","integrity":"sha256-BMzZL7FXhlQYH+uuow69a2Yg9WEVcwsqLWc8cSMHv1w="},"flags/1x1/lc-4ffb53afb8bd296d526ac26fd8007afc74855e92833a893d3c934a5d12eb152a.svg":{"logical_path":"flags/1x1/lc.svg","mtime":"2019-05-14T13:11:18+02:00","size":373,"digest":"4ffb53afb8bd296d526ac26fd8007afc74855e92833a893d3c934a5d12eb152a","integrity":"sha256-T/tTr7i9KW1SasJv2AB6/HSFXpKDOok9PJNKXRLrFSo="},"flags/4x3/li-3058dc4aeaf2bd2da8cb910892137d732b56e5e9d342e565a4059de1a8e40e40.svg":{"logical_path":"flags/4x3/li.svg","mtime":"2019-05-14T13:11:18+02:00","size":8327,"digest":"3058dc4aeaf2bd2da8cb910892137d732b56e5e9d342e565a4059de1a8e40e40","integrity":"sha256-MFjcSuryvS2oy5EIkhN9cytW5enTQuVlpAWd4ajkDkA="},"flags/1x1/li-0780a4f218b9ee466e33d14274b8a01575a86b3787b347e3269a3b301c220d5f.svg":{"logical_path":"flags/1x1/li.svg","mtime":"2019-05-14T13:11:18+02:00","size":8350,"digest":"0780a4f218b9ee466e33d14274b8a01575a86b3787b347e3269a3b301c220d5f","integrity":"sha256-B4Ck8hi57kZuM9FCdLigFXWoazeHs0fjJpo7MBwiDV8="},"flags/4x3/lk-a13d6ab1da51be3b1d2c5b80f4d866c923d42b017e197469e1bfc0dd021c4bfe.svg":{"logical_path":"flags/4x3/lk.svg","mtime":"2019-05-14T13:11:18+02:00","size":11333,"digest":"a13d6ab1da51be3b1d2c5b80f4d866c923d42b017e197469e1bfc0dd021c4bfe","integrity":"sha256-oT1qsdpRvjsdLFuA9NhmySPUKwF+GXRp4b/A3QIcS/4="},"flags/1x1/lk-99759363f0df6b868fd1398bf05666c680bafe1eeec8b859b64d450930213e02.svg":{"logical_path":"flags/1x1/lk.svg","mtime":"2019-05-14T13:11:18+02:00","size":11345,"digest":"99759363f0df6b868fd1398bf05666c680bafe1eeec8b859b64d450930213e02","integrity":"sha256-mXWTY/Dfa4aP0TmL8FZmxoC6/h7uyLhZtk1FCTAhPgI="},"flags/4x3/lr-b06a1d70899826b305ce387fa31e1fa0bdb3bcb17c1392f15f995ce1dba723cf.svg":{"logical_path":"flags/4x3/lr.svg","mtime":"2019-05-14T13:11:18+02:00","size":724,"digest":"b06a1d70899826b305ce387fa31e1fa0bdb3bcb17c1392f15f995ce1dba723cf","integrity":"sha256-sGodcImYJrMFzjh/ox4foL2zvLF8E5LxX5lc4dunI88="},"flags/1x1/lr-820a9d023e5b1e68ed640bfaba8f84ad4379c42a6c5c982cb76b0390dd2bcbdd.svg":{"logical_path":"flags/1x1/lr.svg","mtime":"2019-05-14T13:11:18+02:00","size":697,"digest":"820a9d023e5b1e68ed640bfaba8f84ad4379c42a6c5c982cb76b0390dd2bcbdd","integrity":"sha256-ggqdAj5bHmjtZAv6uo+ErUN5xCpsXJgst2sDkN0ry90="},"flags/4x3/ls-d02bcefe7c298c153665f35c33eedb08e2e2b345350e4bf1714a87abf86b2d0e.svg":{"logical_path":"flags/4x3/ls.svg","mtime":"2019-05-14T13:11:18+02:00","size":1222,"digest":"d02bcefe7c298c153665f35c33eedb08e2e2b345350e4bf1714a87abf86b2d0e","integrity":"sha256-0CvO/nwpjBU2ZfNcM+7bCOLis0U1DkvxcUqHq/hrLQ4="},"flags/1x1/ls-85c731c313a46db12bdb27fe229e9f7d052b447c624663b73ffa1dbab97f03fb.svg":{"logical_path":"flags/1x1/ls.svg","mtime":"2019-05-14T13:11:18+02:00","size":1245,"digest":"85c731c313a46db12bdb27fe229e9f7d052b447c624663b73ffa1dbab97f03fb","integrity":"sha256-hccxwxOkbbEr2yf+Ip6ffQUrRHxiRmO3P/odurl/A/s="},"flags/4x3/lt-c08eb18a15d2003cb544432b11c5081d3d5741370669b4df306d1c6bce14cb51.svg":{"logical_path":"flags/4x3/lt.svg","mtime":"2019-05-14T13:11:18+02:00","size":445,"digest":"c08eb18a15d2003cb544432b11c5081d3d5741370669b4df306d1c6bce14cb51","integrity":"sha256-wI6xihXSADy1REMrEcUIHT1XQTcGabTfMG0ca84Uy1E="},"flags/1x1/lt-c1bd7e3d289ac9b0df06d47237780eaf4d30f01281ed50a7df9a22bc3a2489c5.svg":{"logical_path":"flags/1x1/lt.svg","mtime":"2019-05-14T13:11:18+02:00","size":445,"digest":"c1bd7e3d289ac9b0df06d47237780eaf4d30f01281ed50a7df9a22bc3a2489c5","integrity":"sha256-wb1+PSiaybDfBtRyN3gOr00w8BKB7VCn35oivDokicU="},"flags/4x3/lu-99e7b6adb3a9e0f867b17eb3b1f0f33db92fd27cfd7b651f62453f359bace22f.svg":{"logical_path":"flags/4x3/lu.svg","mtime":"2019-05-14T13:11:18+02:00","size":231,"digest":"99e7b6adb3a9e0f867b17eb3b1f0f33db92fd27cfd7b651f62453f359bace22f","integrity":"sha256-mee2rbOp4PhnsX6zsfDzPbkv0nz9e2UfYkU/NZus4i8="},"flags/1x1/lu-ab544445f16afa450549288ac86c2cc9a458a9d7747b3a89d5ecef7db9c83ce7.svg":{"logical_path":"flags/1x1/lu.svg","mtime":"2019-05-14T13:11:18+02:00","size":235,"digest":"ab544445f16afa450549288ac86c2cc9a458a9d7747b3a89d5ecef7db9c83ce7","integrity":"sha256-q1RERfFq+kUFSSiKyGwsyaRYqdd0ezqJ1ezvfbnIPOc="},"flags/4x3/lv-f8844d50b89f0369f73d580d3676553e7e55dd8ab2460e592a29a530d9bed886.svg":{"logical_path":"flags/4x3/lv.svg","mtime":"2019-05-14T13:11:18+02:00","size":236,"digest":"f8844d50b89f0369f73d580d3676553e7e55dd8ab2460e592a29a530d9bed886","integrity":"sha256-+IRNULifA2n3PVgNNnZVPn5V3YqyRg5ZKimlMNm+2IY="},"flags/1x1/lv-baeced49dd4249e36a25b0f23a5c601a69e9dee3137627cd4450194b85a99dd4.svg":{"logical_path":"flags/1x1/lv.svg","mtime":"2019-05-14T13:11:18+02:00","size":240,"digest":"baeced49dd4249e36a25b0f23a5c601a69e9dee3137627cd4450194b85a99dd4","integrity":"sha256-uuztSd1CSeNqJbDyOlxgGmnp3uMTdifNRFAZS4WpndQ="},"flags/4x3/ly-03209121483967f9d74849fb9261de23e9ff2e02c4e40b29f1cda0631b8a5fae.svg":{"logical_path":"flags/4x3/ly.svg","mtime":"2019-05-14T13:11:18+02:00","size":534,"digest":"03209121483967f9d74849fb9261de23e9ff2e02c4e40b29f1cda0631b8a5fae","integrity":"sha256-AyCRIUg5Z/nXSEn7kmHeI+n/LgLE5Asp8c2gYxuKX64="},"flags/1x1/ly-1e6e070aaa4bfc97a5a446a39bf746ab3c4c81d9f62c975cab164e16de3a3ffe.svg":{"logical_path":"flags/1x1/ly.svg","mtime":"2019-05-14T13:11:18+02:00","size":533,"digest":"1e6e070aaa4bfc97a5a446a39bf746ab3c4c81d9f62c975cab164e16de3a3ffe","integrity":"sha256-Hm4HCqpL/JelpEajm/dGqzxMgdn2LJdcqxZOFt46P/4="},"flags/4x3/ma-9a25cc7c2868fa45b251dd1b99a0be3b583df69732146142020fe9c6c0c95b63.svg":{"logical_path":"flags/4x3/ma.svg","mtime":"2019-05-14T13:11:18+02:00","size":253,"digest":"9a25cc7c2868fa45b251dd1b99a0be3b583df69732146142020fe9c6c0c95b63","integrity":"sha256-miXMfCho+kWyUd0bmaC+O1g99pcyFGFCAg/pxsDJW2M="},"flags/1x1/ma-4f18b9c355b8b8bf0db69badb235a183dbd558deb6439bf03b4f18e56837a7f3.svg":{"logical_path":"flags/1x1/ma.svg","mtime":"2019-05-14T13:11:18+02:00","size":253,"digest":"4f18b9c355b8b8bf0db69badb235a183dbd558deb6439bf03b4f18e56837a7f3","integrity":"sha256-Txi5w1W4uL8NtputsjWhg9vVWN62Q5vwO08Y5Wg3p/M="},"flags/4x3/mc-b0c50599ea2a550680a6a867579930e0b47d3e05193a7294a26b7849a7ad35e2.svg":{"logical_path":"flags/4x3/mc.svg","mtime":"2019-05-14T13:11:18+02:00","size":240,"digest":"b0c50599ea2a550680a6a867579930e0b47d3e05193a7294a26b7849a7ad35e2","integrity":"sha256-sMUFmeoqVQaApqhnV5kw4LR9PgUZOnKUomt4SaetNeI="},"flags/1x1/mc-8f1fe6210338399d8791d91f39234b1a09acf2aa5e0387696048dc7068534a28.svg":{"logical_path":"flags/1x1/mc.svg","mtime":"2019-05-14T13:11:18+02:00","size":240,"digest":"8f1fe6210338399d8791d91f39234b1a09acf2aa5e0387696048dc7068534a28","integrity":"sha256-jx/mIQM4OZ2HkdkfOSNLGgms8qpeA4dpYEjccGhTSig="},"flags/4x3/md-8849eef7bdf916e962f7bb31af87c8d47aef33f9f4a2017b2ce55c4166e79643.svg":{"logical_path":"flags/4x3/md.svg","mtime":"2019-05-14T13:11:18+02:00","size":11283,"digest":"8849eef7bdf916e962f7bb31af87c8d47aef33f9f4a2017b2ce55c4166e79643","integrity":"sha256-iEnu9735Fuli97sxr4fI1HrvM/n0ogF7LOVcQWbnlkM="},"flags/1x1/md-43f1bb4157545abe6e79215459efb548d913bbe7922078cd40cb722a4e19d9b4.svg":{"logical_path":"flags/1x1/md.svg","mtime":"2019-05-14T13:11:18+02:00","size":11387,"digest":"43f1bb4157545abe6e79215459efb548d913bbe7922078cd40cb722a4e19d9b4","integrity":"sha256-Q/G7QVdUWr5ueSFUWe+1SNkTu+eSIHjNQMtyKk4Z2bQ="},"flags/4x3/me-983d452d43cfb8d628bfc5c0cf4991c2ba3cf0e39e70aa5353cfd4e9ec3da62d.svg":{"logical_path":"flags/4x3/me.svg","mtime":"2019-05-14T13:11:18+02:00","size":63177,"digest":"983d452d43cfb8d628bfc5c0cf4991c2ba3cf0e39e70aa5353cfd4e9ec3da62d","integrity":"sha256-mD1FLUPPuNYov8XAz0mRwro88OOecKpTU8/U6ew9pi0="},"flags/1x1/me-104d6a96038ef06d3d8b89c9221996f3649b5b821139b11b2e07695b0f6fda2f.svg":{"logical_path":"flags/1x1/me.svg","mtime":"2019-05-14T13:11:18+02:00","size":64191,"digest":"104d6a96038ef06d3d8b89c9221996f3649b5b821139b11b2e07695b0f6fda2f","integrity":"sha256-EE1qlgOO8G09i4nJIhmW82SbW4IRObEbLgdpWw9v2i8="},"flags/4x3/mf-31fb851bfcc2340d2fa43e86a099cc7becfc8e7f996a4d2ca56bd050e6537086.svg":{"logical_path":"flags/4x3/mf.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"31fb851bfcc2340d2fa43e86a099cc7becfc8e7f996a4d2ca56bd050e6537086","integrity":"sha256-MfuFG/zCNA0vpD6GoJnMe+z8jn+Zak0spWvQUOZTcIY="},"flags/1x1/mf-fe20ce9bf911631d6e79edf21c8cff0716f2dc1ffded39515735444d9a66fa55.svg":{"logical_path":"flags/1x1/mf.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"fe20ce9bf911631d6e79edf21c8cff0716f2dc1ffded39515735444d9a66fa55","integrity":"sha256-/iDOm/kRYx1uee3yHIz/Bxby3B/97TlRVzVETZpm+lU="},"flags/4x3/mg-5effe963e29f804a26f95dbbc9519add454a0fd9eb918ddfeb55e1e99a1a2701.svg":{"logical_path":"flags/4x3/mg.svg","mtime":"2019-05-14T13:11:18+02:00","size":305,"digest":"5effe963e29f804a26f95dbbc9519add454a0fd9eb918ddfeb55e1e99a1a2701","integrity":"sha256-Xv/pY+KfgEom+V27yVGa3UVKD9nrkY3f61Xh6ZoaJwE="},"flags/1x1/mg-9e546cfb78810d9b25c814a84aadd6907880b8e0cdd2e4e30738b519e7c1ac91.svg":{"logical_path":"flags/1x1/mg.svg","mtime":"2019-05-14T13:11:18+02:00","size":305,"digest":"9e546cfb78810d9b25c814a84aadd6907880b8e0cdd2e4e30738b519e7c1ac91","integrity":"sha256-nlRs+3iBDZslyBSoSq3WkHiAuODN0uTjBzi1GefBrJE="},"flags/4x3/mh-d8cfd123007dbb99aa700c335957926a6d5e877ab49680c79629a32716d7a782.svg":{"logical_path":"flags/4x3/mh.svg","mtime":"2019-05-14T13:11:18+02:00","size":744,"digest":"d8cfd123007dbb99aa700c335957926a6d5e877ab49680c79629a32716d7a782","integrity":"sha256-2M/RIwB9u5mqcAwzWVeSam1eh3q0loDHlimjJxbXp4I="},"flags/1x1/mh-3fe03d4d063a4729fc8b68fd5e9d7d2eef6e65c4e82954c83f76b138cea2eb45.svg":{"logical_path":"flags/1x1/mh.svg","mtime":"2019-05-14T13:11:18+02:00","size":767,"digest":"3fe03d4d063a4729fc8b68fd5e9d7d2eef6e65c4e82954c83f76b138cea2eb45","integrity":"sha256-P+A9TQY6Ryn8i2j9Xp19Lu9uZcToKVTIP3axOM6i60U="},"flags/4x3/mk-6e8071d15f2ff125d30bf89d000dcb47db9545cf9b7ff04f1474650ec2f4d25c.svg":{"logical_path":"flags/4x3/mk.svg","mtime":"2019-05-14T13:11:18+02:00","size":385,"digest":"6e8071d15f2ff125d30bf89d000dcb47db9545cf9b7ff04f1474650ec2f4d25c","integrity":"sha256-boBx0V8v8SXTC/idAA3LR9uVRc+bf/BPFHRlDsL00lw="},"flags/1x1/mk-fdc9212f9f311cbface56b6587468a2e845111b697edc11b7edda9fcf100c1d5.svg":{"logical_path":"flags/1x1/mk.svg","mtime":"2019-05-14T13:11:18+02:00","size":413,"digest":"fdc9212f9f311cbface56b6587468a2e845111b697edc11b7edda9fcf100c1d5","integrity":"sha256-/ckhL58xHL+s5Wtlh0aKLoRREbaX7cEbft2p/PEAwdU="},"flags/4x3/ml-a730102e0c6f6362de9c10ef8da6cf7b123465d01a297e7a89808b01fa4771cd.svg":{"logical_path":"flags/4x3/ml.svg","mtime":"2019-05-14T13:11:18+02:00","size":279,"digest":"a730102e0c6f6362de9c10ef8da6cf7b123465d01a297e7a89808b01fa4771cd","integrity":"sha256-pzAQLgxvY2LenBDvjabPexI0ZdAaKX56iYCLAfpHcc0="},"flags/1x1/ml-a661355da206b0cb7ac4c84b6cdf7e411fbca8fcb271ae999fa60d5c67578192.svg":{"logical_path":"flags/1x1/ml.svg","mtime":"2019-05-14T13:11:18+02:00","size":282,"digest":"a661355da206b0cb7ac4c84b6cdf7e411fbca8fcb271ae999fa60d5c67578192","integrity":"sha256-pmE1XaIGsMt6xMhLbN9+QR+8qPyyca6Zn6YNXGdXgZI="},"flags/4x3/mm-6d0d207d662477110f2b863488088818d8400386358dcbc669a2d8c54d1bae16.svg":{"logical_path":"flags/4x3/mm.svg","mtime":"2019-05-14T13:11:18+02:00","size":851,"digest":"6d0d207d662477110f2b863488088818d8400386358dcbc669a2d8c54d1bae16","integrity":"sha256-bQ0gfWYkdxEPK4Y0iAiIGNhAA4Y1jcvGaaLYxU0brhY="},"flags/1x1/mm-de7d46b6543343af61ba997045cb41a707bd0db1e7a5879971ca8fddcbdf9e99.svg":{"logical_path":"flags/1x1/mm.svg","mtime":"2019-05-14T13:11:18+02:00","size":868,"digest":"de7d46b6543343af61ba997045cb41a707bd0db1e7a5879971ca8fddcbdf9e99","integrity":"sha256-3n1GtlQzQ69huplwRctBpwe9DbHnpYeZccqP3cvfnpk="},"flags/4x3/mn-656eb51e88bfce82401e4080eb791ddf16d571cbba102cdd4316c5de4711ac65.svg":{"logical_path":"flags/4x3/mn.svg","mtime":"2019-05-14T13:11:18+02:00","size":1256,"digest":"656eb51e88bfce82401e4080eb791ddf16d571cbba102cdd4316c5de4711ac65","integrity":"sha256-ZW61Hoi/zoJAHkCA63kd3xbVccu6ECzdQxbF3kcRrGU="},"flags/1x1/mn-ad22cb2c195a7d8ca8e4174db011d5f58238ee25039b5b2da2649d8ca8b00123.svg":{"logical_path":"flags/1x1/mn.svg","mtime":"2019-05-14T13:11:18+02:00","size":1263,"digest":"ad22cb2c195a7d8ca8e4174db011d5f58238ee25039b5b2da2649d8ca8b00123","integrity":"sha256-rSLLLBlafYyo5BdNsBHV9YI47iUDm1stomSdjKiwASM="},"flags/4x3/mo-37a1088aa687af13951bc93886e3e51cb246eccfde1b56528f189327ea291792.svg":{"logical_path":"flags/4x3/mo.svg","mtime":"2019-05-14T13:11:18+02:00","size":1516,"digest":"37a1088aa687af13951bc93886e3e51cb246eccfde1b56528f189327ea291792","integrity":"sha256-N6EIiqaHrxOVG8k4huPlHLJG7M/eG1ZSjxiTJ+opF5I="},"flags/1x1/mo-b463a1c37b69131d662e3fb2ae937583458824a09bcf68fc7ed2d7fd729138d1.svg":{"logical_path":"flags/1x1/mo.svg","mtime":"2019-05-14T13:11:18+02:00","size":1550,"digest":"b463a1c37b69131d662e3fb2ae937583458824a09bcf68fc7ed2d7fd729138d1","integrity":"sha256-tGOhw3tpEx1mLj+yrpN1g0WIJKCbz2j8ftLX/XKRONE="},"flags/4x3/mp-ecd12cadc358fdf293e856c0a3ffc09409123cabd3c7201225b2d21b59551e14.svg":{"logical_path":"flags/4x3/mp.svg","mtime":"2019-05-14T13:11:18+02:00","size":23425,"digest":"ecd12cadc358fdf293e856c0a3ffc09409123cabd3c7201225b2d21b59551e14","integrity":"sha256-7NEsrcNY/fKT6FbAo//AlAkSPKvTxyASJbLSG1lVHhQ="},"flags/1x1/mp-d1f4ba10c1409e713253f1fbb107eeccbd4ec1a8f9036663f1ac1991aee53835.svg":{"logical_path":"flags/1x1/mp.svg","mtime":"2019-05-14T13:11:18+02:00","size":23663,"digest":"d1f4ba10c1409e713253f1fbb107eeccbd4ec1a8f9036663f1ac1991aee53835","integrity":"sha256-0fS6EMFAnnEyU/H7sQfuzL1Owaj5A2Zj8awZka7lODU="},"flags/4x3/mq-b4e1b08a93c1364c79e6d61f95b16fca5b884da6e77835bc0e0adfff8ecc2d7f.svg":{"logical_path":"flags/4x3/mq.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"b4e1b08a93c1364c79e6d61f95b16fca5b884da6e77835bc0e0adfff8ecc2d7f","integrity":"sha256-tOGwipPBNkx55tYflbFvyluITabneDW8Dgrf/47MLX8="},"flags/1x1/mq-19cb6f7cb7354c3fd40e987c93a2d76329d34b2ed3873c3f25fe56802f251ea8.svg":{"logical_path":"flags/1x1/mq.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"19cb6f7cb7354c3fd40e987c93a2d76329d34b2ed3873c3f25fe56802f251ea8","integrity":"sha256-GctvfLc1TD/UDph8k6LXYynTSy7Thzw/Jf5WgC8lHqg="},"flags/4x3/mr-9f64af3ed5c6d8d1f68b5cb09fd1aa9d28c3c95107e063f64a0ef95f0cb9429a.svg":{"logical_path":"flags/4x3/mr.svg","mtime":"2019-05-14T13:11:18+02:00","size":450,"digest":"9f64af3ed5c6d8d1f68b5cb09fd1aa9d28c3c95107e063f64a0ef95f0cb9429a","integrity":"sha256-n2SvPtXG2NH2i1ywn9GqnSjDyVEH4GP2Sg75Xwy5Qpo="},"flags/1x1/mr-0e79b7bcc669bb871d94021db2b78b162b9867c7eaf934d8f7a3025fd5903576.svg":{"logical_path":"flags/1x1/mr.svg","mtime":"2019-05-14T13:11:18+02:00","size":438,"digest":"0e79b7bcc669bb871d94021db2b78b162b9867c7eaf934d8f7a3025fd5903576","integrity":"sha256-Dnm3vMZpu4cdlAIdsreLFiuYZ8fq+TTY96MCX9WQNXY="},"flags/4x3/ms-32620dd70353777b2ee62951556976f398cd38ae359b5a8c97311a1dc61eb8bc.svg":{"logical_path":"flags/4x3/ms.svg","mtime":"2019-05-14T13:11:18+02:00","size":6792,"digest":"32620dd70353777b2ee62951556976f398cd38ae359b5a8c97311a1dc61eb8bc","integrity":"sha256-MmIN1wNTd3su5ilRVWl285jNOK41m1qMlzEaHcYeuLw="},"flags/1x1/ms-4104d4f36cb5cf1c6de78e52e90bc3c5b8bfa262617b16a737673feb8c30a00c.svg":{"logical_path":"flags/1x1/ms.svg","mtime":"2019-05-14T13:11:18+02:00","size":6700,"digest":"4104d4f36cb5cf1c6de78e52e90bc3c5b8bfa262617b16a737673feb8c30a00c","integrity":"sha256-QQTU82y1zxxt545S6QvDxbi/omJhexanN2c/64wwoAw="},"flags/4x3/mt-0c9819aa69b34b84c1ee43620922737122eb38f107be9864a0690ac66ef8aa64.svg":{"logical_path":"flags/4x3/mt.svg","mtime":"2019-05-14T13:11:18+02:00","size":8807,"digest":"0c9819aa69b34b84c1ee43620922737122eb38f107be9864a0690ac66ef8aa64","integrity":"sha256-DJgZqmmzS4TB7kNiCSJzcSLrOPEHvphkoGkKxm74qmQ="},"flags/1x1/mt-3c3fe71f2a2bf0d961fd145ad7e48ca1e9d3a05cce514354714ba4568503d106.svg":{"logical_path":"flags/1x1/mt.svg","mtime":"2019-05-14T13:11:18+02:00","size":10519,"digest":"3c3fe71f2a2bf0d961fd145ad7e48ca1e9d3a05cce514354714ba4568503d106","integrity":"sha256-PD/nHyor8Nlh/RRa1+SMoenToFzOUUNUcUukVoUD0QY="},"flags/4x3/mu-c78c23f1499756b9db762ae434ca354d1481447fa94c66bc10aca9443b399059.svg":{"logical_path":"flags/4x3/mu.svg","mtime":"2019-05-14T13:11:18+02:00","size":322,"digest":"c78c23f1499756b9db762ae434ca354d1481447fa94c66bc10aca9443b399059","integrity":"sha256-x4wj8UmXVrnbdirkNMo1TRSBRH+pTGa8EKypRDs5kFk="},"flags/1x1/mu-91ebc79d0fa306127ea8b7a33f77d5b28f35c516ea91ff0468c7344dc838db69.svg":{"logical_path":"flags/1x1/mu.svg","mtime":"2019-05-14T13:11:18+02:00","size":322,"digest":"91ebc79d0fa306127ea8b7a33f77d5b28f35c516ea91ff0468c7344dc838db69","integrity":"sha256-kevHnQ+jBhJ+qLejP3fVso81xRbqkf8EaMc0Tcg422k="},"flags/4x3/mv-a17c947e17adae6aacef01a3e131c4150aa094911b53fbaead41783683e008eb.svg":{"logical_path":"flags/4x3/mv.svg","mtime":"2019-05-14T13:11:18+02:00","size":292,"digest":"a17c947e17adae6aacef01a3e131c4150aa094911b53fbaead41783683e008eb","integrity":"sha256-oXyUfhetrmqs7wGj4THEFQqglJEbU/uurUF4NoPgCOs="},"flags/1x1/mv-d138e94d9d2ed093ef1425c1164493b780202f9a7f7937241a7b081b79ff8b01.svg":{"logical_path":"flags/1x1/mv.svg","mtime":"2019-05-14T13:11:18+02:00","size":310,"digest":"d138e94d9d2ed093ef1425c1164493b780202f9a7f7937241a7b081b79ff8b01","integrity":"sha256-0TjpTZ0u0JPvFCXBFkSTt4AgL5p/eTckGnsIG3n/iwE="},"flags/4x3/mw-21f116afdf71df80e3c59084c6ba640814fa5389430328ff55c9403b5c239632.svg":{"logical_path":"flags/4x3/mw.svg","mtime":"2019-05-14T13:11:18+02:00","size":3721,"digest":"21f116afdf71df80e3c59084c6ba640814fa5389430328ff55c9403b5c239632","integrity":"sha256-IfEWr99x34DjxZCExrpkCBT6U4lDAyj/VclAO1wjljI="},"flags/1x1/mw-5c2228d3f1cf1f9cf8cb158e813202981828c11e8caf117836fc57fa6bc1c788.svg":{"logical_path":"flags/1x1/mw.svg","mtime":"2019-05-14T13:11:18+02:00","size":3930,"digest":"5c2228d3f1cf1f9cf8cb158e813202981828c11e8caf117836fc57fa6bc1c788","integrity":"sha256-XCIo0/HPH5z4yxWOgTICmBgowR6MrxF4NvxX+mvBx4g="},"flags/4x3/mx-a235f9b16921590b7e78caa6f76339361356946eaf0046badd10732b4647c0b6.svg":{"logical_path":"flags/4x3/mx.svg","mtime":"2019-05-14T13:11:18+02:00","size":95864,"digest":"a235f9b16921590b7e78caa6f76339361356946eaf0046badd10732b4647c0b6","integrity":"sha256-ojX5sWkhWQt+eMqm92M5NhNWlG6vAEa63RBzK0ZHwLY="},"flags/1x1/mx-cdab01ebcdccc020ca16e1355ef1fd18ca0043b501f399ca8edc48adfa8c7292.svg":{"logical_path":"flags/1x1/mx.svg","mtime":"2019-05-14T13:11:18+02:00","size":91341,"digest":"cdab01ebcdccc020ca16e1355ef1fd18ca0043b501f399ca8edc48adfa8c7292","integrity":"sha256-zasB683MwCDKFuE1XvH9GMoAQ7UB85nKjtxIrfqMcpI="},"flags/4x3/my-0ed63574cf5f20c0663ab8cd1f700e150fb641fd0b93602ba013abbfaae5ee59.svg":{"logical_path":"flags/4x3/my.svg","mtime":"2019-05-14T13:11:18+02:00","size":1284,"digest":"0ed63574cf5f20c0663ab8cd1f700e150fb641fd0b93602ba013abbfaae5ee59","integrity":"sha256-DtY1dM9fIMBmOrjNH3AOFQ+2Qf0Lk2AroBOrv6rl7lk="},"flags/1x1/my-5e8d31ef06ffc8af33a5616d760592ecd022c52afc8ba33c721f1e4989da0628.svg":{"logical_path":"flags/1x1/my.svg","mtime":"2019-05-14T13:11:18+02:00","size":1275,"digest":"5e8d31ef06ffc8af33a5616d760592ecd022c52afc8ba33c721f1e4989da0628","integrity":"sha256-Xo0x7wb/yK8zpWFtdgWS7NAixSr8i6M8ch8eSYnaBig="},"flags/4x3/mz-752e2293917b1d2ece3f097104caeadf6a679054a779e9d3be8e49dc324bb88a.svg":{"logical_path":"flags/4x3/mz.svg","mtime":"2019-05-14T13:11:18+02:00","size":2623,"digest":"752e2293917b1d2ece3f097104caeadf6a679054a779e9d3be8e49dc324bb88a","integrity":"sha256-dS4ik5F7HS7OPwlxBMrq32pnkFSneenTvo5J3DJLuIo="},"flags/1x1/mz-300cba975ad43c962ceca0d266ded1fe3d21d6b4d701d657fb42b27268ea2964.svg":{"logical_path":"flags/1x1/mz.svg","mtime":"2019-05-14T13:11:18+02:00","size":2604,"digest":"300cba975ad43c962ceca0d266ded1fe3d21d6b4d701d657fb42b27268ea2964","integrity":"sha256-MAy6l1rUPJYs7KDSZt7R/j0h1rTXAdZX+0KycmjqKWQ="},"flags/4x3/na-a0655a2e70751278e6a60d31e818f672864a6e68e8b3d3361b2fbb70fa9bfef8.svg":{"logical_path":"flags/4x3/na.svg","mtime":"2019-05-14T13:11:18+02:00","size":1005,"digest":"a0655a2e70751278e6a60d31e818f672864a6e68e8b3d3361b2fbb70fa9bfef8","integrity":"sha256-oGVaLnB1Enjmpg0x6Bj2coZKbmjos9M2Gy+7cPqb/vg="},"flags/1x1/na-1ce089a189db5be15eb05df8155f9bd017b61fc1a497e5b3021ff2ca664e122d.svg":{"logical_path":"flags/1x1/na.svg","mtime":"2019-05-14T13:11:18+02:00","size":983,"digest":"1ce089a189db5be15eb05df8155f9bd017b61fc1a497e5b3021ff2ca664e122d","integrity":"sha256-HOCJoYnbW+FesF34FV+b0Be2H8Gkl+WzAh/yymZOEi0="},"flags/4x3/nc-0c7171d91c44414ed69808611db588f1283ee7e34ea8a74a9a5101ba4b1cb305.svg":{"logical_path":"flags/4x3/nc.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"0c7171d91c44414ed69808611db588f1283ee7e34ea8a74a9a5101ba4b1cb305","integrity":"sha256-DHFx2RxEQU7WmAhhHbWI8Sg+5+NOqKdKmlEBukscswU="},"flags/1x1/nc-d3a1629f06dc3200af7669f2d895fce1908d2c1ca02d71e530bdfa6646a9516c.svg":{"logical_path":"flags/1x1/nc.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"d3a1629f06dc3200af7669f2d895fce1908d2c1ca02d71e530bdfa6646a9516c","integrity":"sha256-06FinwbcMgCvdmny2JX84ZCNLBygLXHlML36ZkapUWw="},"flags/4x3/ne-2b61d30a6cb4554535538e3b753926853e8c629a494a347286b9731c803548e4.svg":{"logical_path":"flags/4x3/ne.svg","mtime":"2019-05-14T13:11:18+02:00","size":279,"digest":"2b61d30a6cb4554535538e3b753926853e8c629a494a347286b9731c803548e4","integrity":"sha256-K2HTCmy0VUU1U447dTkmhT6MYppJSjRyhrlzHIA1SOQ="},"flags/1x1/ne-9c5f798ccd7d3dd3771ae628b4a39dfb2a4578fefd2e006f3ce89c3e494d0cb1.svg":{"logical_path":"flags/1x1/ne.svg","mtime":"2019-05-14T13:11:18+02:00","size":285,"digest":"9c5f798ccd7d3dd3771ae628b4a39dfb2a4578fefd2e006f3ce89c3e494d0cb1","integrity":"sha256-nF95jM19PdN3GuYotKOd+ypFeP79LgBvPOicPklNDLE="},"flags/4x3/nf-4e615baa83a8b4db3e39fe1d251ab913943d64e0cd320f251d619ab54e7512d3.svg":{"logical_path":"flags/4x3/nf.svg","mtime":"2019-05-14T13:11:18+02:00","size":5845,"digest":"4e615baa83a8b4db3e39fe1d251ab913943d64e0cd320f251d619ab54e7512d3","integrity":"sha256-TmFbqoOotNs+Of4dJRq5E5Q9ZODNMg8lHWGatU51EtM="},"flags/1x1/nf-45403247c90050484813acf23c50f543779528e346317274373c3c24fd830103.svg":{"logical_path":"flags/1x1/nf.svg","mtime":"2019-05-14T13:11:18+02:00","size":5598,"digest":"45403247c90050484813acf23c50f543779528e346317274373c3c24fd830103","integrity":"sha256-RUAyR8kAUEhIE6zyPFD1Q3eVKONGMXJ0Nzw8JP2DAQM="},"flags/4x3/ng-d52fd188be973f31dd34e5a0b3fed0de68fe736c8a41c6028d9c248c038c8641.svg":{"logical_path":"flags/4x3/ng.svg","mtime":"2019-05-14T13:11:18+02:00","size":263,"digest":"d52fd188be973f31dd34e5a0b3fed0de68fe736c8a41c6028d9c248c038c8641","integrity":"sha256-1S/RiL6XPzHdNOWgs/7Q3mj+c2yKQcYCjZwkjAOMhkE="},"flags/1x1/ng-f22edcc5867554d69ecbe15add0fbbb1389631f3ced07a4f820065c7770c65f5.svg":{"logical_path":"flags/1x1/ng.svg","mtime":"2019-05-14T13:11:18+02:00","size":263,"digest":"f22edcc5867554d69ecbe15add0fbbb1389631f3ced07a4f820065c7770c65f5","integrity":"sha256-8i7cxYZ1VNaey+Fa3Q+7sTiWMfPO0HpPggBlx3cMZfU="},"flags/4x3/ni-2fbb883e46fbe3b2ecfed9dac004ceb546f25c77a84a5966eea224674aebc610.svg":{"logical_path":"flags/4x3/ni.svg","mtime":"2019-05-14T13:11:18+02:00","size":18584,"digest":"2fbb883e46fbe3b2ecfed9dac004ceb546f25c77a84a5966eea224674aebc610","integrity":"sha256-L7uIPkb747Ls/tnawATOtUbyXHeoSllm7qIkZ0rrxhA="},"flags/1x1/ni-214aed148b615c4846f842b47f99cf178ac62a96cf18c5dd6b23467184b56680.svg":{"logical_path":"flags/1x1/ni.svg","mtime":"2019-05-14T13:11:18+02:00","size":18664,"digest":"214aed148b615c4846f842b47f99cf178ac62a96cf18c5dd6b23467184b56680","integrity":"sha256-IUrtFIthXEhG+EK0f5nPF4rGKpbPGMXdayNGcYS1ZoA="},"flags/4x3/nl-4f0ecea529dd4c0099dd41a7801fa5ac44aa04cd872ca31e11efd58b5a813774.svg":{"logical_path":"flags/4x3/nl.svg","mtime":"2019-05-14T13:11:18+02:00","size":367,"digest":"4f0ecea529dd4c0099dd41a7801fa5ac44aa04cd872ca31e11efd58b5a813774","integrity":"sha256-Tw7OpSndTACZ3UGngB+lrESqBM2HLKMeEe/Vi1qBN3Q="},"flags/1x1/nl-9c8f60e638879d642487818975e58c61cd3102f0e68c360708243c076436ff68.svg":{"logical_path":"flags/1x1/nl.svg","mtime":"2019-05-14T13:11:18+02:00","size":375,"digest":"9c8f60e638879d642487818975e58c61cd3102f0e68c360708243c076436ff68","integrity":"sha256-nI9g5jiHnWQkh4GJdeWMYc0xAvDmjDYHCCQ8B2Q2/2g="},"flags/4x3/no-270f7ee9d1d2efa6abf16f693faba8586adae842d79d8aad9e3f37e96c27cbce.svg":{"logical_path":"flags/4x3/no.svg","mtime":"2019-05-14T13:11:18+02:00","size":324,"digest":"270f7ee9d1d2efa6abf16f693faba8586adae842d79d8aad9e3f37e96c27cbce","integrity":"sha256-Jw9+6dHS76ar8W9pP6uoWGra6ELXnYqtnj836Wwny84="},"flags/1x1/no-7d377325e8c5ec4de0376e9f4c13463f183af637e6c443716f22020c7a313979.svg":{"logical_path":"flags/1x1/no.svg","mtime":"2019-05-14T13:11:18+02:00","size":324,"digest":"7d377325e8c5ec4de0376e9f4c13463f183af637e6c443716f22020c7a313979","integrity":"sha256-fTdzJejF7E3gN26fTBNGPxg69jfmxENxbyICDHoxOXk="},"flags/4x3/np-69637ddb3a173c4522a71598278aa32462e1762e34dd99c9dc99a515433a6cf8.svg":{"logical_path":"flags/4x3/np.svg","mtime":"2019-05-14T13:11:18+02:00","size":1061,"digest":"69637ddb3a173c4522a71598278aa32462e1762e34dd99c9dc99a515433a6cf8","integrity":"sha256-aWN92zoXPEUipxWYJ4qjJGLhdi403ZnJ3JmlFUM6bPg="},"flags/1x1/np-44ead118cce3a1fcbb720cc8d6eab6ecb6b62292315f61ae5963a40262ee11d2.svg":{"logical_path":"flags/1x1/np.svg","mtime":"2019-05-14T13:11:18+02:00","size":1199,"digest":"44ead118cce3a1fcbb720cc8d6eab6ecb6b62292315f61ae5963a40262ee11d2","integrity":"sha256-ROrRGMzjofy7cgzI1uq27La2IpIxX2GuWWOkAmLuEdI="},"flags/4x3/nr-0bd3c0ba7bbac4bd5985b838096eeebd67711d39065619ef092fa4bb55b22a6d.svg":{"logical_path":"flags/4x3/nr.svg","mtime":"2019-05-14T13:11:18+02:00","size":648,"digest":"0bd3c0ba7bbac4bd5985b838096eeebd67711d39065619ef092fa4bb55b22a6d","integrity":"sha256-C9PAunu6xL1Zhbg4CW7uvWdxHTkGVhnvCS+ku1WyKm0="},"flags/1x1/nr-63b9c44e5dd66a59895f52707dc24db5bd1eab6e535298d24e414c0f2dafcb3c.svg":{"logical_path":"flags/1x1/nr.svg","mtime":"2019-05-14T13:11:18+02:00","size":671,"digest":"63b9c44e5dd66a59895f52707dc24db5bd1eab6e535298d24e414c0f2dafcb3c","integrity":"sha256-Y7nETl3WalmJX1JwfcJNtb0eq25TUpjSTkFMDy2vyzw="},"flags/4x3/nu-259989e1eea0cbf6b41a33176a4c9c1eaa2e7ae6571ad80a324c6309bd5aa5fc.svg":{"logical_path":"flags/4x3/nu.svg","mtime":"2019-05-14T13:11:18+02:00","size":1748,"digest":"259989e1eea0cbf6b41a33176a4c9c1eaa2e7ae6571ad80a324c6309bd5aa5fc","integrity":"sha256-JZmJ4e6gy/a0GjMXakycHqoueuZXGtgKMkxjCb1apfw="},"flags/1x1/nu-1cb535708f64ed8b386a245e571e677e935009af92f2b214760a2832c1ee1b53.svg":{"logical_path":"flags/1x1/nu.svg","mtime":"2019-05-14T13:11:18+02:00","size":1736,"digest":"1cb535708f64ed8b386a245e571e677e935009af92f2b214760a2832c1ee1b53","integrity":"sha256-HLU1cI9k7Ys4aiReVx5nfpNQCa+S8rIUdgooMsHuG1M="},"flags/4x3/nz-90ceca2a683fbec395a91b77b0880cea99c3b2cbdb24caa5474925cbdcc3675e.svg":{"logical_path":"flags/4x3/nz.svg","mtime":"2019-05-14T13:11:18+02:00","size":3019,"digest":"90ceca2a683fbec395a91b77b0880cea99c3b2cbdb24caa5474925cbdcc3675e","integrity":"sha256-kM7KKmg/vsOVqRt3sIgM6pnDssvbJMqlR0kly9zDZ14="},"flags/1x1/nz-b0d78f165a72edd46599222a2ea5f6a91a8252975cb03e33c4ca08e389859aac.svg":{"logical_path":"flags/1x1/nz.svg","mtime":"2019-05-14T13:11:18+02:00","size":3045,"digest":"b0d78f165a72edd46599222a2ea5f6a91a8252975cb03e33c4ca08e389859aac","integrity":"sha256-sNePFlpy7dRlmSIqLqX2qRqCUpdcsD4zxMoI44mFmqw="},"flags/4x3/om-aadcca7bc7ad318400097b84849dd64c4744306cd9b4f152fba34f2e84116965.svg":{"logical_path":"flags/4x3/om.svg","mtime":"2019-05-14T13:11:18+02:00","size":22891,"digest":"aadcca7bc7ad318400097b84849dd64c4744306cd9b4f152fba34f2e84116965","integrity":"sha256-qtzKe8etMYQACXuEhJ3WTEdEMGzZtPFS+6NPLoQRaWU="},"flags/1x1/om-705e2bd2b2fc7d13c152aa06bfb9e6ee4ad8b299f8c06ca16adad0b18b2b18ed.svg":{"logical_path":"flags/1x1/om.svg","mtime":"2019-05-14T13:11:18+02:00","size":22875,"digest":"705e2bd2b2fc7d13c152aa06bfb9e6ee4ad8b299f8c06ca16adad0b18b2b18ed","integrity":"sha256-cF4r0rL8fRPBUqoGv7nm7krYspn4wGyhatrQsYsrGO0="},"flags/4x3/pa-027e679bd65dcaa2c53145a14669c1e674a467a889ef702cbe2a260f7ca8ad38.svg":{"logical_path":"flags/4x3/pa.svg","mtime":"2019-05-14T13:11:18+02:00","size":746,"digest":"027e679bd65dcaa2c53145a14669c1e674a467a889ef702cbe2a260f7ca8ad38","integrity":"sha256-An5nm9ZdyqLFMUWhRmnB5nSkZ6iJ73AsviomD3yorTg="},"flags/1x1/pa-edeb4faeadaa286de7fdc667e25d38ad0cdbccaec5023182fed6a3c74e8b09eb.svg":{"logical_path":"flags/1x1/pa.svg","mtime":"2019-05-14T13:11:18+02:00","size":662,"digest":"edeb4faeadaa286de7fdc667e25d38ad0cdbccaec5023182fed6a3c74e8b09eb","integrity":"sha256-7etPrq2qKG3n/cZn4l04rQzbzK7FAjGC/tajx06LCes="},"flags/4x3/pe-7ec59842737c90d6ff543f1831fd69b51e1e7ee1b068c3ac6259cbf2c214d611.svg":{"logical_path":"flags/4x3/pe.svg","mtime":"2019-05-14T13:11:18+02:00","size":74343,"digest":"7ec59842737c90d6ff543f1831fd69b51e1e7ee1b068c3ac6259cbf2c214d611","integrity":"sha256-fsWYQnN8kNb/VD8YMf1ptR4efuGwaMOsYlnL8sIU1hE="},"flags/1x1/pe-97d1b8ed1d4ed5e5f0348a731ca4a3a4b9abc7d440447dc87a521f229f375ed3.svg":{"logical_path":"flags/1x1/pe.svg","mtime":"2019-05-14T13:11:18+02:00","size":73629,"digest":"97d1b8ed1d4ed5e5f0348a731ca4a3a4b9abc7d440447dc87a521f229f375ed3","integrity":"sha256-l9G47R1O1eXwNIpzHKSjpLmrx9RARH3IelIfIp83XtM="},"flags/4x3/pf-27955c73c5be4043c5b7ddf64c8f46d11c6648e3b1fc0efe028b8afea21a40e1.svg":{"logical_path":"flags/4x3/pf.svg","mtime":"2019-05-14T13:11:18+02:00","size":4292,"digest":"27955c73c5be4043c5b7ddf64c8f46d11c6648e3b1fc0efe028b8afea21a40e1","integrity":"sha256-J5Vcc8W+QEPFt932TI9G0RxmSOOx/A7+AouK/qIaQOE="},"flags/1x1/pf-83e3e1d36fba45e015c62f938e6d182029edc05ebfdc50bcb33860f36f96d73a.svg":{"logical_path":"flags/1x1/pf.svg","mtime":"2019-05-14T13:11:18+02:00","size":4235,"digest":"83e3e1d36fba45e015c62f938e6d182029edc05ebfdc50bcb33860f36f96d73a","integrity":"sha256-g+Ph02+6ReAVxi+Tjm0YICntwF6/3FC8szhg82+W1zo="},"flags/4x3/pg-c2fdd2551f9044c461eccfae2d7ba0a347a99143f6002b71a429942af0217897.svg":{"logical_path":"flags/4x3/pg.svg","mtime":"2019-05-14T13:11:18+02:00","size":1671,"digest":"c2fdd2551f9044c461eccfae2d7ba0a347a99143f6002b71a429942af0217897","integrity":"sha256-wv3SVR+QRMRh7M+uLXugo0epkUP2ACtxpCmUKvAheJc="},"flags/1x1/pg-cf60257fa85f9270b1e9980e703435186110167f76c153bc460c10ee8b2d4b09.svg":{"logical_path":"flags/1x1/pg.svg","mtime":"2019-05-14T13:11:18+02:00","size":2111,"digest":"cf60257fa85f9270b1e9980e703435186110167f76c153bc460c10ee8b2d4b09","integrity":"sha256-z2Alf6hfknCx6ZgOcDQ1GGEQFn92wVO8RgwQ7ostSwk="},"flags/4x3/ph-bf3394850a6cec6a535420eabce263e7f8193413e4af1fb317c76da025388c1b.svg":{"logical_path":"flags/4x3/ph.svg","mtime":"2019-05-14T13:11:18+02:00","size":1303,"digest":"bf3394850a6cec6a535420eabce263e7f8193413e4af1fb317c76da025388c1b","integrity":"sha256-vzOUhQps7GpTVCDqvOJj5/gZNBPkrx+zF8dtoCU4jBs="},"flags/1x1/ph-006c3218effe4269252cb9638de82ea339eb2894951705c630533ceffa842169.svg":{"logical_path":"flags/1x1/ph.svg","mtime":"2019-05-14T13:11:18+02:00","size":1303,"digest":"006c3218effe4269252cb9638de82ea339eb2894951705c630533ceffa842169","integrity":"sha256-AGwyGO/+QmklLLljjeguoznrKJSVFwXGMFM87/qEIWk="},"flags/4x3/pk-b64f6a32e5bb598f57cfe49c4899c2021f2d153653f3d92101e6e11b2158e500.svg":{"logical_path":"flags/4x3/pk.svg","mtime":"2019-05-14T13:11:18+02:00","size":743,"digest":"b64f6a32e5bb598f57cfe49c4899c2021f2d153653f3d92101e6e11b2158e500","integrity":"sha256-tk9qMuW7WY9Xz+ScSJnCAh8tFTZT89khAebhGyFY5QA="},"flags/1x1/pk-d2d58def913c9081c5eeeda5f0b6895068ec13c955694e359531e23422145e60.svg":{"logical_path":"flags/1x1/pk.svg","mtime":"2019-05-14T13:11:18+02:00","size":694,"digest":"d2d58def913c9081c5eeeda5f0b6895068ec13c955694e359531e23422145e60","integrity":"sha256-0tWN75E8kIHF7u2l8LaJUGjsE8lVaU41lTHiNCIUXmA="},"flags/4x3/pl-f55a710991a94c2e6c2f9f1a7a4a36ebb84b24b7c9d9df4e1ffe86d61321fa6f.svg":{"logical_path":"flags/4x3/pl.svg","mtime":"2019-05-14T13:11:18+02:00","size":228,"digest":"f55a710991a94c2e6c2f9f1a7a4a36ebb84b24b7c9d9df4e1ffe86d61321fa6f","integrity":"sha256-9VpxCZGpTC5sL58aeko267hLJLfJ2d9OH/6G1hMh+m8="},"flags/1x1/pl-fafb539259385f2b99df910cff085710a9b4d9706b74e4e0f8a6ef627615c4e7.svg":{"logical_path":"flags/1x1/pl.svg","mtime":"2019-05-14T13:11:18+02:00","size":228,"digest":"fafb539259385f2b99df910cff085710a9b4d9706b74e4e0f8a6ef627615c4e7","integrity":"sha256-+vtTklk4XyuZ35EM/whXEKm02XBrdOTg+KbvYnYVxOc="},"flags/4x3/pm-8f6338d2ae3e0e42adc9754720ca21ad4979095cf6d7467a8db5a5a1c3e0b2a5.svg":{"logical_path":"flags/4x3/pm.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"8f6338d2ae3e0e42adc9754720ca21ad4979095cf6d7467a8db5a5a1c3e0b2a5","integrity":"sha256-j2M40q4+DkKtyXVHIMohrUl5CVz210Z6jbWlocPgsqU="},"flags/1x1/pm-63029c6198dc42c404ec39807a99528b1d198eeeea6f9a1e309548242480140b.svg":{"logical_path":"flags/1x1/pm.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"63029c6198dc42c404ec39807a99528b1d198eeeea6f9a1e309548242480140b","integrity":"sha256-YwKcYZjcQsQE7DmAeplSix0Zju7qb5oeMJVIJCSAFAs="},"flags/4x3/pn-4006c11ca83011c0dd60a13ac30b27da0578b9f1368bd8c6de5aab423f6662d8.svg":{"logical_path":"flags/4x3/pn.svg","mtime":"2019-05-14T13:11:18+02:00","size":10953,"digest":"4006c11ca83011c0dd60a13ac30b27da0578b9f1368bd8c6de5aab423f6662d8","integrity":"sha256-QAbBHKgwEcDdYKE6wwsn2gV4ufE2i9jG3lqrQj9mYtg="},"flags/1x1/pn-6c433f7f9cb79c6d5ed7bbeade8a495e3b26ca2604f4fd3995096109684ac5dd.svg":{"logical_path":"flags/1x1/pn.svg","mtime":"2019-05-14T13:11:18+02:00","size":8624,"digest":"6c433f7f9cb79c6d5ed7bbeade8a495e3b26ca2604f4fd3995096109684ac5dd","integrity":"sha256-bEM/f5y3nG1e17vq3opJXjsmyiYE9P05lQlhCWhKxd0="},"flags/4x3/pr-6287e1515fa80e2d05133ed93f14ca03a1be6909a9ef6c736fd60f9c9fe73132.svg":{"logical_path":"flags/4x3/pr.svg","mtime":"2019-05-14T13:11:18+02:00","size":634,"digest":"6287e1515fa80e2d05133ed93f14ca03a1be6909a9ef6c736fd60f9c9fe73132","integrity":"sha256-YofhUV+oDi0FEz7ZPxTKA6G+aQmp72xzb9YPnJ/nMTI="},"flags/1x1/pr-526985b3a6d2d6de577ed0ed92d0b49ce854667e3ff630304813fd5af15527cd.svg":{"logical_path":"flags/1x1/pr.svg","mtime":"2019-05-14T13:11:18+02:00","size":622,"digest":"526985b3a6d2d6de577ed0ed92d0b49ce854667e3ff630304813fd5af15527cd","integrity":"sha256-UmmFs6bS1t5XftDtktC0nOhUZn4/9jAwSBP9WvFVJ80="},"flags/4x3/ps-31f50e1fcb44b9aa6e9ce4473c3085f744e70ea0fa1fd8d85787f4e7b0c4a69b.svg":{"logical_path":"flags/4x3/ps.svg","mtime":"2019-05-14T13:11:18+02:00","size":558,"digest":"31f50e1fcb44b9aa6e9ce4473c3085f744e70ea0fa1fd8d85787f4e7b0c4a69b","integrity":"sha256-MfUOH8tEuapunORHPDCF90TnDqD6H9jYV4f057DEpps="},"flags/1x1/ps-c43918bc71bef71b24dd46e8cacc53e0df53e02dcce6199d06d11a4637f08a04.svg":{"logical_path":"flags/1x1/ps.svg","mtime":"2019-05-14T13:11:18+02:00","size":544,"digest":"c43918bc71bef71b24dd46e8cacc53e0df53e02dcce6199d06d11a4637f08a04","integrity":"sha256-xDkYvHG+9xsk3UboysxT4N9T4C3M5hmdBtEaRjfwigQ="},"flags/4x3/pt-9aab20caed714ee47fc408f017037aea94a649b3ba4d87e2da37870ee31e4f92.svg":{"logical_path":"flags/4x3/pt.svg","mtime":"2019-05-14T13:11:18+02:00","size":8393,"digest":"9aab20caed714ee47fc408f017037aea94a649b3ba4d87e2da37870ee31e4f92","integrity":"sha256-mqsgyu1xTuR/xAjwFwN66pSmSbO6TYfi2jeHDuMeT5I="},"flags/1x1/pt-a309869e5018c9690a65ebdf8a2d69d61f82772068a7920f9680ed0581ae5966.svg":{"logical_path":"flags/1x1/pt.svg","mtime":"2019-05-14T13:11:18+02:00","size":8775,"digest":"a309869e5018c9690a65ebdf8a2d69d61f82772068a7920f9680ed0581ae5966","integrity":"sha256-owmGnlAYyWkKZevfii1p1h+CdyBop5IPloDtBYGuWWY="},"flags/4x3/pw-9262037d114d0f61571c74f9a5455809709b43e6565443ae2667981eecb5f12a.svg":{"logical_path":"flags/4x3/pw.svg","mtime":"2019-05-14T13:11:18+02:00","size":467,"digest":"9262037d114d0f61571c74f9a5455809709b43e6565443ae2667981eecb5f12a","integrity":"sha256-kmIDfRFND2FXHHT5pUVYCXCbQ+ZWVEOuJmeYHuy18So="},"flags/1x1/pw-a6f42019653ae26d43c6e9b7bef83fc98cff8ec5e8d0c50ad7cb0a17d5e565a6.svg":{"logical_path":"flags/1x1/pw.svg","mtime":"2019-05-14T13:11:18+02:00","size":511,"digest":"a6f42019653ae26d43c6e9b7bef83fc98cff8ec5e8d0c50ad7cb0a17d5e565a6","integrity":"sha256-pvQgGWU64m1Dxum3vvg/yYz/jsXo0MUK18sKF9XlZaY="},"flags/4x3/py-5bc9e9f0dee94ae3d9bd80ae6fb1aac297dc81a1c592d0a73bc3383bce73af74.svg":{"logical_path":"flags/4x3/py.svg","mtime":"2019-05-14T13:11:18+02:00","size":17312,"digest":"5bc9e9f0dee94ae3d9bd80ae6fb1aac297dc81a1c592d0a73bc3383bce73af74","integrity":"sha256-W8np8N7pSuPZvYCub7GqwpfcgaHFktCnO8M4O85zr3Q="},"flags/1x1/py-182eff300f4507fd9399fb6310d1cd3b45adadd7924ad2814003c7111ec5c0de.svg":{"logical_path":"flags/1x1/py.svg","mtime":"2019-05-14T13:11:18+02:00","size":17478,"digest":"182eff300f4507fd9399fb6310d1cd3b45adadd7924ad2814003c7111ec5c0de","integrity":"sha256-GC7/MA9FB/2TmftjENHNO0WtrdeSStKBQAPHER7FwN4="},"flags/4x3/qa-32c93970f8e521850eddfaf2a89dfff987f0ae3b0b73a253c301b61cf547cf9e.svg":{"logical_path":"flags/4x3/qa.svg","mtime":"2019-05-14T13:11:18+02:00","size":362,"digest":"32c93970f8e521850eddfaf2a89dfff987f0ae3b0b73a253c301b61cf547cf9e","integrity":"sha256-Msk5cPjlIYUO3fryqJ3/+YfwrjsLc6JTwwG2HPVHz54="},"flags/1x1/qa-182e4d8ace2607d0c02d3c29d65eb084af71092357006bc41cd601981ec3b81c.svg":{"logical_path":"flags/1x1/qa.svg","mtime":"2019-05-14T13:11:18+02:00","size":359,"digest":"182e4d8ace2607d0c02d3c29d65eb084af71092357006bc41cd601981ec3b81c","integrity":"sha256-GC5Nis4mB9DALTwp1l6whK9xCSNXAGvEHNYBmB7DuBw="},"flags/4x3/re-8b2ea1f2727c266a2b80cb12a9b7195f6b656f521552b67893b6761a07f9bc92.svg":{"logical_path":"flags/4x3/re.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"8b2ea1f2727c266a2b80cb12a9b7195f6b656f521552b67893b6761a07f9bc92","integrity":"sha256-iy6h8nJ8JmorgMsSqbcZX2tlb1IVUrZ4k7Z2Ggf5vJI="},"flags/1x1/re-07eb7d855022bc678b47b0ce5fd05da5044d6dde86ad3697d4ae55c68ff447c1.svg":{"logical_path":"flags/1x1/re.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"07eb7d855022bc678b47b0ce5fd05da5044d6dde86ad3697d4ae55c68ff447c1","integrity":"sha256-B+t9hVAivGeLR7DOX9BdpQRNbd6GrTaX1K5Vxo/0R8E="},"flags/4x3/ro-4ab797571e1d9eb326486f75654a4590fd33f20444f85b77ba0997eb6138c21f.svg":{"logical_path":"flags/4x3/ro.svg","mtime":"2019-05-14T13:11:18+02:00","size":308,"digest":"4ab797571e1d9eb326486f75654a4590fd33f20444f85b77ba0997eb6138c21f","integrity":"sha256-SreXVx4dnrMmSG91ZUpFkP0z8gRE+Ft3ugmX62E4wh8="},"flags/1x1/ro-ddfcbaec04d11bf7f95abebd1d3a42b2862b1af8fca9b02764a6ed0e409a1d75.svg":{"logical_path":"flags/1x1/ro.svg","mtime":"2019-05-14T13:11:18+02:00","size":308,"digest":"ddfcbaec04d11bf7f95abebd1d3a42b2862b1af8fca9b02764a6ed0e409a1d75","integrity":"sha256-3fy67ATRG/f5Wr69HTpCsoYrGvj8qbAnZKbtDkCaHXU="},"flags/4x3/rs-dd8a52473ea40e23b393b5f4a30d1edd91865aab167f0c1835ae84b15dcce585.svg":{"logical_path":"flags/4x3/rs.svg","mtime":"2019-05-14T13:11:18+02:00","size":187640,"digest":"dd8a52473ea40e23b393b5f4a30d1edd91865aab167f0c1835ae84b15dcce585","integrity":"sha256-3YpSRz6kDiOzk7X0ow0e3ZGGWqsWfwwYNa6EsV3M5YU="},"flags/1x1/rs-42bf40209c92e4e7169daf29fbcb7253b2804eee7a463051529327f38851f865.svg":{"logical_path":"flags/1x1/rs.svg","mtime":"2019-05-14T13:11:18+02:00","size":187503,"digest":"42bf40209c92e4e7169daf29fbcb7253b2804eee7a463051529327f38851f865","integrity":"sha256-Qr9AIJyS5OcWna8p+8tyU7KATu56RjBRUpMn84hR+GU="},"flags/4x3/ru-13f4525a4caad6e31afa523d2bc4a0c1e6377c0bef1bfd872682130d3f199d1d.svg":{"logical_path":"flags/4x3/ru.svg","mtime":"2019-05-14T13:11:18+02:00","size":289,"digest":"13f4525a4caad6e31afa523d2bc4a0c1e6377c0bef1bfd872682130d3f199d1d","integrity":"sha256-E/RSWkyq1uMa+lI9K8SgweY3fAvvG/2HJoITDT8ZnR0="},"flags/1x1/ru-b9792a963faf667447e0456dba5be80a3b37c197a4284d1539a3433721d9e2fe.svg":{"logical_path":"flags/1x1/ru.svg","mtime":"2019-05-14T13:11:18+02:00","size":293,"digest":"b9792a963faf667447e0456dba5be80a3b37c197a4284d1539a3433721d9e2fe","integrity":"sha256-uXkqlj+vZnRH4EVtulvoCjs3wZekKE0VOaNDNyHZ4v4="},"flags/4x3/rw-bc38bcd6e19d2941839b253af6e863b13338cde1174874f9674471026c15e422.svg":{"logical_path":"flags/4x3/rw.svg","mtime":"2019-05-14T13:11:18+02:00","size":750,"digest":"bc38bcd6e19d2941839b253af6e863b13338cde1174874f9674471026c15e422","integrity":"sha256-vDi81uGdKUGDmyU69uhjsTM4zeEXSHT5Z0RxAmwV5CI="},"flags/1x1/rw-456698123775b83d2b0fa1b9fe073f9ccdba0b6bf39a703b8979dcce158eb32c.svg":{"logical_path":"flags/1x1/rw.svg","mtime":"2019-05-14T13:11:18+02:00","size":751,"digest":"456698123775b83d2b0fa1b9fe073f9ccdba0b6bf39a703b8979dcce158eb32c","integrity":"sha256-RWaYEjd1uD0rD6G5/gc/nM26C2vzmnA7iXnczhWOsyw="},"flags/4x3/sa-2b2fd6abb48415d5407c576c24a24fbd80af5877ef06cf2d026452f6c67f5f4d.svg":{"logical_path":"flags/4x3/sa.svg","mtime":"2019-05-14T13:11:18+02:00","size":10303,"digest":"2b2fd6abb48415d5407c576c24a24fbd80af5877ef06cf2d026452f6c67f5f4d","integrity":"sha256-Ky/Wq7SEFdVAfFdsJKJPvYCvWHfvBs8tAmRS9sZ/X00="},"flags/1x1/sa-d9ebc73e7957f86604164dd5054fb32601ad14d7dfd4bfe73da5bdd10bb2f8ae.svg":{"logical_path":"flags/1x1/sa.svg","mtime":"2019-05-14T13:11:18+02:00","size":10233,"digest":"d9ebc73e7957f86604164dd5054fb32601ad14d7dfd4bfe73da5bdd10bb2f8ae","integrity":"sha256-2evHPnlX+GYEFk3VBU+zJgGtFNff1L/nPaW90Quy+K4="},"flags/4x3/sb-37761927039d0a37ba0995c59fd31bbe36c8a0ca161e5b72b8131e3659f8dddf.svg":{"logical_path":"flags/4x3/sb.svg","mtime":"2019-05-14T13:11:18+02:00","size":950,"digest":"37761927039d0a37ba0995c59fd31bbe36c8a0ca161e5b72b8131e3659f8dddf","integrity":"sha256-N3YZJwOdCje6CZXFn9MbvjbIoMoWHltyuBMeNln43d8="},"flags/1x1/sb-bedbf8464cd82f391bfe6178c63055b650d0cf3aee60c37fa79a586f95783b79.svg":{"logical_path":"flags/1x1/sb.svg","mtime":"2019-05-14T13:11:18+02:00","size":956,"digest":"bedbf8464cd82f391bfe6178c63055b650d0cf3aee60c37fa79a586f95783b79","integrity":"sha256-vtv4RkzYLzkb/mF4xjBVtlDQzzruYMN/p5pYb5V4O3k="},"flags/4x3/sc-f6a2f8f37be93f07600b491b52cb58d80d74b92d8ace0af313f4ce081b0d1345.svg":{"logical_path":"flags/4x3/sc.svg","mtime":"2019-05-14T13:11:18+02:00","size":568,"digest":"f6a2f8f37be93f07600b491b52cb58d80d74b92d8ace0af313f4ce081b0d1345","integrity":"sha256-9qL483vpPwdgC0kbUstY2A10uS2KzgrzE/TOCBsNE0U="},"flags/1x1/sc-5dcd01b98c34460c9624280fb5047811fbae7d976620cd0a70ad4263a9085b60.svg":{"logical_path":"flags/1x1/sc.svg","mtime":"2019-05-14T13:11:18+02:00","size":573,"digest":"5dcd01b98c34460c9624280fb5047811fbae7d976620cd0a70ad4263a9085b60","integrity":"sha256-Xc0BuYw0RgyWJCgPtQR4EfuufZdmIM0KcK1CY6kIW2A="},"flags/4x3/sd-cc9cf97e8a37622b9e1bad28811d46c4471595afa448dc055e0e3aae7687fe4b.svg":{"logical_path":"flags/4x3/sd.svg","mtime":"2019-05-14T13:11:18+02:00","size":494,"digest":"cc9cf97e8a37622b9e1bad28811d46c4471595afa448dc055e0e3aae7687fe4b","integrity":"sha256-zJz5foo3YiueG60ogR1GxEcVla+kSNwFXg46rnaH/ks="},"flags/1x1/sd-1f5d13f9780085acbaad13d959b1918c796ba7b0450954b15d145e87cebe045c.svg":{"logical_path":"flags/1x1/sd.svg","mtime":"2019-05-14T13:11:18+02:00","size":496,"digest":"1f5d13f9780085acbaad13d959b1918c796ba7b0450954b15d145e87cebe045c","integrity":"sha256-H10T+XgAhay6rRPZWbGRjHlrp7BFCVSxXRReh86+BFw="},"flags/4x3/se-84b06bcd5bd90ea8dd6d1c3c8d2799a843c47b0256ce098aef75414964618286.svg":{"logical_path":"flags/4x3/se.svg","mtime":"2019-05-14T13:11:18+02:00","size":688,"digest":"84b06bcd5bd90ea8dd6d1c3c8d2799a843c47b0256ce098aef75414964618286","integrity":"sha256-hLBrzVvZDqjdbRw8jSeZqEPEewJWzgmK73VBSWRhgoY="},"flags/1x1/se-39f128686652cf914f8601110fcc9ac879bca204407013b93aff4ca4fb2ed9bc.svg":{"logical_path":"flags/1x1/se.svg","mtime":"2019-05-14T13:11:18+02:00","size":701,"digest":"39f128686652cf914f8601110fcc9ac879bca204407013b93aff4ca4fb2ed9bc","integrity":"sha256-OfEoaGZSz5FPhgERD8yayHm8ogRAcBO5Ov9MpPsu2bw="},"flags/4x3/sg-a82acd90077e76318ddb0be96999d9695b9a9f4627e8a0f341d3987a62747dcc.svg":{"logical_path":"flags/4x3/sg.svg","mtime":"2019-05-14T13:11:18+02:00","size":890,"digest":"a82acd90077e76318ddb0be96999d9695b9a9f4627e8a0f341d3987a62747dcc","integrity":"sha256-qCrNkAd+djGN2wvpaZnZaVuan0Yn6KDzQdOYemJ0fcw="},"flags/1x1/sg-c22e093634568aae249bf35f9ddcaa6796b5f27d76c39ff5336abf7f1b8a47d4.svg":{"logical_path":"flags/1x1/sg.svg","mtime":"2019-05-14T13:11:18+02:00","size":954,"digest":"c22e093634568aae249bf35f9ddcaa6796b5f27d76c39ff5336abf7f1b8a47d4","integrity":"sha256-wi4JNjRWiq4km/NfndyqZ5a18n12w5/1M2q/fxuKR9Q="},"flags/4x3/sh-57470d9a75955f0fac605a94e853bab524c7461a4c025e809fb09db762ebe46f.svg":{"logical_path":"flags/4x3/sh.svg","mtime":"2019-05-14T13:11:18+02:00","size":29702,"digest":"57470d9a75955f0fac605a94e853bab524c7461a4c025e809fb09db762ebe46f","integrity":"sha256-V0cNmnWVXw+sYFqU6FO6tSTHRhpMAl6An7Cdt2Lr5G8="},"flags/1x1/sh-8d06a0fff61e51eb65357d138e00736545835b8649aa2694152f4cdc9f941c16.svg":{"logical_path":"flags/1x1/sh.svg","mtime":"2019-05-14T13:11:18+02:00","size":30308,"digest":"8d06a0fff61e51eb65357d138e00736545835b8649aa2694152f4cdc9f941c16","integrity":"sha256-jQag//YeUetlNX0TjgBzZUWDW4ZJqiaUFS9M3J+UHBY="},"flags/4x3/si-289d6417f154323e7922df09ffc0f49ded31548c7ee8020c39cb85724ffbcea8.svg":{"logical_path":"flags/4x3/si.svg","mtime":"2019-05-14T13:11:18+02:00","size":2055,"digest":"289d6417f154323e7922df09ffc0f49ded31548c7ee8020c39cb85724ffbcea8","integrity":"sha256-KJ1kF/FUMj55It8J/8D0ne0xVIx+6AIMOcuFck/7zqg="},"flags/1x1/si-ca40a5f4f38119d6f52ffd3ddb36af95951a2aa1fadcd897f5bc1641bb2e0051.svg":{"logical_path":"flags/1x1/si.svg","mtime":"2019-05-14T13:11:18+02:00","size":2068,"digest":"ca40a5f4f38119d6f52ffd3ddb36af95951a2aa1fadcd897f5bc1641bb2e0051","integrity":"sha256-ykCl9POBGdb1L/092zavlZUaKqH63NiX9bwWQbsuAFE="},"flags/4x3/sj-67d4cdd268d0c0cd93fc561b506cb5646cb508385c93ed350d11f94aa1c83833.svg":{"logical_path":"flags/4x3/sj.svg","mtime":"2019-05-14T13:11:18+02:00","size":324,"digest":"67d4cdd268d0c0cd93fc561b506cb5646cb508385c93ed350d11f94aa1c83833","integrity":"sha256-Z9TN0mjQwM2T/FYbUGy1ZGy1CDhck+01DRH5SqHIODM="},"flags/1x1/sj-f7c489607033138039612d6abe7f4b0b4b6dada5cac75d78204f404a0d292b1c.svg":{"logical_path":"flags/1x1/sj.svg","mtime":"2019-05-14T13:11:18+02:00","size":324,"digest":"f7c489607033138039612d6abe7f4b0b4b6dada5cac75d78204f404a0d292b1c","integrity":"sha256-98SJYHAzE4A5YS1qvn9LC0ttraXKx114IE9ASg0pKxw="},"flags/4x3/sk-a0bdbb7f5d6998ffe9fcbc80bbdf0e6cff3629740d2ce1b8d61025e0a8b322b5.svg":{"logical_path":"flags/4x3/sk.svg","mtime":"2019-05-14T13:11:18+02:00","size":1208,"digest":"a0bdbb7f5d6998ffe9fcbc80bbdf0e6cff3629740d2ce1b8d61025e0a8b322b5","integrity":"sha256-oL27f11pmP/p/LyAu98ObP82KXQNLOG41hAl4KizIrU="},"flags/1x1/sk-a82a813b2d81af9be1aa775f22b2c2457d11e870e072d7e23957a11d0878faed.svg":{"logical_path":"flags/1x1/sk.svg","mtime":"2019-05-14T13:11:18+02:00","size":1187,"digest":"a82a813b2d81af9be1aa775f22b2c2457d11e870e072d7e23957a11d0878faed","integrity":"sha256-qCqBOy2Br5vhqndfIrLCRX0R6HDgctfiOVehHQh4+u0="},"flags/4x3/sl-be265bed24cfe0b25778201f251e52e4e721e3d319795875913805d1aea84ebb.svg":{"logical_path":"flags/4x3/sl.svg","mtime":"2019-05-14T13:11:18+02:00","size":278,"digest":"be265bed24cfe0b25778201f251e52e4e721e3d319795875913805d1aea84ebb","integrity":"sha256-viZb7STP4LJXeCAfJR5S5Och49MZeVh1kTgF0a6oTrs="},"flags/1x1/sl-cb8bccbaa21957f006ed4ae0144da81c999e93bd8014023b16b500fdcdc397d3.svg":{"logical_path":"flags/1x1/sl.svg","mtime":"2019-05-14T13:11:18+02:00","size":441,"digest":"cb8bccbaa21957f006ed4ae0144da81c999e93bd8014023b16b500fdcdc397d3","integrity":"sha256-y4vMuqIZV/AG7UrgFE2oHJmek72AFAI7FrUA/c3Dl9M="},"flags/4x3/sm-d7818df3f8f2d5dbed27dc5a0a80b1e41cdcd6130eeff221da58f0321e925f27.svg":{"logical_path":"flags/4x3/sm.svg","mtime":"2019-05-14T13:11:18+02:00","size":15960,"digest":"d7818df3f8f2d5dbed27dc5a0a80b1e41cdcd6130eeff221da58f0321e925f27","integrity":"sha256-14GN8/jy1dvtJ9xaCoCx5Bzc1hMO7/Ih2ljwMh6SXyc="},"flags/1x1/sm-6f87660dcac925bbdb036c79a0e20d3b208215d327be4c4764ae1069d6464efd.svg":{"logical_path":"flags/1x1/sm.svg","mtime":"2019-05-14T13:11:18+02:00","size":15881,"digest":"6f87660dcac925bbdb036c79a0e20d3b208215d327be4c4764ae1069d6464efd","integrity":"sha256-b4dmDcrJJbvbA2x5oOINOyCCFdMnvkxHZK4QadZGTv0="},"flags/4x3/sn-b131b17a374bcfbd00d442d282fa52f0e4e0e448cda1cdfaac25a95ff56443c0.svg":{"logical_path":"flags/4x3/sn.svg","mtime":"2019-05-14T13:11:18+02:00","size":427,"digest":"b131b17a374bcfbd00d442d282fa52f0e4e0e448cda1cdfaac25a95ff56443c0","integrity":"sha256-sTGxejdLz70A1ELSgvpS8OTg5EjNoc36rCWpX/VkQ8A="},"flags/1x1/sn-d180d3ce9846966dee6a3d9433ede7d24801dc4311636aabd470ec5b8765d772.svg":{"logical_path":"flags/1x1/sn.svg","mtime":"2019-05-14T13:11:18+02:00","size":418,"digest":"d180d3ce9846966dee6a3d9433ede7d24801dc4311636aabd470ec5b8765d772","integrity":"sha256-0YDTzphGlm3uaj2UM+3n0kgB3EMRY2qr1HDsW4dl13I="},"flags/4x3/so-3b5b77b371299478144a94b60c99524fb6b99bfedb3dcc976ab70185e07f399e.svg":{"logical_path":"flags/4x3/so.svg","mtime":"2019-05-14T13:11:18+02:00","size":494,"digest":"3b5b77b371299478144a94b60c99524fb6b99bfedb3dcc976ab70185e07f399e","integrity":"sha256-O1t3s3EplHgUSpS2DJlST7a5m/7bPcyXarcBheB/OZ4="},"flags/1x1/so-50aa941f2d2954285ef9e5ac260cdd264a73cf2e4b0c627677f04141fff2afd3.svg":{"logical_path":"flags/1x1/so.svg","mtime":"2019-05-14T13:11:18+02:00","size":501,"digest":"50aa941f2d2954285ef9e5ac260cdd264a73cf2e4b0c627677f04141fff2afd3","integrity":"sha256-UKqUHy0pVChe+eWsJgzdJkpzzy5LDGJ2d/BBQf/yr9M="},"flags/4x3/sr-94d0f0aefcbdea8d7ba35648eda5037e99bf4126723ce36416582ea43b08d3e2.svg":{"logical_path":"flags/4x3/sr.svg","mtime":"2019-05-14T13:11:18+02:00","size":318,"digest":"94d0f0aefcbdea8d7ba35648eda5037e99bf4126723ce36416582ea43b08d3e2","integrity":"sha256-lNDwrvy96o17o1ZI7aUDfpm/QSZyPONkFlgupDsI0+I="},"flags/1x1/sr-3944d683068d437471725d22fd71ccbe6a63ae307ff9775690417d3bf262cf82.svg":{"logical_path":"flags/1x1/sr.svg","mtime":"2019-05-14T13:11:18+02:00","size":323,"digest":"3944d683068d437471725d22fd71ccbe6a63ae307ff9775690417d3bf262cf82","integrity":"sha256-OUTWgwaNQ3Rxcl0i/XHMvmpjrjB/+XdWkEF9O/Jiz4I="},"flags/4x3/ss-f391e5002cbce83f97f7d1a11c284fa2e36a7d6dc734757d733656801ab17d0a.svg":{"logical_path":"flags/4x3/ss.svg","mtime":"2019-05-14T13:11:18+02:00","size":389,"digest":"f391e5002cbce83f97f7d1a11c284fa2e36a7d6dc734757d733656801ab17d0a","integrity":"sha256-85HlACy86D+X99GhHChPouNqfW3HNHV9czZWgBqxfQo="},"flags/1x1/ss-853bd9f713d2f6b1fe540a82e8bf4754912da21575b3fe756b8741767f318f7a.svg":{"logical_path":"flags/1x1/ss.svg","mtime":"2019-05-14T13:11:18+02:00","size":400,"digest":"853bd9f713d2f6b1fe540a82e8bf4754912da21575b3fe756b8741767f318f7a","integrity":"sha256-hTvZ9xPS9rH+VAqC6L9HVJEtohV1s/51a4dBdn8xj3o="},"flags/4x3/st-b52bb48a2c0800f5cb4b07bdd93c3908f77bcb6800be883ebf943bbd3d99d42c.svg":{"logical_path":"flags/4x3/st.svg","mtime":"2019-05-14T13:11:18+02:00","size":919,"digest":"b52bb48a2c0800f5cb4b07bdd93c3908f77bcb6800be883ebf943bbd3d99d42c","integrity":"sha256-tSu0iiwIAPXLSwe92Tw5CPd7y2gAvog+v5Q7vT2Z1Cw="},"flags/1x1/st-d8b5b1c8b9fe947086a4d277d2ac5d6b9cff188dfd37bda66c8bf5e02c5facc8.svg":{"logical_path":"flags/1x1/st.svg","mtime":"2019-05-14T13:11:18+02:00","size":923,"digest":"d8b5b1c8b9fe947086a4d277d2ac5d6b9cff188dfd37bda66c8bf5e02c5facc8","integrity":"sha256-2LWxyLn+lHCGpNJ30qxda5z/GI39N72mbIv14CxfrMg="},"flags/4x3/sv-6d02d63c7f04c9388e98f892cc43d8daa2110fc84242758d5627fcd247bfd09b.svg":{"logical_path":"flags/4x3/sv.svg","mtime":"2019-05-14T13:11:18+02:00","size":84037,"digest":"6d02d63c7f04c9388e98f892cc43d8daa2110fc84242758d5627fcd247bfd09b","integrity":"sha256-bQLWPH8EyTiOmPiSzEPY2qIRD8hCQnWNVif80ke/0Js="},"flags/1x1/sv-fb4c8d7eb98396a93c5b9c37195d70e809e0d71d8b8f9316e842121f95bb82ea.svg":{"logical_path":"flags/1x1/sv.svg","mtime":"2019-05-14T13:11:18+02:00","size":84509,"digest":"fb4c8d7eb98396a93c5b9c37195d70e809e0d71d8b8f9316e842121f95bb82ea","integrity":"sha256-+0yNfrmDlqk8W5w3GV1w6Ang1x2Lj5MW6EISH5W7guo="},"flags/4x3/sx-fb6a7b1cbc5b29eeeb39a5aec64ef7aad432c37bbe848d29955a3786b9763224.svg":{"logical_path":"flags/4x3/sx.svg","mtime":"2019-05-14T13:11:18+02:00","size":13306,"digest":"fb6a7b1cbc5b29eeeb39a5aec64ef7aad432c37bbe848d29955a3786b9763224","integrity":"sha256-+2p7HLxbKe7rOaWuxk73qtQyw3u+hI0plVo3hrl2MiQ="},"flags/1x1/sx-a37b124212f8530b921aef7657cfb35c2895a731c7a06f333faee4c93f32806a.svg":{"logical_path":"flags/1x1/sx.svg","mtime":"2019-05-14T13:11:18+02:00","size":13115,"digest":"a37b124212f8530b921aef7657cfb35c2895a731c7a06f333faee4c93f32806a","integrity":"sha256-o3sSQhL4UwuSGu92V8+zXCiVpzHHoG8zP67kyT8ygGo="},"flags/4x3/sy-e35f8d88c864ed4f38edb2f9f96d5bd69f6df078b50515b8c5467bf6b1689f50.svg":{"logical_path":"flags/4x3/sy.svg","mtime":"2019-05-14T13:11:18+02:00","size":568,"digest":"e35f8d88c864ed4f38edb2f9f96d5bd69f6df078b50515b8c5467bf6b1689f50","integrity":"sha256-41+NiMhk7U847bL5+W1b1p9t8Hi1BRW4xUZ79rFon1A="},"flags/1x1/sy-5d537bd5b42b58f6e8a7e33fbe5942a16126abb639edf9cb58b88938c57ebaa9.svg":{"logical_path":"flags/1x1/sy.svg","mtime":"2019-05-14T13:11:18+02:00","size":582,"digest":"5d537bd5b42b58f6e8a7e33fbe5942a16126abb639edf9cb58b88938c57ebaa9","integrity":"sha256-XVN71bQrWPbop+M/vllCoWEmq7Y57fnLWLiJOMV+uqk="},"flags/4x3/sz-c65ae592e943217787848364bdb4c57335869f4626ce705adabdc2620669c1c6.svg":{"logical_path":"flags/4x3/sz.svg","mtime":"2019-05-14T13:11:18+02:00","size":6755,"digest":"c65ae592e943217787848364bdb4c57335869f4626ce705adabdc2620669c1c6","integrity":"sha256-xlrlkulDIXeHhINkvbTFczWGn0YmznBa2r3CYgZpwcY="},"flags/1x1/sz-dd3d1c65bdf09317553f205e588e3dc7336acec1cb9315bfbe0f5bd8ca5bba3f.svg":{"logical_path":"flags/1x1/sz.svg","mtime":"2019-05-14T13:11:18+02:00","size":6706,"digest":"dd3d1c65bdf09317553f205e588e3dc7336acec1cb9315bfbe0f5bd8ca5bba3f","integrity":"sha256-3T0cZb3wkxdVPyBeWI49xzNqzsHLkxW/vg9b2Mpbuj8="},"flags/4x3/tc-594b6cc87040836c6d6777afb5833d565d3e5e75f404350a51443ec4588a1ccb.svg":{"logical_path":"flags/4x3/tc.svg","mtime":"2019-05-14T13:11:18+02:00","size":14585,"digest":"594b6cc87040836c6d6777afb5833d565d3e5e75f404350a51443ec4588a1ccb","integrity":"sha256-WUtsyHBAg2xtZ3evtYM9Vl0+XnX0BDUKUUQ+xFiKHMs="},"flags/1x1/tc-34a37006252eea340488220585c31d047b57e3e7934c77180d930972aaceadc3.svg":{"logical_path":"flags/1x1/tc.svg","mtime":"2019-05-14T13:11:18+02:00","size":14843,"digest":"34a37006252eea340488220585c31d047b57e3e7934c77180d930972aaceadc3","integrity":"sha256-NKNwBiUu6jQEiCIFhcMdBHtX4+eTTHcYDZMJcqrOrcM="},"flags/4x3/td-b67a1978e3badb895ff640c80bb6c0e33eac354220c08cf3fc93d62bf5d685a3.svg":{"logical_path":"flags/4x3/td.svg","mtime":"2019-05-14T13:11:18+02:00","size":270,"digest":"b67a1978e3badb895ff640c80bb6c0e33eac354220c08cf3fc93d62bf5d685a3","integrity":"sha256-tnoZeOO624lf9kDIC7bA4z6sNUIgwIzz/JPWK/XWhaM="},"flags/1x1/td-556b3a7991c17010cb7e1ff23c4edcc2dcdb8c406a128d407fd165ea8a19d311.svg":{"logical_path":"flags/1x1/td.svg","mtime":"2019-05-14T13:11:18+02:00","size":282,"digest":"556b3a7991c17010cb7e1ff23c4edcc2dcdb8c406a128d407fd165ea8a19d311","integrity":"sha256-VWs6eZHBcBDLfh/yPE7cwtzbjEBqEo1Af9Fl6ooZ0xE="},"flags/4x3/tf-35cd83351521f3022a43e01f0c40f34663a66ac1e92045979f31d3fd65c16d02.svg":{"logical_path":"flags/4x3/tf.svg","mtime":"2019-05-14T13:11:18+02:00","size":1091,"digest":"35cd83351521f3022a43e01f0c40f34663a66ac1e92045979f31d3fd65c16d02","integrity":"sha256-Nc2DNRUh8wIqQ+AfDEDzRmOmasHpIEWXnzHT/WXBbQI="},"flags/1x1/tf-485e71f61ff577735dbc4ba1025515c22a83c48ee7f3a2ed49804766c35f6ea5.svg":{"logical_path":"flags/1x1/tf.svg","mtime":"2019-05-14T13:11:18+02:00","size":1199,"digest":"485e71f61ff577735dbc4ba1025515c22a83c48ee7f3a2ed49804766c35f6ea5","integrity":"sha256-SF5x9h/1d3NdvEuhAlUVwiqDxI7n86LtSYBHZsNfbqU="},"flags/4x3/tg-24b25f4c2213fe35e5f5586d7ab23abf0c25ad2049708cd52ba72e1ec7b754ff.svg":{"logical_path":"flags/4x3/tg.svg","mtime":"2019-05-14T13:11:18+02:00","size":725,"digest":"24b25f4c2213fe35e5f5586d7ab23abf0c25ad2049708cd52ba72e1ec7b754ff","integrity":"sha256-JLJfTCIT/jXl9VhterI6vwwlrSBJcIzVK6cuHse3VP8="},"flags/1x1/tg-05f3d98392a5ec3e4aecf8f629d3d03f05ac55abb7d9d84187d599acfe271374.svg":{"logical_path":"flags/1x1/tg.svg","mtime":"2019-05-14T13:11:18+02:00","size":736,"digest":"05f3d98392a5ec3e4aecf8f629d3d03f05ac55abb7d9d84187d599acfe271374","integrity":"sha256-BfPZg5Kl7D5K7Pj2KdPQPwWsVau32dhBh9WZrP4nE3Q="},"flags/4x3/th-cc936bacd84dddd15454ef06bc64e357f83854af34692fc37363272d61f637d4.svg":{"logical_path":"flags/4x3/th.svg","mtime":"2019-05-14T13:11:18+02:00","size":287,"digest":"cc936bacd84dddd15454ef06bc64e357f83854af34692fc37363272d61f637d4","integrity":"sha256-zJNrrNhN3dFUVO8GvGTjV/g4VK80aS/Dc2MnLWH2N9Q="},"flags/1x1/th-de82cbd770db2be53a8e3d59d86e2b748a5d3f96eb8584f7b9364cefbd06a172.svg":{"logical_path":"flags/1x1/th.svg","mtime":"2019-05-14T13:11:18+02:00","size":288,"digest":"de82cbd770db2be53a8e3d59d86e2b748a5d3f96eb8584f7b9364cefbd06a172","integrity":"sha256-3oLL13DbK+U6jj1Z2G4rdIpdP5brhYT3uTZM770GoXI="},"flags/4x3/tj-b90bf3e2dd63265d55b67962b160df65f021c42b6ea304e2943c10b9e2a8749d.svg":{"logical_path":"flags/4x3/tj.svg","mtime":"2019-05-14T13:11:18+02:00","size":1831,"digest":"b90bf3e2dd63265d55b67962b160df65f021c42b6ea304e2943c10b9e2a8749d","integrity":"sha256-uQvz4t1jJl1VtnlisWDfZfAhxCtuowTilDwQueKodJ0="},"flags/1x1/tj-5f6571e74b1f8720f9ecc2d3aa2098ca45d2e7ad6602b2a57c206384719b9f36.svg":{"logical_path":"flags/1x1/tj.svg","mtime":"2019-05-14T13:11:18+02:00","size":1788,"digest":"5f6571e74b1f8720f9ecc2d3aa2098ca45d2e7ad6602b2a57c206384719b9f36","integrity":"sha256-X2Vx50sfhyD57MLTqiCYykXS561mArKlfCBjhHGbnzY="},"flags/4x3/tk-602520b29b909c96baea17a38eb654d6c6fbc7088f46a0cb8d8fe34ff92e3cb8.svg":{"logical_path":"flags/4x3/tk.svg","mtime":"2019-05-14T13:11:18+02:00","size":791,"digest":"602520b29b909c96baea17a38eb654d6c6fbc7088f46a0cb8d8fe34ff92e3cb8","integrity":"sha256-YCUgspuQnJa66hejjrZU1sb7xwiPRqDLjY/jT/kuPLg="},"flags/1x1/tk-fe1dc8aaa0643a45a74ecec8aec09f0fe2207d104bb3c28c0b84405f1275aeba.svg":{"logical_path":"flags/1x1/tk.svg","mtime":"2019-05-14T13:11:18+02:00","size":781,"digest":"fe1dc8aaa0643a45a74ecec8aec09f0fe2207d104bb3c28c0b84405f1275aeba","integrity":"sha256-/h3IqqBkOkWnTs7IrsCfD+IgfRBLs8KMC4RAXxJ1rro="},"flags/4x3/tl-ebdb862aa5ae5de1a72242571deaa70bfb222f488a93b70e304f2075b474d54b.svg":{"logical_path":"flags/4x3/tl.svg","mtime":"2019-05-14T13:11:18+02:00","size":600,"digest":"ebdb862aa5ae5de1a72242571deaa70bfb222f488a93b70e304f2075b474d54b","integrity":"sha256-69uGKqWuXeGnIkJXHeqnC/siL0iKk7cOME8gdbR01Us="},"flags/1x1/tl-485f02183bdb192ba3ce6e5f076e184112739f883ae0a8fde33c454377b848d6.svg":{"logical_path":"flags/1x1/tl.svg","mtime":"2019-05-14T13:11:18+02:00","size":582,"digest":"485f02183bdb192ba3ce6e5f076e184112739f883ae0a8fde33c454377b848d6","integrity":"sha256-SF8CGDvbGSujzm5fB24YQRJzn4g64Kj94zxFQ3e4SNY="},"flags/4x3/tm-5ddb4128bf0becd7c60413d5418027f5f01ca4bc72561d54b94febfee7a5a24b.svg":{"logical_path":"flags/4x3/tm.svg","mtime":"2019-05-14T13:11:18+02:00","size":32579,"digest":"5ddb4128bf0becd7c60413d5418027f5f01ca4bc72561d54b94febfee7a5a24b","integrity":"sha256-XdtBKL8L7NfGBBPVQYAn9fAcpLxyVh1UuU/r/ueloks="},"flags/1x1/tm-3521ad569a4095aa8d4166d5d9094fccfdbb3ea411207ad685b6dd5814ef3392.svg":{"logical_path":"flags/1x1/tm.svg","mtime":"2019-05-14T13:11:18+02:00","size":31884,"digest":"3521ad569a4095aa8d4166d5d9094fccfdbb3ea411207ad685b6dd5814ef3392","integrity":"sha256-NSGtVppAlaqNQWbV2QlPzP27PqQRIHrWhbbdWBTvM5I="},"flags/4x3/tn-ca27eb50d88b11d20b5b09e2bbecb7753267222489920c526608e5d2acd22d79.svg":{"logical_path":"flags/4x3/tn.svg","mtime":"2019-05-14T13:11:18+02:00","size":753,"digest":"ca27eb50d88b11d20b5b09e2bbecb7753267222489920c526608e5d2acd22d79","integrity":"sha256-yifrUNiLEdILWwniu+y3dTJnIiSJkgxSZgjl0qzSLXk="},"flags/1x1/tn-222c6cd4742c558f48ebcacb47ea334057642fffa3456a1c75e0fad9e728d09b.svg":{"logical_path":"flags/1x1/tn.svg","mtime":"2019-05-14T13:11:18+02:00","size":743,"digest":"222c6cd4742c558f48ebcacb47ea334057642fffa3456a1c75e0fad9e728d09b","integrity":"sha256-Iixs1HQsVY9I68rLR+ozQFdkL/+jRWocdeD62eco0Js="},"flags/4x3/to-c9c509fc24f591fbe52bbf732c44291384c787796e1fc9c703a973587c3f8ad1.svg":{"logical_path":"flags/4x3/to.svg","mtime":"2019-05-14T13:11:18+02:00","size":358,"digest":"c9c509fc24f591fbe52bbf732c44291384c787796e1fc9c703a973587c3f8ad1","integrity":"sha256-ycUJ/CT1kfvlK79zLEQpE4THh3luH8nHA6lzWHw/itE="},"flags/1x1/to-cf26dfb44b56b915b2f11896355cb778b938ed54423311d69d7cda9626887dda.svg":{"logical_path":"flags/1x1/to.svg","mtime":"2019-05-14T13:11:18+02:00","size":364,"digest":"cf26dfb44b56b915b2f11896355cb778b938ed54423311d69d7cda9626887dda","integrity":"sha256-zybftEtWuRWy8RiWNVy3eLk47VRCMxHWnXzaliaIfdo="},"flags/4x3/tr-c40f697070cf8d8358785b9203d1c8f438976e3cd644a87d9ee16fa9960deaa4.svg":{"logical_path":"flags/4x3/tr.svg","mtime":"2019-05-14T13:11:18+02:00","size":557,"digest":"c40f697070cf8d8358785b9203d1c8f438976e3cd644a87d9ee16fa9960deaa4","integrity":"sha256-xA9pcHDPjYNYeFuSA9HI9DiXbjzWRKh9nuFvqZYN6qQ="},"flags/1x1/tr-627dcf91a1e5153c045e33a3459b5d56002530fddd3fc53927f4d0fb7ea004a5.svg":{"logical_path":"flags/1x1/tr.svg","mtime":"2019-05-14T13:11:18+02:00","size":578,"digest":"627dcf91a1e5153c045e33a3459b5d56002530fddd3fc53927f4d0fb7ea004a5","integrity":"sha256-Yn3PkaHlFTwEXjOjRZtdVgAlMP3dP8U5J/TQ+36gBKU="},"flags/4x3/tt-04786ffedbde2c96a30ad1cbf4db000848f14bd700324651fc88364e5f3c2fd0.svg":{"logical_path":"flags/4x3/tt.svg","mtime":"2019-05-14T13:11:18+02:00","size":324,"digest":"04786ffedbde2c96a30ad1cbf4db000848f14bd700324651fc88364e5f3c2fd0","integrity":"sha256-BHhv/tveLJajCtHL9NsACEjxS9cAMkZR/Ig2Tl88L9A="},"flags/1x1/tt-6a3c73bfa7782366d95e673d847ef8f84c0475b364d359def1efd264297bac30.svg":{"logical_path":"flags/1x1/tt.svg","mtime":"2019-05-14T13:11:18+02:00","size":323,"digest":"6a3c73bfa7782366d95e673d847ef8f84c0475b364d359def1efd264297bac30","integrity":"sha256-ajxzv6d4I2bZXmc9hH74+EwEdbNk01ne8e/SZCl7rDA="},"flags/4x3/tv-20b56e7c0a2fbaa2a0b7b1bd87afc6368440f175fb3a0589de5e34e99d163fd7.svg":{"logical_path":"flags/4x3/tv.svg","mtime":"2019-05-14T13:11:18+02:00","size":2299,"digest":"20b56e7c0a2fbaa2a0b7b1bd87afc6368440f175fb3a0589de5e34e99d163fd7","integrity":"sha256-ILVufAovuqKgt7G9h6/GNoRA8XX7OgWJ3l406Z0WP9c="},"flags/1x1/tv-8bce1d7bde2e20dcc473ed3a33c66e4bedcf1acf2d2fff6d54353a480b8cafbc.svg":{"logical_path":"flags/1x1/tv.svg","mtime":"2019-05-14T13:11:18+02:00","size":2166,"digest":"8bce1d7bde2e20dcc473ed3a33c66e4bedcf1acf2d2fff6d54353a480b8cafbc","integrity":"sha256-i84de94uINzEc+06M8ZuS+3PGs8tL/9tVDU6SAuMr7w="},"flags/4x3/tw-36070ac0a15ab1f4811478da62e7678756a9aa266b141ed0549aba1c0e04333a.svg":{"logical_path":"flags/4x3/tw.svg","mtime":"2019-05-14T13:11:18+02:00","size":945,"digest":"36070ac0a15ab1f4811478da62e7678756a9aa266b141ed0549aba1c0e04333a","integrity":"sha256-NgcKwKFasfSBFHjaYudnh1apqiZrFB7QVJq6HA4EMzo="},"flags/1x1/tw-fd7a0db2f3808842ca99176f097356fe9e6f3c120d6aa9e8c4a9c2dd4c3943ba.svg":{"logical_path":"flags/1x1/tw.svg","mtime":"2019-05-14T13:11:18+02:00","size":960,"digest":"fd7a0db2f3808842ca99176f097356fe9e6f3c120d6aa9e8c4a9c2dd4c3943ba","integrity":"sha256-/XoNsvOAiELKmRdvCXNW/p5vPBINaqnoxKnC3Uw5Q7o="},"flags/4x3/tz-51ad7d69f059075df61b9226468af0d78642af4ad34a7540f64c5bea82e803d7.svg":{"logical_path":"flags/4x3/tz.svg","mtime":"2019-05-14T13:11:18+02:00","size":546,"digest":"51ad7d69f059075df61b9226468af0d78642af4ad34a7540f64c5bea82e803d7","integrity":"sha256-Ua19afBZB132G5ImRorw14ZCr0rTSnVA9kxb6oLoA9c="},"flags/1x1/tz-0703f29a7ae02a9a1753cb1726dd2934d75ed3a12e8d63faa9fa866e1fe61440.svg":{"logical_path":"flags/1x1/tz.svg","mtime":"2019-05-14T13:11:18+02:00","size":605,"digest":"0703f29a7ae02a9a1753cb1726dd2934d75ed3a12e8d63faa9fa866e1fe61440","integrity":"sha256-BwPymnrgKpoXU8sXJt0pNNde06EujWP6qfqGbh/mFEA="},"flags/4x3/ua-7f7db03c3b492aaacd11b0abac70d543a7c0ec5265a36d529bbb80a7c432d81a.svg":{"logical_path":"flags/4x3/ua.svg","mtime":"2019-05-14T13:11:18+02:00","size":241,"digest":"7f7db03c3b492aaacd11b0abac70d543a7c0ec5265a36d529bbb80a7c432d81a","integrity":"sha256-f32wPDtJKqrNEbCrrHDVQ6fA7FJlo21Sm7uAp8Qy2Bo="},"flags/1x1/ua-25192fa80f120edb1dd1c4757fd7b79ef38f5e1729238f4135003e6a1501bf28.svg":{"logical_path":"flags/1x1/ua.svg","mtime":"2019-05-14T13:11:18+02:00","size":241,"digest":"25192fa80f120edb1dd1c4757fd7b79ef38f5e1729238f4135003e6a1501bf28","integrity":"sha256-JRkvqA8SDtsd0cR1f9e3nvOPXhcpI49BNQA+ahUBvyg="},"flags/4x3/ug-7635df53eafdf411be0809df835bfbcffd61badd6c4df3db0909c8b3188015a0.svg":{"logical_path":"flags/4x3/ug.svg","mtime":"2019-05-14T13:11:18+02:00","size":3959,"digest":"7635df53eafdf411be0809df835bfbcffd61badd6c4df3db0909c8b3188015a0","integrity":"sha256-djXfU+r99BG+CAnfg1v7z/1hut1sTfPbCQnIsxiAFaA="},"flags/1x1/ug-537f34f64e723fbe7cb7902ea0e61303f1ada79214197efc39ebe2c52ce24186.svg":{"logical_path":"flags/1x1/ug.svg","mtime":"2019-05-14T13:11:18+02:00","size":4038,"digest":"537f34f64e723fbe7cb7902ea0e61303f1ada79214197efc39ebe2c52ce24186","integrity":"sha256-U3809k5yP758t5AuoOYTA/Gtp5IUGX78OevixSziQYY="},"flags/4x3/um-a0ae80e34bbf94677dd6052ea87cc0090aba747dab5440e5ca6e231f7f07c96d.svg":{"logical_path":"flags/4x3/um.svg","mtime":"2019-05-14T13:11:18+02:00","size":4524,"digest":"a0ae80e34bbf94677dd6052ea87cc0090aba747dab5440e5ca6e231f7f07c96d","integrity":"sha256-oK6A40u/lGd91gUuqHzACQq6dH2rVEDlym4jH38HyW0="},"flags/1x1/um-3f1bc09babe7fdcf32518bb49d1aac3a66d0204f955eacca291c58d4f4ef895a.svg":{"logical_path":"flags/1x1/um.svg","mtime":"2019-05-14T13:11:18+02:00","size":3975,"digest":"3f1bc09babe7fdcf32518bb49d1aac3a66d0204f955eacca291c58d4f4ef895a","integrity":"sha256-PxvAm6vn/c8yUYu0nRqsOmbQIE+VXqzKKRxY1PTviVo="},"flags/4x3/us-aefd8f7e57d11f7b0416d01d9c665ab3848b10af849f35a4d772d58d24d83329.svg":{"logical_path":"flags/4x3/us.svg","mtime":"2019-05-14T13:11:18+02:00","size":4468,"digest":"aefd8f7e57d11f7b0416d01d9c665ab3848b10af849f35a4d772d58d24d83329","integrity":"sha256-rv2PflfRH3sEFtAdnGZas4SLEK+EnzWk13LVjSTYMyk="},"flags/1x1/us-87af45be9346e8c820312976abe332ee11f8931e29fa361328d28660a711b1e2.svg":{"logical_path":"flags/1x1/us.svg","mtime":"2019-05-14T13:11:18+02:00","size":3924,"digest":"87af45be9346e8c820312976abe332ee11f8931e29fa361328d28660a711b1e2","integrity":"sha256-h69FvpNG6MggMSl2q+My7hH4kx4p+jYTKNKGYKcRseI="},"flags/4x3/uy-9f636c8283abf56cc930746fd427c1d1644dcf8736c537629df13f760da96ebc.svg":{"logical_path":"flags/4x3/uy.svg","mtime":"2019-05-14T13:11:18+02:00","size":1721,"digest":"9f636c8283abf56cc930746fd427c1d1644dcf8736c537629df13f760da96ebc","integrity":"sha256-n2NsgoOr9WzJMHRv1CfB0WRNz4c2xTdinfE/dg2pbrw="},"flags/1x1/uy-e216b762a93ec55bf9b4ae3d35b7febe0b192a12246fd66c45139ce77fb2095e.svg":{"logical_path":"flags/1x1/uy.svg","mtime":"2019-05-14T13:11:18+02:00","size":1718,"digest":"e216b762a93ec55bf9b4ae3d35b7febe0b192a12246fd66c45139ce77fb2095e","integrity":"sha256-4ha3Yqk+xVv5tK49Nbf+vgsZKhIkb9ZsRROc53+yCV4="},"flags/4x3/uz-697d596705372323beddccb3626d1ce405b36249315c6b006ff1529e24909ceb.svg":{"logical_path":"flags/4x3/uz.svg","mtime":"2019-05-14T13:11:18+02:00","size":1457,"digest":"697d596705372323beddccb3626d1ce405b36249315c6b006ff1529e24909ceb","integrity":"sha256-aX1ZZwU3IyO+3cyzYm0c5AWzYkkxXGsAb/FSniSQnOs="},"flags/1x1/uz-aa34cbe4f6f0e4b5d890975578d28cc9b1e88ebd503d3bdca693748eb29b3353.svg":{"logical_path":"flags/1x1/uz.svg","mtime":"2019-05-14T13:11:18+02:00","size":1457,"digest":"aa34cbe4f6f0e4b5d890975578d28cc9b1e88ebd503d3bdca693748eb29b3353","integrity":"sha256-qjTL5Pbw5LXYkJdVeNKMybHojr1QPTvcppN0jrKbM1M="},"flags/4x3/va-d24d3c5bee108c396997c3d5b2bd2273433752d8c222eb531650e51551a4afd0.svg":{"logical_path":"flags/4x3/va.svg","mtime":"2019-05-14T13:11:18+02:00","size":91241,"digest":"d24d3c5bee108c396997c3d5b2bd2273433752d8c222eb531650e51551a4afd0","integrity":"sha256-0k08W+4QjDlpl8PVsr0ic0M3UtjCIutTFlDlFVGkr9A="},"flags/1x1/va-01160c1bffda12f0b94554ba0c50162a88da807943617334bd4c57a030985e95.svg":{"logical_path":"flags/1x1/va.svg","mtime":"2019-05-14T13:11:18+02:00","size":90876,"digest":"01160c1bffda12f0b94554ba0c50162a88da807943617334bd4c57a030985e95","integrity":"sha256-ARYMG//aEvC5RVS6DFAWKojagHlDYXM0vUxXoDCYXpU="},"flags/4x3/vc-ddf979bee2889414e5a05ac55f39a9c93f34e0aff0d35f007605049a2d8b5afb.svg":{"logical_path":"flags/4x3/vc.svg","mtime":"2019-05-14T13:11:18+02:00","size":454,"digest":"ddf979bee2889414e5a05ac55f39a9c93f34e0aff0d35f007605049a2d8b5afb","integrity":"sha256-3fl5vuKIlBTloFrFXzmpyT804K/w018AdgUEmi2LWvs="},"flags/1x1/vc-ac776e16dec19ff2e2d9238f541dae5d977282b451a83ab3d4122efed2392be9.svg":{"logical_path":"flags/1x1/vc.svg","mtime":"2019-05-14T13:11:18+02:00","size":501,"digest":"ac776e16dec19ff2e2d9238f541dae5d977282b451a83ab3d4122efed2392be9","integrity":"sha256-rHduFt7Bn/Li2SOPVB2uXZdygrRRqDqz1BIu/tI5K+k="},"flags/4x3/ve-e23abd006cc75a8c4f9ec1cb122b46f9b52e26c5606532d2c868277d4ccd523b.svg":{"logical_path":"flags/4x3/ve.svg","mtime":"2019-05-14T13:11:18+02:00","size":1171,"digest":"e23abd006cc75a8c4f9ec1cb122b46f9b52e26c5606532d2c868277d4ccd523b","integrity":"sha256-4jq9AGzHWoxPnsHLEitG+bUuJsVgZTLSyGgnfUzNUjs="},"flags/1x1/ve-1480713f28719e0a83da2c5f1333407dbfa5bcc0de8c9ba718fcf47273ee95ef.svg":{"logical_path":"flags/1x1/ve.svg","mtime":"2019-05-14T13:11:18+02:00","size":1191,"digest":"1480713f28719e0a83da2c5f1333407dbfa5bcc0de8c9ba718fcf47273ee95ef","integrity":"sha256-FIBxPyhxngqD2ixfEzNAfb+lvMDejJunGPz0cnPule8="},"flags/4x3/vg-7f8f24a4d6995e4dd39e3d9098dad5e14649821fa12ffc200edf0a586285ee15.svg":{"logical_path":"flags/4x3/vg.svg","mtime":"2019-05-14T13:11:18+02:00","size":24818,"digest":"7f8f24a4d6995e4dd39e3d9098dad5e14649821fa12ffc200edf0a586285ee15","integrity":"sha256-f48kpNaZXk3Tnj2QmNrV4UZJgh+hL/wgDt8KWGKF7hU="},"flags/1x1/vg-b464b6a78e46c29df9e4bdadc2646208f11c59168706456075f970552a24efa8.svg":{"logical_path":"flags/1x1/vg.svg","mtime":"2019-05-14T13:11:18+02:00","size":24997,"digest":"b464b6a78e46c29df9e4bdadc2646208f11c59168706456075f970552a24efa8","integrity":"sha256-tGS2p45Gwp355L2twmRiCPEcWRaHBkVgdflwVSok76g="},"flags/4x3/vi-58311325a293b046044976d899f288ce0fbe9bfd705a23947a9b38d7991983d7.svg":{"logical_path":"flags/4x3/vi.svg","mtime":"2019-05-14T13:11:18+02:00","size":8775,"digest":"58311325a293b046044976d899f288ce0fbe9bfd705a23947a9b38d7991983d7","integrity":"sha256-WDETJaKTsEYESXbYmfKIzg++m/1wWiOUeps415kZg9c="},"flags/1x1/vi-1c132d2cff66cdbdb7b6acf504bb0cd9d7579595d80c3fa6604ff24ca7a0184d.svg":{"logical_path":"flags/1x1/vi.svg","mtime":"2019-05-14T13:11:18+02:00","size":8730,"digest":"1c132d2cff66cdbdb7b6acf504bb0cd9d7579595d80c3fa6604ff24ca7a0184d","integrity":"sha256-HBMtLP9mzb23tqz1BLsM2ddXlZXYDD+mYE/yTKegGE0="},"flags/4x3/vn-a918d3c9cdc368b1d2ff9614d58cbcd1d43b725889b0ba18f5d4e693071e389a.svg":{"logical_path":"flags/4x3/vn.svg","mtime":"2019-05-14T13:11:18+02:00","size":492,"digest":"a918d3c9cdc368b1d2ff9614d58cbcd1d43b725889b0ba18f5d4e693071e389a","integrity":"sha256-qRjTyc3DaLHS/5YU1Yy80dQ7cliJsLoY9dTmkwceOJo="},"flags/1x1/vn-895e428ae3d98c99dbb02088cf8ef040bfb031df6f16c3c8fc3678505d869791.svg":{"logical_path":"flags/1x1/vn.svg","mtime":"2019-05-14T13:11:18+02:00","size":501,"digest":"895e428ae3d98c99dbb02088cf8ef040bfb031df6f16c3c8fc3678505d869791","integrity":"sha256-iV5CiuPZjJnbsCCIz47wQL+wMd9vFsPI/DZ4UF2Gl5E="},"flags/4x3/vu-2c286c778a7bed03cb603ab24b68dc91868f4f054cf4f851bdd17aa16731571c.svg":{"logical_path":"flags/4x3/vu.svg","mtime":"2019-05-14T13:11:18+02:00","size":3771,"digest":"2c286c778a7bed03cb603ab24b68dc91868f4f054cf4f851bdd17aa16731571c","integrity":"sha256-LChsd4p77QPLYDqyS2jckYaPTwVM9PhRvdF6oWcxVxw="},"flags/1x1/vu-51ef23121e2641ebeeac50d31c4e52b7d00d3ab1bc9fc0ad95ea86fd3631975a.svg":{"logical_path":"flags/1x1/vu.svg","mtime":"2019-05-14T13:11:18+02:00","size":3740,"digest":"51ef23121e2641ebeeac50d31c4e52b7d00d3ab1bc9fc0ad95ea86fd3631975a","integrity":"sha256-Ue8jEh4mQevurFDTHE5St9ANOrG8n8CtleqG/TYxl1o="},"flags/4x3/wf-f7e9ac5edac196ac32d7bafa04b5c0d924b89e9d7e4f3535a6a26c6c1523639c.svg":{"logical_path":"flags/4x3/wf.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"f7e9ac5edac196ac32d7bafa04b5c0d924b89e9d7e4f3535a6a26c6c1523639c","integrity":"sha256-9+msXtrBlqwy17r6BLXA2SS4np1+TzU1pqJsbBUjY5w="},"flags/1x1/wf-95a920a79aa32d92f8a362321aae4230e17025ac04d976593f4423d0c37c1aee.svg":{"logical_path":"flags/1x1/wf.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"95a920a79aa32d92f8a362321aae4230e17025ac04d976593f4423d0c37c1aee","integrity":"sha256-lakgp5qjLZL4o2IyGq5CMOFwJawE2XZZP0Qj0MN8Gu4="},"flags/4x3/ws-efc6505a802a3fa2018bc102fc2e11db8c738464c619381b6edc32d0a89341a3.svg":{"logical_path":"flags/4x3/ws.svg","mtime":"2019-05-14T13:11:18+02:00","size":663,"digest":"efc6505a802a3fa2018bc102fc2e11db8c738464c619381b6edc32d0a89341a3","integrity":"sha256-78ZQWoAqP6IBi8EC/C4R24xzhGTGGTgbbtwy0KiTQaM="},"flags/1x1/ws-e3afb81c037c814620027bf61ac5e266683cab7ba5796ecf10b64c110cfcb932.svg":{"logical_path":"flags/1x1/ws.svg","mtime":"2019-05-14T13:11:18+02:00","size":645,"digest":"e3afb81c037c814620027bf61ac5e266683cab7ba5796ecf10b64c110cfcb932","integrity":"sha256-46+4HAN8gUYgAnv2GsXiZmg8q3uleW7PELZMEQz8uTI="},"flags/4x3/ye-fd88856e70d66b01b4f0f608936a61cf3b1d9dad40a2932fc5da4d01f72a447b.svg":{"logical_path":"flags/4x3/ye.svg","mtime":"2019-05-14T13:11:18+02:00","size":278,"digest":"fd88856e70d66b01b4f0f608936a61cf3b1d9dad40a2932fc5da4d01f72a447b","integrity":"sha256-/YiFbnDWawG08PYIk2phzzsdna1AopMvxdpNAfcqRHs="},"flags/1x1/ye-0c0e32330871e6d83af54affb7dadbbe736f9799068508211fbae54db9bbdcc6.svg":{"logical_path":"flags/1x1/ye.svg","mtime":"2019-05-14T13:11:18+02:00","size":278,"digest":"0c0e32330871e6d83af54affb7dadbbe736f9799068508211fbae54db9bbdcc6","integrity":"sha256-DA4yMwhx5tg69Ur/t9rbvnNvl5kGhQghH7rlTbm73MY="},"flags/4x3/yt-2eef17b543424082d9f9b42a67e84c20b52e7f7eae8c4326d60711158da51d5b.svg":{"logical_path":"flags/4x3/yt.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"2eef17b543424082d9f9b42a67e84c20b52e7f7eae8c4326d60711158da51d5b","integrity":"sha256-Lu8XtUNCQILZ+bQqZ+hMILUuf36ujEMm1gcRFY2lHVs="},"flags/1x1/yt-911da8075337fd8f75ecc8a338c294cb771c6b9a08576f96c9de1437888cd2a7.svg":{"logical_path":"flags/1x1/yt.svg","mtime":"2019-05-14T13:11:18+02:00","size":295,"digest":"911da8075337fd8f75ecc8a338c294cb771c6b9a08576f96c9de1437888cd2a7","integrity":"sha256-kR2oB1M3/Y917MijOMKUy3cca5oIV2+Wyd4UN4iM0qc="},"flags/4x3/za-45991a2aee307198510e56bf92523070aac4241cafe6c3ddb8f89b20a61d6371.svg":{"logical_path":"flags/4x3/za.svg","mtime":"2019-05-14T13:11:18+02:00","size":856,"digest":"45991a2aee307198510e56bf92523070aac4241cafe6c3ddb8f89b20a61d6371","integrity":"sha256-RZkaKu4wcZhRDla/klIwcKrEJByv5sPduPibIKYdY3E="},"flags/1x1/za-bc09a89b29311ea7e582ef60bf4e18aff7c29de6fbefe309463ca765723a0ce8.svg":{"logical_path":"flags/1x1/za.svg","mtime":"2019-05-14T13:11:18+02:00","size":875,"digest":"bc09a89b29311ea7e582ef60bf4e18aff7c29de6fbefe309463ca765723a0ce8","integrity":"sha256-vAmomykxHqflgu9gv04Yr/fCneb77+MJRjynZXI6DOg="},"flags/4x3/zm-07c0f30d86e66d0cad9d66cd9c9384d9cce1844f159d245deff6717101fe49c2.svg":{"logical_path":"flags/4x3/zm.svg","mtime":"2019-05-14T13:11:18+02:00","size":5508,"digest":"07c0f30d86e66d0cad9d66cd9c9384d9cce1844f159d245deff6717101fe49c2","integrity":"sha256-B8DzDYbmbQytnWbNnJOE2czhhE8VnSRd7/ZxcQH+ScI="},"flags/1x1/zm-fc5bce3834c71fe36617ea5f57f0bd1dcf3880a7c6aa515dcf92ae067f796241.svg":{"logical_path":"flags/1x1/zm.svg","mtime":"2019-05-14T13:11:18+02:00","size":5429,"digest":"fc5bce3834c71fe36617ea5f57f0bd1dcf3880a7c6aa515dcf92ae067f796241","integrity":"sha256-/FvOODTHH+NmF+pfV/C9Hc84gKfGqlFdz5KuBn95YkE="},"flags/4x3/zw-5217c74f14d9fdda244b69c5982bbabee052ac0f1cc0704926e8b1e621e50f9a.svg":{"logical_path":"flags/4x3/zw.svg","mtime":"2019-05-14T13:11:18+02:00","size":6791,"digest":"5217c74f14d9fdda244b69c5982bbabee052ac0f1cc0704926e8b1e621e50f9a","integrity":"sha256-UhfHTxTZ/dokS2nFmCu6vuBSrA8cwHBJJuix5iHlD5o="},"flags/1x1/zw-a33b191c631709b9e1d85e06f5b15535fb544d4668c8bef865ede2a0b6a88ed9.svg":{"logical_path":"flags/1x1/zw.svg","mtime":"2019-05-14T13:11:18+02:00","size":6770,"digest":"a33b191c631709b9e1d85e06f5b15535fb544d4668c8bef865ede2a0b6a88ed9","integrity":"sha256-ozsZHGMXCbnh2F4G9bFVNftUTUZoyL74Ze3ioLaojtk="},"flags/4x3/es-ct-bcbb454a50c9a647efd43dcf041445f15e8dd70654bde530bf62401d4fb7738d.svg":{"logical_path":"flags/4x3/es-ct.svg","mtime":"2019-05-14T13:11:18+02:00","size":261,"digest":"bcbb454a50c9a647efd43dcf041445f15e8dd70654bde530bf62401d4fb7738d","integrity":"sha256-vLtFSlDJpkfv1D3PBBRF8V6N1wZUveUwv2JAHU+3c40="},"flags/1x1/es-ct-7f13eb2b2f5c11dccd7043286bed7540d4dad4b1a8367b0aca1b8405a351b2ef.svg":{"logical_path":"flags/1x1/es-ct.svg","mtime":"2019-05-14T13:11:18+02:00","size":260,"digest":"7f13eb2b2f5c11dccd7043286bed7540d4dad4b1a8367b0aca1b8405a351b2ef","integrity":"sha256-fxPrKy9cEdzNcEMoa+11QNTa1LGoNnsKyhuEBaNRsu8="},"flags/4x3/eu-5f129db64306353251b78f998d531d2f1019404cfa890ae63ed70dc316c7f240.svg":{"logical_path":"flags/4x3/eu.svg","mtime":"2019-05-14T13:11:18+02:00","size":1252,"digest":"5f129db64306353251b78f998d531d2f1019404cfa890ae63ed70dc316c7f240","integrity":"sha256-XxKdtkMGNTJRt4+ZjVMdLxAZQEz6iQrmPtcNwxbH8kA="},"flags/1x1/eu-ec59ac8daf2a63ea8e299ad63a208445d68a96affe6a10a7328acb6799d44127.svg":{"logical_path":"flags/1x1/eu.svg","mtime":"2019-05-14T13:11:18+02:00","size":1253,"digest":"ec59ac8daf2a63ea8e299ad63a208445d68a96affe6a10a7328acb6799d44127","integrity":"sha256-7Fmsja8qY+qOKZrWOiCERdaKlq/+ahCnMorLZ5nUQSc="},"flags/4x3/gb-eng-1895f4e35ae299f5d869da2462ffcf98df4b08dcddc531c8f175e49720001a14.svg":{"logical_path":"flags/4x3/gb-eng.svg","mtime":"2019-05-14T13:11:18+02:00","size":245,"digest":"1895f4e35ae299f5d869da2462ffcf98df4b08dcddc531c8f175e49720001a14","integrity":"sha256-GJX041rimfXYadokYv/PmN9LCNzdxTHI8XXklyAAGhQ="},"flags/1x1/gb-eng-d11afb87f40f35acda435a886ea044bd5e0b6f363ba0c7319f1d0181551fecf3.svg":{"logical_path":"flags/1x1/gb-eng.svg","mtime":"2019-05-14T13:11:18+02:00","size":235,"digest":"d11afb87f40f35acda435a886ea044bd5e0b6f363ba0c7319f1d0181551fecf3","integrity":"sha256-0Rr7h/QPNazaQ1qIbqBEvV4LbzY7oMcxnx0BgVUf7PM="},"flags/4x3/gb-nir-b280f09c787f495c1074376cd67537b40216f672917e7d204bb12b8e7c72afaf.svg":{"logical_path":"flags/4x3/gb-nir.svg","mtime":"2019-05-14T13:11:18+02:00","size":23738,"digest":"b280f09c787f495c1074376cd67537b40216f672917e7d204bb12b8e7c72afaf","integrity":"sha256-soDwnHh/SVwQdDds1nU3tAIW9nKRfn0gS7Erjnxyr68="},"flags/1x1/gb-nir-2e516e72e0e8e244ef430e6608322f8c4fb276807ab033279b2a6570dd68fd41.svg":{"logical_path":"flags/1x1/gb-nir.svg","mtime":"2019-05-14T13:11:18+02:00","size":25263,"digest":"2e516e72e0e8e244ef430e6608322f8c4fb276807ab033279b2a6570dd68fd41","integrity":"sha256-LlFucuDo4kTvQw5mCDIvjE+ydoB6sDMnmyplcN1o/UE="},"flags/4x3/gb-sct-1b9e407802ae901cf8da740c382ec2b19821837d76271a73346e0c63c2244506.svg":{"logical_path":"flags/4x3/gb-sct.svg","mtime":"2019-05-14T13:11:18+02:00","size":234,"digest":"1b9e407802ae901cf8da740c382ec2b19821837d76271a73346e0c63c2244506","integrity":"sha256-G55AeAKukBz42nQMOC7CsZghg312JxpzNG4MY8IkRQY="},"flags/1x1/gb-sct-d01e8a06a340e30ce52e8a3aba7ca6207afb96fdb238a815cc6cb92df8fa5df3.svg":{"logical_path":"flags/1x1/gb-sct.svg","mtime":"2019-05-14T13:11:18+02:00","size":242,"digest":"d01e8a06a340e30ce52e8a3aba7ca6207afb96fdb238a815cc6cb92df8fa5df3","integrity":"sha256-0B6KBqNA4wzlLoo6unymIHr7lv2yOKgVzGy5Lfj6XfM="},"flags/4x3/gb-wls-5232b3e376a19866cddec8225cba242783b2a48063811957f1ce5a2c347c5bc9.svg":{"logical_path":"flags/4x3/gb-wls.svg","mtime":"2019-05-14T13:11:18+02:00","size":9188,"digest":"5232b3e376a19866cddec8225cba242783b2a48063811957f1ce5a2c347c5bc9","integrity":"sha256-UjKz43ahmGbN3sgiXLokJ4OypIBjgRlX8c5aLDR8W8k="},"flags/1x1/gb-wls-126615bc3597fda1ca4ee931ef24f6c2cf2547998c06db9c1ded69fe66c479e9.svg":{"logical_path":"flags/1x1/gb-wls.svg","mtime":"2019-05-14T13:11:18+02:00","size":9083,"digest":"126615bc3597fda1ca4ee931ef24f6c2cf2547998c06db9c1ded69fe66c479e9","integrity":"sha256-EmYVvDWX/aHKTukx7yT2ws8lR5mMBtucHe1p/mbEeek="},"flags/4x3/un-31dece22ae18c3e01e86648ef3ef45f2f5b3d9d28a1e2bbbcdb1d87c37af55af.svg":{"logical_path":"flags/4x3/un.svg","mtime":"2019-05-14T13:11:18+02:00","size":20268,"digest":"31dece22ae18c3e01e86648ef3ef45f2f5b3d9d28a1e2bbbcdb1d87c37af55af","integrity":"sha256-Md7OIq4Yw+AehmSO8+9F8vWz2dKKHiu7zbHYfDevVa8="},"flags/1x1/un-455b5f3173ca9ac64f2135fac4ead7217d7fbe07551d0d2cc60216f83208f798.svg":{"logical_path":"flags/1x1/un.svg","mtime":"2019-05-14T13:11:18+02:00","size":20476,"digest":"455b5f3173ca9ac64f2135fac4ead7217d7fbe07551d0d2cc60216f83208f798","integrity":"sha256-RVtfMXPKmsZPITX6xOrXIX1/vgdVHQ0sxgIW+DII95g="},"leaflet/dist/images/layers-1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6.png":{"logical_path":"leaflet/dist/images/layers.png","mtime":"2019-05-14T13:13:00+02:00","size":696,"digest":"1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6","integrity":"sha256-Hbvp0CjikvNvy6j4s6KNXokydU/CIVuaxp5M3s9RB8Y="},"leaflet/dist/images/layers-2x-066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf.png":{"logical_path":"leaflet/dist/images/layers-2x.png","mtime":"2019-05-14T13:13:00+02:00","size":1259,"digest":"066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf","integrity":"sha256-Bm2sqFDY/77wB68AsG6sABVyje4nnFHzy2xxbffELt8="},"leaflet/dist/images/marker-icon-574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437.png":{"logical_path":"leaflet/dist/images/marker-icon.png","mtime":"2019-05-14T13:13:00+02:00","size":1466,"digest":"574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437","integrity":"sha256-V0w6XMqF9BFAhbaEFZbWLwDXyJLHsD8oy/owHesdxDc="},"markers-soft-e78784e4ed70aaffddd73c315fab590233cc4e7b72388d7dd47a14796fc7c739.png":{"logical_path":"markers-soft.png","mtime":"2016-05-21T23:41:15+02:00","size":41226,"digest":"e78784e4ed70aaffddd73c315fab590233cc4e7b72388d7dd47a14796fc7c739","integrity":"sha256-54eE5O1wqv/d1zwxX6tZAjPMTntyOI191HoUeW/Hxzk="},"markers-shadow-8703a2262710f5e3d29e65d2acdf90d6512e159e119d27b8234731d8a6208a20.png":{"logical_path":"markers-shadow.png","mtime":"2016-05-21T23:41:15+02:00","size":535,"digest":"8703a2262710f5e3d29e65d2acdf90d6512e159e119d27b8234731d8a6208a20","integrity":"sha256-hwOiJicQ9ePSnmXSrN+Q1lEuFZ4RnSe4I0cx2KYgiiA="},"markers-soft@2x-c1e77253a8bfbe30cec24885d7046f443b76ebb66f4c961f77083b03f4a5cbaf.png":{"logical_path":"markers-soft@2x.png","mtime":"2016-05-21T23:41:15+02:00","size":66408,"digest":"c1e77253a8bfbe30cec24885d7046f443b76ebb66f4c961f77083b03f4a5cbaf","integrity":"sha256-wedyU6i/vjDOwkiF1wRvRDt267ZvTJYfdwg7A/Sly68="},"markers-shadow@2x-b21a536be27313fb504f69f5899ff0b1245b276571769ac08d6c32c35676e47a.png":{"logical_path":"markers-shadow@2x.png","mtime":"2016-05-21T23:41:15+02:00","size":1469,"digest":"b21a536be27313fb504f69f5899ff0b1245b276571769ac08d6c32c35676e47a","integrity":"sha256-shpTa+JzE/tQT2n1iZ/wsSRbJ2VxdprAjWwyw1Z25Ho="},"tinymce/langs/fr_FR-6aba16704f73dd83662a78ca3360f3d98b1f1ed80a67560313554446915611a5.js":{"logical_path":"tinymce/langs/fr_FR.js","mtime":"2019-04-17T02:49:18+02:00","size":14986,"digest":"6aba16704f73dd83662a78ca3360f3d98b1f1ed80a67560313554446915611a5","integrity":"sha256-aroWcE9z3YNmKnjKM2Dz2YsfHtgKZ1YDE1VERpFWEaU="},"markers-matte-497826545a90e09a240504d14530eba45823b19fd44175e09e27c47cd822ddb9.png":{"logical_path":"markers-matte.png","mtime":"2016-05-21T23:41:15+02:00","size":14323,"digest":"497826545a90e09a240504d14530eba45823b19fd44175e09e27c47cd822ddb9","integrity":"sha256-SXgmVFqQ4JokBQTRRTDrpFgjsZ/UQXXgnifEfNgi3bk="},"markers-matte@2x-948fc8c4426f04f60964ed20394247f45b0b60e575d02398b9b6810e7a29a823.png":{"logical_path":"markers-matte@2x.png","mtime":"2016-05-21T23:41:15+02:00","size":31113,"digest":"948fc8c4426f04f60964ed20394247f45b0b60e575d02398b9b6810e7a29a823","integrity":"sha256-lI/IxEJvBPYJZO0gOUJH9FsLYOV10COYubaBDnopqCM="},"markers-plain-cf233423aa44e75ac0031e77b8ba571cd3331010517e1197e63fb7b06856c1ff.png":{"logical_path":"markers-plain.png","mtime":"2016-05-21T23:41:15+02:00","size":7946,"digest":"cf233423aa44e75ac0031e77b8ba571cd3331010517e1197e63fb7b06856c1ff","integrity":"sha256-zyM0I6pE51rAAx53uLpXHNMzEBBRfhGX5j+3sGhWwf8="},"leaflet/dist/images/marker-icon-2x-00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528.png":{"logical_path":"leaflet/dist/images/marker-icon-2x.png","mtime":"2019-05-14T13:13:00+02:00","size":2464,"digest":"00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528","integrity":"sha256-ABecTB7oMNOhCEEq4NKU9Vd2z+sIXGASmjmqb8SuJSg="},"leaflet/dist/images/marker-shadow-264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da.png":{"logical_path":"leaflet/dist/images/marker-shadow.png","mtime":"2019-05-14T13:13:00+02:00","size":618,"digest":"264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da","integrity":"sha256-Jk9cZAM58ELdcpBiz8BMF/jqDymIK1OOOEjtjxDttNo="},"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-ae65a7ae22c4c23115948fdeb5c05c9137dbd13ca2d426b3c4c3c4183451e410.png":{"logical_path":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png","mtime":"2019-05-14T13:12:47+02:00","size":86,"digest":"ae65a7ae22c4c23115948fdeb5c05c9137dbd13ca2d426b3c4c3c4183451e410","integrity":"sha256-rmWnriLEwjEVlI/etcBckTfb0Tyi1CazxMPEGDRR5BA="},"jquery-ui/ui-icons_444444_256x240-31d988765b4e6f56553c29588c500381dc3e6f0aa2980c8212202e5644aefd5d.png":{"logical_path":"jquery-ui/ui-icons_444444_256x240.png","mtime":"2019-05-14T13:12:47+02:00","size":3756,"digest":"31d988765b4e6f56553c29588c500381dc3e6f0aa2980c8212202e5644aefd5d","integrity":"sha256-MdmIdltOb1ZVPClYjFADgdw+bwqimAyCEiAuVkSu/V0="},"jquery-ui/ui-icons_555555_256x240-32175261daee76c82bb0edf0eea16a56421866fbc31e94f3c1d570aa114502f5.png":{"logical_path":"jquery-ui/ui-icons_555555_256x240.png","mtime":"2019-05-14T13:12:47+02:00","size":3756,"digest":"32175261daee76c82bb0edf0eea16a56421866fbc31e94f3c1d570aa114502f5","integrity":"sha256-MhdSYdrudsgrsO3w7qFqVkIYZvvDHpTzwdVwqhFFAvU="},"jquery-ui/ui-icons_777620_256x240-0b020fc6e696d88d296e7bb1f61f1eb2ad827848e2c7382a4c3e0999e702dd9b.png":{"logical_path":"jquery-ui/ui-icons_777620_256x240.png","mtime":"2019-05-14T13:12:47+02:00","size":3756,"digest":"0b020fc6e696d88d296e7bb1f61f1eb2ad827848e2c7382a4c3e0999e702dd9b","integrity":"sha256-CwIPxuaW2I0pbnux9h8esq2CeEjixzgqTD4JmecC3Zs="},"jquery-ui/ui-icons_777777_256x240-faf32007ae120c302213557626e660dd10e711c5dd4f1113d35f26dc05b78d2f.png":{"logical_path":"jquery-ui/ui-icons_777777_256x240.png","mtime":"2019-05-14T13:12:47+02:00","size":3756,"digest":"faf32007ae120c302213557626e660dd10e711c5dd4f1113d35f26dc05b78d2f","integrity":"sha256-+vMgB64SDDAiE1V2JuZg3RDnEcXdTxET018m3AW3jS8="},"jquery-ui/ui-icons_cc0000_256x240-40985a64b4d5dd213fba27fcd862a1bd1b337a97674f6ff0b9ec20abcee4bc69.png":{"logical_path":"jquery-ui/ui-icons_cc0000_256x240.png","mtime":"2019-05-14T13:12:47+02:00","size":3756,"digest":"40985a64b4d5dd213fba27fcd862a1bd1b337a97674f6ff0b9ec20abcee4bc69","integrity":"sha256-QJhaZLTV3SE/uif82GKhvRszepdnT2/wuewgq87kvGk="},"jquery-ui/ui-icons_ffffff_256x240-350df1b7131037de20e83c5c0f3a41a770d2ac48b5762ea772b3f4a8a7b9d47a.png":{"logical_path":"jquery-ui/ui-icons_ffffff_256x240.png","mtime":"2019-05-14T13:12:47+02:00","size":3756,"digest":"350df1b7131037de20e83c5c0f3a41a770d2ac48b5762ea772b3f4a8a7b9d47a","integrity":"sha256-NQ3xtxMQN94g6DxcDzpBp3DSrEi1di6ncrP0qKe51Ho="},"tinymce/preinit-84328a53e798df12f891eb49871773fd9f925439c8630e9e22423a82ef9e6f89.js":{"logical_path":"tinymce/preinit.js","mtime":"2019-05-14T13:13:17+02:00","size":82,"digest":"84328a53e798df12f891eb49871773fd9f925439c8630e9e22423a82ef9e6f89","integrity":"sha256-hDKKU+eY3xL4ketJhxdz/Z+SVDnIYw6eIkI6gu+eb4k="},"tinymce/rails-bf7fd5c952f25481010758dde6a2681498074f9509230f601b317356a6a54fca.js":{"logical_path":"tinymce/rails.js","mtime":"2019-05-14T13:13:17+02:00","size":1345,"digest":"bf7fd5c952f25481010758dde6a2681498074f9509230f601b317356a6a54fca","integrity":"sha256-v3/VyVLyVIEBB1jd5qJoFJgHT5UJIw9gGzFzVqalT8o="},"tinymce/tinymce-56cf2f2424cb80d80288b9207d6d01dffdcf3b6849e1414c1f7df44b8c95db86.js":{"logical_path":"tinymce/tinymce.js","mtime":"2019-05-14T13:13:17+02:00","size":1042418,"digest":"56cf2f2424cb80d80288b9207d6d01dffdcf3b6849e1414c1f7df44b8c95db86","integrity":"sha256-Vs8vJCTLgNgCiLkgfW0B3/3PO2hJ4UFMH330S4yV24Y="},"tinymce/jquery.tinymce-05402ca7d9e16d0a48a6259f8c005507d800186c5187f8cab94e79803c657535.js":{"logical_path":"tinymce/jquery.tinymce.js","mtime":"2019-05-14T13:13:17+02:00","size":6689,"digest":"05402ca7d9e16d0a48a6259f8c005507d800186c5187f8cab94e79803c657535","integrity":"sha256-BUAsp9nhbQpIpiWfjABVB9gAGGxRh/jKuU55gDxldTU="},"tinymce/langs/readme-5a8b6a04d57b5c88e3fb7f2a870b8e2d3a48ec03ce6474206c41df78c155b2de.md":{"logical_path":"tinymce/langs/readme.md","mtime":"2019-05-14T13:13:17+02:00","size":151,"digest":"5a8b6a04d57b5c88e3fb7f2a870b8e2d3a48ec03ce6474206c41df78c155b2de","integrity":"sha256-WotqBNV7XIjj+38qhwuOLTpI7APOZHQgbEHfeMFVst4="},"tinymce/license-47a9dcd2574891a5a465112fd9dfcebcc7e61844edec27fa936a64642008fe66.txt":{"logical_path":"tinymce/license.txt","mtime":"2019-05-14T13:13:17+02:00","size":26441,"digest":"47a9dcd2574891a5a465112fd9dfcebcc7e61844edec27fa936a64642008fe66","integrity":"sha256-R6nc0ldIkaWkZREv2d/OvMfmGETt7Cf6k2pkZCAI/mY="},"tinymce/plugins/advlist/plugin-b7c8cf80403d2ccef198eece952f4426ca2dbc41bd3797796a75f984a9382ade.js":{"logical_path":"tinymce/plugins/advlist/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":4121,"digest":"b7c8cf80403d2ccef198eece952f4426ca2dbc41bd3797796a75f984a9382ade","integrity":"sha256-t8jPgEA9LM7xmO7OlS9EJsotvEG9N5d5anX5hKk4Kt4="},"tinymce/plugins/anchor/plugin-0e1e67988d427784f73513db28a206eb47a3ef546aa87882a80975a16111a33a.js":{"logical_path":"tinymce/plugins/anchor/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":2108,"digest":"0e1e67988d427784f73513db28a206eb47a3ef546aa87882a80975a16111a33a","integrity":"sha256-Dh5nmI1Cd4T3NRPbKKIG60ej71RqqHiCqAl1oWERozo="},"tinymce/plugins/autolink/plugin-2e8a38a913070f4b3fb0252a5b5625057b8ee9f6fc529d65d3003328d112d5d8.js":{"logical_path":"tinymce/plugins/autolink/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":2428,"digest":"2e8a38a913070f4b3fb0252a5b5625057b8ee9f6fc529d65d3003328d112d5d8","integrity":"sha256-Loo4qRMHD0s/sCUqW1YlBXuO6fb8Up1l0wAzKNES1dg="},"tinymce/plugins/autoresize/plugin-2adac0d857ae16f93c7ca4f92e36e76f4bbf885cb9a72755af78889627ed8738.js":{"logical_path":"tinymce/plugins/autoresize/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":2233,"digest":"2adac0d857ae16f93c7ca4f92e36e76f4bbf885cb9a72755af78889627ed8738","integrity":"sha256-KtrA2FeuFvk8fKT5Ljbnb0u/iFy5pydVr3iIlifthzg="},"tinymce/plugins/autosave/plugin-a6960dd7eb9a053b0ce876b2eb946f8bf8fc429de45466e73d17129213229674.js":{"logical_path":"tinymce/plugins/autosave/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":3321,"digest":"a6960dd7eb9a053b0ce876b2eb946f8bf8fc429de45466e73d17129213229674","integrity":"sha256-ppYN1+uaBTsM6Hay65Rvi/j8Qp3kVGbnPRcSkhMilnQ="},"tinymce/plugins/bbcode/plugin-1a9fd62a2514ce8e15e8a3a99473674c1042c23adb359b35523931407910c7aa.js":{"logical_path":"tinymce/plugins/bbcode/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":3151,"digest":"1a9fd62a2514ce8e15e8a3a99473674c1042c23adb359b35523931407910c7aa","integrity":"sha256-Gp/WKiUUzo4V6KOplHNnTBBCwjrbNZs1UjkxQHkQx6o="},"tinymce/plugins/charmap/plugin-e68609a6c6f050af409dc34cba1eaf97b45dc4219500de60bb3ed63ea49279a0.js":{"logical_path":"tinymce/plugins/charmap/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":11935,"digest":"e68609a6c6f050af409dc34cba1eaf97b45dc4219500de60bb3ed63ea49279a0","integrity":"sha256-5oYJpsbwUK9AncNMuh6vl7RdxCGVAN5guz7WPqSSeaA="},"tinymce/plugins/code/plugin-32c177297fd26a1ceaa79d4b0c10ff5c3b332141dce46b97931e3228daa9bf1a.js":{"logical_path":"tinymce/plugins/code/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1225,"digest":"32c177297fd26a1ceaa79d4b0c10ff5c3b332141dce46b97931e3228daa9bf1a","integrity":"sha256-MsF3KX/Sahzqp51LDBD/XDszIUHc5GuXkx4yKNqpvxo="},"tinymce/plugins/codesample/plugin-d495c33177247da2e3845e4d849182792be7b0347e8707dd133db053727f86e9.js":{"logical_path":"tinymce/plugins/codesample/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":21054,"digest":"d495c33177247da2e3845e4d849182792be7b0347e8707dd133db053727f86e9","integrity":"sha256-1JXDMXckfaLjhF5NhJGCeSvnsDR+hwfdEz2wU3J/huk="},"tinymce/plugins/colorpicker/plugin-3270f40522357ea68191288332b98cbbdafe950a758b5f1514ad8890ba68619f.js":{"logical_path":"tinymce/plugins/colorpicker/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":541,"digest":"3270f40522357ea68191288332b98cbbdafe950a758b5f1514ad8890ba68619f","integrity":"sha256-MnD0BSI1fqaBkSiDMrmMu9r+lQp1i18VFK2IkLpoYZ8="},"tinymce/plugins/contextmenu/plugin-b528042e89738439d9d4b9d008a3a75284ef5233cd15aaa29c7e1ce6d48fb12e.js":{"logical_path":"tinymce/plugins/contextmenu/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":541,"digest":"b528042e89738439d9d4b9d008a3a75284ef5233cd15aaa29c7e1ce6d48fb12e","integrity":"sha256-tSgELolzhDnZ1LnQCKOnUoTvUjPNFaqinH4c5tSPsS4="},"tinymce/plugins/directionality/plugin-5004dc6b7d90139d4b1cf32d788845a48efc7055adb3aa25993219dd4df2fe5c.js":{"logical_path":"tinymce/plugins/directionality/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":4316,"digest":"5004dc6b7d90139d4b1cf32d788845a48efc7055adb3aa25993219dd4df2fe5c","integrity":"sha256-UATca32QE51LHPMteIhFpI78cFWts6olmTIZ3U3y/lw="},"tinymce/plugins/emoticons/js/emojis-c6f728975b5c86aca22f396025edefe6107b0dd4d95f5ef80daef569b545bce8.js":{"logical_path":"tinymce/plugins/emoticons/js/emojis.js","mtime":"2019-05-14T13:13:17+02:00","size":193207,"digest":"c6f728975b5c86aca22f396025edefe6107b0dd4d95f5ef80daef569b545bce8","integrity":"sha256-xvcol1tchqyiLzlgJe3v5hB7DdTZX174Da71abVFvOg="},"tinymce/plugins/emoticons/plugin-f4db839825ea5c884c78a8c289494544ac0fd28a14506f0d3cbb7362a9e9db77.js":{"logical_path":"tinymce/plugins/emoticons/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":8141,"digest":"f4db839825ea5c884c78a8c289494544ac0fd28a14506f0d3cbb7362a9e9db77","integrity":"sha256-9NuDmCXqXIhMeKjCiUlFRKwP0ooUUG8NPLtzYqnp23c="},"tinymce/plugins/fullpage/plugin-7040866d45dd50402f2871efcfb289ec8ca80b8699f1461c721b0b20bca76051.js":{"logical_path":"tinymce/plugins/fullpage/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":8195,"digest":"7040866d45dd50402f2871efcfb289ec8ca80b8699f1461c721b0b20bca76051","integrity":"sha256-cECGbUXdUEAvKHHvz7KJ7IyoC4aZ8UYcchsLILynYFE="},"tinymce/plugins/fullscreen/plugin-f548bdf0cbc2fd41c3c32938629a1b021e19680bac7869c274be5f3615eccfe7.js":{"logical_path":"tinymce/plugins/fullscreen/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":2668,"digest":"f548bdf0cbc2fd41c3c32938629a1b021e19680bac7869c274be5f3615eccfe7","integrity":"sha256-9Ui98MvC/UHDwyk4YpobAh4ZaAuseGnCdL5fNhXsz+c="},"tinymce/plugins/help/plugin-366b05965f3d6cfddaba02c6784e0f377497beda0f28cc8cd840510fd8b657f4.js":{"logical_path":"tinymce/plugins/help/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":9311,"digest":"366b05965f3d6cfddaba02c6784e0f377497beda0f28cc8cd840510fd8b657f4","integrity":"sha256-NmsFll89bP3augLGeE4PN3SXvtoPKMyM2EBRD9i2V/Q="},"tinymce/plugins/hr/plugin-0e5548067a2ab0ad967e296104249f6b5d24a16b80befcdd3888c17b1a0e5624.js":{"logical_path":"tinymce/plugins/hr/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":840,"digest":"0e5548067a2ab0ad967e296104249f6b5d24a16b80befcdd3888c17b1a0e5624","integrity":"sha256-DlVIBnoqsK2WfilhBCSfa10koWuAvvzdOIjBexoOViQ="},"tinymce/plugins/image/plugin-53dce3c317e386c1989a5d82ec151d440f9ffc32a643dc9fba76ae2b036300c9.js":{"logical_path":"tinymce/plugins/image/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":28452,"digest":"53dce3c317e386c1989a5d82ec151d440f9ffc32a643dc9fba76ae2b036300c9","integrity":"sha256-U9zjwxfjhsGYml2C7BUdRA+f/DKmQ9yfunauKwNjAMk="},"tinymce/plugins/imagetools/plugin-49936c4208b2d6fbb340d11c56fa2a146d14c770e4cb39760a11099fea5c7aaa.js":{"logical_path":"tinymce/plugins/imagetools/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":22508,"digest":"49936c4208b2d6fbb340d11c56fa2a146d14c770e4cb39760a11099fea5c7aaa","integrity":"sha256-SZNsQgiy1vuzQNEcVvoqFG0Ux3Dkyzl2ChEJn+pceqo="},"tinymce/plugins/importcss/plugin-30cba659cc747bccf69602963b3c2b83e00c26e65f2b63e23eba5be5f8af5452.js":{"logical_path":"tinymce/plugins/importcss/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":4870,"digest":"30cba659cc747bccf69602963b3c2b83e00c26e65f2b63e23eba5be5f8af5452","integrity":"sha256-MMumWcx0e8z2lgKWOzwrg+AMJuZfK2PiPrpb5fivVFI="},"tinymce/plugins/insertdatetime/plugin-8559e2bda84f040abc77afc6610c0b61567fe174dcf2079b5aff82513c5ebe96.js":{"logical_path":"tinymce/plugins/insertdatetime/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":3205,"digest":"8559e2bda84f040abc77afc6610c0b61567fe174dcf2079b5aff82513c5ebe96","integrity":"sha256-hVnivahPBAq8d6/GYQwLYVZ/4XTc8gebWv+CUTxevpY="},"tinymce/plugins/legacyoutput/plugin-acfac6647afd7c0a7c720aea06b9a74a6580840858fe00327a311a6418d3dae3.js":{"logical_path":"tinymce/plugins/legacyoutput/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":2795,"digest":"acfac6647afd7c0a7c720aea06b9a74a6580840858fe00327a311a6418d3dae3","integrity":"sha256-rPrGZHr9fAp8cgrqBrmnSmWAhAhY/gAyejEaZBjT2uM="},"tinymce/plugins/link/plugin-93a36e0f077d895707d9885a76c26e5b08e5acfab9f3d52cdd1ccc5d89404f1e.js":{"logical_path":"tinymce/plugins/link/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":16484,"digest":"93a36e0f077d895707d9885a76c26e5b08e5acfab9f3d52cdd1ccc5d89404f1e","integrity":"sha256-k6NuDwd9iVcH2YhadsJuWwjlrPq589Us3RzMXYlATx4="},"tinymce/plugins/lists/plugin-354eba74c0107c7f347aaab0ac206e01b8e0503d00f28cc0cc55f6c04f901f9e.js":{"logical_path":"tinymce/plugins/lists/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":27854,"digest":"354eba74c0107c7f347aaab0ac206e01b8e0503d00f28cc0cc55f6c04f901f9e","integrity":"sha256-NU66dMAQfH80eqqwrCBuAbjgUD0A8ozAzFX2wE+QH54="},"tinymce/plugins/media/plugin-ab1015dd22dff3d1edcc2d04b54f39b3f7ff7f7d783c0880b5edf6de58d78937.js":{"logical_path":"tinymce/plugins/media/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":17440,"digest":"ab1015dd22dff3d1edcc2d04b54f39b3f7ff7f7d783c0880b5edf6de58d78937","integrity":"sha256-qxAV3SLf89HtzC0EtU85s/f/f314PAiAte323ljXiTc="},"tinymce/plugins/nonbreaking/plugin-6039d3b3f9c68a3b29a6bb476760fa62da1d941e38ef8cb91e61c4aaa9456f98.js":{"logical_path":"tinymce/plugins/nonbreaking/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1421,"digest":"6039d3b3f9c68a3b29a6bb476760fa62da1d941e38ef8cb91e61c4aaa9456f98","integrity":"sha256-YDnTs/nGijspprtHZ2D6YtodlB4474y5HmHEqqlFb5g="},"tinymce/plugins/noneditable/plugin-3cb8e1ac660348b0453dca0e8549a9325dca0cf259adb96802f37e83fb8d17be.js":{"logical_path":"tinymce/plugins/noneditable/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1841,"digest":"3cb8e1ac660348b0453dca0e8549a9325dca0cf259adb96802f37e83fb8d17be","integrity":"sha256-PLjhrGYDSLBFPcoOhUmpMl3KDPJZrbloAvN+g/uNF74="},"tinymce/plugins/pagebreak/plugin-9e005e9e9abb08da742141d002238561c30dcd15549168e17c690f2c7c7a9dd3.js":{"logical_path":"tinymce/plugins/pagebreak/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1843,"digest":"9e005e9e9abb08da742141d002238561c30dcd15549168e17c690f2c7c7a9dd3","integrity":"sha256-ngBenpq7CNp0IUHQAiOFYcMNzRVUkWjhfGkPLHx6ndM="},"tinymce/plugins/paste/plugin-437f540601d04f07cb4c2434fdf377be3ac9634b180a878c2f2987f3ad897afc.js":{"logical_path":"tinymce/plugins/paste/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":24156,"digest":"437f540601d04f07cb4c2434fdf377be3ac9634b180a878c2f2987f3ad897afc","integrity":"sha256-Q39UBgHQTwfLTCQ0/fN3vjrJY0sYCoeMLymH862Jevw="},"tinymce/plugins/preview/plugin-36ce30c549b23aed9dd151603a23aafab512529d586067e34974877992c79eed.js":{"logical_path":"tinymce/plugins/preview/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1971,"digest":"36ce30c549b23aed9dd151603a23aafab512529d586067e34974877992c79eed","integrity":"sha256-Ns4wxUmyOu2d0VFgOiOq+rUSUp1YYGfjSXSHeZLHnu0="},"tinymce/plugins/print/plugin-4a91981252ff653a07dd12936abfb0b0c4191e33d85f5c5d5f7e8e73581b6a57.js":{"logical_path":"tinymce/plugins/print/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":787,"digest":"4a91981252ff653a07dd12936abfb0b0c4191e33d85f5c5d5f7e8e73581b6a57","integrity":"sha256-SpGYElL/ZToH3RKTar+wsMQZHjPYX1xdX36Oc1gbalc="},"tinymce/plugins/quickbars/plugin-54bba909c7a5b3f9086cec22e918e378945dfb855e4041a85c9e0fb00faaa510.js":{"logical_path":"tinymce/plugins/quickbars/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":10934,"digest":"54bba909c7a5b3f9086cec22e918e378945dfb855e4041a85c9e0fb00faaa510","integrity":"sha256-VLupCcels/kIbOwi6RjjeJRd+4VeQEGoXJ4PsA+qpRA="},"tinymce/plugins/save/plugin-0fd05e2ed11aac190c5d2a0ac32aa675d0bea06b519301d89151aaaa7b124674.js":{"logical_path":"tinymce/plugins/save/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1829,"digest":"0fd05e2ed11aac190c5d2a0ac32aa675d0bea06b519301d89151aaaa7b124674","integrity":"sha256-D9BeLtEarBkMXSoKwyqmddC+oGtRkwHYkVGqqnsSRnQ="},"tinymce/plugins/searchreplace/plugin-4bb6490f6586b4c50a56757a69be8e6577544d5353881a02621e2200b54e8a18.js":{"logical_path":"tinymce/plugins/searchreplace/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":8871,"digest":"4bb6490f6586b4c50a56757a69be8e6577544d5353881a02621e2200b54e8a18","integrity":"sha256-S7ZJD2WGtMUKVnV6ab6OZXdUTVNTiBoCYh4iALVOihg="},"tinymce/plugins/spellchecker/plugin-8fcd863cbf64e3cc62fe3fc1a4bfe417f8401b1d204d91d1c9da880c29a52162.js":{"logical_path":"tinymce/plugins/spellchecker/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":10437,"digest":"8fcd863cbf64e3cc62fe3fc1a4bfe417f8401b1d204d91d1c9da880c29a52162","integrity":"sha256-j82GPL9k48xi/j/BpL/kF/hAGx0gTZHRydqIDCmlIWI="},"tinymce/plugins/tabfocus/plugin-cbc31c55658d581cc1e0130e5bae26fb27f10e7f0c53879845d6295ffb27fefa.js":{"logical_path":"tinymce/plugins/tabfocus/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1915,"digest":"cbc31c55658d581cc1e0130e5bae26fb27f10e7f0c53879845d6295ffb27fefa","integrity":"sha256-y8McVWWNWBzB4BMOW64m+yfxDn8MU4eYRdYpX/sn/vo="},"tinymce/plugins/table/plugin-b11c6cd37f6d5badf46a9d96e452118b81881beb07fe41d2c0a3f7b405902234.js":{"logical_path":"tinymce/plugins/table/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":120791,"digest":"b11c6cd37f6d5badf46a9d96e452118b81881beb07fe41d2c0a3f7b405902234","integrity":"sha256-sRxs039tW630ap2W5FIRi4GIG+sH/kHSwKP3tAWQIjQ="},"tinymce/plugins/template/plugin-62d74415b497183892c093351d57ee4fe36938be5b0a84360925501efede022a.js":{"logical_path":"tinymce/plugins/template/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":7975,"digest":"62d74415b497183892c093351d57ee4fe36938be5b0a84360925501efede022a","integrity":"sha256-YtdEFbSXGDiSwJM1HVfuT+NpOL5bCoQ2CSVQHv7eAio="},"tinymce/plugins/textcolor/plugin-77c1248e72fe32cf181c36a070147484ee4560710d5f617a4670d65d11202207.js":{"logical_path":"tinymce/plugins/textcolor/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":537,"digest":"77c1248e72fe32cf181c36a070147484ee4560710d5f617a4670d65d11202207","integrity":"sha256-d8EkjnL+Ms8YHDagcBR0hO5FYHENX2F6RnDWXREgIgc="},"tinymce/plugins/textpattern/plugin-14c80d034b4d08368543a88cfdd7a71fe044d76a511e087752420957fe192e66.js":{"logical_path":"tinymce/plugins/textpattern/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":16350,"digest":"14c80d034b4d08368543a88cfdd7a71fe044d76a511e087752420957fe192e66","integrity":"sha256-FMgNA0tNCDaFQ6iM/denH+BE12pRHgh3UkIJV/4ZLmY="},"tinymce/plugins/toc/plugin-e6c05b09e6066ce22300ca4942a530d621362f8a2d69d21d486bf5f57ce86c63.js":{"logical_path":"tinymce/plugins/toc/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":3522,"digest":"e6c05b09e6066ce22300ca4942a530d621362f8a2d69d21d486bf5f57ce86c63","integrity":"sha256-5sBbCeYGbOIjAMpJQqUw1iE2L4otadIdSGv19XzobGM="},"tinymce/plugins/visualblocks/plugin-dc48dde1907640cf2cc67ab99de28b69b7b7a04479c9a2d3284a21e190a2fc5b.js":{"logical_path":"tinymce/plugins/visualblocks/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":1655,"digest":"dc48dde1907640cf2cc67ab99de28b69b7b7a04479c9a2d3284a21e190a2fc5b","integrity":"sha256-3Ejd4ZB2QM8sxnq5neKLabe3oER5yaLTKEoh4ZCi/Fs="},"tinymce/plugins/visualchars/plugin-7a67008641a389395f71289303344cf2f9e699970d8ac27f8be769281c56a157.js":{"logical_path":"tinymce/plugins/visualchars/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":5729,"digest":"7a67008641a389395f71289303344cf2f9e699970d8ac27f8be769281c56a157","integrity":"sha256-emcAhkGjiTlfcSiTAzRM8vnmmZcNisJ/i+dpKBxWoVc="},"tinymce/plugins/wordcount/plugin-adeca7c01633cf92382c63b9f99934fcc1f8f4034b84b8a653f800bc6deadf86.js":{"logical_path":"tinymce/plugins/wordcount/plugin.js","mtime":"2019-05-14T13:13:17+02:00","size":12489,"digest":"adeca7c01633cf92382c63b9f99934fcc1f8f4034b84b8a653f800bc6deadf86","integrity":"sha256-reynwBYzz5I4LGO5+Zk0/MH49ANLhLimU/gAvG3q34Y="},"tinymce/skins/content/default/content-59af8e2bdcb843082433e35a13e74452bb71675b4d09a1020fb82ec12f905178.css":{"logical_path":"tinymce/skins/content/default/content.css","mtime":"2019-05-14T13:13:17+02:00","size":569,"digest":"59af8e2bdcb843082433e35a13e74452bb71675b4d09a1020fb82ec12f905178","integrity":"sha256-Wa+OK9y4QwgkM+NaE+dEUrtxZ1tNCaECD7guwS+QUXg="},"tinymce/skins/content/default/content.min-59af8e2bdcb843082433e35a13e74452bb71675b4d09a1020fb82ec12f905178.css":{"logical_path":"tinymce/skins/content/default/content.min.css","mtime":"2019-05-14T13:13:17+02:00","size":569,"digest":"59af8e2bdcb843082433e35a13e74452bb71675b4d09a1020fb82ec12f905178","integrity":"sha256-Wa+OK9y4QwgkM+NaE+dEUrtxZ1tNCaECD7guwS+QUXg="},"tinymce/skins/content/document/content-1e26cccef0052522affb81bf2148310236b19cddf8132f0239d8c7566722e943.css":{"logical_path":"tinymce/skins/content/document/content.css","mtime":"2019-05-14T13:13:17+02:00","size":653,"digest":"1e26cccef0052522affb81bf2148310236b19cddf8132f0239d8c7566722e943","integrity":"sha256-HibMzvAFJSKv+4G/IUgxAjaxnN34Ey8COdjHVmci6UM="},"tinymce/skins/content/document/content.min-1e26cccef0052522affb81bf2148310236b19cddf8132f0239d8c7566722e943.css":{"logical_path":"tinymce/skins/content/document/content.min.css","mtime":"2019-05-14T13:13:17+02:00","size":653,"digest":"1e26cccef0052522affb81bf2148310236b19cddf8132f0239d8c7566722e943","integrity":"sha256-HibMzvAFJSKv+4G/IUgxAjaxnN34Ey8COdjHVmci6UM="},"tinymce/skins/content/writer/content-eea5c153ee2a10ed0864d84fa1dffb95ea6def7e579978cd2dd3d8f0956c9656.css":{"logical_path":"tinymce/skins/content/writer/content.css","mtime":"2019-05-14T13:13:17+02:00","size":590,"digest":"eea5c153ee2a10ed0864d84fa1dffb95ea6def7e579978cd2dd3d8f0956c9656","integrity":"sha256-7qXBU+4qEO0IZNhPod/7lept735XmXjNLdPY8JVsllY="},"tinymce/skins/content/writer/content.min-eea5c153ee2a10ed0864d84fa1dffb95ea6def7e579978cd2dd3d8f0956c9656.css":{"logical_path":"tinymce/skins/content/writer/content.min.css","mtime":"2019-05-14T13:13:17+02:00","size":590,"digest":"eea5c153ee2a10ed0864d84fa1dffb95ea6def7e579978cd2dd3d8f0956c9656","integrity":"sha256-7qXBU+4qEO0IZNhPod/7lept735XmXjNLdPY8JVsllY="},"tinymce/skins/ui/oxide/content-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css":{"logical_path":"tinymce/skins/ui/oxide/content.css","mtime":"2019-05-14T13:13:17+02:00","size":16213,"digest":"158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1","integrity":"sha256-FYp9nMLCIqQo9HqXBOyMuR2NiwpbGHJSV+a+jt6aBvE="},"tinymce/skins/ui/oxide/content.inline-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css":{"logical_path":"tinymce/skins/ui/oxide/content.inline.css","mtime":"2019-05-14T13:13:17+02:00","size":16417,"digest":"a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2","integrity":"sha256-oxmkuMLbJ7FXbiLZDtknrM7oh8ElQD+dQs5IFVxGcvI="},"tinymce/skins/ui/oxide/content.inline.min-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css":{"logical_path":"tinymce/skins/ui/oxide/content.inline.min.css","mtime":"2019-05-14T13:13:17+02:00","size":16417,"digest":"a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2","integrity":"sha256-oxmkuMLbJ7FXbiLZDtknrM7oh8ElQD+dQs5IFVxGcvI="},"tinymce/skins/ui/oxide/content.min-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css":{"logical_path":"tinymce/skins/ui/oxide/content.min.css","mtime":"2019-05-14T13:13:17+02:00","size":16213,"digest":"158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1","integrity":"sha256-FYp9nMLCIqQo9HqXBOyMuR2NiwpbGHJSV+a+jt6aBvE="},"tinymce/skins/ui/oxide/content.mobile-230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346.css":{"logical_path":"tinymce/skins/ui/oxide/content.mobile.css","mtime":"2019-05-14T13:13:17+02:00","size":235,"digest":"230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346","integrity":"sha256-Iwwx9lNWx8sXmSRKNPenIskqbWFOBuWdSNsOvM1/I0Y="},"tinymce/skins/ui/oxide/content.mobile.min-230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346.css":{"logical_path":"tinymce/skins/ui/oxide/content.mobile.min.css","mtime":"2019-05-14T13:13:17+02:00","size":235,"digest":"230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346","integrity":"sha256-Iwwx9lNWx8sXmSRKNPenIskqbWFOBuWdSNsOvM1/I0Y="},"tinymce/skins/ui/oxide/fonts/tinymce-mobile-e64bf156a432d63f5b34b4567b513dc0d351b49161c7f608fb82574bfdd9d213.woff":{"logical_path":"tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff","mtime":"2019-05-14T13:13:17+02:00","size":4624,"digest":"e64bf156a432d63f5b34b4567b513dc0d351b49161c7f608fb82574bfdd9d213","integrity":"sha256-5kvxVqQy1j9bNLRWe1E9wNNRtJFhx/YI+4JXS/3Z0hM="},"tinymce/skins/ui/oxide/skin-19f5d58bf005d2ff7a6d60bb3ddfa1772a55a8e556f723a3b21340bcf1003f48.css":{"logical_path":"tinymce/skins/ui/oxide/skin.css","mtime":"2019-05-14T13:13:17+02:00","size":43226,"digest":"19f5d58bf005d2ff7a6d60bb3ddfa1772a55a8e556f723a3b21340bcf1003f48","integrity":"sha256-GfXVi/AF0v96bWC7Pd+hdypVqOVW9yOjshNAvPEAP0g="},"tinymce/skins/ui/oxide/skin.min-19f5d58bf005d2ff7a6d60bb3ddfa1772a55a8e556f723a3b21340bcf1003f48.css":{"logical_path":"tinymce/skins/ui/oxide/skin.min.css","mtime":"2019-05-14T13:13:17+02:00","size":43226,"digest":"19f5d58bf005d2ff7a6d60bb3ddfa1772a55a8e556f723a3b21340bcf1003f48","integrity":"sha256-GfXVi/AF0v96bWC7Pd+hdypVqOVW9yOjshNAvPEAP0g="},"tinymce/skins/ui/oxide/skin.mobile-22703cb423be432b125a19fa94a29a8122b722be4f7c1b303102ce16ed839e22.css":{"logical_path":"tinymce/skins/ui/oxide/skin.mobile.css","mtime":"2019-05-14T13:13:17+02:00","size":28233,"digest":"22703cb423be432b125a19fa94a29a8122b722be4f7c1b303102ce16ed839e22","integrity":"sha256-InA8tCO+QysSWhn6lKKagSK3Ir5PfBswMQLOFu2DniI="},"tinymce/skins/ui/oxide/skin.mobile.min-22703cb423be432b125a19fa94a29a8122b722be4f7c1b303102ce16ed839e22.css":{"logical_path":"tinymce/skins/ui/oxide/skin.mobile.min.css","mtime":"2019-05-14T13:13:17+02:00","size":28233,"digest":"22703cb423be432b125a19fa94a29a8122b722be4f7c1b303102ce16ed839e22","integrity":"sha256-InA8tCO+QysSWhn6lKKagSK3Ir5PfBswMQLOFu2DniI="},"tinymce/skins/ui/oxide-dark/content-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css":{"logical_path":"tinymce/skins/ui/oxide-dark/content.css","mtime":"2019-05-14T13:13:17+02:00","size":16213,"digest":"158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1","integrity":"sha256-FYp9nMLCIqQo9HqXBOyMuR2NiwpbGHJSV+a+jt6aBvE="},"tinymce/skins/ui/oxide-dark/content.inline-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css":{"logical_path":"tinymce/skins/ui/oxide-dark/content.inline.css","mtime":"2019-05-14T13:13:17+02:00","size":16417,"digest":"a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2","integrity":"sha256-oxmkuMLbJ7FXbiLZDtknrM7oh8ElQD+dQs5IFVxGcvI="},"tinymce/skins/ui/oxide-dark/content.inline.min-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css":{"logical_path":"tinymce/skins/ui/oxide-dark/content.inline.min.css","mtime":"2019-05-14T13:13:17+02:00","size":16417,"digest":"a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2","integrity":"sha256-oxmkuMLbJ7FXbiLZDtknrM7oh8ElQD+dQs5IFVxGcvI="},"tinymce/skins/ui/oxide-dark/content.min-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css":{"logical_path":"tinymce/skins/ui/oxide-dark/content.min.css","mtime":"2019-05-14T13:13:17+02:00","size":16213,"digest":"158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1","integrity":"sha256-FYp9nMLCIqQo9HqXBOyMuR2NiwpbGHJSV+a+jt6aBvE="},"tinymce/skins/ui/oxide-dark/skin-5d441f8e6ccc16da2e10963a472fe7e4b593b36d470a913abff2c1592a37c768.css":{"logical_path":"tinymce/skins/ui/oxide-dark/skin.css","mtime":"2019-05-14T13:13:17+02:00","size":43207,"digest":"5d441f8e6ccc16da2e10963a472fe7e4b593b36d470a913abff2c1592a37c768","integrity":"sha256-XUQfjmzMFtouEJY6Ry/n5LWTs21HCpE6v/LBWSo3x2g="},"tinymce/skins/ui/oxide-dark/skin.min-5d441f8e6ccc16da2e10963a472fe7e4b593b36d470a913abff2c1592a37c768.css":{"logical_path":"tinymce/skins/ui/oxide-dark/skin.min.css","mtime":"2019-05-14T13:13:17+02:00","size":43207,"digest":"5d441f8e6ccc16da2e10963a472fe7e4b593b36d470a913abff2c1592a37c768","integrity":"sha256-XUQfjmzMFtouEJY6Ry/n5LWTs21HCpE6v/LBWSo3x2g="},"tinymce/themes/mobile/theme-3ebedb886fbcc21c3b79f250f398c0ff4a2d870dd7a737322aceef1f2479ccd2.js":{"logical_path":"tinymce/themes/mobile/theme.js","mtime":"2019-05-14T13:13:17+02:00","size":172439,"digest":"3ebedb886fbcc21c3b79f250f398c0ff4a2d870dd7a737322aceef1f2479ccd2","integrity":"sha256-Pr7biG+8whw7efJQ85jA/0othw3XpzcyKs7vHyR5zNI="},"tinymce/themes/silver/theme-02294426af3edeff56daa3e5fd3ef013944295525b150b8114eaca9de6201af7.js":{"logical_path":"tinymce/themes/silver/theme.js","mtime":"2019-05-14T13:13:17+02:00","size":357473,"digest":"02294426af3edeff56daa3e5fd3ef013944295525b150b8114eaca9de6201af7","integrity":"sha256-AilEJq8+3v9W2qPl/T7wE5RClVJbFQuBFOrKneYgGvc="},"application-e97f1694bd74fef5df4337d8faa6cde48d33f29e71594d3e3b40deef8fd34383.js":{"logical_path":"application.js","mtime":"2019-05-14T15:14:02+02:00","size":1965665,"digest":"e97f1694bd74fef5df4337d8faa6cde48d33f29e71594d3e3b40deef8fd34383","integrity":"sha256-6X8WlL10/vXfQzfY+qbN5I0z8p5xWU0+O0De74/TQ4M="},"application-665c7bdc2a85d2beeb41b3c165fec5272f5d00671d445bef7cd32341457f4051.js":{"logical_path":"application.js","mtime":"2019-05-14T22:58:40+02:00","size":1965802,"digest":"665c7bdc2a85d2beeb41b3c165fec5272f5d00671d445bef7cd32341457f4051","integrity":"sha256-Zlx73CqF0r7rQbPBZf7FJy9dAGcdRFvvfNMjQUV/QFE="},"application-3d5e23cf328582872a3d1bc4cbba74e4eff77c54728da6aee7f8473b5a2824dc.css":{"logical_path":"application.css","mtime":"2019-05-14T22:58:40+02:00","size":170796,"digest":"3d5e23cf328582872a3d1bc4cbba74e4eff77c54728da6aee7f8473b5a2824dc","integrity":"sha256-PV4jzzKFgocqPRvEy7p05O/3fFRyjaau5/hHO1ooJNw="},"active_admin-7af08a6e48da4e83664b81e446c23823296e4341041da5d930b7e0bc0c2b7be9.css":{"logical_path":"active_admin.css","mtime":"2019-05-21T21:41:04+02:00","size":105662,"digest":"7af08a6e48da4e83664b81e446c23823296e4341041da5d930b7e0bc0c2b7be9","integrity":"sha256-evCKbkjaToNmS4HkRsI4IyluQ0EEHaXZMLfgvAwre+k="},"application-870592844092d1ae784a86ed11f00302cb2aab752e76420235634a592b07cd40.js":{"logical_path":"application.js","mtime":"2019-05-21T22:19:54+02:00","size":1965802,"digest":"870592844092d1ae784a86ed11f00302cb2aab752e76420235634a592b07cd40","integrity":"sha256-hwWShECS0a54SobtEfADAssqq3UudkICNWNKWSsHzUA="},"application-7759ab5fd18acdafc46a921094dd497a51f5ed55c3d5fe10db48d1ff157f5460.css":{"logical_path":"application.css","mtime":"2019-05-21T22:19:54+02:00","size":170700,"digest":"7759ab5fd18acdafc46a921094dd497a51f5ed55c3d5fe10db48d1ff157f5460","integrity":"sha256-d1mrX9GKza/EapIQlN1JelH17VXD1f4Q20jR/xV/VGA="},"application-624ae947c8848388100e86fec4ac512e8e9403f71d7379bce24cf09d1d30d045.js":{"logical_path":"application.js","mtime":"2019-05-21T23:08:22+02:00","size":1965802,"digest":"624ae947c8848388100e86fec4ac512e8e9403f71d7379bce24cf09d1d30d045","integrity":"sha256-YkrpR8iEg4gQDob+xKxRLo6UA/cdc3m84kzwnR0w0EU="},"application-d3eba8d4a824164102e32919820a084700da079ea05453cd44d3a26d6899e7da.css":{"logical_path":"application.css","mtime":"2019-05-21T23:08:22+02:00","size":170847,"digest":"d3eba8d4a824164102e32919820a084700da079ea05453cd44d3a26d6899e7da","integrity":"sha256-0+uo1KgkFkEC4ykZggoIRwDaB56gVFPNRNOibWiZ59o="}},"assets":{"active_admin.css":"active_admin-7af08a6e48da4e83664b81e446c23823296e4341041da5d930b7e0bc0c2b7be9.css","active_admin/nested_menu_arrow.gif":"active_admin/nested_menu_arrow-15084d93c65c1964d7077700ea748bd2d70cfa2d4c19707c58a9c64e232dd442.gif","active_admin/nested_menu_arrow_dark.gif":"active_admin/nested_menu_arrow_dark-7c43b8e0a5f8823875f49a093c9d7a6b374f885b6f9cc248ae9cd7e6e9b29034.gif","active_admin/orderable.png":"active_admin/orderable-29374dbb55b0012d78a37c614d573bb3474f0779849b478a147d0f1845ca6617.png","active_admin/print.css":"active_admin/print-cf99cbf27fb92065a9eacd28e6fad48fa72cadaf6e0918790e8d35b11d8f99f6.css","active_admin.js":"active_admin-71f5376a62a9260af4c6b4c0930c35cdf18e4e35221289beb36ba77fac8bb030.js","tinymce.js":"tinymce-1103c4904fc1df026a84e5ce890ce02b9a9fda036966b0fb34ad900ccb83c712.js","modernizr.js":"modernizr-654222debe8018b12f1993ceddff30dc163a7d5008d79869c399d6d167321f97.js","font-awesome/fa-brands-400.eot":"font-awesome/fa-brands-400-bd4e21d8e25a889e979ac2367770c36863443b8e0f99feeaee09a62625b9cb13.eot","font-awesome/fa-regular-400.eot":"font-awesome/fa-regular-400-4aa44a07b71f47067872c8f177f31babc0c609af2b384511353c89b1ca804458.eot","font-awesome/fa-solid-900.eot":"font-awesome/fa-solid-900-e153efe317e731e59eb8d6d1a568a811b8f7dd5df3823c327103be8e4a0047e4.eot","font-awesome/fa-brands-400.svg":"font-awesome/fa-brands-400-e281f2a25598bf8b40a77f3c5228b51900788224e91dade3f4a0f8c383505f43.svg","font-awesome/fa-regular-400.svg":"font-awesome/fa-regular-400-934530d864b6f03fad8e87b66daf829d17f0e7afbd74baead32a6a4157d584c2.svg","font-awesome/fa-solid-900.svg":"font-awesome/fa-solid-900-d5b212510d72b66bdb7feb22c611456621c3dd1a2e88cc42983d7d4c9ab79563.svg","font-awesome/fa-brands-400.ttf":"font-awesome/fa-brands-400-70726f98e0d98f543d5fde05a3a74bb131c5c67f5fbffcf4d41b7f68bca2b56b.ttf","font-awesome/fa-regular-400.ttf":"font-awesome/fa-regular-400-112491dccca97bf50ec7adff8d430dcba6d0b71e0a0b20386f814f3bf5bb94b5.ttf","font-awesome/fa-solid-900.ttf":"font-awesome/fa-solid-900-7a58f741ff539af94798ff561c918e5841d7e6164e90cbe57befdec4a16f6a4e.ttf","font-awesome/fa-brands-400.woff":"font-awesome/fa-brands-400-17ce8b9d612897d1fefd5cd2096dbd83b82d05dd5d1f60421aca15c4ce2445ac.woff","font-awesome/fa-regular-400.woff":"font-awesome/fa-regular-400-2835b63ffc892d01aac2cc346969b501c845d9184f738589779ec176937e1f33.woff","font-awesome/fa-solid-900.woff":"font-awesome/fa-solid-900-20464aebbff54cc17776497ce4112c3374a54b38f7ba5f58eec12174149d6742.woff","font-awesome/fa-brands-400.woff2":"font-awesome/fa-brands-400-dc64d7192f84497cacad5c10aef682562c24aa6124270f85fe247e223607f3ed.woff2","font-awesome/fa-regular-400.woff2":"font-awesome/fa-regular-400-ccf4db1eeb68c96e05e74f8ebfa75cc60c3a0fed862dae6b0ad85d4e1b5b4e4f.woff2","font-awesome/fa-solid-900.woff2":"font-awesome/fa-solid-900-f18c486a80175cf02fee0e05c2b4acd86c04cdbaecec61c1ef91f920509b5efe.woff2","agendadescommuns.png":"agendadescommuns-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png","alert.png":"alert-762ace9479328243a44061346b64c4d6b997e963c68dfc6bddd9e4d241192906.png","baby_gnu_adl.png":"baby_gnu_adl-463a81820aa2d4ffd8e7210dbce1a19ffcac67ef362aa7b092280c6f95c903fc.png","baby_gnu_adl.svg":"baby_gnu_adl-97251005d3225cf1d58b8c497d6b7905dbc9560cc8acd50118fcce60d0a2679e.svg","communs.png":"communs-0017bef53f6261cb3bf952d4b780c64307369714b2e1e2d4eb9f69dfd986ab33.png","lef-small.png":"lef-small-93285d531af463f877951d63fe844a6e9600b782c2c81f78723b730072fa942e.png","lef.png":"lef-7e9152b909c78144ff44ca2254c06709333bef0b8d4985deb1361aba5c63c86d.png","linux-presentation-day.png":"linux-presentation-day-863b30562924505dd21841220861f83643d310e0b943a0e6a905462ddfac86f1.png","priorite-logiciel-libre-je-soutiens-april_2_m.png":"priorite-logiciel-libre-je-soutiens-april_2_m-6442e454e96ed45cc1ebc40673a6c50bd286b9c28ea6a8b58572e94f7d6459fc.png","regions/CA-QC.png":"regions/CA-QC-70699e6a6e25c69040a3f1548b0afd829c4903ccca2760b6c10f49cc87d5d174.png","team.png":"team-65c86021cf8a1154493664094aeafcbe3e5aa13dc675bb8ef34b220481db98fa.png","application.js":"application-624ae947c8848388100e86fec4ac512e8e9403f71d7379bce24cf09d1d30d045.js","application.css":"application-d3eba8d4a824164102e32919820a084700da079ea05453cd44d3a26d6899e7da.css","flags/4x3/ad.svg":"flags/4x3/ad-f67c4e5a3f709ead53c04d9ff35614e6c67517c3d3289170f7a317390f661497.svg","flags/1x1/ad.svg":"flags/1x1/ad-a315836ec2c9dcc11ef9bfd8b18aa7ccfc2d31435cbf46a2c31930836076e09c.svg","flags/4x3/ae.svg":"flags/4x3/ae-7a3b3dc0f50b5310014cfbcc8200a5f1ce568127bf43452e40e8158e0cff2d2e.svg","flags/1x1/ae.svg":"flags/1x1/ae-bcdd9a4da09598785f3e31db4ff431e22687b2ead18209a3e615600655068cd5.svg","flags/4x3/af.svg":"flags/4x3/af-01601b521fa86582e32c39eed8c88480afec1f801b6de929b52ed7e49da47260.svg","flags/1x1/af.svg":"flags/1x1/af-6332cf754a5e2866db631923e1f7cfc52a0a554d32b97bcf19f8263819e4ca7d.svg","flags/4x3/ag.svg":"flags/4x3/ag-cb6952d821bac7855231c2cb4d1c44f7c730f6b3621518ab20f30d2b9afe604b.svg","flags/1x1/ag.svg":"flags/1x1/ag-14f7d9978487aaf4446b55167e85a711c48a13ff07edac175c172969a38650c4.svg","flags/4x3/ai.svg":"flags/4x3/ai-f07c6cc0646fdfa441b9a506e1d46e8dce0d97b37222292e9c6733c995dc89bc.svg","flags/1x1/ai.svg":"flags/1x1/ai-95099e544de29bcea3ba735de535823f2e19aeb4043e82dbc1d9862f9262b810.svg","flags/4x3/al.svg":"flags/4x3/al-9b997f2720de861e1b0ccec8ddf42a2890795ebf50817f9223e1ceba712c9b03.svg","flags/1x1/al.svg":"flags/1x1/al-94852d2711fc23abf3423534b9edb950a0c6aabf1d2d98bf2643f3c7dadfac09.svg","flags/4x3/am.svg":"flags/4x3/am-85a199ec21d1af74a256335ead0c1e38592bb603d8da81feda4678945e9e00e6.svg","flags/1x1/am.svg":"flags/1x1/am-869391b014ac299924d30777d72a4aba430752177290a90a1fc3255a7ad79ee7.svg","flags/4x3/ao.svg":"flags/4x3/ao-29224a61bf632826d530cda55d87c2615884bd2c2c3a322036ed468e34d85c75.svg","flags/1x1/ao.svg":"flags/1x1/ao-048eacbc862fe1868cf0ec73457b70a8b49a598c80dea049856f0e1fd6fec83e.svg","flags/4x3/aq.svg":"flags/4x3/aq-b401a776d2f1a7944170114f0aeeceab5e1d962df3de7ed1eff47d96824b73fd.svg","flags/1x1/aq.svg":"flags/1x1/aq-a8d7ce9bfb860b6e2b58608b50bf2cafc5220c77f6d049ab7770891f64334531.svg","flags/4x3/ar.svg":"flags/4x3/ar-bf73475bb707100874dec538ce4b7e1b5afc4ed67dc50a8a800ee519e51cc826.svg","flags/1x1/ar.svg":"flags/1x1/ar-fc6582cc6d3ef0782805d8497ee77ab2d836c53422e91007e48f81a4a9fa2e60.svg","flags/4x3/as.svg":"flags/4x3/as-79d395190345206ea03475b67b44638e1111562411504b60646483c9c0b0f7d1.svg","flags/1x1/as.svg":"flags/1x1/as-04f0db77c5d8610a55c69508b226a7c338924f8cf7d6577d5d6590e85ee57183.svg","flags/4x3/at.svg":"flags/4x3/at-3d197de8f1f0096a2b0d440b6fc7d80821585a6637e646c05487a87718bf6b5f.svg","flags/1x1/at.svg":"flags/1x1/at-ec4db9aeac793827ac7c8e40c072a76f7675010058cc8c8dfd3a86bb5acfa6b8.svg","flags/4x3/au.svg":"flags/4x3/au-126fa2500a315287a5f847f4d958bb929f11da9b39f35912cc440c0fcffb8b12.svg","flags/1x1/au.svg":"flags/1x1/au-bf990dcc957c9f74eb908e8ffa733f1731277bf6ec8b7301a6ea1ed92b59cc4b.svg","flags/4x3/aw.svg":"flags/4x3/aw-4524643452423e95f3b0dbe6216b059a9e52126b34c73ae4b3c17b682f893aa6.svg","flags/1x1/aw.svg":"flags/1x1/aw-f7002bceef55486a442bf6bf433be0c60d0b15b2aa548b81c524c67ccf0565a8.svg","flags/4x3/ax.svg":"flags/4x3/ax-c297e0eb654ca62e58f5eb3abb70df9f245e4919490f29bd0f1d49c4fe052d90.svg","flags/1x1/ax.svg":"flags/1x1/ax-a1245689ecbf321c0a9e556bba17f3c9f2aeb8b1f63d14fcb591d76a87f12880.svg","flags/4x3/az.svg":"flags/4x3/az-132e68d5e0386d3b9fa05b4288a0fd66f1414e2bc7af6b9d437b6935a7dfa00c.svg","flags/1x1/az.svg":"flags/1x1/az-3990c0526b933bd650285d821f2b93e432a73ba709869549b8ef75b051d3bd2d.svg","flags/4x3/ba.svg":"flags/4x3/ba-89dd0c1600d94741de7d667a487310193a0c48c4cf1a5159c3bf9dd37d65d2b5.svg","flags/1x1/ba.svg":"flags/1x1/ba-2dbe90eb12b937f4a9ae8db95760930a3e318f4ce5829ac05e292ead698bae5a.svg","flags/4x3/bb.svg":"flags/4x3/bb-16f8249ff958bfbc18fb1f23a5282000347bffdb5769ac620966185b1dcb57f6.svg","flags/1x1/bb.svg":"flags/1x1/bb-fae92d8426196ae24ffa561aca72613fae651a5e9c0bcda63ecc877add05b060.svg","flags/4x3/bd.svg":"flags/4x3/bd-8dac0547e73ee25a04148a3f0fd026a90e56c23b7e92921565d4263050ba77a6.svg","flags/1x1/bd.svg":"flags/1x1/bd-ecc3c3e87d4cc59c8350f2b4d7dca8f5cf46bdb26319db0ee80b744482af50c1.svg","flags/4x3/be.svg":"flags/4x3/be-a180ca68521188017bb5367f19e503d9599d6cbecd61bf054e59a57f58e648ae.svg","flags/1x1/be.svg":"flags/1x1/be-c8d4194137bd01955285b329dfdf996490d16c3116a92ce2f322e354b6d7494e.svg","flags/4x3/bf.svg":"flags/4x3/bf-6b214936ef89f19133d4a84e99cdf0cfdb99d6409f2f373f6d18694423013313.svg","flags/1x1/bf.svg":"flags/1x1/bf-04c7d61aa314adab5a41bd79d77aa780c10136bb6b8f4c62423e61e23e3851ee.svg","flags/4x3/bg.svg":"flags/4x3/bg-dd3985ba746942b0e65bc52a280cc4d28fb24fd2c7d9e22ac9afd2d75ee7bfc4.svg","flags/1x1/bg.svg":"flags/1x1/bg-f59294a736d5bdc0f102b58d70dbe45d02bd92df822820bf95336840f75a0746.svg","flags/4x3/bh.svg":"flags/4x3/bh-7c82c4a6ba963172c6c1b4423f39a0ebe9c999449cc7dd87018917943db4735c.svg","flags/1x1/bh.svg":"flags/1x1/bh-6893aac3e55c6480e9dac0c023ec2179f6c12a0da82a0bc2717134384c097e88.svg","flags/4x3/bi.svg":"flags/4x3/bi-4fcd0116f7f93c0564c6955806f3c3563d0ea7334ae406f29a897255845c923c.svg","flags/1x1/bi.svg":"flags/1x1/bi-91c34eb431b26be67852782a0b93e1d7d577a925454d6c8cea00a0d872d2de8a.svg","flags/4x3/bj.svg":"flags/4x3/bj-63bddb4268f5f8c2ed867041bcf058fb18fcd9d1e0799e01286fca2d5e961c7f.svg","flags/1x1/bj.svg":"flags/1x1/bj-e2606c5a8498c474a6b6708626b88108fcb73840344766566dc56f804279cdfc.svg","flags/4x3/bl.svg":"flags/4x3/bl-824a7265f48789d5e1ad5c5b0042a13a7d2d4357210e5bd8124fca19931e8c74.svg","flags/1x1/bl.svg":"flags/1x1/bl-ba6a7881b0ca72ac57aee4d823ae611ab4ad24a938ee9e01a7a4d5ae04cfccf6.svg","flags/4x3/bm.svg":"flags/4x3/bm-2e2f09e5a4edf4b18afff581656f50b0b4c37783db29591ff00ca768f7f755bc.svg","flags/1x1/bm.svg":"flags/1x1/bm-f553f953f8784ea4d67a5197f5d808a67747eb8a1cb56990d6838e690090d2d6.svg","flags/4x3/bn.svg":"flags/4x3/bn-bcf9967c12eb6397346cb5b960ae92efa41f314f780d09a3d7c81f5dacac4180.svg","flags/1x1/bn.svg":"flags/1x1/bn-1d1aad3fe9fd33ce922eba33c9ae6047a5646349239c20d1bc7307ec6d19a043.svg","flags/4x3/bo.svg":"flags/4x3/bo-fa423f2bb4ab6e8e9dd399ad73781ea8d9cbafd30f1b7ee0bcecfb9e7b75581e.svg","flags/1x1/bo.svg":"flags/1x1/bo-f5faa29e40191e0c76070ac1a1d2a1f2b18e9cd358b8a77cefaed8efc49a265e.svg","flags/4x3/bq.svg":"flags/4x3/bq-493c92ab19204c3ad319e6caba021df050132b99bd57a8f9b74131b78229c29e.svg","flags/1x1/bq.svg":"flags/1x1/bq-6e30bbeabc2aa097f657a411984b3c23278a8fcce2fc016b1cd6d2262f672d33.svg","flags/4x3/br.svg":"flags/4x3/br-cf3ba80ec2c9fd4d3c845c3a3c43a2b9d81cf90707a2918789e8b1f596833e01.svg","flags/1x1/br.svg":"flags/1x1/br-7bf4e4b31650ac25f0bc6c86eb87491a7e5a8eac13acccfcbde44346c88728f6.svg","flags/4x3/bs.svg":"flags/4x3/bs-69f60b5fea96b67dd939e597099994921bb3dc3bcf31b8dee7cc45be2885c836.svg","flags/1x1/bs.svg":"flags/1x1/bs-f5d6acf7ef7a240dc09ac88710fd77fd3494501104392db74d5c540d482f2262.svg","flags/4x3/bt.svg":"flags/4x3/bt-6c20b0c00e12d5898be0239a0c66ce775debd0bd536de56a271859a0285a039e.svg","flags/1x1/bt.svg":"flags/1x1/bt-58de3ca9438811ef1920e2f84c4ba4ce32d01069f4d197ab5d577de6acbe0c85.svg","flags/4x3/bv.svg":"flags/4x3/bv-ff173190fc339b3cb8b6e8235bc5e373853d7127fd94cbc32ac737e839aeb586.svg","flags/1x1/bv.svg":"flags/1x1/bv-59616ff1a722959064c83927ca2e49c1fce42a9b18e91b9ecbb74f62527aff43.svg","flags/4x3/bw.svg":"flags/4x3/bw-4bb1d3131b88c65b5decc67f7b44903e931bca2fcac841942591c599f0cbb850.svg","flags/1x1/bw.svg":"flags/1x1/bw-e08f50c0836ca5858aed7b0526aed6fb630da8dc6b6b96bd9a476af599dc89d6.svg","flags/4x3/by.svg":"flags/4x3/by-324ac96bfbe075781c664be3b9e2ac6b4d2a46dd2b418ca0920284f64394c7d4.svg","flags/1x1/by.svg":"flags/1x1/by-37b80e8bf7e51fef99a8307d6dffb04ee164790ceeafef606d516ca333e9488a.svg","flags/4x3/bz.svg":"flags/4x3/bz-156fdc45f8c15c9520a1ea9fc0f395f294f02077408ea1938c222a37cfbb7f1d.svg","flags/1x1/bz.svg":"flags/1x1/bz-24577d4e7b29b33ab3b1d37914c8479889baa7e8c8399c6d1c99faed31ab053a.svg","flags/4x3/ca.svg":"flags/4x3/ca-0d57cab46d5dbb0012a5e4ae0a9efee3baee90d5d157950a6c5d67edf2daa58f.svg","flags/1x1/ca.svg":"flags/1x1/ca-192a6fb0544e5a6f33a32149d62f1e7ac0a1d61c5c5afa57f3a42346ca8e8c90.svg","flags/4x3/cc.svg":"flags/4x3/cc-a35f2a9e10a28d6918ced65e0623b03bb2fbf1f20670b581bc0a409d33b4e843.svg","flags/1x1/cc.svg":"flags/1x1/cc-d2025eefc9d30f724f3fcd95c0fd9f7938930ecb01af7e0cd6ee6553d7358eb6.svg","flags/4x3/cd.svg":"flags/4x3/cd-5d2127c991b30522ae0a29d05facbc88728c050d7e333a60d614af1545459c5c.svg","flags/1x1/cd.svg":"flags/1x1/cd-59dacf424d1c8c779db66c5b7f2a93a3c8f14976c2975ccfb07639676a1602e3.svg","flags/4x3/cf.svg":"flags/4x3/cf-ac0aaffba354d848eba2501a402ee81dc96a56ad0acd3741ec9905e76c372e1e.svg","flags/1x1/cf.svg":"flags/1x1/cf-e637674faf7edcdad37182192d038448c157421ab0c69377d9b8e56ab2c0249d.svg","flags/4x3/cg.svg":"flags/4x3/cg-3729f717c83c9df7d0543a1a5d4a506efe184bdfeb39f9260b4b63edf19d2538.svg","flags/1x1/cg.svg":"flags/1x1/cg-8353ff1f251714b1b8905eec1722378426719955d0637d206d35d1dcfa68ddcf.svg","flags/4x3/ch.svg":"flags/4x3/ch-6739edee6d1ef72c4ed97cfe723d3bb7f17e4df5390f3a4ae234f1ffdeece0cf.svg","flags/1x1/ch.svg":"flags/1x1/ch-7c3dec465228981c57a90a3a7b3a6c42dd3e699230663e770b55008ce6d14208.svg","flags/4x3/ci.svg":"flags/4x3/ci-3e076d13c9524149508c442f8f727424660124e3591280d8ae9bddf9d8272a1e.svg","flags/1x1/ci.svg":"flags/1x1/ci-691a0a8577b7d555fc90dc7170adc9ec7571191cb3507c46c0e8516fd1778a91.svg","flags/4x3/ck.svg":"flags/4x3/ck-9cff098e505afde9bf5166cb7b0c409178575633b913ce08c1c700d08c477db6.svg","flags/1x1/ck.svg":"flags/1x1/ck-9c8dffa3bd5953d8a121780831f25b58738e67f3be71961894c56dfd25848c88.svg","flags/4x3/cl.svg":"flags/4x3/cl-a4c57ec2bb9adcb67e1850256e5165227b764187d6941a38d95d0def5144699b.svg","flags/1x1/cl.svg":"flags/1x1/cl-5a3e95cf63358e3911c97404818c2cddfd46414d8445e47d6976ee166c48926c.svg","flags/4x3/cm.svg":"flags/4x3/cm-5dce9f36d92a61bdc0c482141bdb4f55bfcec0a2ecc745db643a7953e2e5a722.svg","flags/1x1/cm.svg":"flags/1x1/cm-d8d21f54c44df5df9edef227691384a4ad37c15ff57c8aa0dead684d19eac8cd.svg","flags/4x3/cn.svg":"flags/4x3/cn-48ce1c2837bb806a6aaf8b7a9878b6d040c0d069a0ffca9a8a49e7a31aa30e7f.svg","flags/1x1/cn.svg":"flags/1x1/cn-e6be64c6c4a976e64d39bfe8a6ae4a5b1d38a6aa1b138ddcacf34a942dff50bc.svg","flags/4x3/co.svg":"flags/4x3/co-648d3ff596a0ecf3e85ac17c53abe1d7ca4759688e10a7a3a8b56f096ba6b6f7.svg","flags/1x1/co.svg":"flags/1x1/co-d3c16180c6bce630f762aff789104d10e9dbc949e740535a61396cd0ec34c1a1.svg","flags/4x3/cr.svg":"flags/4x3/cr-84aec60f19bd33e1ac1a209155fec8d372e17cb59dc1346bb9124e5cc867375d.svg","flags/1x1/cr.svg":"flags/1x1/cr-5371cf8bc5ad1a805155c1b3065e420a0a418c8d63b472bc545890289a365b35.svg","flags/4x3/cu.svg":"flags/4x3/cu-bb3f857e02aeab606120d9f164283f07a44b227f12aad7d6d344c7579f7b3ff0.svg","flags/1x1/cu.svg":"flags/1x1/cu-02c0054169b874a8d231de1f45b2d0884de48848157734e0ddcd0f684c05c18d.svg","flags/4x3/cv.svg":"flags/4x3/cv-90ee90ab59713454a218d8c300c71139e62655de80bfbea81df93142a529b81f.svg","flags/1x1/cv.svg":"flags/1x1/cv-2cf3eede97a468d28459ccc2271c28bb5b6029af2388b0301f6203be55e49308.svg","flags/4x3/cw.svg":"flags/4x3/cw-d46beb7b10b40fa82cfd40eb86a3b3879f59f5da2a2f5ef91d121ab9b16c0aad.svg","flags/1x1/cw.svg":"flags/1x1/cw-ba78c834e61b24a8a2b6bc7c80ab9f14e42c3c69415941ddb7c8c1f652ccd8b5.svg","flags/4x3/cx.svg":"flags/4x3/cx-28187fb9d91bedc6f239b107d26eb6ec1cc2a0c7730810306c5a6b313c14f2b2.svg","flags/1x1/cx.svg":"flags/1x1/cx-8ebe073d997f93d092a493300ea1d234c91aef80c6e8f431e88aa7f8e724f9a6.svg","flags/4x3/cy.svg":"flags/4x3/cy-8d633ecabc7968bb8a869c62545f122aacbbc3e108c25ceb421bb8bc8734b9be.svg","flags/1x1/cy.svg":"flags/1x1/cy-6ef37fdd7518f18727bec1ed9741bb4d1f854dde7ef1a7e9fd2f4ba6291a7790.svg","flags/4x3/cz.svg":"flags/4x3/cz-6c94e3d53fc1ae5982d8eb058b76d86f07d3fb4cd325698fea3291fa35504c56.svg","flags/1x1/cz.svg":"flags/1x1/cz-af9898ebd32559cdbea2fd17b351e5eedafccada6fbc6a2b7952cad78369817e.svg","flags/4x3/de.svg":"flags/4x3/de-e7323083675d25107c85f0cea6534bd21d21e77e6d524d92e1b2d0a4e21117a1.svg","flags/1x1/de.svg":"flags/1x1/de-fdb60146952d3b2d104310b28882a0ecde44d808240c3bab2cd6c302a538b266.svg","flags/4x3/dj.svg":"flags/4x3/dj-546da4a0dae9b1ab74dc6ac6076d0c706f37ef2a0d799342dd0345e11f770f03.svg","flags/1x1/dj.svg":"flags/1x1/dj-c0481b667f003d9d5a3c93861023a97a98224227ac19aa7e07b5b6edd35fe900.svg","flags/4x3/dk.svg":"flags/4x3/dk-a13735c0337ab4679cd8679508bf5e8067637ab611ca5c54172c621d740420e5.svg","flags/1x1/dk.svg":"flags/1x1/dk-822a3b8b6948f49aa81fe7620bd173453d9a45406a9680f24bad7e714e58cb7c.svg","flags/4x3/dm.svg":"flags/4x3/dm-7713fabd3cf341694b4c1ef5d1379820773722b61c190234ac7416f2872e3940.svg","flags/1x1/dm.svg":"flags/1x1/dm-33d984fc9897bb2a3bd16c6672b876effc1a8adc0c57ad122a16db54061e4e46.svg","flags/4x3/do.svg":"flags/4x3/do-714b6f307ea3a9c3d30348684b8574e8b7f5078f51649dfa97ae2a69a7108b4a.svg","flags/1x1/do.svg":"flags/1x1/do-d37306c4b346f89ea14739144374caad69652be31e8ce8e2504c9a0d422a4857.svg","flags/4x3/dz.svg":"flags/4x3/dz-a96e943c830558fe9823044aac2bfb3f6a4caf3bd3c57943352280a7f6b68cb1.svg","flags/1x1/dz.svg":"flags/1x1/dz-09400d3b2c58e641a1641a687b81476761d05f9d0ff65861aeaa33c7f508cda4.svg","flags/4x3/ec.svg":"flags/4x3/ec-6762ba85ea0f7bb289b0aa6219c797e5243103d281b1462c61b61030fa329d5e.svg","flags/1x1/ec.svg":"flags/1x1/ec-7410a75a013738fbb8cbd756d967380e02ae54ca74e9ef9a41c4b583c2c2794f.svg","flags/4x3/ee.svg":"flags/4x3/ee-ce3b622214bd9eefb43373cae2811ea8cf6ef6a16bb6afbaa5bcaaea34024da0.svg","flags/1x1/ee.svg":"flags/1x1/ee-a207a8363b4dde44f59951501c2cb539419e92b0814b25d6448710ced52226f8.svg","flags/4x3/eg.svg":"flags/4x3/eg-16a11fa93856ddc5fd46f8811adfc93660175724b20eaab55ff046855a352d2c.svg","flags/1x1/eg.svg":"flags/1x1/eg-9f4d098c604326bbc3692f9e2f335dbc9b34bdf2706565bf448380f0a889d1e2.svg","flags/4x3/eh.svg":"flags/4x3/eh-9cf4a74d29c1a1afc4137deeb5b678d55c8fbdf8d181217267f3a5cce6a76a97.svg","flags/1x1/eh.svg":"flags/1x1/eh-16c3327dbcf3483e634b3536b056324b5478212dae6d060f2ffb2ec961cd382f.svg","flags/4x3/er.svg":"flags/4x3/er-69a1e1e45289d1282df4b1e5ce5e712d69fbe314abd0c922353fce90814c543e.svg","flags/1x1/er.svg":"flags/1x1/er-90d49408e58955cf1cf3185b0193e03c4a107042d47ef5e975dbbe10c6ef7f4a.svg","flags/4x3/es.svg":"flags/4x3/es-50e59681c6b6412498bd9cbfc473abedc713db75c54c538b839db3c394d64499.svg","flags/1x1/es.svg":"flags/1x1/es-29c68fa3c9c8c2adacdc2eb0162e9c2fa998faa408836900ec6285000476800d.svg","flags/4x3/et.svg":"flags/4x3/et-14263ba7ea890fd0a4d89a2791343ecb7acc89aab1fc2593e00a6093b22251df.svg","flags/1x1/et.svg":"flags/1x1/et-086eefb70e9adad537cc1c640a72cc0fa843ec7a9b06b2778aa98b2db055bfe6.svg","flags/4x3/fi.svg":"flags/4x3/fi-a4c41caa02a4f6803ea0d6c36de4beebf20d150e3df742b1369a4099c2ff648e.svg","flags/1x1/fi.svg":"flags/1x1/fi-c5fdf318fac5fdfc94fe54268618e58a2bc5933617ead09992900f90cc25de9a.svg","flags/4x3/fj.svg":"flags/4x3/fj-cb0cc4b3b5c202f07487ee519f48b3eadb47035f5f2d5d3f99d20f81e48d6b79.svg","flags/1x1/fj.svg":"flags/1x1/fj-c2c7fd536841925e7647b2d510d6a0c58700e2a8ded0e42008fb93ffacde101f.svg","flags/4x3/fk.svg":"flags/4x3/fk-cb61eaa0d7221823f7d17de59ea88ed16b506f9585ab0c7291cf839449d82968.svg","flags/1x1/fk.svg":"flags/1x1/fk-a871742380ae157d1211a63cc35cd3621b1bf6de6d67e4a8e3565ad200b1d8cf.svg","flags/4x3/fm.svg":"flags/4x3/fm-079b937562a9a412aae8fb762b571ddb49bf23627943c97247b6a9bbdb768153.svg","flags/1x1/fm.svg":"flags/1x1/fm-dbec73633ecd8a6c50f56d54df36bbe6a2f8fb534ac7658477c82cad14a806a8.svg","flags/4x3/fo.svg":"flags/4x3/fo-27279c2481bb1cb3e44850a948987d6a8411acffa770c3aecd1b76d4c5853413.svg","flags/1x1/fo.svg":"flags/1x1/fo-7cb4fdbba1c7223702d843cb0709ddc799f89f909dfe101e3e36d6bf36c3e67f.svg","flags/4x3/fr.svg":"flags/4x3/fr-30ed2f68dc9a17927643640f48f3d2a858bd041770547035349c6e79713cd84e.svg","flags/1x1/fr.svg":"flags/1x1/fr-6b849151204c66fa661c30b34e62919a13b9e66b7cd37a4fc8962e8e0baf9bdc.svg","flags/4x3/ga.svg":"flags/4x3/ga-e3840f9d5bd6ee08db748d37a534500b837bee0f8ce65987b2f099a6afd2cc63.svg","flags/1x1/ga.svg":"flags/1x1/ga-9eafd5388042b3d2258ac6223075b726426210136b9851b637973105721b64d9.svg","flags/4x3/gb.svg":"flags/4x3/gb-ce93c8a6b974d63998e263f6d25f898fc20580a28464457f2f4463b687e4fe8d.svg","flags/1x1/gb.svg":"flags/1x1/gb-1d93e1ce2e2e10c1709e4dc50ac956c007b2c1a63a4bc22ddfd64354f79ad457.svg","flags/4x3/gd.svg":"flags/4x3/gd-7c3a6b6068bbd9a6abc98c2297dd4acd5e31022e5a4210fc0e1205ec28498fa2.svg","flags/1x1/gd.svg":"flags/1x1/gd-2310bc03d9e8ddc8599b40891bfb10b812b07023881599a7e02e3028d1bc9ca8.svg","flags/4x3/ge.svg":"flags/4x3/ge-501c0135fb8c377dbd2859ff6290b47ef4907a8e2ab2ae1e39116b716db6795f.svg","flags/1x1/ge.svg":"flags/1x1/ge-ca9ee36883ec12048fbb7fbbfaf231c0d4848ae0b07dab74a46d53b7b34d8114.svg","flags/4x3/gf.svg":"flags/4x3/gf-7c165f90bfe6ac3674903632182221a992f017ff706354b1761002382e89c2c2.svg","flags/1x1/gf.svg":"flags/1x1/gf-8838337b15cdcf143fac16c714e8dbf2d893d2ea8f1c8ef06dadcb652dfec41c.svg","flags/4x3/gg.svg":"flags/4x3/gg-2c7bfc50d5bcd374b5f6107974d06af24e70edba31ad71a225e0c2ecc2d6e778.svg","flags/1x1/gg.svg":"flags/1x1/gg-509489b1792831bb27d6975c76aa0a2ac2fa2c3906bcf844f616de5e0fbbc359.svg","flags/4x3/gh.svg":"flags/4x3/gh-79c187756e93df22fae571ad9419629c5247c016e32a74471e0d461048fdf5cf.svg","flags/1x1/gh.svg":"flags/1x1/gh-e7bf18e6337982ee31e3673ab93e722b3410b7a4c202656a4bc3887d8656286b.svg","flags/4x3/gi.svg":"flags/4x3/gi-ed99b369c8c77e64abd59fab1f28155d71b4378b49625c66ab0ab6dff4f88087.svg","flags/1x1/gi.svg":"flags/1x1/gi-2e563e96e766e13c0a9c5a3a372059a44739bb696e853d71a6f6b08c491dfb9a.svg","flags/4x3/gl.svg":"flags/4x3/gl-612e560dbad68d540be672b80e22c54db43d6e2070523e81c156ccd6b3fc4260.svg","flags/1x1/gl.svg":"flags/1x1/gl-a9bb35d2b9ff27638658d9ad6b9e2c4f452072b9a80b508d32e76d37bf62cf6e.svg","flags/4x3/gm.svg":"flags/4x3/gm-4a6f9670a41548cceaced2b728e4bc56acbc4a3ba5544e7a097f7dae7a8bb045.svg","flags/1x1/gm.svg":"flags/1x1/gm-b67f9f6bce2f8c8700c198de8bfafac72d01b8a1e55b77f71e8cafdc58f8af5c.svg","flags/4x3/gn.svg":"flags/4x3/gn-873b4eb52f34c7558bef93cfd1b82117b5c32c9fbc0610f8821ccd22f28abe28.svg","flags/1x1/gn.svg":"flags/1x1/gn-72f51dc30cf0ed5459ad0f239cf3043eac05ece75945bcaf4ea6653af868c504.svg","flags/4x3/gp.svg":"flags/4x3/gp-4559cad3eb2d173214161d16b0237c68f5c817749a39c862fa7b23dfb4aee923.svg","flags/1x1/gp.svg":"flags/1x1/gp-d6669532054db5b7e441f4858c28920246a65ca3e8a15518c64c7bbb4f9c6416.svg","flags/4x3/gq.svg":"flags/4x3/gq-0c8dfe7f9543307056bbe6d6e44a16c17201228e5344d5afec1ccf1b9a5eb2f9.svg","flags/1x1/gq.svg":"flags/1x1/gq-ecb761e6db59b9bf8ba37533eaf0c60b7fcc7c0dfa2fcf281ee84c970dcb10f8.svg","flags/4x3/gr.svg":"flags/4x3/gr-4a4086310397bffa682d439be8650a9e28d94e32963b6411b61435292ac4cf80.svg","flags/1x1/gr.svg":"flags/1x1/gr-0cbd171892c0568b055d3b6585d58ac13dd60dfbcfad16eda1f4f9ead11dd16f.svg","flags/4x3/gs.svg":"flags/4x3/gs-e45169a93a9e94c15f5cb765a6c863319171fb9b4dce56094411829cd688d486.svg","flags/1x1/gs.svg":"flags/1x1/gs-3efc9e1b32961f9aa9d7faa2626e596282b63d049f6717c2378b28e3f508e79a.svg","flags/4x3/gt.svg":"flags/4x3/gt-64a7345cf66facf7f323d2142aebb4172191108a78ac7493b1a6077b78ac8ec5.svg","flags/1x1/gt.svg":"flags/1x1/gt-436a2af3d95cf3cb13ded897f319cfd6e2c087d678ad0e971c198b0d2c029911.svg","flags/4x3/gu.svg":"flags/4x3/gu-f560822ee237e5277829e63613a615a2ee3d8cc6196dffffe0f0d56a49b11c53.svg","flags/1x1/gu.svg":"flags/1x1/gu-a71c9d290c66c1a0929b05436dc6a8229b1147d7cc62336e04c9adf697030450.svg","flags/4x3/gw.svg":"flags/4x3/gw-0dc9ec17735ed605b68672947ce55c49a4ec1551491ccd121f482c1875cdf219.svg","flags/1x1/gw.svg":"flags/1x1/gw-7868c305e4a64b0d8ebfd3f7cb8c881841d71a7e0c3ead2683fe503c80de0674.svg","flags/4x3/gy.svg":"flags/4x3/gy-c9126e544c62508abfb898f0af0bd79c46f4c767c9ed6f928418a24b0f246d85.svg","flags/1x1/gy.svg":"flags/1x1/gy-0e3b849ce460f8ab1ec7cf66a25be1ba91e89b72d8b0aa679a0553464f37a972.svg","flags/4x3/hk.svg":"flags/4x3/hk-cece9126ccbf9151feadfed75791ebf32d4a16beab12f182404519d0cc24eec7.svg","flags/1x1/hk.svg":"flags/1x1/hk-9fad00e06f9034877149394914baa2bc3292223b0e32df2b1f9399d4de6e167d.svg","flags/4x3/hm.svg":"flags/4x3/hm-4b4923b81da24d62ebf31a9bc0addf76beef84593374b1cbd03ba19f3b12e3e9.svg","flags/1x1/hm.svg":"flags/1x1/hm-776c822113a22e83581234d05f40bfc0ed38b60648d87f513f3da3fff96ffb61.svg","flags/4x3/hn.svg":"flags/4x3/hn-855c830786283862a5f399e0d69dffe52b6223b91b32e31b55d55c82f2fa32c9.svg","flags/1x1/hn.svg":"flags/1x1/hn-64c38bac9403417c4e276bf5536d284fc5410fc04b80acd39a961d298f430dbd.svg","flags/4x3/hr.svg":"flags/4x3/hr-c8cad861f7398a22b9d27ea682d2778df0dde8e146d30142b5294daf988854af.svg","flags/1x1/hr.svg":"flags/1x1/hr-60c093df6760e4cc6abe26c37a52be3b51458f02712f18e11f08b07dc623b489.svg","flags/4x3/ht.svg":"flags/4x3/ht-fe81da06228fa36e7f211bec0d9f0c020f5b9c7f81534b4cb2251848aa276b16.svg","flags/1x1/ht.svg":"flags/1x1/ht-dd0197c078859c5a66ff3a51d3a3f92809768e36bfabdec0fc0ab60d068afcd9.svg","flags/4x3/hu.svg":"flags/4x3/hu-9aa998e636687aede491e307f3d068dbe58f2d90bfdfaec0e7ad03baa5b36344.svg","flags/1x1/hu.svg":"flags/1x1/hu-06858d0fbd4320496e849010e35c8fe82eb618188cf6ec329aef93f5e7af1c23.svg","flags/4x3/id.svg":"flags/4x3/id-775dbfedd6533afdf5bd017ccc1ad4f8f4238cbe87393d9c837a669196f17293.svg","flags/1x1/id.svg":"flags/1x1/id-3920ce662a7ea937b2c11707d8e1f53db52611dd004edf753b0389ed490d9d29.svg","flags/4x3/ie.svg":"flags/4x3/ie-6368a1c92440fcf80d3c35607543bcaa2d4662d6e0bc7acf6749ddbc418a72c0.svg","flags/1x1/ie.svg":"flags/1x1/ie-1997e9de640fa764677aa8f5d52f7888bb24a029160e8f67b06dbd043b4f11b3.svg","flags/4x3/il.svg":"flags/4x3/il-d76883a2330f9a05a4a64990ba955fc1be90bb46bcb19ae548c21816e7e74178.svg","flags/1x1/il.svg":"flags/1x1/il-f5e643d0e10169a438119dc441ea3100b52a2ff569bbb3a3ad6d1131b47602d8.svg","flags/4x3/im.svg":"flags/4x3/im-bbae8aa9dd129f8446556afe4904194ad43377d882f9a705fcf1da2bdbfabccf.svg","flags/1x1/im.svg":"flags/1x1/im-767d72c2e72d732d65c9b016adad983778dfbbb2b5b52e71830f4e41297728d3.svg","flags/4x3/in.svg":"flags/4x3/in-519e33321b8b2ba70a0b7557d66c62d7efdc9723896c49f82528b107028ffe29.svg","flags/1x1/in.svg":"flags/1x1/in-27831f76dc6a218a529b6e5d0eafc4c19c999461327b7c013f59226c0601a361.svg","flags/4x3/io.svg":"flags/4x3/io-8d25a8e98f682199b413adfbcb6898c37058c9bae085e427fbab03d56e8c0de6.svg","flags/1x1/io.svg":"flags/1x1/io-627f3b0cef72fd91ff426d74a007dc32d74c9fe677cf2c8355cba84359e16fde.svg","flags/4x3/iq.svg":"flags/4x3/iq-96b24d1439184d0a4c35ca7cea65e5f20469a0e8c8438963aad016e59c399cc6.svg","flags/1x1/iq.svg":"flags/1x1/iq-af04db139f8c44cfe0c612e2c05e848ccfad88fbbfcb58e88cdb7c80db365669.svg","flags/4x3/ir.svg":"flags/4x3/ir-db2c230d355ade2b1ac235ec647bb1535e4703c639a44f9ce112473272ee1019.svg","flags/1x1/ir.svg":"flags/1x1/ir-c648cbf56fc8f324fda477ea816783c9df8a7d398f45f5f94acc1c16c8877b63.svg","flags/4x3/is.svg":"flags/4x3/is-29508693138977229758b0f322ba34e90dbcd7a8a74e8820729933d24051d9a7.svg","flags/1x1/is.svg":"flags/1x1/is-b1c5db1d4b4853b8144f1d88ababbf14fc88752340457ba3e2c94ab5d54c9c01.svg","flags/4x3/it.svg":"flags/4x3/it-d2c168050fc509adac1163b097b0ed409217560735b27802ae9259587c146562.svg","flags/1x1/it.svg":"flags/1x1/it-592d34fb666430fa00f98d333623d5efa3c8e0e65ac4eee06bbc4c1de7ce4bea.svg","flags/4x3/je.svg":"flags/4x3/je-b363a4e3a21630f10791c2ebeb7f918320816ef87c155d4fd29ce37982f4df35.svg","flags/1x1/je.svg":"flags/1x1/je-6d43f74e30e099bc056da925ec34c0200708f0a6e90da34db1e59d54ce10cfd9.svg","flags/4x3/jm.svg":"flags/4x3/jm-3d133fbc2564f29e036855e8be224d1579fe66fe49e0f5a2ba0bdcf3cb272823.svg","flags/1x1/jm.svg":"flags/1x1/jm-1aea8ea5d8cbc717fa3ef331d8caa9a1421c88a7bd076e40f8276a5b6f8d0467.svg","flags/4x3/jo.svg":"flags/4x3/jo-eee432339f8ea6750987e1121187eb4b53ec537dd7ccb240c018de63f7a92db6.svg","flags/1x1/jo.svg":"flags/1x1/jo-7969b2083c535c85b7e714b755459a6606940e0b5ddb1b71e24daf0a180d14aa.svg","flags/4x3/jp.svg":"flags/4x3/jp-2eadcfc67ba8cd50c1da86e08e6778e0102c3072865dab8c312cc88006da0abe.svg","flags/1x1/jp.svg":"flags/1x1/jp-551281a75e6c6fd64eb65b39f56102b52c182f6c38ee045c9422f6592f0f65c5.svg","flags/4x3/ke.svg":"flags/4x3/ke-45790bc3ec1ed8ed0124777a7c9e09163353b5af4ff70ae6604a61b53712df4b.svg","flags/1x1/ke.svg":"flags/1x1/ke-2cca24ecf024b801543c0572efc9969ffdaf25cec313e2149c64961839bc301b.svg","flags/4x3/kg.svg":"flags/4x3/kg-3879f8931d74cc9c5927261f4095b2bb786f3d62c803b2a96ec550a23fae9f49.svg","flags/1x1/kg.svg":"flags/1x1/kg-74318932808f85b72df308358f2f2699ab0cb7ab4f7ad3c84c4be4024f0fb140.svg","flags/4x3/kh.svg":"flags/4x3/kh-7409fab4ba4e676db7b5c61020b97893b1735fe0b8e39e9b4f96108400be704e.svg","flags/1x1/kh.svg":"flags/1x1/kh-2603f6a61b400cb12b87397eeba60ae1707511467d5e0c430c05809bf89e5042.svg","flags/4x3/ki.svg":"flags/4x3/ki-617c1b52f3d9aee99d094edbd1775cae77aade266a1318eb4671b2bb1620ded5.svg","flags/1x1/ki.svg":"flags/1x1/ki-74615266b440a24f09abdeae3853d7e1111f0eba77df71ccd176d83fbd1fd9ad.svg","flags/4x3/km.svg":"flags/4x3/km-0c9bcbf7e677a541fc8dff6f848c9d92b6982ac2934ae75faa56a2b846bb5698.svg","flags/1x1/km.svg":"flags/1x1/km-81b0fbe53d09194270e8ed4cbe9be8eb1ae727e77957005369ad8bdc651dd1c8.svg","flags/4x3/kn.svg":"flags/4x3/kn-0442f55f81cd3b1057c609301f0af2b503d89a895a954af8c970df997e92bd03.svg","flags/1x1/kn.svg":"flags/1x1/kn-897c34ef54bee486f0d24d2191e2400f49a19d98efb19f8c3f1a27fb0b97131a.svg","flags/4x3/kp.svg":"flags/4x3/kp-a54f7201982b29530381b71a5e2a11c1153860f22c04c0a2d91bb0d20fedf78e.svg","flags/1x1/kp.svg":"flags/1x1/kp-758eccd89ef3707808fb68d931f086e49333904f4cc67c88468f3c96fb43b7b6.svg","flags/4x3/kr.svg":"flags/4x3/kr-c0b9b2c854133410c0ad9cadbc10b1e0bacf0305519883126d55bfa3214f9d06.svg","flags/1x1/kr.svg":"flags/1x1/kr-7c0457ac5d284b28b742ea2e061a1aa2a35f63171e464b3a7eb501a48756ce7b.svg","flags/4x3/kw.svg":"flags/4x3/kw-81c3d5d25c7b840ef14783b51d18c6b7cfc61f94932c664bbc9e5879fef020eb.svg","flags/1x1/kw.svg":"flags/1x1/kw-66670211a67a4e61d4652a19d821dc5195f01a28a3a9b28b7e4c6048cd86b19c.svg","flags/4x3/ky.svg":"flags/4x3/ky-0f4ab66d951ae33f800d680aaa5704804ba9c8844d4d80e5bee2e3fa0e100af3.svg","flags/1x1/ky.svg":"flags/1x1/ky-fb5f57bb58b74d23377bad9954a75ab88d1587af68546ce137a6ae7a88a7701e.svg","flags/4x3/kz.svg":"flags/4x3/kz-39edc952c598c71be2c9510944a8faf708d8e4b367b5ad78a688d1cd37f522eb.svg","flags/1x1/kz.svg":"flags/1x1/kz-924c04dc19267b049f35213af0e2b0c540933c06389433cb4aacd8dda33b286c.svg","flags/4x3/la.svg":"flags/4x3/la-e3a36a3bd0003442c3a21d3a192995fa6fb3b3c08a2daadc8f38f62736b5b1e3.svg","flags/1x1/la.svg":"flags/1x1/la-c9d4223a897e5e2938a4892bbc593d3828093b9439fc3f6de21520e4013ddbc5.svg","flags/4x3/lb.svg":"flags/4x3/lb-508c2a5a9b50d604895675b9f1c1e5914c394a7f468f5d823eb0476acaacbc7f.svg","flags/1x1/lb.svg":"flags/1x1/lb-10c9ba8ea7aa3189f16a7273c837982a887fc4ddfc9d514d8f5a660d72356f7f.svg","flags/4x3/lc.svg":"flags/4x3/lc-04ccd92fb1578654181febaea30ebd6b6620f56115730b2a2d673c712307bf5c.svg","flags/1x1/lc.svg":"flags/1x1/lc-4ffb53afb8bd296d526ac26fd8007afc74855e92833a893d3c934a5d12eb152a.svg","flags/4x3/li.svg":"flags/4x3/li-3058dc4aeaf2bd2da8cb910892137d732b56e5e9d342e565a4059de1a8e40e40.svg","flags/1x1/li.svg":"flags/1x1/li-0780a4f218b9ee466e33d14274b8a01575a86b3787b347e3269a3b301c220d5f.svg","flags/4x3/lk.svg":"flags/4x3/lk-a13d6ab1da51be3b1d2c5b80f4d866c923d42b017e197469e1bfc0dd021c4bfe.svg","flags/1x1/lk.svg":"flags/1x1/lk-99759363f0df6b868fd1398bf05666c680bafe1eeec8b859b64d450930213e02.svg","flags/4x3/lr.svg":"flags/4x3/lr-b06a1d70899826b305ce387fa31e1fa0bdb3bcb17c1392f15f995ce1dba723cf.svg","flags/1x1/lr.svg":"flags/1x1/lr-820a9d023e5b1e68ed640bfaba8f84ad4379c42a6c5c982cb76b0390dd2bcbdd.svg","flags/4x3/ls.svg":"flags/4x3/ls-d02bcefe7c298c153665f35c33eedb08e2e2b345350e4bf1714a87abf86b2d0e.svg","flags/1x1/ls.svg":"flags/1x1/ls-85c731c313a46db12bdb27fe229e9f7d052b447c624663b73ffa1dbab97f03fb.svg","flags/4x3/lt.svg":"flags/4x3/lt-c08eb18a15d2003cb544432b11c5081d3d5741370669b4df306d1c6bce14cb51.svg","flags/1x1/lt.svg":"flags/1x1/lt-c1bd7e3d289ac9b0df06d47237780eaf4d30f01281ed50a7df9a22bc3a2489c5.svg","flags/4x3/lu.svg":"flags/4x3/lu-99e7b6adb3a9e0f867b17eb3b1f0f33db92fd27cfd7b651f62453f359bace22f.svg","flags/1x1/lu.svg":"flags/1x1/lu-ab544445f16afa450549288ac86c2cc9a458a9d7747b3a89d5ecef7db9c83ce7.svg","flags/4x3/lv.svg":"flags/4x3/lv-f8844d50b89f0369f73d580d3676553e7e55dd8ab2460e592a29a530d9bed886.svg","flags/1x1/lv.svg":"flags/1x1/lv-baeced49dd4249e36a25b0f23a5c601a69e9dee3137627cd4450194b85a99dd4.svg","flags/4x3/ly.svg":"flags/4x3/ly-03209121483967f9d74849fb9261de23e9ff2e02c4e40b29f1cda0631b8a5fae.svg","flags/1x1/ly.svg":"flags/1x1/ly-1e6e070aaa4bfc97a5a446a39bf746ab3c4c81d9f62c975cab164e16de3a3ffe.svg","flags/4x3/ma.svg":"flags/4x3/ma-9a25cc7c2868fa45b251dd1b99a0be3b583df69732146142020fe9c6c0c95b63.svg","flags/1x1/ma.svg":"flags/1x1/ma-4f18b9c355b8b8bf0db69badb235a183dbd558deb6439bf03b4f18e56837a7f3.svg","flags/4x3/mc.svg":"flags/4x3/mc-b0c50599ea2a550680a6a867579930e0b47d3e05193a7294a26b7849a7ad35e2.svg","flags/1x1/mc.svg":"flags/1x1/mc-8f1fe6210338399d8791d91f39234b1a09acf2aa5e0387696048dc7068534a28.svg","flags/4x3/md.svg":"flags/4x3/md-8849eef7bdf916e962f7bb31af87c8d47aef33f9f4a2017b2ce55c4166e79643.svg","flags/1x1/md.svg":"flags/1x1/md-43f1bb4157545abe6e79215459efb548d913bbe7922078cd40cb722a4e19d9b4.svg","flags/4x3/me.svg":"flags/4x3/me-983d452d43cfb8d628bfc5c0cf4991c2ba3cf0e39e70aa5353cfd4e9ec3da62d.svg","flags/1x1/me.svg":"flags/1x1/me-104d6a96038ef06d3d8b89c9221996f3649b5b821139b11b2e07695b0f6fda2f.svg","flags/4x3/mf.svg":"flags/4x3/mf-31fb851bfcc2340d2fa43e86a099cc7becfc8e7f996a4d2ca56bd050e6537086.svg","flags/1x1/mf.svg":"flags/1x1/mf-fe20ce9bf911631d6e79edf21c8cff0716f2dc1ffded39515735444d9a66fa55.svg","flags/4x3/mg.svg":"flags/4x3/mg-5effe963e29f804a26f95dbbc9519add454a0fd9eb918ddfeb55e1e99a1a2701.svg","flags/1x1/mg.svg":"flags/1x1/mg-9e546cfb78810d9b25c814a84aadd6907880b8e0cdd2e4e30738b519e7c1ac91.svg","flags/4x3/mh.svg":"flags/4x3/mh-d8cfd123007dbb99aa700c335957926a6d5e877ab49680c79629a32716d7a782.svg","flags/1x1/mh.svg":"flags/1x1/mh-3fe03d4d063a4729fc8b68fd5e9d7d2eef6e65c4e82954c83f76b138cea2eb45.svg","flags/4x3/mk.svg":"flags/4x3/mk-6e8071d15f2ff125d30bf89d000dcb47db9545cf9b7ff04f1474650ec2f4d25c.svg","flags/1x1/mk.svg":"flags/1x1/mk-fdc9212f9f311cbface56b6587468a2e845111b697edc11b7edda9fcf100c1d5.svg","flags/4x3/ml.svg":"flags/4x3/ml-a730102e0c6f6362de9c10ef8da6cf7b123465d01a297e7a89808b01fa4771cd.svg","flags/1x1/ml.svg":"flags/1x1/ml-a661355da206b0cb7ac4c84b6cdf7e411fbca8fcb271ae999fa60d5c67578192.svg","flags/4x3/mm.svg":"flags/4x3/mm-6d0d207d662477110f2b863488088818d8400386358dcbc669a2d8c54d1bae16.svg","flags/1x1/mm.svg":"flags/1x1/mm-de7d46b6543343af61ba997045cb41a707bd0db1e7a5879971ca8fddcbdf9e99.svg","flags/4x3/mn.svg":"flags/4x3/mn-656eb51e88bfce82401e4080eb791ddf16d571cbba102cdd4316c5de4711ac65.svg","flags/1x1/mn.svg":"flags/1x1/mn-ad22cb2c195a7d8ca8e4174db011d5f58238ee25039b5b2da2649d8ca8b00123.svg","flags/4x3/mo.svg":"flags/4x3/mo-37a1088aa687af13951bc93886e3e51cb246eccfde1b56528f189327ea291792.svg","flags/1x1/mo.svg":"flags/1x1/mo-b463a1c37b69131d662e3fb2ae937583458824a09bcf68fc7ed2d7fd729138d1.svg","flags/4x3/mp.svg":"flags/4x3/mp-ecd12cadc358fdf293e856c0a3ffc09409123cabd3c7201225b2d21b59551e14.svg","flags/1x1/mp.svg":"flags/1x1/mp-d1f4ba10c1409e713253f1fbb107eeccbd4ec1a8f9036663f1ac1991aee53835.svg","flags/4x3/mq.svg":"flags/4x3/mq-b4e1b08a93c1364c79e6d61f95b16fca5b884da6e77835bc0e0adfff8ecc2d7f.svg","flags/1x1/mq.svg":"flags/1x1/mq-19cb6f7cb7354c3fd40e987c93a2d76329d34b2ed3873c3f25fe56802f251ea8.svg","flags/4x3/mr.svg":"flags/4x3/mr-9f64af3ed5c6d8d1f68b5cb09fd1aa9d28c3c95107e063f64a0ef95f0cb9429a.svg","flags/1x1/mr.svg":"flags/1x1/mr-0e79b7bcc669bb871d94021db2b78b162b9867c7eaf934d8f7a3025fd5903576.svg","flags/4x3/ms.svg":"flags/4x3/ms-32620dd70353777b2ee62951556976f398cd38ae359b5a8c97311a1dc61eb8bc.svg","flags/1x1/ms.svg":"flags/1x1/ms-4104d4f36cb5cf1c6de78e52e90bc3c5b8bfa262617b16a737673feb8c30a00c.svg","flags/4x3/mt.svg":"flags/4x3/mt-0c9819aa69b34b84c1ee43620922737122eb38f107be9864a0690ac66ef8aa64.svg","flags/1x1/mt.svg":"flags/1x1/mt-3c3fe71f2a2bf0d961fd145ad7e48ca1e9d3a05cce514354714ba4568503d106.svg","flags/4x3/mu.svg":"flags/4x3/mu-c78c23f1499756b9db762ae434ca354d1481447fa94c66bc10aca9443b399059.svg","flags/1x1/mu.svg":"flags/1x1/mu-91ebc79d0fa306127ea8b7a33f77d5b28f35c516ea91ff0468c7344dc838db69.svg","flags/4x3/mv.svg":"flags/4x3/mv-a17c947e17adae6aacef01a3e131c4150aa094911b53fbaead41783683e008eb.svg","flags/1x1/mv.svg":"flags/1x1/mv-d138e94d9d2ed093ef1425c1164493b780202f9a7f7937241a7b081b79ff8b01.svg","flags/4x3/mw.svg":"flags/4x3/mw-21f116afdf71df80e3c59084c6ba640814fa5389430328ff55c9403b5c239632.svg","flags/1x1/mw.svg":"flags/1x1/mw-5c2228d3f1cf1f9cf8cb158e813202981828c11e8caf117836fc57fa6bc1c788.svg","flags/4x3/mx.svg":"flags/4x3/mx-a235f9b16921590b7e78caa6f76339361356946eaf0046badd10732b4647c0b6.svg","flags/1x1/mx.svg":"flags/1x1/mx-cdab01ebcdccc020ca16e1355ef1fd18ca0043b501f399ca8edc48adfa8c7292.svg","flags/4x3/my.svg":"flags/4x3/my-0ed63574cf5f20c0663ab8cd1f700e150fb641fd0b93602ba013abbfaae5ee59.svg","flags/1x1/my.svg":"flags/1x1/my-5e8d31ef06ffc8af33a5616d760592ecd022c52afc8ba33c721f1e4989da0628.svg","flags/4x3/mz.svg":"flags/4x3/mz-752e2293917b1d2ece3f097104caeadf6a679054a779e9d3be8e49dc324bb88a.svg","flags/1x1/mz.svg":"flags/1x1/mz-300cba975ad43c962ceca0d266ded1fe3d21d6b4d701d657fb42b27268ea2964.svg","flags/4x3/na.svg":"flags/4x3/na-a0655a2e70751278e6a60d31e818f672864a6e68e8b3d3361b2fbb70fa9bfef8.svg","flags/1x1/na.svg":"flags/1x1/na-1ce089a189db5be15eb05df8155f9bd017b61fc1a497e5b3021ff2ca664e122d.svg","flags/4x3/nc.svg":"flags/4x3/nc-0c7171d91c44414ed69808611db588f1283ee7e34ea8a74a9a5101ba4b1cb305.svg","flags/1x1/nc.svg":"flags/1x1/nc-d3a1629f06dc3200af7669f2d895fce1908d2c1ca02d71e530bdfa6646a9516c.svg","flags/4x3/ne.svg":"flags/4x3/ne-2b61d30a6cb4554535538e3b753926853e8c629a494a347286b9731c803548e4.svg","flags/1x1/ne.svg":"flags/1x1/ne-9c5f798ccd7d3dd3771ae628b4a39dfb2a4578fefd2e006f3ce89c3e494d0cb1.svg","flags/4x3/nf.svg":"flags/4x3/nf-4e615baa83a8b4db3e39fe1d251ab913943d64e0cd320f251d619ab54e7512d3.svg","flags/1x1/nf.svg":"flags/1x1/nf-45403247c90050484813acf23c50f543779528e346317274373c3c24fd830103.svg","flags/4x3/ng.svg":"flags/4x3/ng-d52fd188be973f31dd34e5a0b3fed0de68fe736c8a41c6028d9c248c038c8641.svg","flags/1x1/ng.svg":"flags/1x1/ng-f22edcc5867554d69ecbe15add0fbbb1389631f3ced07a4f820065c7770c65f5.svg","flags/4x3/ni.svg":"flags/4x3/ni-2fbb883e46fbe3b2ecfed9dac004ceb546f25c77a84a5966eea224674aebc610.svg","flags/1x1/ni.svg":"flags/1x1/ni-214aed148b615c4846f842b47f99cf178ac62a96cf18c5dd6b23467184b56680.svg","flags/4x3/nl.svg":"flags/4x3/nl-4f0ecea529dd4c0099dd41a7801fa5ac44aa04cd872ca31e11efd58b5a813774.svg","flags/1x1/nl.svg":"flags/1x1/nl-9c8f60e638879d642487818975e58c61cd3102f0e68c360708243c076436ff68.svg","flags/4x3/no.svg":"flags/4x3/no-270f7ee9d1d2efa6abf16f693faba8586adae842d79d8aad9e3f37e96c27cbce.svg","flags/1x1/no.svg":"flags/1x1/no-7d377325e8c5ec4de0376e9f4c13463f183af637e6c443716f22020c7a313979.svg","flags/4x3/np.svg":"flags/4x3/np-69637ddb3a173c4522a71598278aa32462e1762e34dd99c9dc99a515433a6cf8.svg","flags/1x1/np.svg":"flags/1x1/np-44ead118cce3a1fcbb720cc8d6eab6ecb6b62292315f61ae5963a40262ee11d2.svg","flags/4x3/nr.svg":"flags/4x3/nr-0bd3c0ba7bbac4bd5985b838096eeebd67711d39065619ef092fa4bb55b22a6d.svg","flags/1x1/nr.svg":"flags/1x1/nr-63b9c44e5dd66a59895f52707dc24db5bd1eab6e535298d24e414c0f2dafcb3c.svg","flags/4x3/nu.svg":"flags/4x3/nu-259989e1eea0cbf6b41a33176a4c9c1eaa2e7ae6571ad80a324c6309bd5aa5fc.svg","flags/1x1/nu.svg":"flags/1x1/nu-1cb535708f64ed8b386a245e571e677e935009af92f2b214760a2832c1ee1b53.svg","flags/4x3/nz.svg":"flags/4x3/nz-90ceca2a683fbec395a91b77b0880cea99c3b2cbdb24caa5474925cbdcc3675e.svg","flags/1x1/nz.svg":"flags/1x1/nz-b0d78f165a72edd46599222a2ea5f6a91a8252975cb03e33c4ca08e389859aac.svg","flags/4x3/om.svg":"flags/4x3/om-aadcca7bc7ad318400097b84849dd64c4744306cd9b4f152fba34f2e84116965.svg","flags/1x1/om.svg":"flags/1x1/om-705e2bd2b2fc7d13c152aa06bfb9e6ee4ad8b299f8c06ca16adad0b18b2b18ed.svg","flags/4x3/pa.svg":"flags/4x3/pa-027e679bd65dcaa2c53145a14669c1e674a467a889ef702cbe2a260f7ca8ad38.svg","flags/1x1/pa.svg":"flags/1x1/pa-edeb4faeadaa286de7fdc667e25d38ad0cdbccaec5023182fed6a3c74e8b09eb.svg","flags/4x3/pe.svg":"flags/4x3/pe-7ec59842737c90d6ff543f1831fd69b51e1e7ee1b068c3ac6259cbf2c214d611.svg","flags/1x1/pe.svg":"flags/1x1/pe-97d1b8ed1d4ed5e5f0348a731ca4a3a4b9abc7d440447dc87a521f229f375ed3.svg","flags/4x3/pf.svg":"flags/4x3/pf-27955c73c5be4043c5b7ddf64c8f46d11c6648e3b1fc0efe028b8afea21a40e1.svg","flags/1x1/pf.svg":"flags/1x1/pf-83e3e1d36fba45e015c62f938e6d182029edc05ebfdc50bcb33860f36f96d73a.svg","flags/4x3/pg.svg":"flags/4x3/pg-c2fdd2551f9044c461eccfae2d7ba0a347a99143f6002b71a429942af0217897.svg","flags/1x1/pg.svg":"flags/1x1/pg-cf60257fa85f9270b1e9980e703435186110167f76c153bc460c10ee8b2d4b09.svg","flags/4x3/ph.svg":"flags/4x3/ph-bf3394850a6cec6a535420eabce263e7f8193413e4af1fb317c76da025388c1b.svg","flags/1x1/ph.svg":"flags/1x1/ph-006c3218effe4269252cb9638de82ea339eb2894951705c630533ceffa842169.svg","flags/4x3/pk.svg":"flags/4x3/pk-b64f6a32e5bb598f57cfe49c4899c2021f2d153653f3d92101e6e11b2158e500.svg","flags/1x1/pk.svg":"flags/1x1/pk-d2d58def913c9081c5eeeda5f0b6895068ec13c955694e359531e23422145e60.svg","flags/4x3/pl.svg":"flags/4x3/pl-f55a710991a94c2e6c2f9f1a7a4a36ebb84b24b7c9d9df4e1ffe86d61321fa6f.svg","flags/1x1/pl.svg":"flags/1x1/pl-fafb539259385f2b99df910cff085710a9b4d9706b74e4e0f8a6ef627615c4e7.svg","flags/4x3/pm.svg":"flags/4x3/pm-8f6338d2ae3e0e42adc9754720ca21ad4979095cf6d7467a8db5a5a1c3e0b2a5.svg","flags/1x1/pm.svg":"flags/1x1/pm-63029c6198dc42c404ec39807a99528b1d198eeeea6f9a1e309548242480140b.svg","flags/4x3/pn.svg":"flags/4x3/pn-4006c11ca83011c0dd60a13ac30b27da0578b9f1368bd8c6de5aab423f6662d8.svg","flags/1x1/pn.svg":"flags/1x1/pn-6c433f7f9cb79c6d5ed7bbeade8a495e3b26ca2604f4fd3995096109684ac5dd.svg","flags/4x3/pr.svg":"flags/4x3/pr-6287e1515fa80e2d05133ed93f14ca03a1be6909a9ef6c736fd60f9c9fe73132.svg","flags/1x1/pr.svg":"flags/1x1/pr-526985b3a6d2d6de577ed0ed92d0b49ce854667e3ff630304813fd5af15527cd.svg","flags/4x3/ps.svg":"flags/4x3/ps-31f50e1fcb44b9aa6e9ce4473c3085f744e70ea0fa1fd8d85787f4e7b0c4a69b.svg","flags/1x1/ps.svg":"flags/1x1/ps-c43918bc71bef71b24dd46e8cacc53e0df53e02dcce6199d06d11a4637f08a04.svg","flags/4x3/pt.svg":"flags/4x3/pt-9aab20caed714ee47fc408f017037aea94a649b3ba4d87e2da37870ee31e4f92.svg","flags/1x1/pt.svg":"flags/1x1/pt-a309869e5018c9690a65ebdf8a2d69d61f82772068a7920f9680ed0581ae5966.svg","flags/4x3/pw.svg":"flags/4x3/pw-9262037d114d0f61571c74f9a5455809709b43e6565443ae2667981eecb5f12a.svg","flags/1x1/pw.svg":"flags/1x1/pw-a6f42019653ae26d43c6e9b7bef83fc98cff8ec5e8d0c50ad7cb0a17d5e565a6.svg","flags/4x3/py.svg":"flags/4x3/py-5bc9e9f0dee94ae3d9bd80ae6fb1aac297dc81a1c592d0a73bc3383bce73af74.svg","flags/1x1/py.svg":"flags/1x1/py-182eff300f4507fd9399fb6310d1cd3b45adadd7924ad2814003c7111ec5c0de.svg","flags/4x3/qa.svg":"flags/4x3/qa-32c93970f8e521850eddfaf2a89dfff987f0ae3b0b73a253c301b61cf547cf9e.svg","flags/1x1/qa.svg":"flags/1x1/qa-182e4d8ace2607d0c02d3c29d65eb084af71092357006bc41cd601981ec3b81c.svg","flags/4x3/re.svg":"flags/4x3/re-8b2ea1f2727c266a2b80cb12a9b7195f6b656f521552b67893b6761a07f9bc92.svg","flags/1x1/re.svg":"flags/1x1/re-07eb7d855022bc678b47b0ce5fd05da5044d6dde86ad3697d4ae55c68ff447c1.svg","flags/4x3/ro.svg":"flags/4x3/ro-4ab797571e1d9eb326486f75654a4590fd33f20444f85b77ba0997eb6138c21f.svg","flags/1x1/ro.svg":"flags/1x1/ro-ddfcbaec04d11bf7f95abebd1d3a42b2862b1af8fca9b02764a6ed0e409a1d75.svg","flags/4x3/rs.svg":"flags/4x3/rs-dd8a52473ea40e23b393b5f4a30d1edd91865aab167f0c1835ae84b15dcce585.svg","flags/1x1/rs.svg":"flags/1x1/rs-42bf40209c92e4e7169daf29fbcb7253b2804eee7a463051529327f38851f865.svg","flags/4x3/ru.svg":"flags/4x3/ru-13f4525a4caad6e31afa523d2bc4a0c1e6377c0bef1bfd872682130d3f199d1d.svg","flags/1x1/ru.svg":"flags/1x1/ru-b9792a963faf667447e0456dba5be80a3b37c197a4284d1539a3433721d9e2fe.svg","flags/4x3/rw.svg":"flags/4x3/rw-bc38bcd6e19d2941839b253af6e863b13338cde1174874f9674471026c15e422.svg","flags/1x1/rw.svg":"flags/1x1/rw-456698123775b83d2b0fa1b9fe073f9ccdba0b6bf39a703b8979dcce158eb32c.svg","flags/4x3/sa.svg":"flags/4x3/sa-2b2fd6abb48415d5407c576c24a24fbd80af5877ef06cf2d026452f6c67f5f4d.svg","flags/1x1/sa.svg":"flags/1x1/sa-d9ebc73e7957f86604164dd5054fb32601ad14d7dfd4bfe73da5bdd10bb2f8ae.svg","flags/4x3/sb.svg":"flags/4x3/sb-37761927039d0a37ba0995c59fd31bbe36c8a0ca161e5b72b8131e3659f8dddf.svg","flags/1x1/sb.svg":"flags/1x1/sb-bedbf8464cd82f391bfe6178c63055b650d0cf3aee60c37fa79a586f95783b79.svg","flags/4x3/sc.svg":"flags/4x3/sc-f6a2f8f37be93f07600b491b52cb58d80d74b92d8ace0af313f4ce081b0d1345.svg","flags/1x1/sc.svg":"flags/1x1/sc-5dcd01b98c34460c9624280fb5047811fbae7d976620cd0a70ad4263a9085b60.svg","flags/4x3/sd.svg":"flags/4x3/sd-cc9cf97e8a37622b9e1bad28811d46c4471595afa448dc055e0e3aae7687fe4b.svg","flags/1x1/sd.svg":"flags/1x1/sd-1f5d13f9780085acbaad13d959b1918c796ba7b0450954b15d145e87cebe045c.svg","flags/4x3/se.svg":"flags/4x3/se-84b06bcd5bd90ea8dd6d1c3c8d2799a843c47b0256ce098aef75414964618286.svg","flags/1x1/se.svg":"flags/1x1/se-39f128686652cf914f8601110fcc9ac879bca204407013b93aff4ca4fb2ed9bc.svg","flags/4x3/sg.svg":"flags/4x3/sg-a82acd90077e76318ddb0be96999d9695b9a9f4627e8a0f341d3987a62747dcc.svg","flags/1x1/sg.svg":"flags/1x1/sg-c22e093634568aae249bf35f9ddcaa6796b5f27d76c39ff5336abf7f1b8a47d4.svg","flags/4x3/sh.svg":"flags/4x3/sh-57470d9a75955f0fac605a94e853bab524c7461a4c025e809fb09db762ebe46f.svg","flags/1x1/sh.svg":"flags/1x1/sh-8d06a0fff61e51eb65357d138e00736545835b8649aa2694152f4cdc9f941c16.svg","flags/4x3/si.svg":"flags/4x3/si-289d6417f154323e7922df09ffc0f49ded31548c7ee8020c39cb85724ffbcea8.svg","flags/1x1/si.svg":"flags/1x1/si-ca40a5f4f38119d6f52ffd3ddb36af95951a2aa1fadcd897f5bc1641bb2e0051.svg","flags/4x3/sj.svg":"flags/4x3/sj-67d4cdd268d0c0cd93fc561b506cb5646cb508385c93ed350d11f94aa1c83833.svg","flags/1x1/sj.svg":"flags/1x1/sj-f7c489607033138039612d6abe7f4b0b4b6dada5cac75d78204f404a0d292b1c.svg","flags/4x3/sk.svg":"flags/4x3/sk-a0bdbb7f5d6998ffe9fcbc80bbdf0e6cff3629740d2ce1b8d61025e0a8b322b5.svg","flags/1x1/sk.svg":"flags/1x1/sk-a82a813b2d81af9be1aa775f22b2c2457d11e870e072d7e23957a11d0878faed.svg","flags/4x3/sl.svg":"flags/4x3/sl-be265bed24cfe0b25778201f251e52e4e721e3d319795875913805d1aea84ebb.svg","flags/1x1/sl.svg":"flags/1x1/sl-cb8bccbaa21957f006ed4ae0144da81c999e93bd8014023b16b500fdcdc397d3.svg","flags/4x3/sm.svg":"flags/4x3/sm-d7818df3f8f2d5dbed27dc5a0a80b1e41cdcd6130eeff221da58f0321e925f27.svg","flags/1x1/sm.svg":"flags/1x1/sm-6f87660dcac925bbdb036c79a0e20d3b208215d327be4c4764ae1069d6464efd.svg","flags/4x3/sn.svg":"flags/4x3/sn-b131b17a374bcfbd00d442d282fa52f0e4e0e448cda1cdfaac25a95ff56443c0.svg","flags/1x1/sn.svg":"flags/1x1/sn-d180d3ce9846966dee6a3d9433ede7d24801dc4311636aabd470ec5b8765d772.svg","flags/4x3/so.svg":"flags/4x3/so-3b5b77b371299478144a94b60c99524fb6b99bfedb3dcc976ab70185e07f399e.svg","flags/1x1/so.svg":"flags/1x1/so-50aa941f2d2954285ef9e5ac260cdd264a73cf2e4b0c627677f04141fff2afd3.svg","flags/4x3/sr.svg":"flags/4x3/sr-94d0f0aefcbdea8d7ba35648eda5037e99bf4126723ce36416582ea43b08d3e2.svg","flags/1x1/sr.svg":"flags/1x1/sr-3944d683068d437471725d22fd71ccbe6a63ae307ff9775690417d3bf262cf82.svg","flags/4x3/ss.svg":"flags/4x3/ss-f391e5002cbce83f97f7d1a11c284fa2e36a7d6dc734757d733656801ab17d0a.svg","flags/1x1/ss.svg":"flags/1x1/ss-853bd9f713d2f6b1fe540a82e8bf4754912da21575b3fe756b8741767f318f7a.svg","flags/4x3/st.svg":"flags/4x3/st-b52bb48a2c0800f5cb4b07bdd93c3908f77bcb6800be883ebf943bbd3d99d42c.svg","flags/1x1/st.svg":"flags/1x1/st-d8b5b1c8b9fe947086a4d277d2ac5d6b9cff188dfd37bda66c8bf5e02c5facc8.svg","flags/4x3/sv.svg":"flags/4x3/sv-6d02d63c7f04c9388e98f892cc43d8daa2110fc84242758d5627fcd247bfd09b.svg","flags/1x1/sv.svg":"flags/1x1/sv-fb4c8d7eb98396a93c5b9c37195d70e809e0d71d8b8f9316e842121f95bb82ea.svg","flags/4x3/sx.svg":"flags/4x3/sx-fb6a7b1cbc5b29eeeb39a5aec64ef7aad432c37bbe848d29955a3786b9763224.svg","flags/1x1/sx.svg":"flags/1x1/sx-a37b124212f8530b921aef7657cfb35c2895a731c7a06f333faee4c93f32806a.svg","flags/4x3/sy.svg":"flags/4x3/sy-e35f8d88c864ed4f38edb2f9f96d5bd69f6df078b50515b8c5467bf6b1689f50.svg","flags/1x1/sy.svg":"flags/1x1/sy-5d537bd5b42b58f6e8a7e33fbe5942a16126abb639edf9cb58b88938c57ebaa9.svg","flags/4x3/sz.svg":"flags/4x3/sz-c65ae592e943217787848364bdb4c57335869f4626ce705adabdc2620669c1c6.svg","flags/1x1/sz.svg":"flags/1x1/sz-dd3d1c65bdf09317553f205e588e3dc7336acec1cb9315bfbe0f5bd8ca5bba3f.svg","flags/4x3/tc.svg":"flags/4x3/tc-594b6cc87040836c6d6777afb5833d565d3e5e75f404350a51443ec4588a1ccb.svg","flags/1x1/tc.svg":"flags/1x1/tc-34a37006252eea340488220585c31d047b57e3e7934c77180d930972aaceadc3.svg","flags/4x3/td.svg":"flags/4x3/td-b67a1978e3badb895ff640c80bb6c0e33eac354220c08cf3fc93d62bf5d685a3.svg","flags/1x1/td.svg":"flags/1x1/td-556b3a7991c17010cb7e1ff23c4edcc2dcdb8c406a128d407fd165ea8a19d311.svg","flags/4x3/tf.svg":"flags/4x3/tf-35cd83351521f3022a43e01f0c40f34663a66ac1e92045979f31d3fd65c16d02.svg","flags/1x1/tf.svg":"flags/1x1/tf-485e71f61ff577735dbc4ba1025515c22a83c48ee7f3a2ed49804766c35f6ea5.svg","flags/4x3/tg.svg":"flags/4x3/tg-24b25f4c2213fe35e5f5586d7ab23abf0c25ad2049708cd52ba72e1ec7b754ff.svg","flags/1x1/tg.svg":"flags/1x1/tg-05f3d98392a5ec3e4aecf8f629d3d03f05ac55abb7d9d84187d599acfe271374.svg","flags/4x3/th.svg":"flags/4x3/th-cc936bacd84dddd15454ef06bc64e357f83854af34692fc37363272d61f637d4.svg","flags/1x1/th.svg":"flags/1x1/th-de82cbd770db2be53a8e3d59d86e2b748a5d3f96eb8584f7b9364cefbd06a172.svg","flags/4x3/tj.svg":"flags/4x3/tj-b90bf3e2dd63265d55b67962b160df65f021c42b6ea304e2943c10b9e2a8749d.svg","flags/1x1/tj.svg":"flags/1x1/tj-5f6571e74b1f8720f9ecc2d3aa2098ca45d2e7ad6602b2a57c206384719b9f36.svg","flags/4x3/tk.svg":"flags/4x3/tk-602520b29b909c96baea17a38eb654d6c6fbc7088f46a0cb8d8fe34ff92e3cb8.svg","flags/1x1/tk.svg":"flags/1x1/tk-fe1dc8aaa0643a45a74ecec8aec09f0fe2207d104bb3c28c0b84405f1275aeba.svg","flags/4x3/tl.svg":"flags/4x3/tl-ebdb862aa5ae5de1a72242571deaa70bfb222f488a93b70e304f2075b474d54b.svg","flags/1x1/tl.svg":"flags/1x1/tl-485f02183bdb192ba3ce6e5f076e184112739f883ae0a8fde33c454377b848d6.svg","flags/4x3/tm.svg":"flags/4x3/tm-5ddb4128bf0becd7c60413d5418027f5f01ca4bc72561d54b94febfee7a5a24b.svg","flags/1x1/tm.svg":"flags/1x1/tm-3521ad569a4095aa8d4166d5d9094fccfdbb3ea411207ad685b6dd5814ef3392.svg","flags/4x3/tn.svg":"flags/4x3/tn-ca27eb50d88b11d20b5b09e2bbecb7753267222489920c526608e5d2acd22d79.svg","flags/1x1/tn.svg":"flags/1x1/tn-222c6cd4742c558f48ebcacb47ea334057642fffa3456a1c75e0fad9e728d09b.svg","flags/4x3/to.svg":"flags/4x3/to-c9c509fc24f591fbe52bbf732c44291384c787796e1fc9c703a973587c3f8ad1.svg","flags/1x1/to.svg":"flags/1x1/to-cf26dfb44b56b915b2f11896355cb778b938ed54423311d69d7cda9626887dda.svg","flags/4x3/tr.svg":"flags/4x3/tr-c40f697070cf8d8358785b9203d1c8f438976e3cd644a87d9ee16fa9960deaa4.svg","flags/1x1/tr.svg":"flags/1x1/tr-627dcf91a1e5153c045e33a3459b5d56002530fddd3fc53927f4d0fb7ea004a5.svg","flags/4x3/tt.svg":"flags/4x3/tt-04786ffedbde2c96a30ad1cbf4db000848f14bd700324651fc88364e5f3c2fd0.svg","flags/1x1/tt.svg":"flags/1x1/tt-6a3c73bfa7782366d95e673d847ef8f84c0475b364d359def1efd264297bac30.svg","flags/4x3/tv.svg":"flags/4x3/tv-20b56e7c0a2fbaa2a0b7b1bd87afc6368440f175fb3a0589de5e34e99d163fd7.svg","flags/1x1/tv.svg":"flags/1x1/tv-8bce1d7bde2e20dcc473ed3a33c66e4bedcf1acf2d2fff6d54353a480b8cafbc.svg","flags/4x3/tw.svg":"flags/4x3/tw-36070ac0a15ab1f4811478da62e7678756a9aa266b141ed0549aba1c0e04333a.svg","flags/1x1/tw.svg":"flags/1x1/tw-fd7a0db2f3808842ca99176f097356fe9e6f3c120d6aa9e8c4a9c2dd4c3943ba.svg","flags/4x3/tz.svg":"flags/4x3/tz-51ad7d69f059075df61b9226468af0d78642af4ad34a7540f64c5bea82e803d7.svg","flags/1x1/tz.svg":"flags/1x1/tz-0703f29a7ae02a9a1753cb1726dd2934d75ed3a12e8d63faa9fa866e1fe61440.svg","flags/4x3/ua.svg":"flags/4x3/ua-7f7db03c3b492aaacd11b0abac70d543a7c0ec5265a36d529bbb80a7c432d81a.svg","flags/1x1/ua.svg":"flags/1x1/ua-25192fa80f120edb1dd1c4757fd7b79ef38f5e1729238f4135003e6a1501bf28.svg","flags/4x3/ug.svg":"flags/4x3/ug-7635df53eafdf411be0809df835bfbcffd61badd6c4df3db0909c8b3188015a0.svg","flags/1x1/ug.svg":"flags/1x1/ug-537f34f64e723fbe7cb7902ea0e61303f1ada79214197efc39ebe2c52ce24186.svg","flags/4x3/um.svg":"flags/4x3/um-a0ae80e34bbf94677dd6052ea87cc0090aba747dab5440e5ca6e231f7f07c96d.svg","flags/1x1/um.svg":"flags/1x1/um-3f1bc09babe7fdcf32518bb49d1aac3a66d0204f955eacca291c58d4f4ef895a.svg","flags/4x3/us.svg":"flags/4x3/us-aefd8f7e57d11f7b0416d01d9c665ab3848b10af849f35a4d772d58d24d83329.svg","flags/1x1/us.svg":"flags/1x1/us-87af45be9346e8c820312976abe332ee11f8931e29fa361328d28660a711b1e2.svg","flags/4x3/uy.svg":"flags/4x3/uy-9f636c8283abf56cc930746fd427c1d1644dcf8736c537629df13f760da96ebc.svg","flags/1x1/uy.svg":"flags/1x1/uy-e216b762a93ec55bf9b4ae3d35b7febe0b192a12246fd66c45139ce77fb2095e.svg","flags/4x3/uz.svg":"flags/4x3/uz-697d596705372323beddccb3626d1ce405b36249315c6b006ff1529e24909ceb.svg","flags/1x1/uz.svg":"flags/1x1/uz-aa34cbe4f6f0e4b5d890975578d28cc9b1e88ebd503d3bdca693748eb29b3353.svg","flags/4x3/va.svg":"flags/4x3/va-d24d3c5bee108c396997c3d5b2bd2273433752d8c222eb531650e51551a4afd0.svg","flags/1x1/va.svg":"flags/1x1/va-01160c1bffda12f0b94554ba0c50162a88da807943617334bd4c57a030985e95.svg","flags/4x3/vc.svg":"flags/4x3/vc-ddf979bee2889414e5a05ac55f39a9c93f34e0aff0d35f007605049a2d8b5afb.svg","flags/1x1/vc.svg":"flags/1x1/vc-ac776e16dec19ff2e2d9238f541dae5d977282b451a83ab3d4122efed2392be9.svg","flags/4x3/ve.svg":"flags/4x3/ve-e23abd006cc75a8c4f9ec1cb122b46f9b52e26c5606532d2c868277d4ccd523b.svg","flags/1x1/ve.svg":"flags/1x1/ve-1480713f28719e0a83da2c5f1333407dbfa5bcc0de8c9ba718fcf47273ee95ef.svg","flags/4x3/vg.svg":"flags/4x3/vg-7f8f24a4d6995e4dd39e3d9098dad5e14649821fa12ffc200edf0a586285ee15.svg","flags/1x1/vg.svg":"flags/1x1/vg-b464b6a78e46c29df9e4bdadc2646208f11c59168706456075f970552a24efa8.svg","flags/4x3/vi.svg":"flags/4x3/vi-58311325a293b046044976d899f288ce0fbe9bfd705a23947a9b38d7991983d7.svg","flags/1x1/vi.svg":"flags/1x1/vi-1c132d2cff66cdbdb7b6acf504bb0cd9d7579595d80c3fa6604ff24ca7a0184d.svg","flags/4x3/vn.svg":"flags/4x3/vn-a918d3c9cdc368b1d2ff9614d58cbcd1d43b725889b0ba18f5d4e693071e389a.svg","flags/1x1/vn.svg":"flags/1x1/vn-895e428ae3d98c99dbb02088cf8ef040bfb031df6f16c3c8fc3678505d869791.svg","flags/4x3/vu.svg":"flags/4x3/vu-2c286c778a7bed03cb603ab24b68dc91868f4f054cf4f851bdd17aa16731571c.svg","flags/1x1/vu.svg":"flags/1x1/vu-51ef23121e2641ebeeac50d31c4e52b7d00d3ab1bc9fc0ad95ea86fd3631975a.svg","flags/4x3/wf.svg":"flags/4x3/wf-f7e9ac5edac196ac32d7bafa04b5c0d924b89e9d7e4f3535a6a26c6c1523639c.svg","flags/1x1/wf.svg":"flags/1x1/wf-95a920a79aa32d92f8a362321aae4230e17025ac04d976593f4423d0c37c1aee.svg","flags/4x3/ws.svg":"flags/4x3/ws-efc6505a802a3fa2018bc102fc2e11db8c738464c619381b6edc32d0a89341a3.svg","flags/1x1/ws.svg":"flags/1x1/ws-e3afb81c037c814620027bf61ac5e266683cab7ba5796ecf10b64c110cfcb932.svg","flags/4x3/ye.svg":"flags/4x3/ye-fd88856e70d66b01b4f0f608936a61cf3b1d9dad40a2932fc5da4d01f72a447b.svg","flags/1x1/ye.svg":"flags/1x1/ye-0c0e32330871e6d83af54affb7dadbbe736f9799068508211fbae54db9bbdcc6.svg","flags/4x3/yt.svg":"flags/4x3/yt-2eef17b543424082d9f9b42a67e84c20b52e7f7eae8c4326d60711158da51d5b.svg","flags/1x1/yt.svg":"flags/1x1/yt-911da8075337fd8f75ecc8a338c294cb771c6b9a08576f96c9de1437888cd2a7.svg","flags/4x3/za.svg":"flags/4x3/za-45991a2aee307198510e56bf92523070aac4241cafe6c3ddb8f89b20a61d6371.svg","flags/1x1/za.svg":"flags/1x1/za-bc09a89b29311ea7e582ef60bf4e18aff7c29de6fbefe309463ca765723a0ce8.svg","flags/4x3/zm.svg":"flags/4x3/zm-07c0f30d86e66d0cad9d66cd9c9384d9cce1844f159d245deff6717101fe49c2.svg","flags/1x1/zm.svg":"flags/1x1/zm-fc5bce3834c71fe36617ea5f57f0bd1dcf3880a7c6aa515dcf92ae067f796241.svg","flags/4x3/zw.svg":"flags/4x3/zw-5217c74f14d9fdda244b69c5982bbabee052ac0f1cc0704926e8b1e621e50f9a.svg","flags/1x1/zw.svg":"flags/1x1/zw-a33b191c631709b9e1d85e06f5b15535fb544d4668c8bef865ede2a0b6a88ed9.svg","flags/4x3/es-ct.svg":"flags/4x3/es-ct-bcbb454a50c9a647efd43dcf041445f15e8dd70654bde530bf62401d4fb7738d.svg","flags/1x1/es-ct.svg":"flags/1x1/es-ct-7f13eb2b2f5c11dccd7043286bed7540d4dad4b1a8367b0aca1b8405a351b2ef.svg","flags/4x3/eu.svg":"flags/4x3/eu-5f129db64306353251b78f998d531d2f1019404cfa890ae63ed70dc316c7f240.svg","flags/1x1/eu.svg":"flags/1x1/eu-ec59ac8daf2a63ea8e299ad63a208445d68a96affe6a10a7328acb6799d44127.svg","flags/4x3/gb-eng.svg":"flags/4x3/gb-eng-1895f4e35ae299f5d869da2462ffcf98df4b08dcddc531c8f175e49720001a14.svg","flags/1x1/gb-eng.svg":"flags/1x1/gb-eng-d11afb87f40f35acda435a886ea044bd5e0b6f363ba0c7319f1d0181551fecf3.svg","flags/4x3/gb-nir.svg":"flags/4x3/gb-nir-b280f09c787f495c1074376cd67537b40216f672917e7d204bb12b8e7c72afaf.svg","flags/1x1/gb-nir.svg":"flags/1x1/gb-nir-2e516e72e0e8e244ef430e6608322f8c4fb276807ab033279b2a6570dd68fd41.svg","flags/4x3/gb-sct.svg":"flags/4x3/gb-sct-1b9e407802ae901cf8da740c382ec2b19821837d76271a73346e0c63c2244506.svg","flags/1x1/gb-sct.svg":"flags/1x1/gb-sct-d01e8a06a340e30ce52e8a3aba7ca6207afb96fdb238a815cc6cb92df8fa5df3.svg","flags/4x3/gb-wls.svg":"flags/4x3/gb-wls-5232b3e376a19866cddec8225cba242783b2a48063811957f1ce5a2c347c5bc9.svg","flags/1x1/gb-wls.svg":"flags/1x1/gb-wls-126615bc3597fda1ca4ee931ef24f6c2cf2547998c06db9c1ded69fe66c479e9.svg","flags/4x3/un.svg":"flags/4x3/un-31dece22ae18c3e01e86648ef3ef45f2f5b3d9d28a1e2bbbcdb1d87c37af55af.svg","flags/1x1/un.svg":"flags/1x1/un-455b5f3173ca9ac64f2135fac4ead7217d7fbe07551d0d2cc60216f83208f798.svg","leaflet/dist/images/layers.png":"leaflet/dist/images/layers-1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6.png","leaflet/dist/images/layers-2x.png":"leaflet/dist/images/layers-2x-066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf.png","leaflet/dist/images/marker-icon.png":"leaflet/dist/images/marker-icon-574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437.png","markers-soft.png":"markers-soft-e78784e4ed70aaffddd73c315fab590233cc4e7b72388d7dd47a14796fc7c739.png","markers-shadow.png":"markers-shadow-8703a2262710f5e3d29e65d2acdf90d6512e159e119d27b8234731d8a6208a20.png","markers-soft@2x.png":"markers-soft@2x-c1e77253a8bfbe30cec24885d7046f443b76ebb66f4c961f77083b03f4a5cbaf.png","markers-shadow@2x.png":"markers-shadow@2x-b21a536be27313fb504f69f5899ff0b1245b276571769ac08d6c32c35676e47a.png","tinymce/langs/fr_FR.js":"tinymce/langs/fr_FR-6aba16704f73dd83662a78ca3360f3d98b1f1ed80a67560313554446915611a5.js","markers-matte.png":"markers-matte-497826545a90e09a240504d14530eba45823b19fd44175e09e27c47cd822ddb9.png","markers-matte@2x.png":"markers-matte@2x-948fc8c4426f04f60964ed20394247f45b0b60e575d02398b9b6810e7a29a823.png","markers-plain.png":"markers-plain-cf233423aa44e75ac0031e77b8ba571cd3331010517e1197e63fb7b06856c1ff.png","leaflet/dist/images/marker-icon-2x.png":"leaflet/dist/images/marker-icon-2x-00179c4c1ee830d3a108412ae0d294f55776cfeb085c60129a39aa6fc4ae2528.png","leaflet/dist/images/marker-shadow.png":"leaflet/dist/images/marker-shadow-264f5c640339f042dd729062cfc04c17f8ea0f29882b538e3848ed8f10edb4da.png","jquery-ui/ui-bg_flat_0_aaaaaa_40x100.png":"jquery-ui/ui-bg_flat_0_aaaaaa_40x100-ae65a7ae22c4c23115948fdeb5c05c9137dbd13ca2d426b3c4c3c4183451e410.png","jquery-ui/ui-icons_444444_256x240.png":"jquery-ui/ui-icons_444444_256x240-31d988765b4e6f56553c29588c500381dc3e6f0aa2980c8212202e5644aefd5d.png","jquery-ui/ui-icons_555555_256x240.png":"jquery-ui/ui-icons_555555_256x240-32175261daee76c82bb0edf0eea16a56421866fbc31e94f3c1d570aa114502f5.png","jquery-ui/ui-icons_777620_256x240.png":"jquery-ui/ui-icons_777620_256x240-0b020fc6e696d88d296e7bb1f61f1eb2ad827848e2c7382a4c3e0999e702dd9b.png","jquery-ui/ui-icons_777777_256x240.png":"jquery-ui/ui-icons_777777_256x240-faf32007ae120c302213557626e660dd10e711c5dd4f1113d35f26dc05b78d2f.png","jquery-ui/ui-icons_cc0000_256x240.png":"jquery-ui/ui-icons_cc0000_256x240-40985a64b4d5dd213fba27fcd862a1bd1b337a97674f6ff0b9ec20abcee4bc69.png","jquery-ui/ui-icons_ffffff_256x240.png":"jquery-ui/ui-icons_ffffff_256x240-350df1b7131037de20e83c5c0f3a41a770d2ac48b5762ea772b3f4a8a7b9d47a.png","tinymce/preinit.js":"tinymce/preinit-84328a53e798df12f891eb49871773fd9f925439c8630e9e22423a82ef9e6f89.js","tinymce/rails.js":"tinymce/rails-bf7fd5c952f25481010758dde6a2681498074f9509230f601b317356a6a54fca.js","tinymce/tinymce.js":"tinymce/tinymce-56cf2f2424cb80d80288b9207d6d01dffdcf3b6849e1414c1f7df44b8c95db86.js","tinymce/jquery.tinymce.js":"tinymce/jquery.tinymce-05402ca7d9e16d0a48a6259f8c005507d800186c5187f8cab94e79803c657535.js","tinymce/langs/readme.md":"tinymce/langs/readme-5a8b6a04d57b5c88e3fb7f2a870b8e2d3a48ec03ce6474206c41df78c155b2de.md","tinymce/license.txt":"tinymce/license-47a9dcd2574891a5a465112fd9dfcebcc7e61844edec27fa936a64642008fe66.txt","tinymce/plugins/advlist/plugin.js":"tinymce/plugins/advlist/plugin-b7c8cf80403d2ccef198eece952f4426ca2dbc41bd3797796a75f984a9382ade.js","tinymce/plugins/anchor/plugin.js":"tinymce/plugins/anchor/plugin-0e1e67988d427784f73513db28a206eb47a3ef546aa87882a80975a16111a33a.js","tinymce/plugins/autolink/plugin.js":"tinymce/plugins/autolink/plugin-2e8a38a913070f4b3fb0252a5b5625057b8ee9f6fc529d65d3003328d112d5d8.js","tinymce/plugins/autoresize/plugin.js":"tinymce/plugins/autoresize/plugin-2adac0d857ae16f93c7ca4f92e36e76f4bbf885cb9a72755af78889627ed8738.js","tinymce/plugins/autosave/plugin.js":"tinymce/plugins/autosave/plugin-a6960dd7eb9a053b0ce876b2eb946f8bf8fc429de45466e73d17129213229674.js","tinymce/plugins/bbcode/plugin.js":"tinymce/plugins/bbcode/plugin-1a9fd62a2514ce8e15e8a3a99473674c1042c23adb359b35523931407910c7aa.js","tinymce/plugins/charmap/plugin.js":"tinymce/plugins/charmap/plugin-e68609a6c6f050af409dc34cba1eaf97b45dc4219500de60bb3ed63ea49279a0.js","tinymce/plugins/code/plugin.js":"tinymce/plugins/code/plugin-32c177297fd26a1ceaa79d4b0c10ff5c3b332141dce46b97931e3228daa9bf1a.js","tinymce/plugins/codesample/plugin.js":"tinymce/plugins/codesample/plugin-d495c33177247da2e3845e4d849182792be7b0347e8707dd133db053727f86e9.js","tinymce/plugins/colorpicker/plugin.js":"tinymce/plugins/colorpicker/plugin-3270f40522357ea68191288332b98cbbdafe950a758b5f1514ad8890ba68619f.js","tinymce/plugins/contextmenu/plugin.js":"tinymce/plugins/contextmenu/plugin-b528042e89738439d9d4b9d008a3a75284ef5233cd15aaa29c7e1ce6d48fb12e.js","tinymce/plugins/directionality/plugin.js":"tinymce/plugins/directionality/plugin-5004dc6b7d90139d4b1cf32d788845a48efc7055adb3aa25993219dd4df2fe5c.js","tinymce/plugins/emoticons/js/emojis.js":"tinymce/plugins/emoticons/js/emojis-c6f728975b5c86aca22f396025edefe6107b0dd4d95f5ef80daef569b545bce8.js","tinymce/plugins/emoticons/plugin.js":"tinymce/plugins/emoticons/plugin-f4db839825ea5c884c78a8c289494544ac0fd28a14506f0d3cbb7362a9e9db77.js","tinymce/plugins/fullpage/plugin.js":"tinymce/plugins/fullpage/plugin-7040866d45dd50402f2871efcfb289ec8ca80b8699f1461c721b0b20bca76051.js","tinymce/plugins/fullscreen/plugin.js":"tinymce/plugins/fullscreen/plugin-f548bdf0cbc2fd41c3c32938629a1b021e19680bac7869c274be5f3615eccfe7.js","tinymce/plugins/help/plugin.js":"tinymce/plugins/help/plugin-366b05965f3d6cfddaba02c6784e0f377497beda0f28cc8cd840510fd8b657f4.js","tinymce/plugins/hr/plugin.js":"tinymce/plugins/hr/plugin-0e5548067a2ab0ad967e296104249f6b5d24a16b80befcdd3888c17b1a0e5624.js","tinymce/plugins/image/plugin.js":"tinymce/plugins/image/plugin-53dce3c317e386c1989a5d82ec151d440f9ffc32a643dc9fba76ae2b036300c9.js","tinymce/plugins/imagetools/plugin.js":"tinymce/plugins/imagetools/plugin-49936c4208b2d6fbb340d11c56fa2a146d14c770e4cb39760a11099fea5c7aaa.js","tinymce/plugins/importcss/plugin.js":"tinymce/plugins/importcss/plugin-30cba659cc747bccf69602963b3c2b83e00c26e65f2b63e23eba5be5f8af5452.js","tinymce/plugins/insertdatetime/plugin.js":"tinymce/plugins/insertdatetime/plugin-8559e2bda84f040abc77afc6610c0b61567fe174dcf2079b5aff82513c5ebe96.js","tinymce/plugins/legacyoutput/plugin.js":"tinymce/plugins/legacyoutput/plugin-acfac6647afd7c0a7c720aea06b9a74a6580840858fe00327a311a6418d3dae3.js","tinymce/plugins/link/plugin.js":"tinymce/plugins/link/plugin-93a36e0f077d895707d9885a76c26e5b08e5acfab9f3d52cdd1ccc5d89404f1e.js","tinymce/plugins/lists/plugin.js":"tinymce/plugins/lists/plugin-354eba74c0107c7f347aaab0ac206e01b8e0503d00f28cc0cc55f6c04f901f9e.js","tinymce/plugins/media/plugin.js":"tinymce/plugins/media/plugin-ab1015dd22dff3d1edcc2d04b54f39b3f7ff7f7d783c0880b5edf6de58d78937.js","tinymce/plugins/nonbreaking/plugin.js":"tinymce/plugins/nonbreaking/plugin-6039d3b3f9c68a3b29a6bb476760fa62da1d941e38ef8cb91e61c4aaa9456f98.js","tinymce/plugins/noneditable/plugin.js":"tinymce/plugins/noneditable/plugin-3cb8e1ac660348b0453dca0e8549a9325dca0cf259adb96802f37e83fb8d17be.js","tinymce/plugins/pagebreak/plugin.js":"tinymce/plugins/pagebreak/plugin-9e005e9e9abb08da742141d002238561c30dcd15549168e17c690f2c7c7a9dd3.js","tinymce/plugins/paste/plugin.js":"tinymce/plugins/paste/plugin-437f540601d04f07cb4c2434fdf377be3ac9634b180a878c2f2987f3ad897afc.js","tinymce/plugins/preview/plugin.js":"tinymce/plugins/preview/plugin-36ce30c549b23aed9dd151603a23aafab512529d586067e34974877992c79eed.js","tinymce/plugins/print/plugin.js":"tinymce/plugins/print/plugin-4a91981252ff653a07dd12936abfb0b0c4191e33d85f5c5d5f7e8e73581b6a57.js","tinymce/plugins/quickbars/plugin.js":"tinymce/plugins/quickbars/plugin-54bba909c7a5b3f9086cec22e918e378945dfb855e4041a85c9e0fb00faaa510.js","tinymce/plugins/save/plugin.js":"tinymce/plugins/save/plugin-0fd05e2ed11aac190c5d2a0ac32aa675d0bea06b519301d89151aaaa7b124674.js","tinymce/plugins/searchreplace/plugin.js":"tinymce/plugins/searchreplace/plugin-4bb6490f6586b4c50a56757a69be8e6577544d5353881a02621e2200b54e8a18.js","tinymce/plugins/spellchecker/plugin.js":"tinymce/plugins/spellchecker/plugin-8fcd863cbf64e3cc62fe3fc1a4bfe417f8401b1d204d91d1c9da880c29a52162.js","tinymce/plugins/tabfocus/plugin.js":"tinymce/plugins/tabfocus/plugin-cbc31c55658d581cc1e0130e5bae26fb27f10e7f0c53879845d6295ffb27fefa.js","tinymce/plugins/table/plugin.js":"tinymce/plugins/table/plugin-b11c6cd37f6d5badf46a9d96e452118b81881beb07fe41d2c0a3f7b405902234.js","tinymce/plugins/template/plugin.js":"tinymce/plugins/template/plugin-62d74415b497183892c093351d57ee4fe36938be5b0a84360925501efede022a.js","tinymce/plugins/textcolor/plugin.js":"tinymce/plugins/textcolor/plugin-77c1248e72fe32cf181c36a070147484ee4560710d5f617a4670d65d11202207.js","tinymce/plugins/textpattern/plugin.js":"tinymce/plugins/textpattern/plugin-14c80d034b4d08368543a88cfdd7a71fe044d76a511e087752420957fe192e66.js","tinymce/plugins/toc/plugin.js":"tinymce/plugins/toc/plugin-e6c05b09e6066ce22300ca4942a530d621362f8a2d69d21d486bf5f57ce86c63.js","tinymce/plugins/visualblocks/plugin.js":"tinymce/plugins/visualblocks/plugin-dc48dde1907640cf2cc67ab99de28b69b7b7a04479c9a2d3284a21e190a2fc5b.js","tinymce/plugins/visualchars/plugin.js":"tinymce/plugins/visualchars/plugin-7a67008641a389395f71289303344cf2f9e699970d8ac27f8be769281c56a157.js","tinymce/plugins/wordcount/plugin.js":"tinymce/plugins/wordcount/plugin-adeca7c01633cf92382c63b9f99934fcc1f8f4034b84b8a653f800bc6deadf86.js","tinymce/skins/content/default/content.css":"tinymce/skins/content/default/content-59af8e2bdcb843082433e35a13e74452bb71675b4d09a1020fb82ec12f905178.css","tinymce/skins/content/default/content.min.css":"tinymce/skins/content/default/content.min-59af8e2bdcb843082433e35a13e74452bb71675b4d09a1020fb82ec12f905178.css","tinymce/skins/content/document/content.css":"tinymce/skins/content/document/content-1e26cccef0052522affb81bf2148310236b19cddf8132f0239d8c7566722e943.css","tinymce/skins/content/document/content.min.css":"tinymce/skins/content/document/content.min-1e26cccef0052522affb81bf2148310236b19cddf8132f0239d8c7566722e943.css","tinymce/skins/content/writer/content.css":"tinymce/skins/content/writer/content-eea5c153ee2a10ed0864d84fa1dffb95ea6def7e579978cd2dd3d8f0956c9656.css","tinymce/skins/content/writer/content.min.css":"tinymce/skins/content/writer/content.min-eea5c153ee2a10ed0864d84fa1dffb95ea6def7e579978cd2dd3d8f0956c9656.css","tinymce/skins/ui/oxide/content.css":"tinymce/skins/ui/oxide/content-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css","tinymce/skins/ui/oxide/content.inline.css":"tinymce/skins/ui/oxide/content.inline-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css","tinymce/skins/ui/oxide/content.inline.min.css":"tinymce/skins/ui/oxide/content.inline.min-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css","tinymce/skins/ui/oxide/content.min.css":"tinymce/skins/ui/oxide/content.min-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css","tinymce/skins/ui/oxide/content.mobile.css":"tinymce/skins/ui/oxide/content.mobile-230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346.css","tinymce/skins/ui/oxide/content.mobile.min.css":"tinymce/skins/ui/oxide/content.mobile.min-230c31f65356c7cb1799244a34f7a722c92a6d614e06e59d48db0ebccd7f2346.css","tinymce/skins/ui/oxide/fonts/tinymce-mobile.woff":"tinymce/skins/ui/oxide/fonts/tinymce-mobile-e64bf156a432d63f5b34b4567b513dc0d351b49161c7f608fb82574bfdd9d213.woff","tinymce/skins/ui/oxide/skin.css":"tinymce/skins/ui/oxide/skin-19f5d58bf005d2ff7a6d60bb3ddfa1772a55a8e556f723a3b21340bcf1003f48.css","tinymce/skins/ui/oxide/skin.min.css":"tinymce/skins/ui/oxide/skin.min-19f5d58bf005d2ff7a6d60bb3ddfa1772a55a8e556f723a3b21340bcf1003f48.css","tinymce/skins/ui/oxide/skin.mobile.css":"tinymce/skins/ui/oxide/skin.mobile-22703cb423be432b125a19fa94a29a8122b722be4f7c1b303102ce16ed839e22.css","tinymce/skins/ui/oxide/skin.mobile.min.css":"tinymce/skins/ui/oxide/skin.mobile.min-22703cb423be432b125a19fa94a29a8122b722be4f7c1b303102ce16ed839e22.css","tinymce/skins/ui/oxide-dark/content.css":"tinymce/skins/ui/oxide-dark/content-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css","tinymce/skins/ui/oxide-dark/content.inline.css":"tinymce/skins/ui/oxide-dark/content.inline-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css","tinymce/skins/ui/oxide-dark/content.inline.min.css":"tinymce/skins/ui/oxide-dark/content.inline.min-a319a4b8c2db27b1576e22d90ed927accee887c125403f9d42ce48155c4672f2.css","tinymce/skins/ui/oxide-dark/content.min.css":"tinymce/skins/ui/oxide-dark/content.min-158a7d9cc2c222a428f47a9704ec8cb91d8d8b0a5b18725257e6be8ede9a06f1.css","tinymce/skins/ui/oxide-dark/skin.css":"tinymce/skins/ui/oxide-dark/skin-5d441f8e6ccc16da2e10963a472fe7e4b593b36d470a913abff2c1592a37c768.css","tinymce/skins/ui/oxide-dark/skin.min.css":"tinymce/skins/ui/oxide-dark/skin.min-5d441f8e6ccc16da2e10963a472fe7e4b593b36d470a913abff2c1592a37c768.css","tinymce/themes/mobile/theme.js":"tinymce/themes/mobile/theme-3ebedb886fbcc21c3b79f250f398c0ff4a2d870dd7a737322aceef1f2479ccd2.js","tinymce/themes/silver/theme.js":"tinymce/themes/silver/theme-02294426af3edeff56daa3e5fd3ef013944295525b150b8114eaca9de6201af7.js"}}
\ No newline at end of file
diff --git a/public/assets/application-624ae947c8848388100e86fec4ac512e8e9403f71d7379bce24cf09d1d30d045.js b/public/assets/application-624ae947c8848388100e86fec4ac512e8e9403f71d7379bce24cf09d1d30d045.js
new file mode 100644
index 000000000..aec7d3899
--- /dev/null
+++ b/public/assets/application-624ae947c8848388100e86fec4ac512e8e9403f71d7379bce24cf09d1d30d045.js
@@ -0,0 +1,52781 @@
+/*
+ * File: iframeResizer.js
+ * Desc: Force iframes to size to content.
+ * Requires: iframeResizer.contentWindow.js to be loaded into the target frame.
+ * Doc: https://github.com/davidjbradshaw/iframe-resizer
+ * Author: David J. Bradshaw - dave@bradshaw.net
+ * Contributor: Jure Mav - jure.mav@gmail.com
+ * Contributor: Reed Dadoune - reed@dadoune.com
+ */
+
+// eslint-disable-next-line sonarjs/cognitive-complexity, no-shadow-restricted-names
+;(function(undefined) {
+  if (typeof window === 'undefined') return // don't run for server side render
+
+  var count = 0,
+    logEnabled = false,
+    hiddenCheckEnabled = false,
+    msgHeader = 'message',
+    msgHeaderLen = msgHeader.length,
+    msgId = '[iFrameSizer]', // Must match iframe msg ID
+    msgIdLen = msgId.length,
+    pagePosition = null,
+    requestAnimationFrame = window.requestAnimationFrame,
+    resetRequiredMethods = {
+      max: 1,
+      scroll: 1,
+      bodyScroll: 1,
+      documentElementScroll: 1
+    },
+    settings = {},
+    timer = null,
+    defaults = {
+      autoResize: true,
+      bodyBackground: null,
+      bodyMargin: null,
+      bodyMarginV1: 8,
+      bodyPadding: null,
+      checkOrigin: true,
+      inPageLinks: false,
+      enablePublicMethods: true,
+      heightCalculationMethod: 'bodyOffset',
+      id: 'iFrameResizer',
+      interval: 32,
+      log: false,
+      maxHeight: Infinity,
+      maxWidth: Infinity,
+      minHeight: 0,
+      minWidth: 0,
+      resizeFrom: 'parent',
+      scrolling: false,
+      sizeHeight: true,
+      sizeWidth: false,
+      warningTimeout: 5000,
+      tolerance: 0,
+      widthCalculationMethod: 'scroll',
+      onClosed: function() {},
+      onInit: function() {},
+      onMessage: function() {
+        warn('onMessage function not defined')
+      },
+      onResized: function() {},
+      onScroll: function() {
+        return true
+      }
+    }
+
+  function getMutationObserver() {
+    return (
+      window.MutationObserver ||
+      window.WebKitMutationObserver ||
+      window.MozMutationObserver
+    )
+  }
+
+  function addEventListener(el, evt, func) {
+    el.addEventListener(evt, func, false)
+  }
+
+  function removeEventListener(el, evt, func) {
+    el.removeEventListener(evt, func, false)
+  }
+
+  function setupRequestAnimationFrame() {
+    var vendors = ['moz', 'webkit', 'o', 'ms']
+    var x
+
+    // Remove vendor prefixing if prefixed and break early if not
+    for (x = 0; x < vendors.length && !requestAnimationFrame; x += 1) {
+      requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']
+    }
+
+    if (!requestAnimationFrame) {
+      log('setup', 'RequestAnimationFrame not supported')
+    }
+  }
+
+  function getMyID(iframeId) {
+    var retStr = 'Host page: ' + iframeId
+
+    if (window.top !== window.self) {
+      if (window.parentIFrame && window.parentIFrame.getId) {
+        retStr = window.parentIFrame.getId() + ': ' + iframeId
+      } else {
+        retStr = 'Nested host page: ' + iframeId
+      }
+    }
+
+    return retStr
+  }
+
+  function formatLogHeader(iframeId) {
+    return msgId + '[' + getMyID(iframeId) + ']'
+  }
+
+  function isLogEnabled(iframeId) {
+    return settings[iframeId] ? settings[iframeId].log : logEnabled
+  }
+
+  function log(iframeId, msg) {
+    output('log', iframeId, msg, isLogEnabled(iframeId))
+  }
+
+  function info(iframeId, msg) {
+    output('info', iframeId, msg, isLogEnabled(iframeId))
+  }
+
+  function warn(iframeId, msg) {
+    output('warn', iframeId, msg, true)
+  }
+
+  function output(type, iframeId, msg, enabled) {
+    if (true === enabled && 'object' === typeof window.console) {
+      // eslint-disable-next-line no-console
+      console[type](formatLogHeader(iframeId), msg)
+    }
+  }
+
+  function iFrameListener(event) {
+    function resizeIFrame() {
+      function resize() {
+        setSize(messageData)
+        setPagePosition(iframeId)
+        on('onResized', messageData)
+      }
+
+      ensureInRange('Height')
+      ensureInRange('Width')
+
+      syncResize(resize, messageData, 'init')
+    }
+
+    function processMsg() {
+      var data = msg.substr(msgIdLen).split(':')
+
+      return {
+        iframe: settings[data[0]] && settings[data[0]].iframe,
+        id: data[0],
+        height: data[1],
+        width: data[2],
+        type: data[3]
+      }
+    }
+
+    function ensureInRange(Dimension) {
+      var max = Number(settings[iframeId]['max' + Dimension]),
+        min = Number(settings[iframeId]['min' + Dimension]),
+        dimension = Dimension.toLowerCase(),
+        size = Number(messageData[dimension])
+
+      log(iframeId, 'Checking ' + dimension + ' is in range ' + min + '-' + max)
+
+      if (size < min) {
+        size = min
+        log(iframeId, 'Set ' + dimension + ' to min value')
+      }
+
+      if (size > max) {
+        size = max
+        log(iframeId, 'Set ' + dimension + ' to max value')
+      }
+
+      messageData[dimension] = '' + size
+    }
+
+    function isMessageFromIFrame() {
+      function checkAllowedOrigin() {
+        function checkList() {
+          var i = 0,
+            retCode = false
+
+          log(
+            iframeId,
+            'Checking connection is from allowed list of origins: ' +
+              checkOrigin
+          )
+
+          for (; i < checkOrigin.length; i++) {
+            if (checkOrigin[i] === origin) {
+              retCode = true
+              break
+            }
+          }
+          return retCode
+        }
+
+        function checkSingle() {
+          var remoteHost = settings[iframeId] && settings[iframeId].remoteHost
+          log(iframeId, 'Checking connection is from: ' + remoteHost)
+          return origin === remoteHost
+        }
+
+        return checkOrigin.constructor === Array ? checkList() : checkSingle()
+      }
+
+      var origin = event.origin,
+        checkOrigin = settings[iframeId] && settings[iframeId].checkOrigin
+
+      if (checkOrigin && '' + origin !== 'null' && !checkAllowedOrigin()) {
+        throw new Error(
+          'Unexpected message received from: ' +
+            origin +
+            ' for ' +
+            messageData.iframe.id +
+            '. Message was: ' +
+            event.data +
+            '. This error can be disabled by setting the checkOrigin: false option or by providing of array of trusted domains.'
+        )
+      }
+
+      return true
+    }
+
+    function isMessageForUs() {
+      return (
+        msgId === ('' + msg).substr(0, msgIdLen) &&
+        msg.substr(msgIdLen).split(':')[0] in settings
+      ) // ''+Protects against non-string msg
+    }
+
+    function isMessageFromMetaParent() {
+      // Test if this message is from a parent above us. This is an ugly test, however, updating
+      // the message format would break backwards compatibity.
+      var retCode = messageData.type in { true: 1, false: 1, undefined: 1 }
+
+      if (retCode) {
+        log(iframeId, 'Ignoring init message from meta parent page')
+      }
+
+      return retCode
+    }
+
+    function getMsgBody(offset) {
+      return msg.substr(msg.indexOf(':') + msgHeaderLen + offset)
+    }
+
+    function forwardMsgFromIFrame(msgBody) {
+      log(
+        iframeId,
+        'onMessage passed: {iframe: ' +
+          messageData.iframe.id +
+          ', message: ' +
+          msgBody +
+          '}'
+      )
+      on('onMessage', {
+        iframe: messageData.iframe,
+        message: JSON.parse(msgBody)
+      })
+      log(iframeId, '--')
+    }
+
+    function getPageInfo() {
+      var bodyPosition = document.body.getBoundingClientRect(),
+        iFramePosition = messageData.iframe.getBoundingClientRect()
+
+      return JSON.stringify({
+        iframeHeight: iFramePosition.height,
+        iframeWidth: iFramePosition.width,
+        clientHeight: Math.max(
+          document.documentElement.clientHeight,
+          window.innerHeight || 0
+        ),
+        clientWidth: Math.max(
+          document.documentElement.clientWidth,
+          window.innerWidth || 0
+        ),
+        offsetTop: parseInt(iFramePosition.top - bodyPosition.top, 10),
+        offsetLeft: parseInt(iFramePosition.left - bodyPosition.left, 10),
+        scrollTop: window.pageYOffset,
+        scrollLeft: window.pageXOffset,
+        documentHeight: document.documentElement.clientHeight,
+        documentWidth: document.documentElement.clientWidth,
+        windowHeight: window.innerHeight,
+        windowWidth: window.innerWidth
+      })
+    }
+
+    function sendPageInfoToIframe(iframe, iframeId) {
+      function debouncedTrigger() {
+        trigger('Send Page Info', 'pageInfo:' + getPageInfo(), iframe, iframeId)
+      }
+      debounceFrameEvents(debouncedTrigger, 32, iframeId)
+    }
+
+    function startPageInfoMonitor() {
+      function setListener(type, func) {
+        function sendPageInfo() {
+          if (settings[id]) {
+            sendPageInfoToIframe(settings[id].iframe, id)
+          } else {
+            stop()
+          }
+        }
+
+        ;['scroll', 'resize'].forEach(function(evt) {
+          log(id, type + evt + ' listener for sendPageInfo')
+          func(window, evt, sendPageInfo)
+        })
+      }
+
+      function stop() {
+        setListener('Remove ', removeEventListener)
+      }
+
+      function start() {
+        setListener('Add ', addEventListener)
+      }
+
+      var id = iframeId // Create locally scoped copy of iFrame ID
+
+      start()
+
+      if (settings[id]) {
+        settings[id].stopPageInfo = stop
+      }
+    }
+
+    function stopPageInfoMonitor() {
+      if (settings[iframeId] && settings[iframeId].stopPageInfo) {
+        settings[iframeId].stopPageInfo()
+        delete settings[iframeId].stopPageInfo
+      }
+    }
+
+    function checkIFrameExists() {
+      var retBool = true
+
+      if (null === messageData.iframe) {
+        warn(iframeId, 'IFrame (' + messageData.id + ') not found')
+        retBool = false
+      }
+      return retBool
+    }
+
+    function getElementPosition(target) {
+      var iFramePosition = target.getBoundingClientRect()
+
+      getPagePosition(iframeId)
+
+      return {
+        x: Math.floor(Number(iFramePosition.left) + Number(pagePosition.x)),
+        y: Math.floor(Number(iFramePosition.top) + Number(pagePosition.y))
+      }
+    }
+
+    function scrollRequestFromChild(addOffset) {
+      /* istanbul ignore next */ // Not testable in Karma
+      function reposition() {
+        pagePosition = newPosition
+        scrollTo()
+        log(iframeId, '--')
+      }
+
+      function calcOffset() {
+        return {
+          x: Number(messageData.width) + offset.x,
+          y: Number(messageData.height) + offset.y
+        }
+      }
+
+      function scrollParent() {
+        if (window.parentIFrame) {
+          window.parentIFrame['scrollTo' + (addOffset ? 'Offset' : '')](
+            newPosition.x,
+            newPosition.y
+          )
+        } else {
+          warn(
+            iframeId,
+            'Unable to scroll to requested position, window.parentIFrame not found'
+          )
+        }
+      }
+
+      var offset = addOffset
+          ? getElementPosition(messageData.iframe)
+          : { x: 0, y: 0 },
+        newPosition = calcOffset()
+
+      log(
+        iframeId,
+        'Reposition requested from iFrame (offset x:' +
+          offset.x +
+          ' y:' +
+          offset.y +
+          ')'
+      )
+
+      if (window.top !== window.self) {
+        scrollParent()
+      } else {
+        reposition()
+      }
+    }
+
+    function scrollTo() {
+      if (false !== on('onScroll', pagePosition)) {
+        setPagePosition(iframeId)
+      } else {
+        unsetPagePosition()
+      }
+    }
+
+    function findTarget(location) {
+      function jumpToTarget() {
+        var jumpPosition = getElementPosition(target)
+
+        log(
+          iframeId,
+          'Moving to in page link (#' +
+            hash +
+            ') at x: ' +
+            jumpPosition.x +
+            ' y: ' +
+            jumpPosition.y
+        )
+        pagePosition = {
+          x: jumpPosition.x,
+          y: jumpPosition.y
+        }
+
+        scrollTo()
+        log(iframeId, '--')
+      }
+
+      function jumpToParent() {
+        if (window.parentIFrame) {
+          window.parentIFrame.moveToAnchor(hash)
+        } else {
+          log(
+            iframeId,
+            'In page link #' +
+              hash +
+              ' not found and window.parentIFrame not found'
+          )
+        }
+      }
+
+      var hash = location.split('#')[1] || '',
+        hashData = decodeURIComponent(hash),
+        target =
+          document.getElementById(hashData) ||
+          document.getElementsByName(hashData)[0]
+
+      if (target) {
+        jumpToTarget()
+      } else if (window.top !== window.self) {
+        jumpToParent()
+      } else {
+        log(iframeId, 'In page link #' + hash + ' not found')
+      }
+    }
+
+    function on(funcName, val) {
+      return chkEvent(iframeId, funcName, val)
+    }
+
+    function actionMsg() {
+      if (settings[iframeId] && settings[iframeId].firstRun) firstRun()
+
+      switch (messageData.type) {
+        case 'close':
+          if (settings[iframeId].closeRequeston)
+            chkEvent(iframeId, 'onCloseRequest', settings[iframeId].iframe)
+          else closeIFrame(messageData.iframe)
+          break
+
+        case 'message':
+          forwardMsgFromIFrame(getMsgBody(6))
+          break
+
+        case 'scrollTo':
+          scrollRequestFromChild(false)
+          break
+
+        case 'scrollToOffset':
+          scrollRequestFromChild(true)
+          break
+
+        case 'pageInfo':
+          sendPageInfoToIframe(
+            settings[iframeId] && settings[iframeId].iframe,
+            iframeId
+          )
+          startPageInfoMonitor()
+          break
+
+        case 'pageInfoStop':
+          stopPageInfoMonitor()
+          break
+
+        case 'inPageLink':
+          findTarget(getMsgBody(9))
+          break
+
+        case 'reset':
+          resetIFrame(messageData)
+          break
+
+        case 'init':
+          resizeIFrame()
+          on('onInit', messageData.iframe)
+          break
+
+        default:
+          resizeIFrame()
+      }
+    }
+
+    function hasSettings(iframeId) {
+      var retBool = true
+
+      if (!settings[iframeId]) {
+        retBool = false
+        warn(
+          messageData.type +
+            ' No settings for ' +
+            iframeId +
+            '. Message was: ' +
+            msg
+        )
+      }
+
+      return retBool
+    }
+
+    function iFrameReadyMsgReceived() {
+      // eslint-disable-next-line no-restricted-syntax, guard-for-in
+      for (var iframeId in settings) {
+        trigger(
+          'iFrame requested init',
+          createOutgoingMsg(iframeId),
+          document.getElementById(iframeId),
+          iframeId
+        )
+      }
+    }
+
+    function firstRun() {
+      if (settings[iframeId]) {
+        settings[iframeId].firstRun = false
+      }
+    }
+
+    var msg = event.data,
+      messageData = {},
+      iframeId = null
+
+    if ('[iFrameResizerChild]Ready' === msg) {
+      iFrameReadyMsgReceived()
+    } else if (isMessageForUs()) {
+      messageData = processMsg()
+      iframeId = messageData.id
+      if (settings[iframeId]) {
+        settings[iframeId].loaded = true
+      }
+
+      if (!isMessageFromMetaParent() && hasSettings(iframeId)) {
+        log(iframeId, 'Received: ' + msg)
+
+        if (checkIFrameExists() && isMessageFromIFrame()) {
+          actionMsg()
+        }
+      }
+    } else {
+      info(iframeId, 'Ignored: ' + msg)
+    }
+  }
+
+  function chkEvent(iframeId, funcName, val) {
+    var func = null,
+      retVal = null
+
+    if (settings[iframeId]) {
+      func = settings[iframeId][funcName]
+
+      if ('function' === typeof func) {
+        retVal = func(val)
+      } else {
+        throw new TypeError(
+          funcName + ' on iFrame[' + iframeId + '] is not a function'
+        )
+      }
+    }
+
+    return retVal
+  }
+
+  function removeIframeListeners(iframe) {
+    var iframeId = iframe.id
+    delete settings[iframeId]
+  }
+
+  function closeIFrame(iframe) {
+    var iframeId = iframe.id
+    log(iframeId, 'Removing iFrame: ' + iframeId)
+
+    try {
+      // Catch race condition error with React
+      if (iframe.parentNode) {
+        iframe.parentNode.removeChild(iframe)
+      }
+    } catch (error) {
+      warn(error)
+    }
+
+    chkEvent(iframeId, 'onClosed', iframeId)
+    log(iframeId, '--')
+    removeIframeListeners(iframe)
+  }
+
+  function getPagePosition(iframeId) {
+    if (null === pagePosition) {
+      pagePosition = {
+        x:
+          window.pageXOffset !== undefined
+            ? window.pageXOffset
+            : document.documentElement.scrollLeft,
+        y:
+          window.pageYOffset !== undefined
+            ? window.pageYOffset
+            : document.documentElement.scrollTop
+      }
+      log(
+        iframeId,
+        'Get page position: ' + pagePosition.x + ',' + pagePosition.y
+      )
+    }
+  }
+
+  function setPagePosition(iframeId) {
+    if (null !== pagePosition) {
+      window.scrollTo(pagePosition.x, pagePosition.y)
+      log(
+        iframeId,
+        'Set page position: ' + pagePosition.x + ',' + pagePosition.y
+      )
+      unsetPagePosition()
+    }
+  }
+
+  function unsetPagePosition() {
+    pagePosition = null
+  }
+
+  function resetIFrame(messageData) {
+    function reset() {
+      setSize(messageData)
+      trigger('reset', 'reset', messageData.iframe, messageData.id)
+    }
+
+    log(
+      messageData.id,
+      'Size reset requested by ' +
+        ('init' === messageData.type ? 'host page' : 'iFrame')
+    )
+    getPagePosition(messageData.id)
+    syncResize(reset, messageData, 'reset')
+  }
+
+  function setSize(messageData) {
+    function setDimension(dimension) {
+      if (!messageData.id) {
+        log('undefined', 'messageData id not set')
+        return
+      }
+      messageData.iframe.style[dimension] = messageData[dimension] + 'px'
+      log(
+        messageData.id,
+        'IFrame (' +
+          iframeId +
+          ') ' +
+          dimension +
+          ' set to ' +
+          messageData[dimension] +
+          'px'
+      )
+    }
+
+    function chkZero(dimension) {
+      // FireFox sets dimension of hidden iFrames to zero.
+      // So if we detect that set up an event to check for
+      // when iFrame becomes visible.
+
+      /* istanbul ignore next */ // Not testable in PhantomJS
+      if (!hiddenCheckEnabled && '0' === messageData[dimension]) {
+        hiddenCheckEnabled = true
+        log(iframeId, 'Hidden iFrame detected, creating visibility listener')
+        fixHiddenIFrames()
+      }
+    }
+
+    function processDimension(dimension) {
+      setDimension(dimension)
+      chkZero(dimension)
+    }
+
+    var iframeId = messageData.iframe.id
+
+    if (settings[iframeId]) {
+      if (settings[iframeId].sizeHeight) {
+        processDimension('height')
+      }
+      if (settings[iframeId].sizeWidth) {
+        processDimension('width')
+      }
+    }
+  }
+
+  function syncResize(func, messageData, doNotSync) {
+    /* istanbul ignore if */ // Not testable in PhantomJS
+    if (doNotSync !== messageData.type && requestAnimationFrame) {
+      log(messageData.id, 'Requesting animation frame')
+      requestAnimationFrame(func)
+    } else {
+      func()
+    }
+  }
+
+  function trigger(calleeMsg, msg, iframe, id, noResponseWarning) {
+    function postMessageToIFrame() {
+      var target = settings[id] && settings[id].targetOrigin
+      log(
+        id,
+        '[' +
+          calleeMsg +
+          '] Sending msg to iframe[' +
+          id +
+          '] (' +
+          msg +
+          ') targetOrigin: ' +
+          target
+      )
+      iframe.contentWindow.postMessage(msgId + msg, target)
+    }
+
+    function iFrameNotFound() {
+      warn(id, '[' + calleeMsg + '] IFrame(' + id + ') not found')
+    }
+
+    function chkAndSend() {
+      if (
+        iframe &&
+        'contentWindow' in iframe &&
+        null !== iframe.contentWindow
+      ) {
+        // Null test for PhantomJS
+        postMessageToIFrame()
+      } else {
+        iFrameNotFound()
+      }
+    }
+
+    function warnOnNoResponse() {
+      function warning() {
+        if (settings[id] && !settings[id].loaded && !errorShown) {
+          errorShown = true
+          warn(
+            id,
+            'IFrame has not responded within ' +
+              settings[id].warningTimeout / 1000 +
+              ' seconds. Check iFrameResizer.contentWindow.js has been loaded in iFrame. This message can be ignored if everything is working, or you can set the warningTimeout option to a higher value or zero to suppress this warning.'
+          )
+        }
+      }
+
+      if (
+        !!noResponseWarning &&
+        settings[id] &&
+        !!settings[id].warningTimeout
+      ) {
+        settings[id].msgTimeout = setTimeout(
+          warning,
+          settings[id].warningTimeout
+        )
+      }
+    }
+
+    var errorShown = false
+
+    id = id || iframe.id
+
+    if (settings[id]) {
+      chkAndSend()
+      warnOnNoResponse()
+    }
+  }
+
+  function createOutgoingMsg(iframeId) {
+    return (
+      iframeId +
+      ':' +
+      settings[iframeId].bodyMarginV1 +
+      ':' +
+      settings[iframeId].sizeWidth +
+      ':' +
+      settings[iframeId].log +
+      ':' +
+      settings[iframeId].interval +
+      ':' +
+      settings[iframeId].enablePublicMethods +
+      ':' +
+      settings[iframeId].autoResize +
+      ':' +
+      settings[iframeId].bodyMargin +
+      ':' +
+      settings[iframeId].heightCalculationMethod +
+      ':' +
+      settings[iframeId].bodyBackground +
+      ':' +
+      settings[iframeId].bodyPadding +
+      ':' +
+      settings[iframeId].tolerance +
+      ':' +
+      settings[iframeId].inPageLinks +
+      ':' +
+      settings[iframeId].resizeFrom +
+      ':' +
+      settings[iframeId].widthCalculationMethod
+    )
+  }
+
+  function setupIFrame(iframe, options) {
+    function setLimits() {
+      function addStyle(style) {
+        if (
+          Infinity !== settings[iframeId][style] &&
+          0 !== settings[iframeId][style]
+        ) {
+          iframe.style[style] = settings[iframeId][style] + 'px'
+          log(
+            iframeId,
+            'Set ' + style + ' = ' + settings[iframeId][style] + 'px'
+          )
+        }
+      }
+
+      function chkMinMax(dimension) {
+        if (
+          settings[iframeId]['min' + dimension] >
+          settings[iframeId]['max' + dimension]
+        ) {
+          throw new Error(
+            'Value for min' +
+              dimension +
+              ' can not be greater than max' +
+              dimension
+          )
+        }
+      }
+
+      chkMinMax('Height')
+      chkMinMax('Width')
+
+      addStyle('maxHeight')
+      addStyle('minHeight')
+      addStyle('maxWidth')
+      addStyle('minWidth')
+    }
+
+    function newId() {
+      var id = (options && options.id) || defaults.id + count++
+      if (null !== document.getElementById(id)) {
+        id += count++
+      }
+      return id
+    }
+
+    function ensureHasId(iframeId) {
+      if ('' === iframeId) {
+        // eslint-disable-next-line no-multi-assign
+        iframe.id = iframeId = newId()
+        logEnabled = (options || {}).log
+        log(
+          iframeId,
+          'Added missing iframe ID: ' + iframeId + ' (' + iframe.src + ')'
+        )
+      }
+
+      return iframeId
+    }
+
+    function setScrolling() {
+      log(
+        iframeId,
+        'IFrame scrolling ' +
+          (settings[iframeId] && settings[iframeId].scrolling
+            ? 'enabled'
+            : 'disabled') +
+          ' for ' +
+          iframeId
+      )
+      iframe.style.overflow =
+        false === (settings[iframeId] && settings[iframeId].scrolling)
+          ? 'hidden'
+          : 'auto'
+      switch (settings[iframeId] && settings[iframeId].scrolling) {
+        case 'omit':
+          break
+
+        case true:
+          iframe.scrolling = 'yes'
+          break
+
+        case false:
+          iframe.scrolling = 'no'
+          break
+
+        default:
+          iframe.scrolling = settings[iframeId]
+            ? settings[iframeId].scrolling
+            : 'no'
+      }
+    }
+
+    // The V1 iFrame script expects an int, where as in V2 expects a CSS
+    // string value such as '1px 3em', so if we have an int for V2, set V1=V2
+    // and then convert V2 to a string PX value.
+    function setupBodyMarginValues() {
+      if (
+        'number' ===
+          typeof (settings[iframeId] && settings[iframeId].bodyMargin) ||
+        '0' === (settings[iframeId] && settings[iframeId].bodyMargin)
+      ) {
+        settings[iframeId].bodyMarginV1 = settings[iframeId].bodyMargin
+        settings[iframeId].bodyMargin =
+          '' + settings[iframeId].bodyMargin + 'px'
+      }
+    }
+
+    function checkReset() {
+      // Reduce scope of firstRun to function, because IE8's JS execution
+      // context stack is borked and this value gets externally
+      // changed midway through running this function!!!
+      var firstRun = settings[iframeId] && settings[iframeId].firstRun,
+        resetRequertMethod =
+          settings[iframeId] &&
+          settings[iframeId].heightCalculationMethod in resetRequiredMethods
+
+      if (!firstRun && resetRequertMethod) {
+        resetIFrame({ iframe: iframe, height: 0, width: 0, type: 'init' })
+      }
+    }
+
+    function setupIFrameObject() {
+      if (settings[iframeId]) {
+        settings[iframeId].iframe.iFrameResizer = {
+          close: closeIFrame.bind(null, settings[iframeId].iframe),
+
+          removeListeners: removeIframeListeners.bind(
+            null,
+            settings[iframeId].iframe
+          ),
+
+          resize: trigger.bind(
+            null,
+            'Window resize',
+            'resize',
+            settings[iframeId].iframe
+          ),
+
+          moveToAnchor: function(anchor) {
+            trigger(
+              'Move to anchor',
+              'moveToAnchor:' + anchor,
+              settings[iframeId].iframe,
+              iframeId
+            )
+          },
+
+          sendMessage: function(message) {
+            message = JSON.stringify(message)
+            trigger(
+              'Send Message',
+              'message:' + message,
+              settings[iframeId].iframe,
+              iframeId
+            )
+          }
+        }
+      }
+    }
+
+    // We have to call trigger twice, as we can not be sure if all
+    // iframes have completed loading when this code runs. The
+    // event listener also catches the page changing in the iFrame.
+    function init(msg) {
+      function iFrameLoaded() {
+        trigger('iFrame.onload', msg, iframe, undefined, true)
+        checkReset()
+      }
+
+      function createDestroyObserver(MutationObserver) {
+        if (!iframe.parentNode) {
+          return
+        }
+
+        var destroyObserver = new MutationObserver(function(mutations) {
+          mutations.forEach(function(mutation) {
+            var removedNodes = Array.prototype.slice.call(mutation.removedNodes) // Transform NodeList into an Array
+            removedNodes.forEach(function(removedNode) {
+              if (removedNode === iframe) {
+                closeIFrame(iframe)
+              }
+            })
+          })
+        })
+        destroyObserver.observe(iframe.parentNode, {
+          childList: true
+        })
+      }
+
+      var MutationObserver = getMutationObserver()
+      if (MutationObserver) {
+        createDestroyObserver(MutationObserver)
+      }
+
+      addEventListener(iframe, 'load', iFrameLoaded)
+      trigger('init', msg, iframe, undefined, true)
+    }
+
+    function checkOptions(options) {
+      if ('object' !== typeof options) {
+        throw new TypeError('Options is not an object')
+      }
+    }
+
+    function copyOptions(options) {
+      // eslint-disable-next-line no-restricted-syntax
+      for (var option in defaults) {
+        if (Object.prototype.hasOwnProperty.call(defaults, option)) {
+          settings[iframeId][option] = Object.prototype.hasOwnProperty.call(
+            options,
+            option
+          )
+            ? options[option]
+            : defaults[option]
+        }
+      }
+    }
+
+    function getTargetOrigin(remoteHost) {
+      return '' === remoteHost || 'file://' === remoteHost ? '*' : remoteHost
+    }
+
+    function depricate(key) {
+      var splitName = key.split('Callback')
+
+      if (splitName.length === 2) {
+        var name =
+          'on' + splitName[0].charAt(0).toUpperCase() + splitName[0].slice(1)
+        this[name] = this[key]
+        delete this[key]
+        warn(
+          iframeId,
+          "Deprecated: '" +
+            key +
+            "' has been renamed '" +
+            name +
+            "'. The old method will be removed in the next major version."
+        )
+      }
+    }
+
+    function processOptions(options) {
+      options = options || {}
+      settings[iframeId] = {
+        firstRun: true,
+        iframe: iframe,
+        remoteHost: iframe.src
+          .split('/')
+          .slice(0, 3)
+          .join('/')
+      }
+
+      checkOptions(options)
+      Object.keys(options).forEach(depricate, options)
+      copyOptions(options)
+
+      if (settings[iframeId]) {
+        settings[iframeId].targetOrigin =
+          true === settings[iframeId].checkOrigin
+            ? getTargetOrigin(settings[iframeId].remoteHost)
+            : '*'
+      }
+    }
+
+    function beenHere() {
+      return iframeId in settings && 'iFrameResizer' in iframe
+    }
+
+    var iframeId = ensureHasId(iframe.id)
+
+    if (!beenHere()) {
+      processOptions(options)
+      setScrolling()
+      setLimits()
+      setupBodyMarginValues()
+      init(createOutgoingMsg(iframeId))
+      setupIFrameObject()
+    } else {
+      warn(iframeId, 'Ignored iFrame, already setup.')
+    }
+  }
+
+  function debouce(fn, time) {
+    if (null === timer) {
+      timer = setTimeout(function() {
+        timer = null
+        fn()
+      }, time)
+    }
+  }
+
+  var frameTimer = {}
+  function debounceFrameEvents(fn, time, frameId) {
+    if (!frameTimer[frameId]) {
+      frameTimer[frameId] = setTimeout(function() {
+        frameTimer[frameId] = null
+        fn()
+      }, time)
+    }
+  }
+
+  // Not testable in PhantomJS
+  /* istanbul ignore next */
+
+  function fixHiddenIFrames() {
+    function checkIFrames() {
+      function checkIFrame(settingId) {
+        function chkDimension(dimension) {
+          return (
+            '0px' ===
+            (settings[settingId] && settings[settingId].iframe.style[dimension])
+          )
+        }
+
+        function isVisible(el) {
+          return null !== el.offsetParent
+        }
+
+        if (
+          settings[settingId] &&
+          isVisible(settings[settingId].iframe) &&
+          (chkDimension('height') || chkDimension('width'))
+        ) {
+          trigger(
+            'Visibility change',
+            'resize',
+            settings[settingId].iframe,
+            settingId
+          )
+        }
+      }
+
+      Object.keys(settings).forEach(function(key) {
+        checkIFrame(settings[key])
+      })
+    }
+
+    function mutationObserved(mutations) {
+      log(
+        'window',
+        'Mutation observed: ' + mutations[0].target + ' ' + mutations[0].type
+      )
+      debouce(checkIFrames, 16)
+    }
+
+    function createMutationObserver() {
+      var target = document.querySelector('body'),
+        config = {
+          attributes: true,
+          attributeOldValue: false,
+          characterData: true,
+          characterDataOldValue: false,
+          childList: true,
+          subtree: true
+        },
+        observer = new MutationObserver(mutationObserved)
+
+      observer.observe(target, config)
+    }
+
+    var MutationObserver = getMutationObserver()
+    if (MutationObserver) {
+      createMutationObserver()
+    }
+  }
+
+  function resizeIFrames(event) {
+    function resize() {
+      sendTriggerMsg('Window ' + event, 'resize')
+    }
+
+    log('window', 'Trigger event: ' + event)
+    debouce(resize, 16)
+  }
+
+  // Not testable in PhantomJS
+  /* istanbul ignore next */
+  function tabVisible() {
+    function resize() {
+      sendTriggerMsg('Tab Visable', 'resize')
+    }
+
+    if ('hidden' !== document.visibilityState) {
+      log('document', 'Trigger event: Visiblity change')
+      debouce(resize, 16)
+    }
+  }
+
+  function sendTriggerMsg(eventName, event) {
+    function isIFrameResizeEnabled(iframeId) {
+      return (
+        settings[iframeId] &&
+        'parent' === settings[iframeId].resizeFrom &&
+        settings[iframeId].autoResize &&
+        !settings[iframeId].firstRun
+      )
+    }
+
+    Object.keys(settings).forEach(function(iframeId) {
+      if (isIFrameResizeEnabled(iframeId)) {
+        trigger(eventName, event, document.getElementById(iframeId), iframeId)
+      }
+    })
+  }
+
+  function setupEventListeners() {
+    addEventListener(window, 'message', iFrameListener)
+
+    addEventListener(window, 'resize', function() {
+      resizeIFrames('resize')
+    })
+
+    addEventListener(document, 'visibilitychange', tabVisible)
+
+    addEventListener(document, '-webkit-visibilitychange', tabVisible)
+  }
+
+  function factory() {
+    function init(options, element) {
+      function chkType() {
+        if (!element.tagName) {
+          throw new TypeError('Object is not a valid DOM element')
+        } else if ('IFRAME' !== element.tagName.toUpperCase()) {
+          throw new TypeError(
+            'Expected <IFRAME> tag, found <' + element.tagName + '>'
+          )
+        }
+      }
+
+      if (element) {
+        chkType()
+        setupIFrame(element, options)
+        iFrames.push(element)
+      }
+    }
+
+    function warnDeprecatedOptions(options) {
+      if (options && options.enablePublicMethods) {
+        warn(
+          'enablePublicMethods option has been removed, public methods are now always available in the iFrame'
+        )
+      }
+    }
+
+    var iFrames
+
+    setupRequestAnimationFrame()
+    setupEventListeners()
+
+    return function iFrameResizeF(options, target) {
+      iFrames = [] // Only return iFrames past in on this call
+
+      warnDeprecatedOptions(options)
+
+      switch (typeof target) {
+        case 'undefined':
+        case 'string':
+          Array.prototype.forEach.call(
+            document.querySelectorAll(target || 'iframe'),
+            init.bind(undefined, options)
+          )
+          break
+
+        case 'object':
+          init(options, target)
+          break
+
+        default:
+          throw new TypeError('Unexpected data type (' + typeof target + ')')
+      }
+
+      return iFrames
+    }
+  }
+
+  function createJQueryPublicMethod($) {
+    if (!$.fn) {
+      info('', 'Unable to bind to jQuery, it is not fully loaded.')
+    } else if (!$.fn.iFrameResize) {
+      $.fn.iFrameResize = function $iFrameResizeF(options) {
+        function init(index, element) {
+          setupIFrame(element, options)
+        }
+
+        return this.filter('iframe')
+          .each(init)
+          .end()
+      }
+    }
+  }
+
+  if (window.jQuery) {
+    createJQueryPublicMethod(window.jQuery)
+  }
+
+  if (typeof define === 'function' && define.amd) {
+    define([], factory)
+  } else if (typeof module === 'object' && typeof module.exports === 'object') {
+    // Node for browserfy
+    module.exports = factory()
+  }
+  window.iFrameResize = window.iFrameResize || factory()
+})()
+;
+/*
+ * File: iframeResizer.contentWindow.js
+ * Desc: Include this file in any page being loaded into an iframe
+ *       to force the iframe to resize to the content size.
+ * Requires: iframeResizer.js on host page.
+ * Doc: https://github.com/davidjbradshaw/iframe-resizer
+ * Author: David J. Bradshaw - dave@bradshaw.net
+ *
+ */
+
+// eslint-disable-next-line sonarjs/cognitive-complexity, no-shadow-restricted-names
+;(function(undefined) {
+  if (typeof window === 'undefined') return // don't run for server side render
+
+  var autoResize = true,
+    base = 10,
+    bodyBackground = '',
+    bodyMargin = 0,
+    bodyMarginStr = '',
+    bodyObserver = null,
+    bodyPadding = '',
+    calculateWidth = false,
+    doubleEventList = { resize: 1, click: 1 },
+    eventCancelTimer = 128,
+    firstRun = true,
+    height = 1,
+    heightCalcModeDefault = 'bodyOffset',
+    heightCalcMode = heightCalcModeDefault,
+    initLock = true,
+    initMsg = '',
+    inPageLinks = {},
+    interval = 32,
+    intervalTimer = null,
+    logging = false,
+    msgID = '[iFrameSizer]', // Must match host page msg ID
+    msgIdLen = msgID.length,
+    myID = '',
+    resetRequiredMethods = {
+      max: 1,
+      min: 1,
+      bodyScroll: 1,
+      documentElementScroll: 1
+    },
+    resizeFrom = 'child',
+    sendPermit = true,
+    target = window.parent,
+    targetOriginDefault = '*',
+    tolerance = 0,
+    triggerLocked = false,
+    triggerLockedTimer = null,
+    throttledTimer = 16,
+    width = 1,
+    widthCalcModeDefault = 'scroll',
+    widthCalcMode = widthCalcModeDefault,
+    win = window,
+    onMessage = function() {
+      warn('onMessage function not defined')
+    },
+    onReady = function() {},
+    onPageInfo = function() {},
+    customCalcMethods = {
+      height: function() {
+        warn('Custom height calculation function not defined')
+        return document.documentElement.offsetHeight
+      },
+      width: function() {
+        warn('Custom width calculation function not defined')
+        return document.body.scrollWidth
+      }
+    },
+    eventHandlersByName = {},
+    passiveSupported = false
+
+  function noop() {}
+
+  try {
+    var options = Object.create(
+      {},
+      {
+        passive: {
+          get: function() {
+            passiveSupported = true
+          }
+        }
+      }
+    )
+    window.addEventListener('test', noop, options)
+    window.removeEventListener('test', noop, options)
+  } catch (error) {
+    /* */
+  }
+
+  function addEventListener(el, evt, func, options) {
+    el.addEventListener(evt, func, passiveSupported ? options || {} : false)
+  }
+
+  function removeEventListener(el, evt, func) {
+    el.removeEventListener(evt, func, false)
+  }
+
+  function capitalizeFirstLetter(string) {
+    return string.charAt(0).toUpperCase() + string.slice(1)
+  }
+
+  // Based on underscore.js
+  function throttle(func) {
+    var context,
+      args,
+      result,
+      timeout = null,
+      previous = 0,
+      later = function() {
+        previous = getNow()
+        timeout = null
+        result = func.apply(context, args)
+        if (!timeout) {
+          // eslint-disable-next-line no-multi-assign
+          context = args = null
+        }
+      }
+
+    return function() {
+      var now = getNow()
+
+      if (!previous) {
+        previous = now
+      }
+
+      var remaining = throttledTimer - (now - previous)
+
+      context = this
+      args = arguments
+
+      if (remaining <= 0 || remaining > throttledTimer) {
+        if (timeout) {
+          clearTimeout(timeout)
+          timeout = null
+        }
+
+        previous = now
+        result = func.apply(context, args)
+
+        if (!timeout) {
+          // eslint-disable-next-line no-multi-assign
+          context = args = null
+        }
+      } else if (!timeout) {
+        timeout = setTimeout(later, remaining)
+      }
+
+      return result
+    }
+  }
+
+  var getNow =
+    Date.now ||
+    function() {
+      /* istanbul ignore next */ // Not testable in PhantonJS
+      return new Date().getTime()
+    }
+
+  function formatLogMsg(msg) {
+    return msgID + '[' + myID + '] ' + msg
+  }
+
+  function log(msg) {
+    if (logging && 'object' === typeof window.console) {
+      // eslint-disable-next-line no-console
+      console.log(formatLogMsg(msg))
+    }
+  }
+
+  function warn(msg) {
+    if ('object' === typeof window.console) {
+      // eslint-disable-next-line no-console
+      console.warn(formatLogMsg(msg))
+    }
+  }
+
+  function init() {
+    readDataFromParent()
+    log('Initialising iFrame (' + location.href + ')')
+    readDataFromPage()
+    setMargin()
+    setBodyStyle('background', bodyBackground)
+    setBodyStyle('padding', bodyPadding)
+    injectClearFixIntoBodyElement()
+    checkHeightMode()
+    checkWidthMode()
+    stopInfiniteResizingOfIFrame()
+    setupPublicMethods()
+    startEventListeners()
+    inPageLinks = setupInPageLinks()
+    sendSize('init', 'Init message from host page')
+    onReady()
+  }
+
+  function readDataFromParent() {
+    function strBool(str) {
+      return 'true' === str
+    }
+
+    var data = initMsg.substr(msgIdLen).split(':')
+
+    myID = data[0]
+    bodyMargin = undefined !== data[1] ? Number(data[1]) : bodyMargin // For V1 compatibility
+    calculateWidth = undefined !== data[2] ? strBool(data[2]) : calculateWidth
+    logging = undefined !== data[3] ? strBool(data[3]) : logging
+    interval = undefined !== data[4] ? Number(data[4]) : interval
+    autoResize = undefined !== data[6] ? strBool(data[6]) : autoResize
+    bodyMarginStr = data[7]
+    heightCalcMode = undefined !== data[8] ? data[8] : heightCalcMode
+    bodyBackground = data[9]
+    bodyPadding = data[10]
+    tolerance = undefined !== data[11] ? Number(data[11]) : tolerance
+    inPageLinks.enable = undefined !== data[12] ? strBool(data[12]) : false
+    resizeFrom = undefined !== data[13] ? data[13] : resizeFrom
+    widthCalcMode = undefined !== data[14] ? data[14] : widthCalcMode
+  }
+
+  function depricate(key) {
+    var splitName = key.split('Callback')
+
+    if (splitName.length === 2) {
+      var name =
+        'on' + splitName[0].charAt(0).toUpperCase() + splitName[0].slice(1)
+      this[name] = this[key]
+      delete this[key]
+      warn(
+        "Deprecated: '" +
+          key +
+          "' has been renamed '" +
+          name +
+          "'. The old method will be removed in the next major version."
+      )
+    }
+  }
+
+  function readDataFromPage() {
+    function readData() {
+      var data = window.iFrameResizer
+
+      log('Reading data from page: ' + JSON.stringify(data))
+      Object.keys(data).forEach(depricate, data)
+
+      onMessage = 'onMessage' in data ? data.onMessage : onMessage
+      onReady = 'onReady' in data ? data.onReady : onReady
+      targetOriginDefault =
+        'targetOrigin' in data ? data.targetOrigin : targetOriginDefault
+      heightCalcMode =
+        'heightCalculationMethod' in data
+          ? data.heightCalculationMethod
+          : heightCalcMode
+      widthCalcMode =
+        'widthCalculationMethod' in data
+          ? data.widthCalculationMethod
+          : widthCalcMode
+    }
+
+    function setupCustomCalcMethods(calcMode, calcFunc) {
+      if ('function' === typeof calcMode) {
+        log('Setup custom ' + calcFunc + 'CalcMethod')
+        customCalcMethods[calcFunc] = calcMode
+        calcMode = 'custom'
+      }
+
+      return calcMode
+    }
+
+    if (
+      'iFrameResizer' in window &&
+      Object === window.iFrameResizer.constructor
+    ) {
+      readData()
+      heightCalcMode = setupCustomCalcMethods(heightCalcMode, 'height')
+      widthCalcMode = setupCustomCalcMethods(widthCalcMode, 'width')
+    }
+
+    log('TargetOrigin for parent set to: ' + targetOriginDefault)
+  }
+
+  function chkCSS(attr, value) {
+    if (-1 !== value.indexOf('-')) {
+      warn('Negative CSS value ignored for ' + attr)
+      value = ''
+    }
+    return value
+  }
+
+  function setBodyStyle(attr, value) {
+    if (undefined !== value && '' !== value && 'null' !== value) {
+      document.body.style[attr] = value
+      log('Body ' + attr + ' set to "' + value + '"')
+    }
+  }
+
+  function setMargin() {
+    // If called via V1 script, convert bodyMargin from int to str
+    if (undefined === bodyMarginStr) {
+      bodyMarginStr = bodyMargin + 'px'
+    }
+
+    setBodyStyle('margin', chkCSS('margin', bodyMarginStr))
+  }
+
+  function stopInfiniteResizingOfIFrame() {
+    document.documentElement.style.height = ''
+    document.body.style.height = ''
+    log('HTML & body height set to "auto"')
+  }
+
+  function manageTriggerEvent(options) {
+    var listener = {
+      add: function(eventName) {
+        function handleEvent() {
+          sendSize(options.eventName, options.eventType)
+        }
+
+        eventHandlersByName[eventName] = handleEvent
+
+        addEventListener(window, eventName, handleEvent, { passive: true })
+      },
+      remove: function(eventName) {
+        var handleEvent = eventHandlersByName[eventName]
+        delete eventHandlersByName[eventName]
+
+        removeEventListener(window, eventName, handleEvent)
+      }
+    }
+
+    if (options.eventNames && Array.prototype.map) {
+      options.eventName = options.eventNames[0]
+      options.eventNames.map(listener[options.method])
+    } else {
+      listener[options.method](options.eventName)
+    }
+
+    log(
+      capitalizeFirstLetter(options.method) +
+        ' event listener: ' +
+        options.eventType
+    )
+  }
+
+  function manageEventListeners(method) {
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Animation Start',
+      eventNames: ['animationstart', 'webkitAnimationStart']
+    })
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Animation Iteration',
+      eventNames: ['animationiteration', 'webkitAnimationIteration']
+    })
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Animation End',
+      eventNames: ['animationend', 'webkitAnimationEnd']
+    })
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Input',
+      eventName: 'input'
+    })
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Mouse Up',
+      eventName: 'mouseup'
+    })
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Mouse Down',
+      eventName: 'mousedown'
+    })
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Orientation Change',
+      eventName: 'orientationchange'
+    })
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Print',
+      eventName: ['afterprint', 'beforeprint']
+    })
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Ready State Change',
+      eventName: 'readystatechange'
+    })
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Touch Start',
+      eventName: 'touchstart'
+    })
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Touch End',
+      eventName: 'touchend'
+    })
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Touch Cancel',
+      eventName: 'touchcancel'
+    })
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Transition Start',
+      eventNames: [
+        'transitionstart',
+        'webkitTransitionStart',
+        'MSTransitionStart',
+        'oTransitionStart',
+        'otransitionstart'
+      ]
+    })
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Transition Iteration',
+      eventNames: [
+        'transitioniteration',
+        'webkitTransitionIteration',
+        'MSTransitionIteration',
+        'oTransitionIteration',
+        'otransitioniteration'
+      ]
+    })
+    manageTriggerEvent({
+      method: method,
+      eventType: 'Transition End',
+      eventNames: [
+        'transitionend',
+        'webkitTransitionEnd',
+        'MSTransitionEnd',
+        'oTransitionEnd',
+        'otransitionend'
+      ]
+    })
+    if ('child' === resizeFrom) {
+      manageTriggerEvent({
+        method: method,
+        eventType: 'IFrame Resized',
+        eventName: 'resize'
+      })
+    }
+  }
+
+  function checkCalcMode(calcMode, calcModeDefault, modes, type) {
+    if (calcModeDefault !== calcMode) {
+      if (!(calcMode in modes)) {
+        warn(
+          calcMode + ' is not a valid option for ' + type + 'CalculationMethod.'
+        )
+        calcMode = calcModeDefault
+      }
+      log(type + ' calculation method set to "' + calcMode + '"')
+    }
+
+    return calcMode
+  }
+
+  function checkHeightMode() {
+    heightCalcMode = checkCalcMode(
+      heightCalcMode,
+      heightCalcModeDefault,
+      getHeight,
+      'height'
+    )
+  }
+
+  function checkWidthMode() {
+    widthCalcMode = checkCalcMode(
+      widthCalcMode,
+      widthCalcModeDefault,
+      getWidth,
+      'width'
+    )
+  }
+
+  function startEventListeners() {
+    if (true === autoResize) {
+      manageEventListeners('add')
+      setupMutationObserver()
+    } else {
+      log('Auto Resize disabled')
+    }
+  }
+
+  function stopMsgsToParent() {
+    log('Disable outgoing messages')
+    sendPermit = false
+  }
+
+  function removeMsgListener() {
+    log('Remove event listener: Message')
+    removeEventListener(window, 'message', receiver)
+  }
+
+  function disconnectMutationObserver() {
+    if (null !== bodyObserver) {
+      /* istanbul ignore next */ // Not testable in PhantonJS
+      bodyObserver.disconnect()
+    }
+  }
+
+  function stopEventListeners() {
+    manageEventListeners('remove')
+    disconnectMutationObserver()
+    clearInterval(intervalTimer)
+  }
+
+  function teardown() {
+    stopMsgsToParent()
+    removeMsgListener()
+    if (true === autoResize) stopEventListeners()
+  }
+
+  function injectClearFixIntoBodyElement() {
+    var clearFix = document.createElement('div')
+    clearFix.style.clear = 'both'
+    // Guard against the following having been globally redefined in CSS.
+    clearFix.style.display = 'block'
+    clearFix.style.height = '0'
+    document.body.appendChild(clearFix)
+  }
+
+  function setupInPageLinks() {
+    function getPagePosition() {
+      return {
+        x:
+          window.pageXOffset !== undefined
+            ? window.pageXOffset
+            : document.documentElement.scrollLeft,
+        y:
+          window.pageYOffset !== undefined
+            ? window.pageYOffset
+            : document.documentElement.scrollTop
+      }
+    }
+
+    function getElementPosition(el) {
+      var elPosition = el.getBoundingClientRect(),
+        pagePosition = getPagePosition()
+
+      return {
+        x: parseInt(elPosition.left, 10) + parseInt(pagePosition.x, 10),
+        y: parseInt(elPosition.top, 10) + parseInt(pagePosition.y, 10)
+      }
+    }
+
+    function findTarget(location) {
+      function jumpToTarget(target) {
+        var jumpPosition = getElementPosition(target)
+
+        log(
+          'Moving to in page link (#' +
+            hash +
+            ') at x: ' +
+            jumpPosition.x +
+            ' y: ' +
+            jumpPosition.y
+        )
+        sendMsg(jumpPosition.y, jumpPosition.x, 'scrollToOffset') // X&Y reversed at sendMsg uses height/width
+      }
+
+      var hash = location.split('#')[1] || location, // Remove # if present
+        hashData = decodeURIComponent(hash),
+        target =
+          document.getElementById(hashData) ||
+          document.getElementsByName(hashData)[0]
+
+      if (undefined !== target) {
+        jumpToTarget(target)
+      } else {
+        log(
+          'In page link (#' +
+            hash +
+            ') not found in iFrame, so sending to parent'
+        )
+        sendMsg(0, 0, 'inPageLink', '#' + hash)
+      }
+    }
+
+    function checkLocationHash() {
+      if ('' !== location.hash && '#' !== location.hash) {
+        findTarget(location.href)
+      }
+    }
+
+    function bindAnchors() {
+      function setupLink(el) {
+        function linkClicked(e) {
+          e.preventDefault()
+
+          /* jshint validthis:true */
+          findTarget(this.getAttribute('href'))
+        }
+
+        if ('#' !== el.getAttribute('href')) {
+          addEventListener(el, 'click', linkClicked)
+        }
+      }
+
+      Array.prototype.forEach.call(
+        document.querySelectorAll('a[href^="#"]'),
+        setupLink
+      )
+    }
+
+    function bindLocationHash() {
+      addEventListener(window, 'hashchange', checkLocationHash)
+    }
+
+    function initCheck() {
+      // Check if page loaded with location hash after init resize
+      setTimeout(checkLocationHash, eventCancelTimer)
+    }
+
+    function enableInPageLinks() {
+      /* istanbul ignore else */ // Not testable in phantonJS
+      if (Array.prototype.forEach && document.querySelectorAll) {
+        log('Setting up location.hash handlers')
+        bindAnchors()
+        bindLocationHash()
+        initCheck()
+      } else {
+        warn(
+          'In page linking not fully supported in this browser! (See README.md for IE8 workaround)'
+        )
+      }
+    }
+
+    if (inPageLinks.enable) {
+      enableInPageLinks()
+    } else {
+      log('In page linking not enabled')
+    }
+
+    return {
+      findTarget: findTarget
+    }
+  }
+
+  function setupPublicMethods() {
+    log('Enable public methods')
+
+    win.parentIFrame = {
+      autoResize: function autoResizeF(resize) {
+        if (true === resize && false === autoResize) {
+          autoResize = true
+          startEventListeners()
+        } else if (false === resize && true === autoResize) {
+          autoResize = false
+          stopEventListeners()
+        }
+
+        return autoResize
+      },
+
+      close: function closeF() {
+        sendMsg(0, 0, 'close')
+        teardown()
+      },
+
+      getId: function getIdF() {
+        return myID
+      },
+
+      getPageInfo: function getPageInfoF(callback) {
+        if ('function' === typeof callback) {
+          onPageInfo = callback
+          sendMsg(0, 0, 'pageInfo')
+        } else {
+          onPageInfo = function() {}
+          sendMsg(0, 0, 'pageInfoStop')
+        }
+      },
+
+      moveToAnchor: function moveToAnchorF(hash) {
+        inPageLinks.findTarget(hash)
+      },
+
+      reset: function resetF() {
+        resetIFrame('parentIFrame.reset')
+      },
+
+      scrollTo: function scrollToF(x, y) {
+        sendMsg(y, x, 'scrollTo') // X&Y reversed at sendMsg uses height/width
+      },
+
+      scrollToOffset: function scrollToF(x, y) {
+        sendMsg(y, x, 'scrollToOffset') // X&Y reversed at sendMsg uses height/width
+      },
+
+      sendMessage: function sendMessageF(msg, targetOrigin) {
+        sendMsg(0, 0, 'message', JSON.stringify(msg), targetOrigin)
+      },
+
+      setHeightCalculationMethod: function setHeightCalculationMethodF(
+        heightCalculationMethod
+      ) {
+        heightCalcMode = heightCalculationMethod
+        checkHeightMode()
+      },
+
+      setWidthCalculationMethod: function setWidthCalculationMethodF(
+        widthCalculationMethod
+      ) {
+        widthCalcMode = widthCalculationMethod
+        checkWidthMode()
+      },
+
+      setTargetOrigin: function setTargetOriginF(targetOrigin) {
+        log('Set targetOrigin: ' + targetOrigin)
+        targetOriginDefault = targetOrigin
+      },
+
+      size: function sizeF(customHeight, customWidth) {
+        var valString =
+          '' + (customHeight || '') + (customWidth ? ',' + customWidth : '')
+        sendSize(
+          'size',
+          'parentIFrame.size(' + valString + ')',
+          customHeight,
+          customWidth
+        )
+      }
+    }
+  }
+
+  function initInterval() {
+    if (0 !== interval) {
+      log('setInterval: ' + interval + 'ms')
+      intervalTimer = setInterval(function() {
+        sendSize('interval', 'setInterval: ' + interval)
+      }, Math.abs(interval))
+    }
+  }
+
+  // Not testable in PhantomJS
+  /* istanbul ignore next */
+  function setupBodyMutationObserver() {
+    function addImageLoadListners(mutation) {
+      function addImageLoadListener(element) {
+        if (false === element.complete) {
+          log('Attach listeners to ' + element.src)
+          element.addEventListener('load', imageLoaded, false)
+          element.addEventListener('error', imageError, false)
+          elements.push(element)
+        }
+      }
+
+      if (mutation.type === 'attributes' && mutation.attributeName === 'src') {
+        addImageLoadListener(mutation.target)
+      } else if (mutation.type === 'childList') {
+        Array.prototype.forEach.call(
+          mutation.target.querySelectorAll('img'),
+          addImageLoadListener
+        )
+      }
+    }
+
+    function removeFromArray(element) {
+      elements.splice(elements.indexOf(element), 1)
+    }
+
+    function removeImageLoadListener(element) {
+      log('Remove listeners from ' + element.src)
+      element.removeEventListener('load', imageLoaded, false)
+      element.removeEventListener('error', imageError, false)
+      removeFromArray(element)
+    }
+
+    function imageEventTriggered(event, type, typeDesc) {
+      removeImageLoadListener(event.target)
+      sendSize(type, typeDesc + ': ' + event.target.src, undefined, undefined)
+    }
+
+    function imageLoaded(event) {
+      imageEventTriggered(event, 'imageLoad', 'Image loaded')
+    }
+
+    function imageError(event) {
+      imageEventTriggered(event, 'imageLoadFailed', 'Image load failed')
+    }
+
+    function mutationObserved(mutations) {
+      sendSize(
+        'mutationObserver',
+        'mutationObserver: ' + mutations[0].target + ' ' + mutations[0].type
+      )
+
+      // Deal with WebKit / Blink asyncing image loading when tags are injected into the page
+      mutations.forEach(addImageLoadListners)
+    }
+
+    function createMutationObserver() {
+      var target = document.querySelector('body'),
+        config = {
+          attributes: true,
+          attributeOldValue: false,
+          characterData: true,
+          characterDataOldValue: false,
+          childList: true,
+          subtree: true
+        }
+
+      observer = new MutationObserver(mutationObserved)
+
+      log('Create body MutationObserver')
+      observer.observe(target, config)
+
+      return observer
+    }
+
+    var elements = [],
+      MutationObserver =
+        window.MutationObserver || window.WebKitMutationObserver,
+      observer = createMutationObserver()
+
+    return {
+      disconnect: function() {
+        if ('disconnect' in observer) {
+          log('Disconnect body MutationObserver')
+          observer.disconnect()
+          elements.forEach(removeImageLoadListener)
+        }
+      }
+    }
+  }
+
+  function setupMutationObserver() {
+    var forceIntervalTimer = 0 > interval
+
+    // Not testable in PhantomJS
+    /* istanbul ignore if */ if (
+      window.MutationObserver ||
+      window.WebKitMutationObserver
+    ) {
+      if (forceIntervalTimer) {
+        initInterval()
+      } else {
+        bodyObserver = setupBodyMutationObserver()
+      }
+    } else {
+      log('MutationObserver not supported in this browser!')
+      initInterval()
+    }
+  }
+
+  // document.documentElement.offsetHeight is not reliable, so
+  // we have to jump through hoops to get a better value.
+  function getComputedStyle(prop, el) {
+    var retVal = 0
+    el = el || document.body // Not testable in phantonJS
+
+    retVal = document.defaultView.getComputedStyle(el, null)
+    retVal = null !== retVal ? retVal[prop] : 0
+
+    return parseInt(retVal, base)
+  }
+
+  function chkEventThottle(timer) {
+    if (timer > throttledTimer / 2) {
+      throttledTimer = 2 * timer
+      log('Event throttle increased to ' + throttledTimer + 'ms')
+    }
+  }
+
+  // Idea from https://github.com/guardian/iframe-messenger
+  function getMaxElement(side, elements) {
+    var elementsLength = elements.length,
+      elVal = 0,
+      maxVal = 0,
+      Side = capitalizeFirstLetter(side),
+      timer = getNow()
+
+    for (var i = 0; i < elementsLength; i++) {
+      elVal =
+        elements[i].getBoundingClientRect()[side] +
+        getComputedStyle('margin' + Side, elements[i])
+      if (elVal > maxVal) {
+        maxVal = elVal
+      }
+    }
+
+    timer = getNow() - timer
+
+    log('Parsed ' + elementsLength + ' HTML elements')
+    log('Element position calculated in ' + timer + 'ms')
+
+    chkEventThottle(timer)
+
+    return maxVal
+  }
+
+  function getAllMeasurements(dimention) {
+    return [
+      dimention.bodyOffset(),
+      dimention.bodyScroll(),
+      dimention.documentElementOffset(),
+      dimention.documentElementScroll()
+    ]
+  }
+
+  function getTaggedElements(side, tag) {
+    function noTaggedElementsFound() {
+      warn('No tagged elements (' + tag + ') found on page')
+      return document.querySelectorAll('body *')
+    }
+
+    var elements = document.querySelectorAll('[' + tag + ']')
+
+    if (0 === elements.length) noTaggedElementsFound()
+
+    return getMaxElement(side, elements)
+  }
+
+  function getAllElements() {
+    return document.querySelectorAll('body *')
+  }
+
+  var getHeight = {
+      bodyOffset: function getBodyOffsetHeight() {
+        return (
+          document.body.offsetHeight +
+          getComputedStyle('marginTop') +
+          getComputedStyle('marginBottom')
+        )
+      },
+
+      offset: function() {
+        return getHeight.bodyOffset() // Backwards compatability
+      },
+
+      bodyScroll: function getBodyScrollHeight() {
+        return document.body.scrollHeight
+      },
+
+      custom: function getCustomWidth() {
+        return customCalcMethods.height()
+      },
+
+      documentElementOffset: function getDEOffsetHeight() {
+        return document.documentElement.offsetHeight
+      },
+
+      documentElementScroll: function getDEScrollHeight() {
+        return document.documentElement.scrollHeight
+      },
+
+      max: function getMaxHeight() {
+        return Math.max.apply(null, getAllMeasurements(getHeight))
+      },
+
+      min: function getMinHeight() {
+        return Math.min.apply(null, getAllMeasurements(getHeight))
+      },
+
+      grow: function growHeight() {
+        return getHeight.max() // Run max without the forced downsizing
+      },
+
+      lowestElement: function getBestHeight() {
+        return Math.max(
+          getHeight.bodyOffset() || getHeight.documentElementOffset(),
+          getMaxElement('bottom', getAllElements())
+        )
+      },
+
+      taggedElement: function getTaggedElementsHeight() {
+        return getTaggedElements('bottom', 'data-iframe-height')
+      }
+    },
+    getWidth = {
+      bodyScroll: function getBodyScrollWidth() {
+        return document.body.scrollWidth
+      },
+
+      bodyOffset: function getBodyOffsetWidth() {
+        return document.body.offsetWidth
+      },
+
+      custom: function getCustomWidth() {
+        return customCalcMethods.width()
+      },
+
+      documentElementScroll: function getDEScrollWidth() {
+        return document.documentElement.scrollWidth
+      },
+
+      documentElementOffset: function getDEOffsetWidth() {
+        return document.documentElement.offsetWidth
+      },
+
+      scroll: function getMaxWidth() {
+        return Math.max(getWidth.bodyScroll(), getWidth.documentElementScroll())
+      },
+
+      max: function getMaxWidth() {
+        return Math.max.apply(null, getAllMeasurements(getWidth))
+      },
+
+      min: function getMinWidth() {
+        return Math.min.apply(null, getAllMeasurements(getWidth))
+      },
+
+      rightMostElement: function rightMostElement() {
+        return getMaxElement('right', getAllElements())
+      },
+
+      taggedElement: function getTaggedElementsWidth() {
+        return getTaggedElements('right', 'data-iframe-width')
+      }
+    }
+
+  function sizeIFrame(
+    triggerEvent,
+    triggerEventDesc,
+    customHeight,
+    customWidth
+  ) {
+    function resizeIFrame() {
+      height = currentHeight
+      width = currentWidth
+
+      sendMsg(height, width, triggerEvent)
+    }
+
+    function isSizeChangeDetected() {
+      function checkTolarance(a, b) {
+        var retVal = Math.abs(a - b) <= tolerance
+        return !retVal
+      }
+
+      currentHeight =
+        undefined !== customHeight ? customHeight : getHeight[heightCalcMode]()
+      currentWidth =
+        undefined !== customWidth ? customWidth : getWidth[widthCalcMode]()
+
+      return (
+        checkTolarance(height, currentHeight) ||
+        (calculateWidth && checkTolarance(width, currentWidth))
+      )
+    }
+
+    function isForceResizableEvent() {
+      return !(triggerEvent in { init: 1, interval: 1, size: 1 })
+    }
+
+    function isForceResizableCalcMode() {
+      return (
+        heightCalcMode in resetRequiredMethods ||
+        (calculateWidth && widthCalcMode in resetRequiredMethods)
+      )
+    }
+
+    function logIgnored() {
+      log('No change in size detected')
+    }
+
+    function checkDownSizing() {
+      if (isForceResizableEvent() && isForceResizableCalcMode()) {
+        resetIFrame(triggerEventDesc)
+      } else if (!(triggerEvent in { interval: 1 })) {
+        logIgnored()
+      }
+    }
+
+    var currentHeight, currentWidth
+
+    if (isSizeChangeDetected() || 'init' === triggerEvent) {
+      lockTrigger()
+      resizeIFrame()
+    } else {
+      checkDownSizing()
+    }
+  }
+
+  var sizeIFrameThrottled = throttle(sizeIFrame)
+
+  function sendSize(triggerEvent, triggerEventDesc, customHeight, customWidth) {
+    function recordTrigger() {
+      if (!(triggerEvent in { reset: 1, resetPage: 1, init: 1 })) {
+        log('Trigger event: ' + triggerEventDesc)
+      }
+    }
+
+    function isDoubleFiredEvent() {
+      return triggerLocked && triggerEvent in doubleEventList
+    }
+
+    if (!isDoubleFiredEvent()) {
+      recordTrigger()
+      if (triggerEvent === 'init') {
+        sizeIFrame(triggerEvent, triggerEventDesc, customHeight, customWidth)
+      } else {
+        sizeIFrameThrottled(
+          triggerEvent,
+          triggerEventDesc,
+          customHeight,
+          customWidth
+        )
+      }
+    } else {
+      log('Trigger event cancelled: ' + triggerEvent)
+    }
+  }
+
+  function lockTrigger() {
+    if (!triggerLocked) {
+      triggerLocked = true
+      log('Trigger event lock on')
+    }
+    clearTimeout(triggerLockedTimer)
+    triggerLockedTimer = setTimeout(function() {
+      triggerLocked = false
+      log('Trigger event lock off')
+      log('--')
+    }, eventCancelTimer)
+  }
+
+  function triggerReset(triggerEvent) {
+    height = getHeight[heightCalcMode]()
+    width = getWidth[widthCalcMode]()
+
+    sendMsg(height, width, triggerEvent)
+  }
+
+  function resetIFrame(triggerEventDesc) {
+    var hcm = heightCalcMode
+    heightCalcMode = heightCalcModeDefault
+
+    log('Reset trigger event: ' + triggerEventDesc)
+    lockTrigger()
+    triggerReset('reset')
+
+    heightCalcMode = hcm
+  }
+
+  function sendMsg(height, width, triggerEvent, msg, targetOrigin) {
+    function setTargetOrigin() {
+      if (undefined === targetOrigin) {
+        targetOrigin = targetOriginDefault
+      } else {
+        log('Message targetOrigin: ' + targetOrigin)
+      }
+    }
+
+    function sendToParent() {
+      var size = height + ':' + width,
+        message =
+          myID +
+          ':' +
+          size +
+          ':' +
+          triggerEvent +
+          (undefined !== msg ? ':' + msg : '')
+
+      log('Sending message to host page (' + message + ')')
+      target.postMessage(msgID + message, targetOrigin)
+    }
+
+    if (true === sendPermit) {
+      setTargetOrigin()
+      sendToParent()
+    }
+  }
+
+  function receiver(event) {
+    var processRequestFromParent = {
+      init: function initFromParent() {
+        initMsg = event.data
+        target = event.source
+
+        init()
+        firstRun = false
+        setTimeout(function() {
+          initLock = false
+        }, eventCancelTimer)
+      },
+
+      reset: function resetFromParent() {
+        if (!initLock) {
+          log('Page size reset by host page')
+          triggerReset('resetPage')
+        } else {
+          log('Page reset ignored by init')
+        }
+      },
+
+      resize: function resizeFromParent() {
+        sendSize('resizeParent', 'Parent window requested size check')
+      },
+
+      moveToAnchor: function moveToAnchorF() {
+        inPageLinks.findTarget(getData())
+      },
+      inPageLink: function inPageLinkF() {
+        this.moveToAnchor()
+      }, // Backward compatability
+
+      pageInfo: function pageInfoFromParent() {
+        var msgBody = getData()
+        log('PageInfoFromParent called from parent: ' + msgBody)
+        onPageInfo(JSON.parse(msgBody))
+        log(' --')
+      },
+
+      message: function messageFromParent() {
+        var msgBody = getData()
+
+        log('onMessage called from parent: ' + msgBody)
+        // eslint-disable-next-line sonarjs/no-extra-arguments
+        onMessage(JSON.parse(msgBody))
+        log(' --')
+      }
+    }
+
+    function isMessageForUs() {
+      return msgID === ('' + event.data).substr(0, msgIdLen) // ''+ Protects against non-string messages
+    }
+
+    function getMessageType() {
+      return event.data.split(']')[1].split(':')[0]
+    }
+
+    function getData() {
+      return event.data.substr(event.data.indexOf(':') + 1)
+    }
+
+    function isMiddleTier() {
+      return (
+        (!(typeof module !== 'undefined' && module.exports) &&
+          'iFrameResize' in window) ||
+        ('jQuery' in window && 'iFrameResize' in window.jQuery.prototype)
+      )
+    }
+
+    function isInitMsg() {
+      // Test if this message is from a child below us. This is an ugly test, however, updating
+      // the message format would break backwards compatibity.
+      return event.data.split(':')[2] in { true: 1, false: 1 }
+    }
+
+    function callFromParent() {
+      var messageType = getMessageType()
+
+      if (messageType in processRequestFromParent) {
+        processRequestFromParent[messageType]()
+      } else if (!isMiddleTier() && !isInitMsg()) {
+        warn('Unexpected message (' + event.data + ')')
+      }
+    }
+
+    function processMessage() {
+      if (false === firstRun) {
+        callFromParent()
+      } else if (isInitMsg()) {
+        processRequestFromParent.init()
+      } else {
+        log(
+          'Ignored message of type "' +
+            getMessageType() +
+            '". Received before initialization.'
+        )
+      }
+    }
+
+    if (isMessageForUs()) {
+      processMessage()
+    }
+  }
+
+  // Normally the parent kicks things off when it detects the iFrame has loaded.
+  // If this script is async-loaded, then tell parent page to retry init.
+  function chkLateLoaded() {
+    if ('loading' !== document.readyState) {
+      window.parent.postMessage('[iFrameResizerChild]Ready', '*')
+    }
+  }
+
+  addEventListener(window, 'message', receiver)
+  addEventListener(window, 'readystatechange', chkLateLoaded)
+  chkLateLoaded()
+
+  
+})()
+;
+
+
+/*!
+ * jQuery JavaScript Library v3.3.1
+ * https://jquery.com/
+ *
+ * Includes Sizzle.js
+ * https://sizzlejs.com/
+ *
+ * Copyright JS Foundation and other contributors
+ * Released under the MIT license
+ * https://jquery.org/license
+ *
+ * Date: 2018-01-20T17:24Z
+ */
+
+( function( global, factory ) {
+
+	"use strict";
+
+	if ( typeof module === "object" && typeof module.exports === "object" ) {
+
+		// For CommonJS and CommonJS-like environments where a proper `window`
+		// is present, execute the factory and get jQuery.
+		// For environments that do not have a `window` with a `document`
+		// (such as Node.js), expose a factory as module.exports.
+		// This accentuates the need for the creation of a real `window`.
+		// e.g. var jQuery = require("jquery")(window);
+		// See ticket #14549 for more info.
+		module.exports = global.document ?
+			factory( global, true ) :
+			function( w ) {
+				if ( !w.document ) {
+					throw new Error( "jQuery requires a window with a document" );
+				}
+				return factory( w );
+			};
+	} else {
+		factory( global );
+	}
+
+// Pass this if window is not defined yet
+} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
+
+// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1
+// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode
+// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common
+// enough that all such attempts are guarded in a try block.
+"use strict";
+
+var arr = [];
+
+var document = window.document;
+
+var getProto = Object.getPrototypeOf;
+
+var slice = arr.slice;
+
+var concat = arr.concat;
+
+var push = arr.push;
+
+var indexOf = arr.indexOf;
+
+var class2type = {};
+
+var toString = class2type.toString;
+
+var hasOwn = class2type.hasOwnProperty;
+
+var fnToString = hasOwn.toString;
+
+var ObjectFunctionString = fnToString.call( Object );
+
+var support = {};
+
+var isFunction = function isFunction( obj ) {
+
+      // Support: Chrome <=57, Firefox <=52
+      // In some browsers, typeof returns "function" for HTML <object> elements
+      // (i.e., `typeof document.createElement( "object" ) === "function"`).
+      // We don't want to classify *any* DOM node as a function.
+      return typeof obj === "function" && typeof obj.nodeType !== "number";
+  };
+
+
+var isWindow = function isWindow( obj ) {
+		return obj != null && obj === obj.window;
+	};
+
+
+
+
+	var preservedScriptAttributes = {
+		type: true,
+		src: true,
+		noModule: true
+	};
+
+	function DOMEval( code, doc, node ) {
+		doc = doc || document;
+
+		var i,
+			script = doc.createElement( "script" );
+
+		script.text = code;
+		if ( node ) {
+			for ( i in preservedScriptAttributes ) {
+				if ( node[ i ] ) {
+					script[ i ] = node[ i ];
+				}
+			}
+		}
+		doc.head.appendChild( script ).parentNode.removeChild( script );
+	}
+
+
+function toType( obj ) {
+	if ( obj == null ) {
+		return obj + "";
+	}
+
+	// Support: Android <=2.3 only (functionish RegExp)
+	return typeof obj === "object" || typeof obj === "function" ?
+		class2type[ toString.call( obj ) ] || "object" :
+		typeof obj;
+}
+/* global Symbol */
+// Defining this global in .eslintrc.json would create a danger of using the global
+// unguarded in another place, it seems safer to define global only for this module
+
+
+
+var
+	version = "3.3.1",
+
+	// Define a local copy of jQuery
+	jQuery = function( selector, context ) {
+
+		// The jQuery object is actually just the init constructor 'enhanced'
+		// Need init if jQuery is called (just allow error to be thrown if not included)
+		return new jQuery.fn.init( selector, context );
+	},
+
+	// Support: Android <=4.0 only
+	// Make sure we trim BOM and NBSP
+	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
+
+jQuery.fn = jQuery.prototype = {
+
+	// The current version of jQuery being used
+	jquery: version,
+
+	constructor: jQuery,
+
+	// The default length of a jQuery object is 0
+	length: 0,
+
+	toArray: function() {
+		return slice.call( this );
+	},
+
+	// Get the Nth element in the matched element set OR
+	// Get the whole matched element set as a clean array
+	get: function( num ) {
+
+		// Return all the elements in a clean array
+		if ( num == null ) {
+			return slice.call( this );
+		}
+
+		// Return just the one element from the set
+		return num < 0 ? this[ num + this.length ] : this[ num ];
+	},
+
+	// Take an array of elements and push it onto the stack
+	// (returning the new matched element set)
+	pushStack: function( elems ) {
+
+		// Build a new jQuery matched element set
+		var ret = jQuery.merge( this.constructor(), elems );
+
+		// Add the old object onto the stack (as a reference)
+		ret.prevObject = this;
+
+		// Return the newly-formed element set
+		return ret;
+	},
+
+	// Execute a callback for every element in the matched set.
+	each: function( callback ) {
+		return jQuery.each( this, callback );
+	},
+
+	map: function( callback ) {
+		return this.pushStack( jQuery.map( this, function( elem, i ) {
+			return callback.call( elem, i, elem );
+		} ) );
+	},
+
+	slice: function() {
+		return this.pushStack( slice.apply( this, arguments ) );
+	},
+
+	first: function() {
+		return this.eq( 0 );
+	},
+
+	last: function() {
+		return this.eq( -1 );
+	},
+
+	eq: function( i ) {
+		var len = this.length,
+			j = +i + ( i < 0 ? len : 0 );
+		return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );
+	},
+
+	end: function() {
+		return this.prevObject || this.constructor();
+	},
+
+	// For internal use only.
+	// Behaves like an Array's method, not like a jQuery method.
+	push: push,
+	sort: arr.sort,
+	splice: arr.splice
+};
+
+jQuery.extend = jQuery.fn.extend = function() {
+	var options, name, src, copy, copyIsArray, clone,
+		target = arguments[ 0 ] || {},
+		i = 1,
+		length = arguments.length,
+		deep = false;
+
+	// Handle a deep copy situation
+	if ( typeof target === "boolean" ) {
+		deep = target;
+
+		// Skip the boolean and the target
+		target = arguments[ i ] || {};
+		i++;
+	}
+
+	// Handle case when target is a string or something (possible in deep copy)
+	if ( typeof target !== "object" && !isFunction( target ) ) {
+		target = {};
+	}
+
+	// Extend jQuery itself if only one argument is passed
+	if ( i === length ) {
+		target = this;
+		i--;
+	}
+
+	for ( ; i < length; i++ ) {
+
+		// Only deal with non-null/undefined values
+		if ( ( options = arguments[ i ] ) != null ) {
+
+			// Extend the base object
+			for ( name in options ) {
+				src = target[ name ];
+				copy = options[ name ];
+
+				// Prevent never-ending loop
+				if ( target === copy ) {
+					continue;
+				}
+
+				// Recurse if we're merging plain objects or arrays
+				if ( deep && copy && ( jQuery.isPlainObject( copy ) ||
+					( copyIsArray = Array.isArray( copy ) ) ) ) {
+
+					if ( copyIsArray ) {
+						copyIsArray = false;
+						clone = src && Array.isArray( src ) ? src : [];
+
+					} else {
+						clone = src && jQuery.isPlainObject( src ) ? src : {};
+					}
+
+					// Never move original objects, clone them
+					target[ name ] = jQuery.extend( deep, clone, copy );
+
+				// Don't bring in undefined values
+				} else if ( copy !== undefined ) {
+					target[ name ] = copy;
+				}
+			}
+		}
+	}
+
+	// Return the modified object
+	return target;
+};
+
+jQuery.extend( {
+
+	// Unique for each copy of jQuery on the page
+	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
+
+	// Assume jQuery is ready without the ready module
+	isReady: true,
+
+	error: function( msg ) {
+		throw new Error( msg );
+	},
+
+	noop: function() {},
+
+	isPlainObject: function( obj ) {
+		var proto, Ctor;
+
+		// Detect obvious negatives
+		// Use toString instead of jQuery.type to catch host objects
+		if ( !obj || toString.call( obj ) !== "[object Object]" ) {
+			return false;
+		}
+
+		proto = getProto( obj );
+
+		// Objects with no prototype (e.g., `Object.create( null )`) are plain
+		if ( !proto ) {
+			return true;
+		}
+
+		// Objects with prototype are plain iff they were constructed by a global Object function
+		Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor;
+		return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString;
+	},
+
+	isEmptyObject: function( obj ) {
+
+		/* eslint-disable no-unused-vars */
+		// See https://github.com/eslint/eslint/issues/6125
+		var name;
+
+		for ( name in obj ) {
+			return false;
+		}
+		return true;
+	},
+
+	// Evaluates a script in a global context
+	globalEval: function( code ) {
+		DOMEval( code );
+	},
+
+	each: function( obj, callback ) {
+		var length, i = 0;
+
+		if ( isArrayLike( obj ) ) {
+			length = obj.length;
+			for ( ; i < length; i++ ) {
+				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+					break;
+				}
+			}
+		} else {
+			for ( i in obj ) {
+				if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {
+					break;
+				}
+			}
+		}
+
+		return obj;
+	},
+
+	// Support: Android <=4.0 only
+	trim: function( text ) {
+		return text == null ?
+			"" :
+			( text + "" ).replace( rtrim, "" );
+	},
+
+	// results is for internal usage only
+	makeArray: function( arr, results ) {
+		var ret = results || [];
+
+		if ( arr != null ) {
+			if ( isArrayLike( Object( arr ) ) ) {
+				jQuery.merge( ret,
+					typeof arr === "string" ?
+					[ arr ] : arr
+				);
+			} else {
+				push.call( ret, arr );
+			}
+		}
+
+		return ret;
+	},
+
+	inArray: function( elem, arr, i ) {
+		return arr == null ? -1 : indexOf.call( arr, elem, i );
+	},
+
+	// Support: Android <=4.0 only, PhantomJS 1 only
+	// push.apply(_, arraylike) throws on ancient WebKit
+	merge: function( first, second ) {
+		var len = +second.length,
+			j = 0,
+			i = first.length;
+
+		for ( ; j < len; j++ ) {
+			first[ i++ ] = second[ j ];
+		}
+
+		first.length = i;
+
+		return first;
+	},
+
+	grep: function( elems, callback, invert ) {
+		var callbackInverse,
+			matches = [],
+			i = 0,
+			length = elems.length,
+			callbackExpect = !invert;
+
+		// Go through the array, only saving the items
+		// that pass the validator function
+		for ( ; i < length; i++ ) {
+			callbackInverse = !callback( elems[ i ], i );
+			if ( callbackInverse !== callbackExpect ) {
+				matches.push( elems[ i ] );
+			}
+		}
+
+		return matches;
+	},
+
+	// arg is for internal usage only
+	map: function( elems, callback, arg ) {
+		var length, value,
+			i = 0,
+			ret = [];
+
+		// Go through the array, translating each of the items to their new values
+		if ( isArrayLike( elems ) ) {
+			length = elems.length;
+			for ( ; i < length; i++ ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+
+		// Go through every key on the object,
+		} else {
+			for ( i in elems ) {
+				value = callback( elems[ i ], i, arg );
+
+				if ( value != null ) {
+					ret.push( value );
+				}
+			}
+		}
+
+		// Flatten any nested arrays
+		return concat.apply( [], ret );
+	},
+
+	// A global GUID counter for objects
+	guid: 1,
+
+	// jQuery.support is not used in Core but other projects attach their
+	// properties to it so it needs to exist.
+	support: support
+} );
+
+if ( typeof Symbol === "function" ) {
+	jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];
+}
+
+// Populate the class2type map
+jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ),
+function( i, name ) {
+	class2type[ "[object " + name + "]" ] = name.toLowerCase();
+} );
+
+function isArrayLike( obj ) {
+
+	// Support: real iOS 8.2 only (not reproducible in simulator)
+	// `in` check used to prevent JIT error (gh-2145)
+	// hasOwn isn't used here due to false negatives
+	// regarding Nodelist length in IE
+	var length = !!obj && "length" in obj && obj.length,
+		type = toType( obj );
+
+	if ( isFunction( obj ) || isWindow( obj ) ) {
+		return false;
+	}
+
+	return type === "array" || length === 0 ||
+		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
+}
+var Sizzle =
+/*!
+ * Sizzle CSS Selector Engine v2.3.3
+ * https://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-08-08
+ */
+(function( window ) {
+
+var i,
+	support,
+	Expr,
+	getText,
+	isXML,
+	tokenize,
+	compile,
+	select,
+	outermostContext,
+	sortInput,
+	hasDuplicate,
+
+	// Local document vars
+	setDocument,
+	document,
+	docElem,
+	documentIsHTML,
+	rbuggyQSA,
+	rbuggyMatches,
+	matches,
+	contains,
+
+	// Instance-specific data
+	expando = "sizzle" + 1 * new Date(),
+	preferredDoc = window.document,
+	dirruns = 0,
+	done = 0,
+	classCache = createCache(),
+	tokenCache = createCache(),
+	compilerCache = createCache(),
+	sortOrder = function( a, b ) {
+		if ( a === b ) {
+			hasDuplicate = true;
+		}
+		return 0;
+	},
+
+	// Instance methods
+	hasOwn = ({}).hasOwnProperty,
+	arr = [],
+	pop = arr.pop,
+	push_native = arr.push,
+	push = arr.push,
+	slice = arr.slice,
+	// Use a stripped-down indexOf as it's faster than native
+	// https://jsperf.com/thor-indexof-vs-for/5
+	indexOf = function( list, elem ) {
+		var i = 0,
+			len = list.length;
+		for ( ; i < len; i++ ) {
+			if ( list[i] === elem ) {
+				return i;
+			}
+		}
+		return -1;
+	},
+
+	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
+
+	// Regular expressions
+
+	// http://www.w3.org/TR/css3-selectors/#whitespace
+	whitespace = "[\\x20\\t\\r\\n\\f]",
+
+	// http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
+	identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+",
+
+	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
+	attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace +
+		// Operator (capture 2)
+		"*([*^$|!~]?=)" + whitespace +
+		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
+		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
+		"*\\]",
+
+	pseudos = ":(" + identifier + ")(?:\\((" +
+		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
+		// 1. quoted (capture 3; capture 4 or capture 5)
+		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
+		// 2. simple (capture 6)
+		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
+		// 3. anything else (capture 2)
+		".*" +
+		")\\)|)",
+
+	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
+	rwhitespace = new RegExp( whitespace + "+", "g" ),
+	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
+
+	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
+	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
+
+	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
+
+	rpseudo = new RegExp( pseudos ),
+	ridentifier = new RegExp( "^" + identifier + "$" ),
+
+	matchExpr = {
+		"ID": new RegExp( "^#(" + identifier + ")" ),
+		"CLASS": new RegExp( "^\\.(" + identifier + ")" ),
+		"TAG": new RegExp( "^(" + identifier + "|[*])" ),
+		"ATTR": new RegExp( "^" + attributes ),
+		"PSEUDO": new RegExp( "^" + pseudos ),
+		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
+			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
+			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
+		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
+		// For use in libraries implementing .is()
+		// We use this for POS matching in `select`
+		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
+			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
+	},
+
+	rinputs = /^(?:input|select|textarea|button)$/i,
+	rheader = /^h\d$/i,
+
+	rnative = /^[^{]+\{\s*\[native \w/,
+
+	// Easily-parseable/retrievable ID or TAG or CLASS selectors
+	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
+
+	rsibling = /[+~]/,
+
+	// CSS escapes
+	// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
+	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
+	funescape = function( _, escaped, escapedWhitespace ) {
+		var high = "0x" + escaped - 0x10000;
+		// NaN means non-codepoint
+		// Support: Firefox<24
+		// Workaround erroneous numeric interpretation of +"0x"
+		return high !== high || escapedWhitespace ?
+			escaped :
+			high < 0 ?
+				// BMP codepoint
+				String.fromCharCode( high + 0x10000 ) :
+				// Supplemental Plane codepoint (surrogate pair)
+				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
+	},
+
+	// CSS string/identifier serialization
+	// https://drafts.csswg.org/cssom/#common-serializing-idioms
+	rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,
+	fcssescape = function( ch, asCodePoint ) {
+		if ( asCodePoint ) {
+
+			// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
+			if ( ch === "\0" ) {
+				return "\uFFFD";
+			}
+
+			// Control characters and (dependent upon position) numbers get escaped as code points
+			return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " ";
+		}
+
+		// Other potentially-special ASCII characters get backslash-escaped
+		return "\\" + ch;
+	},
+
+	// Used for iframes
+	// See setDocument()
+	// Removing the function wrapper causes a "Permission Denied"
+	// error in IE
+	unloadHandler = function() {
+		setDocument();
+	},
+
+	disabledAncestor = addCombinator(
+		function( elem ) {
+			return elem.disabled === true && ("form" in elem || "label" in elem);
+		},
+		{ dir: "parentNode", next: "legend" }
+	);
+
+// Optimize for push.apply( _, NodeList )
+try {
+	push.apply(
+		(arr = slice.call( preferredDoc.childNodes )),
+		preferredDoc.childNodes
+	);
+	// Support: Android<4.0
+	// Detect silently failing push.apply
+	arr[ preferredDoc.childNodes.length ].nodeType;
+} catch ( e ) {
+	push = { apply: arr.length ?
+
+		// Leverage slice if possible
+		function( target, els ) {
+			push_native.apply( target, slice.call(els) );
+		} :
+
+		// Support: IE<9
+		// Otherwise append directly
+		function( target, els ) {
+			var j = target.length,
+				i = 0;
+			// Can't trust NodeList.length
+			while ( (target[j++] = els[i++]) ) {}
+			target.length = j - 1;
+		}
+	};
+}
+
+function Sizzle( selector, context, results, seed ) {
+	var m, i, elem, nid, match, groups, newSelector,
+		newContext = context && context.ownerDocument,
+
+		// nodeType defaults to 9, since context defaults to document
+		nodeType = context ? context.nodeType : 9;
+
+	results = results || [];
+
+	// Return early from calls with invalid selector or context
+	if ( typeof selector !== "string" || !selector ||
+		nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {
+
+		return results;
+	}
+
+	// Try to shortcut find operations (as opposed to filters) in HTML documents
+	if ( !seed ) {
+
+		if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
+			setDocument( context );
+		}
+		context = context || document;
+
+		if ( documentIsHTML ) {
+
+			// If the selector is sufficiently simple, try using a "get*By*" DOM method
+			// (excepting DocumentFragment context, where the methods don't exist)
+			if ( nodeType !== 11 && (match = rquickExpr.exec( selector )) ) {
+
+				// ID selector
+				if ( (m = match[1]) ) {
+
+					// Document context
+					if ( nodeType === 9 ) {
+						if ( (elem = context.getElementById( m )) ) {
+
+							// Support: IE, Opera, Webkit
+							// TODO: identify versions
+							// getElementById can match elements by name instead of ID
+							if ( elem.id === m ) {
+								results.push( elem );
+								return results;
+							}
+						} else {
+							return results;
+						}
+
+					// Element context
+					} else {
+
+						// Support: IE, Opera, Webkit
+						// TODO: identify versions
+						// getElementById can match elements by name instead of ID
+						if ( newContext && (elem = newContext.getElementById( m )) &&
+							contains( context, elem ) &&
+							elem.id === m ) {
+
+							results.push( elem );
+							return results;
+						}
+					}
+
+				// Type selector
+				} else if ( match[2] ) {
+					push.apply( results, context.getElementsByTagName( selector ) );
+					return results;
+
+				// Class selector
+				} else if ( (m = match[3]) && support.getElementsByClassName &&
+					context.getElementsByClassName ) {
+
+					push.apply( results, context.getElementsByClassName( m ) );
+					return results;
+				}
+			}
+
+			// Take advantage of querySelectorAll
+			if ( support.qsa &&
+				!compilerCache[ selector + " " ] &&
+				(!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
+
+				if ( nodeType !== 1 ) {
+					newContext = context;
+					newSelector = selector;
+
+				// qSA looks outside Element context, which is not what we want
+				// Thanks to Andrew Dupont for this workaround technique
+				// Support: IE <=8
+				// Exclude object elements
+				} else if ( context.nodeName.toLowerCase() !== "object" ) {
+
+					// Capture the context ID, setting it first if necessary
+					if ( (nid = context.getAttribute( "id" )) ) {
+						nid = nid.replace( rcssescape, fcssescape );
+					} else {
+						context.setAttribute( "id", (nid = expando) );
+					}
+
+					// Prefix every selector in the list
+					groups = tokenize( selector );
+					i = groups.length;
+					while ( i-- ) {
+						groups[i] = "#" + nid + " " + toSelector( groups[i] );
+					}
+					newSelector = groups.join( "," );
+
+					// Expand context for sibling selectors
+					newContext = rsibling.test( selector ) && testContext( context.parentNode ) ||
+						context;
+				}
+
+				if ( newSelector ) {
+					try {
+						push.apply( results,
+							newContext.querySelectorAll( newSelector )
+						);
+						return results;
+					} catch ( qsaError ) {
+					} finally {
+						if ( nid === expando ) {
+							context.removeAttribute( "id" );
+						}
+					}
+				}
+			}
+		}
+	}
+
+	// All others
+	return select( selector.replace( rtrim, "$1" ), context, results, seed );
+}
+
+/**
+ * Create key-value caches of limited size
+ * @returns {function(string, object)} Returns the Object data after storing it on itself with
+ *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
+ *	deleting the oldest entry
+ */
+function createCache() {
+	var keys = [];
+
+	function cache( key, value ) {
+		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
+		if ( keys.push( key + " " ) > Expr.cacheLength ) {
+			// Only keep the most recent entries
+			delete cache[ keys.shift() ];
+		}
+		return (cache[ key + " " ] = value);
+	}
+	return cache;
+}
+
+/**
+ * Mark a function for special use by Sizzle
+ * @param {Function} fn The function to mark
+ */
+function markFunction( fn ) {
+	fn[ expando ] = true;
+	return fn;
+}
+
+/**
+ * Support testing using an element
+ * @param {Function} fn Passed the created element and returns a boolean result
+ */
+function assert( fn ) {
+	var el = document.createElement("fieldset");
+
+	try {
+		return !!fn( el );
+	} catch (e) {
+		return false;
+	} finally {
+		// Remove from its parent by default
+		if ( el.parentNode ) {
+			el.parentNode.removeChild( el );
+		}
+		// release memory in IE
+		el = null;
+	}
+}
+
+/**
+ * Adds the same handler for all of the specified attrs
+ * @param {String} attrs Pipe-separated list of attributes
+ * @param {Function} handler The method that will be applied
+ */
+function addHandle( attrs, handler ) {
+	var arr = attrs.split("|"),
+		i = arr.length;
+
+	while ( i-- ) {
+		Expr.attrHandle[ arr[i] ] = handler;
+	}
+}
+
+/**
+ * Checks document order of two siblings
+ * @param {Element} a
+ * @param {Element} b
+ * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
+ */
+function siblingCheck( a, b ) {
+	var cur = b && a,
+		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
+			a.sourceIndex - b.sourceIndex;
+
+	// Use IE sourceIndex if available on both nodes
+	if ( diff ) {
+		return diff;
+	}
+
+	// Check if b follows a
+	if ( cur ) {
+		while ( (cur = cur.nextSibling) ) {
+			if ( cur === b ) {
+				return -1;
+			}
+		}
+	}
+
+	return a ? 1 : -1;
+}
+
+/**
+ * Returns a function to use in pseudos for input types
+ * @param {String} type
+ */
+function createInputPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return name === "input" && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for buttons
+ * @param {String} type
+ */
+function createButtonPseudo( type ) {
+	return function( elem ) {
+		var name = elem.nodeName.toLowerCase();
+		return (name === "input" || name === "button") && elem.type === type;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for :enabled/:disabled
+ * @param {Boolean} disabled true for :disabled; false for :enabled
+ */
+function createDisabledPseudo( disabled ) {
+
+	// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable
+	return function( elem ) {
+
+		// Only certain elements can match :enabled or :disabled
+		// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled
+		// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled
+		if ( "form" in elem ) {
+
+			// Check for inherited disabledness on relevant non-disabled elements:
+			// * listed form-associated elements in a disabled fieldset
+			//   https://html.spec.whatwg.org/multipage/forms.html#category-listed
+			//   https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled
+			// * option elements in a disabled optgroup
+			//   https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled
+			// All such elements have a "form" property.
+			if ( elem.parentNode && elem.disabled === false ) {
+
+				// Option elements defer to a parent optgroup if present
+				if ( "label" in elem ) {
+					if ( "label" in elem.parentNode ) {
+						return elem.parentNode.disabled === disabled;
+					} else {
+						return elem.disabled === disabled;
+					}
+				}
+
+				// Support: IE 6 - 11
+				// Use the isDisabled shortcut property to check for disabled fieldset ancestors
+				return elem.isDisabled === disabled ||
+
+					// Where there is no isDisabled, check manually
+					/* jshint -W018 */
+					elem.isDisabled !== !disabled &&
+						disabledAncestor( elem ) === disabled;
+			}
+
+			return elem.disabled === disabled;
+
+		// Try to winnow out elements that can't be disabled before trusting the disabled property.
+		// Some victims get caught in our net (label, legend, menu, track), but it shouldn't
+		// even exist on them, let alone have a boolean value.
+		} else if ( "label" in elem ) {
+			return elem.disabled === disabled;
+		}
+
+		// Remaining elements are neither :enabled nor :disabled
+		return false;
+	};
+}
+
+/**
+ * Returns a function to use in pseudos for positionals
+ * @param {Function} fn
+ */
+function createPositionalPseudo( fn ) {
+	return markFunction(function( argument ) {
+		argument = +argument;
+		return markFunction(function( seed, matches ) {
+			var j,
+				matchIndexes = fn( [], seed.length, argument ),
+				i = matchIndexes.length;
+
+			// Match elements found at the specified indexes
+			while ( i-- ) {
+				if ( seed[ (j = matchIndexes[i]) ] ) {
+					seed[j] = !(matches[j] = seed[j]);
+				}
+			}
+		});
+	});
+}
+
+/**
+ * Checks a node for validity as a Sizzle context
+ * @param {Element|Object=} context
+ * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
+ */
+function testContext( context ) {
+	return context && typeof context.getElementsByTagName !== "undefined" && context;
+}
+
+// Expose support vars for convenience
+support = Sizzle.support = {};
+
+/**
+ * Detects XML nodes
+ * @param {Element|Object} elem An element or a document
+ * @returns {Boolean} True iff elem is a non-HTML XML node
+ */
+isXML = Sizzle.isXML = function( elem ) {
+	// documentElement is verified for cases where it doesn't yet exist
+	// (such as loading iframes in IE - #4833)
+	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+	return documentElement ? documentElement.nodeName !== "HTML" : false;
+};
+
+/**
+ * Sets document-related variables once based on the current document
+ * @param {Element|Object} [doc] An element or document object to use to set the document
+ * @returns {Object} Returns the current document
+ */
+setDocument = Sizzle.setDocument = function( node ) {
+	var hasCompare, subWindow,
+		doc = node ? node.ownerDocument || node : preferredDoc;
+
+	// Return early if doc is invalid or already selected
+	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
+		return document;
+	}
+
+	// Update global variables
+	document = doc;
+	docElem = document.documentElement;
+	documentIsHTML = !isXML( document );
+
+	// Support: IE 9-11, Edge
+	// Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936)
+	if ( preferredDoc !== document &&
+		(subWindow = document.defaultView) && subWindow.top !== subWindow ) {
+
+		// Support: IE 11, Edge
+		if ( subWindow.addEventListener ) {
+			subWindow.addEventListener( "unload", unloadHandler, false );
+
+		// Support: IE 9 - 10 only
+		} else if ( subWindow.attachEvent ) {
+			subWindow.attachEvent( "onunload", unloadHandler );
+		}
+	}
+
+	/* Attributes
+	---------------------------------------------------------------------- */
+
+	// Support: IE<8
+	// Verify that getAttribute really returns attributes and not properties
+	// (excepting IE8 booleans)
+	support.attributes = assert(function( el ) {
+		el.className = "i";
+		return !el.getAttribute("className");
+	});
+
+	/* getElement(s)By*
+	---------------------------------------------------------------------- */
+
+	// Check if getElementsByTagName("*") returns only elements
+	support.getElementsByTagName = assert(function( el ) {
+		el.appendChild( document.createComment("") );
+		return !el.getElementsByTagName("*").length;
+	});
+
+	// Support: IE<9
+	support.getElementsByClassName = rnative.test( document.getElementsByClassName );
+
+	// Support: IE<10
+	// Check if getElementById returns elements by name
+	// The broken getElementById methods don't pick up programmatically-set names,
+	// so use a roundabout getElementsByName test
+	support.getById = assert(function( el ) {
+		docElem.appendChild( el ).id = expando;
+		return !document.getElementsByName || !document.getElementsByName( expando ).length;
+	});
+
+	// ID filter and find
+	if ( support.getById ) {
+		Expr.filter["ID"] = function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				return elem.getAttribute("id") === attrId;
+			};
+		};
+		Expr.find["ID"] = function( id, context ) {
+			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+				var elem = context.getElementById( id );
+				return elem ? [ elem ] : [];
+			}
+		};
+	} else {
+		Expr.filter["ID"] =  function( id ) {
+			var attrId = id.replace( runescape, funescape );
+			return function( elem ) {
+				var node = typeof elem.getAttributeNode !== "undefined" &&
+					elem.getAttributeNode("id");
+				return node && node.value === attrId;
+			};
+		};
+
+		// Support: IE 6 - 7 only
+		// getElementById is not reliable as a find shortcut
+		Expr.find["ID"] = function( id, context ) {
+			if ( typeof context.getElementById !== "undefined" && documentIsHTML ) {
+				var node, i, elems,
+					elem = context.getElementById( id );
+
+				if ( elem ) {
+
+					// Verify the id attribute
+					node = elem.getAttributeNode("id");
+					if ( node && node.value === id ) {
+						return [ elem ];
+					}
+
+					// Fall back on getElementsByName
+					elems = context.getElementsByName( id );
+					i = 0;
+					while ( (elem = elems[i++]) ) {
+						node = elem.getAttributeNode("id");
+						if ( node && node.value === id ) {
+							return [ elem ];
+						}
+					}
+				}
+
+				return [];
+			}
+		};
+	}
+
+	// Tag
+	Expr.find["TAG"] = support.getElementsByTagName ?
+		function( tag, context ) {
+			if ( typeof context.getElementsByTagName !== "undefined" ) {
+				return context.getElementsByTagName( tag );
+
+			// DocumentFragment nodes don't have gEBTN
+			} else if ( support.qsa ) {
+				return context.querySelectorAll( tag );
+			}
+		} :
+
+		function( tag, context ) {
+			var elem,
+				tmp = [],
+				i = 0,
+				// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too
+				results = context.getElementsByTagName( tag );
+
+			// Filter out possible comments
+			if ( tag === "*" ) {
+				while ( (elem = results[i++]) ) {
+					if ( elem.nodeType === 1 ) {
+						tmp.push( elem );
+					}
+				}
+
+				return tmp;
+			}
+			return results;
+		};
+
+	// Class
+	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
+		if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) {
+			return context.getElementsByClassName( className );
+		}
+	};
+
+	/* QSA/matchesSelector
+	---------------------------------------------------------------------- */
+
+	// QSA and matchesSelector support
+
+	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
+	rbuggyMatches = [];
+
+	// qSa(:focus) reports false when true (Chrome 21)
+	// We allow this because of a bug in IE8/9 that throws an error
+	// whenever `document.activeElement` is accessed on an iframe
+	// So, we allow :focus to pass through QSA all the time to avoid the IE error
+	// See https://bugs.jquery.com/ticket/13378
+	rbuggyQSA = [];
+
+	if ( (support.qsa = rnative.test( document.querySelectorAll )) ) {
+		// Build QSA regex
+		// Regex strategy adopted from Diego Perini
+		assert(function( el ) {
+			// Select is set to empty string on purpose
+			// This is to test IE's treatment of not explicitly
+			// setting a boolean content attribute,
+			// since its presence should be enough
+			// https://bugs.jquery.com/ticket/12359
+			docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" +
+				"<select id='" + expando + "-\r\\' msallowcapture=''>" +
+				"<option selected=''></option></select>";
+
+			// Support: IE8, Opera 11-12.16
+			// Nothing should be selected when empty strings follow ^= or $= or *=
+			// The test attribute must be unknown in Opera but "safe" for WinRT
+			// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
+			if ( el.querySelectorAll("[msallowcapture^='']").length ) {
+				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
+			}
+
+			// Support: IE8
+			// Boolean attributes and "value" are not treated correctly
+			if ( !el.querySelectorAll("[selected]").length ) {
+				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
+			}
+
+			// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+
+			if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) {
+				rbuggyQSA.push("~=");
+			}
+
+			// Webkit/Opera - :checked should return selected option elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			// IE8 throws error here and will not see later tests
+			if ( !el.querySelectorAll(":checked").length ) {
+				rbuggyQSA.push(":checked");
+			}
+
+			// Support: Safari 8+, iOS 8+
+			// https://bugs.webkit.org/show_bug.cgi?id=136851
+			// In-page `selector#id sibling-combinator selector` fails
+			if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) {
+				rbuggyQSA.push(".#.+[+~]");
+			}
+		});
+
+		assert(function( el ) {
+			el.innerHTML = "<a href='' disabled='disabled'></a>" +
+				"<select disabled='disabled'><option/></select>";
+
+			// Support: Windows 8 Native Apps
+			// The type and name attributes are restricted during .innerHTML assignment
+			var input = document.createElement("input");
+			input.setAttribute( "type", "hidden" );
+			el.appendChild( input ).setAttribute( "name", "D" );
+
+			// Support: IE8
+			// Enforce case-sensitivity of name attribute
+			if ( el.querySelectorAll("[name=d]").length ) {
+				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
+			}
+
+			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
+			// IE8 throws error here and will not see later tests
+			if ( el.querySelectorAll(":enabled").length !== 2 ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Support: IE9-11+
+			// IE's :disabled selector does not pick up the children of disabled fieldsets
+			docElem.appendChild( el ).disabled = true;
+			if ( el.querySelectorAll(":disabled").length !== 2 ) {
+				rbuggyQSA.push( ":enabled", ":disabled" );
+			}
+
+			// Opera 10-11 does not throw on post-comma invalid pseudos
+			el.querySelectorAll("*,:x");
+			rbuggyQSA.push(",.*:");
+		});
+	}
+
+	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
+		docElem.webkitMatchesSelector ||
+		docElem.mozMatchesSelector ||
+		docElem.oMatchesSelector ||
+		docElem.msMatchesSelector) )) ) {
+
+		assert(function( el ) {
+			// Check to see if it's possible to do matchesSelector
+			// on a disconnected node (IE 9)
+			support.disconnectedMatch = matches.call( el, "*" );
+
+			// This should fail with an exception
+			// Gecko does not error, returns false instead
+			matches.call( el, "[s!='']:x" );
+			rbuggyMatches.push( "!=", pseudos );
+		});
+	}
+
+	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
+	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
+
+	/* Contains
+	---------------------------------------------------------------------- */
+	hasCompare = rnative.test( docElem.compareDocumentPosition );
+
+	// Element contains another
+	// Purposefully self-exclusive
+	// As in, an element does not contain itself
+	contains = hasCompare || rnative.test( docElem.contains ) ?
+		function( a, b ) {
+			var adown = a.nodeType === 9 ? a.documentElement : a,
+				bup = b && b.parentNode;
+			return a === bup || !!( bup && bup.nodeType === 1 && (
+				adown.contains ?
+					adown.contains( bup ) :
+					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
+			));
+		} :
+		function( a, b ) {
+			if ( b ) {
+				while ( (b = b.parentNode) ) {
+					if ( b === a ) {
+						return true;
+					}
+				}
+			}
+			return false;
+		};
+
+	/* Sorting
+	---------------------------------------------------------------------- */
+
+	// Document order sorting
+	sortOrder = hasCompare ?
+	function( a, b ) {
+
+		// Flag for duplicate removal
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		// Sort on method existence if only one input has compareDocumentPosition
+		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+		if ( compare ) {
+			return compare;
+		}
+
+		// Calculate position if both inputs belong to the same document
+		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
+			a.compareDocumentPosition( b ) :
+
+			// Otherwise we know they are disconnected
+			1;
+
+		// Disconnected nodes
+		if ( compare & 1 ||
+			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
+
+			// Choose the first element that is related to our preferred document
+			if ( a === document || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
+				return -1;
+			}
+			if ( b === document || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
+				return 1;
+			}
+
+			// Maintain original order
+			return sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+		}
+
+		return compare & 4 ? -1 : 1;
+	} :
+	function( a, b ) {
+		// Exit early if the nodes are identical
+		if ( a === b ) {
+			hasDuplicate = true;
+			return 0;
+		}
+
+		var cur,
+			i = 0,
+			aup = a.parentNode,
+			bup = b.parentNode,
+			ap = [ a ],
+			bp = [ b ];
+
+		// Parentless nodes are either documents or disconnected
+		if ( !aup || !bup ) {
+			return a === document ? -1 :
+				b === document ? 1 :
+				aup ? -1 :
+				bup ? 1 :
+				sortInput ?
+				( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :
+				0;
+
+		// If the nodes are siblings, we can do a quick check
+		} else if ( aup === bup ) {
+			return siblingCheck( a, b );
+		}
+
+		// Otherwise we need full lists of their ancestors for comparison
+		cur = a;
+		while ( (cur = cur.parentNode) ) {
+			ap.unshift( cur );
+		}
+		cur = b;
+		while ( (cur = cur.parentNode) ) {
+			bp.unshift( cur );
+		}
+
+		// Walk down the tree looking for a discrepancy
+		while ( ap[i] === bp[i] ) {
+			i++;
+		}
+
+		return i ?
+			// Do a sibling check if the nodes have a common ancestor
+			siblingCheck( ap[i], bp[i] ) :
+
+			// Otherwise nodes in our document sort first
+			ap[i] === preferredDoc ? -1 :
+			bp[i] === preferredDoc ? 1 :
+			0;
+	};
+
+	return document;
+};
+
+Sizzle.matches = function( expr, elements ) {
+	return Sizzle( expr, null, null, elements );
+};
+
+Sizzle.matchesSelector = function( elem, expr ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	// Make sure that attribute selectors are quoted
+	expr = expr.replace( rattributeQuotes, "='$1']" );
+
+	if ( support.matchesSelector && documentIsHTML &&
+		!compilerCache[ expr + " " ] &&
+		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
+		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
+
+		try {
+			var ret = matches.call( elem, expr );
+
+			// IE 9's matchesSelector returns false on disconnected nodes
+			if ( ret || support.disconnectedMatch ||
+					// As well, disconnected nodes are said to be in a document
+					// fragment in IE 9
+					elem.document && elem.document.nodeType !== 11 ) {
+				return ret;
+			}
+		} catch (e) {}
+	}
+
+	return Sizzle( expr, document, null, [ elem ] ).length > 0;
+};
+
+Sizzle.contains = function( context, elem ) {
+	// Set document vars if needed
+	if ( ( context.ownerDocument || context ) !== document ) {
+		setDocument( context );
+	}
+	return contains( context, elem );
+};
+
+Sizzle.attr = function( elem, name ) {
+	// Set document vars if needed
+	if ( ( elem.ownerDocument || elem ) !== document ) {
+		setDocument( elem );
+	}
+
+	var fn = Expr.attrHandle[ name.toLowerCase() ],
+		// Don't get fooled by Object.prototype properties (jQuery #13807)
+		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
+			fn( elem, name, !documentIsHTML ) :
+			undefined;
+
+	return val !== undefined ?
+		val :
+		support.attributes || !documentIsHTML ?
+			elem.getAttribute( name ) :
+			(val = elem.getAttributeNode(name)) && val.specified ?
+				val.value :
+				null;
+};
+
+Sizzle.escape = function( sel ) {
+	return (sel + "").replace( rcssescape, fcssescape );
+};
+
+Sizzle.error = function( msg ) {
+	throw new Error( "Syntax error, unrecognized expression: " + msg );
+};
+
+/**
+ * Document sorting and removing duplicates
+ * @param {ArrayLike} results
+ */
+Sizzle.uniqueSort = function( results ) {
+	var elem,
+		duplicates = [],
+		j = 0,
+		i = 0;
+
+	// Unless we *know* we can detect duplicates, assume their presence
+	hasDuplicate = !support.detectDuplicates;
+	sortInput = !support.sortStable && results.slice( 0 );
+	results.sort( sortOrder );
+
+	if ( hasDuplicate ) {
+		while ( (elem = results[i++]) ) {
+			if ( elem === results[ i ] ) {
+				j = duplicates.push( i );
+			}
+		}
+		while ( j-- ) {
+			results.splice( duplicates[ j ], 1 );
+		}
+	}
+
+	// Clear input after sorting to release objects
+	// See https://github.com/jquery/sizzle/pull/225
+	sortInput = null;
+
+	return results;
+};
+
+/**
+ * Utility function for retrieving the text value of an array of DOM nodes
+ * @param {Array|Element} elem
+ */
+getText = Sizzle.getText = function( elem ) {
+	var node,
+		ret = "",
+		i = 0,
+		nodeType = elem.nodeType;
+
+	if ( !nodeType ) {
+		// If no nodeType, this is expected to be an array
+		while ( (node = elem[i++]) ) {
+			// Do not traverse comment nodes
+			ret += getText( node );
+		}
+	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
+		// Use textContent for elements
+		// innerText usage removed for consistency of new lines (jQuery #11153)
+		if ( typeof elem.textContent === "string" ) {
+			return elem.textContent;
+		} else {
+			// Traverse its children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				ret += getText( elem );
+			}
+		}
+	} else if ( nodeType === 3 || nodeType === 4 ) {
+		return elem.nodeValue;
+	}
+	// Do not include comment or processing instruction nodes
+
+	return ret;
+};
+
+Expr = Sizzle.selectors = {
+
+	// Can be adjusted by the user
+	cacheLength: 50,
+
+	createPseudo: markFunction,
+
+	match: matchExpr,
+
+	attrHandle: {},
+
+	find: {},
+
+	relative: {
+		">": { dir: "parentNode", first: true },
+		" ": { dir: "parentNode" },
+		"+": { dir: "previousSibling", first: true },
+		"~": { dir: "previousSibling" }
+	},
+
+	preFilter: {
+		"ATTR": function( match ) {
+			match[1] = match[1].replace( runescape, funescape );
+
+			// Move the given value to match[3] whether quoted or unquoted
+			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
+
+			if ( match[2] === "~=" ) {
+				match[3] = " " + match[3] + " ";
+			}
+
+			return match.slice( 0, 4 );
+		},
+
+		"CHILD": function( match ) {
+			/* matches from matchExpr["CHILD"]
+				1 type (only|nth|...)
+				2 what (child|of-type)
+				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
+				4 xn-component of xn+y argument ([+-]?\d*n|)
+				5 sign of xn-component
+				6 x of xn-component
+				7 sign of y-component
+				8 y of y-component
+			*/
+			match[1] = match[1].toLowerCase();
+
+			if ( match[1].slice( 0, 3 ) === "nth" ) {
+				// nth-* requires argument
+				if ( !match[3] ) {
+					Sizzle.error( match[0] );
+				}
+
+				// numeric x and y parameters for Expr.filter.CHILD
+				// remember that false/true cast respectively to 0/1
+				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
+				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
+
+			// other types prohibit arguments
+			} else if ( match[3] ) {
+				Sizzle.error( match[0] );
+			}
+
+			return match;
+		},
+
+		"PSEUDO": function( match ) {
+			var excess,
+				unquoted = !match[6] && match[2];
+
+			if ( matchExpr["CHILD"].test( match[0] ) ) {
+				return null;
+			}
+
+			// Accept quoted arguments as-is
+			if ( match[3] ) {
+				match[2] = match[4] || match[5] || "";
+
+			// Strip excess characters from unquoted arguments
+			} else if ( unquoted && rpseudo.test( unquoted ) &&
+				// Get excess from tokenize (recursively)
+				(excess = tokenize( unquoted, true )) &&
+				// advance to the next closing parenthesis
+				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
+
+				// excess is a negative index
+				match[0] = match[0].slice( 0, excess );
+				match[2] = unquoted.slice( 0, excess );
+			}
+
+			// Return only captures needed by the pseudo filter method (type and argument)
+			return match.slice( 0, 3 );
+		}
+	},
+
+	filter: {
+
+		"TAG": function( nodeNameSelector ) {
+			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
+			return nodeNameSelector === "*" ?
+				function() { return true; } :
+				function( elem ) {
+					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+				};
+		},
+
+		"CLASS": function( className ) {
+			var pattern = classCache[ className + " " ];
+
+			return pattern ||
+				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
+				classCache( className, function( elem ) {
+					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== "undefined" && elem.getAttribute("class") || "" );
+				});
+		},
+
+		"ATTR": function( name, operator, check ) {
+			return function( elem ) {
+				var result = Sizzle.attr( elem, name );
+
+				if ( result == null ) {
+					return operator === "!=";
+				}
+				if ( !operator ) {
+					return true;
+				}
+
+				result += "";
+
+				return operator === "=" ? result === check :
+					operator === "!=" ? result !== check :
+					operator === "^=" ? check && result.indexOf( check ) === 0 :
+					operator === "*=" ? check && result.indexOf( check ) > -1 :
+					operator === "$=" ? check && result.slice( -check.length ) === check :
+					operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 :
+					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
+					false;
+			};
+		},
+
+		"CHILD": function( type, what, argument, first, last ) {
+			var simple = type.slice( 0, 3 ) !== "nth",
+				forward = type.slice( -4 ) !== "last",
+				ofType = what === "of-type";
+
+			return first === 1 && last === 0 ?
+
+				// Shortcut for :nth-*(n)
+				function( elem ) {
+					return !!elem.parentNode;
+				} :
+
+				function( elem, context, xml ) {
+					var cache, uniqueCache, outerCache, node, nodeIndex, start,
+						dir = simple !== forward ? "nextSibling" : "previousSibling",
+						parent = elem.parentNode,
+						name = ofType && elem.nodeName.toLowerCase(),
+						useCache = !xml && !ofType,
+						diff = false;
+
+					if ( parent ) {
+
+						// :(first|last|only)-(child|of-type)
+						if ( simple ) {
+							while ( dir ) {
+								node = elem;
+								while ( (node = node[ dir ]) ) {
+									if ( ofType ?
+										node.nodeName.toLowerCase() === name :
+										node.nodeType === 1 ) {
+
+										return false;
+									}
+								}
+								// Reverse direction for :only-* (if we haven't yet done so)
+								start = dir = type === "only" && !start && "nextSibling";
+							}
+							return true;
+						}
+
+						start = [ forward ? parent.firstChild : parent.lastChild ];
+
+						// non-xml :nth-child(...) stores cache data on `parent`
+						if ( forward && useCache ) {
+
+							// Seek `elem` from a previously-cached index
+
+							// ...in a gzip-friendly way
+							node = parent;
+							outerCache = node[ expando ] || (node[ expando ] = {});
+
+							// Support: IE <9 only
+							// Defend against cloned attroperties (jQuery gh-1709)
+							uniqueCache = outerCache[ node.uniqueID ] ||
+								(outerCache[ node.uniqueID ] = {});
+
+							cache = uniqueCache[ type ] || [];
+							nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+							diff = nodeIndex && cache[ 2 ];
+							node = nodeIndex && parent.childNodes[ nodeIndex ];
+
+							while ( (node = ++nodeIndex && node && node[ dir ] ||
+
+								// Fallback to seeking `elem` from the start
+								(diff = nodeIndex = 0) || start.pop()) ) {
+
+								// When found, cache indexes on `parent` and break
+								if ( node.nodeType === 1 && ++diff && node === elem ) {
+									uniqueCache[ type ] = [ dirruns, nodeIndex, diff ];
+									break;
+								}
+							}
+
+						} else {
+							// Use previously-cached element index if available
+							if ( useCache ) {
+								// ...in a gzip-friendly way
+								node = elem;
+								outerCache = node[ expando ] || (node[ expando ] = {});
+
+								// Support: IE <9 only
+								// Defend against cloned attroperties (jQuery gh-1709)
+								uniqueCache = outerCache[ node.uniqueID ] ||
+									(outerCache[ node.uniqueID ] = {});
+
+								cache = uniqueCache[ type ] || [];
+								nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];
+								diff = nodeIndex;
+							}
+
+							// xml :nth-child(...)
+							// or :nth-last-child(...) or :nth(-last)?-of-type(...)
+							if ( diff === false ) {
+								// Use the same loop as above to seek `elem` from the start
+								while ( (node = ++nodeIndex && node && node[ dir ] ||
+									(diff = nodeIndex = 0) || start.pop()) ) {
+
+									if ( ( ofType ?
+										node.nodeName.toLowerCase() === name :
+										node.nodeType === 1 ) &&
+										++diff ) {
+
+										// Cache the index of each encountered element
+										if ( useCache ) {
+											outerCache = node[ expando ] || (node[ expando ] = {});
+
+											// Support: IE <9 only
+											// Defend against cloned attroperties (jQuery gh-1709)
+											uniqueCache = outerCache[ node.uniqueID ] ||
+												(outerCache[ node.uniqueID ] = {});
+
+											uniqueCache[ type ] = [ dirruns, diff ];
+										}
+
+										if ( node === elem ) {
+											break;
+										}
+									}
+								}
+							}
+						}
+
+						// Incorporate the offset, then check against cycle size
+						diff -= last;
+						return diff === first || ( diff % first === 0 && diff / first >= 0 );
+					}
+				};
+		},
+
+		"PSEUDO": function( pseudo, argument ) {
+			// pseudo-class names are case-insensitive
+			// http://www.w3.org/TR/selectors/#pseudo-classes
+			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
+			// Remember that setFilters inherits from pseudos
+			var args,
+				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
+					Sizzle.error( "unsupported pseudo: " + pseudo );
+
+			// The user may use createPseudo to indicate that
+			// arguments are needed to create the filter function
+			// just as Sizzle does
+			if ( fn[ expando ] ) {
+				return fn( argument );
+			}
+
+			// But maintain support for old signatures
+			if ( fn.length > 1 ) {
+				args = [ pseudo, pseudo, "", argument ];
+				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
+					markFunction(function( seed, matches ) {
+						var idx,
+							matched = fn( seed, argument ),
+							i = matched.length;
+						while ( i-- ) {
+							idx = indexOf( seed, matched[i] );
+							seed[ idx ] = !( matches[ idx ] = matched[i] );
+						}
+					}) :
+					function( elem ) {
+						return fn( elem, 0, args );
+					};
+			}
+
+			return fn;
+		}
+	},
+
+	pseudos: {
+		// Potentially complex pseudos
+		"not": markFunction(function( selector ) {
+			// Trim the selector passed to compile
+			// to avoid treating leading and trailing
+			// spaces as combinators
+			var input = [],
+				results = [],
+				matcher = compile( selector.replace( rtrim, "$1" ) );
+
+			return matcher[ expando ] ?
+				markFunction(function( seed, matches, context, xml ) {
+					var elem,
+						unmatched = matcher( seed, null, xml, [] ),
+						i = seed.length;
+
+					// Match elements unmatched by `matcher`
+					while ( i-- ) {
+						if ( (elem = unmatched[i]) ) {
+							seed[i] = !(matches[i] = elem);
+						}
+					}
+				}) :
+				function( elem, context, xml ) {
+					input[0] = elem;
+					matcher( input, null, xml, results );
+					// Don't keep the element (issue #299)
+					input[0] = null;
+					return !results.pop();
+				};
+		}),
+
+		"has": markFunction(function( selector ) {
+			return function( elem ) {
+				return Sizzle( selector, elem ).length > 0;
+			};
+		}),
+
+		"contains": markFunction(function( text ) {
+			text = text.replace( runescape, funescape );
+			return function( elem ) {
+				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
+			};
+		}),
+
+		// "Whether an element is represented by a :lang() selector
+		// is based solely on the element's language value
+		// being equal to the identifier C,
+		// or beginning with the identifier C immediately followed by "-".
+		// The matching of C against the element's language value is performed case-insensitively.
+		// The identifier C does not have to be a valid language name."
+		// http://www.w3.org/TR/selectors/#lang-pseudo
+		"lang": markFunction( function( lang ) {
+			// lang value must be a valid identifier
+			if ( !ridentifier.test(lang || "") ) {
+				Sizzle.error( "unsupported lang: " + lang );
+			}
+			lang = lang.replace( runescape, funescape ).toLowerCase();
+			return function( elem ) {
+				var elemLang;
+				do {
+					if ( (elemLang = documentIsHTML ?
+						elem.lang :
+						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
+
+						elemLang = elemLang.toLowerCase();
+						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
+					}
+				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
+				return false;
+			};
+		}),
+
+		// Miscellaneous
+		"target": function( elem ) {
+			var hash = window.location && window.location.hash;
+			return hash && hash.slice( 1 ) === elem.id;
+		},
+
+		"root": function( elem ) {
+			return elem === docElem;
+		},
+
+		"focus": function( elem ) {
+			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+		},
+
+		// Boolean properties
+		"enabled": createDisabledPseudo( false ),
+		"disabled": createDisabledPseudo( true ),
+
+		"checked": function( elem ) {
+			// In CSS3, :checked should return both checked and selected elements
+			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
+			var nodeName = elem.nodeName.toLowerCase();
+			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
+		},
+
+		"selected": function( elem ) {
+			// Accessing this property makes selected-by-default
+			// options in Safari work properly
+			if ( elem.parentNode ) {
+				elem.parentNode.selectedIndex;
+			}
+
+			return elem.selected === true;
+		},
+
+		// Contents
+		"empty": function( elem ) {
+			// http://www.w3.org/TR/selectors/#empty-pseudo
+			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
+			//   but not by others (comment: 8; processing instruction: 7; etc.)
+			// nodeType < 6 works because attributes (2) do not appear as children
+			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
+				if ( elem.nodeType < 6 ) {
+					return false;
+				}
+			}
+			return true;
+		},
+
+		"parent": function( elem ) {
+			return !Expr.pseudos["empty"]( elem );
+		},
+
+		// Element/input types
+		"header": function( elem ) {
+			return rheader.test( elem.nodeName );
+		},
+
+		"input": function( elem ) {
+			return rinputs.test( elem.nodeName );
+		},
+
+		"button": function( elem ) {
+			var name = elem.nodeName.toLowerCase();
+			return name === "input" && elem.type === "button" || name === "button";
+		},
+
+		"text": function( elem ) {
+			var attr;
+			return elem.nodeName.toLowerCase() === "input" &&
+				elem.type === "text" &&
+
+				// Support: IE<8
+				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
+				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
+		},
+
+		// Position-in-collection
+		"first": createPositionalPseudo(function() {
+			return [ 0 ];
+		}),
+
+		"last": createPositionalPseudo(function( matchIndexes, length ) {
+			return [ length - 1 ];
+		}),
+
+		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			return [ argument < 0 ? argument + length : argument ];
+		}),
+
+		"even": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 0;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"odd": createPositionalPseudo(function( matchIndexes, length ) {
+			var i = 1;
+			for ( ; i < length; i += 2 ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; --i >= 0; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		}),
+
+		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
+			var i = argument < 0 ? argument + length : argument;
+			for ( ; ++i < length; ) {
+				matchIndexes.push( i );
+			}
+			return matchIndexes;
+		})
+	}
+};
+
+Expr.pseudos["nth"] = Expr.pseudos["eq"];
+
+// Add button/input type pseudos
+for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
+	Expr.pseudos[ i ] = createInputPseudo( i );
+}
+for ( i in { submit: true, reset: true } ) {
+	Expr.pseudos[ i ] = createButtonPseudo( i );
+}
+
+// Easy API for creating new setFilters
+function setFilters() {}
+setFilters.prototype = Expr.filters = Expr.pseudos;
+Expr.setFilters = new setFilters();
+
+tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
+	var matched, match, tokens, type,
+		soFar, groups, preFilters,
+		cached = tokenCache[ selector + " " ];
+
+	if ( cached ) {
+		return parseOnly ? 0 : cached.slice( 0 );
+	}
+
+	soFar = selector;
+	groups = [];
+	preFilters = Expr.preFilter;
+
+	while ( soFar ) {
+
+		// Comma and first run
+		if ( !matched || (match = rcomma.exec( soFar )) ) {
+			if ( match ) {
+				// Don't consume trailing commas as valid
+				soFar = soFar.slice( match[0].length ) || soFar;
+			}
+			groups.push( (tokens = []) );
+		}
+
+		matched = false;
+
+		// Combinators
+		if ( (match = rcombinators.exec( soFar )) ) {
+			matched = match.shift();
+			tokens.push({
+				value: matched,
+				// Cast descendant combinators to space
+				type: match[0].replace( rtrim, " " )
+			});
+			soFar = soFar.slice( matched.length );
+		}
+
+		// Filters
+		for ( type in Expr.filter ) {
+			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
+				(match = preFilters[ type ]( match ))) ) {
+				matched = match.shift();
+				tokens.push({
+					value: matched,
+					type: type,
+					matches: match
+				});
+				soFar = soFar.slice( matched.length );
+			}
+		}
+
+		if ( !matched ) {
+			break;
+		}
+	}
+
+	// Return the length of the invalid excess
+	// if we're just parsing
+	// Otherwise, throw an error or return tokens
+	return parseOnly ?
+		soFar.length :
+		soFar ?
+			Sizzle.error( selector ) :
+			// Cache the tokens
+			tokenCache( selector, groups ).slice( 0 );
+};
+
+function toSelector( tokens ) {
+	var i = 0,
+		len = tokens.length,
+		selector = "";
+	for ( ; i < len; i++ ) {
+		selector += tokens[i].value;
+	}
+	return selector;
+}
+
+function addCombinator( matcher, combinator, base ) {
+	var dir = combinator.dir,
+		skip = combinator.next,
+		key = skip || dir,
+		checkNonElements = base && key === "parentNode",
+		doneName = done++;
+
+	return combinator.first ?
+		// Check against closest ancestor/preceding element
+		function( elem, context, xml ) {
+			while ( (elem = elem[ dir ]) ) {
+				if ( elem.nodeType === 1 || checkNonElements ) {
+					return matcher( elem, context, xml );
+				}
+			}
+			return false;
+		} :
+
+		// Check against all ancestor/preceding elements
+		function( elem, context, xml ) {
+			var oldCache, uniqueCache, outerCache,
+				newCache = [ dirruns, doneName ];
+
+			// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching
+			if ( xml ) {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						if ( matcher( elem, context, xml ) ) {
+							return true;
+						}
+					}
+				}
+			} else {
+				while ( (elem = elem[ dir ]) ) {
+					if ( elem.nodeType === 1 || checkNonElements ) {
+						outerCache = elem[ expando ] || (elem[ expando ] = {});
+
+						// Support: IE <9 only
+						// Defend against cloned attroperties (jQuery gh-1709)
+						uniqueCache = outerCache[ elem.uniqueID ] || (outerCache[ elem.uniqueID ] = {});
+
+						if ( skip && skip === elem.nodeName.toLowerCase() ) {
+							elem = elem[ dir ] || elem;
+						} else if ( (oldCache = uniqueCache[ key ]) &&
+							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
+
+							// Assign to newCache so results back-propagate to previous elements
+							return (newCache[ 2 ] = oldCache[ 2 ]);
+						} else {
+							// Reuse newcache so results back-propagate to previous elements
+							uniqueCache[ key ] = newCache;
+
+							// A match means we're done; a fail means we have to keep checking
+							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
+								return true;
+							}
+						}
+					}
+				}
+			}
+			return false;
+		};
+}
+
+function elementMatcher( matchers ) {
+	return matchers.length > 1 ?
+		function( elem, context, xml ) {
+			var i = matchers.length;
+			while ( i-- ) {
+				if ( !matchers[i]( elem, context, xml ) ) {
+					return false;
+				}
+			}
+			return true;
+		} :
+		matchers[0];
+}
+
+function multipleContexts( selector, contexts, results ) {
+	var i = 0,
+		len = contexts.length;
+	for ( ; i < len; i++ ) {
+		Sizzle( selector, contexts[i], results );
+	}
+	return results;
+}
+
+function condense( unmatched, map, filter, context, xml ) {
+	var elem,
+		newUnmatched = [],
+		i = 0,
+		len = unmatched.length,
+		mapped = map != null;
+
+	for ( ; i < len; i++ ) {
+		if ( (elem = unmatched[i]) ) {
+			if ( !filter || filter( elem, context, xml ) ) {
+				newUnmatched.push( elem );
+				if ( mapped ) {
+					map.push( i );
+				}
+			}
+		}
+	}
+
+	return newUnmatched;
+}
+
+function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
+	if ( postFilter && !postFilter[ expando ] ) {
+		postFilter = setMatcher( postFilter );
+	}
+	if ( postFinder && !postFinder[ expando ] ) {
+		postFinder = setMatcher( postFinder, postSelector );
+	}
+	return markFunction(function( seed, results, context, xml ) {
+		var temp, i, elem,
+			preMap = [],
+			postMap = [],
+			preexisting = results.length,
+
+			// Get initial elements from seed or context
+			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
+
+			// Prefilter to get matcher input, preserving a map for seed-results synchronization
+			matcherIn = preFilter && ( seed || !selector ) ?
+				condense( elems, preMap, preFilter, context, xml ) :
+				elems,
+
+			matcherOut = matcher ?
+				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
+				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
+
+					// ...intermediate processing is necessary
+					[] :
+
+					// ...otherwise use results directly
+					results :
+				matcherIn;
+
+		// Find primary matches
+		if ( matcher ) {
+			matcher( matcherIn, matcherOut, context, xml );
+		}
+
+		// Apply postFilter
+		if ( postFilter ) {
+			temp = condense( matcherOut, postMap );
+			postFilter( temp, [], context, xml );
+
+			// Un-match failing elements by moving them back to matcherIn
+			i = temp.length;
+			while ( i-- ) {
+				if ( (elem = temp[i]) ) {
+					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
+				}
+			}
+		}
+
+		if ( seed ) {
+			if ( postFinder || preFilter ) {
+				if ( postFinder ) {
+					// Get the final matcherOut by condensing this intermediate into postFinder contexts
+					temp = [];
+					i = matcherOut.length;
+					while ( i-- ) {
+						if ( (elem = matcherOut[i]) ) {
+							// Restore matcherIn since elem is not yet a final match
+							temp.push( (matcherIn[i] = elem) );
+						}
+					}
+					postFinder( null, (matcherOut = []), temp, xml );
+				}
+
+				// Move matched elements from seed to results to keep them synchronized
+				i = matcherOut.length;
+				while ( i-- ) {
+					if ( (elem = matcherOut[i]) &&
+						(temp = postFinder ? indexOf( seed, elem ) : preMap[i]) > -1 ) {
+
+						seed[temp] = !(results[temp] = elem);
+					}
+				}
+			}
+
+		// Add elements to results, through postFinder if defined
+		} else {
+			matcherOut = condense(
+				matcherOut === results ?
+					matcherOut.splice( preexisting, matcherOut.length ) :
+					matcherOut
+			);
+			if ( postFinder ) {
+				postFinder( null, results, matcherOut, xml );
+			} else {
+				push.apply( results, matcherOut );
+			}
+		}
+	});
+}
+
+function matcherFromTokens( tokens ) {
+	var checkContext, matcher, j,
+		len = tokens.length,
+		leadingRelative = Expr.relative[ tokens[0].type ],
+		implicitRelative = leadingRelative || Expr.relative[" "],
+		i = leadingRelative ? 1 : 0,
+
+		// The foundational matcher ensures that elements are reachable from top-level context(s)
+		matchContext = addCombinator( function( elem ) {
+			return elem === checkContext;
+		}, implicitRelative, true ),
+		matchAnyContext = addCombinator( function( elem ) {
+			return indexOf( checkContext, elem ) > -1;
+		}, implicitRelative, true ),
+		matchers = [ function( elem, context, xml ) {
+			var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
+				(checkContext = context).nodeType ?
+					matchContext( elem, context, xml ) :
+					matchAnyContext( elem, context, xml ) );
+			// Avoid hanging onto element (issue #299)
+			checkContext = null;
+			return ret;
+		} ];
+
+	for ( ; i < len; i++ ) {
+		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
+			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
+		} else {
+			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
+
+			// Return special upon seeing a positional matcher
+			if ( matcher[ expando ] ) {
+				// Find the next relative operator (if any) for proper handling
+				j = ++i;
+				for ( ; j < len; j++ ) {
+					if ( Expr.relative[ tokens[j].type ] ) {
+						break;
+					}
+				}
+				return setMatcher(
+					i > 1 && elementMatcher( matchers ),
+					i > 1 && toSelector(
+						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
+						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
+					).replace( rtrim, "$1" ),
+					matcher,
+					i < j && matcherFromTokens( tokens.slice( i, j ) ),
+					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
+					j < len && toSelector( tokens )
+				);
+			}
+			matchers.push( matcher );
+		}
+	}
+
+	return elementMatcher( matchers );
+}
+
+function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
+	var bySet = setMatchers.length > 0,
+		byElement = elementMatchers.length > 0,
+		superMatcher = function( seed, context, xml, results, outermost ) {
+			var elem, j, matcher,
+				matchedCount = 0,
+				i = "0",
+				unmatched = seed && [],
+				setMatched = [],
+				contextBackup = outermostContext,
+				// We must always have either seed elements or outermost context
+				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
+				// Use integer dirruns iff this is the outermost matcher
+				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
+				len = elems.length;
+
+			if ( outermost ) {
+				outermostContext = context === document || context || outermost;
+			}
+
+			// Add elements passing elementMatchers directly to results
+			// Support: IE<9, Safari
+			// Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id
+			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
+				if ( byElement && elem ) {
+					j = 0;
+					if ( !context && elem.ownerDocument !== document ) {
+						setDocument( elem );
+						xml = !documentIsHTML;
+					}
+					while ( (matcher = elementMatchers[j++]) ) {
+						if ( matcher( elem, context || document, xml) ) {
+							results.push( elem );
+							break;
+						}
+					}
+					if ( outermost ) {
+						dirruns = dirrunsUnique;
+					}
+				}
+
+				// Track unmatched elements for set filters
+				if ( bySet ) {
+					// They will have gone through all possible matchers
+					if ( (elem = !matcher && elem) ) {
+						matchedCount--;
+					}
+
+					// Lengthen the array for every element, matched or not
+					if ( seed ) {
+						unmatched.push( elem );
+					}
+				}
+			}
+
+			// `i` is now the count of elements visited above, and adding it to `matchedCount`
+			// makes the latter nonnegative.
+			matchedCount += i;
+
+			// Apply set filters to unmatched elements
+			// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`
+			// equals `i`), unless we didn't visit _any_ elements in the above loop because we have
+			// no element matchers and no seed.
+			// Incrementing an initially-string "0" `i` allows `i` to remain a string only in that
+			// case, which will result in a "00" `matchedCount` that differs from `i` but is also
+			// numerically zero.
+			if ( bySet && i !== matchedCount ) {
+				j = 0;
+				while ( (matcher = setMatchers[j++]) ) {
+					matcher( unmatched, setMatched, context, xml );
+				}
+
+				if ( seed ) {
+					// Reintegrate element matches to eliminate the need for sorting
+					if ( matchedCount > 0 ) {
+						while ( i-- ) {
+							if ( !(unmatched[i] || setMatched[i]) ) {
+								setMatched[i] = pop.call( results );
+							}
+						}
+					}
+
+					// Discard index placeholder values to get only actual matches
+					setMatched = condense( setMatched );
+				}
+
+				// Add matches to results
+				push.apply( results, setMatched );
+
+				// Seedless set matches succeeding multiple successful matchers stipulate sorting
+				if ( outermost && !seed && setMatched.length > 0 &&
+					( matchedCount + setMatchers.length ) > 1 ) {
+
+					Sizzle.uniqueSort( results );
+				}
+			}
+
+			// Override manipulation of globals by nested matchers
+			if ( outermost ) {
+				dirruns = dirrunsUnique;
+				outermostContext = contextBackup;
+			}
+
+			return unmatched;
+		};
+
+	return bySet ?
+		markFunction( superMatcher ) :
+		superMatcher;
+}
+
+compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
+	var i,
+		setMatchers = [],
+		elementMatchers = [],
+		cached = compilerCache[ selector + " " ];
+
+	if ( !cached ) {
+		// Generate a function of recursive functions that can be used to check each element
+		if ( !match ) {
+			match = tokenize( selector );
+		}
+		i = match.length;
+		while ( i-- ) {
+			cached = matcherFromTokens( match[i] );
+			if ( cached[ expando ] ) {
+				setMatchers.push( cached );
+			} else {
+				elementMatchers.push( cached );
+			}
+		}
+
+		// Cache the compiled function
+		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
+
+		// Save selector and tokenization
+		cached.selector = selector;
+	}
+	return cached;
+};
+
+/**
+ * A low-level selection function that works with Sizzle's compiled
+ *  selector functions
+ * @param {String|Function} selector A selector or a pre-compiled
+ *  selector function built with Sizzle.compile
+ * @param {Element} context
+ * @param {Array} [results]
+ * @param {Array} [seed] A set of elements to match against
+ */
+select = Sizzle.select = function( selector, context, results, seed ) {
+	var i, tokens, token, type, find,
+		compiled = typeof selector === "function" && selector,
+		match = !seed && tokenize( (selector = compiled.selector || selector) );
+
+	results = results || [];
+
+	// Try to minimize operations if there is only one selector in the list and no seed
+	// (the latter of which guarantees us context)
+	if ( match.length === 1 ) {
+
+		// Reduce context if the leading compound selector is an ID
+		tokens = match[0] = match[0].slice( 0 );
+		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
+				context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[1].type ] ) {
+
+			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
+			if ( !context ) {
+				return results;
+
+			// Precompiled matchers will still verify ancestry, so step up a level
+			} else if ( compiled ) {
+				context = context.parentNode;
+			}
+
+			selector = selector.slice( tokens.shift().value.length );
+		}
+
+		// Fetch a seed set for right-to-left matching
+		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
+		while ( i-- ) {
+			token = tokens[i];
+
+			// Abort if we hit a combinator
+			if ( Expr.relative[ (type = token.type) ] ) {
+				break;
+			}
+			if ( (find = Expr.find[ type ]) ) {
+				// Search, expanding context for leading sibling combinators
+				if ( (seed = find(
+					token.matches[0].replace( runescape, funescape ),
+					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
+				)) ) {
+
+					// If seed is empty or no tokens remain, we can return early
+					tokens.splice( i, 1 );
+					selector = seed.length && toSelector( tokens );
+					if ( !selector ) {
+						push.apply( results, seed );
+						return results;
+					}
+
+					break;
+				}
+			}
+		}
+	}
+
+	// Compile and execute a filtering function if one is not provided
+	// Provide `match` to avoid retokenization if we modified the selector above
+	( compiled || compile( selector, match ) )(
+		seed,
+		context,
+		!documentIsHTML,
+		results,
+		!context || rsibling.test( selector ) && testContext( context.parentNode ) || context
+	);
+	return results;
+};
+
+// One-time assignments
+
+// Sort stability
+support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
+
+// Support: Chrome 14-35+
+// Always assume duplicates if they aren't passed to the comparison function
+support.detectDuplicates = !!hasDuplicate;
+
+// Initialize against the default document
+setDocument();
+
+// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
+// Detached nodes confoundingly follow *each other*
+support.sortDetached = assert(function( el ) {
+	// Should return 1, but returns 4 (following)
+	return el.compareDocumentPosition( document.createElement("fieldset") ) & 1;
+});
+
+// Support: IE<8
+// Prevent attribute/property "interpolation"
+// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
+if ( !assert(function( el ) {
+	el.innerHTML = "<a href='#'></a>";
+	return el.firstChild.getAttribute("href") === "#" ;
+}) ) {
+	addHandle( "type|href|height|width", function( elem, name, isXML ) {
+		if ( !isXML ) {
+			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
+		}
+	});
+}
+
+// Support: IE<9
+// Use defaultValue in place of getAttribute("value")
+if ( !support.attributes || !assert(function( el ) {
+	el.innerHTML = "<input/>";
+	el.firstChild.setAttribute( "value", "" );
+	return el.firstChild.getAttribute( "value" ) === "";
+}) ) {
+	addHandle( "value", function( elem, name, isXML ) {
+		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
+			return elem.defaultValue;
+		}
+	});
+}
+
+// Support: IE<9
+// Use getAttributeNode to fetch booleans when getAttribute lies
+if ( !assert(function( el ) {
+	return el.getAttribute("disabled") == null;
+}) ) {
+	addHandle( booleans, function( elem, name, isXML ) {
+		var val;
+		if ( !isXML ) {
+			return elem[ name ] === true ? name.toLowerCase() :
+					(val = elem.getAttributeNode( name )) && val.specified ?
+					val.value :
+				null;
+		}
+	});
+}
+
+return Sizzle;
+
+})( window );
+
+
+
+jQuery.find = Sizzle;
+jQuery.expr = Sizzle.selectors;
+
+// Deprecated
+jQuery.expr[ ":" ] = jQuery.expr.pseudos;
+jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
+jQuery.escapeSelector = Sizzle.escape;
+
+
+
+
+var dir = function( elem, dir, until ) {
+	var matched = [],
+		truncate = until !== undefined;
+
+	while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {
+		if ( elem.nodeType === 1 ) {
+			if ( truncate && jQuery( elem ).is( until ) ) {
+				break;
+			}
+			matched.push( elem );
+		}
+	}
+	return matched;
+};
+
+
+var siblings = function( n, elem ) {
+	var matched = [];
+
+	for ( ; n; n = n.nextSibling ) {
+		if ( n.nodeType === 1 && n !== elem ) {
+			matched.push( n );
+		}
+	}
+
+	return matched;
+};
+
+
+var rneedsContext = jQuery.expr.match.needsContext;
+
+
+
+function nodeName( elem, name ) {
+
+  return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
+
+};
+var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i );
+
+
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, not ) {
+	if ( isFunction( qualifier ) ) {
+		return jQuery.grep( elements, function( elem, i ) {
+			return !!qualifier.call( elem, i, elem ) !== not;
+		} );
+	}
+
+	// Single element
+	if ( qualifier.nodeType ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( elem === qualifier ) !== not;
+		} );
+	}
+
+	// Arraylike of elements (jQuery, arguments, Array)
+	if ( typeof qualifier !== "string" ) {
+		return jQuery.grep( elements, function( elem ) {
+			return ( indexOf.call( qualifier, elem ) > -1 ) !== not;
+		} );
+	}
+
+	// Filtered directly for both simple and complex selectors
+	return jQuery.filter( qualifier, elements, not );
+}
+
+jQuery.filter = function( expr, elems, not ) {
+	var elem = elems[ 0 ];
+
+	if ( not ) {
+		expr = ":not(" + expr + ")";
+	}
+
+	if ( elems.length === 1 && elem.nodeType === 1 ) {
+		return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];
+	}
+
+	return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
+		return elem.nodeType === 1;
+	} ) );
+};
+
+jQuery.fn.extend( {
+	find: function( selector ) {
+		var i, ret,
+			len = this.length,
+			self = this;
+
+		if ( typeof selector !== "string" ) {
+			return this.pushStack( jQuery( selector ).filter( function() {
+				for ( i = 0; i < len; i++ ) {
+					if ( jQuery.contains( self[ i ], this ) ) {
+						return true;
+					}
+				}
+			} ) );
+		}
+
+		ret = this.pushStack( [] );
+
+		for ( i = 0; i < len; i++ ) {
+			jQuery.find( selector, self[ i ], ret );
+		}
+
+		return len > 1 ? jQuery.uniqueSort( ret ) : ret;
+	},
+	filter: function( selector ) {
+		return this.pushStack( winnow( this, selector || [], false ) );
+	},
+	not: function( selector ) {
+		return this.pushStack( winnow( this, selector || [], true ) );
+	},
+	is: function( selector ) {
+		return !!winnow(
+			this,
+
+			// If this is a positional/relative selector, check membership in the returned set
+			// so $("p:first").is("p:last") won't return true for a doc with two "p".
+			typeof selector === "string" && rneedsContext.test( selector ) ?
+				jQuery( selector ) :
+				selector || [],
+			false
+		).length;
+	}
+} );
+
+
+// Initialize a jQuery object
+
+
+// A central reference to the root jQuery(document)
+var rootjQuery,
+
+	// A simple way to check for HTML strings
+	// Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+	// Strict HTML recognition (#11290: must start with <)
+	// Shortcut simple #id case for speed
+	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/,
+
+	init = jQuery.fn.init = function( selector, context, root ) {
+		var match, elem;
+
+		// HANDLE: $(""), $(null), $(undefined), $(false)
+		if ( !selector ) {
+			return this;
+		}
+
+		// Method init() accepts an alternate rootjQuery
+		// so migrate can support jQuery.sub (gh-2101)
+		root = root || rootjQuery;
+
+		// Handle HTML strings
+		if ( typeof selector === "string" ) {
+			if ( selector[ 0 ] === "<" &&
+				selector[ selector.length - 1 ] === ">" &&
+				selector.length >= 3 ) {
+
+				// Assume that strings that start and end with <> are HTML and skip the regex check
+				match = [ null, selector, null ];
+
+			} else {
+				match = rquickExpr.exec( selector );
+			}
+
+			// Match html or make sure no context is specified for #id
+			if ( match && ( match[ 1 ] || !context ) ) {
+
+				// HANDLE: $(html) -> $(array)
+				if ( match[ 1 ] ) {
+					context = context instanceof jQuery ? context[ 0 ] : context;
+
+					// Option to run scripts is true for back-compat
+					// Intentionally let the error be thrown if parseHTML is not present
+					jQuery.merge( this, jQuery.parseHTML(
+						match[ 1 ],
+						context && context.nodeType ? context.ownerDocument || context : document,
+						true
+					) );
+
+					// HANDLE: $(html, props)
+					if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {
+						for ( match in context ) {
+
+							// Properties of context are called as methods if possible
+							if ( isFunction( this[ match ] ) ) {
+								this[ match ]( context[ match ] );
+
+							// ...and otherwise set as attributes
+							} else {
+								this.attr( match, context[ match ] );
+							}
+						}
+					}
+
+					return this;
+
+				// HANDLE: $(#id)
+				} else {
+					elem = document.getElementById( match[ 2 ] );
+
+					if ( elem ) {
+
+						// Inject the element directly into the jQuery object
+						this[ 0 ] = elem;
+						this.length = 1;
+					}
+					return this;
+				}
+
+			// HANDLE: $(expr, $(...))
+			} else if ( !context || context.jquery ) {
+				return ( context || root ).find( selector );
+
+			// HANDLE: $(expr, context)
+			// (which is just equivalent to: $(context).find(expr)
+			} else {
+				return this.constructor( context ).find( selector );
+			}
+
+		// HANDLE: $(DOMElement)
+		} else if ( selector.nodeType ) {
+			this[ 0 ] = selector;
+			this.length = 1;
+			return this;
+
+		// HANDLE: $(function)
+		// Shortcut for document ready
+		} else if ( isFunction( selector ) ) {
+			return root.ready !== undefined ?
+				root.ready( selector ) :
+
+				// Execute immediately if ready is not present
+				selector( jQuery );
+		}
+
+		return jQuery.makeArray( selector, this );
+	};
+
+// Give the init function the jQuery prototype for later instantiation
+init.prototype = jQuery.fn;
+
+// Initialize central reference
+rootjQuery = jQuery( document );
+
+
+var rparentsprev = /^(?:parents|prev(?:Until|All))/,
+
+	// Methods guaranteed to produce a unique set when starting from a unique set
+	guaranteedUnique = {
+		children: true,
+		contents: true,
+		next: true,
+		prev: true
+	};
+
+jQuery.fn.extend( {
+	has: function( target ) {
+		var targets = jQuery( target, this ),
+			l = targets.length;
+
+		return this.filter( function() {
+			var i = 0;
+			for ( ; i < l; i++ ) {
+				if ( jQuery.contains( this, targets[ i ] ) ) {
+					return true;
+				}
+			}
+		} );
+	},
+
+	closest: function( selectors, context ) {
+		var cur,
+			i = 0,
+			l = this.length,
+			matched = [],
+			targets = typeof selectors !== "string" && jQuery( selectors );
+
+		// Positional selectors never match, since there's no _selection_ context
+		if ( !rneedsContext.test( selectors ) ) {
+			for ( ; i < l; i++ ) {
+				for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {
+
+					// Always skip document fragments
+					if ( cur.nodeType < 11 && ( targets ?
+						targets.index( cur ) > -1 :
+
+						// Don't pass non-elements to Sizzle
+						cur.nodeType === 1 &&
+							jQuery.find.matchesSelector( cur, selectors ) ) ) {
+
+						matched.push( cur );
+						break;
+					}
+				}
+			}
+		}
+
+		return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );
+	},
+
+	// Determine the position of an element within the set
+	index: function( elem ) {
+
+		// No argument, return index in parent
+		if ( !elem ) {
+			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
+		}
+
+		// Index in selector
+		if ( typeof elem === "string" ) {
+			return indexOf.call( jQuery( elem ), this[ 0 ] );
+		}
+
+		// Locate the position of the desired element
+		return indexOf.call( this,
+
+			// If it receives a jQuery object, the first element is used
+			elem.jquery ? elem[ 0 ] : elem
+		);
+	},
+
+	add: function( selector, context ) {
+		return this.pushStack(
+			jQuery.uniqueSort(
+				jQuery.merge( this.get(), jQuery( selector, context ) )
+			)
+		);
+	},
+
+	addBack: function( selector ) {
+		return this.add( selector == null ?
+			this.prevObject : this.prevObject.filter( selector )
+		);
+	}
+} );
+
+function sibling( cur, dir ) {
+	while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}
+	return cur;
+}
+
+jQuery.each( {
+	parent: function( elem ) {
+		var parent = elem.parentNode;
+		return parent && parent.nodeType !== 11 ? parent : null;
+	},
+	parents: function( elem ) {
+		return dir( elem, "parentNode" );
+	},
+	parentsUntil: function( elem, i, until ) {
+		return dir( elem, "parentNode", until );
+	},
+	next: function( elem ) {
+		return sibling( elem, "nextSibling" );
+	},
+	prev: function( elem ) {
+		return sibling( elem, "previousSibling" );
+	},
+	nextAll: function( elem ) {
+		return dir( elem, "nextSibling" );
+	},
+	prevAll: function( elem ) {
+		return dir( elem, "previousSibling" );
+	},
+	nextUntil: function( elem, i, until ) {
+		return dir( elem, "nextSibling", until );
+	},
+	prevUntil: function( elem, i, until ) {
+		return dir( elem, "previousSibling", until );
+	},
+	siblings: function( elem ) {
+		return siblings( ( elem.parentNode || {} ).firstChild, elem );
+	},
+	children: function( elem ) {
+		return siblings( elem.firstChild );
+	},
+	contents: function( elem ) {
+        if ( nodeName( elem, "iframe" ) ) {
+            return elem.contentDocument;
+        }
+
+        // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only
+        // Treat the template element as a regular one in browsers that
+        // don't support it.
+        if ( nodeName( elem, "template" ) ) {
+            elem = elem.content || elem;
+        }
+
+        return jQuery.merge( [], elem.childNodes );
+	}
+}, function( name, fn ) {
+	jQuery.fn[ name ] = function( until, selector ) {
+		var matched = jQuery.map( this, fn, until );
+
+		if ( name.slice( -5 ) !== "Until" ) {
+			selector = until;
+		}
+
+		if ( selector && typeof selector === "string" ) {
+			matched = jQuery.filter( selector, matched );
+		}
+
+		if ( this.length > 1 ) {
+
+			// Remove duplicates
+			if ( !guaranteedUnique[ name ] ) {
+				jQuery.uniqueSort( matched );
+			}
+
+			// Reverse order for parents* and prev-derivatives
+			if ( rparentsprev.test( name ) ) {
+				matched.reverse();
+			}
+		}
+
+		return this.pushStack( matched );
+	};
+} );
+var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g );
+
+
+
+// Convert String-formatted options into Object-formatted ones
+function createOptions( options ) {
+	var object = {};
+	jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {
+		object[ flag ] = true;
+	} );
+	return object;
+}
+
+/*
+ * Create a callback list using the following parameters:
+ *
+ *	options: an optional list of space-separated options that will change how
+ *			the callback list behaves or a more traditional option object
+ *
+ * By default a callback list will act like an event callback list and can be
+ * "fired" multiple times.
+ *
+ * Possible options:
+ *
+ *	once:			will ensure the callback list can only be fired once (like a Deferred)
+ *
+ *	memory:			will keep track of previous values and will call any callback added
+ *					after the list has been fired right away with the latest "memorized"
+ *					values (like a Deferred)
+ *
+ *	unique:			will ensure a callback can only be added once (no duplicate in the list)
+ *
+ *	stopOnFalse:	interrupt callings when a callback returns false
+ *
+ */
+jQuery.Callbacks = function( options ) {
+
+	// Convert options from String-formatted to Object-formatted if needed
+	// (we check in cache first)
+	options = typeof options === "string" ?
+		createOptions( options ) :
+		jQuery.extend( {}, options );
+
+	var // Flag to know if list is currently firing
+		firing,
+
+		// Last fire value for non-forgettable lists
+		memory,
+
+		// Flag to know if list was already fired
+		fired,
+
+		// Flag to prevent firing
+		locked,
+
+		// Actual callback list
+		list = [],
+
+		// Queue of execution data for repeatable lists
+		queue = [],
+
+		// Index of currently firing callback (modified by add/remove as needed)
+		firingIndex = -1,
+
+		// Fire callbacks
+		fire = function() {
+
+			// Enforce single-firing
+			locked = locked || options.once;
+
+			// Execute callbacks for all pending executions,
+			// respecting firingIndex overrides and runtime changes
+			fired = firing = true;
+			for ( ; queue.length; firingIndex = -1 ) {
+				memory = queue.shift();
+				while ( ++firingIndex < list.length ) {
+
+					// Run callback and check for early termination
+					if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&
+						options.stopOnFalse ) {
+
+						// Jump to end and forget the data so .add doesn't re-fire
+						firingIndex = list.length;
+						memory = false;
+					}
+				}
+			}
+
+			// Forget the data if we're done with it
+			if ( !options.memory ) {
+				memory = false;
+			}
+
+			firing = false;
+
+			// Clean up if we're done firing for good
+			if ( locked ) {
+
+				// Keep an empty list if we have data for future add calls
+				if ( memory ) {
+					list = [];
+
+				// Otherwise, this object is spent
+				} else {
+					list = "";
+				}
+			}
+		},
+
+		// Actual Callbacks object
+		self = {
+
+			// Add a callback or a collection of callbacks to the list
+			add: function() {
+				if ( list ) {
+
+					// If we have memory from a past run, we should fire after adding
+					if ( memory && !firing ) {
+						firingIndex = list.length - 1;
+						queue.push( memory );
+					}
+
+					( function add( args ) {
+						jQuery.each( args, function( _, arg ) {
+							if ( isFunction( arg ) ) {
+								if ( !options.unique || !self.has( arg ) ) {
+									list.push( arg );
+								}
+							} else if ( arg && arg.length && toType( arg ) !== "string" ) {
+
+								// Inspect recursively
+								add( arg );
+							}
+						} );
+					} )( arguments );
+
+					if ( memory && !firing ) {
+						fire();
+					}
+				}
+				return this;
+			},
+
+			// Remove a callback from the list
+			remove: function() {
+				jQuery.each( arguments, function( _, arg ) {
+					var index;
+					while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
+						list.splice( index, 1 );
+
+						// Handle firing indexes
+						if ( index <= firingIndex ) {
+							firingIndex--;
+						}
+					}
+				} );
+				return this;
+			},
+
+			// Check if a given callback is in the list.
+			// If no argument is given, return whether or not list has callbacks attached.
+			has: function( fn ) {
+				return fn ?
+					jQuery.inArray( fn, list ) > -1 :
+					list.length > 0;
+			},
+
+			// Remove all callbacks from the list
+			empty: function() {
+				if ( list ) {
+					list = [];
+				}
+				return this;
+			},
+
+			// Disable .fire and .add
+			// Abort any current/pending executions
+			// Clear all callbacks and values
+			disable: function() {
+				locked = queue = [];
+				list = memory = "";
+				return this;
+			},
+			disabled: function() {
+				return !list;
+			},
+
+			// Disable .fire
+			// Also disable .add unless we have memory (since it would have no effect)
+			// Abort any pending executions
+			lock: function() {
+				locked = queue = [];
+				if ( !memory && !firing ) {
+					list = memory = "";
+				}
+				return this;
+			},
+			locked: function() {
+				return !!locked;
+			},
+
+			// Call all callbacks with the given context and arguments
+			fireWith: function( context, args ) {
+				if ( !locked ) {
+					args = args || [];
+					args = [ context, args.slice ? args.slice() : args ];
+					queue.push( args );
+					if ( !firing ) {
+						fire();
+					}
+				}
+				return this;
+			},
+
+			// Call all the callbacks with the given arguments
+			fire: function() {
+				self.fireWith( this, arguments );
+				return this;
+			},
+
+			// To know if the callbacks have already been called at least once
+			fired: function() {
+				return !!fired;
+			}
+		};
+
+	return self;
+};
+
+
+function Identity( v ) {
+	return v;
+}
+function Thrower( ex ) {
+	throw ex;
+}
+
+function adoptValue( value, resolve, reject, noValue ) {
+	var method;
+
+	try {
+
+		// Check for promise aspect first to privilege synchronous behavior
+		if ( value && isFunction( ( method = value.promise ) ) ) {
+			method.call( value ).done( resolve ).fail( reject );
+
+		// Other thenables
+		} else if ( value && isFunction( ( method = value.then ) ) ) {
+			method.call( value, resolve, reject );
+
+		// Other non-thenables
+		} else {
+
+			// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:
+			// * false: [ value ].slice( 0 ) => resolve( value )
+			// * true: [ value ].slice( 1 ) => resolve()
+			resolve.apply( undefined, [ value ].slice( noValue ) );
+		}
+
+	// For Promises/A+, convert exceptions into rejections
+	// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in
+	// Deferred#then to conditionally suppress rejection.
+	} catch ( value ) {
+
+		// Support: Android 4.0 only
+		// Strict mode functions invoked without .call/.apply get global-object context
+		reject.apply( undefined, [ value ] );
+	}
+}
+
+jQuery.extend( {
+
+	Deferred: function( func ) {
+		var tuples = [
+
+				// action, add listener, callbacks,
+				// ... .then handlers, argument index, [final state]
+				[ "notify", "progress", jQuery.Callbacks( "memory" ),
+					jQuery.Callbacks( "memory" ), 2 ],
+				[ "resolve", "done", jQuery.Callbacks( "once memory" ),
+					jQuery.Callbacks( "once memory" ), 0, "resolved" ],
+				[ "reject", "fail", jQuery.Callbacks( "once memory" ),
+					jQuery.Callbacks( "once memory" ), 1, "rejected" ]
+			],
+			state = "pending",
+			promise = {
+				state: function() {
+					return state;
+				},
+				always: function() {
+					deferred.done( arguments ).fail( arguments );
+					return this;
+				},
+				"catch": function( fn ) {
+					return promise.then( null, fn );
+				},
+
+				// Keep pipe for back-compat
+				pipe: function( /* fnDone, fnFail, fnProgress */ ) {
+					var fns = arguments;
+
+					return jQuery.Deferred( function( newDefer ) {
+						jQuery.each( tuples, function( i, tuple ) {
+
+							// Map tuples (progress, done, fail) to arguments (done, fail, progress)
+							var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];
+
+							// deferred.progress(function() { bind to newDefer or newDefer.notify })
+							// deferred.done(function() { bind to newDefer or newDefer.resolve })
+							// deferred.fail(function() { bind to newDefer or newDefer.reject })
+							deferred[ tuple[ 1 ] ]( function() {
+								var returned = fn && fn.apply( this, arguments );
+								if ( returned && isFunction( returned.promise ) ) {
+									returned.promise()
+										.progress( newDefer.notify )
+										.done( newDefer.resolve )
+										.fail( newDefer.reject );
+								} else {
+									newDefer[ tuple[ 0 ] + "With" ](
+										this,
+										fn ? [ returned ] : arguments
+									);
+								}
+							} );
+						} );
+						fns = null;
+					} ).promise();
+				},
+				then: function( onFulfilled, onRejected, onProgress ) {
+					var maxDepth = 0;
+					function resolve( depth, deferred, handler, special ) {
+						return function() {
+							var that = this,
+								args = arguments,
+								mightThrow = function() {
+									var returned, then;
+
+									// Support: Promises/A+ section 2.3.3.3.3
+									// https://promisesaplus.com/#point-59
+									// Ignore double-resolution attempts
+									if ( depth < maxDepth ) {
+										return;
+									}
+
+									returned = handler.apply( that, args );
+
+									// Support: Promises/A+ section 2.3.1
+									// https://promisesaplus.com/#point-48
+									if ( returned === deferred.promise() ) {
+										throw new TypeError( "Thenable self-resolution" );
+									}
+
+									// Support: Promises/A+ sections 2.3.3.1, 3.5
+									// https://promisesaplus.com/#point-54
+									// https://promisesaplus.com/#point-75
+									// Retrieve `then` only once
+									then = returned &&
+
+										// Support: Promises/A+ section 2.3.4
+										// https://promisesaplus.com/#point-64
+										// Only check objects and functions for thenability
+										( typeof returned === "object" ||
+											typeof returned === "function" ) &&
+										returned.then;
+
+									// Handle a returned thenable
+									if ( isFunction( then ) ) {
+
+										// Special processors (notify) just wait for resolution
+										if ( special ) {
+											then.call(
+												returned,
+												resolve( maxDepth, deferred, Identity, special ),
+												resolve( maxDepth, deferred, Thrower, special )
+											);
+
+										// Normal processors (resolve) also hook into progress
+										} else {
+
+											// ...and disregard older resolution values
+											maxDepth++;
+
+											then.call(
+												returned,
+												resolve( maxDepth, deferred, Identity, special ),
+												resolve( maxDepth, deferred, Thrower, special ),
+												resolve( maxDepth, deferred, Identity,
+													deferred.notifyWith )
+											);
+										}
+
+									// Handle all other returned values
+									} else {
+
+										// Only substitute handlers pass on context
+										// and multiple values (non-spec behavior)
+										if ( handler !== Identity ) {
+											that = undefined;
+											args = [ returned ];
+										}
+
+										// Process the value(s)
+										// Default process is resolve
+										( special || deferred.resolveWith )( that, args );
+									}
+								},
+
+								// Only normal processors (resolve) catch and reject exceptions
+								process = special ?
+									mightThrow :
+									function() {
+										try {
+											mightThrow();
+										} catch ( e ) {
+
+											if ( jQuery.Deferred.exceptionHook ) {
+												jQuery.Deferred.exceptionHook( e,
+													process.stackTrace );
+											}
+
+											// Support: Promises/A+ section 2.3.3.3.4.1
+											// https://promisesaplus.com/#point-61
+											// Ignore post-resolution exceptions
+											if ( depth + 1 >= maxDepth ) {
+
+												// Only substitute handlers pass on context
+												// and multiple values (non-spec behavior)
+												if ( handler !== Thrower ) {
+													that = undefined;
+													args = [ e ];
+												}
+
+												deferred.rejectWith( that, args );
+											}
+										}
+									};
+
+							// Support: Promises/A+ section 2.3.3.3.1
+							// https://promisesaplus.com/#point-57
+							// Re-resolve promises immediately to dodge false rejection from
+							// subsequent errors
+							if ( depth ) {
+								process();
+							} else {
+
+								// Call an optional hook to record the stack, in case of exception
+								// since it's otherwise lost when execution goes async
+								if ( jQuery.Deferred.getStackHook ) {
+									process.stackTrace = jQuery.Deferred.getStackHook();
+								}
+								window.setTimeout( process );
+							}
+						};
+					}
+
+					return jQuery.Deferred( function( newDefer ) {
+
+						// progress_handlers.add( ... )
+						tuples[ 0 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								isFunction( onProgress ) ?
+									onProgress :
+									Identity,
+								newDefer.notifyWith
+							)
+						);
+
+						// fulfilled_handlers.add( ... )
+						tuples[ 1 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								isFunction( onFulfilled ) ?
+									onFulfilled :
+									Identity
+							)
+						);
+
+						// rejected_handlers.add( ... )
+						tuples[ 2 ][ 3 ].add(
+							resolve(
+								0,
+								newDefer,
+								isFunction( onRejected ) ?
+									onRejected :
+									Thrower
+							)
+						);
+					} ).promise();
+				},
+
+				// Get a promise for this deferred
+				// If obj is provided, the promise aspect is added to the object
+				promise: function( obj ) {
+					return obj != null ? jQuery.extend( obj, promise ) : promise;
+				}
+			},
+			deferred = {};
+
+		// Add list-specific methods
+		jQuery.each( tuples, function( i, tuple ) {
+			var list = tuple[ 2 ],
+				stateString = tuple[ 5 ];
+
+			// promise.progress = list.add
+			// promise.done = list.add
+			// promise.fail = list.add
+			promise[ tuple[ 1 ] ] = list.add;
+
+			// Handle state
+			if ( stateString ) {
+				list.add(
+					function() {
+
+						// state = "resolved" (i.e., fulfilled)
+						// state = "rejected"
+						state = stateString;
+					},
+
+					// rejected_callbacks.disable
+					// fulfilled_callbacks.disable
+					tuples[ 3 - i ][ 2 ].disable,
+
+					// rejected_handlers.disable
+					// fulfilled_handlers.disable
+					tuples[ 3 - i ][ 3 ].disable,
+
+					// progress_callbacks.lock
+					tuples[ 0 ][ 2 ].lock,
+
+					// progress_handlers.lock
+					tuples[ 0 ][ 3 ].lock
+				);
+			}
+
+			// progress_handlers.fire
+			// fulfilled_handlers.fire
+			// rejected_handlers.fire
+			list.add( tuple[ 3 ].fire );
+
+			// deferred.notify = function() { deferred.notifyWith(...) }
+			// deferred.resolve = function() { deferred.resolveWith(...) }
+			// deferred.reject = function() { deferred.rejectWith(...) }
+			deferred[ tuple[ 0 ] ] = function() {
+				deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments );
+				return this;
+			};
+
+			// deferred.notifyWith = list.fireWith
+			// deferred.resolveWith = list.fireWith
+			// deferred.rejectWith = list.fireWith
+			deferred[ tuple[ 0 ] + "With" ] = list.fireWith;
+		} );
+
+		// Make the deferred a promise
+		promise.promise( deferred );
+
+		// Call given func if any
+		if ( func ) {
+			func.call( deferred, deferred );
+		}
+
+		// All done!
+		return deferred;
+	},
+
+	// Deferred helper
+	when: function( singleValue ) {
+		var
+
+			// count of uncompleted subordinates
+			remaining = arguments.length,
+
+			// count of unprocessed arguments
+			i = remaining,
+
+			// subordinate fulfillment data
+			resolveContexts = Array( i ),
+			resolveValues = slice.call( arguments ),
+
+			// the master Deferred
+			master = jQuery.Deferred(),
+
+			// subordinate callback factory
+			updateFunc = function( i ) {
+				return function( value ) {
+					resolveContexts[ i ] = this;
+					resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
+					if ( !( --remaining ) ) {
+						master.resolveWith( resolveContexts, resolveValues );
+					}
+				};
+			};
+
+		// Single- and empty arguments are adopted like Promise.resolve
+		if ( remaining <= 1 ) {
+			adoptValue( singleValue, master.done( updateFunc( i ) ).resolve, master.reject,
+				!remaining );
+
+			// Use .then() to unwrap secondary thenables (cf. gh-3000)
+			if ( master.state() === "pending" ||
+				isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {
+
+				return master.then();
+			}
+		}
+
+		// Multiple arguments are aggregated like Promise.all array elements
+		while ( i-- ) {
+			adoptValue( resolveValues[ i ], updateFunc( i ), master.reject );
+		}
+
+		return master.promise();
+	}
+} );
+
+
+// These usually indicate a programmer mistake during development,
+// warn about them ASAP rather than swallowing them by default.
+var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;
+
+jQuery.Deferred.exceptionHook = function( error, stack ) {
+
+	// Support: IE 8 - 9 only
+	// Console exists when dev tools are open, which can happen at any time
+	if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {
+		window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack );
+	}
+};
+
+
+
+
+jQuery.readyException = function( error ) {
+	window.setTimeout( function() {
+		throw error;
+	} );
+};
+
+
+
+
+// The deferred used on DOM ready
+var readyList = jQuery.Deferred();
+
+jQuery.fn.ready = function( fn ) {
+
+	readyList
+		.then( fn )
+
+		// Wrap jQuery.readyException in a function so that the lookup
+		// happens at the time of error handling instead of callback
+		// registration.
+		.catch( function( error ) {
+			jQuery.readyException( error );
+		} );
+
+	return this;
+};
+
+jQuery.extend( {
+
+	// Is the DOM ready to be used? Set to true once it occurs.
+	isReady: false,
+
+	// A counter to track how many items to wait for before
+	// the ready event fires. See #6781
+	readyWait: 1,
+
+	// Handle when the DOM is ready
+	ready: function( wait ) {
+
+		// Abort if there are pending holds or we're already ready
+		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
+			return;
+		}
+
+		// Remember that the DOM is ready
+		jQuery.isReady = true;
+
+		// If a normal DOM Ready event fired, decrement, and wait if need be
+		if ( wait !== true && --jQuery.readyWait > 0 ) {
+			return;
+		}
+
+		// If there are functions bound, to execute
+		readyList.resolveWith( document, [ jQuery ] );
+	}
+} );
+
+jQuery.ready.then = readyList.then;
+
+// The ready event handler and self cleanup method
+function completed() {
+	document.removeEventListener( "DOMContentLoaded", completed );
+	window.removeEventListener( "load", completed );
+	jQuery.ready();
+}
+
+// Catch cases where $(document).ready() is called
+// after the browser event has already occurred.
+// Support: IE <=9 - 10 only
+// Older IE sometimes signals "interactive" too soon
+if ( document.readyState === "complete" ||
+	( document.readyState !== "loading" && !document.documentElement.doScroll ) ) {
+
+	// Handle it asynchronously to allow scripts the opportunity to delay ready
+	window.setTimeout( jQuery.ready );
+
+} else {
+
+	// Use the handy event callback
+	document.addEventListener( "DOMContentLoaded", completed );
+
+	// A fallback to window.onload, that will always work
+	window.addEventListener( "load", completed );
+}
+
+
+
+
+// Multifunctional method to get and set values of a collection
+// The value/s can optionally be executed if it's a function
+var access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
+	var i = 0,
+		len = elems.length,
+		bulk = key == null;
+
+	// Sets many values
+	if ( toType( key ) === "object" ) {
+		chainable = true;
+		for ( i in key ) {
+			access( elems, fn, i, key[ i ], true, emptyGet, raw );
+		}
+
+	// Sets one value
+	} else if ( value !== undefined ) {
+		chainable = true;
+
+		if ( !isFunction( value ) ) {
+			raw = true;
+		}
+
+		if ( bulk ) {
+
+			// Bulk operations run against the entire set
+			if ( raw ) {
+				fn.call( elems, value );
+				fn = null;
+
+			// ...except when executing function values
+			} else {
+				bulk = fn;
+				fn = function( elem, key, value ) {
+					return bulk.call( jQuery( elem ), value );
+				};
+			}
+		}
+
+		if ( fn ) {
+			for ( ; i < len; i++ ) {
+				fn(
+					elems[ i ], key, raw ?
+					value :
+					value.call( elems[ i ], i, fn( elems[ i ], key ) )
+				);
+			}
+		}
+	}
+
+	if ( chainable ) {
+		return elems;
+	}
+
+	// Gets
+	if ( bulk ) {
+		return fn.call( elems );
+	}
+
+	return len ? fn( elems[ 0 ], key ) : emptyGet;
+};
+
+
+// Matches dashed string for camelizing
+var rmsPrefix = /^-ms-/,
+	rdashAlpha = /-([a-z])/g;
+
+// Used by camelCase as callback to replace()
+function fcamelCase( all, letter ) {
+	return letter.toUpperCase();
+}
+
+// Convert dashed to camelCase; used by the css and data modules
+// Support: IE <=9 - 11, Edge 12 - 15
+// Microsoft forgot to hump their vendor prefix (#9572)
+function camelCase( string ) {
+	return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+}
+var acceptData = function( owner ) {
+
+	// Accepts only:
+	//  - Node
+	//    - Node.ELEMENT_NODE
+	//    - Node.DOCUMENT_NODE
+	//  - Object
+	//    - Any
+	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
+};
+
+
+
+
+function Data() {
+	this.expando = jQuery.expando + Data.uid++;
+}
+
+Data.uid = 1;
+
+Data.prototype = {
+
+	cache: function( owner ) {
+
+		// Check if the owner object already has a cache
+		var value = owner[ this.expando ];
+
+		// If not, create one
+		if ( !value ) {
+			value = {};
+
+			// We can accept data for non-element nodes in modern browsers,
+			// but we should not, see #8335.
+			// Always return an empty object.
+			if ( acceptData( owner ) ) {
+
+				// If it is a node unlikely to be stringify-ed or looped over
+				// use plain assignment
+				if ( owner.nodeType ) {
+					owner[ this.expando ] = value;
+
+				// Otherwise secure it in a non-enumerable property
+				// configurable must be true to allow the property to be
+				// deleted when data is removed
+				} else {
+					Object.defineProperty( owner, this.expando, {
+						value: value,
+						configurable: true
+					} );
+				}
+			}
+		}
+
+		return value;
+	},
+	set: function( owner, data, value ) {
+		var prop,
+			cache = this.cache( owner );
+
+		// Handle: [ owner, key, value ] args
+		// Always use camelCase key (gh-2257)
+		if ( typeof data === "string" ) {
+			cache[ camelCase( data ) ] = value;
+
+		// Handle: [ owner, { properties } ] args
+		} else {
+
+			// Copy the properties one-by-one to the cache object
+			for ( prop in data ) {
+				cache[ camelCase( prop ) ] = data[ prop ];
+			}
+		}
+		return cache;
+	},
+	get: function( owner, key ) {
+		return key === undefined ?
+			this.cache( owner ) :
+
+			// Always use camelCase key (gh-2257)
+			owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];
+	},
+	access: function( owner, key, value ) {
+
+		// In cases where either:
+		//
+		//   1. No key was specified
+		//   2. A string key was specified, but no value provided
+		//
+		// Take the "read" path and allow the get method to determine
+		// which value to return, respectively either:
+		//
+		//   1. The entire cache object
+		//   2. The data stored at the key
+		//
+		if ( key === undefined ||
+				( ( key && typeof key === "string" ) && value === undefined ) ) {
+
+			return this.get( owner, key );
+		}
+
+		// When the key is not a string, or both a key and value
+		// are specified, set or extend (existing objects) with either:
+		//
+		//   1. An object of properties
+		//   2. A key and value
+		//
+		this.set( owner, key, value );
+
+		// Since the "set" path can have two possible entry points
+		// return the expected data based on which path was taken[*]
+		return value !== undefined ? value : key;
+	},
+	remove: function( owner, key ) {
+		var i,
+			cache = owner[ this.expando ];
+
+		if ( cache === undefined ) {
+			return;
+		}
+
+		if ( key !== undefined ) {
+
+			// Support array or space separated string of keys
+			if ( Array.isArray( key ) ) {
+
+				// If key is an array of keys...
+				// We always set camelCase keys, so remove that.
+				key = key.map( camelCase );
+			} else {
+				key = camelCase( key );
+
+				// If a key with the spaces exists, use it.
+				// Otherwise, create an array by matching non-whitespace
+				key = key in cache ?
+					[ key ] :
+					( key.match( rnothtmlwhite ) || [] );
+			}
+
+			i = key.length;
+
+			while ( i-- ) {
+				delete cache[ key[ i ] ];
+			}
+		}
+
+		// Remove the expando if there's no more data
+		if ( key === undefined || jQuery.isEmptyObject( cache ) ) {
+
+			// Support: Chrome <=35 - 45
+			// Webkit & Blink performance suffers when deleting properties
+			// from DOM nodes, so set to undefined instead
+			// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)
+			if ( owner.nodeType ) {
+				owner[ this.expando ] = undefined;
+			} else {
+				delete owner[ this.expando ];
+			}
+		}
+	},
+	hasData: function( owner ) {
+		var cache = owner[ this.expando ];
+		return cache !== undefined && !jQuery.isEmptyObject( cache );
+	}
+};
+var dataPriv = new Data();
+
+var dataUser = new Data();
+
+
+
+//	Implementation Summary
+//
+//	1. Enforce API surface and semantic compatibility with 1.9.x branch
+//	2. Improve the module's maintainability by reducing the storage
+//		paths to a single mechanism.
+//	3. Use the same single mechanism to support "private" and "user" data.
+//	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
+//	5. Avoid exposing implementation details on user objects (eg. expando properties)
+//	6. Provide a clear path for implementation upgrade to WeakMap in 2014
+
+var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
+	rmultiDash = /[A-Z]/g;
+
+function getData( data ) {
+	if ( data === "true" ) {
+		return true;
+	}
+
+	if ( data === "false" ) {
+		return false;
+	}
+
+	if ( data === "null" ) {
+		return null;
+	}
+
+	// Only convert to a number if it doesn't change the string
+	if ( data === +data + "" ) {
+		return +data;
+	}
+
+	if ( rbrace.test( data ) ) {
+		return JSON.parse( data );
+	}
+
+	return data;
+}
+
+function dataAttr( elem, key, data ) {
+	var name;
+
+	// If nothing was found internally, try to fetch any
+	// data from the HTML5 data-* attribute
+	if ( data === undefined && elem.nodeType === 1 ) {
+		name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase();
+		data = elem.getAttribute( name );
+
+		if ( typeof data === "string" ) {
+			try {
+				data = getData( data );
+			} catch ( e ) {}
+
+			// Make sure we set the data so it isn't changed later
+			dataUser.set( elem, key, data );
+		} else {
+			data = undefined;
+		}
+	}
+	return data;
+}
+
+jQuery.extend( {
+	hasData: function( elem ) {
+		return dataUser.hasData( elem ) || dataPriv.hasData( elem );
+	},
+
+	data: function( elem, name, data ) {
+		return dataUser.access( elem, name, data );
+	},
+
+	removeData: function( elem, name ) {
+		dataUser.remove( elem, name );
+	},
+
+	// TODO: Now that all calls to _data and _removeData have been replaced
+	// with direct calls to dataPriv methods, these can be deprecated.
+	_data: function( elem, name, data ) {
+		return dataPriv.access( elem, name, data );
+	},
+
+	_removeData: function( elem, name ) {
+		dataPriv.remove( elem, name );
+	}
+} );
+
+jQuery.fn.extend( {
+	data: function( key, value ) {
+		var i, name, data,
+			elem = this[ 0 ],
+			attrs = elem && elem.attributes;
+
+		// Gets all values
+		if ( key === undefined ) {
+			if ( this.length ) {
+				data = dataUser.get( elem );
+
+				if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) {
+					i = attrs.length;
+					while ( i-- ) {
+
+						// Support: IE 11 only
+						// The attrs elements can be null (#14894)
+						if ( attrs[ i ] ) {
+							name = attrs[ i ].name;
+							if ( name.indexOf( "data-" ) === 0 ) {
+								name = camelCase( name.slice( 5 ) );
+								dataAttr( elem, name, data[ name ] );
+							}
+						}
+					}
+					dataPriv.set( elem, "hasDataAttrs", true );
+				}
+			}
+
+			return data;
+		}
+
+		// Sets multiple values
+		if ( typeof key === "object" ) {
+			return this.each( function() {
+				dataUser.set( this, key );
+			} );
+		}
+
+		return access( this, function( value ) {
+			var data;
+
+			// The calling jQuery object (element matches) is not empty
+			// (and therefore has an element appears at this[ 0 ]) and the
+			// `value` parameter was not undefined. An empty jQuery object
+			// will result in `undefined` for elem = this[ 0 ] which will
+			// throw an exception if an attempt to read a data cache is made.
+			if ( elem && value === undefined ) {
+
+				// Attempt to get data from the cache
+				// The key will always be camelCased in Data
+				data = dataUser.get( elem, key );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// Attempt to "discover" the data in
+				// HTML5 custom data-* attrs
+				data = dataAttr( elem, key );
+				if ( data !== undefined ) {
+					return data;
+				}
+
+				// We tried really hard, but the data doesn't exist.
+				return;
+			}
+
+			// Set the data...
+			this.each( function() {
+
+				// We always store the camelCased key
+				dataUser.set( this, key, value );
+			} );
+		}, null, value, arguments.length > 1, null, true );
+	},
+
+	removeData: function( key ) {
+		return this.each( function() {
+			dataUser.remove( this, key );
+		} );
+	}
+} );
+
+
+jQuery.extend( {
+	queue: function( elem, type, data ) {
+		var queue;
+
+		if ( elem ) {
+			type = ( type || "fx" ) + "queue";
+			queue = dataPriv.get( elem, type );
+
+			// Speed up dequeue by getting out quickly if this is just a lookup
+			if ( data ) {
+				if ( !queue || Array.isArray( data ) ) {
+					queue = dataPriv.access( elem, type, jQuery.makeArray( data ) );
+				} else {
+					queue.push( data );
+				}
+			}
+			return queue || [];
+		}
+	},
+
+	dequeue: function( elem, type ) {
+		type = type || "fx";
+
+		var queue = jQuery.queue( elem, type ),
+			startLength = queue.length,
+			fn = queue.shift(),
+			hooks = jQuery._queueHooks( elem, type ),
+			next = function() {
+				jQuery.dequeue( elem, type );
+			};
+
+		// If the fx queue is dequeued, always remove the progress sentinel
+		if ( fn === "inprogress" ) {
+			fn = queue.shift();
+			startLength--;
+		}
+
+		if ( fn ) {
+
+			// Add a progress sentinel to prevent the fx queue from being
+			// automatically dequeued
+			if ( type === "fx" ) {
+				queue.unshift( "inprogress" );
+			}
+
+			// Clear up the last queue stop function
+			delete hooks.stop;
+			fn.call( elem, next, hooks );
+		}
+
+		if ( !startLength && hooks ) {
+			hooks.empty.fire();
+		}
+	},
+
+	// Not public - generate a queueHooks object, or return the current one
+	_queueHooks: function( elem, type ) {
+		var key = type + "queueHooks";
+		return dataPriv.get( elem, key ) || dataPriv.access( elem, key, {
+			empty: jQuery.Callbacks( "once memory" ).add( function() {
+				dataPriv.remove( elem, [ type + "queue", key ] );
+			} )
+		} );
+	}
+} );
+
+jQuery.fn.extend( {
+	queue: function( type, data ) {
+		var setter = 2;
+
+		if ( typeof type !== "string" ) {
+			data = type;
+			type = "fx";
+			setter--;
+		}
+
+		if ( arguments.length < setter ) {
+			return jQuery.queue( this[ 0 ], type );
+		}
+
+		return data === undefined ?
+			this :
+			this.each( function() {
+				var queue = jQuery.queue( this, type, data );
+
+				// Ensure a hooks for this queue
+				jQuery._queueHooks( this, type );
+
+				if ( type === "fx" && queue[ 0 ] !== "inprogress" ) {
+					jQuery.dequeue( this, type );
+				}
+			} );
+	},
+	dequeue: function( type ) {
+		return this.each( function() {
+			jQuery.dequeue( this, type );
+		} );
+	},
+	clearQueue: function( type ) {
+		return this.queue( type || "fx", [] );
+	},
+
+	// Get a promise resolved when queues of a certain type
+	// are emptied (fx is the type by default)
+	promise: function( type, obj ) {
+		var tmp,
+			count = 1,
+			defer = jQuery.Deferred(),
+			elements = this,
+			i = this.length,
+			resolve = function() {
+				if ( !( --count ) ) {
+					defer.resolveWith( elements, [ elements ] );
+				}
+			};
+
+		if ( typeof type !== "string" ) {
+			obj = type;
+			type = undefined;
+		}
+		type = type || "fx";
+
+		while ( i-- ) {
+			tmp = dataPriv.get( elements[ i ], type + "queueHooks" );
+			if ( tmp && tmp.empty ) {
+				count++;
+				tmp.empty.add( resolve );
+			}
+		}
+		resolve();
+		return defer.promise( obj );
+	}
+} );
+var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source;
+
+var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" );
+
+
+var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
+
+var isHiddenWithinTree = function( elem, el ) {
+
+		// isHiddenWithinTree might be called from jQuery#filter function;
+		// in that case, element will be second argument
+		elem = el || elem;
+
+		// Inline style trumps all
+		return elem.style.display === "none" ||
+			elem.style.display === "" &&
+
+			// Otherwise, check computed style
+			// Support: Firefox <=43 - 45
+			// Disconnected elements can have computed display: none, so first confirm that elem is
+			// in the document.
+			jQuery.contains( elem.ownerDocument, elem ) &&
+
+			jQuery.css( elem, "display" ) === "none";
+	};
+
+var swap = function( elem, options, callback, args ) {
+	var ret, name,
+		old = {};
+
+	// Remember the old values, and insert the new ones
+	for ( name in options ) {
+		old[ name ] = elem.style[ name ];
+		elem.style[ name ] = options[ name ];
+	}
+
+	ret = callback.apply( elem, args || [] );
+
+	// Revert the old values
+	for ( name in options ) {
+		elem.style[ name ] = old[ name ];
+	}
+
+	return ret;
+};
+
+
+
+
+function adjustCSS( elem, prop, valueParts, tween ) {
+	var adjusted, scale,
+		maxIterations = 20,
+		currentValue = tween ?
+			function() {
+				return tween.cur();
+			} :
+			function() {
+				return jQuery.css( elem, prop, "" );
+			},
+		initial = currentValue(),
+		unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
+
+		// Starting value computation is required for potential unit mismatches
+		initialInUnit = ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) &&
+			rcssNum.exec( jQuery.css( elem, prop ) );
+
+	if ( initialInUnit && initialInUnit[ 3 ] !== unit ) {
+
+		// Support: Firefox <=54
+		// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)
+		initial = initial / 2;
+
+		// Trust units reported by jQuery.css
+		unit = unit || initialInUnit[ 3 ];
+
+		// Iteratively approximate from a nonzero starting point
+		initialInUnit = +initial || 1;
+
+		while ( maxIterations-- ) {
+
+			// Evaluate and update our best guess (doubling guesses that zero out).
+			// Finish if the scale equals or crosses 1 (making the old*new product non-positive).
+			jQuery.style( elem, prop, initialInUnit + unit );
+			if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {
+				maxIterations = 0;
+			}
+			initialInUnit = initialInUnit / scale;
+
+		}
+
+		initialInUnit = initialInUnit * 2;
+		jQuery.style( elem, prop, initialInUnit + unit );
+
+		// Make sure we update the tween properties later on
+		valueParts = valueParts || [];
+	}
+
+	if ( valueParts ) {
+		initialInUnit = +initialInUnit || +initial || 0;
+
+		// Apply relative offset (+=/-=) if specified
+		adjusted = valueParts[ 1 ] ?
+			initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :
+			+valueParts[ 2 ];
+		if ( tween ) {
+			tween.unit = unit;
+			tween.start = initialInUnit;
+			tween.end = adjusted;
+		}
+	}
+	return adjusted;
+}
+
+
+var defaultDisplayMap = {};
+
+function getDefaultDisplay( elem ) {
+	var temp,
+		doc = elem.ownerDocument,
+		nodeName = elem.nodeName,
+		display = defaultDisplayMap[ nodeName ];
+
+	if ( display ) {
+		return display;
+	}
+
+	temp = doc.body.appendChild( doc.createElement( nodeName ) );
+	display = jQuery.css( temp, "display" );
+
+	temp.parentNode.removeChild( temp );
+
+	if ( display === "none" ) {
+		display = "block";
+	}
+	defaultDisplayMap[ nodeName ] = display;
+
+	return display;
+}
+
+function showHide( elements, show ) {
+	var display, elem,
+		values = [],
+		index = 0,
+		length = elements.length;
+
+	// Determine new display value for elements that need to change
+	for ( ; index < length; index++ ) {
+		elem = elements[ index ];
+		if ( !elem.style ) {
+			continue;
+		}
+
+		display = elem.style.display;
+		if ( show ) {
+
+			// Since we force visibility upon cascade-hidden elements, an immediate (and slow)
+			// check is required in this first loop unless we have a nonempty display value (either
+			// inline or about-to-be-restored)
+			if ( display === "none" ) {
+				values[ index ] = dataPriv.get( elem, "display" ) || null;
+				if ( !values[ index ] ) {
+					elem.style.display = "";
+				}
+			}
+			if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) {
+				values[ index ] = getDefaultDisplay( elem );
+			}
+		} else {
+			if ( display !== "none" ) {
+				values[ index ] = "none";
+
+				// Remember what we're overwriting
+				dataPriv.set( elem, "display", display );
+			}
+		}
+	}
+
+	// Set the display of the elements in a second loop to avoid constant reflow
+	for ( index = 0; index < length; index++ ) {
+		if ( values[ index ] != null ) {
+			elements[ index ].style.display = values[ index ];
+		}
+	}
+
+	return elements;
+}
+
+jQuery.fn.extend( {
+	show: function() {
+		return showHide( this, true );
+	},
+	hide: function() {
+		return showHide( this );
+	},
+	toggle: function( state ) {
+		if ( typeof state === "boolean" ) {
+			return state ? this.show() : this.hide();
+		}
+
+		return this.each( function() {
+			if ( isHiddenWithinTree( this ) ) {
+				jQuery( this ).show();
+			} else {
+				jQuery( this ).hide();
+			}
+		} );
+	}
+} );
+var rcheckableType = ( /^(?:checkbox|radio)$/i );
+
+var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]+)/i );
+
+var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i );
+
+
+
+// We have to close these tags to support XHTML (#13200)
+var wrapMap = {
+
+	// Support: IE <=9 only
+	option: [ 1, "<select multiple='multiple'>", "</select>" ],
+
+	// XHTML parsers do not magically insert elements in the
+	// same way that tag soup parsers do. So we cannot shorten
+	// this by omitting <tbody> or other required elements.
+	thead: [ 1, "<table>", "</table>" ],
+	col: [ 2, "<table><colgroup>", "</colgroup></table>" ],
+	tr: [ 2, "<table><tbody>", "</tbody></table>" ],
+	td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ],
+
+	_default: [ 0, "", "" ]
+};
+
+// Support: IE <=9 only
+wrapMap.optgroup = wrapMap.option;
+
+wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
+wrapMap.th = wrapMap.td;
+
+
+function getAll( context, tag ) {
+
+	// Support: IE <=9 - 11 only
+	// Use typeof to avoid zero-argument method invocation on host objects (#15151)
+	var ret;
+
+	if ( typeof context.getElementsByTagName !== "undefined" ) {
+		ret = context.getElementsByTagName( tag || "*" );
+
+	} else if ( typeof context.querySelectorAll !== "undefined" ) {
+		ret = context.querySelectorAll( tag || "*" );
+
+	} else {
+		ret = [];
+	}
+
+	if ( tag === undefined || tag && nodeName( context, tag ) ) {
+		return jQuery.merge( [ context ], ret );
+	}
+
+	return ret;
+}
+
+
+// Mark scripts as having already been evaluated
+function setGlobalEval( elems, refElements ) {
+	var i = 0,
+		l = elems.length;
+
+	for ( ; i < l; i++ ) {
+		dataPriv.set(
+			elems[ i ],
+			"globalEval",
+			!refElements || dataPriv.get( refElements[ i ], "globalEval" )
+		);
+	}
+}
+
+
+var rhtml = /<|&#?\w+;/;
+
+function buildFragment( elems, context, scripts, selection, ignored ) {
+	var elem, tmp, tag, wrap, contains, j,
+		fragment = context.createDocumentFragment(),
+		nodes = [],
+		i = 0,
+		l = elems.length;
+
+	for ( ; i < l; i++ ) {
+		elem = elems[ i ];
+
+		if ( elem || elem === 0 ) {
+
+			// Add nodes directly
+			if ( toType( elem ) === "object" ) {
+
+				// Support: Android <=4.0 only, PhantomJS 1 only
+				// push.apply(_, arraylike) throws on ancient WebKit
+				jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
+
+			// Convert non-html into a text node
+			} else if ( !rhtml.test( elem ) ) {
+				nodes.push( context.createTextNode( elem ) );
+
+			// Convert html into DOM nodes
+			} else {
+				tmp = tmp || fragment.appendChild( context.createElement( "div" ) );
+
+				// Deserialize a standard representation
+				tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
+				wrap = wrapMap[ tag ] || wrapMap._default;
+				tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];
+
+				// Descend through wrappers to the right content
+				j = wrap[ 0 ];
+				while ( j-- ) {
+					tmp = tmp.lastChild;
+				}
+
+				// Support: Android <=4.0 only, PhantomJS 1 only
+				// push.apply(_, arraylike) throws on ancient WebKit
+				jQuery.merge( nodes, tmp.childNodes );
+
+				// Remember the top-level container
+				tmp = fragment.firstChild;
+
+				// Ensure the created nodes are orphaned (#12392)
+				tmp.textContent = "";
+			}
+		}
+	}
+
+	// Remove wrapper from fragment
+	fragment.textContent = "";
+
+	i = 0;
+	while ( ( elem = nodes[ i++ ] ) ) {
+
+		// Skip elements already in the context collection (trac-4087)
+		if ( selection && jQuery.inArray( elem, selection ) > -1 ) {
+			if ( ignored ) {
+				ignored.push( elem );
+			}
+			continue;
+		}
+
+		contains = jQuery.contains( elem.ownerDocument, elem );
+
+		// Append to fragment
+		tmp = getAll( fragment.appendChild( elem ), "script" );
+
+		// Preserve script evaluation history
+		if ( contains ) {
+			setGlobalEval( tmp );
+		}
+
+		// Capture executables
+		if ( scripts ) {
+			j = 0;
+			while ( ( elem = tmp[ j++ ] ) ) {
+				if ( rscriptType.test( elem.type || "" ) ) {
+					scripts.push( elem );
+				}
+			}
+		}
+	}
+
+	return fragment;
+}
+
+
+( function() {
+	var fragment = document.createDocumentFragment(),
+		div = fragment.appendChild( document.createElement( "div" ) ),
+		input = document.createElement( "input" );
+
+	// Support: Android 4.0 - 4.3 only
+	// Check state lost if the name is set (#11217)
+	// Support: Windows Web Apps (WWA)
+	// `name` and `type` must use .setAttribute for WWA (#14901)
+	input.setAttribute( "type", "radio" );
+	input.setAttribute( "checked", "checked" );
+	input.setAttribute( "name", "t" );
+
+	div.appendChild( input );
+
+	// Support: Android <=4.1 only
+	// Older WebKit doesn't clone checked state correctly in fragments
+	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+	// Support: IE <=11 only
+	// Make sure textarea (and checkbox) defaultValue is properly cloned
+	div.innerHTML = "<textarea>x</textarea>";
+	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
+} )();
+var documentElement = document.documentElement;
+
+
+
+var
+	rkeyEvent = /^key/,
+	rmouseEvent = /^(?:mouse|pointer|contextmenu|drag|drop)|click/,
+	rtypenamespace = /^([^.]*)(?:\.(.+)|)/;
+
+function returnTrue() {
+	return true;
+}
+
+function returnFalse() {
+	return false;
+}
+
+// Support: IE <=9 only
+// See #13393 for more info
+function safeActiveElement() {
+	try {
+		return document.activeElement;
+	} catch ( err ) { }
+}
+
+function on( elem, types, selector, data, fn, one ) {
+	var origFn, type;
+
+	// Types can be a map of types/handlers
+	if ( typeof types === "object" ) {
+
+		// ( types-Object, selector, data )
+		if ( typeof selector !== "string" ) {
+
+			// ( types-Object, data )
+			data = data || selector;
+			selector = undefined;
+		}
+		for ( type in types ) {
+			on( elem, type, selector, data, types[ type ], one );
+		}
+		return elem;
+	}
+
+	if ( data == null && fn == null ) {
+
+		// ( types, fn )
+		fn = selector;
+		data = selector = undefined;
+	} else if ( fn == null ) {
+		if ( typeof selector === "string" ) {
+
+			// ( types, selector, fn )
+			fn = data;
+			data = undefined;
+		} else {
+
+			// ( types, data, fn )
+			fn = data;
+			data = selector;
+			selector = undefined;
+		}
+	}
+	if ( fn === false ) {
+		fn = returnFalse;
+	} else if ( !fn ) {
+		return elem;
+	}
+
+	if ( one === 1 ) {
+		origFn = fn;
+		fn = function( event ) {
+
+			// Can use an empty set, since event contains the info
+			jQuery().off( event );
+			return origFn.apply( this, arguments );
+		};
+
+		// Use same guid so caller can remove using origFn
+		fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
+	}
+	return elem.each( function() {
+		jQuery.event.add( this, types, fn, data, selector );
+	} );
+}
+
+/*
+ * Helper functions for managing events -- not part of the public interface.
+ * Props to Dean Edwards' addEvent library for many of the ideas.
+ */
+jQuery.event = {
+
+	global: {},
+
+	add: function( elem, types, handler, data, selector ) {
+
+		var handleObjIn, eventHandle, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = dataPriv.get( elem );
+
+		// Don't attach events to noData or text/comment nodes (but allow plain objects)
+		if ( !elemData ) {
+			return;
+		}
+
+		// Caller can pass in an object of custom data in lieu of the handler
+		if ( handler.handler ) {
+			handleObjIn = handler;
+			handler = handleObjIn.handler;
+			selector = handleObjIn.selector;
+		}
+
+		// Ensure that invalid selectors throw exceptions at attach time
+		// Evaluate against documentElement in case elem is a non-element node (e.g., document)
+		if ( selector ) {
+			jQuery.find.matchesSelector( documentElement, selector );
+		}
+
+		// Make sure that the handler has a unique ID, used to find/remove it later
+		if ( !handler.guid ) {
+			handler.guid = jQuery.guid++;
+		}
+
+		// Init the element's event structure and main handler, if this is the first
+		if ( !( events = elemData.events ) ) {
+			events = elemData.events = {};
+		}
+		if ( !( eventHandle = elemData.handle ) ) {
+			eventHandle = elemData.handle = function( e ) {
+
+				// Discard the second event of a jQuery.event.trigger() and
+				// when an event is called after a page has unloaded
+				return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ?
+					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
+			};
+		}
+
+		// Handle multiple events separated by a space
+		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[ t ] ) || [];
+			type = origType = tmp[ 1 ];
+			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+			// There *must* be a type, no attaching namespace-only handlers
+			if ( !type ) {
+				continue;
+			}
+
+			// If event changes its type, use the special event handlers for the changed type
+			special = jQuery.event.special[ type ] || {};
+
+			// If selector defined, determine special event api type, otherwise given type
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+
+			// Update special based on newly reset type
+			special = jQuery.event.special[ type ] || {};
+
+			// handleObj is passed to all event handlers
+			handleObj = jQuery.extend( {
+				type: type,
+				origType: origType,
+				data: data,
+				handler: handler,
+				guid: handler.guid,
+				selector: selector,
+				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
+				namespace: namespaces.join( "." )
+			}, handleObjIn );
+
+			// Init the event handler queue if we're the first
+			if ( !( handlers = events[ type ] ) ) {
+				handlers = events[ type ] = [];
+				handlers.delegateCount = 0;
+
+				// Only use addEventListener if the special events handler returns false
+				if ( !special.setup ||
+					special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
+
+					if ( elem.addEventListener ) {
+						elem.addEventListener( type, eventHandle );
+					}
+				}
+			}
+
+			if ( special.add ) {
+				special.add.call( elem, handleObj );
+
+				if ( !handleObj.handler.guid ) {
+					handleObj.handler.guid = handler.guid;
+				}
+			}
+
+			// Add to the element's handler list, delegates in front
+			if ( selector ) {
+				handlers.splice( handlers.delegateCount++, 0, handleObj );
+			} else {
+				handlers.push( handleObj );
+			}
+
+			// Keep track of which events have ever been used, for event optimization
+			jQuery.event.global[ type ] = true;
+		}
+
+	},
+
+	// Detach an event or set of events from an element
+	remove: function( elem, types, handler, selector, mappedTypes ) {
+
+		var j, origCount, tmp,
+			events, t, handleObj,
+			special, handlers, type, namespaces, origType,
+			elemData = dataPriv.hasData( elem ) && dataPriv.get( elem );
+
+		if ( !elemData || !( events = elemData.events ) ) {
+			return;
+		}
+
+		// Once for each type.namespace in types; type may be omitted
+		types = ( types || "" ).match( rnothtmlwhite ) || [ "" ];
+		t = types.length;
+		while ( t-- ) {
+			tmp = rtypenamespace.exec( types[ t ] ) || [];
+			type = origType = tmp[ 1 ];
+			namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort();
+
+			// Unbind all events (on this namespace, if provided) for the element
+			if ( !type ) {
+				for ( type in events ) {
+					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
+				}
+				continue;
+			}
+
+			special = jQuery.event.special[ type ] || {};
+			type = ( selector ? special.delegateType : special.bindType ) || type;
+			handlers = events[ type ] || [];
+			tmp = tmp[ 2 ] &&
+				new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" );
+
+			// Remove matching events
+			origCount = j = handlers.length;
+			while ( j-- ) {
+				handleObj = handlers[ j ];
+
+				if ( ( mappedTypes || origType === handleObj.origType ) &&
+					( !handler || handler.guid === handleObj.guid ) &&
+					( !tmp || tmp.test( handleObj.namespace ) ) &&
+					( !selector || selector === handleObj.selector ||
+						selector === "**" && handleObj.selector ) ) {
+					handlers.splice( j, 1 );
+
+					if ( handleObj.selector ) {
+						handlers.delegateCount--;
+					}
+					if ( special.remove ) {
+						special.remove.call( elem, handleObj );
+					}
+				}
+			}
+
+			// Remove generic event handler if we removed something and no more handlers exist
+			// (avoids potential for endless recursion during removal of special event handlers)
+			if ( origCount && !handlers.length ) {
+				if ( !special.teardown ||
+					special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
+
+					jQuery.removeEvent( elem, type, elemData.handle );
+				}
+
+				delete events[ type ];
+			}
+		}
+
+		// Remove data and the expando if it's no longer used
+		if ( jQuery.isEmptyObject( events ) ) {
+			dataPriv.remove( elem, "handle events" );
+		}
+	},
+
+	dispatch: function( nativeEvent ) {
+
+		// Make a writable jQuery.Event from the native event object
+		var event = jQuery.event.fix( nativeEvent );
+
+		var i, j, ret, matched, handleObj, handlerQueue,
+			args = new Array( arguments.length ),
+			handlers = ( dataPriv.get( this, "events" ) || {} )[ event.type ] || [],
+			special = jQuery.event.special[ event.type ] || {};
+
+		// Use the fix-ed jQuery.Event rather than the (read-only) native event
+		args[ 0 ] = event;
+
+		for ( i = 1; i < arguments.length; i++ ) {
+			args[ i ] = arguments[ i ];
+		}
+
+		event.delegateTarget = this;
+
+		// Call the preDispatch hook for the mapped type, and let it bail if desired
+		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
+			return;
+		}
+
+		// Determine handlers
+		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
+
+		// Run delegates first; they may want to stop propagation beneath us
+		i = 0;
+		while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {
+			event.currentTarget = matched.elem;
+
+			j = 0;
+			while ( ( handleObj = matched.handlers[ j++ ] ) &&
+				!event.isImmediatePropagationStopped() ) {
+
+				// Triggered event must either 1) have no namespace, or 2) have namespace(s)
+				// a subset or equal to those in the bound event (both can have no namespace).
+				if ( !event.rnamespace || event.rnamespace.test( handleObj.namespace ) ) {
+
+					event.handleObj = handleObj;
+					event.data = handleObj.data;
+
+					ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||
+						handleObj.handler ).apply( matched.elem, args );
+
+					if ( ret !== undefined ) {
+						if ( ( event.result = ret ) === false ) {
+							event.preventDefault();
+							event.stopPropagation();
+						}
+					}
+				}
+			}
+		}
+
+		// Call the postDispatch hook for the mapped type
+		if ( special.postDispatch ) {
+			special.postDispatch.call( this, event );
+		}
+
+		return event.result;
+	},
+
+	handlers: function( event, handlers ) {
+		var i, handleObj, sel, matchedHandlers, matchedSelectors,
+			handlerQueue = [],
+			delegateCount = handlers.delegateCount,
+			cur = event.target;
+
+		// Find delegate handlers
+		if ( delegateCount &&
+
+			// Support: IE <=9
+			// Black-hole SVG <use> instance trees (trac-13180)
+			cur.nodeType &&
+
+			// Support: Firefox <=42
+			// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)
+			// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click
+			// Support: IE 11 only
+			// ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343)
+			!( event.type === "click" && event.button >= 1 ) ) {
+
+			for ( ; cur !== this; cur = cur.parentNode || this ) {
+
+				// Don't check non-elements (#13208)
+				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
+				if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) {
+					matchedHandlers = [];
+					matchedSelectors = {};
+					for ( i = 0; i < delegateCount; i++ ) {
+						handleObj = handlers[ i ];
+
+						// Don't conflict with Object.prototype properties (#13203)
+						sel = handleObj.selector + " ";
+
+						if ( matchedSelectors[ sel ] === undefined ) {
+							matchedSelectors[ sel ] = handleObj.needsContext ?
+								jQuery( sel, this ).index( cur ) > -1 :
+								jQuery.find( sel, this, null, [ cur ] ).length;
+						}
+						if ( matchedSelectors[ sel ] ) {
+							matchedHandlers.push( handleObj );
+						}
+					}
+					if ( matchedHandlers.length ) {
+						handlerQueue.push( { elem: cur, handlers: matchedHandlers } );
+					}
+				}
+			}
+		}
+
+		// Add the remaining (directly-bound) handlers
+		cur = this;
+		if ( delegateCount < handlers.length ) {
+			handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );
+		}
+
+		return handlerQueue;
+	},
+
+	addProp: function( name, hook ) {
+		Object.defineProperty( jQuery.Event.prototype, name, {
+			enumerable: true,
+			configurable: true,
+
+			get: isFunction( hook ) ?
+				function() {
+					if ( this.originalEvent ) {
+							return hook( this.originalEvent );
+					}
+				} :
+				function() {
+					if ( this.originalEvent ) {
+							return this.originalEvent[ name ];
+					}
+				},
+
+			set: function( value ) {
+				Object.defineProperty( this, name, {
+					enumerable: true,
+					configurable: true,
+					writable: true,
+					value: value
+				} );
+			}
+		} );
+	},
+
+	fix: function( originalEvent ) {
+		return originalEvent[ jQuery.expando ] ?
+			originalEvent :
+			new jQuery.Event( originalEvent );
+	},
+
+	special: {
+		load: {
+
+			// Prevent triggered image.load events from bubbling to window.load
+			noBubble: true
+		},
+		focus: {
+
+			// Fire native event if possible so blur/focus sequence is correct
+			trigger: function() {
+				if ( this !== safeActiveElement() && this.focus ) {
+					this.focus();
+					return false;
+				}
+			},
+			delegateType: "focusin"
+		},
+		blur: {
+			trigger: function() {
+				if ( this === safeActiveElement() && this.blur ) {
+					this.blur();
+					return false;
+				}
+			},
+			delegateType: "focusout"
+		},
+		click: {
+
+			// For checkbox, fire native event so checked state will be right
+			trigger: function() {
+				if ( this.type === "checkbox" && this.click && nodeName( this, "input" ) ) {
+					this.click();
+					return false;
+				}
+			},
+
+			// For cross-browser consistency, don't fire native .click() on links
+			_default: function( event ) {
+				return nodeName( event.target, "a" );
+			}
+		},
+
+		beforeunload: {
+			postDispatch: function( event ) {
+
+				// Support: Firefox 20+
+				// Firefox doesn't alert if the returnValue field is not set.
+				if ( event.result !== undefined && event.originalEvent ) {
+					event.originalEvent.returnValue = event.result;
+				}
+			}
+		}
+	}
+};
+
+jQuery.removeEvent = function( elem, type, handle ) {
+
+	// This "if" is needed for plain objects
+	if ( elem.removeEventListener ) {
+		elem.removeEventListener( type, handle );
+	}
+};
+
+jQuery.Event = function( src, props ) {
+
+	// Allow instantiation without the 'new' keyword
+	if ( !( this instanceof jQuery.Event ) ) {
+		return new jQuery.Event( src, props );
+	}
+
+	// Event object
+	if ( src && src.type ) {
+		this.originalEvent = src;
+		this.type = src.type;
+
+		// Events bubbling up the document may have been marked as prevented
+		// by a handler lower down the tree; reflect the correct value.
+		this.isDefaultPrevented = src.defaultPrevented ||
+				src.defaultPrevented === undefined &&
+
+				// Support: Android <=2.3 only
+				src.returnValue === false ?
+			returnTrue :
+			returnFalse;
+
+		// Create target properties
+		// Support: Safari <=6 - 7 only
+		// Target should not be a text node (#504, #13143)
+		this.target = ( src.target && src.target.nodeType === 3 ) ?
+			src.target.parentNode :
+			src.target;
+
+		this.currentTarget = src.currentTarget;
+		this.relatedTarget = src.relatedTarget;
+
+	// Event type
+	} else {
+		this.type = src;
+	}
+
+	// Put explicitly provided properties onto the event object
+	if ( props ) {
+		jQuery.extend( this, props );
+	}
+
+	// Create a timestamp if incoming event doesn't have one
+	this.timeStamp = src && src.timeStamp || Date.now();
+
+	// Mark it as fixed
+	this[ jQuery.expando ] = true;
+};
+
+// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
+// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
+jQuery.Event.prototype = {
+	constructor: jQuery.Event,
+	isDefaultPrevented: returnFalse,
+	isPropagationStopped: returnFalse,
+	isImmediatePropagationStopped: returnFalse,
+	isSimulated: false,
+
+	preventDefault: function() {
+		var e = this.originalEvent;
+
+		this.isDefaultPrevented = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.preventDefault();
+		}
+	},
+	stopPropagation: function() {
+		var e = this.originalEvent;
+
+		this.isPropagationStopped = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.stopPropagation();
+		}
+	},
+	stopImmediatePropagation: function() {
+		var e = this.originalEvent;
+
+		this.isImmediatePropagationStopped = returnTrue;
+
+		if ( e && !this.isSimulated ) {
+			e.stopImmediatePropagation();
+		}
+
+		this.stopPropagation();
+	}
+};
+
+// Includes all common event props including KeyEvent and MouseEvent specific props
+jQuery.each( {
+	altKey: true,
+	bubbles: true,
+	cancelable: true,
+	changedTouches: true,
+	ctrlKey: true,
+	detail: true,
+	eventPhase: true,
+	metaKey: true,
+	pageX: true,
+	pageY: true,
+	shiftKey: true,
+	view: true,
+	"char": true,
+	charCode: true,
+	key: true,
+	keyCode: true,
+	button: true,
+	buttons: true,
+	clientX: true,
+	clientY: true,
+	offsetX: true,
+	offsetY: true,
+	pointerId: true,
+	pointerType: true,
+	screenX: true,
+	screenY: true,
+	targetTouches: true,
+	toElement: true,
+	touches: true,
+
+	which: function( event ) {
+		var button = event.button;
+
+		// Add which for key events
+		if ( event.which == null && rkeyEvent.test( event.type ) ) {
+			return event.charCode != null ? event.charCode : event.keyCode;
+		}
+
+		// Add which for click: 1 === left; 2 === middle; 3 === right
+		if ( !event.which && button !== undefined && rmouseEvent.test( event.type ) ) {
+			if ( button & 1 ) {
+				return 1;
+			}
+
+			if ( button & 2 ) {
+				return 3;
+			}
+
+			if ( button & 4 ) {
+				return 2;
+			}
+
+			return 0;
+		}
+
+		return event.which;
+	}
+}, jQuery.event.addProp );
+
+// Create mouseenter/leave events using mouseover/out and event-time checks
+// so that event delegation works in jQuery.
+// Do the same for pointerenter/pointerleave and pointerover/pointerout
+//
+// Support: Safari 7 only
+// Safari sends mouseenter too often; see:
+// https://bugs.chromium.org/p/chromium/issues/detail?id=470258
+// for the description of the bug (it existed in older Chrome versions as well).
+jQuery.each( {
+	mouseenter: "mouseover",
+	mouseleave: "mouseout",
+	pointerenter: "pointerover",
+	pointerleave: "pointerout"
+}, function( orig, fix ) {
+	jQuery.event.special[ orig ] = {
+		delegateType: fix,
+		bindType: fix,
+
+		handle: function( event ) {
+			var ret,
+				target = this,
+				related = event.relatedTarget,
+				handleObj = event.handleObj;
+
+			// For mouseenter/leave call the handler if related is outside the target.
+			// NB: No relatedTarget if the mouse left/entered the browser window
+			if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {
+				event.type = handleObj.origType;
+				ret = handleObj.handler.apply( this, arguments );
+				event.type = fix;
+			}
+			return ret;
+		}
+	};
+} );
+
+jQuery.fn.extend( {
+
+	on: function( types, selector, data, fn ) {
+		return on( this, types, selector, data, fn );
+	},
+	one: function( types, selector, data, fn ) {
+		return on( this, types, selector, data, fn, 1 );
+	},
+	off: function( types, selector, fn ) {
+		var handleObj, type;
+		if ( types && types.preventDefault && types.handleObj ) {
+
+			// ( event )  dispatched jQuery.Event
+			handleObj = types.handleObj;
+			jQuery( types.delegateTarget ).off(
+				handleObj.namespace ?
+					handleObj.origType + "." + handleObj.namespace :
+					handleObj.origType,
+				handleObj.selector,
+				handleObj.handler
+			);
+			return this;
+		}
+		if ( typeof types === "object" ) {
+
+			// ( types-object [, selector] )
+			for ( type in types ) {
+				this.off( type, selector, types[ type ] );
+			}
+			return this;
+		}
+		if ( selector === false || typeof selector === "function" ) {
+
+			// ( types [, fn] )
+			fn = selector;
+			selector = undefined;
+		}
+		if ( fn === false ) {
+			fn = returnFalse;
+		}
+		return this.each( function() {
+			jQuery.event.remove( this, types, fn, selector );
+		} );
+	}
+} );
+
+
+var
+
+	/* eslint-disable max-len */
+
+	// See https://github.com/eslint/eslint/issues/3229
+	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,
+
+	/* eslint-enable */
+
+	// Support: IE <=10 - 11, Edge 12 - 13 only
+	// In IE/Edge using regex groups here causes severe slowdowns.
+	// See https://connect.microsoft.com/IE/feedback/details/1736512/
+	rnoInnerhtml = /<script|<style|<link/i,
+
+	// checked="checked" or checked
+	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+	rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;
+
+// Prefer a tbody over its parent table for containing new rows
+function manipulationTarget( elem, content ) {
+	if ( nodeName( elem, "table" ) &&
+		nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) {
+
+		return jQuery( elem ).children( "tbody" )[ 0 ] || elem;
+	}
+
+	return elem;
+}
+
+// Replace/restore the type attribute of script elements for safe DOM manipulation
+function disableScript( elem ) {
+	elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type;
+	return elem;
+}
+function restoreScript( elem ) {
+	if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) {
+		elem.type = elem.type.slice( 5 );
+	} else {
+		elem.removeAttribute( "type" );
+	}
+
+	return elem;
+}
+
+function cloneCopyEvent( src, dest ) {
+	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
+
+	if ( dest.nodeType !== 1 ) {
+		return;
+	}
+
+	// 1. Copy private data: events, handlers, etc.
+	if ( dataPriv.hasData( src ) ) {
+		pdataOld = dataPriv.access( src );
+		pdataCur = dataPriv.set( dest, pdataOld );
+		events = pdataOld.events;
+
+		if ( events ) {
+			delete pdataCur.handle;
+			pdataCur.events = {};
+
+			for ( type in events ) {
+				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
+					jQuery.event.add( dest, type, events[ type ][ i ] );
+				}
+			}
+		}
+	}
+
+	// 2. Copy user data
+	if ( dataUser.hasData( src ) ) {
+		udataOld = dataUser.access( src );
+		udataCur = jQuery.extend( {}, udataOld );
+
+		dataUser.set( dest, udataCur );
+	}
+}
+
+// Fix IE bugs, see support tests
+function fixInput( src, dest ) {
+	var nodeName = dest.nodeName.toLowerCase();
+
+	// Fails to persist the checked state of a cloned checkbox or radio button.
+	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
+		dest.checked = src.checked;
+
+	// Fails to return the selected option to the default selected state when cloning options
+	} else if ( nodeName === "input" || nodeName === "textarea" ) {
+		dest.defaultValue = src.defaultValue;
+	}
+}
+
+function domManip( collection, args, callback, ignored ) {
+
+	// Flatten any nested arrays
+	args = concat.apply( [], args );
+
+	var fragment, first, scripts, hasScripts, node, doc,
+		i = 0,
+		l = collection.length,
+		iNoClone = l - 1,
+		value = args[ 0 ],
+		valueIsFunction = isFunction( value );
+
+	// We can't cloneNode fragments that contain checked, in WebKit
+	if ( valueIsFunction ||
+			( l > 1 && typeof value === "string" &&
+				!support.checkClone && rchecked.test( value ) ) ) {
+		return collection.each( function( index ) {
+			var self = collection.eq( index );
+			if ( valueIsFunction ) {
+				args[ 0 ] = value.call( this, index, self.html() );
+			}
+			domManip( self, args, callback, ignored );
+		} );
+	}
+
+	if ( l ) {
+		fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );
+		first = fragment.firstChild;
+
+		if ( fragment.childNodes.length === 1 ) {
+			fragment = first;
+		}
+
+		// Require either new content or an interest in ignored elements to invoke the callback
+		if ( first || ignored ) {
+			scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
+			hasScripts = scripts.length;
+
+			// Use the original fragment for the last item
+			// instead of the first because it can end up
+			// being emptied incorrectly in certain situations (#8070).
+			for ( ; i < l; i++ ) {
+				node = fragment;
+
+				if ( i !== iNoClone ) {
+					node = jQuery.clone( node, true, true );
+
+					// Keep references to cloned scripts for later restoration
+					if ( hasScripts ) {
+
+						// Support: Android <=4.0 only, PhantomJS 1 only
+						// push.apply(_, arraylike) throws on ancient WebKit
+						jQuery.merge( scripts, getAll( node, "script" ) );
+					}
+				}
+
+				callback.call( collection[ i ], node, i );
+			}
+
+			if ( hasScripts ) {
+				doc = scripts[ scripts.length - 1 ].ownerDocument;
+
+				// Reenable scripts
+				jQuery.map( scripts, restoreScript );
+
+				// Evaluate executable scripts on first document insertion
+				for ( i = 0; i < hasScripts; i++ ) {
+					node = scripts[ i ];
+					if ( rscriptType.test( node.type || "" ) &&
+						!dataPriv.access( node, "globalEval" ) &&
+						jQuery.contains( doc, node ) ) {
+
+						if ( node.src && ( node.type || "" ).toLowerCase()  !== "module" ) {
+
+							// Optional AJAX dependency, but won't run scripts if not present
+							if ( jQuery._evalUrl ) {
+								jQuery._evalUrl( node.src );
+							}
+						} else {
+							DOMEval( node.textContent.replace( rcleanScript, "" ), doc, node );
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return collection;
+}
+
+function remove( elem, selector, keepData ) {
+	var node,
+		nodes = selector ? jQuery.filter( selector, elem ) : elem,
+		i = 0;
+
+	for ( ; ( node = nodes[ i ] ) != null; i++ ) {
+		if ( !keepData && node.nodeType === 1 ) {
+			jQuery.cleanData( getAll( node ) );
+		}
+
+		if ( node.parentNode ) {
+			if ( keepData && jQuery.contains( node.ownerDocument, node ) ) {
+				setGlobalEval( getAll( node, "script" ) );
+			}
+			node.parentNode.removeChild( node );
+		}
+	}
+
+	return elem;
+}
+
+jQuery.extend( {
+	htmlPrefilter: function( html ) {
+		return html.replace( rxhtmlTag, "<$1></$2>" );
+	},
+
+	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+		var i, l, srcElements, destElements,
+			clone = elem.cloneNode( true ),
+			inPage = jQuery.contains( elem.ownerDocument, elem );
+
+		// Fix IE cloning issues
+		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
+				!jQuery.isXMLDoc( elem ) ) {
+
+			// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2
+			destElements = getAll( clone );
+			srcElements = getAll( elem );
+
+			for ( i = 0, l = srcElements.length; i < l; i++ ) {
+				fixInput( srcElements[ i ], destElements[ i ] );
+			}
+		}
+
+		// Copy the events from the original to the clone
+		if ( dataAndEvents ) {
+			if ( deepDataAndEvents ) {
+				srcElements = srcElements || getAll( elem );
+				destElements = destElements || getAll( clone );
+
+				for ( i = 0, l = srcElements.length; i < l; i++ ) {
+					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
+				}
+			} else {
+				cloneCopyEvent( elem, clone );
+			}
+		}
+
+		// Preserve script evaluation history
+		destElements = getAll( clone, "script" );
+		if ( destElements.length > 0 ) {
+			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
+		}
+
+		// Return the cloned set
+		return clone;
+	},
+
+	cleanData: function( elems ) {
+		var data, elem, type,
+			special = jQuery.event.special,
+			i = 0;
+
+		for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {
+			if ( acceptData( elem ) ) {
+				if ( ( data = elem[ dataPriv.expando ] ) ) {
+					if ( data.events ) {
+						for ( type in data.events ) {
+							if ( special[ type ] ) {
+								jQuery.event.remove( elem, type );
+
+							// This is a shortcut to avoid jQuery.event.remove's overhead
+							} else {
+								jQuery.removeEvent( elem, type, data.handle );
+							}
+						}
+					}
+
+					// Support: Chrome <=35 - 45+
+					// Assign undefined instead of using delete, see Data#remove
+					elem[ dataPriv.expando ] = undefined;
+				}
+				if ( elem[ dataUser.expando ] ) {
+
+					// Support: Chrome <=35 - 45+
+					// Assign undefined instead of using delete, see Data#remove
+					elem[ dataUser.expando ] = undefined;
+				}
+			}
+		}
+	}
+} );
+
+jQuery.fn.extend( {
+	detach: function( selector ) {
+		return remove( this, selector, true );
+	},
+
+	remove: function( selector ) {
+		return remove( this, selector );
+	},
+
+	text: function( value ) {
+		return access( this, function( value ) {
+			return value === undefined ?
+				jQuery.text( this ) :
+				this.empty().each( function() {
+					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+						this.textContent = value;
+					}
+				} );
+		}, null, value, arguments.length );
+	},
+
+	append: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.appendChild( elem );
+			}
+		} );
+	},
+
+	prepend: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
+				var target = manipulationTarget( this, elem );
+				target.insertBefore( elem, target.firstChild );
+			}
+		} );
+	},
+
+	before: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this );
+			}
+		} );
+	},
+
+	after: function() {
+		return domManip( this, arguments, function( elem ) {
+			if ( this.parentNode ) {
+				this.parentNode.insertBefore( elem, this.nextSibling );
+			}
+		} );
+	},
+
+	empty: function() {
+		var elem,
+			i = 0;
+
+		for ( ; ( elem = this[ i ] ) != null; i++ ) {
+			if ( elem.nodeType === 1 ) {
+
+				// Prevent memory leaks
+				jQuery.cleanData( getAll( elem, false ) );
+
+				// Remove any remaining nodes
+				elem.textContent = "";
+			}
+		}
+
+		return this;
+	},
+
+	clone: function( dataAndEvents, deepDataAndEvents ) {
+		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
+
+		return this.map( function() {
+			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+		} );
+	},
+
+	html: function( value ) {
+		return access( this, function( value ) {
+			var elem = this[ 0 ] || {},
+				i = 0,
+				l = this.length;
+
+			if ( value === undefined && elem.nodeType === 1 ) {
+				return elem.innerHTML;
+			}
+
+			// See if we can take a shortcut and just use innerHTML
+			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
+				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
+
+				value = jQuery.htmlPrefilter( value );
+
+				try {
+					for ( ; i < l; i++ ) {
+						elem = this[ i ] || {};
+
+						// Remove element nodes and prevent memory leaks
+						if ( elem.nodeType === 1 ) {
+							jQuery.cleanData( getAll( elem, false ) );
+							elem.innerHTML = value;
+						}
+					}
+
+					elem = 0;
+
+				// If using innerHTML throws an exception, use the fallback method
+				} catch ( e ) {}
+			}
+
+			if ( elem ) {
+				this.empty().append( value );
+			}
+		}, null, value, arguments.length );
+	},
+
+	replaceWith: function() {
+		var ignored = [];
+
+		// Make the changes, replacing each non-ignored context element with the new content
+		return domManip( this, arguments, function( elem ) {
+			var parent = this.parentNode;
+
+			if ( jQuery.inArray( this, ignored ) < 0 ) {
+				jQuery.cleanData( getAll( this ) );
+				if ( parent ) {
+					parent.replaceChild( elem, this );
+				}
+			}
+
+		// Force callback invocation
+		}, ignored );
+	}
+} );
+
+jQuery.each( {
+	appendTo: "append",
+	prependTo: "prepend",
+	insertBefore: "before",
+	insertAfter: "after",
+	replaceAll: "replaceWith"
+}, function( name, original ) {
+	jQuery.fn[ name ] = function( selector ) {
+		var elems,
+			ret = [],
+			insert = jQuery( selector ),
+			last = insert.length - 1,
+			i = 0;
+
+		for ( ; i <= last; i++ ) {
+			elems = i === last ? this : this.clone( true );
+			jQuery( insert[ i ] )[ original ]( elems );
+
+			// Support: Android <=4.0 only, PhantomJS 1 only
+			// .get() because push.apply(_, arraylike) throws on ancient WebKit
+			push.apply( ret, elems.get() );
+		}
+
+		return this.pushStack( ret );
+	};
+} );
+var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
+
+var getStyles = function( elem ) {
+
+		// Support: IE <=11 only, Firefox <=30 (#15098, #14150)
+		// IE throws on elements created in popups
+		// FF meanwhile throws on frame elements through "defaultView.getComputedStyle"
+		var view = elem.ownerDocument.defaultView;
+
+		if ( !view || !view.opener ) {
+			view = window;
+		}
+
+		return view.getComputedStyle( elem );
+	};
+
+var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" );
+
+
+
+( function() {
+
+	// Executing both pixelPosition & boxSizingReliable tests require only one layout
+	// so they're executed at the same time to save the second computation.
+	function computeStyleTests() {
+
+		// This is a singleton, we need to execute it only once
+		if ( !div ) {
+			return;
+		}
+
+		container.style.cssText = "position:absolute;left:-11111px;width:60px;" +
+			"margin-top:1px;padding:0;border:0";
+		div.style.cssText =
+			"position:relative;display:block;box-sizing:border-box;overflow:scroll;" +
+			"margin:auto;border:1px;padding:1px;" +
+			"width:60%;top:1%";
+		documentElement.appendChild( container ).appendChild( div );
+
+		var divStyle = window.getComputedStyle( div );
+		pixelPositionVal = divStyle.top !== "1%";
+
+		// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44
+		reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;
+
+		// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3
+		// Some styles come back with percentage values, even though they shouldn't
+		div.style.right = "60%";
+		pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;
+
+		// Support: IE 9 - 11 only
+		// Detect misreporting of content dimensions for box-sizing:border-box elements
+		boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;
+
+		// Support: IE 9 only
+		// Detect overflow:scroll screwiness (gh-3699)
+		div.style.position = "absolute";
+		scrollboxSizeVal = div.offsetWidth === 36 || "absolute";
+
+		documentElement.removeChild( container );
+
+		// Nullify the div so it wouldn't be stored in the memory and
+		// it will also be a sign that checks already performed
+		div = null;
+	}
+
+	function roundPixelMeasures( measure ) {
+		return Math.round( parseFloat( measure ) );
+	}
+
+	var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,
+		reliableMarginLeftVal,
+		container = document.createElement( "div" ),
+		div = document.createElement( "div" );
+
+	// Finish early in limited (non-browser) environments
+	if ( !div.style ) {
+		return;
+	}
+
+	// Support: IE <=9 - 11 only
+	// Style of cloned element affects source element cloned (#8908)
+	div.style.backgroundClip = "content-box";
+	div.cloneNode( true ).style.backgroundClip = "";
+	support.clearCloneStyle = div.style.backgroundClip === "content-box";
+
+	jQuery.extend( support, {
+		boxSizingReliable: function() {
+			computeStyleTests();
+			return boxSizingReliableVal;
+		},
+		pixelBoxStyles: function() {
+			computeStyleTests();
+			return pixelBoxStylesVal;
+		},
+		pixelPosition: function() {
+			computeStyleTests();
+			return pixelPositionVal;
+		},
+		reliableMarginLeft: function() {
+			computeStyleTests();
+			return reliableMarginLeftVal;
+		},
+		scrollboxSize: function() {
+			computeStyleTests();
+			return scrollboxSizeVal;
+		}
+	} );
+} )();
+
+
+function curCSS( elem, name, computed ) {
+	var width, minWidth, maxWidth, ret,
+
+		// Support: Firefox 51+
+		// Retrieving style before computed somehow
+		// fixes an issue with getting wrong values
+		// on detached elements
+		style = elem.style;
+
+	computed = computed || getStyles( elem );
+
+	// getPropertyValue is needed for:
+	//   .css('filter') (IE 9 only, #12537)
+	//   .css('--customProperty) (#3144)
+	if ( computed ) {
+		ret = computed.getPropertyValue( name ) || computed[ name ];
+
+		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
+			ret = jQuery.style( elem, name );
+		}
+
+		// A tribute to the "awesome hack by Dean Edwards"
+		// Android Browser returns percentage for some values,
+		// but width seems to be reliably pixels.
+		// This is against the CSSOM draft spec:
+		// https://drafts.csswg.org/cssom/#resolved-values
+		if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {
+
+			// Remember the original values
+			width = style.width;
+			minWidth = style.minWidth;
+			maxWidth = style.maxWidth;
+
+			// Put in the new values to get a computed value out
+			style.minWidth = style.maxWidth = style.width = ret;
+			ret = computed.width;
+
+			// Revert the changed values
+			style.width = width;
+			style.minWidth = minWidth;
+			style.maxWidth = maxWidth;
+		}
+	}
+
+	return ret !== undefined ?
+
+		// Support: IE <=9 - 11 only
+		// IE returns zIndex value as an integer.
+		ret + "" :
+		ret;
+}
+
+
+function addGetHookIf( conditionFn, hookFn ) {
+
+	// Define the hook, we'll check on the first run if it's really needed.
+	return {
+		get: function() {
+			if ( conditionFn() ) {
+
+				// Hook not needed (or it's not possible to use it due
+				// to missing dependency), remove it.
+				delete this.get;
+				return;
+			}
+
+			// Hook needed; redefine it so that the support test is not executed again.
+			return ( this.get = hookFn ).apply( this, arguments );
+		}
+	};
+}
+
+
+var
+
+	// Swappable if display is none or starts with table
+	// except "table", "table-cell", or "table-caption"
+	// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
+	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
+	rcustomProp = /^--/,
+	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
+	cssNormalTransform = {
+		letterSpacing: "0",
+		fontWeight: "400"
+	},
+
+	cssPrefixes = [ "Webkit", "Moz", "ms" ],
+	emptyStyle = document.createElement( "div" ).style;
+
+// Return a css property mapped to a potentially vendor prefixed property
+function vendorPropName( name ) {
+
+	// Shortcut for names that are not vendor prefixed
+	if ( name in emptyStyle ) {
+		return name;
+	}
+
+	// Check for vendor prefixed names
+	var capName = name[ 0 ].toUpperCase() + name.slice( 1 ),
+		i = cssPrefixes.length;
+
+	while ( i-- ) {
+		name = cssPrefixes[ i ] + capName;
+		if ( name in emptyStyle ) {
+			return name;
+		}
+	}
+}
+
+// Return a property mapped along what jQuery.cssProps suggests or to
+// a vendor prefixed property.
+function finalPropName( name ) {
+	var ret = jQuery.cssProps[ name ];
+	if ( !ret ) {
+		ret = jQuery.cssProps[ name ] = vendorPropName( name ) || name;
+	}
+	return ret;
+}
+
+function setPositiveNumber( elem, value, subtract ) {
+
+	// Any relative (+/-) values have already been
+	// normalized at this point
+	var matches = rcssNum.exec( value );
+	return matches ?
+
+		// Guard against undefined "subtract", e.g., when used as in cssHooks
+		Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) :
+		value;
+}
+
+function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {
+	var i = dimension === "width" ? 1 : 0,
+		extra = 0,
+		delta = 0;
+
+	// Adjustment may not be necessary
+	if ( box === ( isBorderBox ? "border" : "content" ) ) {
+		return 0;
+	}
+
+	for ( ; i < 4; i += 2 ) {
+
+		// Both box models exclude margin
+		if ( box === "margin" ) {
+			delta += jQuery.css( elem, box + cssExpand[ i ], true, styles );
+		}
+
+		// If we get here with a content-box, we're seeking "padding" or "border" or "margin"
+		if ( !isBorderBox ) {
+
+			// Add padding
+			delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+
+			// For "border" or "margin", add border
+			if ( box !== "padding" ) {
+				delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+
+			// But still keep track of it otherwise
+			} else {
+				extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+
+		// If we get here with a border-box (content + padding + border), we're seeking "content" or
+		// "padding" or "margin"
+		} else {
+
+			// For "content", subtract padding
+			if ( box === "content" ) {
+				delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
+			}
+
+			// For "content" or "padding", subtract border
+			if ( box !== "margin" ) {
+				delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
+			}
+		}
+	}
+
+	// Account for positive content-box scroll gutter when requested by providing computedVal
+	if ( !isBorderBox && computedVal >= 0 ) {
+
+		// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border
+		// Assuming integer scroll gutter, subtract the rest and round down
+		delta += Math.max( 0, Math.ceil(
+			elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
+			computedVal -
+			delta -
+			extra -
+			0.5
+		) );
+	}
+
+	return delta;
+}
+
+function getWidthOrHeight( elem, dimension, extra ) {
+
+	// Start with computed style
+	var styles = getStyles( elem ),
+		val = curCSS( elem, dimension, styles ),
+		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+		valueIsBorderBox = isBorderBox;
+
+	// Support: Firefox <=54
+	// Return a confounding non-pixel value or feign ignorance, as appropriate.
+	if ( rnumnonpx.test( val ) ) {
+		if ( !extra ) {
+			return val;
+		}
+		val = "auto";
+	}
+
+	// Check for style in case a browser which returns unreliable values
+	// for getComputedStyle silently falls back to the reliable elem.style
+	valueIsBorderBox = valueIsBorderBox &&
+		( support.boxSizingReliable() || val === elem.style[ dimension ] );
+
+	// Fall back to offsetWidth/offsetHeight when value is "auto"
+	// This happens for inline elements with no explicit setting (gh-3571)
+	// Support: Android <=4.1 - 4.3 only
+	// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)
+	if ( val === "auto" ||
+		!parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) {
+
+		val = elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ];
+
+		// offsetWidth/offsetHeight provide border-box values
+		valueIsBorderBox = true;
+	}
+
+	// Normalize "" and auto
+	val = parseFloat( val ) || 0;
+
+	// Adjust for the element's box model
+	return ( val +
+		boxModelAdjustment(
+			elem,
+			dimension,
+			extra || ( isBorderBox ? "border" : "content" ),
+			valueIsBorderBox,
+			styles,
+
+			// Provide the current computed size to request scroll gutter calculation (gh-3589)
+			val
+		)
+	) + "px";
+}
+
+jQuery.extend( {
+
+	// Add in style property hooks for overriding the default
+	// behavior of getting and setting a style property
+	cssHooks: {
+		opacity: {
+			get: function( elem, computed ) {
+				if ( computed ) {
+
+					// We should always get a number back from opacity
+					var ret = curCSS( elem, "opacity" );
+					return ret === "" ? "1" : ret;
+				}
+			}
+		}
+	},
+
+	// Don't automatically add "px" to these possibly-unitless properties
+	cssNumber: {
+		"animationIterationCount": true,
+		"columnCount": true,
+		"fillOpacity": true,
+		"flexGrow": true,
+		"flexShrink": true,
+		"fontWeight": true,
+		"lineHeight": true,
+		"opacity": true,
+		"order": true,
+		"orphans": true,
+		"widows": true,
+		"zIndex": true,
+		"zoom": true
+	},
+
+	// Add in properties whose names you wish to fix before
+	// setting or getting the value
+	cssProps: {},
+
+	// Get and set the style property on a DOM Node
+	style: function( elem, name, value, extra ) {
+
+		// Don't set styles on text and comment nodes
+		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+			return;
+		}
+
+		// Make sure that we're working with the right name
+		var ret, type, hooks,
+			origName = camelCase( name ),
+			isCustomProp = rcustomProp.test( name ),
+			style = elem.style;
+
+		// Make sure that we're working with the right name. We don't
+		// want to query the value if it is a CSS custom property
+		// since they are user-defined.
+		if ( !isCustomProp ) {
+			name = finalPropName( origName );
+		}
+
+		// Gets hook for the prefixed version, then unprefixed version
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// Check if we're setting a value
+		if ( value !== undefined ) {
+			type = typeof value;
+
+			// Convert "+=" or "-=" to relative numbers (#7345)
+			if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {
+				value = adjustCSS( elem, name, ret );
+
+				// Fixes bug #9237
+				type = "number";
+			}
+
+			// Make sure that null and NaN values aren't set (#7116)
+			if ( value == null || value !== value ) {
+				return;
+			}
+
+			// If a number was passed in, add the unit (except for certain CSS properties)
+			if ( type === "number" ) {
+				value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" );
+			}
+
+			// background-* props affect original clone's values
+			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
+				style[ name ] = "inherit";
+			}
+
+			// If a hook was provided, use that value, otherwise just set the specified value
+			if ( !hooks || !( "set" in hooks ) ||
+				( value = hooks.set( elem, value, extra ) ) !== undefined ) {
+
+				if ( isCustomProp ) {
+					style.setProperty( name, value );
+				} else {
+					style[ name ] = value;
+				}
+			}
+
+		} else {
+
+			// If a hook was provided get the non-computed value from there
+			if ( hooks && "get" in hooks &&
+				( ret = hooks.get( elem, false, extra ) ) !== undefined ) {
+
+				return ret;
+			}
+
+			// Otherwise just get the value from the style object
+			return style[ name ];
+		}
+	},
+
+	css: function( elem, name, extra, styles ) {
+		var val, num, hooks,
+			origName = camelCase( name ),
+			isCustomProp = rcustomProp.test( name );
+
+		// Make sure that we're working with the right name. We don't
+		// want to modify the value if it is a CSS custom property
+		// since they are user-defined.
+		if ( !isCustomProp ) {
+			name = finalPropName( origName );
+		}
+
+		// Try prefixed name followed by the unprefixed name
+		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
+
+		// If a hook was provided get the computed value from there
+		if ( hooks && "get" in hooks ) {
+			val = hooks.get( elem, true, extra );
+		}
+
+		// Otherwise, if a way to get the computed value exists, use that
+		if ( val === undefined ) {
+			val = curCSS( elem, name, styles );
+		}
+
+		// Convert "normal" to computed value
+		if ( val === "normal" && name in cssNormalTransform ) {
+			val = cssNormalTransform[ name ];
+		}
+
+		// Make numeric if forced or a qualifier was provided and val looks numeric
+		if ( extra === "" || extra ) {
+			num = parseFloat( val );
+			return extra === true || isFinite( num ) ? num || 0 : val;
+		}
+
+		return val;
+	}
+} );
+
+jQuery.each( [ "height", "width" ], function( i, dimension ) {
+	jQuery.cssHooks[ dimension ] = {
+		get: function( elem, computed, extra ) {
+			if ( computed ) {
+
+				// Certain elements can have dimension info if we invisibly show them
+				// but it must have a current display style that would benefit
+				return rdisplayswap.test( jQuery.css( elem, "display" ) ) &&
+
+					// Support: Safari 8+
+					// Table columns in Safari have non-zero offsetWidth & zero
+					// getBoundingClientRect().width unless display is changed.
+					// Support: IE <=11 only
+					// Running getBoundingClientRect on a disconnected node
+					// in IE throws an error.
+					( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?
+						swap( elem, cssShow, function() {
+							return getWidthOrHeight( elem, dimension, extra );
+						} ) :
+						getWidthOrHeight( elem, dimension, extra );
+			}
+		},
+
+		set: function( elem, value, extra ) {
+			var matches,
+				styles = getStyles( elem ),
+				isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
+				subtract = extra && boxModelAdjustment(
+					elem,
+					dimension,
+					extra,
+					isBorderBox,
+					styles
+				);
+
+			// Account for unreliable border-box dimensions by comparing offset* to computed and
+			// faking a content-box to get border and padding (gh-3699)
+			if ( isBorderBox && support.scrollboxSize() === styles.position ) {
+				subtract -= Math.ceil(
+					elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -
+					parseFloat( styles[ dimension ] ) -
+					boxModelAdjustment( elem, dimension, "border", false, styles ) -
+					0.5
+				);
+			}
+
+			// Convert to pixels if value adjustment is needed
+			if ( subtract && ( matches = rcssNum.exec( value ) ) &&
+				( matches[ 3 ] || "px" ) !== "px" ) {
+
+				elem.style[ dimension ] = value;
+				value = jQuery.css( elem, dimension );
+			}
+
+			return setPositiveNumber( elem, value, subtract );
+		}
+	};
+} );
+
+jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,
+	function( elem, computed ) {
+		if ( computed ) {
+			return ( parseFloat( curCSS( elem, "marginLeft" ) ) ||
+				elem.getBoundingClientRect().left -
+					swap( elem, { marginLeft: 0 }, function() {
+						return elem.getBoundingClientRect().left;
+					} )
+				) + "px";
+		}
+	}
+);
+
+// These hooks are used by animate to expand properties
+jQuery.each( {
+	margin: "",
+	padding: "",
+	border: "Width"
+}, function( prefix, suffix ) {
+	jQuery.cssHooks[ prefix + suffix ] = {
+		expand: function( value ) {
+			var i = 0,
+				expanded = {},
+
+				// Assumes a single number if not a string
+				parts = typeof value === "string" ? value.split( " " ) : [ value ];
+
+			for ( ; i < 4; i++ ) {
+				expanded[ prefix + cssExpand[ i ] + suffix ] =
+					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
+			}
+
+			return expanded;
+		}
+	};
+
+	if ( prefix !== "margin" ) {
+		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
+	}
+} );
+
+jQuery.fn.extend( {
+	css: function( name, value ) {
+		return access( this, function( elem, name, value ) {
+			var styles, len,
+				map = {},
+				i = 0;
+
+			if ( Array.isArray( name ) ) {
+				styles = getStyles( elem );
+				len = name.length;
+
+				for ( ; i < len; i++ ) {
+					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
+				}
+
+				return map;
+			}
+
+			return value !== undefined ?
+				jQuery.style( elem, name, value ) :
+				jQuery.css( elem, name );
+		}, name, value, arguments.length > 1 );
+	}
+} );
+
+
+function Tween( elem, options, prop, end, easing ) {
+	return new Tween.prototype.init( elem, options, prop, end, easing );
+}
+jQuery.Tween = Tween;
+
+Tween.prototype = {
+	constructor: Tween,
+	init: function( elem, options, prop, end, easing, unit ) {
+		this.elem = elem;
+		this.prop = prop;
+		this.easing = easing || jQuery.easing._default;
+		this.options = options;
+		this.start = this.now = this.cur();
+		this.end = end;
+		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
+	},
+	cur: function() {
+		var hooks = Tween.propHooks[ this.prop ];
+
+		return hooks && hooks.get ?
+			hooks.get( this ) :
+			Tween.propHooks._default.get( this );
+	},
+	run: function( percent ) {
+		var eased,
+			hooks = Tween.propHooks[ this.prop ];
+
+		if ( this.options.duration ) {
+			this.pos = eased = jQuery.easing[ this.easing ](
+				percent, this.options.duration * percent, 0, 1, this.options.duration
+			);
+		} else {
+			this.pos = eased = percent;
+		}
+		this.now = ( this.end - this.start ) * eased + this.start;
+
+		if ( this.options.step ) {
+			this.options.step.call( this.elem, this.now, this );
+		}
+
+		if ( hooks && hooks.set ) {
+			hooks.set( this );
+		} else {
+			Tween.propHooks._default.set( this );
+		}
+		return this;
+	}
+};
+
+Tween.prototype.init.prototype = Tween.prototype;
+
+Tween.propHooks = {
+	_default: {
+		get: function( tween ) {
+			var result;
+
+			// Use a property on the element directly when it is not a DOM element,
+			// or when there is no matching style property that exists.
+			if ( tween.elem.nodeType !== 1 ||
+				tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {
+				return tween.elem[ tween.prop ];
+			}
+
+			// Passing an empty string as a 3rd parameter to .css will automatically
+			// attempt a parseFloat and fallback to a string if the parse fails.
+			// Simple values such as "10px" are parsed to Float;
+			// complex values such as "rotate(1rad)" are returned as-is.
+			result = jQuery.css( tween.elem, tween.prop, "" );
+
+			// Empty strings, null, undefined and "auto" are converted to 0.
+			return !result || result === "auto" ? 0 : result;
+		},
+		set: function( tween ) {
+
+			// Use step hook for back compat.
+			// Use cssHook if its there.
+			// Use .style if available and use plain properties where available.
+			if ( jQuery.fx.step[ tween.prop ] ) {
+				jQuery.fx.step[ tween.prop ]( tween );
+			} else if ( tween.elem.nodeType === 1 &&
+				( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null ||
+					jQuery.cssHooks[ tween.prop ] ) ) {
+				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
+			} else {
+				tween.elem[ tween.prop ] = tween.now;
+			}
+		}
+	}
+};
+
+// Support: IE <=9 only
+// Panic based approach to setting things on disconnected nodes
+Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
+	set: function( tween ) {
+		if ( tween.elem.nodeType && tween.elem.parentNode ) {
+			tween.elem[ tween.prop ] = tween.now;
+		}
+	}
+};
+
+jQuery.easing = {
+	linear: function( p ) {
+		return p;
+	},
+	swing: function( p ) {
+		return 0.5 - Math.cos( p * Math.PI ) / 2;
+	},
+	_default: "swing"
+};
+
+jQuery.fx = Tween.prototype.init;
+
+// Back compat <1.8 extension point
+jQuery.fx.step = {};
+
+
+
+
+var
+	fxNow, inProgress,
+	rfxtypes = /^(?:toggle|show|hide)$/,
+	rrun = /queueHooks$/;
+
+function schedule() {
+	if ( inProgress ) {
+		if ( document.hidden === false && window.requestAnimationFrame ) {
+			window.requestAnimationFrame( schedule );
+		} else {
+			window.setTimeout( schedule, jQuery.fx.interval );
+		}
+
+		jQuery.fx.tick();
+	}
+}
+
+// Animations created synchronously will run synchronously
+function createFxNow() {
+	window.setTimeout( function() {
+		fxNow = undefined;
+	} );
+	return ( fxNow = Date.now() );
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, includeWidth ) {
+	var which,
+		i = 0,
+		attrs = { height: type };
+
+	// If we include width, step value is 1 to do all cssExpand values,
+	// otherwise step value is 2 to skip over Left and Right
+	includeWidth = includeWidth ? 1 : 0;
+	for ( ; i < 4; i += 2 - includeWidth ) {
+		which = cssExpand[ i ];
+		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
+	}
+
+	if ( includeWidth ) {
+		attrs.opacity = attrs.width = type;
+	}
+
+	return attrs;
+}
+
+function createTween( value, prop, animation ) {
+	var tween,
+		collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ),
+		index = 0,
+		length = collection.length;
+	for ( ; index < length; index++ ) {
+		if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {
+
+			// We're done with this property
+			return tween;
+		}
+	}
+}
+
+function defaultPrefilter( elem, props, opts ) {
+	var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,
+		isBox = "width" in props || "height" in props,
+		anim = this,
+		orig = {},
+		style = elem.style,
+		hidden = elem.nodeType && isHiddenWithinTree( elem ),
+		dataShow = dataPriv.get( elem, "fxshow" );
+
+	// Queue-skipping animations hijack the fx hooks
+	if ( !opts.queue ) {
+		hooks = jQuery._queueHooks( elem, "fx" );
+		if ( hooks.unqueued == null ) {
+			hooks.unqueued = 0;
+			oldfire = hooks.empty.fire;
+			hooks.empty.fire = function() {
+				if ( !hooks.unqueued ) {
+					oldfire();
+				}
+			};
+		}
+		hooks.unqueued++;
+
+		anim.always( function() {
+
+			// Ensure the complete handler is called before this completes
+			anim.always( function() {
+				hooks.unqueued--;
+				if ( !jQuery.queue( elem, "fx" ).length ) {
+					hooks.empty.fire();
+				}
+			} );
+		} );
+	}
+
+	// Detect show/hide animations
+	for ( prop in props ) {
+		value = props[ prop ];
+		if ( rfxtypes.test( value ) ) {
+			delete props[ prop ];
+			toggle = toggle || value === "toggle";
+			if ( value === ( hidden ? "hide" : "show" ) ) {
+
+				// Pretend to be hidden if this is a "show" and
+				// there is still data from a stopped show/hide
+				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
+					hidden = true;
+
+				// Ignore all other no-op show/hide data
+				} else {
+					continue;
+				}
+			}
+			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
+		}
+	}
+
+	// Bail out if this is a no-op like .hide().hide()
+	propTween = !jQuery.isEmptyObject( props );
+	if ( !propTween && jQuery.isEmptyObject( orig ) ) {
+		return;
+	}
+
+	// Restrict "overflow" and "display" styles during box animations
+	if ( isBox && elem.nodeType === 1 ) {
+
+		// Support: IE <=9 - 11, Edge 12 - 15
+		// Record all 3 overflow attributes because IE does not infer the shorthand
+		// from identically-valued overflowX and overflowY and Edge just mirrors
+		// the overflowX value there.
+		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
+
+		// Identify a display type, preferring old show/hide data over the CSS cascade
+		restoreDisplay = dataShow && dataShow.display;
+		if ( restoreDisplay == null ) {
+			restoreDisplay = dataPriv.get( elem, "display" );
+		}
+		display = jQuery.css( elem, "display" );
+		if ( display === "none" ) {
+			if ( restoreDisplay ) {
+				display = restoreDisplay;
+			} else {
+
+				// Get nonempty value(s) by temporarily forcing visibility
+				showHide( [ elem ], true );
+				restoreDisplay = elem.style.display || restoreDisplay;
+				display = jQuery.css( elem, "display" );
+				showHide( [ elem ] );
+			}
+		}
+
+		// Animate inline elements as inline-block
+		if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) {
+			if ( jQuery.css( elem, "float" ) === "none" ) {
+
+				// Restore the original display value at the end of pure show/hide animations
+				if ( !propTween ) {
+					anim.done( function() {
+						style.display = restoreDisplay;
+					} );
+					if ( restoreDisplay == null ) {
+						display = style.display;
+						restoreDisplay = display === "none" ? "" : display;
+					}
+				}
+				style.display = "inline-block";
+			}
+		}
+	}
+
+	if ( opts.overflow ) {
+		style.overflow = "hidden";
+		anim.always( function() {
+			style.overflow = opts.overflow[ 0 ];
+			style.overflowX = opts.overflow[ 1 ];
+			style.overflowY = opts.overflow[ 2 ];
+		} );
+	}
+
+	// Implement show/hide animations
+	propTween = false;
+	for ( prop in orig ) {
+
+		// General show/hide setup for this element animation
+		if ( !propTween ) {
+			if ( dataShow ) {
+				if ( "hidden" in dataShow ) {
+					hidden = dataShow.hidden;
+				}
+			} else {
+				dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } );
+			}
+
+			// Store hidden/visible for toggle so `.stop().toggle()` "reverses"
+			if ( toggle ) {
+				dataShow.hidden = !hidden;
+			}
+
+			// Show elements before animating them
+			if ( hidden ) {
+				showHide( [ elem ], true );
+			}
+
+			/* eslint-disable no-loop-func */
+
+			anim.done( function() {
+
+			/* eslint-enable no-loop-func */
+
+				// The final step of a "hide" animation is actually hiding the element
+				if ( !hidden ) {
+					showHide( [ elem ] );
+				}
+				dataPriv.remove( elem, "fxshow" );
+				for ( prop in orig ) {
+					jQuery.style( elem, prop, orig[ prop ] );
+				}
+			} );
+		}
+
+		// Per-property setup
+		propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
+		if ( !( prop in dataShow ) ) {
+			dataShow[ prop ] = propTween.start;
+			if ( hidden ) {
+				propTween.end = propTween.start;
+				propTween.start = 0;
+			}
+		}
+	}
+}
+
+function propFilter( props, specialEasing ) {
+	var index, name, easing, value, hooks;
+
+	// camelCase, specialEasing and expand cssHook pass
+	for ( index in props ) {
+		name = camelCase( index );
+		easing = specialEasing[ name ];
+		value = props[ index ];
+		if ( Array.isArray( value ) ) {
+			easing = value[ 1 ];
+			value = props[ index ] = value[ 0 ];
+		}
+
+		if ( index !== name ) {
+			props[ name ] = value;
+			delete props[ index ];
+		}
+
+		hooks = jQuery.cssHooks[ name ];
+		if ( hooks && "expand" in hooks ) {
+			value = hooks.expand( value );
+			delete props[ name ];
+
+			// Not quite $.extend, this won't overwrite existing keys.
+			// Reusing 'index' because we have the correct "name"
+			for ( index in value ) {
+				if ( !( index in props ) ) {
+					props[ index ] = value[ index ];
+					specialEasing[ index ] = easing;
+				}
+			}
+		} else {
+			specialEasing[ name ] = easing;
+		}
+	}
+}
+
+function Animation( elem, properties, options ) {
+	var result,
+		stopped,
+		index = 0,
+		length = Animation.prefilters.length,
+		deferred = jQuery.Deferred().always( function() {
+
+			// Don't match elem in the :animated selector
+			delete tick.elem;
+		} ),
+		tick = function() {
+			if ( stopped ) {
+				return false;
+			}
+			var currentTime = fxNow || createFxNow(),
+				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
+
+				// Support: Android 2.3 only
+				// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)
+				temp = remaining / animation.duration || 0,
+				percent = 1 - temp,
+				index = 0,
+				length = animation.tweens.length;
+
+			for ( ; index < length; index++ ) {
+				animation.tweens[ index ].run( percent );
+			}
+
+			deferred.notifyWith( elem, [ animation, percent, remaining ] );
+
+			// If there's more to do, yield
+			if ( percent < 1 && length ) {
+				return remaining;
+			}
+
+			// If this was an empty animation, synthesize a final progress notification
+			if ( !length ) {
+				deferred.notifyWith( elem, [ animation, 1, 0 ] );
+			}
+
+			// Resolve the animation and report its conclusion
+			deferred.resolveWith( elem, [ animation ] );
+			return false;
+		},
+		animation = deferred.promise( {
+			elem: elem,
+			props: jQuery.extend( {}, properties ),
+			opts: jQuery.extend( true, {
+				specialEasing: {},
+				easing: jQuery.easing._default
+			}, options ),
+			originalProperties: properties,
+			originalOptions: options,
+			startTime: fxNow || createFxNow(),
+			duration: options.duration,
+			tweens: [],
+			createTween: function( prop, end ) {
+				var tween = jQuery.Tween( elem, animation.opts, prop, end,
+						animation.opts.specialEasing[ prop ] || animation.opts.easing );
+				animation.tweens.push( tween );
+				return tween;
+			},
+			stop: function( gotoEnd ) {
+				var index = 0,
+
+					// If we are going to the end, we want to run all the tweens
+					// otherwise we skip this part
+					length = gotoEnd ? animation.tweens.length : 0;
+				if ( stopped ) {
+					return this;
+				}
+				stopped = true;
+				for ( ; index < length; index++ ) {
+					animation.tweens[ index ].run( 1 );
+				}
+
+				// Resolve when we played the last frame; otherwise, reject
+				if ( gotoEnd ) {
+					deferred.notifyWith( elem, [ animation, 1, 0 ] );
+					deferred.resolveWith( elem, [ animation, gotoEnd ] );
+				} else {
+					deferred.rejectWith( elem, [ animation, gotoEnd ] );
+				}
+				return this;
+			}
+		} ),
+		props = animation.props;
+
+	propFilter( props, animation.opts.specialEasing );
+
+	for ( ; index < length; index++ ) {
+		result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );
+		if ( result ) {
+			if ( isFunction( result.stop ) ) {
+				jQuery._queueHooks( animation.elem, animation.opts.queue ).stop =
+					result.stop.bind( result );
+			}
+			return result;
+		}
+	}
+
+	jQuery.map( props, createTween, animation );
+
+	if ( isFunction( animation.opts.start ) ) {
+		animation.opts.start.call( elem, animation );
+	}
+
+	// Attach callbacks from options
+	animation
+		.progress( animation.opts.progress )
+		.done( animation.opts.done, animation.opts.complete )
+		.fail( animation.opts.fail )
+		.always( animation.opts.always );
+
+	jQuery.fx.timer(
+		jQuery.extend( tick, {
+			elem: elem,
+			anim: animation,
+			queue: animation.opts.queue
+		} )
+	);
+
+	return animation;
+}
+
+jQuery.Animation = jQuery.extend( Animation, {
+
+	tweeners: {
+		"*": [ function( prop, value ) {
+			var tween = this.createTween( prop, value );
+			adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );
+			return tween;
+		} ]
+	},
+
+	tweener: function( props, callback ) {
+		if ( isFunction( props ) ) {
+			callback = props;
+			props = [ "*" ];
+		} else {
+			props = props.match( rnothtmlwhite );
+		}
+
+		var prop,
+			index = 0,
+			length = props.length;
+
+		for ( ; index < length; index++ ) {
+			prop = props[ index ];
+			Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];
+			Animation.tweeners[ prop ].unshift( callback );
+		}
+	},
+
+	prefilters: [ defaultPrefilter ],
+
+	prefilter: function( callback, prepend ) {
+		if ( prepend ) {
+			Animation.prefilters.unshift( callback );
+		} else {
+			Animation.prefilters.push( callback );
+		}
+	}
+} );
+
+jQuery.speed = function( speed, easing, fn ) {
+	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
+		complete: fn || !fn && easing ||
+			isFunction( speed ) && speed,
+		duration: speed,
+		easing: fn && easing || easing && !isFunction( easing ) && easing
+	};
+
+	// Go to the end state if fx are off
+	if ( jQuery.fx.off ) {
+		opt.duration = 0;
+
+	} else {
+		if ( typeof opt.duration !== "number" ) {
+			if ( opt.duration in jQuery.fx.speeds ) {
+				opt.duration = jQuery.fx.speeds[ opt.duration ];
+
+			} else {
+				opt.duration = jQuery.fx.speeds._default;
+			}
+		}
+	}
+
+	// Normalize opt.queue - true/undefined/null -> "fx"
+	if ( opt.queue == null || opt.queue === true ) {
+		opt.queue = "fx";
+	}
+
+	// Queueing
+	opt.old = opt.complete;
+
+	opt.complete = function() {
+		if ( isFunction( opt.old ) ) {
+			opt.old.call( this );
+		}
+
+		if ( opt.queue ) {
+			jQuery.dequeue( this, opt.queue );
+		}
+	};
+
+	return opt;
+};
+
+jQuery.fn.extend( {
+	fadeTo: function( speed, to, easing, callback ) {
+
+		// Show any hidden elements after setting opacity to 0
+		return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show()
+
+			// Animate to the value specified
+			.end().animate( { opacity: to }, speed, easing, callback );
+	},
+	animate: function( prop, speed, easing, callback ) {
+		var empty = jQuery.isEmptyObject( prop ),
+			optall = jQuery.speed( speed, easing, callback ),
+			doAnimation = function() {
+
+				// Operate on a copy of prop so per-property easing won't be lost
+				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
+
+				// Empty animations, or finishing resolves immediately
+				if ( empty || dataPriv.get( this, "finish" ) ) {
+					anim.stop( true );
+				}
+			};
+			doAnimation.finish = doAnimation;
+
+		return empty || optall.queue === false ?
+			this.each( doAnimation ) :
+			this.queue( optall.queue, doAnimation );
+	},
+	stop: function( type, clearQueue, gotoEnd ) {
+		var stopQueue = function( hooks ) {
+			var stop = hooks.stop;
+			delete hooks.stop;
+			stop( gotoEnd );
+		};
+
+		if ( typeof type !== "string" ) {
+			gotoEnd = clearQueue;
+			clearQueue = type;
+			type = undefined;
+		}
+		if ( clearQueue && type !== false ) {
+			this.queue( type || "fx", [] );
+		}
+
+		return this.each( function() {
+			var dequeue = true,
+				index = type != null && type + "queueHooks",
+				timers = jQuery.timers,
+				data = dataPriv.get( this );
+
+			if ( index ) {
+				if ( data[ index ] && data[ index ].stop ) {
+					stopQueue( data[ index ] );
+				}
+			} else {
+				for ( index in data ) {
+					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
+						stopQueue( data[ index ] );
+					}
+				}
+			}
+
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this &&
+					( type == null || timers[ index ].queue === type ) ) {
+
+					timers[ index ].anim.stop( gotoEnd );
+					dequeue = false;
+					timers.splice( index, 1 );
+				}
+			}
+
+			// Start the next in the queue if the last step wasn't forced.
+			// Timers currently will call their complete callbacks, which
+			// will dequeue but only if they were gotoEnd.
+			if ( dequeue || !gotoEnd ) {
+				jQuery.dequeue( this, type );
+			}
+		} );
+	},
+	finish: function( type ) {
+		if ( type !== false ) {
+			type = type || "fx";
+		}
+		return this.each( function() {
+			var index,
+				data = dataPriv.get( this ),
+				queue = data[ type + "queue" ],
+				hooks = data[ type + "queueHooks" ],
+				timers = jQuery.timers,
+				length = queue ? queue.length : 0;
+
+			// Enable finishing flag on private data
+			data.finish = true;
+
+			// Empty the queue first
+			jQuery.queue( this, type, [] );
+
+			if ( hooks && hooks.stop ) {
+				hooks.stop.call( this, true );
+			}
+
+			// Look for any active animations, and finish them
+			for ( index = timers.length; index--; ) {
+				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
+					timers[ index ].anim.stop( true );
+					timers.splice( index, 1 );
+				}
+			}
+
+			// Look for any animations in the old queue and finish them
+			for ( index = 0; index < length; index++ ) {
+				if ( queue[ index ] && queue[ index ].finish ) {
+					queue[ index ].finish.call( this );
+				}
+			}
+
+			// Turn off finishing flag
+			delete data.finish;
+		} );
+	}
+} );
+
+jQuery.each( [ "toggle", "show", "hide" ], function( i, name ) {
+	var cssFn = jQuery.fn[ name ];
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return speed == null || typeof speed === "boolean" ?
+			cssFn.apply( this, arguments ) :
+			this.animate( genFx( name, true ), speed, easing, callback );
+	};
+} );
+
+// Generate shortcuts for custom animations
+jQuery.each( {
+	slideDown: genFx( "show" ),
+	slideUp: genFx( "hide" ),
+	slideToggle: genFx( "toggle" ),
+	fadeIn: { opacity: "show" },
+	fadeOut: { opacity: "hide" },
+	fadeToggle: { opacity: "toggle" }
+}, function( name, props ) {
+	jQuery.fn[ name ] = function( speed, easing, callback ) {
+		return this.animate( props, speed, easing, callback );
+	};
+} );
+
+jQuery.timers = [];
+jQuery.fx.tick = function() {
+	var timer,
+		i = 0,
+		timers = jQuery.timers;
+
+	fxNow = Date.now();
+
+	for ( ; i < timers.length; i++ ) {
+		timer = timers[ i ];
+
+		// Run the timer and safely remove it when done (allowing for external removal)
+		if ( !timer() && timers[ i ] === timer ) {
+			timers.splice( i--, 1 );
+		}
+	}
+
+	if ( !timers.length ) {
+		jQuery.fx.stop();
+	}
+	fxNow = undefined;
+};
+
+jQuery.fx.timer = function( timer ) {
+	jQuery.timers.push( timer );
+	jQuery.fx.start();
+};
+
+jQuery.fx.interval = 13;
+jQuery.fx.start = function() {
+	if ( inProgress ) {
+		return;
+	}
+
+	inProgress = true;
+	schedule();
+};
+
+jQuery.fx.stop = function() {
+	inProgress = null;
+};
+
+jQuery.fx.speeds = {
+	slow: 600,
+	fast: 200,
+
+	// Default speed
+	_default: 400
+};
+
+
+// Based off of the plugin by Clint Helfers, with permission.
+// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
+jQuery.fn.delay = function( time, type ) {
+	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
+	type = type || "fx";
+
+	return this.queue( type, function( next, hooks ) {
+		var timeout = window.setTimeout( next, time );
+		hooks.stop = function() {
+			window.clearTimeout( timeout );
+		};
+	} );
+};
+
+
+( function() {
+	var input = document.createElement( "input" ),
+		select = document.createElement( "select" ),
+		opt = select.appendChild( document.createElement( "option" ) );
+
+	input.type = "checkbox";
+
+	// Support: Android <=4.3 only
+	// Default value for a checkbox should be "on"
+	support.checkOn = input.value !== "";
+
+	// Support: IE <=11 only
+	// Must access selectedIndex to make default options select
+	support.optSelected = opt.selected;
+
+	// Support: IE <=11 only
+	// An input loses its value after becoming a radio
+	input = document.createElement( "input" );
+	input.value = "t";
+	input.type = "radio";
+	support.radioValue = input.value === "t";
+} )();
+
+
+var boolHook,
+	attrHandle = jQuery.expr.attrHandle;
+
+jQuery.fn.extend( {
+	attr: function( name, value ) {
+		return access( this, jQuery.attr, name, value, arguments.length > 1 );
+	},
+
+	removeAttr: function( name ) {
+		return this.each( function() {
+			jQuery.removeAttr( this, name );
+		} );
+	}
+} );
+
+jQuery.extend( {
+	attr: function( elem, name, value ) {
+		var ret, hooks,
+			nType = elem.nodeType;
+
+		// Don't get/set attributes on text, comment and attribute nodes
+		if ( nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		// Fallback to prop when attributes are not supported
+		if ( typeof elem.getAttribute === "undefined" ) {
+			return jQuery.prop( elem, name, value );
+		}
+
+		// Attribute hooks are determined by the lowercase version
+		// Grab necessary hook if one is defined
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+			hooks = jQuery.attrHooks[ name.toLowerCase() ] ||
+				( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );
+		}
+
+		if ( value !== undefined ) {
+			if ( value === null ) {
+				jQuery.removeAttr( elem, name );
+				return;
+			}
+
+			if ( hooks && "set" in hooks &&
+				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+				return ret;
+			}
+
+			elem.setAttribute( name, value + "" );
+			return value;
+		}
+
+		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+			return ret;
+		}
+
+		ret = jQuery.find.attr( elem, name );
+
+		// Non-existent attributes return null, we normalize to undefined
+		return ret == null ? undefined : ret;
+	},
+
+	attrHooks: {
+		type: {
+			set: function( elem, value ) {
+				if ( !support.radioValue && value === "radio" &&
+					nodeName( elem, "input" ) ) {
+					var val = elem.value;
+					elem.setAttribute( "type", value );
+					if ( val ) {
+						elem.value = val;
+					}
+					return value;
+				}
+			}
+		}
+	},
+
+	removeAttr: function( elem, value ) {
+		var name,
+			i = 0,
+
+			// Attribute names can contain non-HTML whitespace characters
+			// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2
+			attrNames = value && value.match( rnothtmlwhite );
+
+		if ( attrNames && elem.nodeType === 1 ) {
+			while ( ( name = attrNames[ i++ ] ) ) {
+				elem.removeAttribute( name );
+			}
+		}
+	}
+} );
+
+// Hooks for boolean attributes
+boolHook = {
+	set: function( elem, value, name ) {
+		if ( value === false ) {
+
+			// Remove boolean attributes when set to false
+			jQuery.removeAttr( elem, name );
+		} else {
+			elem.setAttribute( name, name );
+		}
+		return name;
+	}
+};
+
+jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
+	var getter = attrHandle[ name ] || jQuery.find.attr;
+
+	attrHandle[ name ] = function( elem, name, isXML ) {
+		var ret, handle,
+			lowercaseName = name.toLowerCase();
+
+		if ( !isXML ) {
+
+			// Avoid an infinite loop by temporarily removing this function from the getter
+			handle = attrHandle[ lowercaseName ];
+			attrHandle[ lowercaseName ] = ret;
+			ret = getter( elem, name, isXML ) != null ?
+				lowercaseName :
+				null;
+			attrHandle[ lowercaseName ] = handle;
+		}
+		return ret;
+	};
+} );
+
+
+
+
+var rfocusable = /^(?:input|select|textarea|button)$/i,
+	rclickable = /^(?:a|area)$/i;
+
+jQuery.fn.extend( {
+	prop: function( name, value ) {
+		return access( this, jQuery.prop, name, value, arguments.length > 1 );
+	},
+
+	removeProp: function( name ) {
+		return this.each( function() {
+			delete this[ jQuery.propFix[ name ] || name ];
+		} );
+	}
+} );
+
+jQuery.extend( {
+	prop: function( elem, name, value ) {
+		var ret, hooks,
+			nType = elem.nodeType;
+
+		// Don't get/set properties on text, comment and attribute nodes
+		if ( nType === 3 || nType === 8 || nType === 2 ) {
+			return;
+		}
+
+		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
+
+			// Fix name and attach hooks
+			name = jQuery.propFix[ name ] || name;
+			hooks = jQuery.propHooks[ name ];
+		}
+
+		if ( value !== undefined ) {
+			if ( hooks && "set" in hooks &&
+				( ret = hooks.set( elem, value, name ) ) !== undefined ) {
+				return ret;
+			}
+
+			return ( elem[ name ] = value );
+		}
+
+		if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {
+			return ret;
+		}
+
+		return elem[ name ];
+	},
+
+	propHooks: {
+		tabIndex: {
+			get: function( elem ) {
+
+				// Support: IE <=9 - 11 only
+				// elem.tabIndex doesn't always return the
+				// correct value when it hasn't been explicitly set
+				// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
+				// Use proper attribute retrieval(#12072)
+				var tabindex = jQuery.find.attr( elem, "tabindex" );
+
+				if ( tabindex ) {
+					return parseInt( tabindex, 10 );
+				}
+
+				if (
+					rfocusable.test( elem.nodeName ) ||
+					rclickable.test( elem.nodeName ) &&
+					elem.href
+				) {
+					return 0;
+				}
+
+				return -1;
+			}
+		}
+	},
+
+	propFix: {
+		"for": "htmlFor",
+		"class": "className"
+	}
+} );
+
+// Support: IE <=11 only
+// Accessing the selectedIndex property
+// forces the browser to respect setting selected
+// on the option
+// The getter ensures a default option is selected
+// when in an optgroup
+// eslint rule "no-unused-expressions" is disabled for this code
+// since it considers such accessions noop
+if ( !support.optSelected ) {
+	jQuery.propHooks.selected = {
+		get: function( elem ) {
+
+			/* eslint no-unused-expressions: "off" */
+
+			var parent = elem.parentNode;
+			if ( parent && parent.parentNode ) {
+				parent.parentNode.selectedIndex;
+			}
+			return null;
+		},
+		set: function( elem ) {
+
+			/* eslint no-unused-expressions: "off" */
+
+			var parent = elem.parentNode;
+			if ( parent ) {
+				parent.selectedIndex;
+
+				if ( parent.parentNode ) {
+					parent.parentNode.selectedIndex;
+				}
+			}
+		}
+	};
+}
+
+jQuery.each( [
+	"tabIndex",
+	"readOnly",
+	"maxLength",
+	"cellSpacing",
+	"cellPadding",
+	"rowSpan",
+	"colSpan",
+	"useMap",
+	"frameBorder",
+	"contentEditable"
+], function() {
+	jQuery.propFix[ this.toLowerCase() ] = this;
+} );
+
+
+
+
+	// Strip and collapse whitespace according to HTML spec
+	// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace
+	function stripAndCollapse( value ) {
+		var tokens = value.match( rnothtmlwhite ) || [];
+		return tokens.join( " " );
+	}
+
+
+function getClass( elem ) {
+	return elem.getAttribute && elem.getAttribute( "class" ) || "";
+}
+
+function classesToArray( value ) {
+	if ( Array.isArray( value ) ) {
+		return value;
+	}
+	if ( typeof value === "string" ) {
+		return value.match( rnothtmlwhite ) || [];
+	}
+	return [];
+}
+
+jQuery.fn.extend( {
+	addClass: function( value ) {
+		var classes, elem, cur, curValue, clazz, j, finalValue,
+			i = 0;
+
+		if ( isFunction( value ) ) {
+			return this.each( function( j ) {
+				jQuery( this ).addClass( value.call( this, j, getClass( this ) ) );
+			} );
+		}
+
+		classes = classesToArray( value );
+
+		if ( classes.length ) {
+			while ( ( elem = this[ i++ ] ) ) {
+				curValue = getClass( elem );
+				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+				if ( cur ) {
+					j = 0;
+					while ( ( clazz = classes[ j++ ] ) ) {
+						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
+							cur += clazz + " ";
+						}
+					}
+
+					// Only assign if different to avoid unneeded rendering.
+					finalValue = stripAndCollapse( cur );
+					if ( curValue !== finalValue ) {
+						elem.setAttribute( "class", finalValue );
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	removeClass: function( value ) {
+		var classes, elem, cur, curValue, clazz, j, finalValue,
+			i = 0;
+
+		if ( isFunction( value ) ) {
+			return this.each( function( j ) {
+				jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );
+			} );
+		}
+
+		if ( !arguments.length ) {
+			return this.attr( "class", "" );
+		}
+
+		classes = classesToArray( value );
+
+		if ( classes.length ) {
+			while ( ( elem = this[ i++ ] ) ) {
+				curValue = getClass( elem );
+
+				// This expression is here for better compressibility (see addClass)
+				cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " );
+
+				if ( cur ) {
+					j = 0;
+					while ( ( clazz = classes[ j++ ] ) ) {
+
+						// Remove *all* instances
+						while ( cur.indexOf( " " + clazz + " " ) > -1 ) {
+							cur = cur.replace( " " + clazz + " ", " " );
+						}
+					}
+
+					// Only assign if different to avoid unneeded rendering.
+					finalValue = stripAndCollapse( cur );
+					if ( curValue !== finalValue ) {
+						elem.setAttribute( "class", finalValue );
+					}
+				}
+			}
+		}
+
+		return this;
+	},
+
+	toggleClass: function( value, stateVal ) {
+		var type = typeof value,
+			isValidValue = type === "string" || Array.isArray( value );
+
+		if ( typeof stateVal === "boolean" && isValidValue ) {
+			return stateVal ? this.addClass( value ) : this.removeClass( value );
+		}
+
+		if ( isFunction( value ) ) {
+			return this.each( function( i ) {
+				jQuery( this ).toggleClass(
+					value.call( this, i, getClass( this ), stateVal ),
+					stateVal
+				);
+			} );
+		}
+
+		return this.each( function() {
+			var className, i, self, classNames;
+
+			if ( isValidValue ) {
+
+				// Toggle individual class names
+				i = 0;
+				self = jQuery( this );
+				classNames = classesToArray( value );
+
+				while ( ( className = classNames[ i++ ] ) ) {
+
+					// Check each className given, space separated list
+					if ( self.hasClass( className ) ) {
+						self.removeClass( className );
+					} else {
+						self.addClass( className );
+					}
+				}
+
+			// Toggle whole class name
+			} else if ( value === undefined || type === "boolean" ) {
+				className = getClass( this );
+				if ( className ) {
+
+					// Store className if set
+					dataPriv.set( this, "__className__", className );
+				}
+
+				// If the element has a class name or if we're passed `false`,
+				// then remove the whole classname (if there was one, the above saved it).
+				// Otherwise bring back whatever was previously saved (if anything),
+				// falling back to the empty string if nothing was stored.
+				if ( this.setAttribute ) {
+					this.setAttribute( "class",
+						className || value === false ?
+						"" :
+						dataPriv.get( this, "__className__" ) || ""
+					);
+				}
+			}
+		} );
+	},
+
+	hasClass: function( selector ) {
+		var className, elem,
+			i = 0;
+
+		className = " " + selector + " ";
+		while ( ( elem = this[ i++ ] ) ) {
+			if ( elem.nodeType === 1 &&
+				( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) {
+					return true;
+			}
+		}
+
+		return false;
+	}
+} );
+
+
+
+
+var rreturn = /\r/g;
+
+jQuery.fn.extend( {
+	val: function( value ) {
+		var hooks, ret, valueIsFunction,
+			elem = this[ 0 ];
+
+		if ( !arguments.length ) {
+			if ( elem ) {
+				hooks = jQuery.valHooks[ elem.type ] ||
+					jQuery.valHooks[ elem.nodeName.toLowerCase() ];
+
+				if ( hooks &&
+					"get" in hooks &&
+					( ret = hooks.get( elem, "value" ) ) !== undefined
+				) {
+					return ret;
+				}
+
+				ret = elem.value;
+
+				// Handle most common string cases
+				if ( typeof ret === "string" ) {
+					return ret.replace( rreturn, "" );
+				}
+
+				// Handle cases where value is null/undef or number
+				return ret == null ? "" : ret;
+			}
+
+			return;
+		}
+
+		valueIsFunction = isFunction( value );
+
+		return this.each( function( i ) {
+			var val;
+
+			if ( this.nodeType !== 1 ) {
+				return;
+			}
+
+			if ( valueIsFunction ) {
+				val = value.call( this, i, jQuery( this ).val() );
+			} else {
+				val = value;
+			}
+
+			// Treat null/undefined as ""; convert numbers to string
+			if ( val == null ) {
+				val = "";
+
+			} else if ( typeof val === "number" ) {
+				val += "";
+
+			} else if ( Array.isArray( val ) ) {
+				val = jQuery.map( val, function( value ) {
+					return value == null ? "" : value + "";
+				} );
+			}
+
+			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
+
+			// If set returns undefined, fall back to normal setting
+			if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) {
+				this.value = val;
+			}
+		} );
+	}
+} );
+
+jQuery.extend( {
+	valHooks: {
+		option: {
+			get: function( elem ) {
+
+				var val = jQuery.find.attr( elem, "value" );
+				return val != null ?
+					val :
+
+					// Support: IE <=10 - 11 only
+					// option.text throws exceptions (#14686, #14858)
+					// Strip and collapse whitespace
+					// https://html.spec.whatwg.org/#strip-and-collapse-whitespace
+					stripAndCollapse( jQuery.text( elem ) );
+			}
+		},
+		select: {
+			get: function( elem ) {
+				var value, option, i,
+					options = elem.options,
+					index = elem.selectedIndex,
+					one = elem.type === "select-one",
+					values = one ? null : [],
+					max = one ? index + 1 : options.length;
+
+				if ( index < 0 ) {
+					i = max;
+
+				} else {
+					i = one ? index : 0;
+				}
+
+				// Loop through all the selected options
+				for ( ; i < max; i++ ) {
+					option = options[ i ];
+
+					// Support: IE <=9 only
+					// IE8-9 doesn't update selected after form reset (#2551)
+					if ( ( option.selected || i === index ) &&
+
+							// Don't return options that are disabled or in a disabled optgroup
+							!option.disabled &&
+							( !option.parentNode.disabled ||
+								!nodeName( option.parentNode, "optgroup" ) ) ) {
+
+						// Get the specific value for the option
+						value = jQuery( option ).val();
+
+						// We don't need an array for one selects
+						if ( one ) {
+							return value;
+						}
+
+						// Multi-Selects return an array
+						values.push( value );
+					}
+				}
+
+				return values;
+			},
+
+			set: function( elem, value ) {
+				var optionSet, option,
+					options = elem.options,
+					values = jQuery.makeArray( value ),
+					i = options.length;
+
+				while ( i-- ) {
+					option = options[ i ];
+
+					/* eslint-disable no-cond-assign */
+
+					if ( option.selected =
+						jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1
+					) {
+						optionSet = true;
+					}
+
+					/* eslint-enable no-cond-assign */
+				}
+
+				// Force browsers to behave consistently when non-matching value is set
+				if ( !optionSet ) {
+					elem.selectedIndex = -1;
+				}
+				return values;
+			}
+		}
+	}
+} );
+
+// Radios and checkboxes getter/setter
+jQuery.each( [ "radio", "checkbox" ], function() {
+	jQuery.valHooks[ this ] = {
+		set: function( elem, value ) {
+			if ( Array.isArray( value ) ) {
+				return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );
+			}
+		}
+	};
+	if ( !support.checkOn ) {
+		jQuery.valHooks[ this ].get = function( elem ) {
+			return elem.getAttribute( "value" ) === null ? "on" : elem.value;
+		};
+	}
+} );
+
+
+
+
+// Return jQuery for attributes-only inclusion
+
+
+support.focusin = "onfocusin" in window;
+
+
+var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
+	stopPropagationCallback = function( e ) {
+		e.stopPropagation();
+	};
+
+jQuery.extend( jQuery.event, {
+
+	trigger: function( event, data, elem, onlyHandlers ) {
+
+		var i, cur, tmp, bubbleType, ontype, handle, special, lastElement,
+			eventPath = [ elem || document ],
+			type = hasOwn.call( event, "type" ) ? event.type : event,
+			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : [];
+
+		cur = lastElement = tmp = elem = elem || document;
+
+		// Don't do events on text and comment nodes
+		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+			return;
+		}
+
+		// focus/blur morphs to focusin/out; ensure we're not firing them right now
+		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
+			return;
+		}
+
+		if ( type.indexOf( "." ) > -1 ) {
+
+			// Namespaced trigger; create a regexp to match event type in handle()
+			namespaces = type.split( "." );
+			type = namespaces.shift();
+			namespaces.sort();
+		}
+		ontype = type.indexOf( ":" ) < 0 && "on" + type;
+
+		// Caller can pass in a jQuery.Event object, Object, or just an event type string
+		event = event[ jQuery.expando ] ?
+			event :
+			new jQuery.Event( type, typeof event === "object" && event );
+
+		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
+		event.isTrigger = onlyHandlers ? 2 : 3;
+		event.namespace = namespaces.join( "." );
+		event.rnamespace = event.namespace ?
+			new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) :
+			null;
+
+		// Clean up the event in case it is being reused
+		event.result = undefined;
+		if ( !event.target ) {
+			event.target = elem;
+		}
+
+		// Clone any incoming data and prepend the event, creating the handler arg list
+		data = data == null ?
+			[ event ] :
+			jQuery.makeArray( data, [ event ] );
+
+		// Allow special events to draw outside the lines
+		special = jQuery.event.special[ type ] || {};
+		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
+			return;
+		}
+
+		// Determine event propagation path in advance, per W3C events spec (#9951)
+		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
+		if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {
+
+			bubbleType = special.delegateType || type;
+			if ( !rfocusMorph.test( bubbleType + type ) ) {
+				cur = cur.parentNode;
+			}
+			for ( ; cur; cur = cur.parentNode ) {
+				eventPath.push( cur );
+				tmp = cur;
+			}
+
+			// Only add window if we got to document (e.g., not plain obj or detached DOM)
+			if ( tmp === ( elem.ownerDocument || document ) ) {
+				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
+			}
+		}
+
+		// Fire handlers on the event path
+		i = 0;
+		while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {
+			lastElement = cur;
+			event.type = i > 1 ?
+				bubbleType :
+				special.bindType || type;
+
+			// jQuery handler
+			handle = ( dataPriv.get( cur, "events" ) || {} )[ event.type ] &&
+				dataPriv.get( cur, "handle" );
+			if ( handle ) {
+				handle.apply( cur, data );
+			}
+
+			// Native handler
+			handle = ontype && cur[ ontype ];
+			if ( handle && handle.apply && acceptData( cur ) ) {
+				event.result = handle.apply( cur, data );
+				if ( event.result === false ) {
+					event.preventDefault();
+				}
+			}
+		}
+		event.type = type;
+
+		// If nobody prevented the default action, do it now
+		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
+
+			if ( ( !special._default ||
+				special._default.apply( eventPath.pop(), data ) === false ) &&
+				acceptData( elem ) ) {
+
+				// Call a native DOM method on the target with the same name as the event.
+				// Don't do default actions on window, that's where global variables be (#6170)
+				if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {
+
+					// Don't re-trigger an onFOO event when we call its FOO() method
+					tmp = elem[ ontype ];
+
+					if ( tmp ) {
+						elem[ ontype ] = null;
+					}
+
+					// Prevent re-triggering of the same event, since we already bubbled it above
+					jQuery.event.triggered = type;
+
+					if ( event.isPropagationStopped() ) {
+						lastElement.addEventListener( type, stopPropagationCallback );
+					}
+
+					elem[ type ]();
+
+					if ( event.isPropagationStopped() ) {
+						lastElement.removeEventListener( type, stopPropagationCallback );
+					}
+
+					jQuery.event.triggered = undefined;
+
+					if ( tmp ) {
+						elem[ ontype ] = tmp;
+					}
+				}
+			}
+		}
+
+		return event.result;
+	},
+
+	// Piggyback on a donor event to simulate a different one
+	// Used only for `focus(in | out)` events
+	simulate: function( type, elem, event ) {
+		var e = jQuery.extend(
+			new jQuery.Event(),
+			event,
+			{
+				type: type,
+				isSimulated: true
+			}
+		);
+
+		jQuery.event.trigger( e, null, elem );
+	}
+
+} );
+
+jQuery.fn.extend( {
+
+	trigger: function( type, data ) {
+		return this.each( function() {
+			jQuery.event.trigger( type, data, this );
+		} );
+	},
+	triggerHandler: function( type, data ) {
+		var elem = this[ 0 ];
+		if ( elem ) {
+			return jQuery.event.trigger( type, data, elem, true );
+		}
+	}
+} );
+
+
+// Support: Firefox <=44
+// Firefox doesn't have focus(in | out) events
+// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787
+//
+// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1
+// focus(in | out) events fire after focus & blur events,
+// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
+// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857
+if ( !support.focusin ) {
+	jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+		// Attach a single capturing handler on the document while someone wants focusin/focusout
+		var handler = function( event ) {
+			jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );
+		};
+
+		jQuery.event.special[ fix ] = {
+			setup: function() {
+				var doc = this.ownerDocument || this,
+					attaches = dataPriv.access( doc, fix );
+
+				if ( !attaches ) {
+					doc.addEventListener( orig, handler, true );
+				}
+				dataPriv.access( doc, fix, ( attaches || 0 ) + 1 );
+			},
+			teardown: function() {
+				var doc = this.ownerDocument || this,
+					attaches = dataPriv.access( doc, fix ) - 1;
+
+				if ( !attaches ) {
+					doc.removeEventListener( orig, handler, true );
+					dataPriv.remove( doc, fix );
+
+				} else {
+					dataPriv.access( doc, fix, attaches );
+				}
+			}
+		};
+	} );
+}
+var location = window.location;
+
+var nonce = Date.now();
+
+var rquery = ( /\?/ );
+
+
+
+// Cross-browser xml parsing
+jQuery.parseXML = function( data ) {
+	var xml;
+	if ( !data || typeof data !== "string" ) {
+		return null;
+	}
+
+	// Support: IE 9 - 11 only
+	// IE throws on parseFromString with invalid input.
+	try {
+		xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" );
+	} catch ( e ) {
+		xml = undefined;
+	}
+
+	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
+		jQuery.error( "Invalid XML: " + data );
+	}
+	return xml;
+};
+
+
+var
+	rbracket = /\[\]$/,
+	rCRLF = /\r?\n/g,
+	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
+	rsubmittable = /^(?:input|select|textarea|keygen)/i;
+
+function buildParams( prefix, obj, traditional, add ) {
+	var name;
+
+	if ( Array.isArray( obj ) ) {
+
+		// Serialize array item.
+		jQuery.each( obj, function( i, v ) {
+			if ( traditional || rbracket.test( prefix ) ) {
+
+				// Treat each array item as a scalar.
+				add( prefix, v );
+
+			} else {
+
+				// Item is non-scalar (array or object), encode its numeric index.
+				buildParams(
+					prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]",
+					v,
+					traditional,
+					add
+				);
+			}
+		} );
+
+	} else if ( !traditional && toType( obj ) === "object" ) {
+
+		// Serialize object item.
+		for ( name in obj ) {
+			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+		}
+
+	} else {
+
+		// Serialize scalar item.
+		add( prefix, obj );
+	}
+}
+
+// Serialize an array of form elements or a set of
+// key/values into a query string
+jQuery.param = function( a, traditional ) {
+	var prefix,
+		s = [],
+		add = function( key, valueOrFunction ) {
+
+			// If value is a function, invoke it and use its return value
+			var value = isFunction( valueOrFunction ) ?
+				valueOrFunction() :
+				valueOrFunction;
+
+			s[ s.length ] = encodeURIComponent( key ) + "=" +
+				encodeURIComponent( value == null ? "" : value );
+		};
+
+	// If an array was passed in, assume that it is an array of form elements.
+	if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
+
+		// Serialize the form elements
+		jQuery.each( a, function() {
+			add( this.name, this.value );
+		} );
+
+	} else {
+
+		// If traditional, encode the "old" way (the way 1.3.2 or older
+		// did it), otherwise encode params recursively.
+		for ( prefix in a ) {
+			buildParams( prefix, a[ prefix ], traditional, add );
+		}
+	}
+
+	// Return the resulting serialization
+	return s.join( "&" );
+};
+
+jQuery.fn.extend( {
+	serialize: function() {
+		return jQuery.param( this.serializeArray() );
+	},
+	serializeArray: function() {
+		return this.map( function() {
+
+			// Can add propHook for "elements" to filter or add form elements
+			var elements = jQuery.prop( this, "elements" );
+			return elements ? jQuery.makeArray( elements ) : this;
+		} )
+		.filter( function() {
+			var type = this.type;
+
+			// Use .is( ":disabled" ) so that fieldset[disabled] works
+			return this.name && !jQuery( this ).is( ":disabled" ) &&
+				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
+				( this.checked || !rcheckableType.test( type ) );
+		} )
+		.map( function( i, elem ) {
+			var val = jQuery( this ).val();
+
+			if ( val == null ) {
+				return null;
+			}
+
+			if ( Array.isArray( val ) ) {
+				return jQuery.map( val, function( val ) {
+					return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+				} );
+			}
+
+			return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
+		} ).get();
+	}
+} );
+
+
+var
+	r20 = /%20/g,
+	rhash = /#.*$/,
+	rantiCache = /([?&])_=[^&]*/,
+	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
+
+	// #7653, #8125, #8152: local protocol detection
+	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
+	rnoContent = /^(?:GET|HEAD)$/,
+	rprotocol = /^\/\//,
+
+	/* Prefilters
+	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+	 * 2) These are called:
+	 *    - BEFORE asking for a transport
+	 *    - AFTER param serialization (s.data is a string if s.processData is true)
+	 * 3) key is the dataType
+	 * 4) the catchall symbol "*" can be used
+	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+	 */
+	prefilters = {},
+
+	/* Transports bindings
+	 * 1) key is the dataType
+	 * 2) the catchall symbol "*" can be used
+	 * 3) selection will start with transport dataType and THEN go to "*" if needed
+	 */
+	transports = {},
+
+	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+	allTypes = "*/".concat( "*" ),
+
+	// Anchor tag for parsing the document origin
+	originAnchor = document.createElement( "a" );
+	originAnchor.href = location.href;
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+	// dataTypeExpression is optional and defaults to "*"
+	return function( dataTypeExpression, func ) {
+
+		if ( typeof dataTypeExpression !== "string" ) {
+			func = dataTypeExpression;
+			dataTypeExpression = "*";
+		}
+
+		var dataType,
+			i = 0,
+			dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];
+
+		if ( isFunction( func ) ) {
+
+			// For each dataType in the dataTypeExpression
+			while ( ( dataType = dataTypes[ i++ ] ) ) {
+
+				// Prepend if requested
+				if ( dataType[ 0 ] === "+" ) {
+					dataType = dataType.slice( 1 ) || "*";
+					( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );
+
+				// Otherwise append
+				} else {
+					( structure[ dataType ] = structure[ dataType ] || [] ).push( func );
+				}
+			}
+		}
+	};
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
+
+	var inspected = {},
+		seekingTransport = ( structure === transports );
+
+	function inspect( dataType ) {
+		var selected;
+		inspected[ dataType ] = true;
+		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
+			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
+			if ( typeof dataTypeOrTransport === "string" &&
+				!seekingTransport && !inspected[ dataTypeOrTransport ] ) {
+
+				options.dataTypes.unshift( dataTypeOrTransport );
+				inspect( dataTypeOrTransport );
+				return false;
+			} else if ( seekingTransport ) {
+				return !( selected = dataTypeOrTransport );
+			}
+		} );
+		return selected;
+	}
+
+	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+	var key, deep,
+		flatOptions = jQuery.ajaxSettings.flatOptions || {};
+
+	for ( key in src ) {
+		if ( src[ key ] !== undefined ) {
+			( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+		}
+	}
+	if ( deep ) {
+		jQuery.extend( true, target, deep );
+	}
+
+	return target;
+}
+
+/* Handles responses to an ajax request:
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+	var ct, type, finalDataType, firstDataType,
+		contents = s.contents,
+		dataTypes = s.dataTypes;
+
+	// Remove auto dataType and get content-type in the process
+	while ( dataTypes[ 0 ] === "*" ) {
+		dataTypes.shift();
+		if ( ct === undefined ) {
+			ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" );
+		}
+	}
+
+	// Check if we're dealing with a known content-type
+	if ( ct ) {
+		for ( type in contents ) {
+			if ( contents[ type ] && contents[ type ].test( ct ) ) {
+				dataTypes.unshift( type );
+				break;
+			}
+		}
+	}
+
+	// Check to see if we have a response for the expected dataType
+	if ( dataTypes[ 0 ] in responses ) {
+		finalDataType = dataTypes[ 0 ];
+	} else {
+
+		// Try convertible dataTypes
+		for ( type in responses ) {
+			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) {
+				finalDataType = type;
+				break;
+			}
+			if ( !firstDataType ) {
+				firstDataType = type;
+			}
+		}
+
+		// Or just use first one
+		finalDataType = finalDataType || firstDataType;
+	}
+
+	// If we found a dataType
+	// We add the dataType to the list if needed
+	// and return the corresponding response
+	if ( finalDataType ) {
+		if ( finalDataType !== dataTypes[ 0 ] ) {
+			dataTypes.unshift( finalDataType );
+		}
+		return responses[ finalDataType ];
+	}
+}
+
+/* Chain conversions given the request and the original response
+ * Also sets the responseXXX fields on the jqXHR instance
+ */
+function ajaxConvert( s, response, jqXHR, isSuccess ) {
+	var conv2, current, conv, tmp, prev,
+		converters = {},
+
+		// Work with a copy of dataTypes in case we need to modify it for conversion
+		dataTypes = s.dataTypes.slice();
+
+	// Create converters map with lowercased keys
+	if ( dataTypes[ 1 ] ) {
+		for ( conv in s.converters ) {
+			converters[ conv.toLowerCase() ] = s.converters[ conv ];
+		}
+	}
+
+	current = dataTypes.shift();
+
+	// Convert to each sequential dataType
+	while ( current ) {
+
+		if ( s.responseFields[ current ] ) {
+			jqXHR[ s.responseFields[ current ] ] = response;
+		}
+
+		// Apply the dataFilter if provided
+		if ( !prev && isSuccess && s.dataFilter ) {
+			response = s.dataFilter( response, s.dataType );
+		}
+
+		prev = current;
+		current = dataTypes.shift();
+
+		if ( current ) {
+
+			// There's only work to do if current dataType is non-auto
+			if ( current === "*" ) {
+
+				current = prev;
+
+			// Convert response if prev dataType is non-auto and differs from current
+			} else if ( prev !== "*" && prev !== current ) {
+
+				// Seek a direct converter
+				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
+
+				// If none found, seek a pair
+				if ( !conv ) {
+					for ( conv2 in converters ) {
+
+						// If conv2 outputs current
+						tmp = conv2.split( " " );
+						if ( tmp[ 1 ] === current ) {
+
+							// If prev can be converted to accepted input
+							conv = converters[ prev + " " + tmp[ 0 ] ] ||
+								converters[ "* " + tmp[ 0 ] ];
+							if ( conv ) {
+
+								// Condense equivalence converters
+								if ( conv === true ) {
+									conv = converters[ conv2 ];
+
+								// Otherwise, insert the intermediate dataType
+								} else if ( converters[ conv2 ] !== true ) {
+									current = tmp[ 0 ];
+									dataTypes.unshift( tmp[ 1 ] );
+								}
+								break;
+							}
+						}
+					}
+				}
+
+				// Apply converter (if not an equivalence)
+				if ( conv !== true ) {
+
+					// Unless errors are allowed to bubble, catch and return them
+					if ( conv && s.throws ) {
+						response = conv( response );
+					} else {
+						try {
+							response = conv( response );
+						} catch ( e ) {
+							return {
+								state: "parsererror",
+								error: conv ? e : "No conversion from " + prev + " to " + current
+							};
+						}
+					}
+				}
+			}
+		}
+	}
+
+	return { state: "success", data: response };
+}
+
+jQuery.extend( {
+
+	// Counter for holding the number of active queries
+	active: 0,
+
+	// Last-Modified header cache for next request
+	lastModified: {},
+	etag: {},
+
+	ajaxSettings: {
+		url: location.href,
+		type: "GET",
+		isLocal: rlocalProtocol.test( location.protocol ),
+		global: true,
+		processData: true,
+		async: true,
+		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
+
+		/*
+		timeout: 0,
+		data: null,
+		dataType: null,
+		username: null,
+		password: null,
+		cache: null,
+		throws: false,
+		traditional: false,
+		headers: {},
+		*/
+
+		accepts: {
+			"*": allTypes,
+			text: "text/plain",
+			html: "text/html",
+			xml: "application/xml, text/xml",
+			json: "application/json, text/javascript"
+		},
+
+		contents: {
+			xml: /\bxml\b/,
+			html: /\bhtml/,
+			json: /\bjson\b/
+		},
+
+		responseFields: {
+			xml: "responseXML",
+			text: "responseText",
+			json: "responseJSON"
+		},
+
+		// Data converters
+		// Keys separate source (or catchall "*") and destination types with a single space
+		converters: {
+
+			// Convert anything to text
+			"* text": String,
+
+			// Text to html (true = no transformation)
+			"text html": true,
+
+			// Evaluate text as a json expression
+			"text json": JSON.parse,
+
+			// Parse text as xml
+			"text xml": jQuery.parseXML
+		},
+
+		// For options that shouldn't be deep extended:
+		// you can add your own custom options here if
+		// and when you create one that shouldn't be
+		// deep extended (see ajaxExtend)
+		flatOptions: {
+			url: true,
+			context: true
+		}
+	},
+
+	// Creates a full fledged settings object into target
+	// with both ajaxSettings and settings fields.
+	// If target is omitted, writes into ajaxSettings.
+	ajaxSetup: function( target, settings ) {
+		return settings ?
+
+			// Building a settings object
+			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
+
+			// Extending ajaxSettings
+			ajaxExtend( jQuery.ajaxSettings, target );
+	},
+
+	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+	ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+	// Main method
+	ajax: function( url, options ) {
+
+		// If url is an object, simulate pre-1.5 signature
+		if ( typeof url === "object" ) {
+			options = url;
+			url = undefined;
+		}
+
+		// Force options to be an object
+		options = options || {};
+
+		var transport,
+
+			// URL without anti-cache param
+			cacheURL,
+
+			// Response headers
+			responseHeadersString,
+			responseHeaders,
+
+			// timeout handle
+			timeoutTimer,
+
+			// Url cleanup var
+			urlAnchor,
+
+			// Request state (becomes false upon send and true upon completion)
+			completed,
+
+			// To know if global events are to be dispatched
+			fireGlobals,
+
+			// Loop variable
+			i,
+
+			// uncached part of the url
+			uncached,
+
+			// Create the final options object
+			s = jQuery.ajaxSetup( {}, options ),
+
+			// Callbacks context
+			callbackContext = s.context || s,
+
+			// Context for global events is callbackContext if it is a DOM node or jQuery collection
+			globalEventContext = s.context &&
+				( callbackContext.nodeType || callbackContext.jquery ) ?
+					jQuery( callbackContext ) :
+					jQuery.event,
+
+			// Deferreds
+			deferred = jQuery.Deferred(),
+			completeDeferred = jQuery.Callbacks( "once memory" ),
+
+			// Status-dependent callbacks
+			statusCode = s.statusCode || {},
+
+			// Headers (they are sent all at once)
+			requestHeaders = {},
+			requestHeadersNames = {},
+
+			// Default abort message
+			strAbort = "canceled",
+
+			// Fake xhr
+			jqXHR = {
+				readyState: 0,
+
+				// Builds headers hashtable if needed
+				getResponseHeader: function( key ) {
+					var match;
+					if ( completed ) {
+						if ( !responseHeaders ) {
+							responseHeaders = {};
+							while ( ( match = rheaders.exec( responseHeadersString ) ) ) {
+								responseHeaders[ match[ 1 ].toLowerCase() ] = match[ 2 ];
+							}
+						}
+						match = responseHeaders[ key.toLowerCase() ];
+					}
+					return match == null ? null : match;
+				},
+
+				// Raw string
+				getAllResponseHeaders: function() {
+					return completed ? responseHeadersString : null;
+				},
+
+				// Caches the header
+				setRequestHeader: function( name, value ) {
+					if ( completed == null ) {
+						name = requestHeadersNames[ name.toLowerCase() ] =
+							requestHeadersNames[ name.toLowerCase() ] || name;
+						requestHeaders[ name ] = value;
+					}
+					return this;
+				},
+
+				// Overrides response content-type header
+				overrideMimeType: function( type ) {
+					if ( completed == null ) {
+						s.mimeType = type;
+					}
+					return this;
+				},
+
+				// Status-dependent callbacks
+				statusCode: function( map ) {
+					var code;
+					if ( map ) {
+						if ( completed ) {
+
+							// Execute the appropriate callbacks
+							jqXHR.always( map[ jqXHR.status ] );
+						} else {
+
+							// Lazy-add the new callbacks in a way that preserves old ones
+							for ( code in map ) {
+								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
+							}
+						}
+					}
+					return this;
+				},
+
+				// Cancel the request
+				abort: function( statusText ) {
+					var finalText = statusText || strAbort;
+					if ( transport ) {
+						transport.abort( finalText );
+					}
+					done( 0, finalText );
+					return this;
+				}
+			};
+
+		// Attach deferreds
+		deferred.promise( jqXHR );
+
+		// Add protocol if not provided (prefilters might expect it)
+		// Handle falsy url in the settings object (#10093: consistency with old signature)
+		// We also use the url parameter if available
+		s.url = ( ( url || s.url || location.href ) + "" )
+			.replace( rprotocol, location.protocol + "//" );
+
+		// Alias method option to type as per ticket #12004
+		s.type = options.method || options.type || s.method || s.type;
+
+		// Extract dataTypes list
+		s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ];
+
+		// A cross-domain request is in order when the origin doesn't match the current origin.
+		if ( s.crossDomain == null ) {
+			urlAnchor = document.createElement( "a" );
+
+			// Support: IE <=8 - 11, Edge 12 - 15
+			// IE throws exception on accessing the href property if url is malformed,
+			// e.g. http://example.com:80x/
+			try {
+				urlAnchor.href = s.url;
+
+				// Support: IE <=8 - 11 only
+				// Anchor's host property isn't correctly set when s.url is relative
+				urlAnchor.href = urlAnchor.href;
+				s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !==
+					urlAnchor.protocol + "//" + urlAnchor.host;
+			} catch ( e ) {
+
+				// If there is an error parsing the URL, assume it is crossDomain,
+				// it can be rejected by the transport if it is invalid
+				s.crossDomain = true;
+			}
+		}
+
+		// Convert data if not already a string
+		if ( s.data && s.processData && typeof s.data !== "string" ) {
+			s.data = jQuery.param( s.data, s.traditional );
+		}
+
+		// Apply prefilters
+		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
+
+		// If request was aborted inside a prefilter, stop there
+		if ( completed ) {
+			return jqXHR;
+		}
+
+		// We can fire global events as of now if asked to
+		// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)
+		fireGlobals = jQuery.event && s.global;
+
+		// Watch for a new set of requests
+		if ( fireGlobals && jQuery.active++ === 0 ) {
+			jQuery.event.trigger( "ajaxStart" );
+		}
+
+		// Uppercase the type
+		s.type = s.type.toUpperCase();
+
+		// Determine if request has content
+		s.hasContent = !rnoContent.test( s.type );
+
+		// Save the URL in case we're toying with the If-Modified-Since
+		// and/or If-None-Match header later on
+		// Remove hash to simplify url manipulation
+		cacheURL = s.url.replace( rhash, "" );
+
+		// More options handling for requests with no content
+		if ( !s.hasContent ) {
+
+			// Remember the hash so we can put it back
+			uncached = s.url.slice( cacheURL.length );
+
+			// If data is available and should be processed, append data to url
+			if ( s.data && ( s.processData || typeof s.data === "string" ) ) {
+				cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data;
+
+				// #9682: remove data so that it's not used in an eventual retry
+				delete s.data;
+			}
+
+			// Add or update anti-cache param if needed
+			if ( s.cache === false ) {
+				cacheURL = cacheURL.replace( rantiCache, "$1" );
+				uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce++ ) + uncached;
+			}
+
+			// Put hash and anti-cache on the URL that will be requested (gh-1732)
+			s.url = cacheURL + uncached;
+
+		// Change '%20' to '+' if this is encoded form body content (gh-2658)
+		} else if ( s.data && s.processData &&
+			( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) {
+			s.data = s.data.replace( r20, "+" );
+		}
+
+		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+		if ( s.ifModified ) {
+			if ( jQuery.lastModified[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
+			}
+			if ( jQuery.etag[ cacheURL ] ) {
+				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
+			}
+		}
+
+		// Set the correct header, if data is being sent
+		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+			jqXHR.setRequestHeader( "Content-Type", s.contentType );
+		}
+
+		// Set the Accepts header for the server, depending on the dataType
+		jqXHR.setRequestHeader(
+			"Accept",
+			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?
+				s.accepts[ s.dataTypes[ 0 ] ] +
+					( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+				s.accepts[ "*" ]
+		);
+
+		// Check for headers option
+		for ( i in s.headers ) {
+			jqXHR.setRequestHeader( i, s.headers[ i ] );
+		}
+
+		// Allow custom headers/mimetypes and early abort
+		if ( s.beforeSend &&
+			( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {
+
+			// Abort if not done already and return
+			return jqXHR.abort();
+		}
+
+		// Aborting is no longer a cancellation
+		strAbort = "abort";
+
+		// Install callbacks on deferreds
+		completeDeferred.add( s.complete );
+		jqXHR.done( s.success );
+		jqXHR.fail( s.error );
+
+		// Get transport
+		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+		// If no transport, we auto-abort
+		if ( !transport ) {
+			done( -1, "No Transport" );
+		} else {
+			jqXHR.readyState = 1;
+
+			// Send global event
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+			}
+
+			// If request was aborted inside ajaxSend, stop there
+			if ( completed ) {
+				return jqXHR;
+			}
+
+			// Timeout
+			if ( s.async && s.timeout > 0 ) {
+				timeoutTimer = window.setTimeout( function() {
+					jqXHR.abort( "timeout" );
+				}, s.timeout );
+			}
+
+			try {
+				completed = false;
+				transport.send( requestHeaders, done );
+			} catch ( e ) {
+
+				// Rethrow post-completion exceptions
+				if ( completed ) {
+					throw e;
+				}
+
+				// Propagate others as results
+				done( -1, e );
+			}
+		}
+
+		// Callback for when everything is done
+		function done( status, nativeStatusText, responses, headers ) {
+			var isSuccess, success, error, response, modified,
+				statusText = nativeStatusText;
+
+			// Ignore repeat invocations
+			if ( completed ) {
+				return;
+			}
+
+			completed = true;
+
+			// Clear timeout if it exists
+			if ( timeoutTimer ) {
+				window.clearTimeout( timeoutTimer );
+			}
+
+			// Dereference transport for early garbage collection
+			// (no matter how long the jqXHR object will be used)
+			transport = undefined;
+
+			// Cache response headers
+			responseHeadersString = headers || "";
+
+			// Set readyState
+			jqXHR.readyState = status > 0 ? 4 : 0;
+
+			// Determine if successful
+			isSuccess = status >= 200 && status < 300 || status === 304;
+
+			// Get response data
+			if ( responses ) {
+				response = ajaxHandleResponses( s, jqXHR, responses );
+			}
+
+			// Convert no matter what (that way responseXXX fields are always set)
+			response = ajaxConvert( s, response, jqXHR, isSuccess );
+
+			// If successful, handle type chaining
+			if ( isSuccess ) {
+
+				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+				if ( s.ifModified ) {
+					modified = jqXHR.getResponseHeader( "Last-Modified" );
+					if ( modified ) {
+						jQuery.lastModified[ cacheURL ] = modified;
+					}
+					modified = jqXHR.getResponseHeader( "etag" );
+					if ( modified ) {
+						jQuery.etag[ cacheURL ] = modified;
+					}
+				}
+
+				// if no content
+				if ( status === 204 || s.type === "HEAD" ) {
+					statusText = "nocontent";
+
+				// if not modified
+				} else if ( status === 304 ) {
+					statusText = "notmodified";
+
+				// If we have data, let's convert it
+				} else {
+					statusText = response.state;
+					success = response.data;
+					error = response.error;
+					isSuccess = !error;
+				}
+			} else {
+
+				// Extract error from statusText and normalize for non-aborts
+				error = statusText;
+				if ( status || !statusText ) {
+					statusText = "error";
+					if ( status < 0 ) {
+						status = 0;
+					}
+				}
+			}
+
+			// Set data for the fake xhr object
+			jqXHR.status = status;
+			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
+
+			// Success/Error
+			if ( isSuccess ) {
+				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+			} else {
+				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
+			}
+
+			// Status-dependent callbacks
+			jqXHR.statusCode( statusCode );
+			statusCode = undefined;
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
+					[ jqXHR, s, isSuccess ? success : error ] );
+			}
+
+			// Complete
+			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
+
+			if ( fireGlobals ) {
+				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+
+				// Handle the global AJAX counter
+				if ( !( --jQuery.active ) ) {
+					jQuery.event.trigger( "ajaxStop" );
+				}
+			}
+		}
+
+		return jqXHR;
+	},
+
+	getJSON: function( url, data, callback ) {
+		return jQuery.get( url, data, callback, "json" );
+	},
+
+	getScript: function( url, callback ) {
+		return jQuery.get( url, undefined, callback, "script" );
+	}
+} );
+
+jQuery.each( [ "get", "post" ], function( i, method ) {
+	jQuery[ method ] = function( url, data, callback, type ) {
+
+		// Shift arguments if data argument was omitted
+		if ( isFunction( data ) ) {
+			type = type || callback;
+			callback = data;
+			data = undefined;
+		}
+
+		// The url can be an options object (which then must have .url)
+		return jQuery.ajax( jQuery.extend( {
+			url: url,
+			type: method,
+			dataType: type,
+			data: data,
+			success: callback
+		}, jQuery.isPlainObject( url ) && url ) );
+	};
+} );
+
+
+jQuery._evalUrl = function( url ) {
+	return jQuery.ajax( {
+		url: url,
+
+		// Make this explicit, since user can override this through ajaxSetup (#11264)
+		type: "GET",
+		dataType: "script",
+		cache: true,
+		async: false,
+		global: false,
+		"throws": true
+	} );
+};
+
+
+jQuery.fn.extend( {
+	wrapAll: function( html ) {
+		var wrap;
+
+		if ( this[ 0 ] ) {
+			if ( isFunction( html ) ) {
+				html = html.call( this[ 0 ] );
+			}
+
+			// The elements to wrap the target around
+			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
+
+			if ( this[ 0 ].parentNode ) {
+				wrap.insertBefore( this[ 0 ] );
+			}
+
+			wrap.map( function() {
+				var elem = this;
+
+				while ( elem.firstElementChild ) {
+					elem = elem.firstElementChild;
+				}
+
+				return elem;
+			} ).append( this );
+		}
+
+		return this;
+	},
+
+	wrapInner: function( html ) {
+		if ( isFunction( html ) ) {
+			return this.each( function( i ) {
+				jQuery( this ).wrapInner( html.call( this, i ) );
+			} );
+		}
+
+		return this.each( function() {
+			var self = jQuery( this ),
+				contents = self.contents();
+
+			if ( contents.length ) {
+				contents.wrapAll( html );
+
+			} else {
+				self.append( html );
+			}
+		} );
+	},
+
+	wrap: function( html ) {
+		var htmlIsFunction = isFunction( html );
+
+		return this.each( function( i ) {
+			jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );
+		} );
+	},
+
+	unwrap: function( selector ) {
+		this.parent( selector ).not( "body" ).each( function() {
+			jQuery( this ).replaceWith( this.childNodes );
+		} );
+		return this;
+	}
+} );
+
+
+jQuery.expr.pseudos.hidden = function( elem ) {
+	return !jQuery.expr.pseudos.visible( elem );
+};
+jQuery.expr.pseudos.visible = function( elem ) {
+	return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );
+};
+
+
+
+
+jQuery.ajaxSettings.xhr = function() {
+	try {
+		return new window.XMLHttpRequest();
+	} catch ( e ) {}
+};
+
+var xhrSuccessStatus = {
+
+		// File protocol always yields status code 0, assume 200
+		0: 200,
+
+		// Support: IE <=9 only
+		// #1450: sometimes IE returns 1223 when it should be 204
+		1223: 204
+	},
+	xhrSupported = jQuery.ajaxSettings.xhr();
+
+support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
+support.ajax = xhrSupported = !!xhrSupported;
+
+jQuery.ajaxTransport( function( options ) {
+	var callback, errorCallback;
+
+	// Cross domain only allowed if supported through XMLHttpRequest
+	if ( support.cors || xhrSupported && !options.crossDomain ) {
+		return {
+			send: function( headers, complete ) {
+				var i,
+					xhr = options.xhr();
+
+				xhr.open(
+					options.type,
+					options.url,
+					options.async,
+					options.username,
+					options.password
+				);
+
+				// Apply custom fields if provided
+				if ( options.xhrFields ) {
+					for ( i in options.xhrFields ) {
+						xhr[ i ] = options.xhrFields[ i ];
+					}
+				}
+
+				// Override mime type if needed
+				if ( options.mimeType && xhr.overrideMimeType ) {
+					xhr.overrideMimeType( options.mimeType );
+				}
+
+				// X-Requested-With header
+				// For cross-domain requests, seeing as conditions for a preflight are
+				// akin to a jigsaw puzzle, we simply never set it to be sure.
+				// (it can always be set on a per-request basis or even using ajaxSetup)
+				// For same-domain requests, won't change header if already provided.
+				if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) {
+					headers[ "X-Requested-With" ] = "XMLHttpRequest";
+				}
+
+				// Set headers
+				for ( i in headers ) {
+					xhr.setRequestHeader( i, headers[ i ] );
+				}
+
+				// Callback
+				callback = function( type ) {
+					return function() {
+						if ( callback ) {
+							callback = errorCallback = xhr.onload =
+								xhr.onerror = xhr.onabort = xhr.ontimeout =
+									xhr.onreadystatechange = null;
+
+							if ( type === "abort" ) {
+								xhr.abort();
+							} else if ( type === "error" ) {
+
+								// Support: IE <=9 only
+								// On a manual native abort, IE9 throws
+								// errors on any property access that is not readyState
+								if ( typeof xhr.status !== "number" ) {
+									complete( 0, "error" );
+								} else {
+									complete(
+
+										// File: protocol always yields status 0; see #8605, #14207
+										xhr.status,
+										xhr.statusText
+									);
+								}
+							} else {
+								complete(
+									xhrSuccessStatus[ xhr.status ] || xhr.status,
+									xhr.statusText,
+
+									// Support: IE <=9 only
+									// IE9 has no XHR2 but throws on binary (trac-11426)
+									// For XHR2 non-text, let the caller handle it (gh-2498)
+									( xhr.responseType || "text" ) !== "text"  ||
+									typeof xhr.responseText !== "string" ?
+										{ binary: xhr.response } :
+										{ text: xhr.responseText },
+									xhr.getAllResponseHeaders()
+								);
+							}
+						}
+					};
+				};
+
+				// Listen to events
+				xhr.onload = callback();
+				errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" );
+
+				// Support: IE 9 only
+				// Use onreadystatechange to replace onabort
+				// to handle uncaught aborts
+				if ( xhr.onabort !== undefined ) {
+					xhr.onabort = errorCallback;
+				} else {
+					xhr.onreadystatechange = function() {
+
+						// Check readyState before timeout as it changes
+						if ( xhr.readyState === 4 ) {
+
+							// Allow onerror to be called first,
+							// but that will not handle a native abort
+							// Also, save errorCallback to a variable
+							// as xhr.onerror cannot be accessed
+							window.setTimeout( function() {
+								if ( callback ) {
+									errorCallback();
+								}
+							} );
+						}
+					};
+				}
+
+				// Create the abort callback
+				callback = callback( "abort" );
+
+				try {
+
+					// Do send the request (this may raise an exception)
+					xhr.send( options.hasContent && options.data || null );
+				} catch ( e ) {
+
+					// #14683: Only rethrow if this hasn't been notified as an error yet
+					if ( callback ) {
+						throw e;
+					}
+				}
+			},
+
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+} );
+
+
+
+
+// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)
+jQuery.ajaxPrefilter( function( s ) {
+	if ( s.crossDomain ) {
+		s.contents.script = false;
+	}
+} );
+
+// Install script dataType
+jQuery.ajaxSetup( {
+	accepts: {
+		script: "text/javascript, application/javascript, " +
+			"application/ecmascript, application/x-ecmascript"
+	},
+	contents: {
+		script: /\b(?:java|ecma)script\b/
+	},
+	converters: {
+		"text script": function( text ) {
+			jQuery.globalEval( text );
+			return text;
+		}
+	}
+} );
+
+// Handle cache's special case and crossDomain
+jQuery.ajaxPrefilter( "script", function( s ) {
+	if ( s.cache === undefined ) {
+		s.cache = false;
+	}
+	if ( s.crossDomain ) {
+		s.type = "GET";
+	}
+} );
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function( s ) {
+
+	// This transport only deals with cross domain requests
+	if ( s.crossDomain ) {
+		var script, callback;
+		return {
+			send: function( _, complete ) {
+				script = jQuery( "<script>" ).prop( {
+					charset: s.scriptCharset,
+					src: s.url
+				} ).on(
+					"load error",
+					callback = function( evt ) {
+						script.remove();
+						callback = null;
+						if ( evt ) {
+							complete( evt.type === "error" ? 404 : 200, evt.type );
+						}
+					}
+				);
+
+				// Use native DOM manipulation to avoid our domManip AJAX trickery
+				document.head.appendChild( script[ 0 ] );
+			},
+			abort: function() {
+				if ( callback ) {
+					callback();
+				}
+			}
+		};
+	}
+} );
+
+
+
+
+var oldCallbacks = [],
+	rjsonp = /(=)\?(?=&|$)|\?\?/;
+
+// Default jsonp settings
+jQuery.ajaxSetup( {
+	jsonp: "callback",
+	jsonpCallback: function() {
+		var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce++ ) );
+		this[ callback ] = true;
+		return callback;
+	}
+} );
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+	var callbackName, overwritten, responseContainer,
+		jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ?
+			"url" :
+			typeof s.data === "string" &&
+				( s.contentType || "" )
+					.indexOf( "application/x-www-form-urlencoded" ) === 0 &&
+				rjsonp.test( s.data ) && "data"
+		);
+
+	// Handle iff the expected data type is "jsonp" or we have a parameter to set
+	if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) {
+
+		// Get callback name, remembering preexisting value associated with it
+		callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ?
+			s.jsonpCallback() :
+			s.jsonpCallback;
+
+		// Insert callback into url or form data
+		if ( jsonProp ) {
+			s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName );
+		} else if ( s.jsonp !== false ) {
+			s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName;
+		}
+
+		// Use data converter to retrieve json after script execution
+		s.converters[ "script json" ] = function() {
+			if ( !responseContainer ) {
+				jQuery.error( callbackName + " was not called" );
+			}
+			return responseContainer[ 0 ];
+		};
+
+		// Force json dataType
+		s.dataTypes[ 0 ] = "json";
+
+		// Install callback
+		overwritten = window[ callbackName ];
+		window[ callbackName ] = function() {
+			responseContainer = arguments;
+		};
+
+		// Clean-up function (fires after converters)
+		jqXHR.always( function() {
+
+			// If previous value didn't exist - remove it
+			if ( overwritten === undefined ) {
+				jQuery( window ).removeProp( callbackName );
+
+			// Otherwise restore preexisting value
+			} else {
+				window[ callbackName ] = overwritten;
+			}
+
+			// Save back as free
+			if ( s[ callbackName ] ) {
+
+				// Make sure that re-using the options doesn't screw things around
+				s.jsonpCallback = originalSettings.jsonpCallback;
+
+				// Save the callback name for future use
+				oldCallbacks.push( callbackName );
+			}
+
+			// Call if it was a function and we have a response
+			if ( responseContainer && isFunction( overwritten ) ) {
+				overwritten( responseContainer[ 0 ] );
+			}
+
+			responseContainer = overwritten = undefined;
+		} );
+
+		// Delegate to script
+		return "script";
+	}
+} );
+
+
+
+
+// Support: Safari 8 only
+// In Safari 8 documents created via document.implementation.createHTMLDocument
+// collapse sibling forms: the second one becomes a child of the first one.
+// Because of that, this security measure has to be disabled in Safari 8.
+// https://bugs.webkit.org/show_bug.cgi?id=137337
+support.createHTMLDocument = ( function() {
+	var body = document.implementation.createHTMLDocument( "" ).body;
+	body.innerHTML = "<form></form><form></form>";
+	return body.childNodes.length === 2;
+} )();
+
+
+// Argument "data" should be string of html
+// context (optional): If specified, the fragment will be created in this context,
+// defaults to document
+// keepScripts (optional): If true, will include scripts passed in the html string
+jQuery.parseHTML = function( data, context, keepScripts ) {
+	if ( typeof data !== "string" ) {
+		return [];
+	}
+	if ( typeof context === "boolean" ) {
+		keepScripts = context;
+		context = false;
+	}
+
+	var base, parsed, scripts;
+
+	if ( !context ) {
+
+		// Stop scripts or inline event handlers from being executed immediately
+		// by using document.implementation
+		if ( support.createHTMLDocument ) {
+			context = document.implementation.createHTMLDocument( "" );
+
+			// Set the base href for the created document
+			// so any parsed elements with URLs
+			// are based on the document's URL (gh-2965)
+			base = context.createElement( "base" );
+			base.href = document.location.href;
+			context.head.appendChild( base );
+		} else {
+			context = document;
+		}
+	}
+
+	parsed = rsingleTag.exec( data );
+	scripts = !keepScripts && [];
+
+	// Single tag
+	if ( parsed ) {
+		return [ context.createElement( parsed[ 1 ] ) ];
+	}
+
+	parsed = buildFragment( [ data ], context, scripts );
+
+	if ( scripts && scripts.length ) {
+		jQuery( scripts ).remove();
+	}
+
+	return jQuery.merge( [], parsed.childNodes );
+};
+
+
+/**
+ * Load a url into a page
+ */
+jQuery.fn.load = function( url, params, callback ) {
+	var selector, type, response,
+		self = this,
+		off = url.indexOf( " " );
+
+	if ( off > -1 ) {
+		selector = stripAndCollapse( url.slice( off ) );
+		url = url.slice( 0, off );
+	}
+
+	// If it's a function
+	if ( isFunction( params ) ) {
+
+		// We assume that it's the callback
+		callback = params;
+		params = undefined;
+
+	// Otherwise, build a param string
+	} else if ( params && typeof params === "object" ) {
+		type = "POST";
+	}
+
+	// If we have elements to modify, make the request
+	if ( self.length > 0 ) {
+		jQuery.ajax( {
+			url: url,
+
+			// If "type" variable is undefined, then "GET" method will be used.
+			// Make value of this field explicit since
+			// user can override it through ajaxSetup method
+			type: type || "GET",
+			dataType: "html",
+			data: params
+		} ).done( function( responseText ) {
+
+			// Save response for use in complete callback
+			response = arguments;
+
+			self.html( selector ?
+
+				// If a selector was specified, locate the right elements in a dummy div
+				// Exclude scripts to avoid IE 'Permission Denied' errors
+				jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) :
+
+				// Otherwise use the full result
+				responseText );
+
+		// If the request succeeds, this function gets "data", "status", "jqXHR"
+		// but they are ignored because response was set above.
+		// If it fails, this function gets "jqXHR", "status", "error"
+		} ).always( callback && function( jqXHR, status ) {
+			self.each( function() {
+				callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] );
+			} );
+		} );
+	}
+
+	return this;
+};
+
+
+
+
+// Attach a bunch of functions for handling common AJAX events
+jQuery.each( [
+	"ajaxStart",
+	"ajaxStop",
+	"ajaxComplete",
+	"ajaxError",
+	"ajaxSuccess",
+	"ajaxSend"
+], function( i, type ) {
+	jQuery.fn[ type ] = function( fn ) {
+		return this.on( type, fn );
+	};
+} );
+
+
+
+
+jQuery.expr.pseudos.animated = function( elem ) {
+	return jQuery.grep( jQuery.timers, function( fn ) {
+		return elem === fn.elem;
+	} ).length;
+};
+
+
+
+
+jQuery.offset = {
+	setOffset: function( elem, options, i ) {
+		var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition,
+			position = jQuery.css( elem, "position" ),
+			curElem = jQuery( elem ),
+			props = {};
+
+		// Set position first, in-case top/left are set even on static elem
+		if ( position === "static" ) {
+			elem.style.position = "relative";
+		}
+
+		curOffset = curElem.offset();
+		curCSSTop = jQuery.css( elem, "top" );
+		curCSSLeft = jQuery.css( elem, "left" );
+		calculatePosition = ( position === "absolute" || position === "fixed" ) &&
+			( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1;
+
+		// Need to be able to calculate position if either
+		// top or left is auto and position is either absolute or fixed
+		if ( calculatePosition ) {
+			curPosition = curElem.position();
+			curTop = curPosition.top;
+			curLeft = curPosition.left;
+
+		} else {
+			curTop = parseFloat( curCSSTop ) || 0;
+			curLeft = parseFloat( curCSSLeft ) || 0;
+		}
+
+		if ( isFunction( options ) ) {
+
+			// Use jQuery.extend here to allow modification of coordinates argument (gh-1848)
+			options = options.call( elem, i, jQuery.extend( {}, curOffset ) );
+		}
+
+		if ( options.top != null ) {
+			props.top = ( options.top - curOffset.top ) + curTop;
+		}
+		if ( options.left != null ) {
+			props.left = ( options.left - curOffset.left ) + curLeft;
+		}
+
+		if ( "using" in options ) {
+			options.using.call( elem, props );
+
+		} else {
+			curElem.css( props );
+		}
+	}
+};
+
+jQuery.fn.extend( {
+
+	// offset() relates an element's border box to the document origin
+	offset: function( options ) {
+
+		// Preserve chaining for setter
+		if ( arguments.length ) {
+			return options === undefined ?
+				this :
+				this.each( function( i ) {
+					jQuery.offset.setOffset( this, options, i );
+				} );
+		}
+
+		var rect, win,
+			elem = this[ 0 ];
+
+		if ( !elem ) {
+			return;
+		}
+
+		// Return zeros for disconnected and hidden (display: none) elements (gh-2310)
+		// Support: IE <=11 only
+		// Running getBoundingClientRect on a
+		// disconnected node in IE throws an error
+		if ( !elem.getClientRects().length ) {
+			return { top: 0, left: 0 };
+		}
+
+		// Get document-relative position by adding viewport scroll to viewport-relative gBCR
+		rect = elem.getBoundingClientRect();
+		win = elem.ownerDocument.defaultView;
+		return {
+			top: rect.top + win.pageYOffset,
+			left: rect.left + win.pageXOffset
+		};
+	},
+
+	// position() relates an element's margin box to its offset parent's padding box
+	// This corresponds to the behavior of CSS absolute positioning
+	position: function() {
+		if ( !this[ 0 ] ) {
+			return;
+		}
+
+		var offsetParent, offset, doc,
+			elem = this[ 0 ],
+			parentOffset = { top: 0, left: 0 };
+
+		// position:fixed elements are offset from the viewport, which itself always has zero offset
+		if ( jQuery.css( elem, "position" ) === "fixed" ) {
+
+			// Assume position:fixed implies availability of getBoundingClientRect
+			offset = elem.getBoundingClientRect();
+
+		} else {
+			offset = this.offset();
+
+			// Account for the *real* offset parent, which can be the document or its root element
+			// when a statically positioned element is identified
+			doc = elem.ownerDocument;
+			offsetParent = elem.offsetParent || doc.documentElement;
+			while ( offsetParent &&
+				( offsetParent === doc.body || offsetParent === doc.documentElement ) &&
+				jQuery.css( offsetParent, "position" ) === "static" ) {
+
+				offsetParent = offsetParent.parentNode;
+			}
+			if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) {
+
+				// Incorporate borders into its offset, since they are outside its content origin
+				parentOffset = jQuery( offsetParent ).offset();
+				parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true );
+				parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true );
+			}
+		}
+
+		// Subtract parent offsets and element margins
+		return {
+			top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ),
+			left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true )
+		};
+	},
+
+	// This method will return documentElement in the following cases:
+	// 1) For the element inside the iframe without offsetParent, this method will return
+	//    documentElement of the parent window
+	// 2) For the hidden or detached element
+	// 3) For body or html element, i.e. in case of the html node - it will return itself
+	//
+	// but those exceptions were never presented as a real life use-cases
+	// and might be considered as more preferable results.
+	//
+	// This logic, however, is not guaranteed and can change at any point in the future
+	offsetParent: function() {
+		return this.map( function() {
+			var offsetParent = this.offsetParent;
+
+			while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) {
+				offsetParent = offsetParent.offsetParent;
+			}
+
+			return offsetParent || documentElement;
+		} );
+	}
+} );
+
+// Create scrollLeft and scrollTop methods
+jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) {
+	var top = "pageYOffset" === prop;
+
+	jQuery.fn[ method ] = function( val ) {
+		return access( this, function( elem, method, val ) {
+
+			// Coalesce documents and windows
+			var win;
+			if ( isWindow( elem ) ) {
+				win = elem;
+			} else if ( elem.nodeType === 9 ) {
+				win = elem.defaultView;
+			}
+
+			if ( val === undefined ) {
+				return win ? win[ prop ] : elem[ method ];
+			}
+
+			if ( win ) {
+				win.scrollTo(
+					!top ? val : win.pageXOffset,
+					top ? val : win.pageYOffset
+				);
+
+			} else {
+				elem[ method ] = val;
+			}
+		}, method, val, arguments.length );
+	};
+} );
+
+// Support: Safari <=7 - 9.1, Chrome <=37 - 49
+// Add the top/left cssHooks using jQuery.fn.position
+// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084
+// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347
+// getComputedStyle returns percent when specified for top/left/bottom/right;
+// rather than make the css module depend on the offset module, just check for it here
+jQuery.each( [ "top", "left" ], function( i, prop ) {
+	jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition,
+		function( elem, computed ) {
+			if ( computed ) {
+				computed = curCSS( elem, prop );
+
+				// If curCSS returns percentage, fallback to offset
+				return rnumnonpx.test( computed ) ?
+					jQuery( elem ).position()[ prop ] + "px" :
+					computed;
+			}
+		}
+	);
+} );
+
+
+// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods
+jQuery.each( { Height: "height", Width: "width" }, function( name, type ) {
+	jQuery.each( { padding: "inner" + name, content: type, "": "outer" + name },
+		function( defaultExtra, funcName ) {
+
+		// Margin is only for outerHeight, outerWidth
+		jQuery.fn[ funcName ] = function( margin, value ) {
+			var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ),
+				extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" );
+
+			return access( this, function( elem, type, value ) {
+				var doc;
+
+				if ( isWindow( elem ) ) {
+
+					// $( window ).outerWidth/Height return w/h including scrollbars (gh-1729)
+					return funcName.indexOf( "outer" ) === 0 ?
+						elem[ "inner" + name ] :
+						elem.document.documentElement[ "client" + name ];
+				}
+
+				// Get document width or height
+				if ( elem.nodeType === 9 ) {
+					doc = elem.documentElement;
+
+					// Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height],
+					// whichever is greatest
+					return Math.max(
+						elem.body[ "scroll" + name ], doc[ "scroll" + name ],
+						elem.body[ "offset" + name ], doc[ "offset" + name ],
+						doc[ "client" + name ]
+					);
+				}
+
+				return value === undefined ?
+
+					// Get width or height on the element, requesting but not forcing parseFloat
+					jQuery.css( elem, type, extra ) :
+
+					// Set width or height on the element
+					jQuery.style( elem, type, value, extra );
+			}, type, chainable ? margin : undefined, chainable );
+		};
+	} );
+} );
+
+
+jQuery.each( ( "blur focus focusin focusout resize scroll click dblclick " +
+	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
+	"change select submit keydown keypress keyup contextmenu" ).split( " " ),
+	function( i, name ) {
+
+	// Handle event binding
+	jQuery.fn[ name ] = function( data, fn ) {
+		return arguments.length > 0 ?
+			this.on( name, null, data, fn ) :
+			this.trigger( name );
+	};
+} );
+
+jQuery.fn.extend( {
+	hover: function( fnOver, fnOut ) {
+		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
+	}
+} );
+
+
+
+
+jQuery.fn.extend( {
+
+	bind: function( types, data, fn ) {
+		return this.on( types, null, data, fn );
+	},
+	unbind: function( types, fn ) {
+		return this.off( types, null, fn );
+	},
+
+	delegate: function( selector, types, data, fn ) {
+		return this.on( types, selector, data, fn );
+	},
+	undelegate: function( selector, types, fn ) {
+
+		// ( namespace ) or ( selector, types [, fn] )
+		return arguments.length === 1 ?
+			this.off( selector, "**" ) :
+			this.off( types, selector || "**", fn );
+	}
+} );
+
+// Bind a function to a context, optionally partially applying any
+// arguments.
+// jQuery.proxy is deprecated to promote standards (specifically Function#bind)
+// However, it is not slated for removal any time soon
+jQuery.proxy = function( fn, context ) {
+	var tmp, args, proxy;
+
+	if ( typeof context === "string" ) {
+		tmp = fn[ context ];
+		context = fn;
+		fn = tmp;
+	}
+
+	// Quick check to determine if target is callable, in the spec
+	// this throws a TypeError, but we will just return undefined.
+	if ( !isFunction( fn ) ) {
+		return undefined;
+	}
+
+	// Simulated bind
+	args = slice.call( arguments, 2 );
+	proxy = function() {
+		return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
+	};
+
+	// Set the guid of unique handler to the same of original handler, so it can be removed
+	proxy.guid = fn.guid = fn.guid || jQuery.guid++;
+
+	return proxy;
+};
+
+jQuery.holdReady = function( hold ) {
+	if ( hold ) {
+		jQuery.readyWait++;
+	} else {
+		jQuery.ready( true );
+	}
+};
+jQuery.isArray = Array.isArray;
+jQuery.parseJSON = JSON.parse;
+jQuery.nodeName = nodeName;
+jQuery.isFunction = isFunction;
+jQuery.isWindow = isWindow;
+jQuery.camelCase = camelCase;
+jQuery.type = toType;
+
+jQuery.now = Date.now;
+
+jQuery.isNumeric = function( obj ) {
+
+	// As of jQuery 3.0, isNumeric is limited to
+	// strings and numbers (primitives or objects)
+	// that can be coerced to finite numbers (gh-2662)
+	var type = jQuery.type( obj );
+	return ( type === "number" || type === "string" ) &&
+
+		// parseFloat NaNs numeric-cast false positives ("")
+		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
+		// subtraction forces infinities to NaN
+		!isNaN( obj - parseFloat( obj ) );
+};
+
+
+
+
+// Register as a named AMD module, since jQuery can be concatenated with other
+// files that may use define, but not via a proper concatenation script that
+// understands anonymous AMD modules. A named AMD is safest and most robust
+// way to register. Lowercase jquery is used because AMD module names are
+// derived from file names, and jQuery is normally delivered in a lowercase
+// file name. Do this after creating the global so that if an AMD module wants
+// to call noConflict to hide this version of jQuery, it will work.
+
+// Note that for maximum portability, libraries that are not jQuery should
+// declare themselves as anonymous modules, and avoid setting a global if an
+// AMD loader is present. jQuery is a special case. For more information, see
+// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon
+
+if ( typeof define === "function" && define.amd ) {
+	define( "jquery", [], function() {
+		return jQuery;
+	} );
+}
+
+
+
+
+var
+
+	// Map over jQuery in case of overwrite
+	_jQuery = window.jQuery,
+
+	// Map over the $ in case of overwrite
+	_$ = window.$;
+
+jQuery.noConflict = function( deep ) {
+	if ( window.$ === jQuery ) {
+		window.$ = _$;
+	}
+
+	if ( deep && window.jQuery === jQuery ) {
+		window.jQuery = _jQuery;
+	}
+
+	return jQuery;
+};
+
+// Expose jQuery and $ identifiers, even in AMD
+// (#7102#comment:10, https://github.com/jquery/jquery/pull/557)
+// and CommonJS for browser emulators (#13566)
+if ( !noGlobal ) {
+	window.jQuery = window.$ = jQuery;
+}
+
+
+
+
+return jQuery;
+} );
+(function($, undefined) {
+
+/**
+ * Unobtrusive scripting adapter for jQuery
+ * https://github.com/rails/jquery-ujs
+ *
+ * Requires jQuery 1.8.0 or later.
+ *
+ * Released under the MIT license
+ *
+ */
+
+  // Cut down on the number of issues from people inadvertently including jquery_ujs twice
+  // by detecting and raising an error when it happens.
+  'use strict';
+
+  if ( $.rails !== undefined ) {
+    $.error('jquery-ujs has already been loaded!');
+  }
+
+  // Shorthand to make it a little easier to call public rails functions from within rails.js
+  var rails;
+  var $document = $(document);
+
+  $.rails = rails = {
+    // Link elements bound by jquery-ujs
+    linkClickSelector: 'a[data-confirm], a[data-method], a[data-remote]:not([disabled]), a[data-disable-with], a[data-disable]',
+
+    // Button elements bound by jquery-ujs
+    buttonClickSelector: 'button[data-remote]:not([form]):not(form button), button[data-confirm]:not([form]):not(form button)',
+
+    // Select elements bound by jquery-ujs
+    inputChangeSelector: 'select[data-remote], input[data-remote], textarea[data-remote]',
+
+    // Form elements bound by jquery-ujs
+    formSubmitSelector: 'form',
+
+    // Form input elements bound by jquery-ujs
+    formInputClickSelector: 'form input[type=submit], form input[type=image], form button[type=submit], form button:not([type]), input[type=submit][form], input[type=image][form], button[type=submit][form], button[form]:not([type])',
+
+    // Form input elements disabled during form submission
+    disableSelector: 'input[data-disable-with]:enabled, button[data-disable-with]:enabled, textarea[data-disable-with]:enabled, input[data-disable]:enabled, button[data-disable]:enabled, textarea[data-disable]:enabled',
+
+    // Form input elements re-enabled after form submission
+    enableSelector: 'input[data-disable-with]:disabled, button[data-disable-with]:disabled, textarea[data-disable-with]:disabled, input[data-disable]:disabled, button[data-disable]:disabled, textarea[data-disable]:disabled',
+
+    // Form required input elements
+    requiredInputSelector: 'input[name][required]:not([disabled]), textarea[name][required]:not([disabled])',
+
+    // Form file input elements
+    fileInputSelector: 'input[name][type=file]:not([disabled])',
+
+    // Link onClick disable selector with possible reenable after remote submission
+    linkDisableSelector: 'a[data-disable-with], a[data-disable]',
+
+    // Button onClick disable selector with possible reenable after remote submission
+    buttonDisableSelector: 'button[data-remote][data-disable-with], button[data-remote][data-disable]',
+
+    // Up-to-date Cross-Site Request Forgery token
+    csrfToken: function() {
+     return $('meta[name=csrf-token]').attr('content');
+    },
+
+    // URL param that must contain the CSRF token
+    csrfParam: function() {
+     return $('meta[name=csrf-param]').attr('content');
+    },
+
+    // Make sure that every Ajax request sends the CSRF token
+    CSRFProtection: function(xhr) {
+      var token = rails.csrfToken();
+      if (token) xhr.setRequestHeader('X-CSRF-Token', token);
+    },
+
+    // Make sure that all forms have actual up-to-date tokens (cached forms contain old ones)
+    refreshCSRFTokens: function(){
+      $('form input[name="' + rails.csrfParam() + '"]').val(rails.csrfToken());
+    },
+
+    // Triggers an event on an element and returns false if the event result is false
+    fire: function(obj, name, data) {
+      var event = $.Event(name);
+      obj.trigger(event, data);
+      return event.result !== false;
+    },
+
+    // Default confirm dialog, may be overridden with custom confirm dialog in $.rails.confirm
+    confirm: function(message) {
+      return confirm(message);
+    },
+
+    // Default ajax function, may be overridden with custom function in $.rails.ajax
+    ajax: function(options) {
+      return $.ajax(options);
+    },
+
+    // Default way to get an element's href. May be overridden at $.rails.href.
+    href: function(element) {
+      return element[0].href;
+    },
+
+    // Checks "data-remote" if true to handle the request through a XHR request.
+    isRemote: function(element) {
+      return element.data('remote') !== undefined && element.data('remote') !== false;
+    },
+
+    // Submits "remote" forms and links with ajax
+    handleRemote: function(element) {
+      var method, url, data, withCredentials, dataType, options;
+
+      if (rails.fire(element, 'ajax:before')) {
+        withCredentials = element.data('with-credentials') || null;
+        dataType = element.data('type') || ($.ajaxSettings && $.ajaxSettings.dataType);
+
+        if (element.is('form')) {
+          method = element.data('ujs:submit-button-formmethod') || element.attr('method');
+          url = element.data('ujs:submit-button-formaction') || element.attr('action');
+          data = $(element[0]).serializeArray();
+          // memoized value from clicked submit button
+          var button = element.data('ujs:submit-button');
+          if (button) {
+            data.push(button);
+            element.data('ujs:submit-button', null);
+          }
+          element.data('ujs:submit-button-formmethod', null);
+          element.data('ujs:submit-button-formaction', null);
+        } else if (element.is(rails.inputChangeSelector)) {
+          method = element.data('method');
+          url = element.data('url');
+          data = element.serialize();
+          if (element.data('params')) data = data + '&' + element.data('params');
+        } else if (element.is(rails.buttonClickSelector)) {
+          method = element.data('method') || 'get';
+          url = element.data('url');
+          data = element.serialize();
+          if (element.data('params')) data = data + '&' + element.data('params');
+        } else {
+          method = element.data('method');
+          url = rails.href(element);
+          data = element.data('params') || null;
+        }
+
+        options = {
+          type: method || 'GET', data: data, dataType: dataType,
+          // stopping the "ajax:beforeSend" event will cancel the ajax request
+          beforeSend: function(xhr, settings) {
+            if (settings.dataType === undefined) {
+              xhr.setRequestHeader('accept', '*/*;q=0.5, ' + settings.accepts.script);
+            }
+            if (rails.fire(element, 'ajax:beforeSend', [xhr, settings])) {
+              element.trigger('ajax:send', xhr);
+            } else {
+              return false;
+            }
+          },
+          success: function(data, status, xhr) {
+            element.trigger('ajax:success', [data, status, xhr]);
+          },
+          complete: function(xhr, status) {
+            element.trigger('ajax:complete', [xhr, status]);
+          },
+          error: function(xhr, status, error) {
+            element.trigger('ajax:error', [xhr, status, error]);
+          },
+          crossDomain: rails.isCrossDomain(url)
+        };
+
+        // There is no withCredentials for IE6-8 when
+        // "Enable native XMLHTTP support" is disabled
+        if (withCredentials) {
+          options.xhrFields = {
+            withCredentials: withCredentials
+          };
+        }
+
+        // Only pass url to `ajax` options if not blank
+        if (url) { options.url = url; }
+
+        return rails.ajax(options);
+      } else {
+        return false;
+      }
+    },
+
+    // Determines if the request is a cross domain request.
+    isCrossDomain: function(url) {
+      var originAnchor = document.createElement('a');
+      originAnchor.href = location.href;
+      var urlAnchor = document.createElement('a');
+
+      try {
+        urlAnchor.href = url;
+        // This is a workaround to a IE bug.
+        urlAnchor.href = urlAnchor.href;
+
+        // If URL protocol is false or is a string containing a single colon
+        // *and* host are false, assume it is not a cross-domain request
+        // (should only be the case for IE7 and IE compatibility mode).
+        // Otherwise, evaluate protocol and host of the URL against the origin
+        // protocol and host.
+        return !(((!urlAnchor.protocol || urlAnchor.protocol === ':') && !urlAnchor.host) ||
+          (originAnchor.protocol + '//' + originAnchor.host ===
+            urlAnchor.protocol + '//' + urlAnchor.host));
+      } catch (e) {
+        // If there is an error parsing the URL, assume it is crossDomain.
+        return true;
+      }
+    },
+
+    // Handles "data-method" on links such as:
+    // <a href="/users/5" data-method="delete" rel="nofollow" data-confirm="Are you sure?">Delete</a>
+    handleMethod: function(link) {
+      var href = rails.href(link),
+        method = link.data('method'),
+        target = link.attr('target'),
+        csrfToken = rails.csrfToken(),
+        csrfParam = rails.csrfParam(),
+        form = $('<form method="post" action="' + href + '"></form>'),
+        metadataInput = '<input name="_method" value="' + method + '" type="hidden" />';
+
+      if (csrfParam !== undefined && csrfToken !== undefined && !rails.isCrossDomain(href)) {
+        metadataInput += '<input name="' + csrfParam + '" value="' + csrfToken + '" type="hidden" />';
+      }
+
+      if (target) { form.attr('target', target); }
+
+      form.hide().append(metadataInput).appendTo('body');
+      form.submit();
+    },
+
+    // Helper function that returns form elements that match the specified CSS selector
+    // If form is actually a "form" element this will return associated elements outside the from that have
+    // the html form attribute set
+    formElements: function(form, selector) {
+      return form.is('form') ? $(form[0].elements).filter(selector) : form.find(selector);
+    },
+
+    /* Disables form elements:
+      - Caches element value in 'ujs:enable-with' data store
+      - Replaces element text with value of 'data-disable-with' attribute
+      - Sets disabled property to true
+    */
+    disableFormElements: function(form) {
+      rails.formElements(form, rails.disableSelector).each(function() {
+        rails.disableFormElement($(this));
+      });
+    },
+
+    disableFormElement: function(element) {
+      var method, replacement;
+
+      method = element.is('button') ? 'html' : 'val';
+      replacement = element.data('disable-with');
+
+      if (replacement !== undefined) {
+        element.data('ujs:enable-with', element[method]());
+        element[method](replacement);
+      }
+
+      element.prop('disabled', true);
+      element.data('ujs:disabled', true);
+    },
+
+    /* Re-enables disabled form elements:
+      - Replaces element text with cached value from 'ujs:enable-with' data store (created in `disableFormElements`)
+      - Sets disabled property to false
+    */
+    enableFormElements: function(form) {
+      rails.formElements(form, rails.enableSelector).each(function() {
+        rails.enableFormElement($(this));
+      });
+    },
+
+    enableFormElement: function(element) {
+      var method = element.is('button') ? 'html' : 'val';
+      if (element.data('ujs:enable-with') !== undefined) {
+        element[method](element.data('ujs:enable-with'));
+        element.removeData('ujs:enable-with'); // clean up cache
+      }
+      element.prop('disabled', false);
+      element.removeData('ujs:disabled');
+    },
+
+   /* For 'data-confirm' attribute:
+      - Fires `confirm` event
+      - Shows the confirmation dialog
+      - Fires the `confirm:complete` event
+
+      Returns `true` if no function stops the chain and user chose yes; `false` otherwise.
+      Attaching a handler to the element's `confirm` event that returns a `falsy` value cancels the confirmation dialog.
+      Attaching a handler to the element's `confirm:complete` event that returns a `falsy` value makes this function
+      return false. The `confirm:complete` event is fired whether or not the user answered true or false to the dialog.
+   */
+    allowAction: function(element) {
+      var message = element.data('confirm'),
+          answer = false, callback;
+      if (!message) { return true; }
+
+      if (rails.fire(element, 'confirm')) {
+        try {
+          answer = rails.confirm(message);
+        } catch (e) {
+          (console.error || console.log).call(console, e.stack || e);
+        }
+        callback = rails.fire(element, 'confirm:complete', [answer]);
+      }
+      return answer && callback;
+    },
+
+    // Helper function which checks for blank inputs in a form that match the specified CSS selector
+    blankInputs: function(form, specifiedSelector, nonBlank) {
+      var foundInputs = $(),
+        input,
+        valueToCheck,
+        radiosForNameWithNoneSelected,
+        radioName,
+        selector = specifiedSelector || 'input,textarea',
+        requiredInputs = form.find(selector),
+        checkedRadioButtonNames = {};
+
+      requiredInputs.each(function() {
+        input = $(this);
+        if (input.is('input[type=radio]')) {
+
+          // Don't count unchecked required radio as blank if other radio with same name is checked,
+          // regardless of whether same-name radio input has required attribute or not. The spec
+          // states https://www.w3.org/TR/html5/forms.html#the-required-attribute
+          radioName = input.attr('name');
+
+          // Skip if we've already seen the radio with this name.
+          if (!checkedRadioButtonNames[radioName]) {
+
+            // If none checked
+            if (form.find('input[type=radio]:checked[name="' + radioName + '"]').length === 0) {
+              radiosForNameWithNoneSelected = form.find(
+                'input[type=radio][name="' + radioName + '"]');
+              foundInputs = foundInputs.add(radiosForNameWithNoneSelected);
+            }
+
+            // We only need to check each name once.
+            checkedRadioButtonNames[radioName] = radioName;
+          }
+        } else {
+          valueToCheck = input.is('input[type=checkbox],input[type=radio]') ? input.is(':checked') : !!input.val();
+          if (valueToCheck === nonBlank) {
+            foundInputs = foundInputs.add(input);
+          }
+        }
+      });
+      return foundInputs.length ? foundInputs : false;
+    },
+
+    // Helper function which checks for non-blank inputs in a form that match the specified CSS selector
+    nonBlankInputs: function(form, specifiedSelector) {
+      return rails.blankInputs(form, specifiedSelector, true); // true specifies nonBlank
+    },
+
+    // Helper function, needed to provide consistent behavior in IE
+    stopEverything: function(e) {
+      $(e.target).trigger('ujs:everythingStopped');
+      e.stopImmediatePropagation();
+      return false;
+    },
+
+    //  Replace element's html with the 'data-disable-with' after storing original html
+    //  and prevent clicking on it
+    disableElement: function(element) {
+      var replacement = element.data('disable-with');
+
+      if (replacement !== undefined) {
+        element.data('ujs:enable-with', element.html()); // store enabled state
+        element.html(replacement);
+      }
+
+      element.bind('click.railsDisable', function(e) { // prevent further clicking
+        return rails.stopEverything(e);
+      });
+      element.data('ujs:disabled', true);
+    },
+
+    // Restore element to its original state which was disabled by 'disableElement' above
+    enableElement: function(element) {
+      if (element.data('ujs:enable-with') !== undefined) {
+        element.html(element.data('ujs:enable-with')); // set to old enabled state
+        element.removeData('ujs:enable-with'); // clean up cache
+      }
+      element.unbind('click.railsDisable'); // enable element
+      element.removeData('ujs:disabled');
+    }
+  };
+
+  if (rails.fire($document, 'rails:attachBindings')) {
+
+    $.ajaxPrefilter(function(options, originalOptions, xhr){ if ( !options.crossDomain ) { rails.CSRFProtection(xhr); }});
+
+    // This event works the same as the load event, except that it fires every
+    // time the page is loaded.
+    //
+    // See https://github.com/rails/jquery-ujs/issues/357
+    // See https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching
+    $(window).on('pageshow.rails', function () {
+      $($.rails.enableSelector).each(function () {
+        var element = $(this);
+
+        if (element.data('ujs:disabled')) {
+          $.rails.enableFormElement(element);
+        }
+      });
+
+      $($.rails.linkDisableSelector).each(function () {
+        var element = $(this);
+
+        if (element.data('ujs:disabled')) {
+          $.rails.enableElement(element);
+        }
+      });
+    });
+
+    $document.on('ajax:complete', rails.linkDisableSelector, function() {
+        rails.enableElement($(this));
+    });
+
+    $document.on('ajax:complete', rails.buttonDisableSelector, function() {
+        rails.enableFormElement($(this));
+    });
+
+    $document.on('click.rails', rails.linkClickSelector, function(e) {
+      var link = $(this), method = link.data('method'), data = link.data('params'), metaClick = e.metaKey || e.ctrlKey;
+      if (!rails.allowAction(link)) return rails.stopEverything(e);
+
+      if (!metaClick && link.is(rails.linkDisableSelector)) rails.disableElement(link);
+
+      if (rails.isRemote(link)) {
+        if (metaClick && (!method || method === 'GET') && !data) { return true; }
+
+        var handleRemote = rails.handleRemote(link);
+        // Response from rails.handleRemote() will either be false or a deferred object promise.
+        if (handleRemote === false) {
+          rails.enableElement(link);
+        } else {
+          handleRemote.fail( function() { rails.enableElement(link); } );
+        }
+        return false;
+
+      } else if (method) {
+        rails.handleMethod(link);
+        return false;
+      }
+    });
+
+    $document.on('click.rails', rails.buttonClickSelector, function(e) {
+      var button = $(this);
+
+      if (!rails.allowAction(button) || !rails.isRemote(button)) return rails.stopEverything(e);
+
+      if (button.is(rails.buttonDisableSelector)) rails.disableFormElement(button);
+
+      var handleRemote = rails.handleRemote(button);
+      // Response from rails.handleRemote() will either be false or a deferred object promise.
+      if (handleRemote === false) {
+        rails.enableFormElement(button);
+      } else {
+        handleRemote.fail( function() { rails.enableFormElement(button); } );
+      }
+      return false;
+    });
+
+    $document.on('change.rails', rails.inputChangeSelector, function(e) {
+      var link = $(this);
+      if (!rails.allowAction(link) || !rails.isRemote(link)) return rails.stopEverything(e);
+
+      rails.handleRemote(link);
+      return false;
+    });
+
+    $document.on('submit.rails', rails.formSubmitSelector, function(e) {
+      var form = $(this),
+        remote = rails.isRemote(form),
+        blankRequiredInputs,
+        nonBlankFileInputs;
+
+      if (!rails.allowAction(form)) return rails.stopEverything(e);
+
+      // Skip other logic when required values are missing or file upload is present
+      if (form.attr('novalidate') === undefined) {
+        if (form.data('ujs:formnovalidate-button') === undefined) {
+          blankRequiredInputs = rails.blankInputs(form, rails.requiredInputSelector, false);
+          if (blankRequiredInputs && rails.fire(form, 'ajax:aborted:required', [blankRequiredInputs])) {
+            return rails.stopEverything(e);
+          }
+        } else {
+          // Clear the formnovalidate in case the next button click is not on a formnovalidate button
+          // Not strictly necessary to do here, since it is also reset on each button click, but just to be certain
+          form.data('ujs:formnovalidate-button', undefined);
+        }
+      }
+
+      if (remote) {
+        nonBlankFileInputs = rails.nonBlankInputs(form, rails.fileInputSelector);
+        if (nonBlankFileInputs) {
+          // Slight timeout so that the submit button gets properly serialized
+          // (make it easy for event handler to serialize form without disabled values)
+          setTimeout(function(){ rails.disableFormElements(form); }, 13);
+          var aborted = rails.fire(form, 'ajax:aborted:file', [nonBlankFileInputs]);
+
+          // Re-enable form elements if event bindings return false (canceling normal form submission)
+          if (!aborted) { setTimeout(function(){ rails.enableFormElements(form); }, 13); }
+
+          return aborted;
+        }
+
+        rails.handleRemote(form);
+        return false;
+
+      } else {
+        // Slight timeout so that the submit button gets properly serialized
+        setTimeout(function(){ rails.disableFormElements(form); }, 13);
+      }
+    });
+
+    $document.on('click.rails', rails.formInputClickSelector, function(event) {
+      var button = $(this);
+
+      if (!rails.allowAction(button)) return rails.stopEverything(event);
+
+      // Register the pressed submit button
+      var name = button.attr('name'),
+        data = name ? {name:name, value:button.val()} : null;
+
+      var form = button.closest('form');
+      if (form.length === 0) {
+        form = $('#' + button.attr('form'));
+      }
+      form.data('ujs:submit-button', data);
+
+      // Save attributes from button
+      form.data('ujs:formnovalidate-button', button.attr('formnovalidate'));
+      form.data('ujs:submit-button-formaction', button.attr('formaction'));
+      form.data('ujs:submit-button-formmethod', button.attr('formmethod'));
+    });
+
+    $document.on('ajax:send.rails', rails.formSubmitSelector, function(event) {
+      if (this === event.target) rails.disableFormElements($(this));
+    });
+
+    $document.on('ajax:complete.rails', rails.formSubmitSelector, function(event) {
+      if (this === event.target) rails.enableFormElements($(this));
+    });
+
+    $(function(){
+      rails.refreshCSRFTokens();
+    });
+  }
+
+})( jQuery );
+/**
+*
+* jquery.sparkline.js
+*
+* v2.1.3
+* (c) Splunk, Inc
+* Contact: Gareth Watts (gareth@splunk.com)
+* http://omnipotent.net/jquery.sparkline/
+*
+* Generates inline sparkline charts from data supplied either to the method
+* or inline in HTML
+*
+* Compatible with Internet Explorer 6.0+ and modern browsers equipped with the canvas tag
+* (Firefox 2.0+, Safari, Opera, etc)
+*
+* License: New BSD License
+*
+* Copyright (c) 2012, Splunk Inc.
+* All rights reserved.
+*
+* Redistribution and use in source and binary forms, with or without modification,
+* are permitted provided that the following conditions are met:
+*
+*     * Redistributions of source code must retain the above copyright notice,
+*       this list of conditions and the following disclaimer.
+*     * Redistributions in binary form must reproduce the above copyright notice,
+*       this list of conditions and the following disclaimer in the documentation
+*       and/or other materials provided with the distribution.
+*     * Neither the name of Splunk Inc nor the names of its contributors may
+*       be used to endorse or promote products derived from this software without
+*       specific prior written permission.
+*
+* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
+* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
+* SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
+* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*
+*
+* Usage:
+*  $(selector).sparkline(values, options)
+*
+* If values is undefined or set to 'html' then the data values are read from the specified tag:
+*   <p>Sparkline: <span class="sparkline">1,4,6,6,8,5,3,5</span></p>
+*   $('.sparkline').sparkline();
+* There must be no spaces in the enclosed data set
+*
+* Otherwise values must be an array of numbers or null values
+*    <p>Sparkline: <span id="sparkline1">This text replaced if the browser is compatible</span></p>
+*    $('#sparkline1').sparkline([1,4,6,6,8,5,3,5])
+*    $('#sparkline2').sparkline([1,4,6,null,null,5,3,5])
+*
+* Values can also be specified in an HTML comment, or as a values attribute:
+*    <p>Sparkline: <span class="sparkline"><!--1,4,6,6,8,5,3,5 --></span></p>
+*    <p>Sparkline: <span class="sparkline" values="1,4,6,6,8,5,3,5"></span></p>
+*    $('.sparkline').sparkline();
+*
+* For line charts, x values can also be specified:
+*   <p>Sparkline: <span class="sparkline">1:1,2.7:4,3.4:6,5:6,6:8,8.7:5,9:3,10:5</span></p>
+*    $('#sparkline1').sparkline([ [1,1], [2.7,4], [3.4,6], [5,6], [6,8], [8.7,5], [9,3], [10,5] ])
+*
+* By default, options should be passed in as the second argument to the sparkline function:
+*   $('.sparkline').sparkline([1,2,3,4], {type: 'bar'})
+*
+* Options can also be set by passing them on the tag itself.  This feature is disabled by default though
+* as there's a slight performance overhead:
+*   $('.sparkline').sparkline([1,2,3,4], {enableTagOptions: true})
+*   <p>Sparkline: <span class="sparkline" sparkType="bar" sparkBarColor="red">loading</span></p>
+* Prefix all options supplied as tag attribute with "spark" (configurable by setting tagOptionsPrefix)
+*
+* Supported options:
+*   lineColor - Color of the line used for the chart
+*   fillColor - Color used to fill in the chart - Set to '' or false for a transparent chart
+*   width - Width of the chart - Defaults to 3 times the number of values in pixels
+*   height - Height of the chart - Defaults to the height of the containing element
+*   chartRangeMin - Specify the minimum value to use for the Y range of the chart - Defaults to the minimum value supplied
+*   chartRangeMax - Specify the maximum value to use for the Y range of the chart - Defaults to the maximum value supplied
+*   chartRangeClip - Clip out of range values to the max/min specified by chartRangeMin and chartRangeMax
+*   chartRangeMinX - Specify the minimum value to use for the X range of the chart - Defaults to the minimum value supplied
+*   chartRangeMaxX - Specify the maximum value to use for the X range of the chart - Defaults to the maximum value supplied
+*   composite - If true then don't erase any existing chart attached to the tag, but draw
+*           another chart over the top - Note that width and height are ignored if an
+*           existing chart is detected.
+*   tagValuesAttribute - Name of tag attribute to check for data values - Defaults to 'values'
+*   enableTagOptions - Whether to check tags for sparkline options
+*   tagOptionsPrefix - Prefix used for options supplied as tag attributes - Defaults to 'spark'
+*   disableHiddenCheck - If set to true, then the plugin will assume that charts will never be drawn into a
+*           hidden dom element, avoding a browser reflow
+*   disableInteraction - If set to true then all mouseover/click interaction behaviour will be disabled,
+*       making the plugin perform much like it did in 1.x
+*   disableTooltips - If set to true then tooltips will be disabled - Defaults to false (tooltips enabled)
+*   disableHighlight - If set to true then highlighting of selected chart elements on mouseover will be disabled
+*       defaults to false (highlights enabled)
+*   highlightLighten - Factor to lighten/darken highlighted chart values by - Defaults to 1.4 for a 40% increase
+*   tooltipContainer - Specify which DOM element the tooltip should be rendered into - defaults to document.body
+*   tooltipClassname - Optional CSS classname to apply to tooltips - If not specified then a default style will be applied
+*   tooltipOffsetX - How many pixels away from the mouse pointer to render the tooltip on the X axis
+*   tooltipOffsetY - How many pixels away from the mouse pointer to render the tooltip on the r axis
+*   tooltipFormatter  - Optional callback that allows you to override the HTML displayed in the tooltip
+*       callback is given arguments of (sparkline, options, fields)
+*   tooltipChartTitle - If specified then the tooltip uses the string specified by this setting as a title
+*   tooltipFormat - A format string or SPFormat object  (or an array thereof for multiple entries)
+*       to control the format of the tooltip
+*   tooltipPrefix - A string to prepend to each field displayed in a tooltip
+*   tooltipSuffix - A string to append to each field displayed in a tooltip
+*   tooltipSkipNull - If true then null values will not have a tooltip displayed (defaults to true)
+*   tooltipValueLookups - An object or range map to map field values to tooltip strings
+*       (eg. to map -1 to "Lost", 0 to "Draw", and 1 to "Win")
+*   numberFormatter - Optional callback for formatting numbers in tooltips
+*   numberDigitGroupSep - Character to use for group separator in numbers "1,234" - Defaults to ","
+*   numberDecimalMark - Character to use for the decimal point when formatting numbers - Defaults to "."
+*   numberDigitGroupCount - Number of digits between group separator - Defaults to 3
+*
+* There are 7 types of sparkline, selected by supplying a "type" option of 'line' (default),
+* 'bar', 'tristate', 'bullet', 'discrete', 'pie' or 'box'
+*    line - Line chart.  Options:
+*       spotColor - Set to '' to not end each line in a circular spot
+*       minSpotColor - If set, color of spot at minimum value
+*       maxSpotColor - If set, color of spot at maximum value
+*       spotRadius - Radius in pixels
+*       lineWidth - Width of line in pixels
+*       normalRangeMin
+*       normalRangeMax - If set draws a filled horizontal bar between these two values marking the "normal"
+*                      or expected range of values
+*       normalRangeColor - Color to use for the above bar
+*       drawNormalOnTop - Draw the normal range above the chart fill color if true
+*       defaultPixelsPerValue - Defaults to 3 pixels of width for each value in the chart
+*       highlightSpotColor - The color to use for drawing a highlight spot on mouseover - Set to null to disable
+*       highlightLineColor - The color to use for drawing a highlight line on mouseover - Set to null to disable
+*       valueSpots - Specify which points to draw spots on, and in which color.  Accepts a range map
+*
+*   bar - Bar chart.  Options:
+*       barColor - Color of bars for postive values
+*       negBarColor - Color of bars for negative values
+*       zeroColor - Color of bars with zero values
+*       nullColor - Color of bars with null values - Defaults to omitting the bar entirely
+*       barWidth - Width of bars in pixels
+*       colorMap - Optional mappnig of values to colors to override the *BarColor values above
+*                  can be an Array of values to control the color of individual bars or a range map
+*                  to specify colors for individual ranges of values
+*       barSpacing - Gap between bars in pixels
+*       zeroAxis - Centers the y-axis around zero if true
+*
+*   tristate - Charts values of win (>0), lose (<0) or draw (=0)
+*       posBarColor - Color of win values
+*       negBarColor - Color of lose values
+*       zeroBarColor - Color of draw values
+*       barWidth - Width of bars in pixels
+*       barSpacing - Gap between bars in pixels
+*       colorMap - Optional mappnig of values to colors to override the *BarColor values above
+*                  can be an Array of values to control the color of individual bars or a range map
+*                  to specify colors for individual ranges of values
+*
+*   discrete - Options:
+*       lineHeight - Height of each line in pixels - Defaults to 30% of the graph height
+*       thesholdValue - Values less than this value will be drawn using thresholdColor instead of lineColor
+*       thresholdColor
+*
+*   bullet - Values for bullet graphs msut be in the order: target, performance, range1, range2, range3, ...
+*       options:
+*       targetColor - The color of the vertical target marker
+*       targetWidth - The width of the target marker in pixels
+*       performanceColor - The color of the performance measure horizontal bar
+*       rangeColors - Colors to use for each qualitative range background color
+*
+*   pie - Pie chart. Options:
+*       sliceColors - An array of colors to use for pie slices
+*       offset - Angle in degrees to offset the first slice - Try -90 or +90
+*       borderWidth - Width of border to draw around the pie chart, in pixels - Defaults to 0 (no border)
+*       borderColor - Color to use for the pie chart border - Defaults to #000
+*
+*   box - Box plot. Options:
+*       raw - Set to true to supply pre-computed plot points as values
+*             values should be: low_outlier, low_whisker, q1, median, q3, high_whisker, high_outlier
+*             When set to false you can supply any number of values and the box plot will
+*             be computed for you.  Default is false.
+*       showOutliers - Set to true (default) to display outliers as circles
+*       outlierIQR - Interquartile range used to determine outliers.  Default 1.5
+*       boxLineColor - Outline color of the box
+*       boxFillColor - Fill color for the box
+*       whiskerColor - Line color used for whiskers
+*       outlierLineColor - Outline color of outlier circles
+*       outlierFillColor - Fill color of the outlier circles
+*       spotRadius - Radius of outlier circles
+*       medianColor - Line color of the median line
+*       target - Draw a target cross hair at the supplied value (default undefined)
+*
+*
+*
+*   Examples:
+*   $('#sparkline1').sparkline(myvalues, { lineColor: '#f00', fillColor: false });
+*   $('.barsparks').sparkline('html', { type:'bar', height:'40px', barWidth:5 });
+*   $('#tristate').sparkline([1,1,-1,1,0,0,-1], { type:'tristate' }):
+*   $('#discrete').sparkline([1,3,4,5,5,3,4,5], { type:'discrete' });
+*   $('#bullet').sparkline([10,12,12,9,7], { type:'bullet' });
+*   $('#pie').sparkline([1,1,2], { type:'pie' });
+*/
+
+/*jslint regexp: true, browser: true, jquery: true, white: true, nomen: false, plusplus: false, maxerr: 500, indent: 4 */
+
+
+(function(document, Math, undefined) { // performance/minified-size optimization
+(function(factory) {
+    if(typeof define === 'function' && define.amd) {
+        define(['jquery'], factory);
+    } else if (jQuery && !jQuery.fn.sparkline) {
+        factory(jQuery);
+    }
+}
+(function($) {
+    'use strict';
+
+    var UNSET_OPTION = {},
+        getDefaults, createClass, SPFormat, clipval, quartile, normalizeValue, normalizeValues,
+        remove, isNumber, all, sum, addCSS, ensureArray, formatNumber, RangeMap,
+        MouseHandler, Tooltip, barHighlightMixin,
+        line, bar, tristate, discrete, bullet, pie, box, defaultStyles, initStyles,
+        VShape, VCanvas_base, VCanvas_canvas, VCanvas_vml, pending, shapeCount = 0;
+
+    /**
+     * Default configuration settings
+     */
+    getDefaults = function () {
+        return {
+            // Settings common to most/all chart types
+            common: {
+                type: 'line',
+                lineColor: '#00f',
+                fillColor: '#cdf',
+                defaultPixelsPerValue: 3,
+                width: 'auto',
+                height: 'auto',
+                composite: false,
+                tagValuesAttribute: 'values',
+                tagOptionsPrefix: 'spark',
+                enableTagOptions: false,
+                enableHighlight: true,
+                highlightLighten: 1.4,
+                tooltipSkipNull: true,
+                tooltipPrefix: '',
+                tooltipSuffix: '',
+                disableHiddenCheck: false,
+                numberFormatter: false,
+                numberDigitGroupCount: 3,
+                numberDigitGroupSep: ',',
+                numberDecimalMark: '.',
+                disableTooltips: false,
+                disableInteraction: false
+            },
+            // Defaults for line charts
+            line: {
+                spotColor: '#f80',
+                highlightSpotColor: '#5f5',
+                highlightLineColor: '#f22',
+                spotRadius: 1.5,
+                minSpotColor: '#f80',
+                maxSpotColor: '#f80',
+                lineWidth: 1,
+                normalRangeMin: undefined,
+                normalRangeMax: undefined,
+                normalRangeColor: '#ccc',
+                drawNormalOnTop: false,
+                chartRangeMin: undefined,
+                chartRangeMax: undefined,
+                chartRangeMinX: undefined,
+                chartRangeMaxX: undefined,
+                tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{y}}{{suffix}}')
+            },
+            // Defaults for bar charts
+            bar: {
+                barColor: '#3366cc',
+                negBarColor: '#f44',
+                stackedBarColor: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',
+                    '#dd4477', '#0099c6', '#990099'],
+                zeroColor: undefined,
+                nullColor: undefined,
+                zeroAxis: true,
+                barWidth: 4,
+                barSpacing: 1,
+                chartRangeMax: undefined,
+                chartRangeMin: undefined,
+                chartRangeClip: false,
+                colorMap: undefined,
+                tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{prefix}}{{value}}{{suffix}}')
+            },
+            // Defaults for tristate charts
+            tristate: {
+                barWidth: 4,
+                barSpacing: 1,
+                posBarColor: '#6f6',
+                negBarColor: '#f44',
+                zeroBarColor: '#999',
+                colorMap: {},
+                tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{value:map}}'),
+                tooltipValueLookups: { map: { '-1': 'Loss', '0': 'Draw', '1': 'Win' } }
+            },
+            // Defaults for discrete charts
+            discrete: {
+                lineHeight: 'auto',
+                thresholdColor: undefined,
+                thresholdValue: 0,
+                chartRangeMax: undefined,
+                chartRangeMin: undefined,
+                chartRangeClip: false,
+                tooltipFormat: new SPFormat('{{prefix}}{{value}}{{suffix}}')
+            },
+            // Defaults for bullet charts
+            bullet: {
+                targetColor: '#f33',
+                targetWidth: 3, // width of the target bar in pixels
+                performanceColor: '#33f',
+                rangeColors: ['#d3dafe', '#a8b6ff', '#7f94ff'],
+                base: undefined, // set this to a number to change the base start number
+                tooltipFormat: new SPFormat('{{fieldkey:fields}} - {{value}}'),
+                tooltipValueLookups: { fields: {r: 'Range', p: 'Performance', t: 'Target'} }
+            },
+            // Defaults for pie charts
+            pie: {
+                offset: 0,
+                sliceColors: ['#3366cc', '#dc3912', '#ff9900', '#109618', '#66aa00',
+                    '#dd4477', '#0099c6', '#990099'],
+                borderWidth: 0,
+                borderColor: '#000',
+                tooltipFormat: new SPFormat('<span style="color: {{color}}">&#9679;</span> {{value}} ({{percent.1}}%)')
+            },
+            // Defaults for box plots
+            box: {
+                raw: false,
+                boxLineColor: '#000',
+                boxFillColor: '#cdf',
+                whiskerColor: '#000',
+                outlierLineColor: '#333',
+                outlierFillColor: '#fff',
+                medianColor: '#f00',
+                showOutliers: true,
+                outlierIQR: 1.5,
+                spotRadius: 1.5,
+                target: undefined,
+                targetColor: '#4a2',
+                chartRangeMax: undefined,
+                chartRangeMin: undefined,
+                tooltipFormat: new SPFormat('{{field:fields}}: {{value}}'),
+                tooltipFormatFieldlistKey: 'field',
+                tooltipValueLookups: { fields: { lq: 'Lower Quartile', med: 'Median',
+                    uq: 'Upper Quartile', lo: 'Left Outlier', ro: 'Right Outlier',
+                    lw: 'Left Whisker', rw: 'Right Whisker'} }
+            }
+        };
+    };
+
+    // You can have tooltips use a css class other than jqstooltip by specifying tooltipClassname
+    defaultStyles = '.jqstooltip { ' +
+            'position: absolute;' +
+            'left: 0px;' +
+            'top: 0px;' +
+            'visibility: hidden;' +
+            'background: rgb(0, 0, 0) transparent;' +
+            'background-color: rgba(0,0,0,0.6);' +
+            'filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000);' +
+            '-ms-filter: "progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000, endColorstr=#99000000)";' +
+            'color: white;' +
+            'font: 10px arial, san serif;' +
+            'text-align: left;' +
+            'white-space: nowrap;' +
+            'padding: 5px;' +
+            'border: 1px solid white;' +
+            'box-sizing: content-box;' +
+            'z-index: 10000;' +
+            '}' +
+            '.jqsfield { ' +
+            'color: white;' +
+            'font: 10px arial, san serif;' +
+            'text-align: left;' +
+            '}';
+
+    /**
+     * Utilities
+     */
+
+    createClass = function (/* [baseclass, [mixin, ...]], definition */) {
+        var Class, args;
+        Class = function () {
+            this.init.apply(this, arguments);
+        };
+        if (arguments.length > 1) {
+            if (arguments[0]) {
+                Class.prototype = $.extend(new arguments[0](), arguments[arguments.length - 1]);
+                Class._super = arguments[0].prototype;
+            } else {
+                Class.prototype = arguments[arguments.length - 1];
+            }
+            if (arguments.length > 2) {
+                args = Array.prototype.slice.call(arguments, 1, -1);
+                args.unshift(Class.prototype);
+                $.extend.apply($, args);
+            }
+        } else {
+            Class.prototype = arguments[0];
+        }
+        Class.prototype.cls = Class;
+        return Class;
+    };
+
+    /**
+     * Wraps a format string for tooltips
+     * {{x}}
+     * {{x.2}
+     * {{x:months}}
+     */
+    $.SPFormatClass = SPFormat = createClass({
+        fre: /\{\{([\w.]+?)(:(.+?))?\}\}/g,
+        precre: /(\w+)\.(\d+)/,
+
+        init: function (format, fclass) {
+            this.format = format;
+            this.fclass = fclass;
+        },
+
+        render: function (fieldset, lookups, options) {
+            var self = this,
+                fields = fieldset,
+                match, token, lookupkey, fieldvalue, prec;
+            return this.format.replace(this.fre, function () {
+                var lookup;
+                token = arguments[1];
+                lookupkey = arguments[3];
+                match = self.precre.exec(token);
+                if (match) {
+                    prec = match[2];
+                    token = match[1];
+                } else {
+                    prec = false;
+                }
+                fieldvalue = fields[token];
+                if (fieldvalue === undefined) {
+                    return '';
+                }
+                if (lookupkey && lookups && lookups[lookupkey]) {
+                    lookup = lookups[lookupkey];
+                    if (lookup.get) { // RangeMap
+                        return lookups[lookupkey].get(fieldvalue) || fieldvalue;
+                    } else {
+                        return lookups[lookupkey][fieldvalue] || fieldvalue;
+                    }
+                }
+                if (isNumber(fieldvalue)) {
+                    if (options.get('numberFormatter')) {
+                        fieldvalue = options.get('numberFormatter')(fieldvalue);
+                    } else {
+                        fieldvalue = formatNumber(fieldvalue, prec,
+                            options.get('numberDigitGroupCount'),
+                            options.get('numberDigitGroupSep'),
+                            options.get('numberDecimalMark'));
+                    }
+                }
+                return fieldvalue;
+            });
+        }
+    });
+
+    // convience method to avoid needing the new operator
+    $.spformat = function(format, fclass) {
+        return new SPFormat(format, fclass);
+    };
+
+    clipval = function (val, min, max) {
+        if (val < min) {
+            return min;
+        }
+        if (val > max) {
+            return max;
+        }
+        return val;
+    };
+
+    quartile = function (values, q) {
+        var vl;
+        if (q === 2) {
+            vl = Math.floor(values.length / 2);
+            return values.length % 2 ? values[vl] : (values[vl-1] + values[vl]) / 2;
+        } else {
+            if (values.length % 2 ) { // odd
+                vl = (values.length * q + q) / 4;
+                return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 : values[vl-1];
+            } else { //even
+                vl = (values.length * q + 2) / 4;
+                return vl % 1 ? (values[Math.floor(vl)] + values[Math.floor(vl) - 1]) / 2 :  values[vl-1];
+
+            }
+        }
+    };
+
+    normalizeValue = function (val) {
+        var nf;
+        switch (val) {
+            case 'undefined':
+                val = undefined;
+                break;
+            case 'null':
+                val = null;
+                break;
+            case 'true':
+                val = true;
+                break;
+            case 'false':
+                val = false;
+                break;
+            default:
+                nf = parseFloat(val);
+                if (val == nf) {
+                    val = nf;
+                }
+        }
+        return val;
+    };
+
+    normalizeValues = function (vals) {
+        var i, result = [];
+        for (i = vals.length; i--;) {
+            result[i] = normalizeValue(vals[i]);
+        }
+        return result;
+    };
+
+    remove = function (vals, filter) {
+        var i, vl, result = [];
+        for (i = 0, vl = vals.length; i < vl; i++) {
+            if (vals[i] !== filter) {
+                result.push(vals[i]);
+            }
+        }
+        return result;
+    };
+
+    isNumber = function (num) {
+        return !isNaN(parseFloat(num)) && isFinite(num);
+    };
+
+    formatNumber = function (num, prec, groupsize, groupsep, decsep) {
+        var p, i;
+        num = (prec === false ? parseFloat(num).toString() : num.toFixed(prec)).split('');
+        p = (p = $.inArray('.', num)) < 0 ? num.length : p;
+        if (p < num.length) {
+            num[p] = decsep;
+        }
+        for (i = p - groupsize; i > 0; i -= groupsize) {
+            num.splice(i, 0, groupsep);
+        }
+        return num.join('');
+    };
+
+    // determine if all values of an array match a value
+    // returns true if the array is empty
+    all = function (val, arr, ignoreNull) {
+        var i;
+        for (i = arr.length; i--; ) {
+            if (ignoreNull && arr[i] === null) continue;
+            if (arr[i] !== val) {
+                return false;
+            }
+        }
+        return true;
+    };
+
+    // sums the numeric values in an array, ignoring other values
+    sum = function (vals) {
+        var total = 0, i;
+        for (i = vals.length; i--;) {
+            total += typeof vals[i] === 'number' ? vals[i] : 0;
+        }
+        return total;
+    };
+
+    ensureArray = function (val) {
+        return $.isArray(val) ? val : [val];
+    };
+
+    // http://paulirish.com/2008/bookmarklet-inject-new-css-rules/
+    addCSS = function(css) {
+        var tag, iefail;
+        if (document.createStyleSheet) {
+            try {
+                document.createStyleSheet().cssText = css;
+                return;
+            } catch (e) {
+                // IE <= 9 maxes out at 31 stylesheets; inject into page instead.
+                iefail = true;
+            }
+        }
+        tag = document.createElement('style');
+        tag.type = 'text/css';
+        document.getElementsByTagName('head')[0].appendChild(tag);
+        if (iefail) {
+            document.styleSheets[document.styleSheets.length - 1].cssText = css;
+        } else {
+            tag[(typeof document.body.style.WebkitAppearance == 'string') /* webkit only */ ? 'innerText' : 'innerHTML'] = css;
+        }
+    };
+
+    // Provide a cross-browser interface to a few simple drawing primitives
+    $.fn.simpledraw = function (width, height, useExisting, interact) {
+        var target, mhandler;
+        if (useExisting && (target = this.data('_jqs_vcanvas'))) {
+            return target;
+        }
+
+        if ($.fn.sparkline.canvas === false) {
+            // We've already determined that neither Canvas nor VML are available
+            return false;
+
+        } else if ($.fn.sparkline.canvas === undefined) {
+            // No function defined yet -- need to see if we support Canvas or VML
+            var el = document.createElement('canvas');
+            if (!!(el.getContext && el.getContext('2d'))) {
+                // Canvas is available
+                $.fn.sparkline.canvas = function(width, height, target, interact) {
+                    return new VCanvas_canvas(width, height, target, interact);
+                };
+            } else if (document.namespaces && !document.namespaces.v) {
+                // VML is available
+                document.namespaces.add('v', 'urn:schemas-microsoft-com:vml', '#default#VML');
+                $.fn.sparkline.canvas = function(width, height, target, interact) {
+                    return new VCanvas_vml(width, height, target);
+                };
+            } else {
+                // Neither Canvas nor VML are available
+                $.fn.sparkline.canvas = false;
+                return false;
+            }
+        }
+
+        if (width === undefined) {
+            width = $(this).innerWidth();
+        }
+        if (height === undefined) {
+            height = $(this).innerHeight();
+        }
+
+        target = $.fn.sparkline.canvas(width, height, this, interact);
+
+        mhandler = $(this).data('_jqs_mhandler');
+        if (mhandler) {
+            mhandler.registerCanvas(target);
+        }
+        return target;
+    };
+
+    $.fn.cleardraw = function () {
+        var target = this.data('_jqs_vcanvas');
+        if (target) {
+            target.reset();
+        }
+    };
+
+    $.RangeMapClass = RangeMap = createClass({
+        init: function (map) {
+            var key, range, rangelist = [];
+            for (key in map) {
+                if (map.hasOwnProperty(key) && typeof key === 'string' && key.indexOf(':') > -1) {
+                    range = key.split(':');
+                    range[0] = range[0].length === 0 ? -Infinity : parseFloat(range[0]);
+                    range[1] = range[1].length === 0 ? Infinity : parseFloat(range[1]);
+                    range[2] = map[key];
+                    rangelist.push(range);
+                }
+            }
+            this.map = map;
+            this.rangelist = rangelist || false;
+        },
+
+        get: function (value) {
+            var rangelist = this.rangelist,
+                i, range, result;
+            if ((result = this.map[value]) !== undefined) {
+                return result;
+            }
+            if (rangelist) {
+                for (i = rangelist.length; i--;) {
+                    range = rangelist[i];
+                    if (range[0] <= value && range[1] >= value) {
+                        return range[2];
+                    }
+                }
+            }
+            return undefined;
+        }
+    });
+
+    // Convenience function
+    $.range_map = function(map) {
+        return new RangeMap(map);
+    };
+
+    MouseHandler = createClass({
+        init: function (el, options) {
+            var $el = $(el);
+            this.$el = $el;
+            this.options = options;
+            this.currentPageX = 0;
+            this.currentPageY = 0;
+            this.el = el;
+            this.splist = [];
+            this.tooltip = null;
+            this.over = false;
+            this.displayTooltips = !options.get('disableTooltips');
+            this.highlightEnabled = !options.get('disableHighlight');
+        },
+
+        registerSparkline: function (sp) {
+            this.splist.push(sp);
+            if (this.over) {
+                this.updateDisplay();
+            }
+        },
+
+        registerCanvas: function (canvas) {
+            var $canvas = $(canvas.canvas);
+            this.canvas = canvas;
+            this.$canvas = $canvas;
+            $canvas.mouseenter($.proxy(this.mouseenter, this));
+            $canvas.mouseleave($.proxy(this.mouseleave, this));
+            $canvas.click($.proxy(this.mouseclick, this));
+        },
+
+        reset: function (removeTooltip) {
+            this.splist = [];
+            if (this.tooltip && removeTooltip) {
+                this.tooltip.remove();
+                this.tooltip = undefined;
+            }
+        },
+
+        mouseclick: function (e) {
+            var clickEvent = $.Event('sparklineClick');
+            clickEvent.originalEvent = e;
+            clickEvent.sparklines = this.splist;
+            this.$el.trigger(clickEvent);
+        },
+
+        mouseenter: function (e) {
+            $(document.body).unbind('mousemove.jqs');
+            $(document.body).bind('mousemove.jqs', $.proxy(this.mousemove, this));
+            this.over = true;
+            this.currentPageX = e.pageX;
+            this.currentPageY = e.pageY;
+            this.currentEl = e.target;
+            if (!this.tooltip && this.displayTooltips) {
+                this.tooltip = new Tooltip(this.options);
+                this.tooltip.updatePosition(e.pageX, e.pageY);
+            }
+            this.updateDisplay();
+        },
+
+        mouseleave: function () {
+            $(document.body).unbind('mousemove.jqs');
+            var splist = this.splist,
+                 spcount = splist.length,
+                 needsRefresh = false,
+                 sp, i;
+            this.over = false;
+            this.currentEl = null;
+
+            if (this.tooltip) {
+                this.tooltip.remove();
+                this.tooltip = null;
+            }
+
+            for (i = 0; i < spcount; i++) {
+                sp = splist[i];
+                if (sp.clearRegionHighlight()) {
+                    needsRefresh = true;
+                }
+            }
+
+            if (needsRefresh) {
+                this.canvas.render();
+            }
+        },
+
+        mousemove: function (e) {
+            this.currentPageX = e.pageX;
+            this.currentPageY = e.pageY;
+            this.currentEl = e.target;
+            if (this.tooltip) {
+                this.tooltip.updatePosition(e.pageX, e.pageY);
+            }
+            this.updateDisplay();
+        },
+
+        updateDisplay: function () {
+            var splist = this.splist,
+                 spcount = splist.length,
+                 needsRefresh = false,
+                 offset = this.$canvas.offset(),
+                 localX = this.currentPageX - offset.left,
+                 localY = this.currentPageY - offset.top,
+                 tooltiphtml, sp, i, result, changeEvent;
+            if (!this.over) {
+                return;
+            }
+            for (i = 0; i < spcount; i++) {
+                sp = splist[i];
+                result = sp.setRegionHighlight(this.currentEl, localX, localY);
+                if (result) {
+                    needsRefresh = true;
+                }
+            }
+            if (needsRefresh) {
+                changeEvent = $.Event('sparklineRegionChange');
+                changeEvent.sparklines = this.splist;
+                this.$el.trigger(changeEvent);
+                if (this.tooltip) {
+                    tooltiphtml = '';
+                    for (i = 0; i < spcount; i++) {
+                        sp = splist[i];
+                        tooltiphtml += sp.getCurrentRegionTooltip();
+                    }
+                    this.tooltip.setContent(tooltiphtml);
+                }
+                if (!this.disableHighlight) {
+                    this.canvas.render();
+                }
+            }
+            if (result === null) {
+                this.mouseleave();
+            }
+        }
+    });
+
+
+    Tooltip = createClass({
+        sizeStyle: 'position: static !important;' +
+            'display: block !important;' +
+            'visibility: hidden !important;' +
+            'float: left !important;',
+
+        init: function (options) {
+            var tooltipClassname = options.get('tooltipClassname', 'jqstooltip'),
+                sizetipStyle = this.sizeStyle,
+                offset;
+            this.container = options.get('tooltipContainer') || document.body;
+            this.tooltipOffsetX = options.get('tooltipOffsetX', 10);
+            this.tooltipOffsetY = options.get('tooltipOffsetY', 12);
+            // remove any previous lingering tooltip
+            $('#jqssizetip').remove();
+            $('#jqstooltip').remove();
+            this.sizetip = $('<div/>', {
+                id: 'jqssizetip',
+                style: sizetipStyle,
+                'class': tooltipClassname
+            });
+            this.tooltip = $('<div/>', {
+                id: 'jqstooltip',
+                'class': tooltipClassname
+            }).appendTo(this.container);
+            // account for the container's location
+            offset = this.tooltip.offset();
+            this.offsetLeft = offset.left;
+            this.offsetTop = offset.top;
+            this.hidden = true;
+            $(window).unbind('resize.jqs scroll.jqs');
+            $(window).bind('resize.jqs scroll.jqs', $.proxy(this.updateWindowDims, this));
+            this.updateWindowDims();
+        },
+
+        updateWindowDims: function () {
+            this.scrollTop = $(window).scrollTop();
+            this.scrollLeft = $(window).scrollLeft();
+            this.scrollRight = this.scrollLeft + $(window).width();
+            this.updatePosition();
+        },
+
+        getSize: function (content) {
+            this.sizetip.html(content).appendTo(this.container);
+            this.width = this.sizetip.width() + 1;
+            this.height = this.sizetip.height();
+            this.sizetip.remove();
+        },
+
+        setContent: function (content) {
+            if (!content) {
+                this.tooltip.css('visibility', 'hidden');
+                this.hidden = true;
+                return;
+            }
+            this.getSize(content);
+            this.tooltip.html(content)
+                .css({
+                    'width': this.width,
+                    'height': this.height,
+                    'visibility': 'visible'
+                });
+            if (this.hidden) {
+                this.hidden = false;
+                this.updatePosition();
+            }
+        },
+
+        updatePosition: function (x, y) {
+            if (x === undefined) {
+                if (this.mousex === undefined) {
+                    return;
+                }
+                x = this.mousex - this.offsetLeft;
+                y = this.mousey - this.offsetTop;
+
+            } else {
+                this.mousex = x = x - this.offsetLeft;
+                this.mousey = y = y - this.offsetTop;
+            }
+            if (!this.height || !this.width || this.hidden) {
+                return;
+            }
+
+            y -= this.height + this.tooltipOffsetY;
+            x += this.tooltipOffsetX;
+
+            if (y < this.scrollTop) {
+                y = this.scrollTop;
+            }
+            if (x < this.scrollLeft) {
+                x = this.scrollLeft;
+            } else if (x + this.width > this.scrollRight) {
+                x = this.scrollRight - this.width;
+            }
+
+            this.tooltip.css({
+                'left': x,
+                'top': y
+            });
+        },
+
+        remove: function () {
+            this.tooltip.remove();
+            this.sizetip.remove();
+            this.sizetip = this.tooltip = undefined;
+            $(window).unbind('resize.jqs scroll.jqs');
+        }
+    });
+
+    initStyles = function() {
+        addCSS(defaultStyles);
+    };
+
+    $(initStyles);
+
+    pending = [];
+    $.fn.sparkline = function (userValues, userOptions) {
+        return this.each(function () {
+            var options = new $.fn.sparkline.options(this, userOptions),
+                 $this = $(this),
+                 render, i;
+            render = function () {
+                var values, width, height, tmp, mhandler, sp, vals;
+                if (userValues === 'html' || userValues === undefined) {
+                    vals = this.getAttribute(options.get('tagValuesAttribute'));
+                    if (vals === undefined || vals === null) {
+                        vals = $this.html();
+                    }
+                    values = vals.replace(/(^\s*<!--)|(-->\s*$)|\s+/g, '').split(',');
+                } else {
+                    values = userValues;
+                }
+
+                width = options.get('width') === 'auto' ? values.length * options.get('defaultPixelsPerValue') : options.get('width');
+                if (options.get('height') === 'auto') {
+                    if (!options.get('composite') || !$.data(this, '_jqs_vcanvas')) {
+                        // must be a better way to get the line height
+                        tmp = document.createElement('span');
+                        tmp.innerHTML = 'a';
+                        $this.html(tmp);
+                        height = $(tmp).innerHeight() || $(tmp).height();
+                        $(tmp).remove();
+                        tmp = null;
+                    }
+                } else {
+                    height = options.get('height');
+                }
+
+                if (!options.get('disableInteraction')) {
+                    mhandler = $.data(this, '_jqs_mhandler');
+                    if (!mhandler) {
+                        mhandler = new MouseHandler(this, options);
+                        $.data(this, '_jqs_mhandler', mhandler);
+                    } else if (!options.get('composite')) {
+                        mhandler.reset();
+                    }
+                } else {
+                    mhandler = false;
+                }
+
+                if (options.get('composite') && !$.data(this, '_jqs_vcanvas')) {
+                    if (!$.data(this, '_jqs_errnotify')) {
+                        alert('Attempted to attach a composite sparkline to an element with no existing sparkline');
+                        $.data(this, '_jqs_errnotify', true);
+                    }
+                    return;
+                }
+
+                sp = new $.fn.sparkline[options.get('type')](this, values, options, width, height);
+
+                sp.render();
+
+                if (mhandler) {
+                    mhandler.registerSparkline(sp);
+                }
+            };
+            if (($(this).html() && !options.get('disableHiddenCheck') && $(this).is(':hidden')) || !$(this).parents('body').length) {
+                if (!options.get('composite') && $.data(this, '_jqs_pending')) {
+                    // remove any existing references to the element
+                    for (i = pending.length; i; i--) {
+                        if (pending[i - 1][0] == this) {
+                            pending.splice(i - 1, 1);
+                        }
+                    }
+                }
+                pending.push([this, render]);
+                $.data(this, '_jqs_pending', true);
+            } else {
+                render.call(this);
+            }
+        });
+    };
+
+    $.fn.sparkline.defaults = getDefaults();
+
+
+    $.sparkline_display_visible = function () {
+        var el, i, pl;
+        var done = [];
+        for (i = 0, pl = pending.length; i < pl; i++) {
+            el = pending[i][0];
+            if ($(el).is(':visible') && !$(el).parents().is(':hidden')) {
+                pending[i][1].call(el);
+                $.data(pending[i][0], '_jqs_pending', false);
+                done.push(i);
+            } else if (!$(el).closest('html').length && !$.data(el, '_jqs_pending')) {
+                // element has been inserted and removed from the DOM
+                // If it was not yet inserted into the dom then the .data request
+                // will return true.
+                // removing from the dom causes the data to be removed.
+                $.data(pending[i][0], '_jqs_pending', false);
+                done.push(i);
+            }
+        }
+        for (i = done.length; i; i--) {
+            pending.splice(done[i - 1], 1);
+        }
+    };
+
+
+    /**
+     * User option handler
+     */
+    $.fn.sparkline.options = createClass({
+        init: function (tag, userOptions) {
+            var extendedOptions, defaults, base, tagOptionType;
+            this.userOptions = userOptions = userOptions || {};
+            this.tag = tag;
+            this.tagValCache = {};
+            defaults = $.fn.sparkline.defaults;
+            base = defaults.common;
+            this.tagOptionsPrefix = userOptions.enableTagOptions && (userOptions.tagOptionsPrefix || base.tagOptionsPrefix);
+
+            tagOptionType = this.getTagSetting('type');
+            if (tagOptionType === UNSET_OPTION) {
+                extendedOptions = defaults[userOptions.type || base.type];
+            } else {
+                extendedOptions = defaults[tagOptionType];
+            }
+            this.mergedOptions = $.extend({}, base, extendedOptions, userOptions);
+        },
+
+
+        getTagSetting: function (key) {
+            var prefix = this.tagOptionsPrefix,
+                val, i, pairs, keyval;
+            if (prefix === false || prefix === undefined) {
+                return UNSET_OPTION;
+            }
+            if (this.tagValCache.hasOwnProperty(key)) {
+                val = this.tagValCache.key;
+            } else {
+                val = this.tag.getAttribute(prefix + key);
+                if (val === undefined || val === null) {
+                    val = UNSET_OPTION;
+                } else if (val.substr(0, 1) === '[') {
+                    val = val.substr(1, val.length - 2).split(',');
+                    for (i = val.length; i--;) {
+                        val[i] = normalizeValue(val[i].replace(/(^\s*)|(\s*$)/g, ''));
+                    }
+                } else if (val.substr(0, 1) === '{') {
+                    pairs = val.substr(1, val.length - 2).split(',');
+                    val = {};
+                    for (i = pairs.length; i--;) {
+                        keyval = pairs[i].split(':', 2);
+                        val[keyval[0].replace(/(^\s*)|(\s*$)/g, '')] = normalizeValue(keyval[1].replace(/(^\s*)|(\s*$)/g, ''));
+                    }
+                } else {
+                    val = normalizeValue(val);
+                }
+                this.tagValCache.key = val;
+            }
+            return val;
+        },
+
+        get: function (key, defaultval) {
+            var tagOption = this.getTagSetting(key),
+                result;
+            if (tagOption !== UNSET_OPTION) {
+                return tagOption;
+            }
+            return (result = this.mergedOptions[key]) === undefined ? defaultval : result;
+        }
+    });
+
+
+    $.fn.sparkline._base = createClass({
+        disabled: false,
+
+        init: function (el, values, options, width, height) {
+            this.el = el;
+            this.$el = $(el);
+            this.values = values;
+            this.options = options;
+            this.width = width;
+            this.height = height;
+            this.currentRegion = undefined;
+        },
+
+        /**
+         * Setup the canvas
+         */
+        initTarget: function () {
+            var interactive = !this.options.get('disableInteraction');
+            if (!(this.target = this.$el.simpledraw(this.width, this.height, this.options.get('composite'), interactive))) {
+                this.disabled = true;
+            } else {
+                this.canvasWidth = this.target.pixelWidth;
+                this.canvasHeight = this.target.pixelHeight;
+            }
+        },
+
+        /**
+         * Actually render the chart to the canvas
+         */
+        render: function () {
+            if (this.disabled) {
+                this.el.innerHTML = '';
+                return false;
+            }
+            return true;
+        },
+
+        /**
+         * Return a region id for a given x/y co-ordinate
+         */
+        getRegion: function (x, y) {
+        },
+
+        /**
+         * Highlight an item based on the moused-over x,y co-ordinate
+         */
+        setRegionHighlight: function (el, x, y) {
+            var currentRegion = this.currentRegion,
+                highlightEnabled = !this.options.get('disableHighlight'),
+                newRegion;
+            if (x > this.canvasWidth || y > this.canvasHeight || x < 0 || y < 0) {
+                return null;
+            }
+            newRegion = this.getRegion(el, x, y);
+            if (currentRegion !== newRegion) {
+                if (currentRegion !== undefined && highlightEnabled) {
+                    this.removeHighlight();
+                }
+                this.currentRegion = newRegion;
+                if (newRegion !== undefined && highlightEnabled) {
+                    this.renderHighlight();
+                }
+                return true;
+            }
+            return false;
+        },
+
+        /**
+         * Reset any currently highlighted item
+         */
+        clearRegionHighlight: function () {
+            if (this.currentRegion !== undefined) {
+                this.removeHighlight();
+                this.currentRegion = undefined;
+                return true;
+            }
+            return false;
+        },
+
+        renderHighlight: function () {
+            this.changeHighlight(true);
+        },
+
+        removeHighlight: function () {
+            this.changeHighlight(false);
+        },
+
+        changeHighlight: function (highlight)  {},
+
+        /**
+         * Fetch the HTML to display as a tooltip
+         */
+        getCurrentRegionTooltip: function () {
+            var options = this.options,
+                header = '',
+                entries = [],
+                fields, formats, formatlen, fclass, text, i,
+                showFields, showFieldsKey, newFields, fv,
+                formatter, format, fieldlen, j;
+            if (this.currentRegion === undefined) {
+                return '';
+            }
+            fields = this.getCurrentRegionFields();
+            formatter = options.get('tooltipFormatter');
+            if (formatter) {
+                return formatter(this, options, fields);
+            }
+            if (options.get('tooltipChartTitle')) {
+                header += '<div class="jqs jqstitle">' + options.get('tooltipChartTitle') + '</div>\n';
+            }
+            formats = this.options.get('tooltipFormat');
+            if (!formats) {
+                return '';
+            }
+            if (!$.isArray(formats)) {
+                formats = [formats];
+            }
+            if (!$.isArray(fields)) {
+                fields = [fields];
+            }
+            showFields = this.options.get('tooltipFormatFieldlist');
+            showFieldsKey = this.options.get('tooltipFormatFieldlistKey');
+            if (showFields && showFieldsKey) {
+                // user-selected ordering of fields
+                newFields = [];
+                for (i = fields.length; i--;) {
+                    fv = fields[i][showFieldsKey];
+                    if ((j = $.inArray(fv, showFields)) != -1) {
+                        newFields[j] = fields[i];
+                    }
+                }
+                fields = newFields;
+            }
+            formatlen = formats.length;
+            fieldlen = fields.length;
+            for (i = 0; i < formatlen; i++) {
+                format = formats[i];
+                if (typeof format === 'string') {
+                    format = new SPFormat(format);
+                }
+                fclass = format.fclass || 'jqsfield';
+                for (j = 0; j < fieldlen; j++) {
+                    if (!fields[j].isNull || !options.get('tooltipSkipNull')) {
+                        $.extend(fields[j], {
+                            prefix: options.get('tooltipPrefix'),
+                            suffix: options.get('tooltipSuffix')
+                        });
+                        text = format.render(fields[j], options.get('tooltipValueLookups'), options);
+                        entries.push('<div class="' + fclass + '">' + text + '</div>');
+                    }
+                }
+            }
+            if (entries.length) {
+                return header + entries.join('\n');
+            }
+            return '';
+        },
+
+        getCurrentRegionFields: function () {},
+
+        calcHighlightColor: function (color, options) {
+            var highlightColor = options.get('highlightColor'),
+                lighten = options.get('highlightLighten'),
+                parse, mult, rgbnew, i;
+            if (highlightColor) {
+                return highlightColor;
+            }
+            if (lighten) {
+                // extract RGB values
+                parse = /^#([0-9a-f])([0-9a-f])([0-9a-f])$/i.exec(color) || /^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i.exec(color);
+                if (parse) {
+                    rgbnew = [];
+                    mult = color.length === 4 ? 16 : 1;
+                    for (i = 0; i < 3; i++) {
+                        rgbnew[i] = clipval(Math.round(parseInt(parse[i + 1], 16) * mult * lighten), 0, 255);
+                    }
+                    return 'rgb(' + rgbnew.join(',') + ')';
+                }
+
+            }
+            return color;
+        }
+
+    });
+
+    barHighlightMixin = {
+        changeHighlight: function (highlight) {
+            var currentRegion = this.currentRegion,
+                target = this.target,
+                shapeids = this.regionShapes[currentRegion],
+                newShapes;
+            // will be null if the region value was null
+            if (shapeids) {
+                newShapes = this.renderRegion(currentRegion, highlight);
+                if ($.isArray(newShapes) || $.isArray(shapeids)) {
+                    target.replaceWithShapes(shapeids, newShapes);
+                    this.regionShapes[currentRegion] = $.map(newShapes, function (newShape) {
+                        return newShape.id;
+                    });
+                } else {
+                    target.replaceWithShape(shapeids, newShapes);
+                    this.regionShapes[currentRegion] = newShapes.id;
+                }
+            }
+        },
+
+        render: function () {
+            var values = this.values,
+                target = this.target,
+                regionShapes = this.regionShapes,
+                shapes, ids, i, j;
+
+            if (!this.cls._super.render.call(this)) {
+                return;
+            }
+            for (i = values.length; i--;) {
+                shapes = this.renderRegion(i);
+                if (shapes) {
+                    if ($.isArray(shapes)) {
+                        ids = [];
+                        for (j = shapes.length; j--;) {
+                            shapes[j].append();
+                            ids.push(shapes[j].id);
+                        }
+                        regionShapes[i] = ids;
+                    } else {
+                        shapes.append();
+                        regionShapes[i] = shapes.id; // store just the shapeid
+                    }
+                } else {
+                    // null value
+                    regionShapes[i] = null;
+                }
+            }
+            target.render();
+        }
+    };
+
+    /**
+     * Line charts
+     */
+    $.fn.sparkline.line = line = createClass($.fn.sparkline._base, {
+        type: 'line',
+
+        init: function (el, values, options, width, height) {
+            line._super.init.call(this, el, values, options, width, height);
+            this.vertices = [];
+            this.regionMap = [];
+            this.xvalues = [];
+            this.yvalues = [];
+            this.yminmax = [];
+            this.hightlightSpotId = null;
+            this.lastShapeId = null;
+            this.initTarget();
+        },
+
+        getRegion: function (el, x, y) {
+            var i,
+                regionMap = this.regionMap; // maps regions to value positions
+            for (i = regionMap.length; i--;) {
+                if (regionMap[i] !== null && x >= regionMap[i][0] && x <= regionMap[i][1]) {
+                    return regionMap[i][2];
+                }
+            }
+            return undefined;
+        },
+
+        getCurrentRegionFields: function () {
+            var currentRegion = this.currentRegion;
+            return {
+                isNull: this.yvalues[currentRegion] === null,
+                x: this.xvalues[currentRegion],
+                y: this.yvalues[currentRegion],
+                color: this.options.get('lineColor'),
+                fillColor: this.options.get('fillColor'),
+                offset: currentRegion
+            };
+        },
+
+        renderHighlight: function () {
+            var currentRegion = this.currentRegion,
+                target = this.target,
+                vertex = this.vertices[currentRegion],
+                options = this.options,
+                spotRadius = options.get('spotRadius'),
+                highlightSpotColor = options.get('highlightSpotColor'),
+                highlightLineColor = options.get('highlightLineColor'),
+                highlightSpot, highlightLine;
+
+            if (!vertex) {
+                return;
+            }
+            if (spotRadius && highlightSpotColor) {
+                highlightSpot = target.drawCircle(vertex[0], vertex[1],
+                    spotRadius, undefined, highlightSpotColor);
+                this.highlightSpotId = highlightSpot.id;
+                target.insertAfterShape(this.lastShapeId, highlightSpot);
+            }
+            if (highlightLineColor) {
+                highlightLine = target.drawLine(vertex[0], this.canvasTop, vertex[0],
+                    this.canvasTop + this.canvasHeight, highlightLineColor);
+                this.highlightLineId = highlightLine.id;
+                target.insertAfterShape(this.lastShapeId, highlightLine);
+            }
+        },
+
+        removeHighlight: function () {
+            var target = this.target;
+            if (this.highlightSpotId) {
+                target.removeShapeId(this.highlightSpotId);
+                this.highlightSpotId = null;
+            }
+            if (this.highlightLineId) {
+                target.removeShapeId(this.highlightLineId);
+                this.highlightLineId = null;
+            }
+        },
+
+        scanValues: function () {
+            var values = this.values,
+                valcount = values.length,
+                xvalues = this.xvalues,
+                yvalues = this.yvalues,
+                yminmax = this.yminmax,
+                i, val, isStr, isArray, sp;
+            for (i = 0; i < valcount; i++) {
+                val = values[i];
+                isStr = typeof(values[i]) === 'string';
+                isArray = typeof(values[i]) === 'object' && values[i] instanceof Array;
+                sp = isStr && values[i].split(':');
+                if (isStr && sp.length === 2) { // x:y
+                    xvalues.push(Number(sp[0]));
+                    yvalues.push(Number(sp[1]));
+                    yminmax.push(Number(sp[1]));
+                } else if (isArray) {
+                    xvalues.push(val[0]);
+                    yvalues.push(val[1]);
+                    yminmax.push(val[1]);
+                } else {
+                    xvalues.push(i);
+                    if (values[i] === null || values[i] === 'null') {
+                        yvalues.push(null);
+                    } else {
+                        yvalues.push(Number(val));
+                        yminmax.push(Number(val));
+                    }
+                }
+            }
+            if (this.options.get('xvalues')) {
+                xvalues = this.options.get('xvalues');
+            }
+
+            this.maxy = this.maxyorg = Math.max.apply(Math, yminmax);
+            this.miny = this.minyorg = Math.min.apply(Math, yminmax);
+
+            this.maxx = Math.max.apply(Math, xvalues);
+            this.minx = Math.min.apply(Math, xvalues);
+
+            this.xvalues = xvalues;
+            this.yvalues = yvalues;
+            this.yminmax = yminmax;
+
+        },
+
+        processRangeOptions: function () {
+            var options = this.options,
+                normalRangeMin = options.get('normalRangeMin'),
+                normalRangeMax = options.get('normalRangeMax');
+
+            if (normalRangeMin !== undefined) {
+                if (normalRangeMin < this.miny) {
+                    this.miny = normalRangeMin;
+                }
+                if (normalRangeMax > this.maxy) {
+                    this.maxy = normalRangeMax;
+                }
+            }
+            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.miny)) {
+                this.miny = options.get('chartRangeMin');
+            }
+            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.maxy)) {
+                this.maxy = options.get('chartRangeMax');
+            }
+            if (options.get('chartRangeMinX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMinX') < this.minx)) {
+                this.minx = options.get('chartRangeMinX');
+            }
+            if (options.get('chartRangeMaxX') !== undefined && (options.get('chartRangeClipX') || options.get('chartRangeMaxX') > this.maxx)) {
+                this.maxx = options.get('chartRangeMaxX');
+            }
+
+        },
+
+        drawNormalRange: function (canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey) {
+            var normalRangeMin = this.options.get('normalRangeMin'),
+                normalRangeMax = this.options.get('normalRangeMax'),
+                ytop = canvasTop + Math.round(canvasHeight - (canvasHeight * ((normalRangeMax - this.miny) / rangey))),
+                height = Math.round((canvasHeight * (normalRangeMax - normalRangeMin)) / rangey);
+            this.target.drawRect(canvasLeft, ytop, canvasWidth, height, undefined, this.options.get('normalRangeColor')).append();
+        },
+
+        render: function () {
+            var options = this.options,
+                target = this.target,
+                canvasWidth = this.canvasWidth,
+                canvasHeight = this.canvasHeight,
+                vertices = this.vertices,
+                spotRadius = options.get('spotRadius'),
+                regionMap = this.regionMap,
+                rangex, rangey, yvallast,
+                canvasTop, canvasLeft,
+                vertex, path, paths, x, y, xnext, xpos, xposnext,
+                last, next, yvalcount, lineShapes, fillShapes, plen,
+                valueSpots, hlSpotsEnabled, color, xvalues, yvalues, i;
+
+            if (!line._super.render.call(this)) {
+                return;
+            }
+
+            this.scanValues();
+            this.processRangeOptions();
+
+            xvalues = this.xvalues;
+            yvalues = this.yvalues;
+
+            if (!this.yminmax.length || this.yvalues.length < 2) {
+                // empty or all null valuess
+                return;
+            }
+
+            canvasTop = canvasLeft = 0;
+
+            rangex = this.maxx - this.minx === 0 ? 1 : this.maxx - this.minx;
+            rangey = this.maxy - this.miny === 0 ? 1 : this.maxy - this.miny;
+            yvallast = this.yvalues.length - 1;
+
+            if (spotRadius && (canvasWidth < (spotRadius * 4) || canvasHeight < (spotRadius * 4))) {
+                spotRadius = 0;
+            }
+            if (spotRadius) {
+                // adjust the canvas size as required so that spots will fit
+                hlSpotsEnabled = options.get('highlightSpotColor') &&  !options.get('disableInteraction');
+                if (hlSpotsEnabled || options.get('minSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.miny)) {
+                    canvasHeight -= Math.ceil(spotRadius);
+                }
+                if (hlSpotsEnabled || options.get('maxSpotColor') || (options.get('spotColor') && yvalues[yvallast] === this.maxy)) {
+                    canvasHeight -= Math.ceil(spotRadius);
+                    canvasTop += Math.ceil(spotRadius);
+                }
+                if (hlSpotsEnabled ||
+                     ((options.get('minSpotColor') || options.get('maxSpotColor')) && (yvalues[0] === this.miny || yvalues[0] === this.maxy))) {
+                    canvasLeft += Math.ceil(spotRadius);
+                    canvasWidth -= Math.ceil(spotRadius);
+                }
+                if (hlSpotsEnabled || options.get('spotColor') ||
+                    (options.get('minSpotColor') || options.get('maxSpotColor') &&
+                        (yvalues[yvallast] === this.miny || yvalues[yvallast] === this.maxy))) {
+                    canvasWidth -= Math.ceil(spotRadius);
+                }
+            }
+
+
+            canvasHeight--;
+
+            if (options.get('normalRangeMin') !== undefined && !options.get('drawNormalOnTop')) {
+                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);
+            }
+
+            path = [];
+            paths = [path];
+            last = next = null;
+            yvalcount = yvalues.length;
+            for (i = 0; i < yvalcount; i++) {
+                x = xvalues[i];
+                xnext = xvalues[i + 1];
+                y = yvalues[i];
+                xpos = canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex));
+                xposnext = i < yvalcount - 1 ? canvasLeft + Math.round((xnext - this.minx) * (canvasWidth / rangex)) : canvasWidth;
+                next = xpos + ((xposnext - xpos) / 2);
+                regionMap[i] = [last || 0, next, i];
+                last = next;
+                if (y === null) {
+                    if (i) {
+                        if (yvalues[i - 1] !== null) {
+                            path = [];
+                            paths.push(path);
+                        }
+                        vertices.push(null);
+                    }
+                } else {
+                    if (y < this.miny) {
+                        y = this.miny;
+                    }
+                    if (y > this.maxy) {
+                        y = this.maxy;
+                    }
+                    if (!path.length) {
+                        // previous value was null
+                        path.push([xpos, canvasTop + canvasHeight]);
+                    }
+                    vertex = [xpos, canvasTop + Math.round(canvasHeight - (canvasHeight * ((y - this.miny) / rangey)))];
+                    path.push(vertex);
+                    vertices.push(vertex);
+                }
+            }
+
+            lineShapes = [];
+            fillShapes = [];
+            plen = paths.length;
+            for (i = 0; i < plen; i++) {
+                path = paths[i];
+                if (path.length) {
+                    if (options.get('fillColor')) {
+                        path.push([path[path.length - 1][0], (canvasTop + canvasHeight)]);
+                        fillShapes.push(path.slice(0));
+                        path.pop();
+                    }
+                    // if there's only a single point in this path, then we want to display it
+                    // as a vertical line which means we keep path[0]  as is
+                    if (path.length > 2) {
+                        // else we want the first value
+                        path[0] = [path[0][0], path[1][1]];
+                    }
+                    lineShapes.push(path);
+                }
+            }
+
+            // draw the fill first, then optionally the normal range, then the line on top of that
+            plen = fillShapes.length;
+            for (i = 0; i < plen; i++) {
+                target.drawShape(fillShapes[i],
+                    options.get('fillColor'), options.get('fillColor')).append();
+            }
+
+            if (options.get('normalRangeMin') !== undefined && options.get('drawNormalOnTop')) {
+                this.drawNormalRange(canvasLeft, canvasTop, canvasHeight, canvasWidth, rangey);
+            }
+
+            plen = lineShapes.length;
+            for (i = 0; i < plen; i++) {
+                target.drawShape(lineShapes[i], options.get('lineColor'), undefined,
+                    options.get('lineWidth')).append();
+            }
+
+            if (spotRadius && options.get('valueSpots')) {
+                valueSpots = options.get('valueSpots');
+                if (valueSpots.get === undefined) {
+                    valueSpots = new RangeMap(valueSpots);
+                }
+                for (i = 0; i < yvalcount; i++) {
+                    color = valueSpots.get(yvalues[i]);
+                    if (color) {
+                        target.drawCircle(canvasLeft + Math.round((xvalues[i] - this.minx) * (canvasWidth / rangex)),
+                            canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[i] - this.miny) / rangey))),
+                            spotRadius, undefined,
+                            color).append();
+                    }
+                }
+
+            }
+            if (spotRadius && options.get('spotColor') && yvalues[yvallast] !== null) {
+                target.drawCircle(canvasLeft + Math.round((xvalues[xvalues.length - 1] - this.minx) * (canvasWidth / rangex)),
+                    canvasTop + Math.round(canvasHeight - (canvasHeight * ((yvalues[yvallast] - this.miny) / rangey))),
+                    spotRadius, undefined,
+                    options.get('spotColor')).append();
+            }
+            if (this.maxy !== this.minyorg) {
+                if (spotRadius && options.get('minSpotColor')) {
+                    x = xvalues[$.inArray(this.minyorg, yvalues)];
+                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),
+                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.minyorg - this.miny) / rangey))),
+                        spotRadius, undefined,
+                        options.get('minSpotColor')).append();
+                }
+                if (spotRadius && options.get('maxSpotColor')) {
+                    x = xvalues[$.inArray(this.maxyorg, yvalues)];
+                    target.drawCircle(canvasLeft + Math.round((x - this.minx) * (canvasWidth / rangex)),
+                        canvasTop + Math.round(canvasHeight - (canvasHeight * ((this.maxyorg - this.miny) / rangey))),
+                        spotRadius, undefined,
+                        options.get('maxSpotColor')).append();
+                }
+            }
+
+            this.lastShapeId = target.getLastShapeId();
+            this.canvasTop = canvasTop;
+            target.render();
+        }
+    });
+
+    /**
+     * Bar charts
+     */
+    $.fn.sparkline.bar = bar = createClass($.fn.sparkline._base, barHighlightMixin, {
+        type: 'bar',
+
+        init: function (el, values, options, width, height) {
+            var barWidth = parseInt(options.get('barWidth'), 10),
+                barSpacing = parseInt(options.get('barSpacing'), 10),
+                chartRangeMin = options.get('chartRangeMin'),
+                chartRangeMax = options.get('chartRangeMax'),
+                chartRangeClip = options.get('chartRangeClip'),
+                stackMin = Infinity,
+                stackMax = -Infinity,
+                isStackString, groupMin, groupMax, stackRanges,
+                numValues, i, vlen, range, zeroAxis, xaxisOffset, min, max, clipMin, clipMax,
+                stacked, vlist, j, slen, svals, val, yoffset, yMaxCalc, canvasHeightEf;
+            bar._super.init.call(this, el, values, options, width, height);
+
+            // scan values to determine whether to stack bars
+            for (i = 0, vlen = values.length; i < vlen; i++) {
+                val = values[i];
+                isStackString = typeof(val) === 'string' && val.indexOf(':') > -1;
+                if (isStackString || $.isArray(val)) {
+                    stacked = true;
+                    if (isStackString) {
+                        val = values[i] = normalizeValues(val.split(':'));
+                    }
+                    val = remove(val, null); // min/max will treat null as zero
+                    groupMin = Math.min.apply(Math, val);
+                    groupMax = Math.max.apply(Math, val);
+                    if (groupMin < stackMin) {
+                        stackMin = groupMin;
+                    }
+                    if (groupMax > stackMax) {
+                        stackMax = groupMax;
+                    }
+                }
+            }
+
+            this.stacked = stacked;
+            this.regionShapes = {};
+            this.barWidth = barWidth;
+            this.barSpacing = barSpacing;
+            this.totalBarWidth = barWidth + barSpacing;
+            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);
+
+            this.initTarget();
+
+            if (chartRangeClip) {
+                clipMin = chartRangeMin === undefined ? -Infinity : chartRangeMin;
+                clipMax = chartRangeMax === undefined ? Infinity : chartRangeMax;
+            }
+
+            numValues = [];
+            stackRanges = stacked ? [] : numValues;
+            var stackTotals = [];
+            var stackRangesNeg = [];
+            for (i = 0, vlen = values.length; i < vlen; i++) {
+                if (stacked) {
+                    vlist = values[i];
+                    values[i] = svals = [];
+                    stackTotals[i] = 0;
+                    stackRanges[i] = stackRangesNeg[i] = 0;
+                    for (j = 0, slen = vlist.length; j < slen; j++) {
+                        val = svals[j] = chartRangeClip ? clipval(vlist[j], clipMin, clipMax) : vlist[j];
+                        if (val !== null) {
+                            if (val > 0) {
+                                stackTotals[i] += val;
+                            }
+                            if (stackMin < 0 && stackMax > 0) {
+                                if (val < 0) {
+                                    stackRangesNeg[i] += Math.abs(val);
+                                } else {
+                                    stackRanges[i] += val;
+                                }
+                            } else {
+                                stackRanges[i] += Math.abs(val - (val < 0 ? stackMax : stackMin));
+                            }
+                            numValues.push(val);
+                        }
+                    }
+                } else {
+                    val = chartRangeClip ? clipval(values[i], clipMin, clipMax) : values[i];
+                    val = values[i] = normalizeValue(val);
+                    if (val !== null) {
+                        numValues.push(val);
+                    }
+                }
+            }
+            this.max = max = Math.max.apply(Math, numValues);
+            this.min = min = Math.min.apply(Math, numValues);
+            this.stackMax = stackMax = stacked ? Math.max.apply(Math, stackTotals) : max;
+            this.stackMin = stackMin = stacked ? Math.min.apply(Math, numValues) : min;
+
+            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < min)) {
+                min = options.get('chartRangeMin');
+            }
+            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > max)) {
+                max = options.get('chartRangeMax');
+            }
+
+            this.zeroAxis = zeroAxis = options.get('zeroAxis', true);
+            if (min <= 0 && max >= 0 && zeroAxis) {
+                xaxisOffset = 0;
+            } else if (zeroAxis == false) {
+                xaxisOffset = min;
+            } else if (min > 0) {
+                xaxisOffset = min;
+            } else {
+                xaxisOffset = max;
+            }
+            this.xaxisOffset = xaxisOffset;
+
+            range = stacked ? (Math.max.apply(Math, stackRanges) + Math.max.apply(Math, stackRangesNeg)) : max - min;
+
+            // as we plot zero/min values a single pixel line, we add a pixel to all other
+            // values - Reduce the effective canvas size to suit
+            this.canvasHeightEf = (zeroAxis && min < 0) ? this.canvasHeight - 2 : this.canvasHeight - 1;
+
+            if (min < xaxisOffset) {
+                yMaxCalc = (stacked && max >= 0) ? stackMax : max;
+                yoffset = (yMaxCalc - xaxisOffset) / range * this.canvasHeight;
+                if (yoffset !== Math.ceil(yoffset)) {
+                    this.canvasHeightEf -= 2;
+                    yoffset = Math.ceil(yoffset);
+                }
+            } else {
+                yoffset = this.canvasHeight;
+            }
+            this.yoffset = yoffset;
+
+            if ($.isArray(options.get('colorMap'))) {
+                this.colorMapByIndex = options.get('colorMap');
+                this.colorMapByValue = null;
+            } else {
+                this.colorMapByIndex = null;
+                this.colorMapByValue = options.get('colorMap');
+                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {
+                    this.colorMapByValue = new RangeMap(this.colorMapByValue);
+                }
+            }
+
+            this.range = range;
+        },
+
+        getRegion: function (el, x, y) {
+            var result = Math.floor(x / this.totalBarWidth);
+            return (result < 0 || result >= this.values.length) ? undefined : result;
+        },
+
+        getCurrentRegionFields: function () {
+            var currentRegion = this.currentRegion,
+                values = ensureArray(this.values[currentRegion]),
+                result = [],
+                value, i;
+            for (i = values.length; i--;) {
+                value = values[i];
+                result.push({
+                    isNull: value === null,
+                    value: value,
+                    color: this.calcColor(i, value, currentRegion),
+                    offset: currentRegion
+                });
+            }
+            return result;
+        },
+
+        calcColor: function (stacknum, value, valuenum) {
+            var colorMapByIndex = this.colorMapByIndex,
+                colorMapByValue = this.colorMapByValue,
+                options = this.options,
+                color, newColor;
+            if (this.stacked) {
+                color = options.get('stackedBarColor');
+            } else {
+                color = (value < 0) ? options.get('negBarColor') : options.get('barColor');
+            }
+            if (value === 0 && options.get('zeroColor') !== undefined) {
+                color = options.get('zeroColor');
+            }
+            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {
+                color = newColor;
+            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {
+                color = colorMapByIndex[valuenum];
+            }
+            return $.isArray(color) ? color[stacknum % color.length] : color;
+        },
+
+        /**
+         * Render bar(s) for a region
+         */
+        renderRegion: function (valuenum, highlight) {
+            var vals = this.values[valuenum],
+                options = this.options,
+                xaxisOffset = this.xaxisOffset,
+                result = [],
+                range = this.range,
+                stacked = this.stacked,
+                target = this.target,
+                x = valuenum * this.totalBarWidth,
+                canvasHeightEf = this.canvasHeightEf,
+                yoffset = this.yoffset,
+                y, height, color, isNull, yoffsetNeg, i, valcount, val, minPlotted, allMin;
+
+            vals = $.isArray(vals) ? vals : [vals];
+            valcount = vals.length;
+            val = vals[0];
+            isNull = all(null, vals);
+            allMin = all(xaxisOffset, vals, true);
+
+            if (isNull) {
+                if (options.get('nullColor')) {
+                    color = highlight ? options.get('nullColor') : this.calcHighlightColor(options.get('nullColor'), options);
+                    y = (yoffset > 0) ? yoffset - 1 : yoffset;
+                    return target.drawRect(x, y, this.barWidth - 1, 0, color, color);
+                } else {
+                    return undefined;
+                }
+            }
+            yoffsetNeg = yoffset;
+            for (i = 0; i < valcount; i++) {
+                val = vals[i];
+
+                if (stacked && val === xaxisOffset) {
+                    if (!allMin || minPlotted) {
+                        continue;
+                    }
+                    minPlotted = true;
+                }
+
+                if (range > 0) {
+                    height = Math.floor(canvasHeightEf * ((Math.abs(val - xaxisOffset) / range))) + 1;
+                } else {
+                    height = 1;
+                }
+                if (val < xaxisOffset || (val === xaxisOffset && yoffset === 0)) {
+                    y = yoffsetNeg;
+                    yoffsetNeg += height;
+                } else {
+                    y = yoffset - height;
+                    yoffset -= height;
+                }
+                color = this.calcColor(i, val, valuenum);
+                if (highlight) {
+                    color = this.calcHighlightColor(color, options);
+                }
+                result.push(target.drawRect(x, y, this.barWidth - 1, height - 1, color, color));
+            }
+            if (result.length === 1) {
+                return result[0];
+            }
+            return result;
+        }
+    });
+
+    /**
+     * Tristate charts
+     */
+    $.fn.sparkline.tristate = tristate = createClass($.fn.sparkline._base, barHighlightMixin, {
+        type: 'tristate',
+
+        init: function (el, values, options, width, height) {
+            var barWidth = parseInt(options.get('barWidth'), 10),
+                barSpacing = parseInt(options.get('barSpacing'), 10);
+            tristate._super.init.call(this, el, values, options, width, height);
+
+            this.regionShapes = {};
+            this.barWidth = barWidth;
+            this.barSpacing = barSpacing;
+            this.totalBarWidth = barWidth + barSpacing;
+            this.values = $.map(values, Number);
+            this.width = width = (values.length * barWidth) + ((values.length - 1) * barSpacing);
+
+            if ($.isArray(options.get('colorMap'))) {
+                this.colorMapByIndex = options.get('colorMap');
+                this.colorMapByValue = null;
+            } else {
+                this.colorMapByIndex = null;
+                this.colorMapByValue = options.get('colorMap');
+                if (this.colorMapByValue && this.colorMapByValue.get === undefined) {
+                    this.colorMapByValue = new RangeMap(this.colorMapByValue);
+                }
+            }
+            this.initTarget();
+        },
+
+        getRegion: function (el, x, y) {
+            return Math.floor(x / this.totalBarWidth);
+        },
+
+        getCurrentRegionFields: function () {
+            var currentRegion = this.currentRegion;
+            return {
+                isNull: this.values[currentRegion] === undefined,
+                value: this.values[currentRegion],
+                color: this.calcColor(this.values[currentRegion], currentRegion),
+                offset: currentRegion
+            };
+        },
+
+        calcColor: function (value, valuenum) {
+            var values = this.values,
+                options = this.options,
+                colorMapByIndex = this.colorMapByIndex,
+                colorMapByValue = this.colorMapByValue,
+                color, newColor;
+
+            if (colorMapByValue && (newColor = colorMapByValue.get(value))) {
+                color = newColor;
+            } else if (colorMapByIndex && colorMapByIndex.length > valuenum) {
+                color = colorMapByIndex[valuenum];
+            } else if (values[valuenum] < 0) {
+                color = options.get('negBarColor');
+            } else if (values[valuenum] > 0) {
+                color = options.get('posBarColor');
+            } else {
+                color = options.get('zeroBarColor');
+            }
+            return color;
+        },
+
+        renderRegion: function (valuenum, highlight) {
+            var values = this.values,
+                options = this.options,
+                target = this.target,
+                canvasHeight, height, halfHeight,
+                x, y, color;
+
+            canvasHeight = target.pixelHeight;
+            halfHeight = Math.round(canvasHeight / 2);
+
+            x = valuenum * this.totalBarWidth;
+            if (values[valuenum] < 0) {
+                y = halfHeight;
+                height = halfHeight - 1;
+            } else if (values[valuenum] > 0) {
+                y = 0;
+                height = halfHeight - 1;
+            } else {
+                y = halfHeight - 1;
+                height = 2;
+            }
+            color = this.calcColor(values[valuenum], valuenum);
+            if (color === null) {
+                return;
+            }
+            if (highlight) {
+                color = this.calcHighlightColor(color, options);
+            }
+            return target.drawRect(x, y, this.barWidth - 1, height - 1, color, color);
+        }
+    });
+
+    /**
+     * Discrete charts
+     */
+    $.fn.sparkline.discrete = discrete = createClass($.fn.sparkline._base, barHighlightMixin, {
+        type: 'discrete',
+
+        init: function (el, values, options, width, height) {
+            discrete._super.init.call(this, el, values, options, width, height);
+
+            this.regionShapes = {};
+            this.values = values = $.map(values, Number);
+            this.min = Math.min.apply(Math, values);
+            this.max = Math.max.apply(Math, values);
+            this.range = this.max - this.min;
+            this.width = width = options.get('width') === 'auto' ? values.length * 2 : this.width;
+            this.interval = Math.floor(width / values.length);
+            this.itemWidth = width / values.length;
+            if (options.get('chartRangeMin') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMin') < this.min)) {
+                this.min = options.get('chartRangeMin');
+            }
+            if (options.get('chartRangeMax') !== undefined && (options.get('chartRangeClip') || options.get('chartRangeMax') > this.max)) {
+                this.max = options.get('chartRangeMax');
+            }
+            this.initTarget();
+            if (this.target) {
+                this.lineHeight = options.get('lineHeight') === 'auto' ? Math.round(this.canvasHeight * 0.3) : options.get('lineHeight');
+            }
+        },
+
+        getRegion: function (el, x, y) {
+            return Math.floor(x / this.itemWidth);
+        },
+
+        getCurrentRegionFields: function () {
+            var currentRegion = this.currentRegion;
+            return {
+                isNull: this.values[currentRegion] === undefined,
+                value: this.values[currentRegion],
+                offset: currentRegion
+            };
+        },
+
+        renderRegion: function (valuenum, highlight) {
+            var values = this.values,
+                options = this.options,
+                min = this.min,
+                max = this.max,
+                range = this.range,
+                interval = this.interval,
+                target = this.target,
+                canvasHeight = this.canvasHeight,
+                lineHeight = this.lineHeight,
+                pheight = canvasHeight - lineHeight,
+                ytop, val, color, x;
+
+            val = clipval(values[valuenum], min, max);
+            x = valuenum * interval;
+            ytop = Math.round(pheight - pheight * ((val - min) / range));
+            color = (options.get('thresholdColor') && val < options.get('thresholdValue')) ? options.get('thresholdColor') : options.get('lineColor');
+            if (highlight) {
+                color = this.calcHighlightColor(color, options);
+            }
+            return target.drawLine(x, ytop, x, ytop + lineHeight, color);
+        }
+    });
+
+    /**
+     * Bullet charts
+     */
+    $.fn.sparkline.bullet = bullet = createClass($.fn.sparkline._base, {
+        type: 'bullet',
+
+        init: function (el, values, options, width, height) {
+            var min, max, vals;
+            bullet._super.init.call(this, el, values, options, width, height);
+
+            // values: target, performance, range1, range2, range3
+            this.values = values = normalizeValues(values);
+            // target or performance could be null
+            vals = values.slice();
+            vals[0] = vals[0] === null ? vals[2] : vals[0];
+            vals[1] = values[1] === null ? vals[2] : vals[1];
+            min = Math.min.apply(Math, values);
+            max = Math.max.apply(Math, values);
+            if (options.get('base') === undefined) {
+                min = min < 0 ? min : 0;
+            } else {
+                min = options.get('base');
+            }
+            this.min = min;
+            this.max = max;
+            this.range = max - min;
+            this.shapes = {};
+            this.valueShapes = {};
+            this.regiondata = {};
+            this.width = width = options.get('width') === 'auto' ? '4.0em' : width;
+            this.target = this.$el.simpledraw(width, height, options.get('composite'));
+            if (!values.length) {
+                this.disabled = true;
+            }
+            this.initTarget();
+        },
+
+        getRegion: function (el, x, y) {
+            var shapeid = this.target.getShapeAt(el, x, y);
+            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;
+        },
+
+        getCurrentRegionFields: function () {
+            var currentRegion = this.currentRegion;
+            return {
+                fieldkey: currentRegion.substr(0, 1),
+                value: this.values[currentRegion.substr(1)],
+                region: currentRegion
+            };
+        },
+
+        changeHighlight: function (highlight) {
+            var currentRegion = this.currentRegion,
+                shapeid = this.valueShapes[currentRegion],
+                shape;
+            delete this.shapes[shapeid];
+            switch (currentRegion.substr(0, 1)) {
+                case 'r':
+                    shape = this.renderRange(currentRegion.substr(1), highlight);
+                    break;
+                case 'p':
+                    shape = this.renderPerformance(highlight);
+                    break;
+                case 't':
+                    shape = this.renderTarget(highlight);
+                    break;
+            }
+            this.valueShapes[currentRegion] = shape.id;
+            this.shapes[shape.id] = currentRegion;
+            this.target.replaceWithShape(shapeid, shape);
+        },
+
+        renderRange: function (rn, highlight) {
+            var rangeval = this.values[rn],
+                rangewidth = Math.round(this.canvasWidth * ((rangeval - this.min) / this.range)),
+                color = this.options.get('rangeColors')[rn - 2];
+            if (highlight) {
+                color = this.calcHighlightColor(color, this.options);
+            }
+            return this.target.drawRect(0, 0, rangewidth - 1, this.canvasHeight - 1, color, color);
+        },
+
+        renderPerformance: function (highlight) {
+            var perfval = this.values[1],
+                perfwidth = Math.round(this.canvasWidth * ((perfval - this.min) / this.range)),
+                color = this.options.get('performanceColor');
+            if (highlight) {
+                color = this.calcHighlightColor(color, this.options);
+            }
+            return this.target.drawRect(0, Math.round(this.canvasHeight * 0.3), perfwidth - 1,
+                Math.round(this.canvasHeight * 0.4) - 1, color, color);
+        },
+
+        renderTarget: function (highlight) {
+            var targetval = this.values[0],
+                x = Math.round(this.canvasWidth * ((targetval - this.min) / this.range) - (this.options.get('targetWidth') / 2)),
+                targettop = Math.round(this.canvasHeight * 0.10),
+                targetheight = this.canvasHeight - (targettop * 2),
+                color = this.options.get('targetColor');
+            if (highlight) {
+                color = this.calcHighlightColor(color, this.options);
+            }
+            return this.target.drawRect(x, targettop, this.options.get('targetWidth') - 1, targetheight - 1, color, color);
+        },
+
+        render: function () {
+            var vlen = this.values.length,
+                target = this.target,
+                i, shape;
+            if (!bullet._super.render.call(this)) {
+                return;
+            }
+            for (i = 2; i < vlen; i++) {
+                shape = this.renderRange(i).append();
+                this.shapes[shape.id] = 'r' + i;
+                this.valueShapes['r' + i] = shape.id;
+            }
+            if (this.values[1] !== null) {
+                shape = this.renderPerformance().append();
+                this.shapes[shape.id] = 'p1';
+                this.valueShapes.p1 = shape.id;
+            }
+            if (this.values[0] !== null) {
+                shape = this.renderTarget().append();
+                this.shapes[shape.id] = 't0';
+                this.valueShapes.t0 = shape.id;
+            }
+            target.render();
+        }
+    });
+
+    /**
+     * Pie charts
+     */
+    $.fn.sparkline.pie = pie = createClass($.fn.sparkline._base, {
+        type: 'pie',
+
+        init: function (el, values, options, width, height) {
+            var total = 0, i;
+
+            pie._super.init.call(this, el, values, options, width, height);
+
+            this.shapes = {}; // map shape ids to value offsets
+            this.valueShapes = {}; // maps value offsets to shape ids
+            this.values = values = $.map(values, Number);
+
+            if (options.get('width') === 'auto') {
+                this.width = this.height;
+            }
+
+            if (values.length > 0) {
+                for (i = values.length; i--;) {
+                    total += values[i];
+                }
+            }
+            this.total = total;
+            this.initTarget();
+            this.radius = Math.floor(Math.min(this.canvasWidth, this.canvasHeight) / 2);
+        },
+
+        getRegion: function (el, x, y) {
+            var shapeid = this.target.getShapeAt(el, x, y);
+            return (shapeid !== undefined && this.shapes[shapeid] !== undefined) ? this.shapes[shapeid] : undefined;
+        },
+
+        getCurrentRegionFields: function () {
+            var currentRegion = this.currentRegion;
+            return {
+                isNull: this.values[currentRegion] === undefined,
+                value: this.values[currentRegion],
+                percent: this.values[currentRegion] / this.total * 100,
+                color: this.options.get('sliceColors')[currentRegion % this.options.get('sliceColors').length],
+                offset: currentRegion
+            };
+        },
+
+        changeHighlight: function (highlight) {
+            var currentRegion = this.currentRegion,
+                 newslice = this.renderSlice(currentRegion, highlight),
+                 shapeid = this.valueShapes[currentRegion];
+            delete this.shapes[shapeid];
+            this.target.replaceWithShape(shapeid, newslice);
+            this.valueShapes[currentRegion] = newslice.id;
+            this.shapes[newslice.id] = currentRegion;
+        },
+
+        renderSlice: function (valuenum, highlight) {
+            var target = this.target,
+                options = this.options,
+                radius = this.radius,
+                borderWidth = options.get('borderWidth'),
+                offset = options.get('offset'),
+                circle = 2 * Math.PI,
+                values = this.values,
+                total = this.total,
+                next = offset ? (2*Math.PI)*(offset/360) : 0,
+                start, end, i, vlen, color;
+
+            vlen = values.length;
+            for (i = 0; i < vlen; i++) {
+                start = next;
+                end = next;
+                if (total > 0) {  // avoid divide by zero
+                    end = next + (circle * (values[i] / total));
+                }
+                if (valuenum === i) {
+                    color = options.get('sliceColors')[i % options.get('sliceColors').length];
+                    if (highlight) {
+                        color = this.calcHighlightColor(color, options);
+                    }
+
+                    return target.drawPieSlice(radius, radius, radius - borderWidth, start, end, undefined, color);
+                }
+                next = end;
+            }
+        },
+
+        render: function () {
+            var target = this.target,
+                values = this.values,
+                options = this.options,
+                radius = this.radius,
+                borderWidth = options.get('borderWidth'),
+                shape, i;
+
+            if (!pie._super.render.call(this)) {
+                return;
+            }
+            if (borderWidth) {
+                target.drawCircle(radius, radius, Math.floor(radius - (borderWidth / 2)),
+                    options.get('borderColor'), undefined, borderWidth).append();
+            }
+            for (i = values.length; i--;) {
+                if (values[i]) { // don't render zero values
+                    shape = this.renderSlice(i).append();
+                    this.valueShapes[i] = shape.id; // store just the shapeid
+                    this.shapes[shape.id] = i;
+                }
+            }
+            target.render();
+        }
+    });
+
+    /**
+     * Box plots
+     */
+    $.fn.sparkline.box = box = createClass($.fn.sparkline._base, {
+        type: 'box',
+
+        init: function (el, values, options, width, height) {
+            box._super.init.call(this, el, values, options, width, height);
+            this.values = $.map(values, Number);
+            this.width = options.get('width') === 'auto' ? '4.0em' : width;
+            this.initTarget();
+            if (!this.values.length) {
+                this.disabled = 1;
+            }
+        },
+
+        /**
+         * Simulate a single region
+         */
+        getRegion: function () {
+            return 1;
+        },
+
+        getCurrentRegionFields: function () {
+            var result = [
+                { field: 'lq', value: this.quartiles[0] },
+                { field: 'med', value: this.quartiles[1] },
+                { field: 'uq', value: this.quartiles[2] }
+            ];
+            if (this.loutlier !== undefined) {
+                result.push({ field: 'lo', value: this.loutlier});
+            }
+            if (this.routlier !== undefined) {
+                result.push({ field: 'ro', value: this.routlier});
+            }
+            if (this.lwhisker !== undefined) {
+                result.push({ field: 'lw', value: this.lwhisker});
+            }
+            if (this.rwhisker !== undefined) {
+                result.push({ field: 'rw', value: this.rwhisker});
+            }
+            return result;
+        },
+
+        render: function () {
+            var target = this.target,
+                values = this.values,
+                vlen = values.length,
+                options = this.options,
+                canvasWidth = this.canvasWidth,
+                canvasHeight = this.canvasHeight,
+                minValue = options.get('chartRangeMin') === undefined ? Math.min.apply(Math, values) : options.get('chartRangeMin'),
+                maxValue = options.get('chartRangeMax') === undefined ? Math.max.apply(Math, values) : options.get('chartRangeMax'),
+                canvasLeft = 0,
+                lwhisker, loutlier, iqr, q1, q2, q3, rwhisker, routlier, i,
+                size, unitSize;
+
+            if (!box._super.render.call(this)) {
+                return;
+            }
+
+            if (options.get('raw')) {
+                if (options.get('showOutliers') && values.length > 5) {
+                    loutlier = values[0];
+                    lwhisker = values[1];
+                    q1 = values[2];
+                    q2 = values[3];
+                    q3 = values[4];
+                    rwhisker = values[5];
+                    routlier = values[6];
+                } else {
+                    lwhisker = values[0];
+                    q1 = values[1];
+                    q2 = values[2];
+                    q3 = values[3];
+                    rwhisker = values[4];
+                }
+            } else {
+                values.sort(function (a, b) { return a - b; });
+                q1 = quartile(values, 1);
+                q2 = quartile(values, 2);
+                q3 = quartile(values, 3);
+                iqr = q3 - q1;
+                if (options.get('showOutliers')) {
+                    lwhisker = rwhisker = undefined;
+                    for (i = 0; i < vlen; i++) {
+                        if (lwhisker === undefined && values[i] > q1 - (iqr * options.get('outlierIQR'))) {
+                            lwhisker = values[i];
+                        }
+                        if (values[i] < q3 + (iqr * options.get('outlierIQR'))) {
+                            rwhisker = values[i];
+                        }
+                    }
+                    loutlier = values[0];
+                    routlier = values[vlen - 1];
+                } else {
+                    lwhisker = values[0];
+                    rwhisker = values[vlen - 1];
+                }
+            }
+            this.quartiles = [q1, q2, q3];
+            this.lwhisker = lwhisker;
+            this.rwhisker = rwhisker;
+            this.loutlier = loutlier;
+            this.routlier = routlier;
+
+            unitSize = canvasWidth / (maxValue - minValue + 1);
+            if (options.get('showOutliers')) {
+                canvasLeft = Math.ceil(options.get('spotRadius'));
+                canvasWidth -= 2 * Math.ceil(options.get('spotRadius'));
+                unitSize = canvasWidth / (maxValue - minValue + 1);
+                if (loutlier < lwhisker) {
+                    target.drawCircle((loutlier - minValue) * unitSize + canvasLeft,
+                        canvasHeight / 2,
+                        options.get('spotRadius'),
+                        options.get('outlierLineColor'),
+                        options.get('outlierFillColor')).append();
+                }
+                if (routlier > rwhisker) {
+                    target.drawCircle((routlier - minValue) * unitSize + canvasLeft,
+                        canvasHeight / 2,
+                        options.get('spotRadius'),
+                        options.get('outlierLineColor'),
+                        options.get('outlierFillColor')).append();
+                }
+            }
+
+            // box
+            target.drawRect(
+                Math.round((q1 - minValue) * unitSize + canvasLeft),
+                Math.round(canvasHeight * 0.1),
+                Math.round((q3 - q1) * unitSize),
+                Math.round(canvasHeight * 0.8),
+                options.get('boxLineColor'),
+                options.get('boxFillColor')).append();
+            // left whisker
+            target.drawLine(
+                Math.round((lwhisker - minValue) * unitSize + canvasLeft),
+                Math.round(canvasHeight / 2),
+                Math.round((q1 - minValue) * unitSize + canvasLeft),
+                Math.round(canvasHeight / 2),
+                options.get('lineColor')).append();
+            target.drawLine(
+                Math.round((lwhisker - minValue) * unitSize + canvasLeft),
+                Math.round(canvasHeight / 4),
+                Math.round((lwhisker - minValue) * unitSize + canvasLeft),
+                Math.round(canvasHeight - canvasHeight / 4),
+                options.get('whiskerColor')).append();
+            // right whisker
+            target.drawLine(Math.round((rwhisker - minValue) * unitSize + canvasLeft),
+                Math.round(canvasHeight / 2),
+                Math.round((q3 - minValue) * unitSize + canvasLeft),
+                Math.round(canvasHeight / 2),
+                options.get('lineColor')).append();
+            target.drawLine(
+                Math.round((rwhisker - minValue) * unitSize + canvasLeft),
+                Math.round(canvasHeight / 4),
+                Math.round((rwhisker - minValue) * unitSize + canvasLeft),
+                Math.round(canvasHeight - canvasHeight / 4),
+                options.get('whiskerColor')).append();
+            // median line
+            target.drawLine(
+                Math.round((q2 - minValue) * unitSize + canvasLeft),
+                Math.round(canvasHeight * 0.1),
+                Math.round((q2 - minValue) * unitSize + canvasLeft),
+                Math.round(canvasHeight * 0.9),
+                options.get('medianColor')).append();
+            if (options.get('target')) {
+                size = Math.ceil(options.get('spotRadius'));
+                target.drawLine(
+                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),
+                    Math.round((canvasHeight / 2) - size),
+                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft),
+                    Math.round((canvasHeight / 2) + size),
+                    options.get('targetColor')).append();
+                target.drawLine(
+                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft - size),
+                    Math.round(canvasHeight / 2),
+                    Math.round((options.get('target') - minValue) * unitSize + canvasLeft + size),
+                    Math.round(canvasHeight / 2),
+                    options.get('targetColor')).append();
+            }
+            target.render();
+        }
+    });
+
+    // Setup a very simple "virtual canvas" to make drawing the few shapes we need easier
+    // This is accessible as $(foo).simpledraw()
+
+    VShape = createClass({
+        init: function (target, id, type, args) {
+            this.target = target;
+            this.id = id;
+            this.type = type;
+            this.args = args;
+        },
+        append: function () {
+            this.target.appendShape(this);
+            return this;
+        }
+    });
+
+    VCanvas_base = createClass({
+        _pxregex: /(\d+)(px)?\s*$/i,
+
+        init: function (width, height, target) {
+            if (!width) {
+                return;
+            }
+            this.width = width;
+            this.height = height;
+            this.target = target;
+            this.lastShapeId = null;
+            if (target[0]) {
+                target = target[0];
+            }
+            $.data(target, '_jqs_vcanvas', this);
+        },
+
+        drawLine: function (x1, y1, x2, y2, lineColor, lineWidth) {
+            return this.drawShape([[x1, y1], [x2, y2]], lineColor, lineWidth);
+        },
+
+        drawShape: function (path, lineColor, fillColor, lineWidth) {
+            return this._genShape('Shape', [path, lineColor, fillColor, lineWidth]);
+        },
+
+        drawCircle: function (x, y, radius, lineColor, fillColor, lineWidth) {
+            return this._genShape('Circle', [x, y, radius, lineColor, fillColor, lineWidth]);
+        },
+
+        drawPieSlice: function (x, y, radius, startAngle, endAngle, lineColor, fillColor) {
+            return this._genShape('PieSlice', [x, y, radius, startAngle, endAngle, lineColor, fillColor]);
+        },
+
+        drawRect: function (x, y, width, height, lineColor, fillColor) {
+            return this._genShape('Rect', [x, y, width, height, lineColor, fillColor]);
+        },
+
+        getElement: function () {
+            return this.canvas;
+        },
+
+        /**
+         * Return the most recently inserted shape id
+         */
+        getLastShapeId: function () {
+            return this.lastShapeId;
+        },
+
+        /**
+         * Clear and reset the canvas
+         */
+        reset: function () {
+            alert('reset not implemented');
+        },
+
+        _insert: function (el, target) {
+            $(target).html(el);
+        },
+
+        /**
+         * Calculate the pixel dimensions of the canvas
+         */
+        _calculatePixelDims: function (width, height, canvas) {
+            // XXX This should probably be a configurable option
+            var match;
+            match = this._pxregex.exec(height);
+            if (match) {
+                this.pixelHeight = match[1];
+            } else {
+                this.pixelHeight = $(canvas).height();
+            }
+            match = this._pxregex.exec(width);
+            if (match) {
+                this.pixelWidth = match[1];
+            } else {
+                this.pixelWidth = $(canvas).width();
+            }
+        },
+
+        /**
+         * Generate a shape object and id for later rendering
+         */
+        _genShape: function (shapetype, shapeargs) {
+            var id = shapeCount++;
+            shapeargs.unshift(id);
+            return new VShape(this, id, shapetype, shapeargs);
+        },
+
+        /**
+         * Add a shape to the end of the render queue
+         */
+        appendShape: function (shape) {
+            alert('appendShape not implemented');
+        },
+
+        /**
+         * Replace one shape with another
+         */
+        replaceWithShape: function (shapeid, shape) {
+            alert('replaceWithShape not implemented');
+        },
+
+        /**
+         * Insert one shape after another in the render queue
+         */
+        insertAfterShape: function (shapeid, shape) {
+            alert('insertAfterShape not implemented');
+        },
+
+        /**
+         * Remove a shape from the queue
+         */
+        removeShapeId: function (shapeid) {
+            alert('removeShapeId not implemented');
+        },
+
+        /**
+         * Find a shape at the specified x/y co-ordinates
+         */
+        getShapeAt: function (el, x, y) {
+            alert('getShapeAt not implemented');
+        },
+
+        /**
+         * Render all queued shapes onto the canvas
+         */
+        render: function () {
+            alert('render not implemented');
+        }
+    });
+
+    VCanvas_canvas = createClass(VCanvas_base, {
+        init: function (width, height, target, interact) {
+            VCanvas_canvas._super.init.call(this, width, height, target);
+            this.canvas = document.createElement('canvas');
+            if (target[0]) {
+                target = target[0];
+            }
+            $.data(target, '_jqs_vcanvas', this);
+            $(this.canvas).css({ display: 'inline-block', width: width, height: height, verticalAlign: 'top' });
+            this._insert(this.canvas, target);
+            this._calculatePixelDims(width, height, this.canvas);
+            this.canvas.width = this.pixelWidth;
+            this.canvas.height = this.pixelHeight;
+            this.interact = interact;
+            this.shapes = {};
+            this.shapeseq = [];
+            this.currentTargetShapeId = undefined;
+            $(this.canvas).css({width: this.pixelWidth, height: this.pixelHeight});
+        },
+
+        _getContext: function (lineColor, fillColor, lineWidth) {
+            var context = this.canvas.getContext('2d');
+            if (lineColor !== undefined) {
+                context.strokeStyle = lineColor;
+            }
+            context.lineWidth = lineWidth === undefined ? 1 : lineWidth;
+            if (fillColor !== undefined) {
+                context.fillStyle = fillColor;
+            }
+            return context;
+        },
+
+        reset: function () {
+            var context = this._getContext();
+            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);
+            this.shapes = {};
+            this.shapeseq = [];
+            this.currentTargetShapeId = undefined;
+        },
+
+        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {
+            var context = this._getContext(lineColor, fillColor, lineWidth),
+                i, plen;
+            context.beginPath();
+            context.moveTo(path[0][0] + 0.5, path[0][1] + 0.5);
+            for (i = 1, plen = path.length; i < plen; i++) {
+                context.lineTo(path[i][0] + 0.5, path[i][1] + 0.5); // the 0.5 offset gives us crisp pixel-width lines
+            }
+            if (lineColor !== undefined) {
+                context.stroke();
+            }
+            if (fillColor !== undefined) {
+                context.fill();
+            }
+            if (this.targetX !== undefined && this.targetY !== undefined &&
+                context.isPointInPath(this.targetX, this.targetY)) {
+                this.currentTargetShapeId = shapeid;
+            }
+        },
+
+        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {
+            var context = this._getContext(lineColor, fillColor, lineWidth);
+            context.beginPath();
+            context.arc(x, y, radius, 0, 2 * Math.PI, false);
+            if (this.targetX !== undefined && this.targetY !== undefined &&
+                context.isPointInPath(this.targetX, this.targetY)) {
+                this.currentTargetShapeId = shapeid;
+            }
+            if (lineColor !== undefined) {
+                context.stroke();
+            }
+            if (fillColor !== undefined) {
+                context.fill();
+            }
+        },
+
+        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {
+            var context = this._getContext(lineColor, fillColor);
+            context.beginPath();
+            context.moveTo(x, y);
+            context.arc(x, y, radius, startAngle, endAngle, false);
+            context.lineTo(x, y);
+            context.closePath();
+            if (lineColor !== undefined) {
+                context.stroke();
+            }
+            if (fillColor) {
+                context.fill();
+            }
+            if (this.targetX !== undefined && this.targetY !== undefined &&
+                context.isPointInPath(this.targetX, this.targetY)) {
+                this.currentTargetShapeId = shapeid;
+            }
+        },
+
+        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {
+            return this._drawShape(shapeid, [[x, y], [x + width, y], [x + width, y + height], [x, y + height], [x, y]], lineColor, fillColor);
+        },
+
+        appendShape: function (shape) {
+            this.shapes[shape.id] = shape;
+            this.shapeseq.push(shape.id);
+            this.lastShapeId = shape.id;
+            return shape.id;
+        },
+
+        replaceWithShape: function (shapeid, shape) {
+            var shapeseq = this.shapeseq,
+                i;
+            this.shapes[shape.id] = shape;
+            for (i = shapeseq.length; i--;) {
+                if (shapeseq[i] == shapeid) {
+                    shapeseq[i] = shape.id;
+                }
+            }
+            delete this.shapes[shapeid];
+        },
+
+        replaceWithShapes: function (shapeids, shapes) {
+            var shapeseq = this.shapeseq,
+                shapemap = {},
+                sid, i, first;
+
+            for (i = shapeids.length; i--;) {
+                shapemap[shapeids[i]] = true;
+            }
+            for (i = shapeseq.length; i--;) {
+                sid = shapeseq[i];
+                if (shapemap[sid]) {
+                    shapeseq.splice(i, 1);
+                    delete this.shapes[sid];
+                    first = i;
+                }
+            }
+            for (i = shapes.length; i--;) {
+                shapeseq.splice(first, 0, shapes[i].id);
+                this.shapes[shapes[i].id] = shapes[i];
+            }
+
+        },
+
+        insertAfterShape: function (shapeid, shape) {
+            var shapeseq = this.shapeseq,
+                i;
+            for (i = shapeseq.length; i--;) {
+                if (shapeseq[i] === shapeid) {
+                    shapeseq.splice(i + 1, 0, shape.id);
+                    this.shapes[shape.id] = shape;
+                    return;
+                }
+            }
+        },
+
+        removeShapeId: function (shapeid) {
+            var shapeseq = this.shapeseq,
+                i;
+            for (i = shapeseq.length; i--;) {
+                if (shapeseq[i] === shapeid) {
+                    shapeseq.splice(i, 1);
+                    break;
+                }
+            }
+            delete this.shapes[shapeid];
+        },
+
+        getShapeAt: function (el, x, y) {
+            this.targetX = x;
+            this.targetY = y;
+            this.render();
+            return this.currentTargetShapeId;
+        },
+
+        render: function () {
+            var shapeseq = this.shapeseq,
+                shapes = this.shapes,
+                shapeCount = shapeseq.length,
+                context = this._getContext(),
+                shapeid, shape, i;
+            context.clearRect(0, 0, this.pixelWidth, this.pixelHeight);
+            for (i = 0; i < shapeCount; i++) {
+                shapeid = shapeseq[i];
+                shape = shapes[shapeid];
+                this['_draw' + shape.type].apply(this, shape.args);
+            }
+            if (!this.interact) {
+                // not interactive so no need to keep the shapes array
+                this.shapes = {};
+                this.shapeseq = [];
+            }
+        }
+
+    });
+
+    VCanvas_vml = createClass(VCanvas_base, {
+        init: function (width, height, target) {
+            var groupel;
+            VCanvas_vml._super.init.call(this, width, height, target);
+            if (target[0]) {
+                target = target[0];
+            }
+            $.data(target, '_jqs_vcanvas', this);
+            this.canvas = document.createElement('span');
+            $(this.canvas).css({ display: 'inline-block', position: 'relative', overflow: 'hidden', width: width, height: height, margin: '0px', padding: '0px', verticalAlign: 'top'});
+            this._insert(this.canvas, target);
+            this._calculatePixelDims(width, height, this.canvas);
+            this.canvas.width = this.pixelWidth;
+            this.canvas.height = this.pixelHeight;
+            groupel = '<v:group coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '"' +
+                    ' style="position:absolute;top:0;left:0;width:' + this.pixelWidth + 'px;height=' + this.pixelHeight + 'px;"></v:group>';
+            this.canvas.insertAdjacentHTML('beforeEnd', groupel);
+            this.group = $(this.canvas).children()[0];
+            this.rendered = false;
+            this.prerender = '';
+        },
+
+        _drawShape: function (shapeid, path, lineColor, fillColor, lineWidth) {
+            var vpath = [],
+                initial, stroke, fill, closed, vel, plen, i;
+            for (i = 0, plen = path.length; i < plen; i++) {
+                vpath[i] = '' + (path[i][0]) + ',' + (path[i][1]);
+            }
+            initial = vpath.splice(0, 1);
+            lineWidth = lineWidth === undefined ? 1 : lineWidth;
+            stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="' + lineWidth + 'px" strokeColor="' + lineColor + '" ';
+            fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" ';
+            closed = vpath[0] === vpath[vpath.length - 1] ? 'x ' : '';
+            vel = '<v:shape coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '" ' +
+                 ' id="jqsshape' + shapeid + '" ' +
+                 stroke +
+                 fill +
+                ' style="position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;" ' +
+                ' path="m ' + initial + ' l ' + vpath.join(', ') + ' ' + closed + 'e">' +
+                ' </v:shape>';
+            return vel;
+        },
+
+        _drawCircle: function (shapeid, x, y, radius, lineColor, fillColor, lineWidth) {
+            var stroke, fill, vel;
+            x -= radius;
+            y -= radius;
+            stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="' + lineWidth + 'px" strokeColor="' + lineColor + '" ';
+            fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" ';
+            vel = '<v:oval ' +
+                 ' id="jqsshape' + shapeid + '" ' +
+                stroke +
+                fill +
+                ' style="position:absolute;top:' + y + 'px; left:' + x + 'px; width:' + (radius * 2) + 'px; height:' + (radius * 2) + 'px"></v:oval>';
+            return vel;
+
+        },
+
+        _drawPieSlice: function (shapeid, x, y, radius, startAngle, endAngle, lineColor, fillColor) {
+            var vpath, startx, starty, endx, endy, stroke, fill, vel;
+            if (startAngle === endAngle) {
+                return '';  // VML seems to have problem when start angle equals end angle.
+            }
+            if ((endAngle - startAngle) === (2 * Math.PI)) {
+                startAngle = 0.0;  // VML seems to have a problem when drawing a full circle that doesn't start 0
+                endAngle = (2 * Math.PI);
+            }
+
+            startx = x + Math.round(Math.cos(startAngle) * radius);
+            starty = y + Math.round(Math.sin(startAngle) * radius);
+            endx = x + Math.round(Math.cos(endAngle) * radius);
+            endy = y + Math.round(Math.sin(endAngle) * radius);
+
+            if (startx === endx && starty === endy) {
+                if ((endAngle - startAngle) < Math.PI) {
+                    // Prevent very small slices from being mistaken as a whole pie
+                    return '';
+                }
+                // essentially going to be the entire circle, so ignore startAngle
+                startx = endx = x + radius;
+                starty = endy = y;
+            }
+
+            if (startx === endx && starty === endy && (endAngle - startAngle) < Math.PI) {
+                return '';
+            }
+
+            vpath = [x - radius, y - radius, x + radius, y + radius, startx, starty, endx, endy];
+            stroke = lineColor === undefined ? ' stroked="false" ' : ' strokeWeight="1px" strokeColor="' + lineColor + '" ';
+            fill = fillColor === undefined ? ' filled="false"' : ' fillColor="' + fillColor + '" filled="true" ';
+            vel = '<v:shape coordorigin="0 0" coordsize="' + this.pixelWidth + ' ' + this.pixelHeight + '" ' +
+                 ' id="jqsshape' + shapeid + '" ' +
+                 stroke +
+                 fill +
+                ' style="position:absolute;left:0px;top:0px;height:' + this.pixelHeight + 'px;width:' + this.pixelWidth + 'px;padding:0px;margin:0px;" ' +
+                ' path="m ' + x + ',' + y + ' wa ' + vpath.join(', ') + ' x e">' +
+                ' </v:shape>';
+            return vel;
+        },
+
+        _drawRect: function (shapeid, x, y, width, height, lineColor, fillColor) {
+            return this._drawShape(shapeid, [[x, y], [x, y + height], [x + width, y + height], [x + width, y], [x, y]], lineColor, fillColor);
+        },
+
+        reset: function () {
+            this.group.innerHTML = '';
+        },
+
+        appendShape: function (shape) {
+            var vel = this['_draw' + shape.type].apply(this, shape.args);
+            if (this.rendered) {
+                this.group.insertAdjacentHTML('beforeEnd', vel);
+            } else {
+                this.prerender += vel;
+            }
+            this.lastShapeId = shape.id;
+            return shape.id;
+        },
+
+        replaceWithShape: function (shapeid, shape) {
+            var existing = $('#jqsshape' + shapeid),
+                vel = this['_draw' + shape.type].apply(this, shape.args);
+            existing[0].outerHTML = vel;
+        },
+
+        replaceWithShapes: function (shapeids, shapes) {
+            // replace the first shapeid with all the new shapes then toast the remaining old shapes
+            var existing = $('#jqsshape' + shapeids[0]),
+                replace = '',
+                slen = shapes.length,
+                i;
+            for (i = 0; i < slen; i++) {
+                replace += this['_draw' + shapes[i].type].apply(this, shapes[i].args);
+            }
+            existing[0].outerHTML = replace;
+            for (i = 1; i < shapeids.length; i++) {
+                $('#jqsshape' + shapeids[i]).remove();
+            }
+        },
+
+        insertAfterShape: function (shapeid, shape) {
+            var existing = $('#jqsshape' + shapeid),
+                 vel = this['_draw' + shape.type].apply(this, shape.args);
+            existing[0].insertAdjacentHTML('afterEnd', vel);
+        },
+
+        removeShapeId: function (shapeid) {
+            var existing = $('#jqsshape' + shapeid);
+            this.group.removeChild(existing[0]);
+        },
+
+        getShapeAt: function (el, x, y) {
+            var shapeid = el.id.substr(8);
+            return shapeid;
+        },
+
+        render: function () {
+            if (!this.rendered) {
+                // batch the intial render into a single repaint
+                this.group.innerHTML = this.prerender;
+                this.rendered = true;
+            }
+        }
+    });
+
+}))}(document, Math));
+( function( factory ) {
+	if ( typeof define === "function" && define.amd ) {
+
+		// AMD. Register as an anonymous module.
+		define( [ "jquery" ], factory );
+	} else {
+
+		// Browser globals
+		factory( jQuery );
+	}
+} ( function( $ ) {
+
+$.ui = $.ui || {};
+
+return $.ui.version = "1.12.1";
+
+} ) );
+
+
+/*!
+ * jQuery UI Keycode 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Keycode
+//>>group: Core
+//>>description: Provide keycodes as keynames
+//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/
+
+( function( factory ) {
+	if ( typeof define === "function" && define.amd ) {
+
+		// AMD. Register as an anonymous module.
+		define( [ "jquery", "./version" ], factory );
+	} else {
+
+		// Browser globals
+		factory( jQuery );
+	}
+} ( function( $ ) {
+return $.ui.keyCode = {
+	BACKSPACE: 8,
+	COMMA: 188,
+	DELETE: 46,
+	DOWN: 40,
+	END: 35,
+	ENTER: 13,
+	ESCAPE: 27,
+	HOME: 36,
+	LEFT: 37,
+	PAGE_DOWN: 34,
+	PAGE_UP: 33,
+	PERIOD: 190,
+	RIGHT: 39,
+	SPACE: 32,
+	TAB: 9,
+	UP: 38
+};
+
+} ) );
+
+
+/*!
+ * jQuery UI Position 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/position/
+ */
+
+//>>label: Position
+//>>group: Core
+//>>description: Positions elements relative to other elements.
+//>>docs: http://api.jqueryui.com/position/
+//>>demos: http://jqueryui.com/position/
+
+( function( factory ) {
+	if ( typeof define === "function" && define.amd ) {
+
+		// AMD. Register as an anonymous module.
+		define( [ "jquery", "./version" ], factory );
+	} else {
+
+		// Browser globals
+		factory( jQuery );
+	}
+}( function( $ ) {
+( function() {
+var cachedScrollbarWidth,
+	max = Math.max,
+	abs = Math.abs,
+	rhorizontal = /left|center|right/,
+	rvertical = /top|center|bottom/,
+	roffset = /[\+\-]\d+(\.[\d]+)?%?/,
+	rposition = /^\w+/,
+	rpercent = /%$/,
+	_position = $.fn.position;
+
+function getOffsets( offsets, width, height ) {
+	return [
+		parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ),
+		parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 )
+	];
+}
+
+function parseCss( element, property ) {
+	return parseInt( $.css( element, property ), 10 ) || 0;
+}
+
+function getDimensions( elem ) {
+	var raw = elem[ 0 ];
+	if ( raw.nodeType === 9 ) {
+		return {
+			width: elem.width(),
+			height: elem.height(),
+			offset: { top: 0, left: 0 }
+		};
+	}
+	if ( $.isWindow( raw ) ) {
+		return {
+			width: elem.width(),
+			height: elem.height(),
+			offset: { top: elem.scrollTop(), left: elem.scrollLeft() }
+		};
+	}
+	if ( raw.preventDefault ) {
+		return {
+			width: 0,
+			height: 0,
+			offset: { top: raw.pageY, left: raw.pageX }
+		};
+	}
+	return {
+		width: elem.outerWidth(),
+		height: elem.outerHeight(),
+		offset: elem.offset()
+	};
+}
+
+$.position = {
+	scrollbarWidth: function() {
+		if ( cachedScrollbarWidth !== undefined ) {
+			return cachedScrollbarWidth;
+		}
+		var w1, w2,
+			div = $( "<div " +
+				"style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'>" +
+				"<div style='height:100px;width:auto;'></div></div>" ),
+			innerDiv = div.children()[ 0 ];
+
+		$( "body" ).append( div );
+		w1 = innerDiv.offsetWidth;
+		div.css( "overflow", "scroll" );
+
+		w2 = innerDiv.offsetWidth;
+
+		if ( w1 === w2 ) {
+			w2 = div[ 0 ].clientWidth;
+		}
+
+		div.remove();
+
+		return ( cachedScrollbarWidth = w1 - w2 );
+	},
+	getScrollInfo: function( within ) {
+		var overflowX = within.isWindow || within.isDocument ? "" :
+				within.element.css( "overflow-x" ),
+			overflowY = within.isWindow || within.isDocument ? "" :
+				within.element.css( "overflow-y" ),
+			hasOverflowX = overflowX === "scroll" ||
+				( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ),
+			hasOverflowY = overflowY === "scroll" ||
+				( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight );
+		return {
+			width: hasOverflowY ? $.position.scrollbarWidth() : 0,
+			height: hasOverflowX ? $.position.scrollbarWidth() : 0
+		};
+	},
+	getWithinInfo: function( element ) {
+		var withinElement = $( element || window ),
+			isWindow = $.isWindow( withinElement[ 0 ] ),
+			isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9,
+			hasOffset = !isWindow && !isDocument;
+		return {
+			element: withinElement,
+			isWindow: isWindow,
+			isDocument: isDocument,
+			offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 },
+			scrollLeft: withinElement.scrollLeft(),
+			scrollTop: withinElement.scrollTop(),
+			width: withinElement.outerWidth(),
+			height: withinElement.outerHeight()
+		};
+	}
+};
+
+$.fn.position = function( options ) {
+	if ( !options || !options.of ) {
+		return _position.apply( this, arguments );
+	}
+
+	// Make a copy, we don't want to modify arguments
+	options = $.extend( {}, options );
+
+	var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions,
+		target = $( options.of ),
+		within = $.position.getWithinInfo( options.within ),
+		scrollInfo = $.position.getScrollInfo( within ),
+		collision = ( options.collision || "flip" ).split( " " ),
+		offsets = {};
+
+	dimensions = getDimensions( target );
+	if ( target[ 0 ].preventDefault ) {
+
+		// Force left top to allow flipping
+		options.at = "left top";
+	}
+	targetWidth = dimensions.width;
+	targetHeight = dimensions.height;
+	targetOffset = dimensions.offset;
+
+	// Clone to reuse original targetOffset later
+	basePosition = $.extend( {}, targetOffset );
+
+	// Force my and at to have valid horizontal and vertical positions
+	// if a value is missing or invalid, it will be converted to center
+	$.each( [ "my", "at" ], function() {
+		var pos = ( options[ this ] || "" ).split( " " ),
+			horizontalOffset,
+			verticalOffset;
+
+		if ( pos.length === 1 ) {
+			pos = rhorizontal.test( pos[ 0 ] ) ?
+				pos.concat( [ "center" ] ) :
+				rvertical.test( pos[ 0 ] ) ?
+					[ "center" ].concat( pos ) :
+					[ "center", "center" ];
+		}
+		pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center";
+		pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center";
+
+		// Calculate offsets
+		horizontalOffset = roffset.exec( pos[ 0 ] );
+		verticalOffset = roffset.exec( pos[ 1 ] );
+		offsets[ this ] = [
+			horizontalOffset ? horizontalOffset[ 0 ] : 0,
+			verticalOffset ? verticalOffset[ 0 ] : 0
+		];
+
+		// Reduce to just the positions without the offsets
+		options[ this ] = [
+			rposition.exec( pos[ 0 ] )[ 0 ],
+			rposition.exec( pos[ 1 ] )[ 0 ]
+		];
+	} );
+
+	// Normalize collision option
+	if ( collision.length === 1 ) {
+		collision[ 1 ] = collision[ 0 ];
+	}
+
+	if ( options.at[ 0 ] === "right" ) {
+		basePosition.left += targetWidth;
+	} else if ( options.at[ 0 ] === "center" ) {
+		basePosition.left += targetWidth / 2;
+	}
+
+	if ( options.at[ 1 ] === "bottom" ) {
+		basePosition.top += targetHeight;
+	} else if ( options.at[ 1 ] === "center" ) {
+		basePosition.top += targetHeight / 2;
+	}
+
+	atOffset = getOffsets( offsets.at, targetWidth, targetHeight );
+	basePosition.left += atOffset[ 0 ];
+	basePosition.top += atOffset[ 1 ];
+
+	return this.each( function() {
+		var collisionPosition, using,
+			elem = $( this ),
+			elemWidth = elem.outerWidth(),
+			elemHeight = elem.outerHeight(),
+			marginLeft = parseCss( this, "marginLeft" ),
+			marginTop = parseCss( this, "marginTop" ),
+			collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) +
+				scrollInfo.width,
+			collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) +
+				scrollInfo.height,
+			position = $.extend( {}, basePosition ),
+			myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() );
+
+		if ( options.my[ 0 ] === "right" ) {
+			position.left -= elemWidth;
+		} else if ( options.my[ 0 ] === "center" ) {
+			position.left -= elemWidth / 2;
+		}
+
+		if ( options.my[ 1 ] === "bottom" ) {
+			position.top -= elemHeight;
+		} else if ( options.my[ 1 ] === "center" ) {
+			position.top -= elemHeight / 2;
+		}
+
+		position.left += myOffset[ 0 ];
+		position.top += myOffset[ 1 ];
+
+		collisionPosition = {
+			marginLeft: marginLeft,
+			marginTop: marginTop
+		};
+
+		$.each( [ "left", "top" ], function( i, dir ) {
+			if ( $.ui.position[ collision[ i ] ] ) {
+				$.ui.position[ collision[ i ] ][ dir ]( position, {
+					targetWidth: targetWidth,
+					targetHeight: targetHeight,
+					elemWidth: elemWidth,
+					elemHeight: elemHeight,
+					collisionPosition: collisionPosition,
+					collisionWidth: collisionWidth,
+					collisionHeight: collisionHeight,
+					offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ],
+					my: options.my,
+					at: options.at,
+					within: within,
+					elem: elem
+				} );
+			}
+		} );
+
+		if ( options.using ) {
+
+			// Adds feedback as second argument to using callback, if present
+			using = function( props ) {
+				var left = targetOffset.left - position.left,
+					right = left + targetWidth - elemWidth,
+					top = targetOffset.top - position.top,
+					bottom = top + targetHeight - elemHeight,
+					feedback = {
+						target: {
+							element: target,
+							left: targetOffset.left,
+							top: targetOffset.top,
+							width: targetWidth,
+							height: targetHeight
+						},
+						element: {
+							element: elem,
+							left: position.left,
+							top: position.top,
+							width: elemWidth,
+							height: elemHeight
+						},
+						horizontal: right < 0 ? "left" : left > 0 ? "right" : "center",
+						vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle"
+					};
+				if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) {
+					feedback.horizontal = "center";
+				}
+				if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) {
+					feedback.vertical = "middle";
+				}
+				if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) {
+					feedback.important = "horizontal";
+				} else {
+					feedback.important = "vertical";
+				}
+				options.using.call( this, props, feedback );
+			};
+		}
+
+		elem.offset( $.extend( position, { using: using } ) );
+	} );
+};
+
+$.ui.position = {
+	fit: {
+		left: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.isWindow ? within.scrollLeft : within.offset.left,
+				outerWidth = within.width,
+				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
+				overLeft = withinOffset - collisionPosLeft,
+				overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset,
+				newOverRight;
+
+			// Element is wider than within
+			if ( data.collisionWidth > outerWidth ) {
+
+				// Element is initially over the left side of within
+				if ( overLeft > 0 && overRight <= 0 ) {
+					newOverRight = position.left + overLeft + data.collisionWidth - outerWidth -
+						withinOffset;
+					position.left += overLeft - newOverRight;
+
+				// Element is initially over right side of within
+				} else if ( overRight > 0 && overLeft <= 0 ) {
+					position.left = withinOffset;
+
+				// Element is initially over both left and right sides of within
+				} else {
+					if ( overLeft > overRight ) {
+						position.left = withinOffset + outerWidth - data.collisionWidth;
+					} else {
+						position.left = withinOffset;
+					}
+				}
+
+			// Too far left -> align with left edge
+			} else if ( overLeft > 0 ) {
+				position.left += overLeft;
+
+			// Too far right -> align with right edge
+			} else if ( overRight > 0 ) {
+				position.left -= overRight;
+
+			// Adjust based on position and margin
+			} else {
+				position.left = max( position.left - collisionPosLeft, position.left );
+			}
+		},
+		top: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.isWindow ? within.scrollTop : within.offset.top,
+				outerHeight = data.within.height,
+				collisionPosTop = position.top - data.collisionPosition.marginTop,
+				overTop = withinOffset - collisionPosTop,
+				overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset,
+				newOverBottom;
+
+			// Element is taller than within
+			if ( data.collisionHeight > outerHeight ) {
+
+				// Element is initially over the top of within
+				if ( overTop > 0 && overBottom <= 0 ) {
+					newOverBottom = position.top + overTop + data.collisionHeight - outerHeight -
+						withinOffset;
+					position.top += overTop - newOverBottom;
+
+				// Element is initially over bottom of within
+				} else if ( overBottom > 0 && overTop <= 0 ) {
+					position.top = withinOffset;
+
+				// Element is initially over both top and bottom of within
+				} else {
+					if ( overTop > overBottom ) {
+						position.top = withinOffset + outerHeight - data.collisionHeight;
+					} else {
+						position.top = withinOffset;
+					}
+				}
+
+			// Too far up -> align with top
+			} else if ( overTop > 0 ) {
+				position.top += overTop;
+
+			// Too far down -> align with bottom edge
+			} else if ( overBottom > 0 ) {
+				position.top -= overBottom;
+
+			// Adjust based on position and margin
+			} else {
+				position.top = max( position.top - collisionPosTop, position.top );
+			}
+		}
+	},
+	flip: {
+		left: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.offset.left + within.scrollLeft,
+				outerWidth = within.width,
+				offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left,
+				collisionPosLeft = position.left - data.collisionPosition.marginLeft,
+				overLeft = collisionPosLeft - offsetLeft,
+				overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft,
+				myOffset = data.my[ 0 ] === "left" ?
+					-data.elemWidth :
+					data.my[ 0 ] === "right" ?
+						data.elemWidth :
+						0,
+				atOffset = data.at[ 0 ] === "left" ?
+					data.targetWidth :
+					data.at[ 0 ] === "right" ?
+						-data.targetWidth :
+						0,
+				offset = -2 * data.offset[ 0 ],
+				newOverRight,
+				newOverLeft;
+
+			if ( overLeft < 0 ) {
+				newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth -
+					outerWidth - withinOffset;
+				if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) {
+					position.left += myOffset + atOffset + offset;
+				}
+			} else if ( overRight > 0 ) {
+				newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset +
+					atOffset + offset - offsetLeft;
+				if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) {
+					position.left += myOffset + atOffset + offset;
+				}
+			}
+		},
+		top: function( position, data ) {
+			var within = data.within,
+				withinOffset = within.offset.top + within.scrollTop,
+				outerHeight = within.height,
+				offsetTop = within.isWindow ? within.scrollTop : within.offset.top,
+				collisionPosTop = position.top - data.collisionPosition.marginTop,
+				overTop = collisionPosTop - offsetTop,
+				overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop,
+				top = data.my[ 1 ] === "top",
+				myOffset = top ?
+					-data.elemHeight :
+					data.my[ 1 ] === "bottom" ?
+						data.elemHeight :
+						0,
+				atOffset = data.at[ 1 ] === "top" ?
+					data.targetHeight :
+					data.at[ 1 ] === "bottom" ?
+						-data.targetHeight :
+						0,
+				offset = -2 * data.offset[ 1 ],
+				newOverTop,
+				newOverBottom;
+			if ( overTop < 0 ) {
+				newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight -
+					outerHeight - withinOffset;
+				if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) {
+					position.top += myOffset + atOffset + offset;
+				}
+			} else if ( overBottom > 0 ) {
+				newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset +
+					offset - offsetTop;
+				if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) {
+					position.top += myOffset + atOffset + offset;
+				}
+			}
+		}
+	},
+	flipfit: {
+		left: function() {
+			$.ui.position.flip.left.apply( this, arguments );
+			$.ui.position.fit.left.apply( this, arguments );
+		},
+		top: function() {
+			$.ui.position.flip.top.apply( this, arguments );
+			$.ui.position.fit.top.apply( this, arguments );
+		}
+	}
+};
+
+} )();
+
+return $.ui.position;
+
+} ) );
+
+( function( factory ) {
+	if ( typeof define === "function" && define.amd ) {
+
+		// AMD. Register as an anonymous module.
+		define( [ "jquery", "./version" ], factory );
+	} else {
+
+		// Browser globals
+		factory( jQuery );
+	}
+} ( function( $ ) {
+return $.ui.safeActiveElement = function( document ) {
+	var activeElement;
+
+	// Support: IE 9 only
+	// IE9 throws an "Unspecified error" accessing document.activeElement from an <iframe>
+	try {
+		activeElement = document.activeElement;
+	} catch ( error ) {
+		activeElement = document.body;
+	}
+
+	// Support: IE 9 - 11 only
+	// IE may return null instead of an element
+	// Interestingly, this only seems to occur when NOT in an iframe
+	if ( !activeElement ) {
+		activeElement = document.body;
+	}
+
+	// Support: IE 11 only
+	// IE11 returns a seemingly empty object in some cases when accessing
+	// document.activeElement from an <iframe>
+	if ( !activeElement.nodeName ) {
+		activeElement = document.body;
+	}
+
+	return activeElement;
+};
+
+} ) );
+
+
+/*!
+ * jQuery UI Unique ID 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: uniqueId
+//>>group: Core
+//>>description: Functions to generate and remove uniqueId's
+//>>docs: http://api.jqueryui.com/uniqueId/
+
+( function( factory ) {
+	if ( typeof define === "function" && define.amd ) {
+
+		// AMD. Register as an anonymous module.
+		define( [ "jquery", "./version" ], factory );
+	} else {
+
+		// Browser globals
+		factory( jQuery );
+	}
+} ( function( $ ) {
+
+return $.fn.extend( {
+	uniqueId: ( function() {
+		var uuid = 0;
+
+		return function() {
+			return this.each( function() {
+				if ( !this.id ) {
+					this.id = "ui-id-" + ( ++uuid );
+				}
+			} );
+		};
+	} )(),
+
+	removeUniqueId: function() {
+		return this.each( function() {
+			if ( /^ui-id-\d+$/.test( this.id ) ) {
+				$( this ).removeAttr( "id" );
+			}
+		} );
+	}
+} );
+
+} ) );
+
+
+/*!
+ * jQuery UI Widget 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Widget
+//>>group: Core
+//>>description: Provides a factory for creating stateful widgets with a common API.
+//>>docs: http://api.jqueryui.com/jQuery.widget/
+//>>demos: http://jqueryui.com/widget/
+
+( function( factory ) {
+	if ( typeof define === "function" && define.amd ) {
+
+		// AMD. Register as an anonymous module.
+		define( [ "jquery", "./version" ], factory );
+	} else {
+
+		// Browser globals
+		factory( jQuery );
+	}
+}( function( $ ) {
+
+var widgetUuid = 0;
+var widgetSlice = Array.prototype.slice;
+
+$.cleanData = ( function( orig ) {
+	return function( elems ) {
+		var events, elem, i;
+		for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) {
+			try {
+
+				// Only trigger remove when necessary to save time
+				events = $._data( elem, "events" );
+				if ( events && events.remove ) {
+					$( elem ).triggerHandler( "remove" );
+				}
+
+			// Http://bugs.jquery.com/ticket/8235
+			} catch ( e ) {}
+		}
+		orig( elems );
+	};
+} )( $.cleanData );
+
+$.widget = function( name, base, prototype ) {
+	var existingConstructor, constructor, basePrototype;
+
+	// ProxiedPrototype allows the provided prototype to remain unmodified
+	// so that it can be used as a mixin for multiple widgets (#8876)
+	var proxiedPrototype = {};
+
+	var namespace = name.split( "." )[ 0 ];
+	name = name.split( "." )[ 1 ];
+	var fullName = namespace + "-" + name;
+
+	if ( !prototype ) {
+		prototype = base;
+		base = $.Widget;
+	}
+
+	if ( $.isArray( prototype ) ) {
+		prototype = $.extend.apply( null, [ {} ].concat( prototype ) );
+	}
+
+	// Create selector for plugin
+	$.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) {
+		return !!$.data( elem, fullName );
+	};
+
+	$[ namespace ] = $[ namespace ] || {};
+	existingConstructor = $[ namespace ][ name ];
+	constructor = $[ namespace ][ name ] = function( options, element ) {
+
+		// Allow instantiation without "new" keyword
+		if ( !this._createWidget ) {
+			return new constructor( options, element );
+		}
+
+		// Allow instantiation without initializing for simple inheritance
+		// must use "new" keyword (the code above always passes args)
+		if ( arguments.length ) {
+			this._createWidget( options, element );
+		}
+	};
+
+	// Extend with the existing constructor to carry over any static properties
+	$.extend( constructor, existingConstructor, {
+		version: prototype.version,
+
+		// Copy the object used to create the prototype in case we need to
+		// redefine the widget later
+		_proto: $.extend( {}, prototype ),
+
+		// Track widgets that inherit from this widget in case this widget is
+		// redefined after a widget inherits from it
+		_childConstructors: []
+	} );
+
+	basePrototype = new base();
+
+	// We need to make the options hash a property directly on the new instance
+	// otherwise we'll modify the options hash on the prototype that we're
+	// inheriting from
+	basePrototype.options = $.widget.extend( {}, basePrototype.options );
+	$.each( prototype, function( prop, value ) {
+		if ( !$.isFunction( value ) ) {
+			proxiedPrototype[ prop ] = value;
+			return;
+		}
+		proxiedPrototype[ prop ] = ( function() {
+			function _super() {
+				return base.prototype[ prop ].apply( this, arguments );
+			}
+
+			function _superApply( args ) {
+				return base.prototype[ prop ].apply( this, args );
+			}
+
+			return function() {
+				var __super = this._super;
+				var __superApply = this._superApply;
+				var returnValue;
+
+				this._super = _super;
+				this._superApply = _superApply;
+
+				returnValue = value.apply( this, arguments );
+
+				this._super = __super;
+				this._superApply = __superApply;
+
+				return returnValue;
+			};
+		} )();
+	} );
+	constructor.prototype = $.widget.extend( basePrototype, {
+
+		// TODO: remove support for widgetEventPrefix
+		// always use the name + a colon as the prefix, e.g., draggable:start
+		// don't prefix for widgets that aren't DOM-based
+		widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name
+	}, proxiedPrototype, {
+		constructor: constructor,
+		namespace: namespace,
+		widgetName: name,
+		widgetFullName: fullName
+	} );
+
+	// If this widget is being redefined then we need to find all widgets that
+	// are inheriting from it and redefine all of them so that they inherit from
+	// the new version of this widget. We're essentially trying to replace one
+	// level in the prototype chain.
+	if ( existingConstructor ) {
+		$.each( existingConstructor._childConstructors, function( i, child ) {
+			var childPrototype = child.prototype;
+
+			// Redefine the child widget using the same prototype that was
+			// originally used, but inherit from the new version of the base
+			$.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor,
+				child._proto );
+		} );
+
+		// Remove the list of existing child constructors from the old constructor
+		// so the old child constructors can be garbage collected
+		delete existingConstructor._childConstructors;
+	} else {
+		base._childConstructors.push( constructor );
+	}
+
+	$.widget.bridge( name, constructor );
+
+	return constructor;
+};
+
+$.widget.extend = function( target ) {
+	var input = widgetSlice.call( arguments, 1 );
+	var inputIndex = 0;
+	var inputLength = input.length;
+	var key;
+	var value;
+
+	for ( ; inputIndex < inputLength; inputIndex++ ) {
+		for ( key in input[ inputIndex ] ) {
+			value = input[ inputIndex ][ key ];
+			if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) {
+
+				// Clone objects
+				if ( $.isPlainObject( value ) ) {
+					target[ key ] = $.isPlainObject( target[ key ] ) ?
+						$.widget.extend( {}, target[ key ], value ) :
+
+						// Don't extend strings, arrays, etc. with objects
+						$.widget.extend( {}, value );
+
+				// Copy everything else by reference
+				} else {
+					target[ key ] = value;
+				}
+			}
+		}
+	}
+	return target;
+};
+
+$.widget.bridge = function( name, object ) {
+	var fullName = object.prototype.widgetFullName || name;
+	$.fn[ name ] = function( options ) {
+		var isMethodCall = typeof options === "string";
+		var args = widgetSlice.call( arguments, 1 );
+		var returnValue = this;
+
+		if ( isMethodCall ) {
+
+			// If this is an empty collection, we need to have the instance method
+			// return undefined instead of the jQuery instance
+			if ( !this.length && options === "instance" ) {
+				returnValue = undefined;
+			} else {
+				this.each( function() {
+					var methodValue;
+					var instance = $.data( this, fullName );
+
+					if ( options === "instance" ) {
+						returnValue = instance;
+						return false;
+					}
+
+					if ( !instance ) {
+						return $.error( "cannot call methods on " + name +
+							" prior to initialization; " +
+							"attempted to call method '" + options + "'" );
+					}
+
+					if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) {
+						return $.error( "no such method '" + options + "' for " + name +
+							" widget instance" );
+					}
+
+					methodValue = instance[ options ].apply( instance, args );
+
+					if ( methodValue !== instance && methodValue !== undefined ) {
+						returnValue = methodValue && methodValue.jquery ?
+							returnValue.pushStack( methodValue.get() ) :
+							methodValue;
+						return false;
+					}
+				} );
+			}
+		} else {
+
+			// Allow multiple hashes to be passed on init
+			if ( args.length ) {
+				options = $.widget.extend.apply( null, [ options ].concat( args ) );
+			}
+
+			this.each( function() {
+				var instance = $.data( this, fullName );
+				if ( instance ) {
+					instance.option( options || {} );
+					if ( instance._init ) {
+						instance._init();
+					}
+				} else {
+					$.data( this, fullName, new object( options, this ) );
+				}
+			} );
+		}
+
+		return returnValue;
+	};
+};
+
+$.Widget = function( /* options, element */ ) {};
+$.Widget._childConstructors = [];
+
+$.Widget.prototype = {
+	widgetName: "widget",
+	widgetEventPrefix: "",
+	defaultElement: "<div>",
+
+	options: {
+		classes: {},
+		disabled: false,
+
+		// Callbacks
+		create: null
+	},
+
+	_createWidget: function( options, element ) {
+		element = $( element || this.defaultElement || this )[ 0 ];
+		this.element = $( element );
+		this.uuid = widgetUuid++;
+		this.eventNamespace = "." + this.widgetName + this.uuid;
+
+		this.bindings = $();
+		this.hoverable = $();
+		this.focusable = $();
+		this.classesElementLookup = {};
+
+		if ( element !== this ) {
+			$.data( element, this.widgetFullName, this );
+			this._on( true, this.element, {
+				remove: function( event ) {
+					if ( event.target === element ) {
+						this.destroy();
+					}
+				}
+			} );
+			this.document = $( element.style ?
+
+				// Element within the document
+				element.ownerDocument :
+
+				// Element is window or document
+				element.document || element );
+			this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow );
+		}
+
+		this.options = $.widget.extend( {},
+			this.options,
+			this._getCreateOptions(),
+			options );
+
+		this._create();
+
+		if ( this.options.disabled ) {
+			this._setOptionDisabled( this.options.disabled );
+		}
+
+		this._trigger( "create", null, this._getCreateEventData() );
+		this._init();
+	},
+
+	_getCreateOptions: function() {
+		return {};
+	},
+
+	_getCreateEventData: $.noop,
+
+	_create: $.noop,
+
+	_init: $.noop,
+
+	destroy: function() {
+		var that = this;
+
+		this._destroy();
+		$.each( this.classesElementLookup, function( key, value ) {
+			that._removeClass( value, key );
+		} );
+
+		// We can probably remove the unbind calls in 2.0
+		// all event bindings should go through this._on()
+		this.element
+			.off( this.eventNamespace )
+			.removeData( this.widgetFullName );
+		this.widget()
+			.off( this.eventNamespace )
+			.removeAttr( "aria-disabled" );
+
+		// Clean up events and states
+		this.bindings.off( this.eventNamespace );
+	},
+
+	_destroy: $.noop,
+
+	widget: function() {
+		return this.element;
+	},
+
+	option: function( key, value ) {
+		var options = key;
+		var parts;
+		var curOption;
+		var i;
+
+		if ( arguments.length === 0 ) {
+
+			// Don't return a reference to the internal hash
+			return $.widget.extend( {}, this.options );
+		}
+
+		if ( typeof key === "string" ) {
+
+			// Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } }
+			options = {};
+			parts = key.split( "." );
+			key = parts.shift();
+			if ( parts.length ) {
+				curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] );
+				for ( i = 0; i < parts.length - 1; i++ ) {
+					curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {};
+					curOption = curOption[ parts[ i ] ];
+				}
+				key = parts.pop();
+				if ( arguments.length === 1 ) {
+					return curOption[ key ] === undefined ? null : curOption[ key ];
+				}
+				curOption[ key ] = value;
+			} else {
+				if ( arguments.length === 1 ) {
+					return this.options[ key ] === undefined ? null : this.options[ key ];
+				}
+				options[ key ] = value;
+			}
+		}
+
+		this._setOptions( options );
+
+		return this;
+	},
+
+	_setOptions: function( options ) {
+		var key;
+
+		for ( key in options ) {
+			this._setOption( key, options[ key ] );
+		}
+
+		return this;
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "classes" ) {
+			this._setOptionClasses( value );
+		}
+
+		this.options[ key ] = value;
+
+		if ( key === "disabled" ) {
+			this._setOptionDisabled( value );
+		}
+
+		return this;
+	},
+
+	_setOptionClasses: function( value ) {
+		var classKey, elements, currentElements;
+
+		for ( classKey in value ) {
+			currentElements = this.classesElementLookup[ classKey ];
+			if ( value[ classKey ] === this.options.classes[ classKey ] ||
+					!currentElements ||
+					!currentElements.length ) {
+				continue;
+			}
+
+			// We are doing this to create a new jQuery object because the _removeClass() call
+			// on the next line is going to destroy the reference to the current elements being
+			// tracked. We need to save a copy of this collection so that we can add the new classes
+			// below.
+			elements = $( currentElements.get() );
+			this._removeClass( currentElements, classKey );
+
+			// We don't use _addClass() here, because that uses this.options.classes
+			// for generating the string of classes. We want to use the value passed in from
+			// _setOption(), this is the new value of the classes option which was passed to
+			// _setOption(). We pass this value directly to _classes().
+			elements.addClass( this._classes( {
+				element: elements,
+				keys: classKey,
+				classes: value,
+				add: true
+			} ) );
+		}
+	},
+
+	_setOptionDisabled: function( value ) {
+		this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value );
+
+		// If the widget is becoming disabled, then nothing is interactive
+		if ( value ) {
+			this._removeClass( this.hoverable, null, "ui-state-hover" );
+			this._removeClass( this.focusable, null, "ui-state-focus" );
+		}
+	},
+
+	enable: function() {
+		return this._setOptions( { disabled: false } );
+	},
+
+	disable: function() {
+		return this._setOptions( { disabled: true } );
+	},
+
+	_classes: function( options ) {
+		var full = [];
+		var that = this;
+
+		options = $.extend( {
+			element: this.element,
+			classes: this.options.classes || {}
+		}, options );
+
+		function processClassString( classes, checkOption ) {
+			var current, i;
+			for ( i = 0; i < classes.length; i++ ) {
+				current = that.classesElementLookup[ classes[ i ] ] || $();
+				if ( options.add ) {
+					current = $( $.unique( current.get().concat( options.element.get() ) ) );
+				} else {
+					current = $( current.not( options.element ).get() );
+				}
+				that.classesElementLookup[ classes[ i ] ] = current;
+				full.push( classes[ i ] );
+				if ( checkOption && options.classes[ classes[ i ] ] ) {
+					full.push( options.classes[ classes[ i ] ] );
+				}
+			}
+		}
+
+		this._on( options.element, {
+			"remove": "_untrackClassesElement"
+		} );
+
+		if ( options.keys ) {
+			processClassString( options.keys.match( /\S+/g ) || [], true );
+		}
+		if ( options.extra ) {
+			processClassString( options.extra.match( /\S+/g ) || [] );
+		}
+
+		return full.join( " " );
+	},
+
+	_untrackClassesElement: function( event ) {
+		var that = this;
+		$.each( that.classesElementLookup, function( key, value ) {
+			if ( $.inArray( event.target, value ) !== -1 ) {
+				that.classesElementLookup[ key ] = $( value.not( event.target ).get() );
+			}
+		} );
+	},
+
+	_removeClass: function( element, keys, extra ) {
+		return this._toggleClass( element, keys, extra, false );
+	},
+
+	_addClass: function( element, keys, extra ) {
+		return this._toggleClass( element, keys, extra, true );
+	},
+
+	_toggleClass: function( element, keys, extra, add ) {
+		add = ( typeof add === "boolean" ) ? add : extra;
+		var shift = ( typeof element === "string" || element === null ),
+			options = {
+				extra: shift ? keys : extra,
+				keys: shift ? element : keys,
+				element: shift ? this.element : element,
+				add: add
+			};
+		options.element.toggleClass( this._classes( options ), add );
+		return this;
+	},
+
+	_on: function( suppressDisabledCheck, element, handlers ) {
+		var delegateElement;
+		var instance = this;
+
+		// No suppressDisabledCheck flag, shuffle arguments
+		if ( typeof suppressDisabledCheck !== "boolean" ) {
+			handlers = element;
+			element = suppressDisabledCheck;
+			suppressDisabledCheck = false;
+		}
+
+		// No element argument, shuffle and use this.element
+		if ( !handlers ) {
+			handlers = element;
+			element = this.element;
+			delegateElement = this.widget();
+		} else {
+			element = delegateElement = $( element );
+			this.bindings = this.bindings.add( element );
+		}
+
+		$.each( handlers, function( event, handler ) {
+			function handlerProxy() {
+
+				// Allow widgets to customize the disabled handling
+				// - disabled as an array instead of boolean
+				// - disabled class as method for disabling individual parts
+				if ( !suppressDisabledCheck &&
+						( instance.options.disabled === true ||
+						$( this ).hasClass( "ui-state-disabled" ) ) ) {
+					return;
+				}
+				return ( typeof handler === "string" ? instance[ handler ] : handler )
+					.apply( instance, arguments );
+			}
+
+			// Copy the guid so direct unbinding works
+			if ( typeof handler !== "string" ) {
+				handlerProxy.guid = handler.guid =
+					handler.guid || handlerProxy.guid || $.guid++;
+			}
+
+			var match = event.match( /^([\w:-]*)\s*(.*)$/ );
+			var eventName = match[ 1 ] + instance.eventNamespace;
+			var selector = match[ 2 ];
+
+			if ( selector ) {
+				delegateElement.on( eventName, selector, handlerProxy );
+			} else {
+				element.on( eventName, handlerProxy );
+			}
+		} );
+	},
+
+	_off: function( element, eventName ) {
+		eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) +
+			this.eventNamespace;
+		element.off( eventName ).off( eventName );
+
+		// Clear the stack to avoid memory leaks (#10056)
+		this.bindings = $( this.bindings.not( element ).get() );
+		this.focusable = $( this.focusable.not( element ).get() );
+		this.hoverable = $( this.hoverable.not( element ).get() );
+	},
+
+	_delay: function( handler, delay ) {
+		function handlerProxy() {
+			return ( typeof handler === "string" ? instance[ handler ] : handler )
+				.apply( instance, arguments );
+		}
+		var instance = this;
+		return setTimeout( handlerProxy, delay || 0 );
+	},
+
+	_hoverable: function( element ) {
+		this.hoverable = this.hoverable.add( element );
+		this._on( element, {
+			mouseenter: function( event ) {
+				this._addClass( $( event.currentTarget ), null, "ui-state-hover" );
+			},
+			mouseleave: function( event ) {
+				this._removeClass( $( event.currentTarget ), null, "ui-state-hover" );
+			}
+		} );
+	},
+
+	_focusable: function( element ) {
+		this.focusable = this.focusable.add( element );
+		this._on( element, {
+			focusin: function( event ) {
+				this._addClass( $( event.currentTarget ), null, "ui-state-focus" );
+			},
+			focusout: function( event ) {
+				this._removeClass( $( event.currentTarget ), null, "ui-state-focus" );
+			}
+		} );
+	},
+
+	_trigger: function( type, event, data ) {
+		var prop, orig;
+		var callback = this.options[ type ];
+
+		data = data || {};
+		event = $.Event( event );
+		event.type = ( type === this.widgetEventPrefix ?
+			type :
+			this.widgetEventPrefix + type ).toLowerCase();
+
+		// The original event may come from any element
+		// so we need to reset the target on the new event
+		event.target = this.element[ 0 ];
+
+		// Copy original event properties over to the new event
+		orig = event.originalEvent;
+		if ( orig ) {
+			for ( prop in orig ) {
+				if ( !( prop in event ) ) {
+					event[ prop ] = orig[ prop ];
+				}
+			}
+		}
+
+		this.element.trigger( event, data );
+		return !( $.isFunction( callback ) &&
+			callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false ||
+			event.isDefaultPrevented() );
+	}
+};
+
+$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) {
+	$.Widget.prototype[ "_" + method ] = function( element, options, callback ) {
+		if ( typeof options === "string" ) {
+			options = { effect: options };
+		}
+
+		var hasOptions;
+		var effectName = !options ?
+			method :
+			options === true || typeof options === "number" ?
+				defaultEffect :
+				options.effect || defaultEffect;
+
+		options = options || {};
+		if ( typeof options === "number" ) {
+			options = { duration: options };
+		}
+
+		hasOptions = !$.isEmptyObject( options );
+		options.complete = callback;
+
+		if ( options.delay ) {
+			element.delay( options.delay );
+		}
+
+		if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) {
+			element[ method ]( options );
+		} else if ( effectName !== method && element[ effectName ] ) {
+			element[ effectName ]( options.duration, options.easing, callback );
+		} else {
+			element.queue( function( next ) {
+				$( this )[ method ]();
+				if ( callback ) {
+					callback.call( element[ 0 ] );
+				}
+				next();
+			} );
+		}
+	};
+} );
+
+return $.widget;
+
+} ) );
+
+
+
+
+
+
+
+/*!
+ * jQuery UI Menu 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Menu
+//>>group: Widgets
+//>>description: Creates nestable menus.
+//>>docs: http://api.jqueryui.com/menu/
+//>>demos: http://jqueryui.com/menu/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/menu.css
+//>>css.theme: ../../themes/base/theme.css
+
+( function( factory ) {
+	if ( typeof define === "function" && define.amd ) {
+
+		// AMD. Register as an anonymous module.
+		define( [
+			"jquery",
+			"../keycode",
+			"../position",
+			"../safe-active-element",
+			"../unique-id",
+			"../version",
+			"../widget"
+		], factory );
+	} else {
+
+		// Browser globals
+		factory( jQuery );
+	}
+}( function( $ ) {
+
+return $.widget( "ui.menu", {
+	version: "1.12.1",
+	defaultElement: "<ul>",
+	delay: 300,
+	options: {
+		icons: {
+			submenu: "ui-icon-caret-1-e"
+		},
+		items: "> *",
+		menus: "ul",
+		position: {
+			my: "left top",
+			at: "right top"
+		},
+		role: "menu",
+
+		// Callbacks
+		blur: null,
+		focus: null,
+		select: null
+	},
+
+	_create: function() {
+		this.activeMenu = this.element;
+
+		// Flag used to prevent firing of the click handler
+		// as the event bubbles up through nested menus
+		this.mouseHandled = false;
+		this.element
+			.uniqueId()
+			.attr( {
+				role: this.options.role,
+				tabIndex: 0
+			} );
+
+		this._addClass( "ui-menu", "ui-widget ui-widget-content" );
+		this._on( {
+
+			// Prevent focus from sticking to links inside menu after clicking
+			// them (focus should always stay on UL during navigation).
+			"mousedown .ui-menu-item": function( event ) {
+				event.preventDefault();
+			},
+			"click .ui-menu-item": function( event ) {
+				var target = $( event.target );
+				var active = $( $.ui.safeActiveElement( this.document[ 0 ] ) );
+				if ( !this.mouseHandled && target.not( ".ui-state-disabled" ).length ) {
+					this.select( event );
+
+					// Only set the mouseHandled flag if the event will bubble, see #9469.
+					if ( !event.isPropagationStopped() ) {
+						this.mouseHandled = true;
+					}
+
+					// Open submenu on click
+					if ( target.has( ".ui-menu" ).length ) {
+						this.expand( event );
+					} else if ( !this.element.is( ":focus" ) &&
+							active.closest( ".ui-menu" ).length ) {
+
+						// Redirect focus to the menu
+						this.element.trigger( "focus", [ true ] );
+
+						// If the active item is on the top level, let it stay active.
+						// Otherwise, blur the active item since it is no longer visible.
+						if ( this.active && this.active.parents( ".ui-menu" ).length === 1 ) {
+							clearTimeout( this.timer );
+						}
+					}
+				}
+			},
+			"mouseenter .ui-menu-item": function( event ) {
+
+				// Ignore mouse events while typeahead is active, see #10458.
+				// Prevents focusing the wrong item when typeahead causes a scroll while the mouse
+				// is over an item in the menu
+				if ( this.previousFilter ) {
+					return;
+				}
+
+				var actualTarget = $( event.target ).closest( ".ui-menu-item" ),
+					target = $( event.currentTarget );
+
+				// Ignore bubbled events on parent items, see #11641
+				if ( actualTarget[ 0 ] !== target[ 0 ] ) {
+					return;
+				}
+
+				// Remove ui-state-active class from siblings of the newly focused menu item
+				// to avoid a jump caused by adjacent elements both having a class with a border
+				this._removeClass( target.siblings().children( ".ui-state-active" ),
+					null, "ui-state-active" );
+				this.focus( event, target );
+			},
+			mouseleave: "collapseAll",
+			"mouseleave .ui-menu": "collapseAll",
+			focus: function( event, keepActiveItem ) {
+
+				// If there's already an active item, keep it active
+				// If not, activate the first item
+				var item = this.active || this.element.find( this.options.items ).eq( 0 );
+
+				if ( !keepActiveItem ) {
+					this.focus( event, item );
+				}
+			},
+			blur: function( event ) {
+				this._delay( function() {
+					var notContained = !$.contains(
+						this.element[ 0 ],
+						$.ui.safeActiveElement( this.document[ 0 ] )
+					);
+					if ( notContained ) {
+						this.collapseAll( event );
+					}
+				} );
+			},
+			keydown: "_keydown"
+		} );
+
+		this.refresh();
+
+		// Clicks outside of a menu collapse any open menus
+		this._on( this.document, {
+			click: function( event ) {
+				if ( this._closeOnDocumentClick( event ) ) {
+					this.collapseAll( event );
+				}
+
+				// Reset the mouseHandled flag
+				this.mouseHandled = false;
+			}
+		} );
+	},
+
+	_destroy: function() {
+		var items = this.element.find( ".ui-menu-item" )
+				.removeAttr( "role aria-disabled" ),
+			submenus = items.children( ".ui-menu-item-wrapper" )
+				.removeUniqueId()
+				.removeAttr( "tabIndex role aria-haspopup" );
+
+		// Destroy (sub)menus
+		this.element
+			.removeAttr( "aria-activedescendant" )
+			.find( ".ui-menu" ).addBack()
+				.removeAttr( "role aria-labelledby aria-expanded aria-hidden aria-disabled " +
+					"tabIndex" )
+				.removeUniqueId()
+				.show();
+
+		submenus.children().each( function() {
+			var elem = $( this );
+			if ( elem.data( "ui-menu-submenu-caret" ) ) {
+				elem.remove();
+			}
+		} );
+	},
+
+	_keydown: function( event ) {
+		var match, prev, character, skip,
+			preventDefault = true;
+
+		switch ( event.keyCode ) {
+		case $.ui.keyCode.PAGE_UP:
+			this.previousPage( event );
+			break;
+		case $.ui.keyCode.PAGE_DOWN:
+			this.nextPage( event );
+			break;
+		case $.ui.keyCode.HOME:
+			this._move( "first", "first", event );
+			break;
+		case $.ui.keyCode.END:
+			this._move( "last", "last", event );
+			break;
+		case $.ui.keyCode.UP:
+			this.previous( event );
+			break;
+		case $.ui.keyCode.DOWN:
+			this.next( event );
+			break;
+		case $.ui.keyCode.LEFT:
+			this.collapse( event );
+			break;
+		case $.ui.keyCode.RIGHT:
+			if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
+				this.expand( event );
+			}
+			break;
+		case $.ui.keyCode.ENTER:
+		case $.ui.keyCode.SPACE:
+			this._activate( event );
+			break;
+		case $.ui.keyCode.ESCAPE:
+			this.collapse( event );
+			break;
+		default:
+			preventDefault = false;
+			prev = this.previousFilter || "";
+			skip = false;
+
+			// Support number pad values
+			character = event.keyCode >= 96 && event.keyCode <= 105 ?
+				( event.keyCode - 96 ).toString() : String.fromCharCode( event.keyCode );
+
+			clearTimeout( this.filterTimer );
+
+			if ( character === prev ) {
+				skip = true;
+			} else {
+				character = prev + character;
+			}
+
+			match = this._filterMenuItems( character );
+			match = skip && match.index( this.active.next() ) !== -1 ?
+				this.active.nextAll( ".ui-menu-item" ) :
+				match;
+
+			// If no matches on the current filter, reset to the last character pressed
+			// to move down the menu to the first item that starts with that character
+			if ( !match.length ) {
+				character = String.fromCharCode( event.keyCode );
+				match = this._filterMenuItems( character );
+			}
+
+			if ( match.length ) {
+				this.focus( event, match );
+				this.previousFilter = character;
+				this.filterTimer = this._delay( function() {
+					delete this.previousFilter;
+				}, 1000 );
+			} else {
+				delete this.previousFilter;
+			}
+		}
+
+		if ( preventDefault ) {
+			event.preventDefault();
+		}
+	},
+
+	_activate: function( event ) {
+		if ( this.active && !this.active.is( ".ui-state-disabled" ) ) {
+			if ( this.active.children( "[aria-haspopup='true']" ).length ) {
+				this.expand( event );
+			} else {
+				this.select( event );
+			}
+		}
+	},
+
+	refresh: function() {
+		var menus, items, newSubmenus, newItems, newWrappers,
+			that = this,
+			icon = this.options.icons.submenu,
+			submenus = this.element.find( this.options.menus );
+
+		this._toggleClass( "ui-menu-icons", null, !!this.element.find( ".ui-icon" ).length );
+
+		// Initialize nested menus
+		newSubmenus = submenus.filter( ":not(.ui-menu)" )
+			.hide()
+			.attr( {
+				role: this.options.role,
+				"aria-hidden": "true",
+				"aria-expanded": "false"
+			} )
+			.each( function() {
+				var menu = $( this ),
+					item = menu.prev(),
+					submenuCaret = $( "<span>" ).data( "ui-menu-submenu-caret", true );
+
+				that._addClass( submenuCaret, "ui-menu-icon", "ui-icon " + icon );
+				item
+					.attr( "aria-haspopup", "true" )
+					.prepend( submenuCaret );
+				menu.attr( "aria-labelledby", item.attr( "id" ) );
+			} );
+
+		this._addClass( newSubmenus, "ui-menu", "ui-widget ui-widget-content ui-front" );
+
+		menus = submenus.add( this.element );
+		items = menus.find( this.options.items );
+
+		// Initialize menu-items containing spaces and/or dashes only as dividers
+		items.not( ".ui-menu-item" ).each( function() {
+			var item = $( this );
+			if ( that._isDivider( item ) ) {
+				that._addClass( item, "ui-menu-divider", "ui-widget-content" );
+			}
+		} );
+
+		// Don't refresh list items that are already adapted
+		newItems = items.not( ".ui-menu-item, .ui-menu-divider" );
+		newWrappers = newItems.children()
+			.not( ".ui-menu" )
+				.uniqueId()
+				.attr( {
+					tabIndex: -1,
+					role: this._itemRole()
+				} );
+		this._addClass( newItems, "ui-menu-item" )
+			._addClass( newWrappers, "ui-menu-item-wrapper" );
+
+		// Add aria-disabled attribute to any disabled menu item
+		items.filter( ".ui-state-disabled" ).attr( "aria-disabled", "true" );
+
+		// If the active item has been removed, blur the menu
+		if ( this.active && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) {
+			this.blur();
+		}
+	},
+
+	_itemRole: function() {
+		return {
+			menu: "menuitem",
+			listbox: "option"
+		}[ this.options.role ];
+	},
+
+	_setOption: function( key, value ) {
+		if ( key === "icons" ) {
+			var icons = this.element.find( ".ui-menu-icon" );
+			this._removeClass( icons, null, this.options.icons.submenu )
+				._addClass( icons, null, value.submenu );
+		}
+		this._super( key, value );
+	},
+
+	_setOptionDisabled: function( value ) {
+		this._super( value );
+
+		this.element.attr( "aria-disabled", String( value ) );
+		this._toggleClass( null, "ui-state-disabled", !!value );
+	},
+
+	focus: function( event, item ) {
+		var nested, focused, activeParent;
+		this.blur( event, event && event.type === "focus" );
+
+		this._scrollIntoView( item );
+
+		this.active = item.first();
+
+		focused = this.active.children( ".ui-menu-item-wrapper" );
+		this._addClass( focused, null, "ui-state-active" );
+
+		// Only update aria-activedescendant if there's a role
+		// otherwise we assume focus is managed elsewhere
+		if ( this.options.role ) {
+			this.element.attr( "aria-activedescendant", focused.attr( "id" ) );
+		}
+
+		// Highlight active parent menu item, if any
+		activeParent = this.active
+			.parent()
+				.closest( ".ui-menu-item" )
+					.children( ".ui-menu-item-wrapper" );
+		this._addClass( activeParent, null, "ui-state-active" );
+
+		if ( event && event.type === "keydown" ) {
+			this._close();
+		} else {
+			this.timer = this._delay( function() {
+				this._close();
+			}, this.delay );
+		}
+
+		nested = item.children( ".ui-menu" );
+		if ( nested.length && event && ( /^mouse/.test( event.type ) ) ) {
+			this._startOpening( nested );
+		}
+		this.activeMenu = item.parent();
+
+		this._trigger( "focus", event, { item: item } );
+	},
+
+	_scrollIntoView: function( item ) {
+		var borderTop, paddingTop, offset, scroll, elementHeight, itemHeight;
+		if ( this._hasScroll() ) {
+			borderTop = parseFloat( $.css( this.activeMenu[ 0 ], "borderTopWidth" ) ) || 0;
+			paddingTop = parseFloat( $.css( this.activeMenu[ 0 ], "paddingTop" ) ) || 0;
+			offset = item.offset().top - this.activeMenu.offset().top - borderTop - paddingTop;
+			scroll = this.activeMenu.scrollTop();
+			elementHeight = this.activeMenu.height();
+			itemHeight = item.outerHeight();
+
+			if ( offset < 0 ) {
+				this.activeMenu.scrollTop( scroll + offset );
+			} else if ( offset + itemHeight > elementHeight ) {
+				this.activeMenu.scrollTop( scroll + offset - elementHeight + itemHeight );
+			}
+		}
+	},
+
+	blur: function( event, fromFocus ) {
+		if ( !fromFocus ) {
+			clearTimeout( this.timer );
+		}
+
+		if ( !this.active ) {
+			return;
+		}
+
+		this._removeClass( this.active.children( ".ui-menu-item-wrapper" ),
+			null, "ui-state-active" );
+
+		this._trigger( "blur", event, { item: this.active } );
+		this.active = null;
+	},
+
+	_startOpening: function( submenu ) {
+		clearTimeout( this.timer );
+
+		// Don't open if already open fixes a Firefox bug that caused a .5 pixel
+		// shift in the submenu position when mousing over the caret icon
+		if ( submenu.attr( "aria-hidden" ) !== "true" ) {
+			return;
+		}
+
+		this.timer = this._delay( function() {
+			this._close();
+			this._open( submenu );
+		}, this.delay );
+	},
+
+	_open: function( submenu ) {
+		var position = $.extend( {
+			of: this.active
+		}, this.options.position );
+
+		clearTimeout( this.timer );
+		this.element.find( ".ui-menu" ).not( submenu.parents( ".ui-menu" ) )
+			.hide()
+			.attr( "aria-hidden", "true" );
+
+		submenu
+			.show()
+			.removeAttr( "aria-hidden" )
+			.attr( "aria-expanded", "true" )
+			.position( position );
+	},
+
+	collapseAll: function( event, all ) {
+		clearTimeout( this.timer );
+		this.timer = this._delay( function() {
+
+			// If we were passed an event, look for the submenu that contains the event
+			var currentMenu = all ? this.element :
+				$( event && event.target ).closest( this.element.find( ".ui-menu" ) );
+
+			// If we found no valid submenu ancestor, use the main menu to close all
+			// sub menus anyway
+			if ( !currentMenu.length ) {
+				currentMenu = this.element;
+			}
+
+			this._close( currentMenu );
+
+			this.blur( event );
+
+			// Work around active item staying active after menu is blurred
+			this._removeClass( currentMenu.find( ".ui-state-active" ), null, "ui-state-active" );
+
+			this.activeMenu = currentMenu;
+		}, this.delay );
+	},
+
+	// With no arguments, closes the currently active menu - if nothing is active
+	// it closes all menus.  If passed an argument, it will search for menus BELOW
+	_close: function( startMenu ) {
+		if ( !startMenu ) {
+			startMenu = this.active ? this.active.parent() : this.element;
+		}
+
+		startMenu.find( ".ui-menu" )
+			.hide()
+			.attr( "aria-hidden", "true" )
+			.attr( "aria-expanded", "false" );
+	},
+
+	_closeOnDocumentClick: function( event ) {
+		return !$( event.target ).closest( ".ui-menu" ).length;
+	},
+
+	_isDivider: function( item ) {
+
+		// Match hyphen, em dash, en dash
+		return !/[^\-\u2014\u2013\s]/.test( item.text() );
+	},
+
+	collapse: function( event ) {
+		var newItem = this.active &&
+			this.active.parent().closest( ".ui-menu-item", this.element );
+		if ( newItem && newItem.length ) {
+			this._close();
+			this.focus( event, newItem );
+		}
+	},
+
+	expand: function( event ) {
+		var newItem = this.active &&
+			this.active
+				.children( ".ui-menu " )
+					.find( this.options.items )
+						.first();
+
+		if ( newItem && newItem.length ) {
+			this._open( newItem.parent() );
+
+			// Delay so Firefox will not hide activedescendant change in expanding submenu from AT
+			this._delay( function() {
+				this.focus( event, newItem );
+			} );
+		}
+	},
+
+	next: function( event ) {
+		this._move( "next", "first", event );
+	},
+
+	previous: function( event ) {
+		this._move( "prev", "last", event );
+	},
+
+	isFirstItem: function() {
+		return this.active && !this.active.prevAll( ".ui-menu-item" ).length;
+	},
+
+	isLastItem: function() {
+		return this.active && !this.active.nextAll( ".ui-menu-item" ).length;
+	},
+
+	_move: function( direction, filter, event ) {
+		var next;
+		if ( this.active ) {
+			if ( direction === "first" || direction === "last" ) {
+				next = this.active
+					[ direction === "first" ? "prevAll" : "nextAll" ]( ".ui-menu-item" )
+					.eq( -1 );
+			} else {
+				next = this.active
+					[ direction + "All" ]( ".ui-menu-item" )
+					.eq( 0 );
+			}
+		}
+		if ( !next || !next.length || !this.active ) {
+			next = this.activeMenu.find( this.options.items )[ filter ]();
+		}
+
+		this.focus( event, next );
+	},
+
+	nextPage: function( event ) {
+		var item, base, height;
+
+		if ( !this.active ) {
+			this.next( event );
+			return;
+		}
+		if ( this.isLastItem() ) {
+			return;
+		}
+		if ( this._hasScroll() ) {
+			base = this.active.offset().top;
+			height = this.element.height();
+			this.active.nextAll( ".ui-menu-item" ).each( function() {
+				item = $( this );
+				return item.offset().top - base - height < 0;
+			} );
+
+			this.focus( event, item );
+		} else {
+			this.focus( event, this.activeMenu.find( this.options.items )
+				[ !this.active ? "first" : "last" ]() );
+		}
+	},
+
+	previousPage: function( event ) {
+		var item, base, height;
+		if ( !this.active ) {
+			this.next( event );
+			return;
+		}
+		if ( this.isFirstItem() ) {
+			return;
+		}
+		if ( this._hasScroll() ) {
+			base = this.active.offset().top;
+			height = this.element.height();
+			this.active.prevAll( ".ui-menu-item" ).each( function() {
+				item = $( this );
+				return item.offset().top - base + height > 0;
+			} );
+
+			this.focus( event, item );
+		} else {
+			this.focus( event, this.activeMenu.find( this.options.items ).first() );
+		}
+	},
+
+	_hasScroll: function() {
+		return this.element.outerHeight() < this.element.prop( "scrollHeight" );
+	},
+
+	select: function( event ) {
+
+		// TODO: It should never be possible to not have an active item at this
+		// point, but the tests don't trigger mouseenter before click.
+		this.active = this.active || $( event.target ).closest( ".ui-menu-item" );
+		var ui = { item: this.active };
+		if ( !this.active.has( ".ui-menu" ).length ) {
+			this.collapseAll( event, true );
+		}
+		this._trigger( "select", event, ui );
+	},
+
+	_filterMenuItems: function( character ) {
+		var escapedCharacter = character.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" ),
+			regex = new RegExp( "^" + escapedCharacter, "i" );
+
+		return this.activeMenu
+			.find( this.options.items )
+
+				// Only match on items, not dividers or other content (#10571)
+				.filter( ".ui-menu-item" )
+					.filter( function() {
+						return regex.test(
+							$.trim( $( this ).children( ".ui-menu-item-wrapper" ).text() ) );
+					} );
+	}
+} );
+
+} ) );
+
+
+
+
+
+
+
+/*!
+ * jQuery UI Autocomplete 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+
+//>>label: Autocomplete
+//>>group: Widgets
+//>>description: Lists suggested words as the user is typing.
+//>>docs: http://api.jqueryui.com/autocomplete/
+//>>demos: http://jqueryui.com/autocomplete/
+//>>css.structure: ../../themes/base/core.css
+//>>css.structure: ../../themes/base/autocomplete.css
+//>>css.theme: ../../themes/base/theme.css
+
+( function( factory ) {
+	if ( typeof define === "function" && define.amd ) {
+
+		// AMD. Register as an anonymous module.
+		define( [
+			"jquery",
+			"./menu",
+			"../keycode",
+			"../position",
+			"../safe-active-element",
+			"../version",
+			"../widget"
+		], factory );
+	} else {
+
+		// Browser globals
+		factory( jQuery );
+	}
+}( function( $ ) {
+
+$.widget( "ui.autocomplete", {
+	version: "1.12.1",
+	defaultElement: "<input>",
+	options: {
+		appendTo: null,
+		autoFocus: false,
+		delay: 300,
+		minLength: 1,
+		position: {
+			my: "left top",
+			at: "left bottom",
+			collision: "none"
+		},
+		source: null,
+
+		// Callbacks
+		change: null,
+		close: null,
+		focus: null,
+		open: null,
+		response: null,
+		search: null,
+		select: null
+	},
+
+	requestIndex: 0,
+	pending: 0,
+
+	_create: function() {
+
+		// Some browsers only repeat keydown events, not keypress events,
+		// so we use the suppressKeyPress flag to determine if we've already
+		// handled the keydown event. #7269
+		// Unfortunately the code for & in keypress is the same as the up arrow,
+		// so we use the suppressKeyPressRepeat flag to avoid handling keypress
+		// events when we know the keydown event was used to modify the
+		// search term. #7799
+		var suppressKeyPress, suppressKeyPressRepeat, suppressInput,
+			nodeName = this.element[ 0 ].nodeName.toLowerCase(),
+			isTextarea = nodeName === "textarea",
+			isInput = nodeName === "input";
+
+		// Textareas are always multi-line
+		// Inputs are always single-line, even if inside a contentEditable element
+		// IE also treats inputs as contentEditable
+		// All other element types are determined by whether or not they're contentEditable
+		this.isMultiLine = isTextarea || !isInput && this._isContentEditable( this.element );
+
+		this.valueMethod = this.element[ isTextarea || isInput ? "val" : "text" ];
+		this.isNewMenu = true;
+
+		this._addClass( "ui-autocomplete-input" );
+		this.element.attr( "autocomplete", "off" );
+
+		this._on( this.element, {
+			keydown: function( event ) {
+				if ( this.element.prop( "readOnly" ) ) {
+					suppressKeyPress = true;
+					suppressInput = true;
+					suppressKeyPressRepeat = true;
+					return;
+				}
+
+				suppressKeyPress = false;
+				suppressInput = false;
+				suppressKeyPressRepeat = false;
+				var keyCode = $.ui.keyCode;
+				switch ( event.keyCode ) {
+				case keyCode.PAGE_UP:
+					suppressKeyPress = true;
+					this._move( "previousPage", event );
+					break;
+				case keyCode.PAGE_DOWN:
+					suppressKeyPress = true;
+					this._move( "nextPage", event );
+					break;
+				case keyCode.UP:
+					suppressKeyPress = true;
+					this._keyEvent( "previous", event );
+					break;
+				case keyCode.DOWN:
+					suppressKeyPress = true;
+					this._keyEvent( "next", event );
+					break;
+				case keyCode.ENTER:
+
+					// when menu is open and has focus
+					if ( this.menu.active ) {
+
+						// #6055 - Opera still allows the keypress to occur
+						// which causes forms to submit
+						suppressKeyPress = true;
+						event.preventDefault();
+						this.menu.select( event );
+					}
+					break;
+				case keyCode.TAB:
+					if ( this.menu.active ) {
+						this.menu.select( event );
+					}
+					break;
+				case keyCode.ESCAPE:
+					if ( this.menu.element.is( ":visible" ) ) {
+						if ( !this.isMultiLine ) {
+							this._value( this.term );
+						}
+						this.close( event );
+
+						// Different browsers have different default behavior for escape
+						// Single press can mean undo or clear
+						// Double press in IE means clear the whole form
+						event.preventDefault();
+					}
+					break;
+				default:
+					suppressKeyPressRepeat = true;
+
+					// search timeout should be triggered before the input value is changed
+					this._searchTimeout( event );
+					break;
+				}
+			},
+			keypress: function( event ) {
+				if ( suppressKeyPress ) {
+					suppressKeyPress = false;
+					if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
+						event.preventDefault();
+					}
+					return;
+				}
+				if ( suppressKeyPressRepeat ) {
+					return;
+				}
+
+				// Replicate some key handlers to allow them to repeat in Firefox and Opera
+				var keyCode = $.ui.keyCode;
+				switch ( event.keyCode ) {
+				case keyCode.PAGE_UP:
+					this._move( "previousPage", event );
+					break;
+				case keyCode.PAGE_DOWN:
+					this._move( "nextPage", event );
+					break;
+				case keyCode.UP:
+					this._keyEvent( "previous", event );
+					break;
+				case keyCode.DOWN:
+					this._keyEvent( "next", event );
+					break;
+				}
+			},
+			input: function( event ) {
+				if ( suppressInput ) {
+					suppressInput = false;
+					event.preventDefault();
+					return;
+				}
+				this._searchTimeout( event );
+			},
+			focus: function() {
+				this.selectedItem = null;
+				this.previous = this._value();
+			},
+			blur: function( event ) {
+				if ( this.cancelBlur ) {
+					delete this.cancelBlur;
+					return;
+				}
+
+				clearTimeout( this.searching );
+				this.close( event );
+				this._change( event );
+			}
+		} );
+
+		this._initSource();
+		this.menu = $( "<ul>" )
+			.appendTo( this._appendTo() )
+			.menu( {
+
+				// disable ARIA support, the live region takes care of that
+				role: null
+			} )
+			.hide()
+			.menu( "instance" );
+
+		this._addClass( this.menu.element, "ui-autocomplete", "ui-front" );
+		this._on( this.menu.element, {
+			mousedown: function( event ) {
+
+				// prevent moving focus out of the text field
+				event.preventDefault();
+
+				// IE doesn't prevent moving focus even with event.preventDefault()
+				// so we set a flag to know when we should ignore the blur event
+				this.cancelBlur = true;
+				this._delay( function() {
+					delete this.cancelBlur;
+
+					// Support: IE 8 only
+					// Right clicking a menu item or selecting text from the menu items will
+					// result in focus moving out of the input. However, we've already received
+					// and ignored the blur event because of the cancelBlur flag set above. So
+					// we restore focus to ensure that the menu closes properly based on the user's
+					// next actions.
+					if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
+						this.element.trigger( "focus" );
+					}
+				} );
+			},
+			menufocus: function( event, ui ) {
+				var label, item;
+
+				// support: Firefox
+				// Prevent accidental activation of menu items in Firefox (#7024 #9118)
+				if ( this.isNewMenu ) {
+					this.isNewMenu = false;
+					if ( event.originalEvent && /^mouse/.test( event.originalEvent.type ) ) {
+						this.menu.blur();
+
+						this.document.one( "mousemove", function() {
+							$( event.target ).trigger( event.originalEvent );
+						} );
+
+						return;
+					}
+				}
+
+				item = ui.item.data( "ui-autocomplete-item" );
+				if ( false !== this._trigger( "focus", event, { item: item } ) ) {
+
+					// use value to match what will end up in the input, if it was a key event
+					if ( event.originalEvent && /^key/.test( event.originalEvent.type ) ) {
+						this._value( item.value );
+					}
+				}
+
+				// Announce the value in the liveRegion
+				label = ui.item.attr( "aria-label" ) || item.value;
+				if ( label && $.trim( label ).length ) {
+					this.liveRegion.children().hide();
+					$( "<div>" ).text( label ).appendTo( this.liveRegion );
+				}
+			},
+			menuselect: function( event, ui ) {
+				var item = ui.item.data( "ui-autocomplete-item" ),
+					previous = this.previous;
+
+				// Only trigger when focus was lost (click on menu)
+				if ( this.element[ 0 ] !== $.ui.safeActiveElement( this.document[ 0 ] ) ) {
+					this.element.trigger( "focus" );
+					this.previous = previous;
+
+					// #6109 - IE triggers two focus events and the second
+					// is asynchronous, so we need to reset the previous
+					// term synchronously and asynchronously :-(
+					this._delay( function() {
+						this.previous = previous;
+						this.selectedItem = item;
+					} );
+				}
+
+				if ( false !== this._trigger( "select", event, { item: item } ) ) {
+					this._value( item.value );
+				}
+
+				// reset the term after the select event
+				// this allows custom select handling to work properly
+				this.term = this._value();
+
+				this.close( event );
+				this.selectedItem = item;
+			}
+		} );
+
+		this.liveRegion = $( "<div>", {
+			role: "status",
+			"aria-live": "assertive",
+			"aria-relevant": "additions"
+		} )
+			.appendTo( this.document[ 0 ].body );
+
+		this._addClass( this.liveRegion, null, "ui-helper-hidden-accessible" );
+
+		// Turning off autocomplete prevents the browser from remembering the
+		// value when navigating through history, so we re-enable autocomplete
+		// if the page is unloaded before the widget is destroyed. #7790
+		this._on( this.window, {
+			beforeunload: function() {
+				this.element.removeAttr( "autocomplete" );
+			}
+		} );
+	},
+
+	_destroy: function() {
+		clearTimeout( this.searching );
+		this.element.removeAttr( "autocomplete" );
+		this.menu.element.remove();
+		this.liveRegion.remove();
+	},
+
+	_setOption: function( key, value ) {
+		this._super( key, value );
+		if ( key === "source" ) {
+			this._initSource();
+		}
+		if ( key === "appendTo" ) {
+			this.menu.element.appendTo( this._appendTo() );
+		}
+		if ( key === "disabled" && value && this.xhr ) {
+			this.xhr.abort();
+		}
+	},
+
+	_isEventTargetInWidget: function( event ) {
+		var menuElement = this.menu.element[ 0 ];
+
+		return event.target === this.element[ 0 ] ||
+			event.target === menuElement ||
+			$.contains( menuElement, event.target );
+	},
+
+	_closeOnClickOutside: function( event ) {
+		if ( !this._isEventTargetInWidget( event ) ) {
+			this.close();
+		}
+	},
+
+	_appendTo: function() {
+		var element = this.options.appendTo;
+
+		if ( element ) {
+			element = element.jquery || element.nodeType ?
+				$( element ) :
+				this.document.find( element ).eq( 0 );
+		}
+
+		if ( !element || !element[ 0 ] ) {
+			element = this.element.closest( ".ui-front, dialog" );
+		}
+
+		if ( !element.length ) {
+			element = this.document[ 0 ].body;
+		}
+
+		return element;
+	},
+
+	_initSource: function() {
+		var array, url,
+			that = this;
+		if ( $.isArray( this.options.source ) ) {
+			array = this.options.source;
+			this.source = function( request, response ) {
+				response( $.ui.autocomplete.filter( array, request.term ) );
+			};
+		} else if ( typeof this.options.source === "string" ) {
+			url = this.options.source;
+			this.source = function( request, response ) {
+				if ( that.xhr ) {
+					that.xhr.abort();
+				}
+				that.xhr = $.ajax( {
+					url: url,
+					data: request,
+					dataType: "json",
+					success: function( data ) {
+						response( data );
+					},
+					error: function() {
+						response( [] );
+					}
+				} );
+			};
+		} else {
+			this.source = this.options.source;
+		}
+	},
+
+	_searchTimeout: function( event ) {
+		clearTimeout( this.searching );
+		this.searching = this._delay( function() {
+
+			// Search if the value has changed, or if the user retypes the same value (see #7434)
+			var equalValues = this.term === this._value(),
+				menuVisible = this.menu.element.is( ":visible" ),
+				modifierKey = event.altKey || event.ctrlKey || event.metaKey || event.shiftKey;
+
+			if ( !equalValues || ( equalValues && !menuVisible && !modifierKey ) ) {
+				this.selectedItem = null;
+				this.search( null, event );
+			}
+		}, this.options.delay );
+	},
+
+	search: function( value, event ) {
+		value = value != null ? value : this._value();
+
+		// Always save the actual value, not the one passed as an argument
+		this.term = this._value();
+
+		if ( value.length < this.options.minLength ) {
+			return this.close( event );
+		}
+
+		if ( this._trigger( "search", event ) === false ) {
+			return;
+		}
+
+		return this._search( value );
+	},
+
+	_search: function( value ) {
+		this.pending++;
+		this._addClass( "ui-autocomplete-loading" );
+		this.cancelSearch = false;
+
+		this.source( { term: value }, this._response() );
+	},
+
+	_response: function() {
+		var index = ++this.requestIndex;
+
+		return $.proxy( function( content ) {
+			if ( index === this.requestIndex ) {
+				this.__response( content );
+			}
+
+			this.pending--;
+			if ( !this.pending ) {
+				this._removeClass( "ui-autocomplete-loading" );
+			}
+		}, this );
+	},
+
+	__response: function( content ) {
+		if ( content ) {
+			content = this._normalize( content );
+		}
+		this._trigger( "response", null, { content: content } );
+		if ( !this.options.disabled && content && content.length && !this.cancelSearch ) {
+			this._suggest( content );
+			this._trigger( "open" );
+		} else {
+
+			// use ._close() instead of .close() so we don't cancel future searches
+			this._close();
+		}
+	},
+
+	close: function( event ) {
+		this.cancelSearch = true;
+		this._close( event );
+	},
+
+	_close: function( event ) {
+
+		// Remove the handler that closes the menu on outside clicks
+		this._off( this.document, "mousedown" );
+
+		if ( this.menu.element.is( ":visible" ) ) {
+			this.menu.element.hide();
+			this.menu.blur();
+			this.isNewMenu = true;
+			this._trigger( "close", event );
+		}
+	},
+
+	_change: function( event ) {
+		if ( this.previous !== this._value() ) {
+			this._trigger( "change", event, { item: this.selectedItem } );
+		}
+	},
+
+	_normalize: function( items ) {
+
+		// assume all items have the right format when the first item is complete
+		if ( items.length && items[ 0 ].label && items[ 0 ].value ) {
+			return items;
+		}
+		return $.map( items, function( item ) {
+			if ( typeof item === "string" ) {
+				return {
+					label: item,
+					value: item
+				};
+			}
+			return $.extend( {}, item, {
+				label: item.label || item.value,
+				value: item.value || item.label
+			} );
+		} );
+	},
+
+	_suggest: function( items ) {
+		var ul = this.menu.element.empty();
+		this._renderMenu( ul, items );
+		this.isNewMenu = true;
+		this.menu.refresh();
+
+		// Size and position menu
+		ul.show();
+		this._resizeMenu();
+		ul.position( $.extend( {
+			of: this.element
+		}, this.options.position ) );
+
+		if ( this.options.autoFocus ) {
+			this.menu.next();
+		}
+
+		// Listen for interactions outside of the widget (#6642)
+		this._on( this.document, {
+			mousedown: "_closeOnClickOutside"
+		} );
+	},
+
+	_resizeMenu: function() {
+		var ul = this.menu.element;
+		ul.outerWidth( Math.max(
+
+			// Firefox wraps long text (possibly a rounding bug)
+			// so we add 1px to avoid the wrapping (#7513)
+			ul.width( "" ).outerWidth() + 1,
+			this.element.outerWidth()
+		) );
+	},
+
+	_renderMenu: function( ul, items ) {
+		var that = this;
+		$.each( items, function( index, item ) {
+			that._renderItemData( ul, item );
+		} );
+	},
+
+	_renderItemData: function( ul, item ) {
+		return this._renderItem( ul, item ).data( "ui-autocomplete-item", item );
+	},
+
+	_renderItem: function( ul, item ) {
+		return $( "<li>" )
+			.append( $( "<div>" ).text( item.label ) )
+			.appendTo( ul );
+	},
+
+	_move: function( direction, event ) {
+		if ( !this.menu.element.is( ":visible" ) ) {
+			this.search( null, event );
+			return;
+		}
+		if ( this.menu.isFirstItem() && /^previous/.test( direction ) ||
+				this.menu.isLastItem() && /^next/.test( direction ) ) {
+
+			if ( !this.isMultiLine ) {
+				this._value( this.term );
+			}
+
+			this.menu.blur();
+			return;
+		}
+		this.menu[ direction ]( event );
+	},
+
+	widget: function() {
+		return this.menu.element;
+	},
+
+	_value: function() {
+		return this.valueMethod.apply( this.element, arguments );
+	},
+
+	_keyEvent: function( keyEvent, event ) {
+		if ( !this.isMultiLine || this.menu.element.is( ":visible" ) ) {
+			this._move( keyEvent, event );
+
+			// Prevents moving cursor to beginning/end of the text field in some browsers
+			event.preventDefault();
+		}
+	},
+
+	// Support: Chrome <=50
+	// We should be able to just use this.element.prop( "isContentEditable" )
+	// but hidden elements always report false in Chrome.
+	// https://code.google.com/p/chromium/issues/detail?id=313082
+	_isContentEditable: function( element ) {
+		if ( !element.length ) {
+			return false;
+		}
+
+		var editable = element.prop( "contentEditable" );
+
+		if ( editable === "inherit" ) {
+		  return this._isContentEditable( element.parent() );
+		}
+
+		return editable === "true";
+	}
+} );
+
+$.extend( $.ui.autocomplete, {
+	escapeRegex: function( value ) {
+		return value.replace( /[\-\[\]{}()*+?.,\\\^$|#\s]/g, "\\$&" );
+	},
+	filter: function( array, term ) {
+		var matcher = new RegExp( $.ui.autocomplete.escapeRegex( term ), "i" );
+		return $.grep( array, function( value ) {
+			return matcher.test( value.label || value.value || value );
+		} );
+	}
+} );
+
+// Live region extension, adding a `messages` option
+// NOTE: This is an experimental API. We are still investigating
+// a full solution for string manipulation and internationalization.
+$.widget( "ui.autocomplete", $.ui.autocomplete, {
+	options: {
+		messages: {
+			noResults: "No search results.",
+			results: function( amount ) {
+				return amount + ( amount > 1 ? " results are" : " result is" ) +
+					" available, use up and down arrow keys to navigate.";
+			}
+		}
+	},
+
+	__response: function( content ) {
+		var message;
+		this._superApply( arguments );
+		if ( this.options.disabled || this.cancelSearch ) {
+			return;
+		}
+		if ( content && content.length ) {
+			message = this.options.messages.results( content.length );
+		} else {
+			message = this.options.messages.noResults;
+		}
+		this.liveRegion.children().hide();
+		$( "<div>" ).text( message ).appendTo( this.liveRegion );
+	}
+} );
+
+return $.ui.autocomplete;
+
+} ) );
+/*
+
+	jQuery Tags Input Plugin 1.3.3
+
+	Copyright (c) 2011 XOXCO, Inc
+
+	Documentation for this plugin lives here:
+	http://xoxco.com/clickable/jquery-tags-input
+
+	Licensed under the MIT license:
+	http://www.opensource.org/licenses/mit-license.php
+
+	ben@xoxco.com
+
+*/
+
+
+(function($) {
+
+	var delimiter = new Array();
+	var tags_callbacks = new Array();
+	$.fn.doAutosize = function(o){
+	    var minWidth = $(this).data('minwidth'),
+	        maxWidth = $(this).data('maxwidth'),
+	        val = '',
+	        input = $(this),
+	        testSubject = $('#'+$(this).data('tester_id'));
+
+	    if (val === (val = input.val())) {return;}
+
+	    // Enter new content into testSubject
+	    var escaped = val.replace(/&/g, '&amp;').replace(/\s/g,' ').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+	    testSubject.html(escaped);
+	    // Calculate new width + whether to change
+	    var testerWidth = testSubject.width(),
+	        newWidth = (testerWidth + o.comfortZone) >= minWidth ? testerWidth + o.comfortZone : minWidth,
+	        currentWidth = input.width(),
+	        isValidWidthChange = (newWidth < currentWidth && newWidth >= minWidth)
+	                             || (newWidth > minWidth && newWidth < maxWidth);
+
+	    // Animate width
+	    if (isValidWidthChange) {
+	        input.width(newWidth);
+	    }
+
+
+  };
+  $.fn.resetAutosize = function(options){
+    // alert(JSON.stringify(options));
+    var minWidth =  $(this).data('minwidth') || options.minInputWidth || $(this).width(),
+        maxWidth = $(this).data('maxwidth') || options.maxInputWidth || ($(this).closest('.tagsinput').width() - options.inputPadding),
+        val = '',
+        input = $(this),
+        testSubject = $('<tester/>').css({
+            position: 'absolute',
+            top: -9999,
+            left: -9999,
+            width: 'auto',
+            fontSize: input.css('fontSize'),
+            fontFamily: input.css('fontFamily'),
+            fontWeight: input.css('fontWeight'),
+            letterSpacing: input.css('letterSpacing'),
+            whiteSpace: 'nowrap'
+        }),
+        testerId = $(this).attr('id')+'_autosize_tester';
+    if(! $('#'+testerId).length > 0){
+      testSubject.attr('id', testerId);
+      testSubject.appendTo('body');
+    }
+
+    input.data('minwidth', minWidth);
+    input.data('maxwidth', maxWidth);
+    input.data('tester_id', testerId);
+    input.css('width', minWidth);
+  };
+
+	$.fn.addTag = function(value,options) {
+			options = jQuery.extend({focus:false,callback:true},options);
+			this.each(function() {
+				var id = $(this).attr('id');
+
+				var tagslist = $(this).val().split(delimiter[id]);
+				if (tagslist[0] == '') {
+					tagslist = new Array();
+				}
+
+				value = jQuery.trim(value);
+
+				if (options.unique) {
+					var skipTag = $(this).tagExist(value);
+					if(skipTag == true) {
+					    //Marks fake input as not_valid to let styling it
+    				    $('#'+id+'_tag').addClass('not_valid');
+    				}
+				} else {
+					var skipTag = false;
+				}
+
+				if (value !='' && skipTag != true) {
+                    $('<span>').addClass('tag').append(
+                        $('<span>').text(value).append('&nbsp;&nbsp;'),
+                        $('<a>', {
+                            href  : '#',
+                            title : 'Removing tag',
+                            text  : 'x'
+                        }).click(function () {
+                            return $('#' + id).removeTag(escape(value));
+                        })
+                    ).insertBefore('#' + id + '_addTag');
+
+					tagslist.push(value);
+
+					$('#'+id+'_tag').val('');
+					if (options.focus) {
+						$('#'+id+'_tag').focus();
+					} else {
+						$('#'+id+'_tag').blur();
+					}
+
+					$.fn.tagsInput.updateTagsField(this,tagslist);
+
+					if (options.callback && tags_callbacks[id] && tags_callbacks[id]['onAddTag']) {
+						var f = tags_callbacks[id]['onAddTag'];
+						f.call(this, value);
+					}
+					if(tags_callbacks[id] && tags_callbacks[id]['onChange'])
+					{
+						var i = tagslist.length;
+						var f = tags_callbacks[id]['onChange'];
+						f.call(this, $(this), tagslist[i-1]);
+					}
+				}
+
+			});
+
+			return false;
+		};
+
+	$.fn.removeTag = function(value) {
+			value = unescape(value);
+			this.each(function() {
+				var id = $(this).attr('id');
+
+				var old = $(this).val().split(delimiter[id]);
+
+				$('#'+id+'_tagsinput .tag').remove();
+				str = '';
+				for (i=0; i< old.length; i++) {
+					if (old[i]!=value) {
+						str = str + delimiter[id] +old[i];
+					}
+				}
+
+				$.fn.tagsInput.importTags(this,str);
+
+				if (tags_callbacks[id] && tags_callbacks[id]['onRemoveTag']) {
+					var f = tags_callbacks[id]['onRemoveTag'];
+					f.call(this, value);
+				}
+			});
+
+			return false;
+		};
+
+	$.fn.tagExist = function(val) {
+		var id = $(this).attr('id');
+		var tagslist = $(this).val().split(delimiter[id]);
+		return (jQuery.inArray(val, tagslist) >= 0); //true when tag exists, false when not
+	};
+
+   // clear all existing tags and import new ones from a string
+   $.fn.importTags = function(str) {
+      var id = $(this).attr('id');
+      $('#'+id+'_tagsinput .tag').remove();
+      $.fn.tagsInput.importTags(this,str);
+   }
+
+	$.fn.tagsInput = function(options) {
+    var settings = jQuery.extend({
+      interactive:true,
+      defaultText:'add a tag',
+      minChars:0,
+      width:'300px',
+      height:'100px',
+      autocomplete: {selectFirst: false },
+      hide:true,
+      delimiter: ',',
+      unique:true,
+      removeWithBackspace:true,
+      placeholderColor:'#666666',
+      autosize: true,
+      comfortZone: 20,
+      inputPadding: 6*2
+    },options);
+
+    	var uniqueIdCounter = 0;
+
+		this.each(function() {
+         // If we have already initialized the field, do not do it again
+         if (typeof $(this).attr('data-tagsinput-init') !== 'undefined') {
+            return;
+         }
+
+         // Mark the field as having been initialized
+         $(this).attr('data-tagsinput-init', true);
+
+			if (settings.hide) {
+				$(this).hide();
+			}
+			var id = $(this).attr('id');
+			if (!id || delimiter[$(this).attr('id')]) {
+				id = $(this).attr('id', 'tags' + new Date().getTime() + (uniqueIdCounter++)).attr('id');
+			}
+
+			var data = jQuery.extend({
+				pid:id,
+				real_input: '#'+id,
+				holder: '#'+id+'_tagsinput',
+				input_wrapper: '#'+id+'_addTag',
+				fake_input: '#'+id+'_tag'
+			},settings);
+
+			delimiter[id] = data.delimiter;
+
+			if (settings.onAddTag || settings.onRemoveTag || settings.onChange) {
+				tags_callbacks[id] = new Array();
+				tags_callbacks[id]['onAddTag'] = settings.onAddTag;
+				tags_callbacks[id]['onRemoveTag'] = settings.onRemoveTag;
+				tags_callbacks[id]['onChange'] = settings.onChange;
+			}
+
+			var markup = '<div id="'+id+'_tagsinput" class="tagsinput"><div id="'+id+'_addTag">';
+
+			if (settings.interactive) {
+				markup = markup + '<input id="'+id+'_tag" value="" data-default="'+settings.defaultText+'" />';
+			}
+
+			markup = markup + '</div><div class="tags_clear"></div></div>';
+
+			$(markup).insertAfter(this);
+
+			$(data.holder).css('width',settings.width);
+			$(data.holder).css('min-height',settings.height);
+			$(data.holder).css('height',settings.height);
+
+			if ($(data.real_input).val()!='') {
+				$.fn.tagsInput.importTags($(data.real_input),$(data.real_input).val());
+			}
+			if (settings.interactive) {
+				$(data.fake_input).val($(data.fake_input).attr('data-default'));
+				$(data.fake_input).css('color',settings.placeholderColor);
+		        $(data.fake_input).resetAutosize(settings);
+
+				$(data.holder).bind('click',data,function(event) {
+					$(event.data.fake_input).focus();
+				});
+
+				$(data.fake_input).bind('focus',data,function(event) {
+					if ($(event.data.fake_input).val()==$(event.data.fake_input).attr('data-default')) {
+						$(event.data.fake_input).val('');
+					}
+					$(event.data.fake_input).css('color','#000000');
+				});
+
+				if (settings.autocomplete_url != undefined) {
+					autocomplete_options = {source: settings.autocomplete_url};
+					for (attrname in settings.autocomplete) {
+						autocomplete_options[attrname] = settings.autocomplete[attrname];
+					}
+
+					if (jQuery.Autocompleter !== undefined) {
+						$(data.fake_input).autocomplete(settings.autocomplete_url, settings.autocomplete);
+						$(data.fake_input).bind('result',data,function(event,data,formatted) {
+							if (data) {
+								$('#'+id).addTag(data[0] + "",{focus:true,unique:(settings.unique)});
+							}
+					  	});
+					} else if (jQuery.ui.autocomplete !== undefined) {
+						$(data.fake_input).autocomplete(autocomplete_options);
+						$(data.fake_input).bind('autocompleteselect',data,function(event,ui) {
+							$(event.data.real_input).addTag(ui.item.value,{focus:true,unique:(settings.unique)});
+							return false;
+						});
+					}
+
+
+				} else {
+						// if a user tabs out of the field, create a new tag
+						// this is only available if autocomplete is not used.
+						$(data.fake_input).bind('blur',data,function(event) {
+							var d = $(this).attr('data-default');
+							if ($(event.data.fake_input).val()!='' && $(event.data.fake_input).val()!=d) {
+								if( (event.data.minChars <= $(event.data.fake_input).val().length) && (!event.data.maxChars || (event.data.maxChars >= $(event.data.fake_input).val().length)) )
+									$(event.data.real_input).addTag($(event.data.fake_input).val(),{focus:true,unique:(settings.unique)});
+							} else {
+								$(event.data.fake_input).val($(event.data.fake_input).attr('data-default'));
+								$(event.data.fake_input).css('color',settings.placeholderColor);
+							}
+							return false;
+						});
+
+				}
+				// if user types a default delimiter like comma,semicolon and then create a new tag
+				$(data.fake_input).bind('keypress',data,function(event) {
+					if (_checkDelimiter(event)) {
+					    event.preventDefault();
+						if( (event.data.minChars <= $(event.data.fake_input).val().length) && (!event.data.maxChars || (event.data.maxChars >= $(event.data.fake_input).val().length)) )
+							$(event.data.real_input).addTag($(event.data.fake_input).val(),{focus:true,unique:(settings.unique)});
+					  	$(event.data.fake_input).resetAutosize(settings);
+						return false;
+					} else if (event.data.autosize) {
+			            $(event.data.fake_input).doAutosize(settings);
+
+          			}
+				});
+				//Delete last tag on backspace
+				data.removeWithBackspace && $(data.fake_input).bind('keydown', function(event)
+				{
+					if(event.keyCode == 8 && $(this).val() == '')
+					{
+						 event.preventDefault();
+						 var last_tag = $(this).closest('.tagsinput').find('.tag:last').text();
+						 var id = $(this).attr('id').replace(/_tag$/, '');
+						 last_tag = last_tag.replace(/[\s]+x$/, '');
+						 $('#' + id).removeTag(escape(last_tag));
+						 $(this).trigger('focus');
+					}
+				});
+				$(data.fake_input).blur();
+
+				//Removes the not_valid class when user changes the value of the fake input
+				if(data.unique) {
+				    $(data.fake_input).keydown(function(event){
+				        if(event.keyCode == 8 || String.fromCharCode(event.which).match(/\w+|[áéíóúÁÉÍÓÚñÑ,/]+/)) {
+				            $(this).removeClass('not_valid');
+				        }
+				    });
+				}
+			} // if settings.interactive
+		});
+
+		return this;
+
+	};
+
+	$.fn.tagsInput.updateTagsField = function(obj,tagslist) {
+		var id = $(obj).attr('id');
+		$(obj).val(tagslist.join(delimiter[id]));
+	};
+
+	$.fn.tagsInput.importTags = function(obj,val) {
+		$(obj).val('');
+		var id = $(obj).attr('id');
+		var tags = val.split(delimiter[id]);
+		for (i=0; i<tags.length; i++) {
+			$(obj).addTag(tags[i],{focus:false,callback:false});
+		}
+		if(tags_callbacks[id] && tags_callbacks[id]['onChange'])
+		{
+			var f = tags_callbacks[id]['onChange'];
+			f.call(obj, obj, tags[i]);
+		}
+	};
+
+   /**
+     * check delimiter Array
+     * @param event
+     * @returns {boolean}
+     * @private
+     */
+   var _checkDelimiter = function(event){
+      var found = false;
+      if (event.which == 13) {
+         return true;
+      }
+
+      if (typeof event.data.delimiter === 'string') {
+         if (event.which == event.data.delimiter.charCodeAt(0)) {
+            found = true;
+         }
+      } else {
+         $.each(event.data.delimiter, function(index, delimiter) {
+            if (event.which == delimiter.charCodeAt(0)) {
+               found = true;
+            }
+         });
+      }
+
+      return found;
+   }
+})(jQuery);
+(function($){
+
+    /**
+     * Copyright 2012, Digital Fusion
+     * Licensed under the MIT license.
+     * http://teamdf.com/jquery-plugins/license/
+     *
+     * @author Sam Sehnert
+     * @desc A small plugin that checks whether elements are within
+     *       the user visible viewport of a web browser.
+     *       only accounts for vertical position, not horizontal.
+     */
+    var $w = $(window);
+    $.fn.visible = function(partial,hidden,direction){
+
+        if (this.length < 1)
+            return;
+
+        var $t        = this.length > 1 ? this.eq(0) : this,
+            t         = $t.get(0),
+            vpWidth   = $w.width(),
+            vpHeight  = $w.height(),
+            direction = (direction) ? direction : 'both',
+            clientSize = hidden === true ? t.offsetWidth * t.offsetHeight : true;
+
+        if (typeof t.getBoundingClientRect === 'function'){
+
+            // Use this native browser method, if available.
+            var rec = t.getBoundingClientRect(),
+                tViz = rec.top    >= 0 && rec.top    <  vpHeight,
+                bViz = rec.bottom >  0 && rec.bottom <= vpHeight,
+                lViz = rec.left   >= 0 && rec.left   <  vpWidth,
+                rViz = rec.right  >  0 && rec.right  <= vpWidth,
+                vVisible   = partial ? tViz || bViz : tViz && bViz,
+                hVisible   = partial ? lViz || rViz : lViz && rViz;
+
+            if(direction === 'both')
+                return clientSize && vVisible && hVisible;
+            else if(direction === 'vertical')
+                return clientSize && vVisible;
+            else if(direction === 'horizontal')
+                return clientSize && hVisible;
+        } else {
+
+            var viewTop         = $w.scrollTop(),
+                viewBottom      = viewTop + vpHeight,
+                viewLeft        = $w.scrollLeft(),
+                viewRight       = viewLeft + vpWidth,
+                offset          = $t.offset(),
+                _top            = offset.top,
+                _bottom         = _top + $t.height(),
+                _left           = offset.left,
+                _right          = _left + $t.width(),
+                compareTop      = partial === true ? _bottom : _top,
+                compareBottom   = partial === true ? _top : _bottom,
+                compareLeft     = partial === true ? _right : _left,
+                compareRight    = partial === true ? _left : _right;
+
+            if(direction === 'both')
+                return !!clientSize && ((compareBottom <= viewBottom) && (compareTop >= viewTop)) && ((compareRight <= viewRight) && (compareLeft >= viewLeft));
+            else if(direction === 'vertical')
+                return !!clientSize && ((compareBottom <= viewBottom) && (compareTop >= viewTop));
+            else if(direction === 'horizontal')
+                return !!clientSize && ((compareRight <= viewRight) && (compareLeft >= viewLeft));
+        }
+    };
+
+})(jQuery);
+/*
+Turbolinks 5.2.0
+Copyright © 2018 Basecamp, LLC
+ */
+
+(function(){var t=this;(function(){(function(){this.Turbolinks={supported:function(){return null!=window.history.pushState&&null!=window.requestAnimationFrame&&null!=window.addEventListener}(),visit:function(t,r){return e.controller.visit(t,r)},clearCache:function(){return e.controller.clearCache()},setProgressBarDelay:function(t){return e.controller.setProgressBarDelay(t)}}}).call(this)}).call(t);var e=t.Turbolinks;(function(){(function(){var t,r,n,o=[].slice;e.copyObject=function(t){var e,r,n;r={};for(e in t)n=t[e],r[e]=n;return r},e.closest=function(e,r){return t.call(e,r)},t=function(){var t,e;return t=document.documentElement,null!=(e=t.closest)?e:function(t){var e;for(e=this;e;){if(e.nodeType===Node.ELEMENT_NODE&&r.call(e,t))return e;e=e.parentNode}}}(),e.defer=function(t){return setTimeout(t,1)},e.throttle=function(t){var e;return e=null,function(){var r;return r=1<=arguments.length?o.call(arguments,0):[],null!=e?e:e=requestAnimationFrame(function(n){return function(){return e=null,t.apply(n,r)}}(this))}},e.dispatch=function(t,e){var r,o,i,s,a,u;return a=null!=e?e:{},u=a.target,r=a.cancelable,o=a.data,i=document.createEvent("Events"),i.initEvent(t,!0,r===!0),i.data=null!=o?o:{},i.cancelable&&!n&&(s=i.preventDefault,i.preventDefault=function(){return this.defaultPrevented||Object.defineProperty(this,"defaultPrevented",{get:function(){return!0}}),s.call(this)}),(null!=u?u:document).dispatchEvent(i),i},n=function(){var t;return t=document.createEvent("Events"),t.initEvent("test",!0,!0),t.preventDefault(),t.defaultPrevented}(),e.match=function(t,e){return r.call(t,e)},r=function(){var t,e,r,n;return t=document.documentElement,null!=(e=null!=(r=null!=(n=t.matchesSelector)?n:t.webkitMatchesSelector)?r:t.msMatchesSelector)?e:t.mozMatchesSelector}(),e.uuid=function(){var t,e,r;for(r="",t=e=1;36>=e;t=++e)r+=9===t||14===t||19===t||24===t?"-":15===t?"4":20===t?(Math.floor(4*Math.random())+8).toString(16):Math.floor(15*Math.random()).toString(16);return r}}).call(this),function(){e.Location=function(){function t(t){var e,r;null==t&&(t=""),r=document.createElement("a"),r.href=t.toString(),this.absoluteURL=r.href,e=r.hash.length,2>e?this.requestURL=this.absoluteURL:(this.requestURL=this.absoluteURL.slice(0,-e),this.anchor=r.hash.slice(1))}var e,r,n,o;return t.wrap=function(t){return t instanceof this?t:new this(t)},t.prototype.getOrigin=function(){return this.absoluteURL.split("/",3).join("/")},t.prototype.getPath=function(){var t,e;return null!=(t=null!=(e=this.requestURL.match(/\/\/[^\/]*(\/[^?;]*)/))?e[1]:void 0)?t:"/"},t.prototype.getPathComponents=function(){return this.getPath().split("/").slice(1)},t.prototype.getLastPathComponent=function(){return this.getPathComponents().slice(-1)[0]},t.prototype.getExtension=function(){var t,e;return null!=(t=null!=(e=this.getLastPathComponent().match(/\.[^.]*$/))?e[0]:void 0)?t:""},t.prototype.isHTML=function(){return this.getExtension().match(/^(?:|\.(?:htm|html|xhtml))$/)},t.prototype.isPrefixedBy=function(t){var e;return e=r(t),this.isEqualTo(t)||o(this.absoluteURL,e)},t.prototype.isEqualTo=function(t){return this.absoluteURL===(null!=t?t.absoluteURL:void 0)},t.prototype.toCacheKey=function(){return this.requestURL},t.prototype.toJSON=function(){return this.absoluteURL},t.prototype.toString=function(){return this.absoluteURL},t.prototype.valueOf=function(){return this.absoluteURL},r=function(t){return e(t.getOrigin()+t.getPath())},e=function(t){return n(t,"/")?t:t+"/"},o=function(t,e){return t.slice(0,e.length)===e},n=function(t,e){return t.slice(-e.length)===e},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.HttpRequest=function(){function r(r,n,o){this.delegate=r,this.requestCanceled=t(this.requestCanceled,this),this.requestTimedOut=t(this.requestTimedOut,this),this.requestFailed=t(this.requestFailed,this),this.requestLoaded=t(this.requestLoaded,this),this.requestProgressed=t(this.requestProgressed,this),this.url=e.Location.wrap(n).requestURL,this.referrer=e.Location.wrap(o).absoluteURL,this.createXHR()}return r.NETWORK_FAILURE=0,r.TIMEOUT_FAILURE=-1,r.timeout=60,r.prototype.send=function(){var t;return this.xhr&&!this.sent?(this.notifyApplicationBeforeRequestStart(),this.setProgress(0),this.xhr.send(),this.sent=!0,"function"==typeof(t=this.delegate).requestStarted?t.requestStarted():void 0):void 0},r.prototype.cancel=function(){return this.xhr&&this.sent?this.xhr.abort():void 0},r.prototype.requestProgressed=function(t){return t.lengthComputable?this.setProgress(t.loaded/t.total):void 0},r.prototype.requestLoaded=function(){return this.endRequest(function(t){return function(){var e;return 200<=(e=t.xhr.status)&&300>e?t.delegate.requestCompletedWithResponse(t.xhr.responseText,t.xhr.getResponseHeader("Turbolinks-Location")):(t.failed=!0,t.delegate.requestFailedWithStatusCode(t.xhr.status,t.xhr.responseText))}}(this))},r.prototype.requestFailed=function(){return this.endRequest(function(t){return function(){return t.failed=!0,t.delegate.requestFailedWithStatusCode(t.constructor.NETWORK_FAILURE)}}(this))},r.prototype.requestTimedOut=function(){return this.endRequest(function(t){return function(){return t.failed=!0,t.delegate.requestFailedWithStatusCode(t.constructor.TIMEOUT_FAILURE)}}(this))},r.prototype.requestCanceled=function(){return this.endRequest()},r.prototype.notifyApplicationBeforeRequestStart=function(){return e.dispatch("turbolinks:request-start",{data:{url:this.url,xhr:this.xhr}})},r.prototype.notifyApplicationAfterRequestEnd=function(){return e.dispatch("turbolinks:request-end",{data:{url:this.url,xhr:this.xhr}})},r.prototype.createXHR=function(){return this.xhr=new XMLHttpRequest,this.xhr.open("GET",this.url,!0),this.xhr.timeout=1e3*this.constructor.timeout,this.xhr.setRequestHeader("Accept","text/html, application/xhtml+xml"),this.xhr.setRequestHeader("Turbolinks-Referrer",this.referrer),this.xhr.onprogress=this.requestProgressed,this.xhr.onload=this.requestLoaded,this.xhr.onerror=this.requestFailed,this.xhr.ontimeout=this.requestTimedOut,this.xhr.onabort=this.requestCanceled},r.prototype.endRequest=function(t){return this.xhr?(this.notifyApplicationAfterRequestEnd(),null!=t&&t.call(this),this.destroy()):void 0},r.prototype.setProgress=function(t){var e;return this.progress=t,"function"==typeof(e=this.delegate).requestProgressed?e.requestProgressed(this.progress):void 0},r.prototype.destroy=function(){var t;return this.setProgress(1),"function"==typeof(t=this.delegate).requestFinished&&t.requestFinished(),this.delegate=null,this.xhr=null},r}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.ProgressBar=function(){function e(){this.trickle=t(this.trickle,this),this.stylesheetElement=this.createStylesheetElement(),this.progressElement=this.createProgressElement()}var r;return r=300,e.defaultCSS=".turbolinks-progress-bar {\n  position: fixed;\n  display: block;\n  top: 0;\n  left: 0;\n  height: 3px;\n  background: #0076ff;\n  z-index: 9999;\n  transition: width "+r+"ms ease-out, opacity "+r/2+"ms "+r/2+"ms ease-in;\n  transform: translate3d(0, 0, 0);\n}",e.prototype.show=function(){return this.visible?void 0:(this.visible=!0,this.installStylesheetElement(),this.installProgressElement(),this.startTrickling())},e.prototype.hide=function(){return this.visible&&!this.hiding?(this.hiding=!0,this.fadeProgressElement(function(t){return function(){return t.uninstallProgressElement(),t.stopTrickling(),t.visible=!1,t.hiding=!1}}(this))):void 0},e.prototype.setValue=function(t){return this.value=t,this.refresh()},e.prototype.installStylesheetElement=function(){return document.head.insertBefore(this.stylesheetElement,document.head.firstChild)},e.prototype.installProgressElement=function(){return this.progressElement.style.width=0,this.progressElement.style.opacity=1,document.documentElement.insertBefore(this.progressElement,document.body),this.refresh()},e.prototype.fadeProgressElement=function(t){return this.progressElement.style.opacity=0,setTimeout(t,1.5*r)},e.prototype.uninstallProgressElement=function(){return this.progressElement.parentNode?document.documentElement.removeChild(this.progressElement):void 0},e.prototype.startTrickling=function(){return null!=this.trickleInterval?this.trickleInterval:this.trickleInterval=setInterval(this.trickle,r)},e.prototype.stopTrickling=function(){return clearInterval(this.trickleInterval),this.trickleInterval=null},e.prototype.trickle=function(){return this.setValue(this.value+Math.random()/100)},e.prototype.refresh=function(){return requestAnimationFrame(function(t){return function(){return t.progressElement.style.width=10+90*t.value+"%"}}(this))},e.prototype.createStylesheetElement=function(){var t;return t=document.createElement("style"),t.type="text/css",t.textContent=this.constructor.defaultCSS,t},e.prototype.createProgressElement=function(){var t;return t=document.createElement("div"),t.className="turbolinks-progress-bar",t},e}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.BrowserAdapter=function(){function r(r){this.controller=r,this.showProgressBar=t(this.showProgressBar,this),this.progressBar=new e.ProgressBar}var n,o,i;return i=e.HttpRequest,n=i.NETWORK_FAILURE,o=i.TIMEOUT_FAILURE,r.prototype.visitProposedToLocationWithAction=function(t,e){return this.controller.startVisitToLocationWithAction(t,e)},r.prototype.visitStarted=function(t){return t.issueRequest(),t.changeHistory(),t.loadCachedSnapshot()},r.prototype.visitRequestStarted=function(t){return this.progressBar.setValue(0),t.hasCachedSnapshot()||"restore"!==t.action?this.showProgressBarAfterDelay():this.showProgressBar()},r.prototype.visitRequestProgressed=function(t){return this.progressBar.setValue(t.progress)},r.prototype.visitRequestCompleted=function(t){return t.loadResponse()},r.prototype.visitRequestFailedWithStatusCode=function(t,e){switch(e){case n:case o:return this.reload();default:return t.loadResponse()}},r.prototype.visitRequestFinished=function(t){return this.hideProgressBar()},r.prototype.visitCompleted=function(t){return t.followRedirect()},r.prototype.pageInvalidated=function(){return this.reload()},r.prototype.showProgressBarAfterDelay=function(){return this.progressBarTimeout=setTimeout(this.showProgressBar,this.controller.progressBarDelay)},r.prototype.showProgressBar=function(){return this.progressBar.show()},r.prototype.hideProgressBar=function(){return this.progressBar.hide(),clearTimeout(this.progressBarTimeout)},r.prototype.reload=function(){return window.location.reload()},r}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.History=function(){function r(e){this.delegate=e,this.onPageLoad=t(this.onPageLoad,this),this.onPopState=t(this.onPopState,this)}return r.prototype.start=function(){return this.started?void 0:(addEventListener("popstate",this.onPopState,!1),addEventListener("load",this.onPageLoad,!1),this.started=!0)},r.prototype.stop=function(){return this.started?(removeEventListener("popstate",this.onPopState,!1),removeEventListener("load",this.onPageLoad,!1),this.started=!1):void 0},r.prototype.push=function(t,r){return t=e.Location.wrap(t),this.update("push",t,r)},r.prototype.replace=function(t,r){return t=e.Location.wrap(t),this.update("replace",t,r)},r.prototype.onPopState=function(t){var r,n,o,i;return this.shouldHandlePopState()&&(i=null!=(n=t.state)?n.turbolinks:void 0)?(r=e.Location.wrap(window.location),o=i.restorationIdentifier,this.delegate.historyPoppedToLocationWithRestorationIdentifier(r,o)):void 0},r.prototype.onPageLoad=function(t){return e.defer(function(t){return function(){return t.pageLoaded=!0}}(this))},r.prototype.shouldHandlePopState=function(){return this.pageIsLoaded()},r.prototype.pageIsLoaded=function(){return this.pageLoaded||"complete"===document.readyState},r.prototype.update=function(t,e,r){var n;return n={turbolinks:{restorationIdentifier:r}},history[t+"State"](n,null,e)},r}()}.call(this),function(){e.HeadDetails=function(){function t(t){var e,r,n,s,a,u;for(this.elements={},n=0,a=t.length;a>n;n++)u=t[n],u.nodeType===Node.ELEMENT_NODE&&(s=u.outerHTML,r=null!=(e=this.elements)[s]?e[s]:e[s]={type:i(u),tracked:o(u),elements:[]},r.elements.push(u))}var e,r,n,o,i;return t.fromHeadElement=function(t){var e;return new this(null!=(e=null!=t?t.childNodes:void 0)?e:[])},t.prototype.hasElementWithKey=function(t){return t in this.elements},t.prototype.getTrackedElementSignature=function(){var t,e;return function(){var r,n;r=this.elements,n=[];for(t in r)e=r[t].tracked,e&&n.push(t);return n}.call(this).join("")},t.prototype.getScriptElementsNotInDetails=function(t){return this.getElementsMatchingTypeNotInDetails("script",t)},t.prototype.getStylesheetElementsNotInDetails=function(t){return this.getElementsMatchingTypeNotInDetails("stylesheet",t)},t.prototype.getElementsMatchingTypeNotInDetails=function(t,e){var r,n,o,i,s,a;o=this.elements,s=[];for(n in o)i=o[n],a=i.type,r=i.elements,a!==t||e.hasElementWithKey(n)||s.push(r[0]);return s},t.prototype.getProvisionalElements=function(){var t,e,r,n,o,i,s;r=[],n=this.elements;for(e in n)o=n[e],s=o.type,i=o.tracked,t=o.elements,null!=s||i?t.length>1&&r.push.apply(r,t.slice(1)):r.push.apply(r,t);return r},t.prototype.getMetaValue=function(t){var e;return null!=(e=this.findMetaElementByName(t))?e.getAttribute("content"):void 0},t.prototype.findMetaElementByName=function(t){var r,n,o,i;r=void 0,i=this.elements;for(o in i)n=i[o].elements,e(n[0],t)&&(r=n[0]);return r},i=function(t){return r(t)?"script":n(t)?"stylesheet":void 0},o=function(t){return"reload"===t.getAttribute("data-turbolinks-track")},r=function(t){var e;return e=t.tagName.toLowerCase(),"script"===e},n=function(t){var e;return e=t.tagName.toLowerCase(),"style"===e||"link"===e&&"stylesheet"===t.getAttribute("rel")},e=function(t,e){var r;return r=t.tagName.toLowerCase(),"meta"===r&&t.getAttribute("name")===e},t}()}.call(this),function(){e.Snapshot=function(){function t(t,e){this.headDetails=t,this.bodyElement=e}return t.wrap=function(t){return t instanceof this?t:"string"==typeof t?this.fromHTMLString(t):this.fromHTMLElement(t)},t.fromHTMLString=function(t){var e;return e=document.createElement("html"),e.innerHTML=t,this.fromHTMLElement(e)},t.fromHTMLElement=function(t){var r,n,o,i;return o=t.querySelector("head"),r=null!=(i=t.querySelector("body"))?i:document.createElement("body"),n=e.HeadDetails.fromHeadElement(o),new this(n,r)},t.prototype.clone=function(){return new this.constructor(this.headDetails,this.bodyElement.cloneNode(!0))},t.prototype.getRootLocation=function(){var t,r;return r=null!=(t=this.getSetting("root"))?t:"/",new e.Location(r)},t.prototype.getCacheControlValue=function(){return this.getSetting("cache-control")},t.prototype.getElementForAnchor=function(t){try{return this.bodyElement.querySelector("[id='"+t+"'], a[name='"+t+"']")}catch(e){}},t.prototype.getPermanentElements=function(){return this.bodyElement.querySelectorAll("[id][data-turbolinks-permanent]")},t.prototype.getPermanentElementById=function(t){return this.bodyElement.querySelector("#"+t+"[data-turbolinks-permanent]")},t.prototype.getPermanentElementsPresentInSnapshot=function(t){var e,r,n,o,i;for(o=this.getPermanentElements(),i=[],r=0,n=o.length;n>r;r++)e=o[r],t.getPermanentElementById(e.id)&&i.push(e);return i},t.prototype.findFirstAutofocusableElement=function(){return this.bodyElement.querySelector("[autofocus]")},t.prototype.hasAnchor=function(t){return null!=this.getElementForAnchor(t)},t.prototype.isPreviewable=function(){return"no-preview"!==this.getCacheControlValue()},t.prototype.isCacheable=function(){return"no-cache"!==this.getCacheControlValue()},t.prototype.isVisitable=function(){return"reload"!==this.getSetting("visit-control")},t.prototype.getSetting=function(t){return this.headDetails.getMetaValue("turbolinks-"+t)},t}()}.call(this),function(){var t=[].slice;e.Renderer=function(){function e(){}var r;return e.render=function(){var e,r,n,o;return n=arguments[0],r=arguments[1],e=3<=arguments.length?t.call(arguments,2):[],o=function(t,e,r){r.prototype=t.prototype;var n=new r,o=t.apply(n,e);return Object(o)===o?o:n}(this,e,function(){}),o.delegate=n,o.render(r),o},e.prototype.renderView=function(t){return this.delegate.viewWillRender(this.newBody),t(),this.delegate.viewRendered(this.newBody)},e.prototype.invalidateView=function(){return this.delegate.viewInvalidated()},e.prototype.createScriptElement=function(t){var e;return"false"===t.getAttribute("data-turbolinks-eval")?t:(e=document.createElement("script"),e.textContent=t.textContent,e.async=!1,r(e,t),e)},r=function(t,e){var r,n,o,i,s,a,u;for(i=e.attributes,a=[],r=0,n=i.length;n>r;r++)s=i[r],o=s.name,u=s.value,a.push(t.setAttribute(o,u));return a},e}()}.call(this),function(){var t,r,n=function(t,e){function r(){this.constructor=t}for(var n in e)o.call(e,n)&&(t[n]=e[n]);return r.prototype=e.prototype,t.prototype=new r,t.__super__=e.prototype,t},o={}.hasOwnProperty;e.SnapshotRenderer=function(e){function o(t,e,r){this.currentSnapshot=t,this.newSnapshot=e,this.isPreview=r,this.currentHeadDetails=this.currentSnapshot.headDetails,this.newHeadDetails=this.newSnapshot.headDetails,this.currentBody=this.currentSnapshot.bodyElement,this.newBody=this.newSnapshot.bodyElement}return n(o,e),o.prototype.render=function(t){return this.shouldRender()?(this.mergeHead(),this.renderView(function(e){return function(){return e.replaceBody(),e.isPreview||e.focusFirstAutofocusableElement(),t()}}(this))):this.invalidateView()},o.prototype.mergeHead=function(){return this.copyNewHeadStylesheetElements(),this.copyNewHeadScriptElements(),this.removeCurrentHeadProvisionalElements(),this.copyNewHeadProvisionalElements()},o.prototype.replaceBody=function(){var t;return t=this.relocateCurrentBodyPermanentElements(),this.activateNewBodyScriptElements(),this.assignNewBody(),this.replacePlaceholderElementsWithClonedPermanentElements(t)},o.prototype.shouldRender=function(){return this.newSnapshot.isVisitable()&&this.trackedElementsAreIdentical()},o.prototype.trackedElementsAreIdentical=function(){return this.currentHeadDetails.getTrackedElementSignature()===this.newHeadDetails.getTrackedElementSignature()},o.prototype.copyNewHeadStylesheetElements=function(){var t,e,r,n,o;for(n=this.getNewHeadStylesheetElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(t));return o},o.prototype.copyNewHeadScriptElements=function(){var t,e,r,n,o;for(n=this.getNewHeadScriptElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(this.createScriptElement(t)));return o},o.prototype.removeCurrentHeadProvisionalElements=function(){var t,e,r,n,o;for(n=this.getCurrentHeadProvisionalElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.removeChild(t));return o},o.prototype.copyNewHeadProvisionalElements=function(){var t,e,r,n,o;for(n=this.getNewHeadProvisionalElements(),o=[],e=0,r=n.length;r>e;e++)t=n[e],o.push(document.head.appendChild(t));return o},o.prototype.relocateCurrentBodyPermanentElements=function(){var e,n,o,i,s,a,u;for(a=this.getCurrentBodyPermanentElements(),u=[],e=0,n=a.length;n>e;e++)i=a[e],s=t(i),o=this.newSnapshot.getPermanentElementById(i.id),r(i,s.element),r(o,i),u.push(s);return u},o.prototype.replacePlaceholderElementsWithClonedPermanentElements=function(t){var e,n,o,i,s,a,u;for(u=[],o=0,i=t.length;i>o;o++)a=t[o],n=a.element,s=a.permanentElement,e=s.cloneNode(!0),u.push(r(n,e));return u},o.prototype.activateNewBodyScriptElements=function(){var t,e,n,o,i,s;for(i=this.getNewBodyScriptElements(),s=[],e=0,o=i.length;o>e;e++)n=i[e],t=this.createScriptElement(n),s.push(r(n,t));return s},o.prototype.assignNewBody=function(){return document.body=this.newBody},o.prototype.focusFirstAutofocusableElement=function(){var t;return null!=(t=this.newSnapshot.findFirstAutofocusableElement())?t.focus():void 0},o.prototype.getNewHeadStylesheetElements=function(){return this.newHeadDetails.getStylesheetElementsNotInDetails(this.currentHeadDetails)},o.prototype.getNewHeadScriptElements=function(){return this.newHeadDetails.getScriptElementsNotInDetails(this.currentHeadDetails)},o.prototype.getCurrentHeadProvisionalElements=function(){return this.currentHeadDetails.getProvisionalElements()},o.prototype.getNewHeadProvisionalElements=function(){return this.newHeadDetails.getProvisionalElements()},o.prototype.getCurrentBodyPermanentElements=function(){return this.currentSnapshot.getPermanentElementsPresentInSnapshot(this.newSnapshot)},o.prototype.getNewBodyScriptElements=function(){return this.newBody.querySelectorAll("script")},o}(e.Renderer),t=function(t){var e;return e=document.createElement("meta"),e.setAttribute("name","turbolinks-permanent-placeholder"),e.setAttribute("content",t.id),{element:e,permanentElement:t}},r=function(t,e){var r;return(r=t.parentNode)?r.replaceChild(e,t):void 0}}.call(this),function(){var t=function(t,e){function n(){this.constructor=t}for(var o in e)r.call(e,o)&&(t[o]=e[o]);return n.prototype=e.prototype,t.prototype=new n,t.__super__=e.prototype,t},r={}.hasOwnProperty;e.ErrorRenderer=function(e){function r(t){var e;e=document.createElement("html"),e.innerHTML=t,this.newHead=e.querySelector("head"),this.newBody=e.querySelector("body")}return t(r,e),r.prototype.render=function(t){return this.renderView(function(e){return function(){return e.replaceHeadAndBody(),e.activateBodyScriptElements(),t()}}(this))},r.prototype.replaceHeadAndBody=function(){var t,e;return e=document.head,t=document.body,e.parentNode.replaceChild(this.newHead,e),t.parentNode.replaceChild(this.newBody,t)},r.prototype.activateBodyScriptElements=function(){var t,e,r,n,o,i;for(n=this.getScriptElements(),i=[],e=0,r=n.length;r>e;e++)o=n[e],t=this.createScriptElement(o),i.push(o.parentNode.replaceChild(t,o));return i},r.prototype.getScriptElements=function(){return document.documentElement.querySelectorAll("script")},r}(e.Renderer)}.call(this),function(){e.View=function(){function t(t){this.delegate=t,this.htmlElement=document.documentElement}return t.prototype.getRootLocation=function(){return this.getSnapshot().getRootLocation()},t.prototype.getElementForAnchor=function(t){return this.getSnapshot().getElementForAnchor(t)},t.prototype.getSnapshot=function(){return e.Snapshot.fromHTMLElement(this.htmlElement)},t.prototype.render=function(t,e){var r,n,o;return o=t.snapshot,r=t.error,n=t.isPreview,this.markAsPreview(n),null!=o?this.renderSnapshot(o,n,e):this.renderError(r,e)},t.prototype.markAsPreview=function(t){return t?this.htmlElement.setAttribute("data-turbolinks-preview",""):this.htmlElement.removeAttribute("data-turbolinks-preview")},t.prototype.renderSnapshot=function(t,r,n){return e.SnapshotRenderer.render(this.delegate,n,this.getSnapshot(),e.Snapshot.wrap(t),r)},t.prototype.renderError=function(t,r){return e.ErrorRenderer.render(this.delegate,r,t)},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.ScrollManager=function(){function r(r){this.delegate=r,this.onScroll=t(this.onScroll,this),this.onScroll=e.throttle(this.onScroll)}return r.prototype.start=function(){return this.started?void 0:(addEventListener("scroll",this.onScroll,!1),this.onScroll(),this.started=!0)},r.prototype.stop=function(){return this.started?(removeEventListener("scroll",this.onScroll,!1),this.started=!1):void 0},r.prototype.scrollToElement=function(t){return t.scrollIntoView()},r.prototype.scrollToPosition=function(t){var e,r;return e=t.x,r=t.y,window.scrollTo(e,r)},r.prototype.onScroll=function(t){return this.updatePosition({x:window.pageXOffset,y:window.pageYOffset})},r.prototype.updatePosition=function(t){var e;return this.position=t,null!=(e=this.delegate)?e.scrollPositionChanged(this.position):void 0},r}()}.call(this),function(){e.SnapshotCache=function(){function t(t){this.size=t,this.keys=[],this.snapshots={}}var r;return t.prototype.has=function(t){var e;return e=r(t),e in this.snapshots},t.prototype.get=function(t){var e;if(this.has(t))return e=this.read(t),this.touch(t),e},t.prototype.put=function(t,e){return this.write(t,e),this.touch(t),e},t.prototype.read=function(t){var e;return e=r(t),this.snapshots[e]},t.prototype.write=function(t,e){var n;return n=r(t),this.snapshots[n]=e},t.prototype.touch=function(t){var e,n;return n=r(t),e=this.keys.indexOf(n),e>-1&&this.keys.splice(e,1),this.keys.unshift(n),this.trim()},t.prototype.trim=function(){var t,e,r,n,o;for(n=this.keys.splice(this.size),o=[],t=0,r=n.length;r>t;t++)e=n[t],o.push(delete this.snapshots[e]);return o},r=function(t){return e.Location.wrap(t).toCacheKey()},t}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.Visit=function(){function r(r,n,o){this.controller=r,this.action=o,this.performScroll=t(this.performScroll,this),this.identifier=e.uuid(),this.location=e.Location.wrap(n),this.adapter=this.controller.adapter,this.state="initialized",this.timingMetrics={}}var n;return r.prototype.start=function(){return"initialized"===this.state?(this.recordTimingMetric("visitStart"),this.state="started",this.adapter.visitStarted(this)):void 0},r.prototype.cancel=function(){var t;return"started"===this.state?(null!=(t=this.request)&&t.cancel(),this.cancelRender(),this.state="canceled"):void 0},r.prototype.complete=function(){var t;return"started"===this.state?(this.recordTimingMetric("visitEnd"),this.state="completed","function"==typeof(t=this.adapter).visitCompleted&&t.visitCompleted(this),this.controller.visitCompleted(this)):void 0},r.prototype.fail=function(){var t;return"started"===this.state?(this.state="failed","function"==typeof(t=this.adapter).visitFailed?t.visitFailed(this):void 0):void 0},r.prototype.changeHistory=function(){var t,e;return this.historyChanged?void 0:(t=this.location.isEqualTo(this.referrer)?"replace":this.action,e=n(t),this.controller[e](this.location,this.restorationIdentifier),this.historyChanged=!0)},r.prototype.issueRequest=function(){return this.shouldIssueRequest()&&null==this.request?(this.progress=0,this.request=new e.HttpRequest(this,this.location,this.referrer),this.request.send()):void 0},r.prototype.getCachedSnapshot=function(){var t;return!(t=this.controller.getCachedSnapshotForLocation(this.location))||null!=this.location.anchor&&!t.hasAnchor(this.location.anchor)||"restore"!==this.action&&!t.isPreviewable()?void 0:t},r.prototype.hasCachedSnapshot=function(){return null!=this.getCachedSnapshot()},r.prototype.loadCachedSnapshot=function(){var t,e;return(e=this.getCachedSnapshot())?(t=this.shouldIssueRequest(),this.render(function(){var r;return this.cacheSnapshot(),this.controller.render({snapshot:e,isPreview:t},this.performScroll),"function"==typeof(r=this.adapter).visitRendered&&r.visitRendered(this),t?void 0:this.complete()})):void 0},r.prototype.loadResponse=function(){return null!=this.response?this.render(function(){var t,e;return this.cacheSnapshot(),this.request.failed?(this.controller.render({error:this.response},this.performScroll),"function"==typeof(t=this.adapter).visitRendered&&t.visitRendered(this),this.fail()):(this.controller.render({snapshot:this.response},this.performScroll),"function"==typeof(e=this.adapter).visitRendered&&e.visitRendered(this),this.complete())}):void 0},r.prototype.followRedirect=function(){return this.redirectedToLocation&&!this.followedRedirect?(this.location=this.redirectedToLocation,this.controller.replaceHistoryWithLocationAndRestorationIdentifier(this.redirectedToLocation,this.restorationIdentifier),this.followedRedirect=!0):void 0},r.prototype.requestStarted=function(){var t;return this.recordTimingMetric("requestStart"),"function"==typeof(t=this.adapter).visitRequestStarted?t.visitRequestStarted(this):void 0},r.prototype.requestProgressed=function(t){var e;return this.progress=t,"function"==typeof(e=this.adapter).visitRequestProgressed?e.visitRequestProgressed(this):void 0},r.prototype.requestCompletedWithResponse=function(t,r){return this.response=t,null!=r&&(this.redirectedToLocation=e.Location.wrap(r)),this.adapter.visitRequestCompleted(this)},r.prototype.requestFailedWithStatusCode=function(t,e){return this.response=e,this.adapter.visitRequestFailedWithStatusCode(this,t)},r.prototype.requestFinished=function(){var t;return this.recordTimingMetric("requestEnd"),"function"==typeof(t=this.adapter).visitRequestFinished?t.visitRequestFinished(this):void 0},r.prototype.performScroll=function(){return this.scrolled?void 0:("restore"===this.action?this.scrollToRestoredPosition()||this.scrollToTop():this.scrollToAnchor()||this.scrollToTop(),this.scrolled=!0)},r.prototype.scrollToRestoredPosition=function(){var t,e;return t=null!=(e=this.restorationData)?e.scrollPosition:void 0,null!=t?(this.controller.scrollToPosition(t),!0):void 0},r.prototype.scrollToAnchor=function(){return null!=this.location.anchor?(this.controller.scrollToAnchor(this.location.anchor),!0):void 0},r.prototype.scrollToTop=function(){return this.controller.scrollToPosition({x:0,y:0})},r.prototype.recordTimingMetric=function(t){var e;return null!=(e=this.timingMetrics)[t]?e[t]:e[t]=(new Date).getTime()},r.prototype.getTimingMetrics=function(){return e.copyObject(this.timingMetrics)},n=function(t){switch(t){case"replace":return"replaceHistoryWithLocationAndRestorationIdentifier";case"advance":case"restore":return"pushHistoryWithLocationAndRestorationIdentifier"}},r.prototype.shouldIssueRequest=function(){return"restore"===this.action?!this.hasCachedSnapshot():!0},r.prototype.cacheSnapshot=function(){return this.snapshotCached?void 0:(this.controller.cacheSnapshot(),this.snapshotCached=!0)},r.prototype.render=function(t){return this.cancelRender(),this.frame=requestAnimationFrame(function(e){return function(){return e.frame=null,t.call(e)}}(this))},r.prototype.cancelRender=function(){return this.frame?cancelAnimationFrame(this.frame):void 0},r}()}.call(this),function(){var t=function(t,e){return function(){return t.apply(e,arguments)}};e.Controller=function(){function r(){this.clickBubbled=t(this.clickBubbled,this),this.clickCaptured=t(this.clickCaptured,this),this.pageLoaded=t(this.pageLoaded,this),this.history=new e.History(this),this.view=new e.View(this),this.scrollManager=new e.ScrollManager(this),this.restorationData={},this.clearCache(),this.setProgressBarDelay(500)}return r.prototype.start=function(){return e.supported&&!this.started?(addEventListener("click",this.clickCaptured,!0),addEventListener("DOMContentLoaded",this.pageLoaded,!1),this.scrollManager.start(),this.startHistory(),this.started=!0,this.enabled=!0):void 0},r.prototype.disable=function(){return this.enabled=!1},r.prototype.stop=function(){return this.started?(removeEventListener("click",this.clickCaptured,!0),removeEventListener("DOMContentLoaded",this.pageLoaded,!1),this.scrollManager.stop(),this.stopHistory(),this.started=!1):void 0},r.prototype.clearCache=function(){return this.cache=new e.SnapshotCache(10)},r.prototype.visit=function(t,r){var n,o;return null==r&&(r={}),t=e.Location.wrap(t),this.applicationAllowsVisitingLocation(t)?this.locationIsVisitable(t)?(n=null!=(o=r.action)?o:"advance",this.adapter.visitProposedToLocationWithAction(t,n)):window.location=t:void 0},r.prototype.startVisitToLocationWithAction=function(t,r,n){var o;return e.supported?(o=this.getRestorationDataForIdentifier(n),this.startVisit(t,r,{restorationData:o})):window.location=t},r.prototype.setProgressBarDelay=function(t){return this.progressBarDelay=t},r.prototype.startHistory=function(){return this.location=e.Location.wrap(window.location),this.restorationIdentifier=e.uuid(),this.history.start(),this.history.replace(this.location,this.restorationIdentifier)},r.prototype.stopHistory=function(){return this.history.stop()},r.prototype.pushHistoryWithLocationAndRestorationIdentifier=function(t,r){return this.restorationIdentifier=r,this.location=e.Location.wrap(t),this.history.push(this.location,this.restorationIdentifier)},r.prototype.replaceHistoryWithLocationAndRestorationIdentifier=function(t,r){return this.restorationIdentifier=r,this.location=e.Location.wrap(t),this.history.replace(this.location,this.restorationIdentifier)},r.prototype.historyPoppedToLocationWithRestorationIdentifier=function(t,r){var n;return this.restorationIdentifier=r,this.enabled?(n=this.getRestorationDataForIdentifier(this.restorationIdentifier),this.startVisit(t,"restore",{restorationIdentifier:this.restorationIdentifier,restorationData:n,historyChanged:!0}),this.location=e.Location.wrap(t)):this.adapter.pageInvalidated()},r.prototype.getCachedSnapshotForLocation=function(t){var e;return null!=(e=this.cache.get(t))?e.clone():void 0},r.prototype.shouldCacheSnapshot=function(){return this.view.getSnapshot().isCacheable();
+},r.prototype.cacheSnapshot=function(){var t,r;return this.shouldCacheSnapshot()?(this.notifyApplicationBeforeCachingSnapshot(),r=this.view.getSnapshot(),t=this.lastRenderedLocation,e.defer(function(e){return function(){return e.cache.put(t,r.clone())}}(this))):void 0},r.prototype.scrollToAnchor=function(t){var e;return(e=this.view.getElementForAnchor(t))?this.scrollToElement(e):this.scrollToPosition({x:0,y:0})},r.prototype.scrollToElement=function(t){return this.scrollManager.scrollToElement(t)},r.prototype.scrollToPosition=function(t){return this.scrollManager.scrollToPosition(t)},r.prototype.scrollPositionChanged=function(t){var e;return e=this.getCurrentRestorationData(),e.scrollPosition=t},r.prototype.render=function(t,e){return this.view.render(t,e)},r.prototype.viewInvalidated=function(){return this.adapter.pageInvalidated()},r.prototype.viewWillRender=function(t){return this.notifyApplicationBeforeRender(t)},r.prototype.viewRendered=function(){return this.lastRenderedLocation=this.currentVisit.location,this.notifyApplicationAfterRender()},r.prototype.pageLoaded=function(){return this.lastRenderedLocation=this.location,this.notifyApplicationAfterPageLoad()},r.prototype.clickCaptured=function(){return removeEventListener("click",this.clickBubbled,!1),addEventListener("click",this.clickBubbled,!1)},r.prototype.clickBubbled=function(t){var e,r,n;return this.enabled&&this.clickEventIsSignificant(t)&&(r=this.getVisitableLinkForNode(t.target))&&(n=this.getVisitableLocationForLink(r))&&this.applicationAllowsFollowingLinkToLocation(r,n)?(t.preventDefault(),e=this.getActionForLink(r),this.visit(n,{action:e})):void 0},r.prototype.applicationAllowsFollowingLinkToLocation=function(t,e){var r;return r=this.notifyApplicationAfterClickingLinkToLocation(t,e),!r.defaultPrevented},r.prototype.applicationAllowsVisitingLocation=function(t){var e;return e=this.notifyApplicationBeforeVisitingLocation(t),!e.defaultPrevented},r.prototype.notifyApplicationAfterClickingLinkToLocation=function(t,r){return e.dispatch("turbolinks:click",{target:t,data:{url:r.absoluteURL},cancelable:!0})},r.prototype.notifyApplicationBeforeVisitingLocation=function(t){return e.dispatch("turbolinks:before-visit",{data:{url:t.absoluteURL},cancelable:!0})},r.prototype.notifyApplicationAfterVisitingLocation=function(t){return e.dispatch("turbolinks:visit",{data:{url:t.absoluteURL}})},r.prototype.notifyApplicationBeforeCachingSnapshot=function(){return e.dispatch("turbolinks:before-cache")},r.prototype.notifyApplicationBeforeRender=function(t){return e.dispatch("turbolinks:before-render",{data:{newBody:t}})},r.prototype.notifyApplicationAfterRender=function(){return e.dispatch("turbolinks:render")},r.prototype.notifyApplicationAfterPageLoad=function(t){return null==t&&(t={}),e.dispatch("turbolinks:load",{data:{url:this.location.absoluteURL,timing:t}})},r.prototype.startVisit=function(t,e,r){var n;return null!=(n=this.currentVisit)&&n.cancel(),this.currentVisit=this.createVisit(t,e,r),this.currentVisit.start(),this.notifyApplicationAfterVisitingLocation(t)},r.prototype.createVisit=function(t,r,n){var o,i,s,a,u;return i=null!=n?n:{},a=i.restorationIdentifier,s=i.restorationData,o=i.historyChanged,u=new e.Visit(this,t,r),u.restorationIdentifier=null!=a?a:e.uuid(),u.restorationData=e.copyObject(s),u.historyChanged=o,u.referrer=this.location,u},r.prototype.visitCompleted=function(t){return this.notifyApplicationAfterPageLoad(t.getTimingMetrics())},r.prototype.clickEventIsSignificant=function(t){return!(t.defaultPrevented||t.target.isContentEditable||t.which>1||t.altKey||t.ctrlKey||t.metaKey||t.shiftKey)},r.prototype.getVisitableLinkForNode=function(t){return this.nodeIsVisitable(t)?e.closest(t,"a[href]:not([target]):not([download])"):void 0},r.prototype.getVisitableLocationForLink=function(t){var r;return r=new e.Location(t.getAttribute("href")),this.locationIsVisitable(r)?r:void 0},r.prototype.getActionForLink=function(t){var e;return null!=(e=t.getAttribute("data-turbolinks-action"))?e:"advance"},r.prototype.nodeIsVisitable=function(t){var r;return(r=e.closest(t,"[data-turbolinks]"))?"false"!==r.getAttribute("data-turbolinks"):!0},r.prototype.locationIsVisitable=function(t){return t.isPrefixedBy(this.view.getRootLocation())&&t.isHTML()},r.prototype.getCurrentRestorationData=function(){return this.getRestorationDataForIdentifier(this.restorationIdentifier)},r.prototype.getRestorationDataForIdentifier=function(t){var e;return null!=(e=this.restorationData)[t]?e[t]:e[t]={}},r}()}.call(this),function(){!function(){var t,e;if((t=e=document.currentScript)&&!e.hasAttribute("data-turbolinks-suppress-warning"))for(;t=t.parentNode;)if(t===document.body)return console.warn("You are loading Turbolinks from a <script> element inside the <body> element. This is probably not what you meant to do!\n\nLoad your application\u2019s JavaScript bundle inside the <head> element instead. <script> elements in <body> are evaluated with each page change.\n\nFor more information, see: https://github.com/turbolinks/turbolinks#working-with-script-elements\n\n\u2014\u2014\nSuppress this warning by adding a `data-turbolinks-suppress-warning` attribute to: %s",e.outerHTML)}()}.call(this),function(){var t,r,n;e.start=function(){return r()?(null==e.controller&&(e.controller=t()),e.controller.start()):void 0},r=function(){return null==window.Turbolinks&&(window.Turbolinks=e),n()},t=function(){var t;return t=new e.Controller,t.adapter=new e.BrowserAdapter(t),t},n=function(){return window.Turbolinks===e},n()&&e.start()}.call(this)}).call(this),"object"==typeof module&&module.exports?module.exports=e:"function"==typeof define&&define.amd&&define(e)}).call(this);
+window.TinyMCERails = {
+  configuration: {
+    default: {}
+  },
+
+  initialize: function(config, options) {
+    if (typeof tinyMCE != 'undefined') {
+      // Merge the custom options with the given configuration
+      var configuration = TinyMCERails.configuration[config || 'default'];
+      configuration = TinyMCERails._merge(configuration, options);
+
+      tinyMCE.init(configuration);
+    } else {
+      // Wait until TinyMCE is loaded
+      setTimeout(function() {
+        TinyMCERails.initialize(config, options);
+      }, 50);
+    }
+  },
+
+  setupTurbolinks: function() {
+    // Remove all TinyMCE instances before rendering
+    document.addEventListener('turbolinks:before-render', function() {
+      tinymce.remove();
+    });
+  },
+
+  _merge: function() {
+    var result = {};
+
+    for (var i = 0; i < arguments.length; ++i) {
+      var source = arguments[i];
+
+      for (var key in source) {
+        if (Object.prototype.hasOwnProperty.call(source, key)) {
+          if (Object.prototype.toString.call(source[key]) === '[object Object]') {
+            result[key] = TinyMCERails._merge(result[key], source[key]);
+          } else {
+            result[key] = source[key];
+          }
+        }
+      }
+    }
+
+    return result;
+  }
+};
+
+if (typeof Turbolinks != 'undefined' && Turbolinks.supported) {
+  TinyMCERails.setupTurbolinks();
+}
+;
+window.tinymce = window.tinymce || {
+  base:   '/assets/tinymce',
+  suffix: ''
+};
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ *
+ * Version: 5.0.5 (2019-05-09)
+ */
+
+(function () {
+(function (domGlobals) {
+    'use strict';
+
+    var noop = function () {
+      var args = [];
+      for (var _i = 0; _i < arguments.length; _i++) {
+        args[_i] = arguments[_i];
+      }
+    };
+    var noarg = function (f) {
+      return function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          args[_i] = arguments[_i];
+        }
+        return f();
+      };
+    };
+    var compose = function (fa, fb) {
+      return function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          args[_i] = arguments[_i];
+        }
+        return fa(fb.apply(null, args));
+      };
+    };
+    var constant = function (value) {
+      return function () {
+        return value;
+      };
+    };
+    var identity = function (x) {
+      return x;
+    };
+    var tripleEquals = function (a, b) {
+      return a === b;
+    };
+    function curry(fn) {
+      var initialArgs = [];
+      for (var _i = 1; _i < arguments.length; _i++) {
+        initialArgs[_i - 1] = arguments[_i];
+      }
+      return function () {
+        var restArgs = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          restArgs[_i] = arguments[_i];
+        }
+        var all = initialArgs.concat(restArgs);
+        return fn.apply(null, all);
+      };
+    }
+    var not = function (f) {
+      return function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          args[_i] = arguments[_i];
+        }
+        return !f.apply(null, args);
+      };
+    };
+    var die = function (msg) {
+      return function () {
+        throw new Error(msg);
+      };
+    };
+    var apply = function (f) {
+      return f();
+    };
+    var call = function (f) {
+      f();
+    };
+    var never = constant(false);
+    var always = constant(true);
+
+    var Fun = /*#__PURE__*/Object.freeze({
+        noop: noop,
+        noarg: noarg,
+        compose: compose,
+        constant: constant,
+        identity: identity,
+        tripleEquals: tripleEquals,
+        curry: curry,
+        not: not,
+        die: die,
+        apply: apply,
+        call: call,
+        never: never,
+        always: always
+    });
+
+    var never$1 = never;
+    var always$1 = always;
+    var none = function () {
+      return NONE;
+    };
+    var NONE = function () {
+      var eq = function (o) {
+        return o.isNone();
+      };
+      var call = function (thunk) {
+        return thunk();
+      };
+      var id = function (n) {
+        return n;
+      };
+      var noop = function () {
+      };
+      var nul = function () {
+        return null;
+      };
+      var undef = function () {
+        return undefined;
+      };
+      var me = {
+        fold: function (n, s) {
+          return n();
+        },
+        is: never$1,
+        isSome: never$1,
+        isNone: always$1,
+        getOr: id,
+        getOrThunk: call,
+        getOrDie: function (msg) {
+          throw new Error(msg || 'error: getOrDie called on none.');
+        },
+        getOrNull: nul,
+        getOrUndefined: undef,
+        or: id,
+        orThunk: call,
+        map: none,
+        ap: none,
+        each: noop,
+        bind: none,
+        flatten: none,
+        exists: never$1,
+        forall: always$1,
+        filter: none,
+        equals: eq,
+        equals_: eq,
+        toArray: function () {
+          return [];
+        },
+        toString: constant('none()')
+      };
+      if (Object.freeze)
+        Object.freeze(me);
+      return me;
+    }();
+    var some = function (a) {
+      var constant_a = function () {
+        return a;
+      };
+      var self = function () {
+        return me;
+      };
+      var map = function (f) {
+        return some(f(a));
+      };
+      var bind = function (f) {
+        return f(a);
+      };
+      var me = {
+        fold: function (n, s) {
+          return s(a);
+        },
+        is: function (v) {
+          return a === v;
+        },
+        isSome: always$1,
+        isNone: never$1,
+        getOr: constant_a,
+        getOrThunk: constant_a,
+        getOrDie: constant_a,
+        getOrNull: constant_a,
+        getOrUndefined: constant_a,
+        or: self,
+        orThunk: self,
+        map: map,
+        ap: function (optfab) {
+          return optfab.fold(none, function (fab) {
+            return some(fab(a));
+          });
+        },
+        each: function (f) {
+          f(a);
+        },
+        bind: bind,
+        flatten: constant_a,
+        exists: bind,
+        forall: bind,
+        filter: function (f) {
+          return f(a) ? me : NONE;
+        },
+        equals: function (o) {
+          return o.is(a);
+        },
+        equals_: function (o, elementEq) {
+          return o.fold(never$1, function (b) {
+            return elementEq(a, b);
+          });
+        },
+        toArray: function () {
+          return [a];
+        },
+        toString: function () {
+          return 'some(' + a + ')';
+        }
+      };
+      return me;
+    };
+    var from = function (value) {
+      return value === null || value === undefined ? NONE : some(value);
+    };
+    var Option = {
+      some: some,
+      none: none,
+      from: from
+    };
+
+    var typeOf = function (x) {
+      if (x === null)
+        return 'null';
+      var t = typeof x;
+      if (t === 'object' && Array.prototype.isPrototypeOf(x))
+        return 'array';
+      if (t === 'object' && String.prototype.isPrototypeOf(x))
+        return 'string';
+      return t;
+    };
+    var isType = function (type) {
+      return function (value) {
+        return typeOf(value) === type;
+      };
+    };
+    var isString = isType('string');
+    var isObject = isType('object');
+    var isArray = isType('array');
+    var isNull = isType('null');
+    var isBoolean = isType('boolean');
+    var isFunction = isType('function');
+    var isNumber = isType('number');
+
+    var rawIndexOf = function () {
+      var pIndexOf = Array.prototype.indexOf;
+      var fastIndex = function (xs, x) {
+        return pIndexOf.call(xs, x);
+      };
+      var slowIndex = function (xs, x) {
+        return slowIndexOf(xs, x);
+      };
+      return pIndexOf === undefined ? slowIndex : fastIndex;
+    }();
+    var indexOf = function (xs, x) {
+      var r = rawIndexOf(xs, x);
+      return r === -1 ? Option.none() : Option.some(r);
+    };
+    var contains = function (xs, x) {
+      return rawIndexOf(xs, x) > -1;
+    };
+    var exists = function (xs, pred) {
+      return findIndex(xs, pred).isSome();
+    };
+    var range = function (num, f) {
+      var r = [];
+      for (var i = 0; i < num; i++) {
+        r.push(f(i));
+      }
+      return r;
+    };
+    var chunk = function (array, size) {
+      var r = [];
+      for (var i = 0; i < array.length; i += size) {
+        var s = array.slice(i, i + size);
+        r.push(s);
+      }
+      return r;
+    };
+    var map = function (xs, f) {
+      var len = xs.length;
+      var r = new Array(len);
+      for (var i = 0; i < len; i++) {
+        var x = xs[i];
+        r[i] = f(x, i, xs);
+      }
+      return r;
+    };
+    var each = function (xs, f) {
+      for (var i = 0, len = xs.length; i < len; i++) {
+        var x = xs[i];
+        f(x, i, xs);
+      }
+    };
+    var eachr = function (xs, f) {
+      for (var i = xs.length - 1; i >= 0; i--) {
+        var x = xs[i];
+        f(x, i, xs);
+      }
+    };
+    var partition = function (xs, pred) {
+      var pass = [];
+      var fail = [];
+      for (var i = 0, len = xs.length; i < len; i++) {
+        var x = xs[i];
+        var arr = pred(x, i, xs) ? pass : fail;
+        arr.push(x);
+      }
+      return {
+        pass: pass,
+        fail: fail
+      };
+    };
+    var filter = function (xs, pred) {
+      var r = [];
+      for (var i = 0, len = xs.length; i < len; i++) {
+        var x = xs[i];
+        if (pred(x, i, xs)) {
+          r.push(x);
+        }
+      }
+      return r;
+    };
+    var groupBy = function (xs, f) {
+      if (xs.length === 0) {
+        return [];
+      } else {
+        var wasType = f(xs[0]);
+        var r = [];
+        var group = [];
+        for (var i = 0, len = xs.length; i < len; i++) {
+          var x = xs[i];
+          var type = f(x);
+          if (type !== wasType) {
+            r.push(group);
+            group = [];
+          }
+          wasType = type;
+          group.push(x);
+        }
+        if (group.length !== 0) {
+          r.push(group);
+        }
+        return r;
+      }
+    };
+    var foldr = function (xs, f, acc) {
+      eachr(xs, function (x) {
+        acc = f(acc, x);
+      });
+      return acc;
+    };
+    var foldl = function (xs, f, acc) {
+      each(xs, function (x) {
+        acc = f(acc, x);
+      });
+      return acc;
+    };
+    var find = function (xs, pred) {
+      for (var i = 0, len = xs.length; i < len; i++) {
+        var x = xs[i];
+        if (pred(x, i, xs)) {
+          return Option.some(x);
+        }
+      }
+      return Option.none();
+    };
+    var findIndex = function (xs, pred) {
+      for (var i = 0, len = xs.length; i < len; i++) {
+        var x = xs[i];
+        if (pred(x, i, xs)) {
+          return Option.some(i);
+        }
+      }
+      return Option.none();
+    };
+    var slowIndexOf = function (xs, x) {
+      for (var i = 0, len = xs.length; i < len; ++i) {
+        if (xs[i] === x) {
+          return i;
+        }
+      }
+      return -1;
+    };
+    var push = Array.prototype.push;
+    var flatten = function (xs) {
+      var r = [];
+      for (var i = 0, len = xs.length; i < len; ++i) {
+        if (!Array.prototype.isPrototypeOf(xs[i]))
+          throw new Error('Arr.flatten item ' + i + ' was not an array, input: ' + xs);
+        push.apply(r, xs[i]);
+      }
+      return r;
+    };
+    var bind = function (xs, f) {
+      var output = map(xs, f);
+      return flatten(output);
+    };
+    var forall = function (xs, pred) {
+      for (var i = 0, len = xs.length; i < len; ++i) {
+        var x = xs[i];
+        if (pred(x, i, xs) !== true) {
+          return false;
+        }
+      }
+      return true;
+    };
+    var equal = function (a1, a2) {
+      return a1.length === a2.length && forall(a1, function (x, i) {
+        return x === a2[i];
+      });
+    };
+    var slice = Array.prototype.slice;
+    var reverse = function (xs) {
+      var r = slice.call(xs, 0);
+      r.reverse();
+      return r;
+    };
+    var difference = function (a1, a2) {
+      return filter(a1, function (x) {
+        return !contains(a2, x);
+      });
+    };
+    var mapToObject = function (xs, f) {
+      var r = {};
+      for (var i = 0, len = xs.length; i < len; i++) {
+        var x = xs[i];
+        r[String(x)] = f(x, i);
+      }
+      return r;
+    };
+    var pure = function (x) {
+      return [x];
+    };
+    var sort = function (xs, comparator) {
+      var copy = slice.call(xs, 0);
+      copy.sort(comparator);
+      return copy;
+    };
+    var head = function (xs) {
+      return xs.length === 0 ? Option.none() : Option.some(xs[0]);
+    };
+    var last = function (xs) {
+      return xs.length === 0 ? Option.none() : Option.some(xs[xs.length - 1]);
+    };
+    var from$1 = isFunction(Array.from) ? Array.from : function (x) {
+      return slice.call(x);
+    };
+
+    var Arr = /*#__PURE__*/Object.freeze({
+        indexOf: indexOf,
+        contains: contains,
+        exists: exists,
+        range: range,
+        chunk: chunk,
+        map: map,
+        each: each,
+        eachr: eachr,
+        partition: partition,
+        filter: filter,
+        groupBy: groupBy,
+        foldr: foldr,
+        foldl: foldl,
+        find: find,
+        findIndex: findIndex,
+        flatten: flatten,
+        bind: bind,
+        forall: forall,
+        equal: equal,
+        reverse: reverse,
+        difference: difference,
+        mapToObject: mapToObject,
+        pure: pure,
+        sort: sort,
+        head: head,
+        last: last,
+        from: from$1
+    });
+
+    var Global = typeof domGlobals.window !== 'undefined' ? domGlobals.window : Function('return this;')();
+
+    var path = function (parts, scope) {
+      var o = scope !== undefined && scope !== null ? scope : Global;
+      for (var i = 0; i < parts.length && o !== undefined && o !== null; ++i)
+        o = o[parts[i]];
+      return o;
+    };
+    var resolve = function (p, scope) {
+      var parts = p.split('.');
+      return path(parts, scope);
+    };
+
+    var unsafe = function (name, scope) {
+      return resolve(name, scope);
+    };
+    var getOrDie = function (name, scope) {
+      var actual = unsafe(name, scope);
+      if (actual === undefined || actual === null)
+        throw name + ' not available on this browser';
+      return actual;
+    };
+    var Global$1 = { getOrDie: getOrDie };
+
+    var url = function () {
+      return Global$1.getOrDie('URL');
+    };
+    var createObjectURL = function (blob) {
+      return url().createObjectURL(blob);
+    };
+    var revokeObjectURL = function (u) {
+      url().revokeObjectURL(u);
+    };
+    var URL = {
+      createObjectURL: createObjectURL,
+      revokeObjectURL: revokeObjectURL
+    };
+
+    var nav = domGlobals.navigator, userAgent = nav.userAgent;
+    var opera, webkit, ie, ie11, ie12, gecko, mac, iDevice, android, fileApi, phone, tablet, windowsPhone;
+    var matchMediaQuery = function (query) {
+      return 'matchMedia' in domGlobals.window ? domGlobals.matchMedia(query).matches : false;
+    };
+    opera = false;
+    android = /Android/.test(userAgent);
+    webkit = /WebKit/.test(userAgent);
+    ie = !webkit && !opera && /MSIE/gi.test(userAgent) && /Explorer/gi.test(nav.appName);
+    ie = ie && /MSIE (\w+)\./.exec(userAgent)[1];
+    ie11 = userAgent.indexOf('Trident/') !== -1 && (userAgent.indexOf('rv:') !== -1 || nav.appName.indexOf('Netscape') !== -1) ? 11 : false;
+    ie12 = userAgent.indexOf('Edge/') !== -1 && !ie && !ie11 ? 12 : false;
+    ie = ie || ie11 || ie12;
+    gecko = !webkit && !ie11 && /Gecko/.test(userAgent);
+    mac = userAgent.indexOf('Mac') !== -1;
+    iDevice = /(iPad|iPhone)/.test(userAgent);
+    fileApi = 'FormData' in domGlobals.window && 'FileReader' in domGlobals.window && 'URL' in domGlobals.window && !!URL.createObjectURL;
+    phone = matchMediaQuery('only screen and (max-device-width: 480px)') && (android || iDevice);
+    tablet = matchMediaQuery('only screen and (min-width: 800px)') && (android || iDevice);
+    windowsPhone = userAgent.indexOf('Windows Phone') !== -1;
+    if (ie12) {
+      webkit = false;
+    }
+    var contentEditable = !iDevice || fileApi || parseInt(userAgent.match(/AppleWebKit\/(\d*)/)[1], 10) >= 534;
+    var Env = {
+      opera: opera,
+      webkit: webkit,
+      ie: ie,
+      gecko: gecko,
+      mac: mac,
+      iOS: iDevice,
+      android: android,
+      contentEditable: contentEditable,
+      transparentSrc: 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7',
+      caretAfter: ie !== 8,
+      range: domGlobals.window.getSelection && 'Range' in domGlobals.window,
+      documentMode: ie && !ie12 ? domGlobals.document.documentMode || 7 : 10,
+      fileApi: fileApi,
+      ceFalse: ie === false || ie > 8,
+      cacheSuffix: null,
+      container: null,
+      overrideViewPort: null,
+      experimentalShadowDom: false,
+      canHaveCSP: ie === false || ie > 11,
+      desktop: !phone && !tablet,
+      windowsPhone: windowsPhone
+    };
+
+    var promise = function () {
+      function bind(fn, thisArg) {
+        return function () {
+          fn.apply(thisArg, arguments);
+        };
+      }
+      var isArray = Array.isArray || function (value) {
+        return Object.prototype.toString.call(value) === '[object Array]';
+      };
+      var Promise = function (fn) {
+        if (typeof this !== 'object') {
+          throw new TypeError('Promises must be constructed via new');
+        }
+        if (typeof fn !== 'function') {
+          throw new TypeError('not a function');
+        }
+        this._state = null;
+        this._value = null;
+        this._deferreds = [];
+        doResolve(fn, bind(resolve, this), bind(reject, this));
+      };
+      var asap = Promise.immediateFn || typeof domGlobals.setImmediate === 'function' && domGlobals.setImmediate || function (fn) {
+        domGlobals.setTimeout(fn, 1);
+      };
+      function handle(deferred) {
+        var me = this;
+        if (this._state === null) {
+          this._deferreds.push(deferred);
+          return;
+        }
+        asap(function () {
+          var cb = me._state ? deferred.onFulfilled : deferred.onRejected;
+          if (cb === null) {
+            (me._state ? deferred.resolve : deferred.reject)(me._value);
+            return;
+          }
+          var ret;
+          try {
+            ret = cb(me._value);
+          } catch (e) {
+            deferred.reject(e);
+            return;
+          }
+          deferred.resolve(ret);
+        });
+      }
+      function resolve(newValue) {
+        try {
+          if (newValue === this) {
+            throw new TypeError('A promise cannot be resolved with itself.');
+          }
+          if (newValue && (typeof newValue === 'object' || typeof newValue === 'function')) {
+            var then = newValue.then;
+            if (typeof then === 'function') {
+              doResolve(bind(then, newValue), bind(resolve, this), bind(reject, this));
+              return;
+            }
+          }
+          this._state = true;
+          this._value = newValue;
+          finale.call(this);
+        } catch (e) {
+          reject.call(this, e);
+        }
+      }
+      function reject(newValue) {
+        this._state = false;
+        this._value = newValue;
+        finale.call(this);
+      }
+      function finale() {
+        for (var i = 0, len = this._deferreds.length; i < len; i++) {
+          handle.call(this, this._deferreds[i]);
+        }
+        this._deferreds = null;
+      }
+      function Handler(onFulfilled, onRejected, resolve, reject) {
+        this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;
+        this.onRejected = typeof onRejected === 'function' ? onRejected : null;
+        this.resolve = resolve;
+        this.reject = reject;
+      }
+      function doResolve(fn, onFulfilled, onRejected) {
+        var done = false;
+        try {
+          fn(function (value) {
+            if (done) {
+              return;
+            }
+            done = true;
+            onFulfilled(value);
+          }, function (reason) {
+            if (done) {
+              return;
+            }
+            done = true;
+            onRejected(reason);
+          });
+        } catch (ex) {
+          if (done) {
+            return;
+          }
+          done = true;
+          onRejected(ex);
+        }
+      }
+      Promise.prototype.catch = function (onRejected) {
+        return this.then(null, onRejected);
+      };
+      Promise.prototype.then = function (onFulfilled, onRejected) {
+        var me = this;
+        return new Promise(function (resolve, reject) {
+          handle.call(me, new Handler(onFulfilled, onRejected, resolve, reject));
+        });
+      };
+      Promise.all = function () {
+        var args = Array.prototype.slice.call(arguments.length === 1 && isArray(arguments[0]) ? arguments[0] : arguments);
+        return new Promise(function (resolve, reject) {
+          if (args.length === 0) {
+            return resolve([]);
+          }
+          var remaining = args.length;
+          function res(i, val) {
+            try {
+              if (val && (typeof val === 'object' || typeof val === 'function')) {
+                var then = val.then;
+                if (typeof then === 'function') {
+                  then.call(val, function (val) {
+                    res(i, val);
+                  }, reject);
+                  return;
+                }
+              }
+              args[i] = val;
+              if (--remaining === 0) {
+                resolve(args);
+              }
+            } catch (ex) {
+              reject(ex);
+            }
+          }
+          for (var i = 0; i < args.length; i++) {
+            res(i, args[i]);
+          }
+        });
+      };
+      Promise.resolve = function (value) {
+        if (value && typeof value === 'object' && value.constructor === Promise) {
+          return value;
+        }
+        return new Promise(function (resolve) {
+          resolve(value);
+        });
+      };
+      Promise.reject = function (value) {
+        return new Promise(function (resolve, reject) {
+          reject(value);
+        });
+      };
+      Promise.race = function (values) {
+        return new Promise(function (resolve, reject) {
+          for (var i = 0, len = values.length; i < len; i++) {
+            values[i].then(resolve, reject);
+          }
+        });
+      };
+      return Promise;
+    };
+    var promiseObj = window.Promise ? window.Promise : promise();
+
+    var requestAnimationFramePromise;
+    var requestAnimationFrame = function (callback, element) {
+      var i, requestAnimationFrameFunc = domGlobals.window.requestAnimationFrame;
+      var vendors = [
+        'ms',
+        'moz',
+        'webkit'
+      ];
+      var featurefill = function (callback) {
+        domGlobals.window.setTimeout(callback, 0);
+      };
+      for (i = 0; i < vendors.length && !requestAnimationFrameFunc; i++) {
+        requestAnimationFrameFunc = domGlobals.window[vendors[i] + 'RequestAnimationFrame'];
+      }
+      if (!requestAnimationFrameFunc) {
+        requestAnimationFrameFunc = featurefill;
+      }
+      requestAnimationFrameFunc(callback, element);
+    };
+    var wrappedSetTimeout = function (callback, time) {
+      if (typeof time !== 'number') {
+        time = 0;
+      }
+      return domGlobals.setTimeout(callback, time);
+    };
+    var wrappedSetInterval = function (callback, time) {
+      if (typeof time !== 'number') {
+        time = 1;
+      }
+      return domGlobals.setInterval(callback, time);
+    };
+    var wrappedClearTimeout = function (id) {
+      return domGlobals.clearTimeout(id);
+    };
+    var wrappedClearInterval = function (id) {
+      return domGlobals.clearInterval(id);
+    };
+    var debounce = function (callback, time) {
+      var timer, func;
+      func = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          args[_i] = arguments[_i];
+        }
+        domGlobals.clearTimeout(timer);
+        timer = wrappedSetTimeout(function () {
+          callback.apply(this, args);
+        }, time);
+      };
+      func.stop = function () {
+        domGlobals.clearTimeout(timer);
+      };
+      return func;
+    };
+    var Delay = {
+      requestAnimationFrame: function (callback, element) {
+        if (requestAnimationFramePromise) {
+          requestAnimationFramePromise.then(callback);
+          return;
+        }
+        requestAnimationFramePromise = new promiseObj(function (resolve) {
+          if (!element) {
+            element = domGlobals.document.body;
+          }
+          requestAnimationFrame(resolve, element);
+        }).then(callback);
+      },
+      setTimeout: wrappedSetTimeout,
+      setInterval: wrappedSetInterval,
+      setEditorTimeout: function (editor, callback, time) {
+        return wrappedSetTimeout(function () {
+          if (!editor.removed) {
+            callback();
+          }
+        }, time);
+      },
+      setEditorInterval: function (editor, callback, time) {
+        var timer;
+        timer = wrappedSetInterval(function () {
+          if (!editor.removed) {
+            callback();
+          } else {
+            domGlobals.clearInterval(timer);
+          }
+        }, time);
+        return timer;
+      },
+      debounce: debounce,
+      throttle: debounce,
+      clearInterval: wrappedClearInterval,
+      clearTimeout: wrappedClearTimeout
+    };
+
+    var eventExpandoPrefix = 'mce-data-';
+    var mouseEventRe = /^(?:mouse|contextmenu)|click/;
+    var deprecated = {
+      keyLocation: 1,
+      layerX: 1,
+      layerY: 1,
+      returnValue: 1,
+      webkitMovementX: 1,
+      webkitMovementY: 1,
+      keyIdentifier: 1
+    };
+    var hasIsDefaultPrevented = function (event) {
+      return event.isDefaultPrevented === returnTrue || event.isDefaultPrevented === returnFalse;
+    };
+    var returnFalse = function () {
+      return false;
+    };
+    var returnTrue = function () {
+      return true;
+    };
+    var addEvent = function (target, name, callback, capture) {
+      if (target.addEventListener) {
+        target.addEventListener(name, callback, capture || false);
+      } else if (target.attachEvent) {
+        target.attachEvent('on' + name, callback);
+      }
+    };
+    var removeEvent = function (target, name, callback, capture) {
+      if (target.removeEventListener) {
+        target.removeEventListener(name, callback, capture || false);
+      } else if (target.detachEvent) {
+        target.detachEvent('on' + name, callback);
+      }
+    };
+    var getTargetFromShadowDom = function (event, defaultTarget) {
+      if (event.composedPath) {
+        var composedPath = event.composedPath();
+        if (composedPath && composedPath.length > 0) {
+          return composedPath[0];
+        }
+      }
+      return defaultTarget;
+    };
+    var fix = function (originalEvent, data) {
+      var name;
+      var event = data || {};
+      for (name in originalEvent) {
+        if (!deprecated[name]) {
+          event[name] = originalEvent[name];
+        }
+      }
+      if (!event.target) {
+        event.target = event.srcElement || domGlobals.document;
+      }
+      if (Env.experimentalShadowDom) {
+        event.target = getTargetFromShadowDom(originalEvent, event.target);
+      }
+      if (originalEvent && mouseEventRe.test(originalEvent.type) && originalEvent.pageX === undefined && originalEvent.clientX !== undefined) {
+        var eventDoc = event.target.ownerDocument || domGlobals.document;
+        var doc = eventDoc.documentElement;
+        var body = eventDoc.body;
+        event.pageX = originalEvent.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
+        event.pageY = originalEvent.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
+      }
+      event.preventDefault = function () {
+        event.isDefaultPrevented = returnTrue;
+        if (originalEvent) {
+          if (originalEvent.preventDefault) {
+            originalEvent.preventDefault();
+          } else {
+            originalEvent.returnValue = false;
+          }
+        }
+      };
+      event.stopPropagation = function () {
+        event.isPropagationStopped = returnTrue;
+        if (originalEvent) {
+          if (originalEvent.stopPropagation) {
+            originalEvent.stopPropagation();
+          } else {
+            originalEvent.cancelBubble = true;
+          }
+        }
+      };
+      event.stopImmediatePropagation = function () {
+        event.isImmediatePropagationStopped = returnTrue;
+        event.stopPropagation();
+      };
+      if (hasIsDefaultPrevented(event) === false) {
+        event.isDefaultPrevented = returnFalse;
+        event.isPropagationStopped = returnFalse;
+        event.isImmediatePropagationStopped = returnFalse;
+      }
+      if (typeof event.metaKey === 'undefined') {
+        event.metaKey = false;
+      }
+      return event;
+    };
+    var bindOnReady = function (win, callback, eventUtils) {
+      var doc = win.document, event = { type: 'ready' };
+      if (eventUtils.domLoaded) {
+        callback(event);
+        return;
+      }
+      var isDocReady = function () {
+        return doc.readyState === 'complete' || doc.readyState === 'interactive' && doc.body;
+      };
+      var readyHandler = function () {
+        removeEvent(win, 'DOMContentLoaded', readyHandler);
+        removeEvent(win, 'load', readyHandler);
+        if (!eventUtils.domLoaded) {
+          eventUtils.domLoaded = true;
+          callback(event);
+        }
+      };
+      var waitForDomLoaded = function () {
+        if (isDocReady()) {
+          removeEvent(doc, 'readystatechange', waitForDomLoaded);
+          readyHandler();
+        }
+      };
+      var tryScroll = function () {
+        try {
+          doc.documentElement.doScroll('left');
+        } catch (ex) {
+          Delay.setTimeout(tryScroll);
+          return;
+        }
+        readyHandler();
+      };
+      if (doc.addEventListener && !(Env.ie && Env.ie < 11)) {
+        if (isDocReady()) {
+          readyHandler();
+        } else {
+          addEvent(win, 'DOMContentLoaded', readyHandler);
+        }
+      } else {
+        addEvent(doc, 'readystatechange', waitForDomLoaded);
+        if (doc.documentElement.doScroll && win.self === win.top) {
+          tryScroll();
+        }
+      }
+      addEvent(win, 'load', readyHandler);
+    };
+    var EventUtils = function () {
+      function EventUtils() {
+        this.domLoaded = false;
+        this.events = {};
+        this.count = 1;
+        this.expando = eventExpandoPrefix + (+new Date()).toString(32);
+        this.hasMouseEnterLeave = 'onmouseenter' in domGlobals.document.documentElement;
+        this.hasFocusIn = 'onfocusin' in domGlobals.document.documentElement;
+        this.count = 1;
+      }
+      EventUtils.prototype.bind = function (target, names, callback, scope) {
+        var self = this;
+        var id, callbackList, i, name, fakeName, nativeHandler, capture;
+        var win = domGlobals.window;
+        var defaultNativeHandler = function (evt) {
+          self.executeHandlers(fix(evt || win.event), id);
+        };
+        if (!target || target.nodeType === 3 || target.nodeType === 8) {
+          return;
+        }
+        if (!target[self.expando]) {
+          id = self.count++;
+          target[self.expando] = id;
+          self.events[id] = {};
+        } else {
+          id = target[self.expando];
+        }
+        scope = scope || target;
+        var namesList = names.split(' ');
+        i = namesList.length;
+        while (i--) {
+          name = namesList[i];
+          nativeHandler = defaultNativeHandler;
+          fakeName = capture = false;
+          if (name === 'DOMContentLoaded') {
+            name = 'ready';
+          }
+          if (self.domLoaded && name === 'ready' && target.readyState === 'complete') {
+            callback.call(scope, fix({ type: name }));
+            continue;
+          }
+          if (!self.hasMouseEnterLeave) {
+            fakeName = self.mouseEnterLeave[name];
+            if (fakeName) {
+              nativeHandler = function (evt) {
+                var current, related;
+                current = evt.currentTarget;
+                related = evt.relatedTarget;
+                if (related && current.contains) {
+                  related = current.contains(related);
+                } else {
+                  while (related && related !== current) {
+                    related = related.parentNode;
+                  }
+                }
+                if (!related) {
+                  evt = fix(evt || win.event);
+                  evt.type = evt.type === 'mouseout' ? 'mouseleave' : 'mouseenter';
+                  evt.target = current;
+                  self.executeHandlers(evt, id);
+                }
+              };
+            }
+          }
+          if (!self.hasFocusIn && (name === 'focusin' || name === 'focusout')) {
+            capture = true;
+            fakeName = name === 'focusin' ? 'focus' : 'blur';
+            nativeHandler = function (evt) {
+              evt = fix(evt || win.event);
+              evt.type = evt.type === 'focus' ? 'focusin' : 'focusout';
+              self.executeHandlers(evt, id);
+            };
+          }
+          callbackList = self.events[id][name];
+          if (!callbackList) {
+            self.events[id][name] = callbackList = [{
+                func: callback,
+                scope: scope
+              }];
+            callbackList.fakeName = fakeName;
+            callbackList.capture = capture;
+            callbackList.nativeHandler = nativeHandler;
+            if (name === 'ready') {
+              bindOnReady(target, nativeHandler, self);
+            } else {
+              addEvent(target, fakeName || name, nativeHandler, capture);
+            }
+          } else {
+            if (name === 'ready' && self.domLoaded) {
+              callback(fix({ type: name }));
+            } else {
+              callbackList.push({
+                func: callback,
+                scope: scope
+              });
+            }
+          }
+        }
+        target = callbackList = 0;
+        return callback;
+      };
+      EventUtils.prototype.unbind = function (target, names, callback) {
+        var id, callbackList, i, ci, name, eventMap;
+        if (!target || target.nodeType === 3 || target.nodeType === 8) {
+          return this;
+        }
+        id = target[this.expando];
+        if (id) {
+          eventMap = this.events[id];
+          if (names) {
+            var namesList = names.split(' ');
+            i = namesList.length;
+            while (i--) {
+              name = namesList[i];
+              callbackList = eventMap[name];
+              if (callbackList) {
+                if (callback) {
+                  ci = callbackList.length;
+                  while (ci--) {
+                    if (callbackList[ci].func === callback) {
+                      var nativeHandler = callbackList.nativeHandler;
+                      var fakeName = callbackList.fakeName, capture = callbackList.capture;
+                      callbackList = callbackList.slice(0, ci).concat(callbackList.slice(ci + 1));
+                      callbackList.nativeHandler = nativeHandler;
+                      callbackList.fakeName = fakeName;
+                      callbackList.capture = capture;
+                      eventMap[name] = callbackList;
+                    }
+                  }
+                }
+                if (!callback || callbackList.length === 0) {
+                  delete eventMap[name];
+                  removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture);
+                }
+              }
+            }
+          } else {
+            for (name in eventMap) {
+              callbackList = eventMap[name];
+              removeEvent(target, callbackList.fakeName || name, callbackList.nativeHandler, callbackList.capture);
+            }
+            eventMap = {};
+          }
+          for (name in eventMap) {
+            return this;
+          }
+          delete this.events[id];
+          try {
+            delete target[this.expando];
+          } catch (ex) {
+            target[this.expando] = null;
+          }
+        }
+        return this;
+      };
+      EventUtils.prototype.fire = function (target, name, args) {
+        var id;
+        if (!target || target.nodeType === 3 || target.nodeType === 8) {
+          return this;
+        }
+        var event = fix(null, args);
+        event.type = name;
+        event.target = target;
+        do {
+          id = target[this.expando];
+          if (id) {
+            this.executeHandlers(event, id);
+          }
+          target = target.parentNode || target.ownerDocument || target.defaultView || target.parentWindow;
+        } while (target && !event.isPropagationStopped());
+        return this;
+      };
+      EventUtils.prototype.clean = function (target) {
+        var i, children;
+        if (!target || target.nodeType === 3 || target.nodeType === 8) {
+          return this;
+        }
+        if (target[this.expando]) {
+          this.unbind(target);
+        }
+        if (!target.getElementsByTagName) {
+          target = target.document;
+        }
+        if (target && target.getElementsByTagName) {
+          this.unbind(target);
+          children = target.getElementsByTagName('*');
+          i = children.length;
+          while (i--) {
+            target = children[i];
+            if (target[this.expando]) {
+              this.unbind(target);
+            }
+          }
+        }
+        return this;
+      };
+      EventUtils.prototype.destroy = function () {
+        this.events = {};
+      };
+      EventUtils.prototype.cancel = function (e) {
+        if (e) {
+          e.preventDefault();
+          e.stopImmediatePropagation();
+        }
+        return false;
+      };
+      EventUtils.prototype.executeHandlers = function (evt, id) {
+        var callbackList, i, l, callback;
+        var container = this.events[id];
+        callbackList = container && container[evt.type];
+        if (callbackList) {
+          for (i = 0, l = callbackList.length; i < l; i++) {
+            callback = callbackList[i];
+            if (callback && callback.func.call(callback.scope, evt) === false) {
+              evt.preventDefault();
+            }
+            if (evt.isImmediatePropagationStopped()) {
+              return;
+            }
+          }
+        }
+      };
+      EventUtils.Event = new EventUtils();
+      return EventUtils;
+    }();
+
+    var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, setDocument, document, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains$1, expando = 'sizzle' + -new Date(), preferredDoc = domGlobals.window.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), sortOrder = function (a, b) {
+        if (a === b) {
+          hasDuplicate = true;
+        }
+        return 0;
+      }, strundefined = typeof undefined, MAX_NEGATIVE = 1 << 31, hasOwn = {}.hasOwnProperty, arr = [], pop = arr.pop, push_native = arr.push, push$1 = arr.push, slice$1 = arr.slice, indexOf$1 = arr.indexOf || function (elem) {
+        var i = 0, len = this.length;
+        for (; i < len; i++) {
+          if (this[i] === elem) {
+            return i;
+          }
+        }
+        return -1;
+      }, booleans = 'checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped', whitespace = '[\\x20\\t\\r\\n\\f]', identifier = '(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+', attributes = '\\[' + whitespace + '*(' + identifier + ')(?:' + whitespace + '*([*^$|!~]?=)' + whitespace + '*(?:\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)"|(' + identifier + '))|)' + whitespace + '*\\]', pseudos = ':(' + identifier + ')(?:\\((' + '(\'((?:\\\\.|[^\\\\\'])*)\'|"((?:\\\\.|[^\\\\"])*)")|' + '((?:\\\\.|[^\\\\()[\\]]|' + attributes + ')*)|' + '.*' + ')\\)|)', rtrim = new RegExp('^' + whitespace + '+|((?:^|[^\\\\])(?:\\\\.)*)' + whitespace + '+$', 'g'), rcomma = new RegExp('^' + whitespace + '*,' + whitespace + '*'), rcombinators = new RegExp('^' + whitespace + '*([>+~]|' + whitespace + ')' + whitespace + '*'), rattributeQuotes = new RegExp('=' + whitespace + '*([^\\]\'"]*?)' + whitespace + '*\\]', 'g'), rpseudo = new RegExp(pseudos), ridentifier = new RegExp('^' + identifier + '$'), matchExpr = {
+        ID: new RegExp('^#(' + identifier + ')'),
+        CLASS: new RegExp('^\\.(' + identifier + ')'),
+        TAG: new RegExp('^(' + identifier + '|[*])'),
+        ATTR: new RegExp('^' + attributes),
+        PSEUDO: new RegExp('^' + pseudos),
+        CHILD: new RegExp('^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(' + whitespace + '*(even|odd|(([+-]|)(\\d*)n|)' + whitespace + '*(?:([+-]|)' + whitespace + '*(\\d+)|))' + whitespace + '*\\)|)', 'i'),
+        bool: new RegExp('^(?:' + booleans + ')$', 'i'),
+        needsContext: new RegExp('^' + whitespace + '*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(' + whitespace + '*((?:-\\d)?\\d*)' + whitespace + '*\\)|)(?=[^-]|$)', 'i')
+      }, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rnative = /^[^{]+\{\s*\[native \w/, rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, rescape = /'|\\/g, runescape = new RegExp('\\\\([\\da-f]{1,6}' + whitespace + '?|(' + whitespace + ')|.)', 'ig'), funescape = function (_, escaped, escapedWhitespace) {
+        var high = '0x' + escaped - 65536;
+        return high !== high || escapedWhitespace ? escaped : high < 0 ? String.fromCharCode(high + 65536) : String.fromCharCode(high >> 10 | 55296, high & 1023 | 56320);
+      };
+    try {
+      push$1.apply(arr = slice$1.call(preferredDoc.childNodes), preferredDoc.childNodes);
+      arr[preferredDoc.childNodes.length].nodeType;
+    } catch (e) {
+      push$1 = {
+        apply: arr.length ? function (target, els) {
+          push_native.apply(target, slice$1.call(els));
+        } : function (target, els) {
+          var j = target.length, i = 0;
+          while (target[j++] = els[i++]) {
+          }
+          target.length = j - 1;
+        }
+      };
+    }
+    var Sizzle = function (selector, context, results, seed) {
+      var match, elem, m, nodeType, i, groups, old, nid, newContext, newSelector;
+      if ((context ? context.ownerDocument || context : preferredDoc) !== document) {
+        setDocument(context);
+      }
+      context = context || document;
+      results = results || [];
+      if (!selector || typeof selector !== 'string') {
+        return results;
+      }
+      if ((nodeType = context.nodeType) !== 1 && nodeType !== 9) {
+        return [];
+      }
+      if (documentIsHTML && !seed) {
+        if (match = rquickExpr.exec(selector)) {
+          if (m = match[1]) {
+            if (nodeType === 9) {
+              elem = context.getElementById(m);
+              if (elem && elem.parentNode) {
+                if (elem.id === m) {
+                  results.push(elem);
+                  return results;
+                }
+              } else {
+                return results;
+              }
+            } else {
+              if (context.ownerDocument && (elem = context.ownerDocument.getElementById(m)) && contains$1(context, elem) && elem.id === m) {
+                results.push(elem);
+                return results;
+              }
+            }
+          } else if (match[2]) {
+            push$1.apply(results, context.getElementsByTagName(selector));
+            return results;
+          } else if ((m = match[3]) && support.getElementsByClassName) {
+            push$1.apply(results, context.getElementsByClassName(m));
+            return results;
+          }
+        }
+        if (support.qsa && (!rbuggyQSA || !rbuggyQSA.test(selector))) {
+          nid = old = expando;
+          newContext = context;
+          newSelector = nodeType === 9 && selector;
+          if (nodeType === 1 && context.nodeName.toLowerCase() !== 'object') {
+            groups = tokenize(selector);
+            if (old = context.getAttribute('id')) {
+              nid = old.replace(rescape, '\\$&');
+            } else {
+              context.setAttribute('id', nid);
+            }
+            nid = '[id=\'' + nid + '\'] ';
+            i = groups.length;
+            while (i--) {
+              groups[i] = nid + toSelector(groups[i]);
+            }
+            newContext = rsibling.test(selector) && testContext(context.parentNode) || context;
+            newSelector = groups.join(',');
+          }
+          if (newSelector) {
+            try {
+              push$1.apply(results, newContext.querySelectorAll(newSelector));
+              return results;
+            } catch (qsaError) {
+            } finally {
+              if (!old) {
+                context.removeAttribute('id');
+              }
+            }
+          }
+        }
+      }
+      return select(selector.replace(rtrim, '$1'), context, results, seed);
+    };
+    function createCache() {
+      var keys = [];
+      function cache(key, value) {
+        if (keys.push(key + ' ') > Expr.cacheLength) {
+          delete cache[keys.shift()];
+        }
+        return cache[key + ' '] = value;
+      }
+      return cache;
+    }
+    function markFunction(fn) {
+      fn[expando] = true;
+      return fn;
+    }
+    function siblingCheck(a, b) {
+      var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && (~b.sourceIndex || MAX_NEGATIVE) - (~a.sourceIndex || MAX_NEGATIVE);
+      if (diff) {
+        return diff;
+      }
+      if (cur) {
+        while (cur = cur.nextSibling) {
+          if (cur === b) {
+            return -1;
+          }
+        }
+      }
+      return a ? 1 : -1;
+    }
+    function createInputPseudo(type) {
+      return function (elem) {
+        var name = elem.nodeName.toLowerCase();
+        return name === 'input' && elem.type === type;
+      };
+    }
+    function createButtonPseudo(type) {
+      return function (elem) {
+        var name = elem.nodeName.toLowerCase();
+        return (name === 'input' || name === 'button') && elem.type === type;
+      };
+    }
+    function createPositionalPseudo(fn) {
+      return markFunction(function (argument) {
+        argument = +argument;
+        return markFunction(function (seed, matches) {
+          var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length;
+          while (i--) {
+            if (seed[j = matchIndexes[i]]) {
+              seed[j] = !(matches[j] = seed[j]);
+            }
+          }
+        });
+      });
+    }
+    function testContext(context) {
+      return context && typeof context.getElementsByTagName !== strundefined && context;
+    }
+    support = Sizzle.support = {};
+    isXML = Sizzle.isXML = function (elem) {
+      var documentElement = elem && (elem.ownerDocument || elem).documentElement;
+      return documentElement ? documentElement.nodeName !== 'HTML' : false;
+    };
+    setDocument = Sizzle.setDocument = function (node) {
+      var hasCompare, doc = node ? node.ownerDocument || node : preferredDoc, parent = doc.defaultView;
+      function getTop(win) {
+        try {
+          return win.top;
+        } catch (ex) {
+        }
+        return null;
+      }
+      if (doc === document || doc.nodeType !== 9 || !doc.documentElement) {
+        return document;
+      }
+      document = doc;
+      docElem = doc.documentElement;
+      documentIsHTML = !isXML(doc);
+      if (parent && parent !== getTop(parent)) {
+        if (parent.addEventListener) {
+          parent.addEventListener('unload', function () {
+            setDocument();
+          }, false);
+        } else if (parent.attachEvent) {
+          parent.attachEvent('onunload', function () {
+            setDocument();
+          });
+        }
+      }
+      support.attributes = true;
+      support.getElementsByTagName = true;
+      support.getElementsByClassName = rnative.test(doc.getElementsByClassName);
+      support.getById = true;
+      Expr.find.ID = function (id, context) {
+        if (typeof context.getElementById !== strundefined && documentIsHTML) {
+          var m = context.getElementById(id);
+          return m && m.parentNode ? [m] : [];
+        }
+      };
+      Expr.filter.ID = function (id) {
+        var attrId = id.replace(runescape, funescape);
+        return function (elem) {
+          return elem.getAttribute('id') === attrId;
+        };
+      };
+      Expr.find.TAG = support.getElementsByTagName ? function (tag, context) {
+        if (typeof context.getElementsByTagName !== strundefined) {
+          return context.getElementsByTagName(tag);
+        }
+      } : function (tag, context) {
+        var elem, tmp = [], i = 0, results = context.getElementsByTagName(tag);
+        if (tag === '*') {
+          while (elem = results[i++]) {
+            if (elem.nodeType === 1) {
+              tmp.push(elem);
+            }
+          }
+          return tmp;
+        }
+        return results;
+      };
+      Expr.find.CLASS = support.getElementsByClassName && function (className, context) {
+        if (documentIsHTML) {
+          return context.getElementsByClassName(className);
+        }
+      };
+      rbuggyMatches = [];
+      rbuggyQSA = [];
+      support.disconnectedMatch = true;
+      rbuggyQSA = rbuggyQSA.length && new RegExp(rbuggyQSA.join('|'));
+      rbuggyMatches = rbuggyMatches.length && new RegExp(rbuggyMatches.join('|'));
+      hasCompare = rnative.test(docElem.compareDocumentPosition);
+      contains$1 = hasCompare || rnative.test(docElem.contains) ? function (a, b) {
+        var adown = a.nodeType === 9 ? a.documentElement : a, bup = b && b.parentNode;
+        return a === bup || !!(bup && bup.nodeType === 1 && (adown.contains ? adown.contains(bup) : a.compareDocumentPosition && a.compareDocumentPosition(bup) & 16));
+      } : function (a, b) {
+        if (b) {
+          while (b = b.parentNode) {
+            if (b === a) {
+              return true;
+            }
+          }
+        }
+        return false;
+      };
+      sortOrder = hasCompare ? function (a, b) {
+        if (a === b) {
+          hasDuplicate = true;
+          return 0;
+        }
+        var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
+        if (compare) {
+          return compare;
+        }
+        compare = (a.ownerDocument || a) === (b.ownerDocument || b) ? a.compareDocumentPosition(b) : 1;
+        if (compare & 1 || !support.sortDetached && b.compareDocumentPosition(a) === compare) {
+          if (a === doc || a.ownerDocument === preferredDoc && contains$1(preferredDoc, a)) {
+            return -1;
+          }
+          if (b === doc || b.ownerDocument === preferredDoc && contains$1(preferredDoc, b)) {
+            return 1;
+          }
+          return sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0;
+        }
+        return compare & 4 ? -1 : 1;
+      } : function (a, b) {
+        if (a === b) {
+          hasDuplicate = true;
+          return 0;
+        }
+        var cur, i = 0, aup = a.parentNode, bup = b.parentNode, ap = [a], bp = [b];
+        if (!aup || !bup) {
+          return a === doc ? -1 : b === doc ? 1 : aup ? -1 : bup ? 1 : sortInput ? indexOf$1.call(sortInput, a) - indexOf$1.call(sortInput, b) : 0;
+        } else if (aup === bup) {
+          return siblingCheck(a, b);
+        }
+        cur = a;
+        while (cur = cur.parentNode) {
+          ap.unshift(cur);
+        }
+        cur = b;
+        while (cur = cur.parentNode) {
+          bp.unshift(cur);
+        }
+        while (ap[i] === bp[i]) {
+          i++;
+        }
+        return i ? siblingCheck(ap[i], bp[i]) : ap[i] === preferredDoc ? -1 : bp[i] === preferredDoc ? 1 : 0;
+      };
+      return doc;
+    };
+    Sizzle.matches = function (expr, elements) {
+      return Sizzle(expr, null, null, elements);
+    };
+    Sizzle.matchesSelector = function (elem, expr) {
+      if ((elem.ownerDocument || elem) !== document) {
+        setDocument(elem);
+      }
+      expr = expr.replace(rattributeQuotes, '=\'$1\']');
+      if (support.matchesSelector && documentIsHTML && (!rbuggyMatches || !rbuggyMatches.test(expr)) && (!rbuggyQSA || !rbuggyQSA.test(expr))) {
+        try {
+          var ret = matches.call(elem, expr);
+          if (ret || support.disconnectedMatch || elem.document && elem.document.nodeType !== 11) {
+            return ret;
+          }
+        } catch (e) {
+        }
+      }
+      return Sizzle(expr, document, null, [elem]).length > 0;
+    };
+    Sizzle.contains = function (context, elem) {
+      if ((context.ownerDocument || context) !== document) {
+        setDocument(context);
+      }
+      return contains$1(context, elem);
+    };
+    Sizzle.attr = function (elem, name) {
+      if ((elem.ownerDocument || elem) !== document) {
+        setDocument(elem);
+      }
+      var fn = Expr.attrHandle[name.toLowerCase()], val = fn && hasOwn.call(Expr.attrHandle, name.toLowerCase()) ? fn(elem, name, !documentIsHTML) : undefined;
+      return val !== undefined ? val : support.attributes || !documentIsHTML ? elem.getAttribute(name) : (val = elem.getAttributeNode(name)) && val.specified ? val.value : null;
+    };
+    Sizzle.error = function (msg) {
+      throw new Error('Syntax error, unrecognized expression: ' + msg);
+    };
+    Sizzle.uniqueSort = function (results) {
+      var elem, duplicates = [], j = 0, i = 0;
+      hasDuplicate = !support.detectDuplicates;
+      sortInput = !support.sortStable && results.slice(0);
+      results.sort(sortOrder);
+      if (hasDuplicate) {
+        while (elem = results[i++]) {
+          if (elem === results[i]) {
+            j = duplicates.push(i);
+          }
+        }
+        while (j--) {
+          results.splice(duplicates[j], 1);
+        }
+      }
+      sortInput = null;
+      return results;
+    };
+    getText = Sizzle.getText = function (elem) {
+      var node, ret = '', i = 0, nodeType = elem.nodeType;
+      if (!nodeType) {
+        while (node = elem[i++]) {
+          ret += getText(node);
+        }
+      } else if (nodeType === 1 || nodeType === 9 || nodeType === 11) {
+        if (typeof elem.textContent === 'string') {
+          return elem.textContent;
+        } else {
+          for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
+            ret += getText(elem);
+          }
+        }
+      } else if (nodeType === 3 || nodeType === 4) {
+        return elem.nodeValue;
+      }
+      return ret;
+    };
+    Expr = Sizzle.selectors = {
+      cacheLength: 50,
+      createPseudo: markFunction,
+      match: matchExpr,
+      attrHandle: {},
+      find: {},
+      relative: {
+        '>': {
+          dir: 'parentNode',
+          first: true
+        },
+        ' ': { dir: 'parentNode' },
+        '+': {
+          dir: 'previousSibling',
+          first: true
+        },
+        '~': { dir: 'previousSibling' }
+      },
+      preFilter: {
+        ATTR: function (match) {
+          match[1] = match[1].replace(runescape, funescape);
+          match[3] = (match[3] || match[4] || match[5] || '').replace(runescape, funescape);
+          if (match[2] === '~=') {
+            match[3] = ' ' + match[3] + ' ';
+          }
+          return match.slice(0, 4);
+        },
+        CHILD: function (match) {
+          match[1] = match[1].toLowerCase();
+          if (match[1].slice(0, 3) === 'nth') {
+            if (!match[3]) {
+              Sizzle.error(match[0]);
+            }
+            match[4] = +(match[4] ? match[5] + (match[6] || 1) : 2 * (match[3] === 'even' || match[3] === 'odd'));
+            match[5] = +(match[7] + match[8] || match[3] === 'odd');
+          } else if (match[3]) {
+            Sizzle.error(match[0]);
+          }
+          return match;
+        },
+        PSEUDO: function (match) {
+          var excess, unquoted = !match[6] && match[2];
+          if (matchExpr.CHILD.test(match[0])) {
+            return null;
+          }
+          if (match[3]) {
+            match[2] = match[4] || match[5] || '';
+          } else if (unquoted && rpseudo.test(unquoted) && (excess = tokenize(unquoted, true)) && (excess = unquoted.indexOf(')', unquoted.length - excess) - unquoted.length)) {
+            match[0] = match[0].slice(0, excess);
+            match[2] = unquoted.slice(0, excess);
+          }
+          return match.slice(0, 3);
+        }
+      },
+      filter: {
+        TAG: function (nodeNameSelector) {
+          var nodeName = nodeNameSelector.replace(runescape, funescape).toLowerCase();
+          return nodeNameSelector === '*' ? function () {
+            return true;
+          } : function (elem) {
+            return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
+          };
+        },
+        CLASS: function (className) {
+          var pattern = classCache[className + ' '];
+          return pattern || (pattern = new RegExp('(^|' + whitespace + ')' + className + '(' + whitespace + '|$)')) && classCache(className, function (elem) {
+            return pattern.test(typeof elem.className === 'string' && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute('class') || '');
+          });
+        },
+        ATTR: function (name, operator, check) {
+          return function (elem) {
+            var result = Sizzle.attr(elem, name);
+            if (result == null) {
+              return operator === '!=';
+            }
+            if (!operator) {
+              return true;
+            }
+            result += '';
+            return operator === '=' ? result === check : operator === '!=' ? result !== check : operator === '^=' ? check && result.indexOf(check) === 0 : operator === '*=' ? check && result.indexOf(check) > -1 : operator === '$=' ? check && result.slice(-check.length) === check : operator === '~=' ? (' ' + result + ' ').indexOf(check) > -1 : operator === '|=' ? result === check || result.slice(0, check.length + 1) === check + '-' : false;
+          };
+        },
+        CHILD: function (type, what, argument, first, last) {
+          var simple = type.slice(0, 3) !== 'nth', forward = type.slice(-4) !== 'last', ofType = what === 'of-type';
+          return first === 1 && last === 0 ? function (elem) {
+            return !!elem.parentNode;
+          } : function (elem, context, xml) {
+            var cache, outerCache, node, diff, nodeIndex, start, dir = simple !== forward ? 'nextSibling' : 'previousSibling', parent = elem.parentNode, name = ofType && elem.nodeName.toLowerCase(), useCache = !xml && !ofType;
+            if (parent) {
+              if (simple) {
+                while (dir) {
+                  node = elem;
+                  while (node = node[dir]) {
+                    if (ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) {
+                      return false;
+                    }
+                  }
+                  start = dir = type === 'only' && !start && 'nextSibling';
+                }
+                return true;
+              }
+              start = [forward ? parent.firstChild : parent.lastChild];
+              if (forward && useCache) {
+                outerCache = parent[expando] || (parent[expando] = {});
+                cache = outerCache[type] || [];
+                nodeIndex = cache[0] === dirruns && cache[1];
+                diff = cache[0] === dirruns && cache[2];
+                node = nodeIndex && parent.childNodes[nodeIndex];
+                while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {
+                  if (node.nodeType === 1 && ++diff && node === elem) {
+                    outerCache[type] = [
+                      dirruns,
+                      nodeIndex,
+                      diff
+                    ];
+                    break;
+                  }
+                }
+              } else if (useCache && (cache = (elem[expando] || (elem[expando] = {}))[type]) && cache[0] === dirruns) {
+                diff = cache[1];
+              } else {
+                while (node = ++nodeIndex && node && node[dir] || (diff = nodeIndex = 0) || start.pop()) {
+                  if ((ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1) && ++diff) {
+                    if (useCache) {
+                      (node[expando] || (node[expando] = {}))[type] = [
+                        dirruns,
+                        diff
+                      ];
+                    }
+                    if (node === elem) {
+                      break;
+                    }
+                  }
+                }
+              }
+              diff -= last;
+              return diff === first || diff % first === 0 && diff / first >= 0;
+            }
+          };
+        },
+        PSEUDO: function (pseudo, argument) {
+          var args, fn = Expr.pseudos[pseudo] || Expr.setFilters[pseudo.toLowerCase()] || Sizzle.error('unsupported pseudo: ' + pseudo);
+          if (fn[expando]) {
+            return fn(argument);
+          }
+          if (fn.length > 1) {
+            args = [
+              pseudo,
+              pseudo,
+              '',
+              argument
+            ];
+            return Expr.setFilters.hasOwnProperty(pseudo.toLowerCase()) ? markFunction(function (seed, matches) {
+              var idx, matched = fn(seed, argument), i = matched.length;
+              while (i--) {
+                idx = indexOf$1.call(seed, matched[i]);
+                seed[idx] = !(matches[idx] = matched[i]);
+              }
+            }) : function (elem) {
+              return fn(elem, 0, args);
+            };
+          }
+          return fn;
+        }
+      },
+      pseudos: {
+        not: markFunction(function (selector) {
+          var input = [], results = [], matcher = compile(selector.replace(rtrim, '$1'));
+          return matcher[expando] ? markFunction(function (seed, matches, context, xml) {
+            var elem, unmatched = matcher(seed, null, xml, []), i = seed.length;
+            while (i--) {
+              if (elem = unmatched[i]) {
+                seed[i] = !(matches[i] = elem);
+              }
+            }
+          }) : function (elem, context, xml) {
+            input[0] = elem;
+            matcher(input, null, xml, results);
+            return !results.pop();
+          };
+        }),
+        has: markFunction(function (selector) {
+          return function (elem) {
+            return Sizzle(selector, elem).length > 0;
+          };
+        }),
+        contains: markFunction(function (text) {
+          text = text.replace(runescape, funescape);
+          return function (elem) {
+            return (elem.textContent || elem.innerText || getText(elem)).indexOf(text) > -1;
+          };
+        }),
+        lang: markFunction(function (lang) {
+          if (!ridentifier.test(lang || '')) {
+            Sizzle.error('unsupported lang: ' + lang);
+          }
+          lang = lang.replace(runescape, funescape).toLowerCase();
+          return function (elem) {
+            var elemLang;
+            do {
+              if (elemLang = documentIsHTML ? elem.lang : elem.getAttribute('xml:lang') || elem.getAttribute('lang')) {
+                elemLang = elemLang.toLowerCase();
+                return elemLang === lang || elemLang.indexOf(lang + '-') === 0;
+              }
+            } while ((elem = elem.parentNode) && elem.nodeType === 1);
+            return false;
+          };
+        }),
+        target: function (elem) {
+          var hash = domGlobals.window.location && domGlobals.window.location.hash;
+          return hash && hash.slice(1) === elem.id;
+        },
+        root: function (elem) {
+          return elem === docElem;
+        },
+        focus: function (elem) {
+          return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
+        },
+        enabled: function (elem) {
+          return elem.disabled === false;
+        },
+        disabled: function (elem) {
+          return elem.disabled === true;
+        },
+        checked: function (elem) {
+          var nodeName = elem.nodeName.toLowerCase();
+          return nodeName === 'input' && !!elem.checked || nodeName === 'option' && !!elem.selected;
+        },
+        selected: function (elem) {
+          if (elem.parentNode) {
+            elem.parentNode.selectedIndex;
+          }
+          return elem.selected === true;
+        },
+        empty: function (elem) {
+          for (elem = elem.firstChild; elem; elem = elem.nextSibling) {
+            if (elem.nodeType < 6) {
+              return false;
+            }
+          }
+          return true;
+        },
+        parent: function (elem) {
+          return !Expr.pseudos.empty(elem);
+        },
+        header: function (elem) {
+          return rheader.test(elem.nodeName);
+        },
+        input: function (elem) {
+          return rinputs.test(elem.nodeName);
+        },
+        button: function (elem) {
+          var name = elem.nodeName.toLowerCase();
+          return name === 'input' && elem.type === 'button' || name === 'button';
+        },
+        text: function (elem) {
+          var attr;
+          return elem.nodeName.toLowerCase() === 'input' && elem.type === 'text' && ((attr = elem.getAttribute('type')) == null || attr.toLowerCase() === 'text');
+        },
+        first: createPositionalPseudo(function () {
+          return [0];
+        }),
+        last: createPositionalPseudo(function (matchIndexes, length) {
+          return [length - 1];
+        }),
+        eq: createPositionalPseudo(function (matchIndexes, length, argument) {
+          return [argument < 0 ? argument + length : argument];
+        }),
+        even: createPositionalPseudo(function (matchIndexes, length) {
+          var i = 0;
+          for (; i < length; i += 2) {
+            matchIndexes.push(i);
+          }
+          return matchIndexes;
+        }),
+        odd: createPositionalPseudo(function (matchIndexes, length) {
+          var i = 1;
+          for (; i < length; i += 2) {
+            matchIndexes.push(i);
+          }
+          return matchIndexes;
+        }),
+        lt: createPositionalPseudo(function (matchIndexes, length, argument) {
+          var i = argument < 0 ? argument + length : argument;
+          for (; --i >= 0;) {
+            matchIndexes.push(i);
+          }
+          return matchIndexes;
+        }),
+        gt: createPositionalPseudo(function (matchIndexes, length, argument) {
+          var i = argument < 0 ? argument + length : argument;
+          for (; ++i < length;) {
+            matchIndexes.push(i);
+          }
+          return matchIndexes;
+        })
+      }
+    };
+    Expr.pseudos.nth = Expr.pseudos.eq;
+    for (i in {
+        radio: true,
+        checkbox: true,
+        file: true,
+        password: true,
+        image: true
+      }) {
+      Expr.pseudos[i] = createInputPseudo(i);
+    }
+    for (i in {
+        submit: true,
+        reset: true
+      }) {
+      Expr.pseudos[i] = createButtonPseudo(i);
+    }
+    function setFilters() {
+    }
+    setFilters.prototype = Expr.filters = Expr.pseudos;
+    Expr.setFilters = new setFilters();
+    tokenize = Sizzle.tokenize = function (selector, parseOnly) {
+      var matched, match, tokens, type, soFar, groups, preFilters, cached = tokenCache[selector + ' '];
+      if (cached) {
+        return parseOnly ? 0 : cached.slice(0);
+      }
+      soFar = selector;
+      groups = [];
+      preFilters = Expr.preFilter;
+      while (soFar) {
+        if (!matched || (match = rcomma.exec(soFar))) {
+          if (match) {
+            soFar = soFar.slice(match[0].length) || soFar;
+          }
+          groups.push(tokens = []);
+        }
+        matched = false;
+        if (match = rcombinators.exec(soFar)) {
+          matched = match.shift();
+          tokens.push({
+            value: matched,
+            type: match[0].replace(rtrim, ' ')
+          });
+          soFar = soFar.slice(matched.length);
+        }
+        for (type in Expr.filter) {
+          if (!Expr.filter.hasOwnProperty(type))
+            continue;
+          if ((match = matchExpr[type].exec(soFar)) && (!preFilters[type] || (match = preFilters[type](match)))) {
+            matched = match.shift();
+            tokens.push({
+              value: matched,
+              type: type,
+              matches: match
+            });
+            soFar = soFar.slice(matched.length);
+          }
+        }
+        if (!matched) {
+          break;
+        }
+      }
+      return parseOnly ? soFar.length : soFar ? Sizzle.error(selector) : tokenCache(selector, groups).slice(0);
+    };
+    function toSelector(tokens) {
+      var i = 0, len = tokens.length, selector = '';
+      for (; i < len; i++) {
+        selector += tokens[i].value;
+      }
+      return selector;
+    }
+    function addCombinator(matcher, combinator, base) {
+      var dir = combinator.dir, checkNonElements = base && dir === 'parentNode', doneName = done++;
+      return combinator.first ? function (elem, context, xml) {
+        while (elem = elem[dir]) {
+          if (elem.nodeType === 1 || checkNonElements) {
+            return matcher(elem, context, xml);
+          }
+        }
+      } : function (elem, context, xml) {
+        var oldCache, outerCache, newCache = [
+            dirruns,
+            doneName
+          ];
+        if (xml) {
+          while (elem = elem[dir]) {
+            if (elem.nodeType === 1 || checkNonElements) {
+              if (matcher(elem, context, xml)) {
+                return true;
+              }
+            }
+          }
+        } else {
+          while (elem = elem[dir]) {
+            if (elem.nodeType === 1 || checkNonElements) {
+              outerCache = elem[expando] || (elem[expando] = {});
+              if ((oldCache = outerCache[dir]) && oldCache[0] === dirruns && oldCache[1] === doneName) {
+                return newCache[2] = oldCache[2];
+              } else {
+                outerCache[dir] = newCache;
+                if (newCache[2] = matcher(elem, context, xml)) {
+                  return true;
+                }
+              }
+            }
+          }
+        }
+      };
+    }
+    function elementMatcher(matchers) {
+      return matchers.length > 1 ? function (elem, context, xml) {
+        var i = matchers.length;
+        while (i--) {
+          if (!matchers[i](elem, context, xml)) {
+            return false;
+          }
+        }
+        return true;
+      } : matchers[0];
+    }
+    function multipleContexts(selector, contexts, results) {
+      var i = 0, len = contexts.length;
+      for (; i < len; i++) {
+        Sizzle(selector, contexts[i], results);
+      }
+      return results;
+    }
+    function condense(unmatched, map, filter, context, xml) {
+      var elem, newUnmatched = [], i = 0, len = unmatched.length, mapped = map != null;
+      for (; i < len; i++) {
+        if (elem = unmatched[i]) {
+          if (!filter || filter(elem, context, xml)) {
+            newUnmatched.push(elem);
+            if (mapped) {
+              map.push(i);
+            }
+          }
+        }
+      }
+      return newUnmatched;
+    }
+    function setMatcher(preFilter, selector, matcher, postFilter, postFinder, postSelector) {
+      if (postFilter && !postFilter[expando]) {
+        postFilter = setMatcher(postFilter);
+      }
+      if (postFinder && !postFinder[expando]) {
+        postFinder = setMatcher(postFinder, postSelector);
+      }
+      return markFunction(function (seed, results, context, xml) {
+        var temp, i, elem, preMap = [], postMap = [], preexisting = results.length, elems = seed || multipleContexts(selector || '*', context.nodeType ? [context] : context, []), matcherIn = preFilter && (seed || !selector) ? condense(elems, preMap, preFilter, context, xml) : elems, matcherOut = matcher ? postFinder || (seed ? preFilter : preexisting || postFilter) ? [] : results : matcherIn;
+        if (matcher) {
+          matcher(matcherIn, matcherOut, context, xml);
+        }
+        if (postFilter) {
+          temp = condense(matcherOut, postMap);
+          postFilter(temp, [], context, xml);
+          i = temp.length;
+          while (i--) {
+            if (elem = temp[i]) {
+              matcherOut[postMap[i]] = !(matcherIn[postMap[i]] = elem);
+            }
+          }
+        }
+        if (seed) {
+          if (postFinder || preFilter) {
+            if (postFinder) {
+              temp = [];
+              i = matcherOut.length;
+              while (i--) {
+                if (elem = matcherOut[i]) {
+                  temp.push(matcherIn[i] = elem);
+                }
+              }
+              postFinder(null, matcherOut = [], temp, xml);
+            }
+            i = matcherOut.length;
+            while (i--) {
+              if ((elem = matcherOut[i]) && (temp = postFinder ? indexOf$1.call(seed, elem) : preMap[i]) > -1) {
+                seed[temp] = !(results[temp] = elem);
+              }
+            }
+          }
+        } else {
+          matcherOut = condense(matcherOut === results ? matcherOut.splice(preexisting, matcherOut.length) : matcherOut);
+          if (postFinder) {
+            postFinder(null, results, matcherOut, xml);
+          } else {
+            push$1.apply(results, matcherOut);
+          }
+        }
+      });
+    }
+    function matcherFromTokens(tokens) {
+      var checkContext, matcher, j, len = tokens.length, leadingRelative = Expr.relative[tokens[0].type], implicitRelative = leadingRelative || Expr.relative[' '], i = leadingRelative ? 1 : 0, matchContext = addCombinator(function (elem) {
+          return elem === checkContext;
+        }, implicitRelative, true), matchAnyContext = addCombinator(function (elem) {
+          return indexOf$1.call(checkContext, elem) > -1;
+        }, implicitRelative, true), matchers = [function (elem, context, xml) {
+            return !leadingRelative && (xml || context !== outermostContext) || ((checkContext = context).nodeType ? matchContext(elem, context, xml) : matchAnyContext(elem, context, xml));
+          }];
+      for (; i < len; i++) {
+        if (matcher = Expr.relative[tokens[i].type]) {
+          matchers = [addCombinator(elementMatcher(matchers), matcher)];
+        } else {
+          matcher = Expr.filter[tokens[i].type].apply(null, tokens[i].matches);
+          if (matcher[expando]) {
+            j = ++i;
+            for (; j < len; j++) {
+              if (Expr.relative[tokens[j].type]) {
+                break;
+              }
+            }
+            return setMatcher(i > 1 && elementMatcher(matchers), i > 1 && toSelector(tokens.slice(0, i - 1).concat({ value: tokens[i - 2].type === ' ' ? '*' : '' })).replace(rtrim, '$1'), matcher, i < j && matcherFromTokens(tokens.slice(i, j)), j < len && matcherFromTokens(tokens = tokens.slice(j)), j < len && toSelector(tokens));
+          }
+          matchers.push(matcher);
+        }
+      }
+      return elementMatcher(matchers);
+    }
+    function matcherFromGroupMatchers(elementMatchers, setMatchers) {
+      var bySet = setMatchers.length > 0, byElement = elementMatchers.length > 0, superMatcher = function (seed, context, xml, results, outermost) {
+          var elem, j, matcher, matchedCount = 0, i = '0', unmatched = seed && [], setMatched = [], contextBackup = outermostContext, elems = seed || byElement && Expr.find.TAG('*', outermost), dirrunsUnique = dirruns += contextBackup == null ? 1 : Math.random() || 0.1, len = elems.length;
+          if (outermost) {
+            outermostContext = context !== document && context;
+          }
+          for (; i !== len && (elem = elems[i]) != null; i++) {
+            if (byElement && elem) {
+              j = 0;
+              while (matcher = elementMatchers[j++]) {
+                if (matcher(elem, context, xml)) {
+                  results.push(elem);
+                  break;
+                }
+              }
+              if (outermost) {
+                dirruns = dirrunsUnique;
+              }
+            }
+            if (bySet) {
+              if (elem = !matcher && elem) {
+                matchedCount--;
+              }
+              if (seed) {
+                unmatched.push(elem);
+              }
+            }
+          }
+          matchedCount += i;
+          if (bySet && i !== matchedCount) {
+            j = 0;
+            while (matcher = setMatchers[j++]) {
+              matcher(unmatched, setMatched, context, xml);
+            }
+            if (seed) {
+              if (matchedCount > 0) {
+                while (i--) {
+                  if (!(unmatched[i] || setMatched[i])) {
+                    setMatched[i] = pop.call(results);
+                  }
+                }
+              }
+              setMatched = condense(setMatched);
+            }
+            push$1.apply(results, setMatched);
+            if (outermost && !seed && setMatched.length > 0 && matchedCount + setMatchers.length > 1) {
+              Sizzle.uniqueSort(results);
+            }
+          }
+          if (outermost) {
+            dirruns = dirrunsUnique;
+            outermostContext = contextBackup;
+          }
+          return unmatched;
+        };
+      return bySet ? markFunction(superMatcher) : superMatcher;
+    }
+    compile = Sizzle.compile = function (selector, match) {
+      var i, setMatchers = [], elementMatchers = [], cached = compilerCache[selector + ' '];
+      if (!cached) {
+        if (!match) {
+          match = tokenize(selector);
+        }
+        i = match.length;
+        while (i--) {
+          cached = matcherFromTokens(match[i]);
+          if (cached[expando]) {
+            setMatchers.push(cached);
+          } else {
+            elementMatchers.push(cached);
+          }
+        }
+        cached = compilerCache(selector, matcherFromGroupMatchers(elementMatchers, setMatchers));
+        cached.selector = selector;
+      }
+      return cached;
+    };
+    select = Sizzle.select = function (selector, context, results, seed) {
+      var i, tokens, token, type, find, compiled = typeof selector === 'function' && selector, match = !seed && tokenize(selector = compiled.selector || selector);
+      results = results || [];
+      if (match.length === 1) {
+        tokens = match[0] = match[0].slice(0);
+        if (tokens.length > 2 && (token = tokens[0]).type === 'ID' && support.getById && context.nodeType === 9 && documentIsHTML && Expr.relative[tokens[1].type]) {
+          context = (Expr.find.ID(token.matches[0].replace(runescape, funescape), context) || [])[0];
+          if (!context) {
+            return results;
+          } else if (compiled) {
+            context = context.parentNode;
+          }
+          selector = selector.slice(tokens.shift().value.length);
+        }
+        i = matchExpr.needsContext.test(selector) ? 0 : tokens.length;
+        while (i--) {
+          token = tokens[i];
+          if (Expr.relative[type = token.type]) {
+            break;
+          }
+          if (find = Expr.find[type]) {
+            if (seed = find(token.matches[0].replace(runescape, funescape), rsibling.test(tokens[0].type) && testContext(context.parentNode) || context)) {
+              tokens.splice(i, 1);
+              selector = seed.length && toSelector(tokens);
+              if (!selector) {
+                push$1.apply(results, seed);
+                return results;
+              }
+              break;
+            }
+          }
+        }
+      }
+      (compiled || compile(selector, match))(seed, context, !documentIsHTML, results, rsibling.test(selector) && testContext(context.parentNode) || context);
+      return results;
+    };
+    support.sortStable = expando.split('').sort(sortOrder).join('') === expando;
+    support.detectDuplicates = !!hasDuplicate;
+    setDocument();
+    support.sortDetached = true;
+
+    var isArray$1 = Array.isArray;
+    var toArray = function (obj) {
+      var array = obj, i, l;
+      if (!isArray$1(obj)) {
+        array = [];
+        for (i = 0, l = obj.length; i < l; i++) {
+          array[i] = obj[i];
+        }
+      }
+      return array;
+    };
+    var each$1 = function (o, cb, s) {
+      var n, l;
+      if (!o) {
+        return 0;
+      }
+      s = s || o;
+      if (o.length !== undefined) {
+        for (n = 0, l = o.length; n < l; n++) {
+          if (cb.call(s, o[n], n, o) === false) {
+            return 0;
+          }
+        }
+      } else {
+        for (n in o) {
+          if (o.hasOwnProperty(n)) {
+            if (cb.call(s, o[n], n, o) === false) {
+              return 0;
+            }
+          }
+        }
+      }
+      return 1;
+    };
+    var map$1 = function (array, callback) {
+      var out = [];
+      each$1(array, function (item, index) {
+        out.push(callback(item, index, array));
+      });
+      return out;
+    };
+    var filter$1 = function (a, f) {
+      var o = [];
+      each$1(a, function (v, index) {
+        if (!f || f(v, index, a)) {
+          o.push(v);
+        }
+      });
+      return o;
+    };
+    var indexOf$2 = function (a, v) {
+      var i, l;
+      if (a) {
+        for (i = 0, l = a.length; i < l; i++) {
+          if (a[i] === v) {
+            return i;
+          }
+        }
+      }
+      return -1;
+    };
+    var reduce = function (collection, iteratee, accumulator, thisArg) {
+      var i = 0;
+      if (arguments.length < 3) {
+        accumulator = collection[0];
+      }
+      for (; i < collection.length; i++) {
+        accumulator = iteratee.call(thisArg, accumulator, collection[i], i);
+      }
+      return accumulator;
+    };
+    var findIndex$1 = function (array, predicate, thisArg) {
+      var i, l;
+      for (i = 0, l = array.length; i < l; i++) {
+        if (predicate.call(thisArg, array[i], i, array)) {
+          return i;
+        }
+      }
+      return -1;
+    };
+    var find$1 = function (array, predicate, thisArg) {
+      var idx = findIndex$1(array, predicate, thisArg);
+      if (idx !== -1) {
+        return array[idx];
+      }
+      return undefined;
+    };
+    var last$1 = function (collection) {
+      return collection[collection.length - 1];
+    };
+    var ArrUtils = {
+      isArray: isArray$1,
+      toArray: toArray,
+      each: each$1,
+      map: map$1,
+      filter: filter$1,
+      indexOf: indexOf$2,
+      reduce: reduce,
+      findIndex: findIndex$1,
+      find: find$1,
+      last: last$1
+    };
+
+    var whiteSpaceRegExp = /^\s*|\s*$/g;
+    var trim = function (str) {
+      return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp, '');
+    };
+    var is = function (obj, type) {
+      if (!type) {
+        return obj !== undefined;
+      }
+      if (type === 'array' && ArrUtils.isArray(obj)) {
+        return true;
+      }
+      return typeof obj === type;
+    };
+    var makeMap = function (items, delim, map) {
+      var i;
+      items = items || [];
+      delim = delim || ',';
+      if (typeof items === 'string') {
+        items = items.split(delim);
+      }
+      map = map || {};
+      i = items.length;
+      while (i--) {
+        map[items[i]] = {};
+      }
+      return map;
+    };
+    var hasOwnProperty = function (obj, prop) {
+      return Object.prototype.hasOwnProperty.call(obj, prop);
+    };
+    var create = function (s, p, root) {
+      var self = this;
+      var sp, ns, cn, scn, c, de = 0;
+      s = /^((static) )?([\w.]+)(:([\w.]+))?/.exec(s);
+      cn = s[3].match(/(^|\.)(\w+)$/i)[2];
+      ns = self.createNS(s[3].replace(/\.\w+$/, ''), root);
+      if (ns[cn]) {
+        return;
+      }
+      if (s[2] === 'static') {
+        ns[cn] = p;
+        if (this.onCreate) {
+          this.onCreate(s[2], s[3], ns[cn]);
+        }
+        return;
+      }
+      if (!p[cn]) {
+        p[cn] = function () {
+        };
+        de = 1;
+      }
+      ns[cn] = p[cn];
+      self.extend(ns[cn].prototype, p);
+      if (s[5]) {
+        sp = self.resolve(s[5]).prototype;
+        scn = s[5].match(/\.(\w+)$/i)[1];
+        c = ns[cn];
+        if (de) {
+          ns[cn] = function () {
+            return sp[scn].apply(this, arguments);
+          };
+        } else {
+          ns[cn] = function () {
+            this.parent = sp[scn];
+            return c.apply(this, arguments);
+          };
+        }
+        ns[cn].prototype[cn] = ns[cn];
+        self.each(sp, function (f, n) {
+          ns[cn].prototype[n] = sp[n];
+        });
+        self.each(p, function (f, n) {
+          if (sp[n]) {
+            ns[cn].prototype[n] = function () {
+              this.parent = sp[n];
+              return f.apply(this, arguments);
+            };
+          } else {
+            if (n !== cn) {
+              ns[cn].prototype[n] = f;
+            }
+          }
+        });
+      }
+      self.each(p.static, function (f, n) {
+        ns[cn][n] = f;
+      });
+    };
+    var extend = function (obj, ext) {
+      var x = [];
+      for (var _i = 2; _i < arguments.length; _i++) {
+        x[_i - 2] = arguments[_i];
+      }
+      var i, l, name;
+      var args = arguments;
+      var value;
+      for (i = 1, l = args.length; i < l; i++) {
+        ext = args[i];
+        for (name in ext) {
+          if (ext.hasOwnProperty(name)) {
+            value = ext[name];
+            if (value !== undefined) {
+              obj[name] = value;
+            }
+          }
+        }
+      }
+      return obj;
+    };
+    var walk = function (o, f, n, s) {
+      s = s || this;
+      if (o) {
+        if (n) {
+          o = o[n];
+        }
+        ArrUtils.each(o, function (o, i) {
+          if (f.call(s, o, i, n) === false) {
+            return false;
+          }
+          walk(o, f, n, s);
+        });
+      }
+    };
+    var createNS = function (n, o) {
+      var i, v;
+      o = o || domGlobals.window;
+      n = n.split('.');
+      for (i = 0; i < n.length; i++) {
+        v = n[i];
+        if (!o[v]) {
+          o[v] = {};
+        }
+        o = o[v];
+      }
+      return o;
+    };
+    var resolve$1 = function (n, o) {
+      var i, l;
+      o = o || domGlobals.window;
+      n = n.split('.');
+      for (i = 0, l = n.length; i < l; i++) {
+        o = o[n[i]];
+        if (!o) {
+          break;
+        }
+      }
+      return o;
+    };
+    var explode = function (s, d) {
+      if (!s || is(s, 'array')) {
+        return s;
+      }
+      return ArrUtils.map(s.split(d || ','), trim);
+    };
+    var _addCacheSuffix = function (url) {
+      var cacheSuffix = Env.cacheSuffix;
+      if (cacheSuffix) {
+        url += (url.indexOf('?') === -1 ? '?' : '&') + cacheSuffix;
+      }
+      return url;
+    };
+    var Tools = {
+      trim: trim,
+      isArray: ArrUtils.isArray,
+      is: is,
+      toArray: ArrUtils.toArray,
+      makeMap: makeMap,
+      each: ArrUtils.each,
+      map: ArrUtils.map,
+      grep: ArrUtils.filter,
+      inArray: ArrUtils.indexOf,
+      hasOwn: hasOwnProperty,
+      extend: extend,
+      create: create,
+      walk: walk,
+      createNS: createNS,
+      resolve: resolve$1,
+      explode: explode,
+      _addCacheSuffix: _addCacheSuffix
+    };
+
+    var doc = domGlobals.document, push$2 = Array.prototype.push, slice$2 = Array.prototype.slice;
+    var rquickExpr$1 = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/;
+    var Event = EventUtils.Event;
+    var skipUniques = Tools.makeMap('children,contents,next,prev');
+    var isDefined = function (obj) {
+      return typeof obj !== 'undefined';
+    };
+    var isString$1 = function (obj) {
+      return typeof obj === 'string';
+    };
+    var isWindow = function (obj) {
+      return obj && obj === obj.window;
+    };
+    var createFragment = function (html, fragDoc) {
+      var frag, node, container;
+      fragDoc = fragDoc || doc;
+      container = fragDoc.createElement('div');
+      frag = fragDoc.createDocumentFragment();
+      container.innerHTML = html;
+      while (node = container.firstChild) {
+        frag.appendChild(node);
+      }
+      return frag;
+    };
+    var domManipulate = function (targetNodes, sourceItem, callback, reverse) {
+      var i;
+      if (isString$1(sourceItem)) {
+        sourceItem = createFragment(sourceItem, getElementDocument(targetNodes[0]));
+      } else if (sourceItem.length && !sourceItem.nodeType) {
+        sourceItem = DomQuery.makeArray(sourceItem);
+        if (reverse) {
+          for (i = sourceItem.length - 1; i >= 0; i--) {
+            domManipulate(targetNodes, sourceItem[i], callback, reverse);
+          }
+        } else {
+          for (i = 0; i < sourceItem.length; i++) {
+            domManipulate(targetNodes, sourceItem[i], callback, reverse);
+          }
+        }
+        return targetNodes;
+      }
+      if (sourceItem.nodeType) {
+        i = targetNodes.length;
+        while (i--) {
+          callback.call(targetNodes[i], sourceItem);
+        }
+      }
+      return targetNodes;
+    };
+    var hasClass = function (node, className) {
+      return node && className && (' ' + node.className + ' ').indexOf(' ' + className + ' ') !== -1;
+    };
+    var wrap = function (elements, wrapper, all) {
+      var lastParent, newWrapper;
+      wrapper = DomQuery(wrapper)[0];
+      elements.each(function () {
+        var self = this;
+        if (!all || lastParent !== self.parentNode) {
+          lastParent = self.parentNode;
+          newWrapper = wrapper.cloneNode(false);
+          self.parentNode.insertBefore(newWrapper, self);
+          newWrapper.appendChild(self);
+        } else {
+          newWrapper.appendChild(self);
+        }
+      });
+      return elements;
+    };
+    var numericCssMap = Tools.makeMap('fillOpacity fontWeight lineHeight opacity orphans widows zIndex zoom', ' ');
+    var booleanMap = Tools.makeMap('checked compact declare defer disabled ismap multiple nohref noshade nowrap readonly selected', ' ');
+    var propFix = {
+      for: 'htmlFor',
+      class: 'className',
+      readonly: 'readOnly'
+    };
+    var cssFix = { float: 'cssFloat' };
+    var attrHooks = {}, cssHooks = {};
+    var DomQueryConstructor = function (selector, context) {
+      return new DomQuery.fn.init(selector, context);
+    };
+    var inArray = function (item, array) {
+      var i;
+      if (array.indexOf) {
+        return array.indexOf(item);
+      }
+      i = array.length;
+      while (i--) {
+        if (array[i] === item) {
+          return i;
+        }
+      }
+      return -1;
+    };
+    var whiteSpaceRegExp$1 = /^\s*|\s*$/g;
+    var trim$1 = function (str) {
+      return str === null || str === undefined ? '' : ('' + str).replace(whiteSpaceRegExp$1, '');
+    };
+    var each$2 = function (obj, callback) {
+      var length, key, i, value;
+      if (obj) {
+        length = obj.length;
+        if (length === undefined) {
+          for (key in obj) {
+            if (obj.hasOwnProperty(key)) {
+              value = obj[key];
+              if (callback.call(value, key, value) === false) {
+                break;
+              }
+            }
+          }
+        } else {
+          for (i = 0; i < length; i++) {
+            value = obj[i];
+            if (callback.call(value, i, value) === false) {
+              break;
+            }
+          }
+        }
+      }
+      return obj;
+    };
+    var grep = function (array, callback) {
+      var out = [];
+      each$2(array, function (i, item) {
+        if (callback(item, i)) {
+          out.push(item);
+        }
+      });
+      return out;
+    };
+    var getElementDocument = function (element) {
+      if (!element) {
+        return doc;
+      }
+      if (element.nodeType === 9) {
+        return element;
+      }
+      return element.ownerDocument;
+    };
+    DomQueryConstructor.fn = DomQueryConstructor.prototype = {
+      constructor: DomQueryConstructor,
+      selector: '',
+      context: null,
+      length: 0,
+      init: function (selector, context) {
+        var self = this;
+        var match, node;
+        if (!selector) {
+          return self;
+        }
+        if (selector.nodeType) {
+          self.context = self[0] = selector;
+          self.length = 1;
+          return self;
+        }
+        if (context && context.nodeType) {
+          self.context = context;
+        } else {
+          if (context) {
+            return DomQuery(selector).attr(context);
+          }
+          self.context = context = domGlobals.document;
+        }
+        if (isString$1(selector)) {
+          self.selector = selector;
+          if (selector.charAt(0) === '<' && selector.charAt(selector.length - 1) === '>' && selector.length >= 3) {
+            match = [
+              null,
+              selector,
+              null
+            ];
+          } else {
+            match = rquickExpr$1.exec(selector);
+          }
+          if (match) {
+            if (match[1]) {
+              node = createFragment(selector, getElementDocument(context)).firstChild;
+              while (node) {
+                push$2.call(self, node);
+                node = node.nextSibling;
+              }
+            } else {
+              node = getElementDocument(context).getElementById(match[2]);
+              if (!node) {
+                return self;
+              }
+              if (node.id !== match[2]) {
+                return self.find(selector);
+              }
+              self.length = 1;
+              self[0] = node;
+            }
+          } else {
+            return DomQuery(context).find(selector);
+          }
+        } else {
+          this.add(selector, false);
+        }
+        return self;
+      },
+      toArray: function () {
+        return Tools.toArray(this);
+      },
+      add: function (items, sort) {
+        var self = this;
+        var nodes, i;
+        if (isString$1(items)) {
+          return self.add(DomQuery(items));
+        }
+        if (sort !== false) {
+          nodes = DomQuery.unique(self.toArray().concat(DomQuery.makeArray(items)));
+          self.length = nodes.length;
+          for (i = 0; i < nodes.length; i++) {
+            self[i] = nodes[i];
+          }
+        } else {
+          push$2.apply(self, DomQuery.makeArray(items));
+        }
+        return self;
+      },
+      attr: function (name, value) {
+        var self = this;
+        var hook;
+        if (typeof name === 'object') {
+          each$2(name, function (name, value) {
+            self.attr(name, value);
+          });
+        } else if (isDefined(value)) {
+          this.each(function () {
+            var hook;
+            if (this.nodeType === 1) {
+              hook = attrHooks[name];
+              if (hook && hook.set) {
+                hook.set(this, value);
+                return;
+              }
+              if (value === null) {
+                this.removeAttribute(name, 2);
+              } else {
+                this.setAttribute(name, value, 2);
+              }
+            }
+          });
+        } else {
+          if (self[0] && self[0].nodeType === 1) {
+            hook = attrHooks[name];
+            if (hook && hook.get) {
+              return hook.get(self[0], name);
+            }
+            if (booleanMap[name]) {
+              return self.prop(name) ? name : undefined;
+            }
+            value = self[0].getAttribute(name, 2);
+            if (value === null) {
+              value = undefined;
+            }
+          }
+          return value;
+        }
+        return self;
+      },
+      removeAttr: function (name) {
+        return this.attr(name, null);
+      },
+      prop: function (name, value) {
+        var self = this;
+        name = propFix[name] || name;
+        if (typeof name === 'object') {
+          each$2(name, function (name, value) {
+            self.prop(name, value);
+          });
+        } else if (isDefined(value)) {
+          this.each(function () {
+            if (this.nodeType === 1) {
+              this[name] = value;
+            }
+          });
+        } else {
+          if (self[0] && self[0].nodeType && name in self[0]) {
+            return self[0][name];
+          }
+          return value;
+        }
+        return self;
+      },
+      css: function (name, value) {
+        var self = this;
+        var elm, hook;
+        var camel = function (name) {
+          return name.replace(/-(\D)/g, function (a, b) {
+            return b.toUpperCase();
+          });
+        };
+        var dashed = function (name) {
+          return name.replace(/[A-Z]/g, function (a) {
+            return '-' + a;
+          });
+        };
+        if (typeof name === 'object') {
+          each$2(name, function (name, value) {
+            self.css(name, value);
+          });
+        } else {
+          if (isDefined(value)) {
+            name = camel(name);
+            if (typeof value === 'number' && !numericCssMap[name]) {
+              value = value.toString() + 'px';
+            }
+            self.each(function () {
+              var style = this.style;
+              hook = cssHooks[name];
+              if (hook && hook.set) {
+                hook.set(this, value);
+                return;
+              }
+              try {
+                this.style[cssFix[name] || name] = value;
+              } catch (ex) {
+              }
+              if (value === null || value === '') {
+                if (style.removeProperty) {
+                  style.removeProperty(dashed(name));
+                } else {
+                  style.removeAttribute(name);
+                }
+              }
+            });
+          } else {
+            elm = self[0];
+            hook = cssHooks[name];
+            if (hook && hook.get) {
+              return hook.get(elm);
+            }
+            if (elm.ownerDocument.defaultView) {
+              try {
+                return elm.ownerDocument.defaultView.getComputedStyle(elm, null).getPropertyValue(dashed(name));
+              } catch (ex) {
+                return undefined;
+              }
+            } else if (elm.currentStyle) {
+              return elm.currentStyle[camel(name)];
+            } else {
+              return '';
+            }
+          }
+        }
+        return self;
+      },
+      remove: function () {
+        var self = this;
+        var node, i = this.length;
+        while (i--) {
+          node = self[i];
+          Event.clean(node);
+          if (node.parentNode) {
+            node.parentNode.removeChild(node);
+          }
+        }
+        return this;
+      },
+      empty: function () {
+        var self = this;
+        var node, i = this.length;
+        while (i--) {
+          node = self[i];
+          while (node.firstChild) {
+            node.removeChild(node.firstChild);
+          }
+        }
+        return this;
+      },
+      html: function (value) {
+        var self = this;
+        var i;
+        if (isDefined(value)) {
+          i = self.length;
+          try {
+            while (i--) {
+              self[i].innerHTML = value;
+            }
+          } catch (ex) {
+            DomQuery(self[i]).empty().append(value);
+          }
+          return self;
+        }
+        return self[0] ? self[0].innerHTML : '';
+      },
+      text: function (value) {
+        var self = this;
+        var i;
+        if (isDefined(value)) {
+          i = self.length;
+          while (i--) {
+            if ('innerText' in self[i]) {
+              self[i].innerText = value;
+            } else {
+              self[0].textContent = value;
+            }
+          }
+          return self;
+        }
+        return self[0] ? self[0].innerText || self[0].textContent : '';
+      },
+      append: function () {
+        return domManipulate(this, arguments, function (node) {
+          if (this.nodeType === 1 || this.host && this.host.nodeType === 1) {
+            this.appendChild(node);
+          }
+        });
+      },
+      prepend: function () {
+        return domManipulate(this, arguments, function (node) {
+          if (this.nodeType === 1 || this.host && this.host.nodeType === 1) {
+            this.insertBefore(node, this.firstChild);
+          }
+        }, true);
+      },
+      before: function () {
+        var self = this;
+        if (self[0] && self[0].parentNode) {
+          return domManipulate(self, arguments, function (node) {
+            this.parentNode.insertBefore(node, this);
+          });
+        }
+        return self;
+      },
+      after: function () {
+        var self = this;
+        if (self[0] && self[0].parentNode) {
+          return domManipulate(self, arguments, function (node) {
+            this.parentNode.insertBefore(node, this.nextSibling);
+          }, true);
+        }
+        return self;
+      },
+      appendTo: function (val) {
+        DomQuery(val).append(this);
+        return this;
+      },
+      prependTo: function (val) {
+        DomQuery(val).prepend(this);
+        return this;
+      },
+      replaceWith: function (content) {
+        return this.before(content).remove();
+      },
+      wrap: function (content) {
+        return wrap(this, content);
+      },
+      wrapAll: function (content) {
+        return wrap(this, content, true);
+      },
+      wrapInner: function (content) {
+        this.each(function () {
+          DomQuery(this).contents().wrapAll(content);
+        });
+        return this;
+      },
+      unwrap: function () {
+        return this.parent().each(function () {
+          DomQuery(this).replaceWith(this.childNodes);
+        });
+      },
+      clone: function () {
+        var result = [];
+        this.each(function () {
+          result.push(this.cloneNode(true));
+        });
+        return DomQuery(result);
+      },
+      addClass: function (className) {
+        return this.toggleClass(className, true);
+      },
+      removeClass: function (className) {
+        return this.toggleClass(className, false);
+      },
+      toggleClass: function (className, state) {
+        var self = this;
+        if (typeof className !== 'string') {
+          return self;
+        }
+        if (className.indexOf(' ') !== -1) {
+          each$2(className.split(' '), function () {
+            self.toggleClass(this, state);
+          });
+        } else {
+          self.each(function (index, node) {
+            var existingClassName, classState;
+            classState = hasClass(node, className);
+            if (classState !== state) {
+              existingClassName = node.className;
+              if (classState) {
+                node.className = trim$1((' ' + existingClassName + ' ').replace(' ' + className + ' ', ' '));
+              } else {
+                node.className += existingClassName ? ' ' + className : className;
+              }
+            }
+          });
+        }
+        return self;
+      },
+      hasClass: function (className) {
+        return hasClass(this[0], className);
+      },
+      each: function (callback) {
+        return each$2(this, callback);
+      },
+      on: function (name, callback) {
+        return this.each(function () {
+          Event.bind(this, name, callback);
+        });
+      },
+      off: function (name, callback) {
+        return this.each(function () {
+          Event.unbind(this, name, callback);
+        });
+      },
+      trigger: function (name) {
+        return this.each(function () {
+          if (typeof name === 'object') {
+            Event.fire(this, name.type, name);
+          } else {
+            Event.fire(this, name);
+          }
+        });
+      },
+      show: function () {
+        return this.css('display', '');
+      },
+      hide: function () {
+        return this.css('display', 'none');
+      },
+      slice: function () {
+        return new DomQuery(slice$2.apply(this, arguments));
+      },
+      eq: function (index) {
+        return index === -1 ? this.slice(index) : this.slice(index, +index + 1);
+      },
+      first: function () {
+        return this.eq(0);
+      },
+      last: function () {
+        return this.eq(-1);
+      },
+      find: function (selector) {
+        var i, l;
+        var ret = [];
+        for (i = 0, l = this.length; i < l; i++) {
+          DomQuery.find(selector, this[i], ret);
+        }
+        return DomQuery(ret);
+      },
+      filter: function (selector) {
+        if (typeof selector === 'function') {
+          return DomQuery(grep(this.toArray(), function (item, i) {
+            return selector(i, item);
+          }));
+        }
+        return DomQuery(DomQuery.filter(selector, this.toArray()));
+      },
+      closest: function (selector) {
+        var result = [];
+        if (selector instanceof DomQuery) {
+          selector = selector[0];
+        }
+        this.each(function (i, node) {
+          while (node) {
+            if (typeof selector === 'string' && DomQuery(node).is(selector)) {
+              result.push(node);
+              break;
+            } else if (node === selector) {
+              result.push(node);
+              break;
+            }
+            node = node.parentNode;
+          }
+        });
+        return DomQuery(result);
+      },
+      offset: function (offset) {
+        var elm, doc, docElm;
+        var x = 0, y = 0, pos;
+        if (!offset) {
+          elm = this[0];
+          if (elm) {
+            doc = elm.ownerDocument;
+            docElm = doc.documentElement;
+            if (elm.getBoundingClientRect) {
+              pos = elm.getBoundingClientRect();
+              x = pos.left + (docElm.scrollLeft || doc.body.scrollLeft) - docElm.clientLeft;
+              y = pos.top + (docElm.scrollTop || doc.body.scrollTop) - docElm.clientTop;
+            }
+          }
+          return {
+            left: x,
+            top: y
+          };
+        }
+        return this.css(offset);
+      },
+      push: push$2,
+      sort: Array.prototype.sort,
+      splice: Array.prototype.splice
+    };
+    Tools.extend(DomQueryConstructor, {
+      extend: Tools.extend,
+      makeArray: function (object) {
+        if (isWindow(object) || object.nodeType) {
+          return [object];
+        }
+        return Tools.toArray(object);
+      },
+      inArray: inArray,
+      isArray: Tools.isArray,
+      each: each$2,
+      trim: trim$1,
+      grep: grep,
+      find: Sizzle,
+      expr: Sizzle.selectors,
+      unique: Sizzle.uniqueSort,
+      text: Sizzle.getText,
+      contains: Sizzle.contains,
+      filter: function (expr, elems, not) {
+        var i = elems.length;
+        if (not) {
+          expr = ':not(' + expr + ')';
+        }
+        while (i--) {
+          if (elems[i].nodeType !== 1) {
+            elems.splice(i, 1);
+          }
+        }
+        if (elems.length === 1) {
+          elems = DomQuery.find.matchesSelector(elems[0], expr) ? [elems[0]] : [];
+        } else {
+          elems = DomQuery.find.matches(expr, elems);
+        }
+        return elems;
+      }
+    });
+    var dir = function (el, prop, until) {
+      var matched = [];
+      var cur = el[prop];
+      if (typeof until !== 'string' && until instanceof DomQuery) {
+        until = until[0];
+      }
+      while (cur && cur.nodeType !== 9) {
+        if (until !== undefined) {
+          if (cur === until) {
+            break;
+          }
+          if (typeof until === 'string' && DomQuery(cur).is(until)) {
+            break;
+          }
+        }
+        if (cur.nodeType === 1) {
+          matched.push(cur);
+        }
+        cur = cur[prop];
+      }
+      return matched;
+    };
+    var sibling = function (node, siblingName, nodeType, until) {
+      var result = [];
+      if (until instanceof DomQuery) {
+        until = until[0];
+      }
+      for (; node; node = node[siblingName]) {
+        if (nodeType && node.nodeType !== nodeType) {
+          continue;
+        }
+        if (until !== undefined) {
+          if (node === until) {
+            break;
+          }
+          if (typeof until === 'string' && DomQuery(node).is(until)) {
+            break;
+          }
+        }
+        result.push(node);
+      }
+      return result;
+    };
+    var firstSibling = function (node, siblingName, nodeType) {
+      for (node = node[siblingName]; node; node = node[siblingName]) {
+        if (node.nodeType === nodeType) {
+          return node;
+        }
+      }
+      return null;
+    };
+    each$2({
+      parent: function (node) {
+        var parent = node.parentNode;
+        return parent && parent.nodeType !== 11 ? parent : null;
+      },
+      parents: function (node) {
+        return dir(node, 'parentNode');
+      },
+      next: function (node) {
+        return firstSibling(node, 'nextSibling', 1);
+      },
+      prev: function (node) {
+        return firstSibling(node, 'previousSibling', 1);
+      },
+      children: function (node) {
+        return sibling(node.firstChild, 'nextSibling', 1);
+      },
+      contents: function (node) {
+        return Tools.toArray((node.nodeName === 'iframe' ? node.contentDocument || node.contentWindow.document : node).childNodes);
+      }
+    }, function (name, fn) {
+      DomQueryConstructor.fn[name] = function (selector) {
+        var self = this;
+        var result = [];
+        self.each(function () {
+          var nodes = fn.call(result, this, selector, result);
+          if (nodes) {
+            if (DomQuery.isArray(nodes)) {
+              result.push.apply(result, nodes);
+            } else {
+              result.push(nodes);
+            }
+          }
+        });
+        if (this.length > 1) {
+          if (!skipUniques[name]) {
+            result = DomQuery.unique(result);
+          }
+          if (name.indexOf('parents') === 0) {
+            result = result.reverse();
+          }
+        }
+        var wrappedResult = DomQuery(result);
+        if (selector) {
+          return wrappedResult.filter(selector);
+        }
+        return wrappedResult;
+      };
+    });
+    each$2({
+      parentsUntil: function (node, until) {
+        return dir(node, 'parentNode', until);
+      },
+      nextUntil: function (node, until) {
+        return sibling(node, 'nextSibling', 1, until).slice(1);
+      },
+      prevUntil: function (node, until) {
+        return sibling(node, 'previousSibling', 1, until).slice(1);
+      }
+    }, function (name, fn) {
+      DomQueryConstructor.fn[name] = function (selector, filter) {
+        var self = this;
+        var result = [];
+        self.each(function () {
+          var nodes = fn.call(result, this, selector, result);
+          if (nodes) {
+            if (DomQuery.isArray(nodes)) {
+              result.push.apply(result, nodes);
+            } else {
+              result.push(nodes);
+            }
+          }
+        });
+        if (this.length > 1) {
+          result = DomQuery.unique(result);
+          if (name.indexOf('parents') === 0 || name === 'prevUntil') {
+            result = result.reverse();
+          }
+        }
+        var wrappedResult = DomQuery(result);
+        if (filter) {
+          return wrappedResult.filter(filter);
+        }
+        return wrappedResult;
+      };
+    });
+    DomQueryConstructor.fn.is = function (selector) {
+      return !!selector && this.filter(selector).length > 0;
+    };
+    DomQueryConstructor.fn.init.prototype = DomQueryConstructor.fn;
+    DomQueryConstructor.overrideDefaults = function (callback) {
+      var defaults;
+      var sub = function (selector, context) {
+        defaults = defaults || callback();
+        if (arguments.length === 0) {
+          selector = defaults.element;
+        }
+        if (!context) {
+          context = defaults.context;
+        }
+        return new sub.fn.init(selector, context);
+      };
+      DomQuery.extend(sub, this);
+      return sub;
+    };
+    var appendHooks = function (targetHooks, prop, hooks) {
+      each$2(hooks, function (name, func) {
+        targetHooks[name] = targetHooks[name] || {};
+        targetHooks[name][prop] = func;
+      });
+    };
+    if (Env.ie && Env.ie < 8) {
+      appendHooks(attrHooks, 'get', {
+        maxlength: function (elm) {
+          var value = elm.maxLength;
+          if (value === 2147483647) {
+            return undefined;
+          }
+          return value;
+        },
+        size: function (elm) {
+          var value = elm.size;
+          if (value === 20) {
+            return undefined;
+          }
+          return value;
+        },
+        class: function (elm) {
+          return elm.className;
+        },
+        style: function (elm) {
+          var value = elm.style.cssText;
+          if (value.length === 0) {
+            return undefined;
+          }
+          return value;
+        }
+      });
+      appendHooks(attrHooks, 'set', {
+        class: function (elm, value) {
+          elm.className = value;
+        },
+        style: function (elm, value) {
+          elm.style.cssText = value;
+        }
+      });
+    }
+    if (Env.ie && Env.ie < 9) {
+      cssFix.float = 'styleFloat';
+      appendHooks(cssHooks, 'set', {
+        opacity: function (elm, value) {
+          var style = elm.style;
+          if (value === null || value === '') {
+            style.removeAttribute('filter');
+          } else {
+            style.zoom = 1;
+            style.filter = 'alpha(opacity=' + value * 100 + ')';
+          }
+        }
+      });
+    }
+    DomQueryConstructor.attrHooks = attrHooks;
+    DomQueryConstructor.cssHooks = cssHooks;
+    var DomQuery = DomQueryConstructor;
+
+    var cached = function (f) {
+      var called = false;
+      var r;
+      return function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          args[_i] = arguments[_i];
+        }
+        if (!called) {
+          called = true;
+          r = f.apply(null, args);
+        }
+        return r;
+      };
+    };
+
+    var firstMatch = function (regexes, s) {
+      for (var i = 0; i < regexes.length; i++) {
+        var x = regexes[i];
+        if (x.test(s))
+          return x;
+      }
+      return undefined;
+    };
+    var find$2 = function (regexes, agent) {
+      var r = firstMatch(regexes, agent);
+      if (!r)
+        return {
+          major: 0,
+          minor: 0
+        };
+      var group = function (i) {
+        return Number(agent.replace(r, '$' + i));
+      };
+      return nu(group(1), group(2));
+    };
+    var detect = function (versionRegexes, agent) {
+      var cleanedAgent = String(agent).toLowerCase();
+      if (versionRegexes.length === 0)
+        return unknown();
+      return find$2(versionRegexes, cleanedAgent);
+    };
+    var unknown = function () {
+      return nu(0, 0);
+    };
+    var nu = function (major, minor) {
+      return {
+        major: major,
+        minor: minor
+      };
+    };
+    var Version = {
+      nu: nu,
+      detect: detect,
+      unknown: unknown
+    };
+
+    var edge = 'Edge';
+    var chrome = 'Chrome';
+    var ie$1 = 'IE';
+    var opera$1 = 'Opera';
+    var firefox = 'Firefox';
+    var safari = 'Safari';
+    var isBrowser = function (name, current) {
+      return function () {
+        return current === name;
+      };
+    };
+    var unknown$1 = function () {
+      return nu$1({
+        current: undefined,
+        version: Version.unknown()
+      });
+    };
+    var nu$1 = function (info) {
+      var current = info.current;
+      var version = info.version;
+      return {
+        current: current,
+        version: version,
+        isEdge: isBrowser(edge, current),
+        isChrome: isBrowser(chrome, current),
+        isIE: isBrowser(ie$1, current),
+        isOpera: isBrowser(opera$1, current),
+        isFirefox: isBrowser(firefox, current),
+        isSafari: isBrowser(safari, current)
+      };
+    };
+    var Browser = {
+      unknown: unknown$1,
+      nu: nu$1,
+      edge: constant(edge),
+      chrome: constant(chrome),
+      ie: constant(ie$1),
+      opera: constant(opera$1),
+      firefox: constant(firefox),
+      safari: constant(safari)
+    };
+
+    var windows = 'Windows';
+    var ios = 'iOS';
+    var android$1 = 'Android';
+    var linux = 'Linux';
+    var osx = 'OSX';
+    var solaris = 'Solaris';
+    var freebsd = 'FreeBSD';
+    var isOS = function (name, current) {
+      return function () {
+        return current === name;
+      };
+    };
+    var unknown$2 = function () {
+      return nu$2({
+        current: undefined,
+        version: Version.unknown()
+      });
+    };
+    var nu$2 = function (info) {
+      var current = info.current;
+      var version = info.version;
+      return {
+        current: current,
+        version: version,
+        isWindows: isOS(windows, current),
+        isiOS: isOS(ios, current),
+        isAndroid: isOS(android$1, current),
+        isOSX: isOS(osx, current),
+        isLinux: isOS(linux, current),
+        isSolaris: isOS(solaris, current),
+        isFreeBSD: isOS(freebsd, current)
+      };
+    };
+    var OperatingSystem = {
+      unknown: unknown$2,
+      nu: nu$2,
+      windows: constant(windows),
+      ios: constant(ios),
+      android: constant(android$1),
+      linux: constant(linux),
+      osx: constant(osx),
+      solaris: constant(solaris),
+      freebsd: constant(freebsd)
+    };
+
+    var DeviceType = function (os, browser, userAgent) {
+      var isiPad = os.isiOS() && /ipad/i.test(userAgent) === true;
+      var isiPhone = os.isiOS() && !isiPad;
+      var isAndroid3 = os.isAndroid() && os.version.major === 3;
+      var isAndroid4 = os.isAndroid() && os.version.major === 4;
+      var isTablet = isiPad || isAndroid3 || isAndroid4 && /mobile/i.test(userAgent) === true;
+      var isTouch = os.isiOS() || os.isAndroid();
+      var isPhone = isTouch && !isTablet;
+      var iOSwebview = browser.isSafari() && os.isiOS() && /safari/i.test(userAgent) === false;
+      return {
+        isiPad: constant(isiPad),
+        isiPhone: constant(isiPhone),
+        isTablet: constant(isTablet),
+        isPhone: constant(isPhone),
+        isTouch: constant(isTouch),
+        isAndroid: os.isAndroid,
+        isiOS: os.isiOS,
+        isWebView: constant(iOSwebview)
+      };
+    };
+
+    var detect$1 = function (candidates, userAgent) {
+      var agent = String(userAgent).toLowerCase();
+      return find(candidates, function (candidate) {
+        return candidate.search(agent);
+      });
+    };
+    var detectBrowser = function (browsers, userAgent) {
+      return detect$1(browsers, userAgent).map(function (browser) {
+        var version = Version.detect(browser.versionRegexes, userAgent);
+        return {
+          current: browser.name,
+          version: version
+        };
+      });
+    };
+    var detectOs = function (oses, userAgent) {
+      return detect$1(oses, userAgent).map(function (os) {
+        var version = Version.detect(os.versionRegexes, userAgent);
+        return {
+          current: os.name,
+          version: version
+        };
+      });
+    };
+    var UaString = {
+      detectBrowser: detectBrowser,
+      detectOs: detectOs
+    };
+
+    var contains$2 = function (str, substr) {
+      return str.indexOf(substr) !== -1;
+    };
+    var trim$2 = function (str) {
+      return str.replace(/^\s+|\s+$/g, '');
+    };
+    var lTrim = function (str) {
+      return str.replace(/^\s+/g, '');
+    };
+    var rTrim = function (str) {
+      return str.replace(/\s+$/g, '');
+    };
+
+    var normalVersionRegex = /.*?version\/\ ?([0-9]+)\.([0-9]+).*/;
+    var checkContains = function (target) {
+      return function (uastring) {
+        return contains$2(uastring, target);
+      };
+    };
+    var browsers = [
+      {
+        name: 'Edge',
+        versionRegexes: [/.*?edge\/ ?([0-9]+)\.([0-9]+)$/],
+        search: function (uastring) {
+          var monstrosity = contains$2(uastring, 'edge/') && contains$2(uastring, 'chrome') && contains$2(uastring, 'safari') && contains$2(uastring, 'applewebkit');
+          return monstrosity;
+        }
+      },
+      {
+        name: 'Chrome',
+        versionRegexes: [
+          /.*?chrome\/([0-9]+)\.([0-9]+).*/,
+          normalVersionRegex
+        ],
+        search: function (uastring) {
+          return contains$2(uastring, 'chrome') && !contains$2(uastring, 'chromeframe');
+        }
+      },
+      {
+        name: 'IE',
+        versionRegexes: [
+          /.*?msie\ ?([0-9]+)\.([0-9]+).*/,
+          /.*?rv:([0-9]+)\.([0-9]+).*/
+        ],
+        search: function (uastring) {
+          return contains$2(uastring, 'msie') || contains$2(uastring, 'trident');
+        }
+      },
+      {
+        name: 'Opera',
+        versionRegexes: [
+          normalVersionRegex,
+          /.*?opera\/([0-9]+)\.([0-9]+).*/
+        ],
+        search: checkContains('opera')
+      },
+      {
+        name: 'Firefox',
+        versionRegexes: [/.*?firefox\/\ ?([0-9]+)\.([0-9]+).*/],
+        search: checkContains('firefox')
+      },
+      {
+        name: 'Safari',
+        versionRegexes: [
+          normalVersionRegex,
+          /.*?cpu os ([0-9]+)_([0-9]+).*/
+        ],
+        search: function (uastring) {
+          return (contains$2(uastring, 'safari') || contains$2(uastring, 'mobile/')) && contains$2(uastring, 'applewebkit');
+        }
+      }
+    ];
+    var oses = [
+      {
+        name: 'Windows',
+        search: checkContains('win'),
+        versionRegexes: [/.*?windows\ nt\ ?([0-9]+)\.([0-9]+).*/]
+      },
+      {
+        name: 'iOS',
+        search: function (uastring) {
+          return contains$2(uastring, 'iphone') || contains$2(uastring, 'ipad');
+        },
+        versionRegexes: [
+          /.*?version\/\ ?([0-9]+)\.([0-9]+).*/,
+          /.*cpu os ([0-9]+)_([0-9]+).*/,
+          /.*cpu iphone os ([0-9]+)_([0-9]+).*/
+        ]
+      },
+      {
+        name: 'Android',
+        search: checkContains('android'),
+        versionRegexes: [/.*?android\ ?([0-9]+)\.([0-9]+).*/]
+      },
+      {
+        name: 'OSX',
+        search: checkContains('os x'),
+        versionRegexes: [/.*?os\ x\ ?([0-9]+)_([0-9]+).*/]
+      },
+      {
+        name: 'Linux',
+        search: checkContains('linux'),
+        versionRegexes: []
+      },
+      {
+        name: 'Solaris',
+        search: checkContains('sunos'),
+        versionRegexes: []
+      },
+      {
+        name: 'FreeBSD',
+        search: checkContains('freebsd'),
+        versionRegexes: []
+      }
+    ];
+    var PlatformInfo = {
+      browsers: constant(browsers),
+      oses: constant(oses)
+    };
+
+    var detect$2 = function (userAgent) {
+      var browsers = PlatformInfo.browsers();
+      var oses = PlatformInfo.oses();
+      var browser = UaString.detectBrowser(browsers, userAgent).fold(Browser.unknown, Browser.nu);
+      var os = UaString.detectOs(oses, userAgent).fold(OperatingSystem.unknown, OperatingSystem.nu);
+      var deviceType = DeviceType(os, browser, userAgent);
+      return {
+        browser: browser,
+        os: os,
+        deviceType: deviceType
+      };
+    };
+    var PlatformDetection = { detect: detect$2 };
+
+    var detect$3 = cached(function () {
+      var userAgent = domGlobals.navigator.userAgent;
+      return PlatformDetection.detect(userAgent);
+    });
+    var PlatformDetection$1 = { detect: detect$3 };
+
+    var fromHtml = function (html, scope) {
+      var doc = scope || domGlobals.document;
+      var div = doc.createElement('div');
+      div.innerHTML = html;
+      if (!div.hasChildNodes() || div.childNodes.length > 1) {
+        domGlobals.console.error('HTML does not have a single root node', html);
+        throw new Error('HTML must have a single root node');
+      }
+      return fromDom(div.childNodes[0]);
+    };
+    var fromTag = function (tag, scope) {
+      var doc = scope || domGlobals.document;
+      var node = doc.createElement(tag);
+      return fromDom(node);
+    };
+    var fromText = function (text, scope) {
+      var doc = scope || domGlobals.document;
+      var node = doc.createTextNode(text);
+      return fromDom(node);
+    };
+    var fromDom = function (node) {
+      if (node === null || node === undefined) {
+        throw new Error('Node cannot be null or undefined');
+      }
+      return { dom: constant(node) };
+    };
+    var fromPoint = function (docElm, x, y) {
+      var doc = docElm.dom();
+      return Option.from(doc.elementFromPoint(x, y)).map(fromDom);
+    };
+    var Element = {
+      fromHtml: fromHtml,
+      fromTag: fromTag,
+      fromText: fromText,
+      fromDom: fromDom,
+      fromPoint: fromPoint
+    };
+
+    var ATTRIBUTE = domGlobals.Node.ATTRIBUTE_NODE;
+    var CDATA_SECTION = domGlobals.Node.CDATA_SECTION_NODE;
+    var COMMENT = domGlobals.Node.COMMENT_NODE;
+    var DOCUMENT = domGlobals.Node.DOCUMENT_NODE;
+    var DOCUMENT_TYPE = domGlobals.Node.DOCUMENT_TYPE_NODE;
+    var DOCUMENT_FRAGMENT = domGlobals.Node.DOCUMENT_FRAGMENT_NODE;
+    var ELEMENT = domGlobals.Node.ELEMENT_NODE;
+    var TEXT = domGlobals.Node.TEXT_NODE;
+    var PROCESSING_INSTRUCTION = domGlobals.Node.PROCESSING_INSTRUCTION_NODE;
+    var ENTITY_REFERENCE = domGlobals.Node.ENTITY_REFERENCE_NODE;
+    var ENTITY = domGlobals.Node.ENTITY_NODE;
+    var NOTATION = domGlobals.Node.NOTATION_NODE;
+
+    var name = function (element) {
+      var r = element.dom().nodeName;
+      return r.toLowerCase();
+    };
+    var type = function (element) {
+      return element.dom().nodeType;
+    };
+    var isType$1 = function (t) {
+      return function (element) {
+        return type(element) === t;
+      };
+    };
+    var isElement = isType$1(ELEMENT);
+    var isText = isType$1(TEXT);
+
+    var keys = Object.keys;
+    var hasOwnProperty$1 = Object.hasOwnProperty;
+    var each$3 = function (obj, f) {
+      var props = keys(obj);
+      for (var k = 0, len = props.length; k < len; k++) {
+        var i = props[k];
+        var x = obj[i];
+        f(x, i, obj);
+      }
+    };
+    var map$2 = function (obj, f) {
+      return tupleMap(obj, function (x, i, obj) {
+        return {
+          k: i,
+          v: f(x, i, obj)
+        };
+      });
+    };
+    var tupleMap = function (obj, f) {
+      var r = {};
+      each$3(obj, function (x, i) {
+        var tuple = f(x, i, obj);
+        r[tuple.k] = tuple.v;
+      });
+      return r;
+    };
+    var bifilter = function (obj, pred) {
+      var t = {};
+      var f = {};
+      each$3(obj, function (x, i) {
+        var branch = pred(x, i) ? t : f;
+        branch[i] = x;
+      });
+      return {
+        t: t,
+        f: f
+      };
+    };
+    var get = function (obj, key) {
+      return has(obj, key) ? Option.from(obj[key]) : Option.none();
+    };
+    var has = function (obj, key) {
+      return hasOwnProperty$1.call(obj, key);
+    };
+
+    var isSupported = function (dom) {
+      return dom.style !== undefined;
+    };
+
+    var inBody = function (element) {
+      var dom = isText(element) ? element.dom().parentNode : element.dom();
+      return dom !== undefined && dom !== null && dom.ownerDocument.body.contains(dom);
+    };
+
+    var rawSet = function (dom, key, value) {
+      if (isString(value) || isBoolean(value) || isNumber(value)) {
+        dom.setAttribute(key, value + '');
+      } else {
+        domGlobals.console.error('Invalid call to Attr.set. Key ', key, ':: Value ', value, ':: Element ', dom);
+        throw new Error('Attribute value was not simple');
+      }
+    };
+    var set = function (element, key, value) {
+      rawSet(element.dom(), key, value);
+    };
+    var setAll = function (element, attrs) {
+      var dom = element.dom();
+      each$3(attrs, function (v, k) {
+        rawSet(dom, k, v);
+      });
+    };
+    var get$1 = function (element, key) {
+      var v = element.dom().getAttribute(key);
+      return v === null ? undefined : v;
+    };
+    var has$1 = function (element, key) {
+      var dom = element.dom();
+      return dom && dom.hasAttribute ? dom.hasAttribute(key) : false;
+    };
+    var remove = function (element, key) {
+      element.dom().removeAttribute(key);
+    };
+
+    var get$2 = function (element, property) {
+      var dom = element.dom();
+      var styles = domGlobals.window.getComputedStyle(dom);
+      var r = styles.getPropertyValue(property);
+      var v = r === '' && !inBody(element) ? getUnsafeProperty(dom, property) : r;
+      return v === null ? undefined : v;
+    };
+    var getUnsafeProperty = function (dom, property) {
+      return isSupported(dom) ? dom.style.getPropertyValue(property) : '';
+    };
+    var getRaw = function (element, property) {
+      var dom = element.dom();
+      var raw = getUnsafeProperty(dom, property);
+      return Option.from(raw).filter(function (r) {
+        return r.length > 0;
+      });
+    };
+
+    var Immutable = function () {
+      var fields = [];
+      for (var _i = 0; _i < arguments.length; _i++) {
+        fields[_i] = arguments[_i];
+      }
+      return function () {
+        var values = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          values[_i] = arguments[_i];
+        }
+        if (fields.length !== values.length) {
+          throw new Error('Wrong number of arguments to struct. Expected "[' + fields.length + ']", got ' + values.length + ' arguments');
+        }
+        var struct = {};
+        each(fields, function (name, i) {
+          struct[name] = constant(values[i]);
+        });
+        return struct;
+      };
+    };
+
+    var toArray$1 = function (target, f) {
+      var r = [];
+      var recurse = function (e) {
+        r.push(e);
+        return f(e);
+      };
+      var cur = f(target);
+      do {
+        cur = cur.bind(recurse);
+      } while (cur.isSome());
+      return r;
+    };
+    var Recurse = { toArray: toArray$1 };
+
+    var node = function () {
+      var f = Global$1.getOrDie('Node');
+      return f;
+    };
+    var compareDocumentPosition = function (a, b, match) {
+      return (a.compareDocumentPosition(b) & match) !== 0;
+    };
+    var documentPositionPreceding = function (a, b) {
+      return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_PRECEDING);
+    };
+    var documentPositionContainedBy = function (a, b) {
+      return compareDocumentPosition(a, b, node().DOCUMENT_POSITION_CONTAINED_BY);
+    };
+    var Node = {
+      documentPositionPreceding: documentPositionPreceding,
+      documentPositionContainedBy: documentPositionContainedBy
+    };
+
+    var ELEMENT$1 = ELEMENT;
+    var DOCUMENT$1 = DOCUMENT;
+    var is$1 = function (element, selector) {
+      var elem = element.dom();
+      if (elem.nodeType !== ELEMENT$1) {
+        return false;
+      } else if (elem.matches !== undefined) {
+        return elem.matches(selector);
+      } else if (elem.msMatchesSelector !== undefined) {
+        return elem.msMatchesSelector(selector);
+      } else if (elem.webkitMatchesSelector !== undefined) {
+        return elem.webkitMatchesSelector(selector);
+      } else if (elem.mozMatchesSelector !== undefined) {
+        return elem.mozMatchesSelector(selector);
+      } else {
+        throw new Error('Browser lacks native selectors');
+      }
+    };
+    var bypassSelector = function (dom) {
+      return dom.nodeType !== ELEMENT$1 && dom.nodeType !== DOCUMENT$1 || dom.childElementCount === 0;
+    };
+    var all = function (selector, scope) {
+      var base = scope === undefined ? domGlobals.document : scope.dom();
+      return bypassSelector(base) ? [] : map(base.querySelectorAll(selector), Element.fromDom);
+    };
+    var one = function (selector, scope) {
+      var base = scope === undefined ? domGlobals.document : scope.dom();
+      return bypassSelector(base) ? Option.none() : Option.from(base.querySelector(selector)).map(Element.fromDom);
+    };
+
+    var eq = function (e1, e2) {
+      return e1.dom() === e2.dom();
+    };
+    var regularContains = function (e1, e2) {
+      var d1 = e1.dom();
+      var d2 = e2.dom();
+      return d1 === d2 ? false : d1.contains(d2);
+    };
+    var ieContains = function (e1, e2) {
+      return Node.documentPositionContainedBy(e1.dom(), e2.dom());
+    };
+    var browser = PlatformDetection$1.detect().browser;
+    var contains$3 = browser.isIE() ? ieContains : regularContains;
+
+    var owner = function (element) {
+      return Element.fromDom(element.dom().ownerDocument);
+    };
+    var documentElement = function (element) {
+      return Element.fromDom(element.dom().ownerDocument.documentElement);
+    };
+    var defaultView = function (element) {
+      var el = element.dom();
+      var defView = el.ownerDocument.defaultView;
+      return Element.fromDom(defView);
+    };
+    var parent = function (element) {
+      var dom = element.dom();
+      return Option.from(dom.parentNode).map(Element.fromDom);
+    };
+    var parents = function (element, isRoot) {
+      var stop = isFunction(isRoot) ? isRoot : constant(false);
+      var dom = element.dom();
+      var ret = [];
+      while (dom.parentNode !== null && dom.parentNode !== undefined) {
+        var rawParent = dom.parentNode;
+        var p = Element.fromDom(rawParent);
+        ret.push(p);
+        if (stop(p) === true) {
+          break;
+        } else {
+          dom = rawParent;
+        }
+      }
+      return ret;
+    };
+    var siblings = function (element) {
+      var filterSelf = function (elements) {
+        return filter(elements, function (x) {
+          return !eq(element, x);
+        });
+      };
+      return parent(element).map(children).map(filterSelf).getOr([]);
+    };
+    var prevSibling = function (element) {
+      var dom = element.dom();
+      return Option.from(dom.previousSibling).map(Element.fromDom);
+    };
+    var nextSibling = function (element) {
+      var dom = element.dom();
+      return Option.from(dom.nextSibling).map(Element.fromDom);
+    };
+    var prevSiblings = function (element) {
+      return reverse(Recurse.toArray(element, prevSibling));
+    };
+    var nextSiblings = function (element) {
+      return Recurse.toArray(element, nextSibling);
+    };
+    var children = function (element) {
+      var dom = element.dom();
+      return map(dom.childNodes, Element.fromDom);
+    };
+    var child = function (element, index) {
+      var cs = element.dom().childNodes;
+      return Option.from(cs[index]).map(Element.fromDom);
+    };
+    var firstChild = function (element) {
+      return child(element, 0);
+    };
+    var lastChild = function (element) {
+      return child(element, element.dom().childNodes.length - 1);
+    };
+    var childNodesCount = function (element) {
+      return element.dom().childNodes.length;
+    };
+    var spot = Immutable('element', 'offset');
+
+    var browser$1 = PlatformDetection$1.detect().browser;
+    var firstElement = function (nodes) {
+      return find(nodes, isElement);
+    };
+    var getTableCaptionDeltaY = function (elm) {
+      if (browser$1.isFirefox() && name(elm) === 'table') {
+        return firstElement(children(elm)).filter(function (elm) {
+          return name(elm) === 'caption';
+        }).bind(function (caption) {
+          return firstElement(nextSiblings(caption)).map(function (body) {
+            var bodyTop = body.dom().offsetTop;
+            var captionTop = caption.dom().offsetTop;
+            var captionHeight = caption.dom().offsetHeight;
+            return bodyTop <= captionTop ? -captionHeight : 0;
+          });
+        }).getOr(0);
+      } else {
+        return 0;
+      }
+    };
+    var getPos = function (body, elm, rootElm) {
+      var x = 0, y = 0, offsetParent;
+      var doc = body.ownerDocument;
+      var pos;
+      rootElm = rootElm ? rootElm : body;
+      if (elm) {
+        if (rootElm === body && elm.getBoundingClientRect && get$2(Element.fromDom(body), 'position') === 'static') {
+          pos = elm.getBoundingClientRect();
+          x = pos.left + (doc.documentElement.scrollLeft || body.scrollLeft) - doc.documentElement.clientLeft;
+          y = pos.top + (doc.documentElement.scrollTop || body.scrollTop) - doc.documentElement.clientTop;
+          return {
+            x: x,
+            y: y
+          };
+        }
+        offsetParent = elm;
+        while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) {
+          x += offsetParent.offsetLeft || 0;
+          y += offsetParent.offsetTop || 0;
+          offsetParent = offsetParent.offsetParent;
+        }
+        offsetParent = elm.parentNode;
+        while (offsetParent && offsetParent !== rootElm && offsetParent.nodeType) {
+          x -= offsetParent.scrollLeft || 0;
+          y -= offsetParent.scrollTop || 0;
+          offsetParent = offsetParent.parentNode;
+        }
+        y += getTableCaptionDeltaY(Element.fromDom(elm));
+      }
+      return {
+        x: x,
+        y: y
+      };
+    };
+    var Position = { getPos: getPos };
+
+    var nu$3 = function (baseFn) {
+      var data = Option.none();
+      var callbacks = [];
+      var map = function (f) {
+        return nu$3(function (nCallback) {
+          get(function (data) {
+            nCallback(f(data));
+          });
+        });
+      };
+      var get = function (nCallback) {
+        if (isReady())
+          call(nCallback);
+        else
+          callbacks.push(nCallback);
+      };
+      var set = function (x) {
+        data = Option.some(x);
+        run(callbacks);
+        callbacks = [];
+      };
+      var isReady = function () {
+        return data.isSome();
+      };
+      var run = function (cbs) {
+        each(cbs, call);
+      };
+      var call = function (cb) {
+        data.each(function (x) {
+          domGlobals.setTimeout(function () {
+            cb(x);
+          }, 0);
+        });
+      };
+      baseFn(set);
+      return {
+        get: get,
+        map: map,
+        isReady: isReady
+      };
+    };
+    var pure$1 = function (a) {
+      return nu$3(function (callback) {
+        callback(a);
+      });
+    };
+    var LazyValue = {
+      nu: nu$3,
+      pure: pure$1
+    };
+
+    var bounce = function (f) {
+      return function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          args[_i] = arguments[_i];
+        }
+        var me = this;
+        domGlobals.setTimeout(function () {
+          f.apply(me, args);
+        }, 0);
+      };
+    };
+
+    var nu$4 = function (baseFn) {
+      var get = function (callback) {
+        baseFn(bounce(callback));
+      };
+      var map = function (fab) {
+        return nu$4(function (callback) {
+          get(function (a) {
+            var value = fab(a);
+            callback(value);
+          });
+        });
+      };
+      var bind = function (aFutureB) {
+        return nu$4(function (callback) {
+          get(function (a) {
+            aFutureB(a).get(callback);
+          });
+        });
+      };
+      var anonBind = function (futureB) {
+        return nu$4(function (callback) {
+          get(function (a) {
+            futureB.get(callback);
+          });
+        });
+      };
+      var toLazy = function () {
+        return LazyValue.nu(get);
+      };
+      var toCached = function () {
+        var cache = null;
+        return nu$4(function (callback) {
+          if (cache === null) {
+            cache = toLazy();
+          }
+          cache.get(callback);
+        });
+      };
+      return {
+        map: map,
+        bind: bind,
+        anonBind: anonBind,
+        toLazy: toLazy,
+        toCached: toCached,
+        get: get
+      };
+    };
+    var pure$2 = function (a) {
+      return nu$4(function (callback) {
+        callback(a);
+      });
+    };
+    var Future = {
+      nu: nu$4,
+      pure: pure$2
+    };
+
+    var par = function (asyncValues, nu) {
+      return nu(function (callback) {
+        var r = [];
+        var count = 0;
+        var cb = function (i) {
+          return function (value) {
+            r[i] = value;
+            count++;
+            if (count >= asyncValues.length) {
+              callback(r);
+            }
+          };
+        };
+        if (asyncValues.length === 0) {
+          callback([]);
+        } else {
+          each(asyncValues, function (asyncValue, i) {
+            asyncValue.get(cb(i));
+          });
+        }
+      });
+    };
+
+    var par$1 = function (futures) {
+      return par(futures, Future.nu);
+    };
+
+    var value = function (o) {
+      var is = function (v) {
+        return o === v;
+      };
+      var or = function (opt) {
+        return value(o);
+      };
+      var orThunk = function (f) {
+        return value(o);
+      };
+      var map = function (f) {
+        return value(f(o));
+      };
+      var mapError = function (f) {
+        return value(o);
+      };
+      var each = function (f) {
+        f(o);
+      };
+      var bind = function (f) {
+        return f(o);
+      };
+      var fold = function (_, onValue) {
+        return onValue(o);
+      };
+      var exists = function (f) {
+        return f(o);
+      };
+      var forall = function (f) {
+        return f(o);
+      };
+      var toOption = function () {
+        return Option.some(o);
+      };
+      return {
+        is: is,
+        isValue: always,
+        isError: never,
+        getOr: constant(o),
+        getOrThunk: constant(o),
+        getOrDie: constant(o),
+        or: or,
+        orThunk: orThunk,
+        fold: fold,
+        map: map,
+        mapError: mapError,
+        each: each,
+        bind: bind,
+        exists: exists,
+        forall: forall,
+        toOption: toOption
+      };
+    };
+    var error = function (message) {
+      var getOrThunk = function (f) {
+        return f();
+      };
+      var getOrDie = function () {
+        return die(String(message))();
+      };
+      var or = function (opt) {
+        return opt;
+      };
+      var orThunk = function (f) {
+        return f();
+      };
+      var map = function (f) {
+        return error(message);
+      };
+      var mapError = function (f) {
+        return error(f(message));
+      };
+      var bind = function (f) {
+        return error(message);
+      };
+      var fold = function (onError, _) {
+        return onError(message);
+      };
+      return {
+        is: never,
+        isValue: never,
+        isError: always,
+        getOr: identity,
+        getOrThunk: getOrThunk,
+        getOrDie: getOrDie,
+        or: or,
+        orThunk: orThunk,
+        fold: fold,
+        map: map,
+        mapError: mapError,
+        each: noop,
+        bind: bind,
+        exists: never,
+        forall: always,
+        toOption: Option.none
+      };
+    };
+    var fromOption = function (opt, err) {
+      return opt.fold(function () {
+        return error(err);
+      }, value);
+    };
+    var Result = {
+      value: value,
+      error: error,
+      fromOption: fromOption
+    };
+
+    function StyleSheetLoader(document, settings) {
+      if (settings === void 0) {
+        settings = {};
+      }
+      var idCount = 0;
+      var loadedStates = {};
+      var maxLoadTime;
+      maxLoadTime = settings.maxLoadTime || 5000;
+      var appendToHead = function (node) {
+        document.getElementsByTagName('head')[0].appendChild(node);
+      };
+      var load = function (url, loadedCallback, errorCallback) {
+        var link, style, startTime, state;
+        var resolve = function (status) {
+          state.status = status;
+          state.passed = [];
+          state.failed = [];
+          if (link) {
+            link.onload = null;
+            link.onerror = null;
+            link = null;
+          }
+        };
+        var passed = function () {
+          var callbacks = state.passed;
+          var i = callbacks.length;
+          while (i--) {
+            callbacks[i]();
+          }
+          resolve(2);
+        };
+        var failed = function () {
+          var callbacks = state.failed;
+          var i = callbacks.length;
+          while (i--) {
+            callbacks[i]();
+          }
+          resolve(3);
+        };
+        var isOldWebKit = function () {
+          var webKitChunks = domGlobals.navigator.userAgent.match(/WebKit\/(\d*)/);
+          return !!(webKitChunks && parseInt(webKitChunks[1], 10) < 536);
+        };
+        var wait = function (testCallback, waitCallback) {
+          if (!testCallback()) {
+            if (new Date().getTime() - startTime < maxLoadTime) {
+              Delay.setTimeout(waitCallback);
+            } else {
+              failed();
+            }
+          }
+        };
+        var waitForWebKitLinkLoaded = function () {
+          wait(function () {
+            var styleSheets = document.styleSheets;
+            var styleSheet, i = styleSheets.length, owner;
+            while (i--) {
+              styleSheet = styleSheets[i];
+              owner = styleSheet.ownerNode ? styleSheet.ownerNode : styleSheet.owningElement;
+              if (owner && owner.id === link.id) {
+                passed();
+                return true;
+              }
+            }
+          }, waitForWebKitLinkLoaded);
+        };
+        var waitForGeckoLinkLoaded = function () {
+          wait(function () {
+            try {
+              var cssRules = style.sheet.cssRules;
+              passed();
+              return !!cssRules;
+            } catch (ex) {
+            }
+          }, waitForGeckoLinkLoaded);
+        };
+        url = Tools._addCacheSuffix(url);
+        if (!loadedStates[url]) {
+          state = {
+            passed: [],
+            failed: []
+          };
+          loadedStates[url] = state;
+        } else {
+          state = loadedStates[url];
+        }
+        if (loadedCallback) {
+          state.passed.push(loadedCallback);
+        }
+        if (errorCallback) {
+          state.failed.push(errorCallback);
+        }
+        if (state.status === 1) {
+          return;
+        }
+        if (state.status === 2) {
+          passed();
+          return;
+        }
+        if (state.status === 3) {
+          failed();
+          return;
+        }
+        state.status = 1;
+        link = document.createElement('link');
+        link.rel = 'stylesheet';
+        link.type = 'text/css';
+        link.id = 'u' + idCount++;
+        link.async = false;
+        link.defer = false;
+        startTime = new Date().getTime();
+        if (settings.contentCssCors) {
+          link.crossOrigin = 'anonymous';
+        }
+        if ('onload' in link && !isOldWebKit()) {
+          link.onload = waitForWebKitLinkLoaded;
+          link.onerror = failed;
+        } else {
+          if (domGlobals.navigator.userAgent.indexOf('Firefox') > 0) {
+            style = document.createElement('style');
+            style.textContent = '@import "' + url + '"';
+            waitForGeckoLinkLoaded();
+            appendToHead(style);
+            return;
+          }
+          waitForWebKitLinkLoaded();
+        }
+        appendToHead(link);
+        link.href = url;
+      };
+      var loadF = function (url) {
+        return Future.nu(function (resolve) {
+          load(url, compose(resolve, constant(Result.value(url))), compose(resolve, constant(Result.error(url))));
+        });
+      };
+      var unbox = function (result) {
+        return result.fold(identity, identity);
+      };
+      var loadAll = function (urls, success, failure) {
+        par$1(map(urls, loadF)).get(function (result) {
+          var parts = partition(result, function (r) {
+            return r.isValue();
+          });
+          if (parts.fail.length > 0) {
+            failure(parts.fail.map(unbox));
+          } else {
+            success(parts.pass.map(unbox));
+          }
+        });
+      };
+      return {
+        load: load,
+        loadAll: loadAll
+      };
+    }
+
+    var isNodeType = function (type) {
+      return function (node) {
+        return !!node && node.nodeType === type;
+      };
+    };
+    var isElement$1 = isNodeType(1);
+    var matchNodeNames = function (names) {
+      var items = names.toLowerCase().split(' ');
+      return function (node) {
+        var i, name;
+        if (node && node.nodeType) {
+          name = node.nodeName.toLowerCase();
+          for (i = 0; i < items.length; i++) {
+            if (name === items[i]) {
+              return true;
+            }
+          }
+        }
+        return false;
+      };
+    };
+    var matchStyleValues = function (name, values) {
+      var items = values.toLowerCase().split(' ');
+      return function (node) {
+        var i, cssValue;
+        if (isElement$1(node)) {
+          for (i = 0; i < items.length; i++) {
+            var computed = node.ownerDocument.defaultView.getComputedStyle(node, null);
+            cssValue = computed ? computed.getPropertyValue(name) : null;
+            if (cssValue === items[i]) {
+              return true;
+            }
+          }
+        }
+        return false;
+      };
+    };
+    var hasPropValue = function (propName, propValue) {
+      return function (node) {
+        return isElement$1(node) && node[propName] === propValue;
+      };
+    };
+    var hasAttribute = function (attrName, attrValue) {
+      return function (node) {
+        return isElement$1(node) && node.hasAttribute(attrName);
+      };
+    };
+    var hasAttributeValue = function (attrName, attrValue) {
+      return function (node) {
+        return isElement$1(node) && node.getAttribute(attrName) === attrValue;
+      };
+    };
+    var isBogus = function (node) {
+      return isElement$1(node) && node.hasAttribute('data-mce-bogus');
+    };
+    var isBogusAll = function (node) {
+      return isElement$1(node) && node.getAttribute('data-mce-bogus') === 'all';
+    };
+    var isTable = function (node) {
+      return isElement$1(node) && node.tagName === 'TABLE';
+    };
+    var hasContentEditableState = function (value) {
+      return function (node) {
+        if (isElement$1(node)) {
+          if (node.contentEditable === value) {
+            return true;
+          }
+          if (node.getAttribute('data-mce-contenteditable') === value) {
+            return true;
+          }
+        }
+        return false;
+      };
+    };
+    var isText$1 = isNodeType(3);
+    var isComment = isNodeType(8);
+    var isDocument = isNodeType(9);
+    var isDocumentFragment = isNodeType(11);
+    var isBr = matchNodeNames('br');
+    var isContentEditableTrue = hasContentEditableState('true');
+    var isContentEditableFalse = hasContentEditableState('false');
+    var NodeType = {
+      isText: isText$1,
+      isElement: isElement$1,
+      isComment: isComment,
+      isDocument: isDocument,
+      isDocumentFragment: isDocumentFragment,
+      isBr: isBr,
+      isContentEditableTrue: isContentEditableTrue,
+      isContentEditableFalse: isContentEditableFalse,
+      matchNodeNames: matchNodeNames,
+      hasPropValue: hasPropValue,
+      hasAttribute: hasAttribute,
+      hasAttributeValue: hasAttributeValue,
+      matchStyleValues: matchStyleValues,
+      isBogus: isBogus,
+      isBogusAll: isBogusAll,
+      isTable: isTable
+    };
+
+    var TreeWalker = function () {
+      function TreeWalker(startNode, rootNode) {
+        this.node = startNode;
+        this.rootNode = rootNode;
+        this.current = this.current.bind(this);
+        this.next = this.next.bind(this);
+        this.prev = this.prev.bind(this);
+        this.prev2 = this.prev2.bind(this);
+      }
+      TreeWalker.prototype.current = function () {
+        return this.node;
+      };
+      TreeWalker.prototype.next = function (shallow) {
+        this.node = this.findSibling(this.node, 'firstChild', 'nextSibling', shallow);
+        return this.node;
+      };
+      TreeWalker.prototype.prev = function (shallow) {
+        this.node = this.findSibling(this.node, 'lastChild', 'previousSibling', shallow);
+        return this.node;
+      };
+      TreeWalker.prototype.prev2 = function (shallow) {
+        this.node = this.findPreviousNode(this.node, 'lastChild', 'previousSibling', shallow);
+        return this.node;
+      };
+      TreeWalker.prototype.findSibling = function (node, startName, siblingName, shallow) {
+        var sibling, parent;
+        if (node) {
+          if (!shallow && node[startName]) {
+            return node[startName];
+          }
+          if (node !== this.rootNode) {
+            sibling = node[siblingName];
+            if (sibling) {
+              return sibling;
+            }
+            for (parent = node.parentNode; parent && parent !== this.rootNode; parent = parent.parentNode) {
+              sibling = parent[siblingName];
+              if (sibling) {
+                return sibling;
+              }
+            }
+          }
+        }
+      };
+      TreeWalker.prototype.findPreviousNode = function (node, startName, siblingName, shallow) {
+        var sibling, parent, child;
+        if (node) {
+          sibling = node[siblingName];
+          if (this.rootNode && sibling === this.rootNode) {
+            return;
+          }
+          if (sibling) {
+            if (!shallow) {
+              for (child = sibling[startName]; child; child = child[startName]) {
+                if (!child[startName]) {
+                  return child;
+                }
+              }
+            }
+            return sibling;
+          }
+          parent = node.parentNode;
+          if (parent && parent !== this.rootNode) {
+            return parent;
+          }
+        }
+      };
+      return TreeWalker;
+    }();
+
+    var blocks = [
+      'article',
+      'aside',
+      'details',
+      'div',
+      'dt',
+      'figcaption',
+      'footer',
+      'form',
+      'fieldset',
+      'header',
+      'hgroup',
+      'html',
+      'main',
+      'nav',
+      'section',
+      'summary',
+      'body',
+      'p',
+      'dl',
+      'multicol',
+      'dd',
+      'figure',
+      'address',
+      'center',
+      'blockquote',
+      'h1',
+      'h2',
+      'h3',
+      'h4',
+      'h5',
+      'h6',
+      'listing',
+      'xmp',
+      'pre',
+      'plaintext',
+      'menu',
+      'dir',
+      'ul',
+      'ol',
+      'li',
+      'hr',
+      'table',
+      'tbody',
+      'thead',
+      'tfoot',
+      'th',
+      'tr',
+      'td',
+      'caption'
+    ];
+    var voids = [
+      'area',
+      'base',
+      'basefont',
+      'br',
+      'col',
+      'frame',
+      'hr',
+      'img',
+      'input',
+      'isindex',
+      'link',
+      'meta',
+      'param',
+      'embed',
+      'source',
+      'wbr',
+      'track'
+    ];
+    var tableCells = [
+      'td',
+      'th'
+    ];
+    var tableSections = [
+      'thead',
+      'tbody',
+      'tfoot'
+    ];
+    var textBlocks = [
+      'h1',
+      'h2',
+      'h3',
+      'h4',
+      'h5',
+      'h6',
+      'p',
+      'div',
+      'address',
+      'pre',
+      'form',
+      'blockquote',
+      'center',
+      'dir',
+      'fieldset',
+      'header',
+      'footer',
+      'article',
+      'section',
+      'hgroup',
+      'aside',
+      'nav',
+      'figure'
+    ];
+    var headings = [
+      'h1',
+      'h2',
+      'h3',
+      'h4',
+      'h5',
+      'h6'
+    ];
+    var listItems = [
+      'li',
+      'dd',
+      'dt'
+    ];
+    var lists = [
+      'ul',
+      'ol',
+      'dl'
+    ];
+    var wsElements = [
+      'pre',
+      'script',
+      'textarea',
+      'style'
+    ];
+    var lazyLookup = function (items) {
+      var lookup;
+      return function (node) {
+        lookup = lookup ? lookup : mapToObject(items, constant(true));
+        return lookup.hasOwnProperty(name(node));
+      };
+    };
+    var isHeading = lazyLookup(headings);
+    var isBlock = lazyLookup(blocks);
+    var isTable$1 = function (node) {
+      return name(node) === 'table';
+    };
+    var isInline = function (node) {
+      return isElement(node) && !isBlock(node);
+    };
+    var isBr$1 = function (node) {
+      return isElement(node) && name(node) === 'br';
+    };
+    var isTextBlock = lazyLookup(textBlocks);
+    var isList = lazyLookup(lists);
+    var isListItem = lazyLookup(listItems);
+    var isVoid = lazyLookup(voids);
+    var isTableSection = lazyLookup(tableSections);
+    var isTableCell = lazyLookup(tableCells);
+    var isWsPreserveElement = lazyLookup(wsElements);
+
+    var surroundedBySpans = function (node) {
+      var previousIsSpan = node.previousSibling && node.previousSibling.nodeName === 'SPAN';
+      var nextIsSpan = node.nextSibling && node.nextSibling.nodeName === 'SPAN';
+      return previousIsSpan && nextIsSpan;
+    };
+    var isBookmarkNode = function (node) {
+      return node && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';
+    };
+    var trimNode = function (dom, node) {
+      var i, children = node.childNodes;
+      if (NodeType.isElement(node) && isBookmarkNode(node)) {
+        return;
+      }
+      for (i = children.length - 1; i >= 0; i--) {
+        trimNode(dom, children[i]);
+      }
+      if (NodeType.isDocument(node) === false) {
+        if (NodeType.isText(node) && node.nodeValue.length > 0) {
+          var trimmedLength = Tools.trim(node.nodeValue).length;
+          if (dom.isBlock(node.parentNode) || trimmedLength > 0) {
+            return;
+          }
+          if (trimmedLength === 0 && surroundedBySpans(node)) {
+            return;
+          }
+        } else if (NodeType.isElement(node)) {
+          children = node.childNodes;
+          if (children.length === 1 && isBookmarkNode(children[0])) {
+            node.parentNode.insertBefore(children[0], node);
+          }
+          if (children.length || isVoid(Element.fromDom(node))) {
+            return;
+          }
+        }
+        dom.remove(node);
+      }
+      return node;
+    };
+    var TrimNode = { trimNode: trimNode };
+
+    var makeMap$1 = Tools.makeMap;
+    var namedEntities, baseEntities, reverseEntities;
+    var attrsCharsRegExp = /[&<>\"\u0060\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
+    var textCharsRegExp = /[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g;
+    var rawCharsRegExp = /[<>&\"\']/g;
+    var entityRegExp = /&#([a-z0-9]+);?|&([a-z0-9]+);/gi;
+    var asciiMap = {
+      128: '\u20AC',
+      130: '\u201A',
+      131: '\u0192',
+      132: '\u201E',
+      133: '\u2026',
+      134: '\u2020',
+      135: '\u2021',
+      136: '\u02c6',
+      137: '\u2030',
+      138: '\u0160',
+      139: '\u2039',
+      140: '\u0152',
+      142: '\u017d',
+      145: '\u2018',
+      146: '\u2019',
+      147: '\u201C',
+      148: '\u201D',
+      149: '\u2022',
+      150: '\u2013',
+      151: '\u2014',
+      152: '\u02DC',
+      153: '\u2122',
+      154: '\u0161',
+      155: '\u203A',
+      156: '\u0153',
+      158: '\u017e',
+      159: '\u0178'
+    };
+    baseEntities = {
+      '"': '&quot;',
+      '\'': '&#39;',
+      '<': '&lt;',
+      '>': '&gt;',
+      '&': '&amp;',
+      '`': '&#96;'
+    };
+    reverseEntities = {
+      '&lt;': '<',
+      '&gt;': '>',
+      '&amp;': '&',
+      '&quot;': '"',
+      '&apos;': '\''
+    };
+    var nativeDecode = function (text) {
+      var elm;
+      elm = Element.fromTag('div').dom();
+      elm.innerHTML = text;
+      return elm.textContent || elm.innerText || text;
+    };
+    var buildEntitiesLookup = function (items, radix) {
+      var i, chr, entity;
+      var lookup = {};
+      if (items) {
+        items = items.split(',');
+        radix = radix || 10;
+        for (i = 0; i < items.length; i += 2) {
+          chr = String.fromCharCode(parseInt(items[i], radix));
+          if (!baseEntities[chr]) {
+            entity = '&' + items[i + 1] + ';';
+            lookup[chr] = entity;
+            lookup[entity] = chr;
+          }
+        }
+        return lookup;
+      }
+    };
+    namedEntities = buildEntitiesLookup('50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,' + '5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,' + '5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,' + '5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,' + '68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,' + '6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,' + '6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,' + '75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,' + '7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,' + '7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,' + 'sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,' + 'st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,' + 't9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,' + 'tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,' + 'u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,' + '81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,' + '8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,' + '8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,' + '8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,' + '8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,' + 'nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,' + 'rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,' + 'Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,' + '80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,' + '811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro', 32);
+    var encodeRaw = function (text, attr) {
+      return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {
+        return baseEntities[chr] || chr;
+      });
+    };
+    var encodeAllRaw = function (text) {
+      return ('' + text).replace(rawCharsRegExp, function (chr) {
+        return baseEntities[chr] || chr;
+      });
+    };
+    var encodeNumeric = function (text, attr) {
+      return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {
+        if (chr.length > 1) {
+          return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';';
+        }
+        return baseEntities[chr] || '&#' + chr.charCodeAt(0) + ';';
+      });
+    };
+    var encodeNamed = function (text, attr, entities) {
+      entities = entities || namedEntities;
+      return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {
+        return baseEntities[chr] || entities[chr] || chr;
+      });
+    };
+    var getEncodeFunc = function (name, entities) {
+      var entitiesMap = buildEntitiesLookup(entities) || namedEntities;
+      var encodeNamedAndNumeric = function (text, attr) {
+        return text.replace(attr ? attrsCharsRegExp : textCharsRegExp, function (chr) {
+          if (baseEntities[chr] !== undefined) {
+            return baseEntities[chr];
+          }
+          if (entitiesMap[chr] !== undefined) {
+            return entitiesMap[chr];
+          }
+          if (chr.length > 1) {
+            return '&#' + ((chr.charCodeAt(0) - 55296) * 1024 + (chr.charCodeAt(1) - 56320) + 65536) + ';';
+          }
+          return '&#' + chr.charCodeAt(0) + ';';
+        });
+      };
+      var encodeCustomNamed = function (text, attr) {
+        return encodeNamed(text, attr, entitiesMap);
+      };
+      var nameMap = makeMap$1(name.replace(/\+/g, ','));
+      if (nameMap.named && nameMap.numeric) {
+        return encodeNamedAndNumeric;
+      }
+      if (nameMap.named) {
+        if (entities) {
+          return encodeCustomNamed;
+        }
+        return encodeNamed;
+      }
+      if (nameMap.numeric) {
+        return encodeNumeric;
+      }
+      return encodeRaw;
+    };
+    var decode = function (text) {
+      return text.replace(entityRegExp, function (all, numeric) {
+        if (numeric) {
+          if (numeric.charAt(0).toLowerCase() === 'x') {
+            numeric = parseInt(numeric.substr(1), 16);
+          } else {
+            numeric = parseInt(numeric, 10);
+          }
+          if (numeric > 65535) {
+            numeric -= 65536;
+            return String.fromCharCode(55296 + (numeric >> 10), 56320 + (numeric & 1023));
+          }
+          return asciiMap[numeric] || String.fromCharCode(numeric);
+        }
+        return reverseEntities[all] || namedEntities[all] || nativeDecode(all);
+      });
+    };
+    var Entities = {
+      encodeRaw: encodeRaw,
+      encodeAllRaw: encodeAllRaw,
+      encodeNumeric: encodeNumeric,
+      encodeNamed: encodeNamed,
+      getEncodeFunc: getEncodeFunc,
+      decode: decode
+    };
+
+    var mapCache = {}, dummyObj = {};
+    var makeMap$2 = Tools.makeMap, each$4 = Tools.each, extend$1 = Tools.extend, explode$1 = Tools.explode, inArray$1 = Tools.inArray;
+    var split = function (items, delim) {
+      items = Tools.trim(items);
+      return items ? items.split(delim || ' ') : [];
+    };
+    var compileSchema = function (type) {
+      var schema = {};
+      var globalAttributes, blockContent;
+      var phrasingContent, flowContent, html4BlockContent, html4PhrasingContent;
+      var add = function (name, attributes, children) {
+        var ni, attributesOrder, element;
+        var arrayToMap = function (array, obj) {
+          var map = {};
+          var i, l;
+          for (i = 0, l = array.length; i < l; i++) {
+            map[array[i]] = obj || {};
+          }
+          return map;
+        };
+        children = children || [];
+        attributes = attributes || '';
+        if (typeof children === 'string') {
+          children = split(children);
+        }
+        name = split(name);
+        ni = name.length;
+        while (ni--) {
+          attributesOrder = split([
+            globalAttributes,
+            attributes
+          ].join(' '));
+          element = {
+            attributes: arrayToMap(attributesOrder),
+            attributesOrder: attributesOrder,
+            children: arrayToMap(children, dummyObj)
+          };
+          schema[name[ni]] = element;
+        }
+      };
+      var addAttrs = function (name, attributes) {
+        var ni, schemaItem, i, l;
+        name = split(name);
+        ni = name.length;
+        attributes = split(attributes);
+        while (ni--) {
+          schemaItem = schema[name[ni]];
+          for (i = 0, l = attributes.length; i < l; i++) {
+            schemaItem.attributes[attributes[i]] = {};
+            schemaItem.attributesOrder.push(attributes[i]);
+          }
+        }
+      };
+      if (mapCache[type]) {
+        return mapCache[type];
+      }
+      globalAttributes = 'id accesskey class dir lang style tabindex title role';
+      blockContent = 'address blockquote div dl fieldset form h1 h2 h3 h4 h5 h6 hr menu ol p pre table ul';
+      phrasingContent = 'a abbr b bdo br button cite code del dfn em embed i iframe img input ins kbd ' + 'label map noscript object q s samp script select small span strong sub sup ' + 'textarea u var #text #comment';
+      if (type !== 'html4') {
+        globalAttributes += ' contenteditable contextmenu draggable dropzone ' + 'hidden spellcheck translate';
+        blockContent += ' article aside details dialog figure main header footer hgroup section nav';
+        phrasingContent += ' audio canvas command datalist mark meter output picture ' + 'progress time wbr video ruby bdi keygen';
+      }
+      if (type !== 'html5-strict') {
+        globalAttributes += ' xml:lang';
+        html4PhrasingContent = 'acronym applet basefont big font strike tt';
+        phrasingContent = [
+          phrasingContent,
+          html4PhrasingContent
+        ].join(' ');
+        each$4(split(html4PhrasingContent), function (name) {
+          add(name, '', phrasingContent);
+        });
+        html4BlockContent = 'center dir isindex noframes';
+        blockContent = [
+          blockContent,
+          html4BlockContent
+        ].join(' ');
+        flowContent = [
+          blockContent,
+          phrasingContent
+        ].join(' ');
+        each$4(split(html4BlockContent), function (name) {
+          add(name, '', flowContent);
+        });
+      }
+      flowContent = flowContent || [
+        blockContent,
+        phrasingContent
+      ].join(' ');
+      add('html', 'manifest', 'head body');
+      add('head', '', 'base command link meta noscript script style title');
+      add('title hr noscript br');
+      add('base', 'href target');
+      add('link', 'href rel media hreflang type sizes hreflang');
+      add('meta', 'name http-equiv content charset');
+      add('style', 'media type scoped');
+      add('script', 'src async defer type charset');
+      add('body', 'onafterprint onbeforeprint onbeforeunload onblur onerror onfocus ' + 'onhashchange onload onmessage onoffline ononline onpagehide onpageshow ' + 'onpopstate onresize onscroll onstorage onunload', flowContent);
+      add('address dt dd div caption', '', flowContent);
+      add('h1 h2 h3 h4 h5 h6 pre p abbr code var samp kbd sub sup i b u bdo span legend em strong small s cite dfn', '', phrasingContent);
+      add('blockquote', 'cite', flowContent);
+      add('ol', 'reversed start type', 'li');
+      add('ul', '', 'li');
+      add('li', 'value', flowContent);
+      add('dl', '', 'dt dd');
+      add('a', 'href target rel media hreflang type', phrasingContent);
+      add('q', 'cite', phrasingContent);
+      add('ins del', 'cite datetime', flowContent);
+      add('img', 'src sizes srcset alt usemap ismap width height');
+      add('iframe', 'src name width height', flowContent);
+      add('embed', 'src type width height');
+      add('object', 'data type typemustmatch name usemap form width height', [
+        flowContent,
+        'param'
+      ].join(' '));
+      add('param', 'name value');
+      add('map', 'name', [
+        flowContent,
+        'area'
+      ].join(' '));
+      add('area', 'alt coords shape href target rel media hreflang type');
+      add('table', 'border', 'caption colgroup thead tfoot tbody tr' + (type === 'html4' ? ' col' : ''));
+      add('colgroup', 'span', 'col');
+      add('col', 'span');
+      add('tbody thead tfoot', '', 'tr');
+      add('tr', '', 'td th');
+      add('td', 'colspan rowspan headers', flowContent);
+      add('th', 'colspan rowspan headers scope abbr', flowContent);
+      add('form', 'accept-charset action autocomplete enctype method name novalidate target', flowContent);
+      add('fieldset', 'disabled form name', [
+        flowContent,
+        'legend'
+      ].join(' '));
+      add('label', 'form for', phrasingContent);
+      add('input', 'accept alt autocomplete checked dirname disabled form formaction formenctype formmethod formnovalidate ' + 'formtarget height list max maxlength min multiple name pattern readonly required size src step type value width');
+      add('button', 'disabled form formaction formenctype formmethod formnovalidate formtarget name type value', type === 'html4' ? flowContent : phrasingContent);
+      add('select', 'disabled form multiple name required size', 'option optgroup');
+      add('optgroup', 'disabled label', 'option');
+      add('option', 'disabled label selected value');
+      add('textarea', 'cols dirname disabled form maxlength name readonly required rows wrap');
+      add('menu', 'type label', [
+        flowContent,
+        'li'
+      ].join(' '));
+      add('noscript', '', flowContent);
+      if (type !== 'html4') {
+        add('wbr');
+        add('ruby', '', [
+          phrasingContent,
+          'rt rp'
+        ].join(' '));
+        add('figcaption', '', flowContent);
+        add('mark rt rp summary bdi', '', phrasingContent);
+        add('canvas', 'width height', flowContent);
+        add('video', 'src crossorigin poster preload autoplay mediagroup loop ' + 'muted controls width height buffered', [
+          flowContent,
+          'track source'
+        ].join(' '));
+        add('audio', 'src crossorigin preload autoplay mediagroup loop muted controls ' + 'buffered volume', [
+          flowContent,
+          'track source'
+        ].join(' '));
+        add('picture', '', 'img source');
+        add('source', 'src srcset type media sizes');
+        add('track', 'kind src srclang label default');
+        add('datalist', '', [
+          phrasingContent,
+          'option'
+        ].join(' '));
+        add('article section nav aside main header footer', '', flowContent);
+        add('hgroup', '', 'h1 h2 h3 h4 h5 h6');
+        add('figure', '', [
+          flowContent,
+          'figcaption'
+        ].join(' '));
+        add('time', 'datetime', phrasingContent);
+        add('dialog', 'open', flowContent);
+        add('command', 'type label icon disabled checked radiogroup command');
+        add('output', 'for form name', phrasingContent);
+        add('progress', 'value max', phrasingContent);
+        add('meter', 'value min max low high optimum', phrasingContent);
+        add('details', 'open', [
+          flowContent,
+          'summary'
+        ].join(' '));
+        add('keygen', 'autofocus challenge disabled form keytype name');
+      }
+      if (type !== 'html5-strict') {
+        addAttrs('script', 'language xml:space');
+        addAttrs('style', 'xml:space');
+        addAttrs('object', 'declare classid code codebase codetype archive standby align border hspace vspace');
+        addAttrs('embed', 'align name hspace vspace');
+        addAttrs('param', 'valuetype type');
+        addAttrs('a', 'charset name rev shape coords');
+        addAttrs('br', 'clear');
+        addAttrs('applet', 'codebase archive code object alt name width height align hspace vspace');
+        addAttrs('img', 'name longdesc align border hspace vspace');
+        addAttrs('iframe', 'longdesc frameborder marginwidth marginheight scrolling align');
+        addAttrs('font basefont', 'size color face');
+        addAttrs('input', 'usemap align');
+        addAttrs('select', 'onchange');
+        addAttrs('textarea');
+        addAttrs('h1 h2 h3 h4 h5 h6 div p legend caption', 'align');
+        addAttrs('ul', 'type compact');
+        addAttrs('li', 'type');
+        addAttrs('ol dl menu dir', 'compact');
+        addAttrs('pre', 'width xml:space');
+        addAttrs('hr', 'align noshade size width');
+        addAttrs('isindex', 'prompt');
+        addAttrs('table', 'summary width frame rules cellspacing cellpadding align bgcolor');
+        addAttrs('col', 'width align char charoff valign');
+        addAttrs('colgroup', 'width align char charoff valign');
+        addAttrs('thead', 'align char charoff valign');
+        addAttrs('tr', 'align char charoff valign bgcolor');
+        addAttrs('th', 'axis align char charoff valign nowrap bgcolor width height');
+        addAttrs('form', 'accept');
+        addAttrs('td', 'abbr axis scope align char charoff valign nowrap bgcolor width height');
+        addAttrs('tfoot', 'align char charoff valign');
+        addAttrs('tbody', 'align char charoff valign');
+        addAttrs('area', 'nohref');
+        addAttrs('body', 'background bgcolor text link vlink alink');
+      }
+      if (type !== 'html4') {
+        addAttrs('input button select textarea', 'autofocus');
+        addAttrs('input textarea', 'placeholder');
+        addAttrs('a', 'download');
+        addAttrs('link script img', 'crossorigin');
+        addAttrs('iframe', 'sandbox seamless allowfullscreen');
+      }
+      each$4(split('a form meter progress dfn'), function (name) {
+        if (schema[name]) {
+          delete schema[name].children[name];
+        }
+      });
+      delete schema.caption.children.table;
+      delete schema.script;
+      mapCache[type] = schema;
+      return schema;
+    };
+    var compileElementMap = function (value, mode) {
+      var styles;
+      if (value) {
+        styles = {};
+        if (typeof value === 'string') {
+          value = { '*': value };
+        }
+        each$4(value, function (value, key) {
+          styles[key] = styles[key.toUpperCase()] = mode === 'map' ? makeMap$2(value, /[, ]/) : explode$1(value, /[, ]/);
+        });
+      }
+      return styles;
+    };
+    function Schema(settings) {
+      var elements = {};
+      var children = {};
+      var patternElements = [];
+      var validStyles;
+      var invalidStyles;
+      var schemaItems;
+      var whiteSpaceElementsMap, selfClosingElementsMap, shortEndedElementsMap, boolAttrMap, validClasses;
+      var blockElementsMap, nonEmptyElementsMap, moveCaretBeforeOnEnterElementsMap, textBlockElementsMap, textInlineElementsMap;
+      var customElementsMap = {}, specialElements = {};
+      var createLookupTable = function (option, defaultValue, extendWith) {
+        var value = settings[option];
+        if (!value) {
+          value = mapCache[option];
+          if (!value) {
+            value = makeMap$2(defaultValue, ' ', makeMap$2(defaultValue.toUpperCase(), ' '));
+            value = extend$1(value, extendWith);
+            mapCache[option] = value;
+          }
+        } else {
+          value = makeMap$2(value, /[, ]/, makeMap$2(value.toUpperCase(), /[, ]/));
+        }
+        return value;
+      };
+      settings = settings || {};
+      schemaItems = compileSchema(settings.schema);
+      if (settings.verify_html === false) {
+        settings.valid_elements = '*[*]';
+      }
+      validStyles = compileElementMap(settings.valid_styles);
+      invalidStyles = compileElementMap(settings.invalid_styles, 'map');
+      validClasses = compileElementMap(settings.valid_classes, 'map');
+      whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea video audio iframe object code');
+      selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr');
+      shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link ' + 'meta param embed source wbr track');
+      boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize ' + 'noshade nowrap readonly selected autoplay loop controls');
+      nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object ' + 'script pre code', shortEndedElementsMap);
+      moveCaretBeforeOnEnterElementsMap = createLookupTable('move_caret_before_on_enter_elements', 'table', nonEmptyElementsMap);
+      textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' + 'blockquote center dir fieldset header footer article section hgroup aside main nav figure');
+      blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' + 'th tr td li ol ul caption dl dt dd noscript menu isindex option ' + 'datalist select optgroup figcaption details summary', textBlockElementsMap);
+      textInlineElementsMap = createLookupTable('text_inline_elements', 'span strong b em i font strike u var cite ' + 'dfn code mark q sup sub samp');
+      each$4((settings.special || 'script noscript noframes noembed title style textarea xmp').split(' '), function (name) {
+        specialElements[name] = new RegExp('</' + name + '[^>]*>', 'gi');
+      });
+      var patternToRegExp = function (str) {
+        return new RegExp('^' + str.replace(/([?+*])/g, '.$1') + '$');
+      };
+      var addValidElements = function (validElements) {
+        var ei, el, ai, al, matches, element, attr, attrData, elementName, attrName, attrType, attributes, attributesOrder, prefix, outputName, globalAttributes, globalAttributesOrder, key, value;
+        var elementRuleRegExp = /^([#+\-])?([^\[!\/]+)(?:\/([^\[!]+))?(?:(!?)\[([^\]]+)\])?$/, attrRuleRegExp = /^([!\-])?(\w+[\\:]:\w+|[^=:<]+)?(?:([=:<])(.*))?$/, hasPatternsRegExp = /[*?+]/;
+        if (validElements) {
+          validElements = split(validElements, ',');
+          if (elements['@']) {
+            globalAttributes = elements['@'].attributes;
+            globalAttributesOrder = elements['@'].attributesOrder;
+          }
+          for (ei = 0, el = validElements.length; ei < el; ei++) {
+            matches = elementRuleRegExp.exec(validElements[ei]);
+            if (matches) {
+              prefix = matches[1];
+              elementName = matches[2];
+              outputName = matches[3];
+              attrData = matches[5];
+              attributes = {};
+              attributesOrder = [];
+              element = {
+                attributes: attributes,
+                attributesOrder: attributesOrder
+              };
+              if (prefix === '#') {
+                element.paddEmpty = true;
+              }
+              if (prefix === '-') {
+                element.removeEmpty = true;
+              }
+              if (matches[4] === '!') {
+                element.removeEmptyAttrs = true;
+              }
+              if (globalAttributes) {
+                for (key in globalAttributes) {
+                  attributes[key] = globalAttributes[key];
+                }
+                attributesOrder.push.apply(attributesOrder, globalAttributesOrder);
+              }
+              if (attrData) {
+                attrData = split(attrData, '|');
+                for (ai = 0, al = attrData.length; ai < al; ai++) {
+                  matches = attrRuleRegExp.exec(attrData[ai]);
+                  if (matches) {
+                    attr = {};
+                    attrType = matches[1];
+                    attrName = matches[2].replace(/[\\:]:/g, ':');
+                    prefix = matches[3];
+                    value = matches[4];
+                    if (attrType === '!') {
+                      element.attributesRequired = element.attributesRequired || [];
+                      element.attributesRequired.push(attrName);
+                      attr.required = true;
+                    }
+                    if (attrType === '-') {
+                      delete attributes[attrName];
+                      attributesOrder.splice(inArray$1(attributesOrder, attrName), 1);
+                      continue;
+                    }
+                    if (prefix) {
+                      if (prefix === '=') {
+                        element.attributesDefault = element.attributesDefault || [];
+                        element.attributesDefault.push({
+                          name: attrName,
+                          value: value
+                        });
+                        attr.defaultValue = value;
+                      }
+                      if (prefix === ':') {
+                        element.attributesForced = element.attributesForced || [];
+                        element.attributesForced.push({
+                          name: attrName,
+                          value: value
+                        });
+                        attr.forcedValue = value;
+                      }
+                      if (prefix === '<') {
+                        attr.validValues = makeMap$2(value, '?');
+                      }
+                    }
+                    if (hasPatternsRegExp.test(attrName)) {
+                      element.attributePatterns = element.attributePatterns || [];
+                      attr.pattern = patternToRegExp(attrName);
+                      element.attributePatterns.push(attr);
+                    } else {
+                      if (!attributes[attrName]) {
+                        attributesOrder.push(attrName);
+                      }
+                      attributes[attrName] = attr;
+                    }
+                  }
+                }
+              }
+              if (!globalAttributes && elementName === '@') {
+                globalAttributes = attributes;
+                globalAttributesOrder = attributesOrder;
+              }
+              if (outputName) {
+                element.outputName = elementName;
+                elements[outputName] = element;
+              }
+              if (hasPatternsRegExp.test(elementName)) {
+                element.pattern = patternToRegExp(elementName);
+                patternElements.push(element);
+              } else {
+                elements[elementName] = element;
+              }
+            }
+          }
+        }
+      };
+      var setValidElements = function (validElements) {
+        elements = {};
+        patternElements = [];
+        addValidElements(validElements);
+        each$4(schemaItems, function (element, name) {
+          children[name] = element.children;
+        });
+      };
+      var addCustomElements = function (customElements) {
+        var customElementRegExp = /^(~)?(.+)$/;
+        if (customElements) {
+          mapCache.text_block_elements = mapCache.block_elements = null;
+          each$4(split(customElements, ','), function (rule) {
+            var matches = customElementRegExp.exec(rule), inline = matches[1] === '~', cloneName = inline ? 'span' : 'div', name = matches[2];
+            children[name] = children[cloneName];
+            customElementsMap[name] = cloneName;
+            if (!inline) {
+              blockElementsMap[name.toUpperCase()] = {};
+              blockElementsMap[name] = {};
+            }
+            if (!elements[name]) {
+              var customRule = elements[cloneName];
+              customRule = extend$1({}, customRule);
+              delete customRule.removeEmptyAttrs;
+              delete customRule.removeEmpty;
+              elements[name] = customRule;
+            }
+            each$4(children, function (element, elmName) {
+              if (element[cloneName]) {
+                children[elmName] = element = extend$1({}, children[elmName]);
+                element[name] = element[cloneName];
+              }
+            });
+          });
+        }
+      };
+      var addValidChildren = function (validChildren) {
+        var childRuleRegExp = /^([+\-]?)(\w+)\[([^\]]+)\]$/;
+        mapCache[settings.schema] = null;
+        if (validChildren) {
+          each$4(split(validChildren, ','), function (rule) {
+            var matches = childRuleRegExp.exec(rule);
+            var parent, prefix;
+            if (matches) {
+              prefix = matches[1];
+              if (prefix) {
+                parent = children[matches[2]];
+              } else {
+                parent = children[matches[2]] = { '#comment': {} };
+              }
+              parent = children[matches[2]];
+              each$4(split(matches[3], '|'), function (child) {
+                if (prefix === '-') {
+                  delete parent[child];
+                } else {
+                  parent[child] = {};
+                }
+              });
+            }
+          });
+        }
+      };
+      var getElementRule = function (name) {
+        var element = elements[name], i;
+        if (element) {
+          return element;
+        }
+        i = patternElements.length;
+        while (i--) {
+          element = patternElements[i];
+          if (element.pattern.test(name)) {
+            return element;
+          }
+        }
+      };
+      if (!settings.valid_elements) {
+        each$4(schemaItems, function (element, name) {
+          elements[name] = {
+            attributes: element.attributes,
+            attributesOrder: element.attributesOrder
+          };
+          children[name] = element.children;
+        });
+        if (settings.schema !== 'html5') {
+          each$4(split('strong/b em/i'), function (item) {
+            item = split(item, '/');
+            elements[item[1]].outputName = item[0];
+          });
+        }
+        each$4(split('ol ul sub sup blockquote span font a table tbody tr strong em b i'), function (name) {
+          if (elements[name]) {
+            elements[name].removeEmpty = true;
+          }
+        });
+        each$4(split('p h1 h2 h3 h4 h5 h6 th td pre div address caption li'), function (name) {
+          elements[name].paddEmpty = true;
+        });
+        each$4(split('span'), function (name) {
+          elements[name].removeEmptyAttrs = true;
+        });
+      } else {
+        setValidElements(settings.valid_elements);
+      }
+      addCustomElements(settings.custom_elements);
+      addValidChildren(settings.valid_children);
+      addValidElements(settings.extended_valid_elements);
+      addValidChildren('+ol[ul|ol],+ul[ul|ol]');
+      each$4({
+        dd: 'dl',
+        dt: 'dl',
+        li: 'ul ol',
+        td: 'tr',
+        th: 'tr',
+        tr: 'tbody thead tfoot',
+        tbody: 'table',
+        thead: 'table',
+        tfoot: 'table',
+        legend: 'fieldset',
+        area: 'map',
+        param: 'video audio object'
+      }, function (parents, item) {
+        if (elements[item]) {
+          elements[item].parentsRequired = split(parents);
+        }
+      });
+      if (settings.invalid_elements) {
+        each$4(explode$1(settings.invalid_elements), function (item) {
+          if (elements[item]) {
+            delete elements[item];
+          }
+        });
+      }
+      if (!getElementRule('span')) {
+        addValidElements('span[!data-mce-type|*]');
+      }
+      var getValidStyles = function () {
+        return validStyles;
+      };
+      var getInvalidStyles = function () {
+        return invalidStyles;
+      };
+      var getValidClasses = function () {
+        return validClasses;
+      };
+      var getBoolAttrs = function () {
+        return boolAttrMap;
+      };
+      var getBlockElements = function () {
+        return blockElementsMap;
+      };
+      var getTextBlockElements = function () {
+        return textBlockElementsMap;
+      };
+      var getTextInlineElements = function () {
+        return textInlineElementsMap;
+      };
+      var getShortEndedElements = function () {
+        return shortEndedElementsMap;
+      };
+      var getSelfClosingElements = function () {
+        return selfClosingElementsMap;
+      };
+      var getNonEmptyElements = function () {
+        return nonEmptyElementsMap;
+      };
+      var getMoveCaretBeforeOnEnterElements = function () {
+        return moveCaretBeforeOnEnterElementsMap;
+      };
+      var getWhiteSpaceElements = function () {
+        return whiteSpaceElementsMap;
+      };
+      var getSpecialElements = function () {
+        return specialElements;
+      };
+      var isValidChild = function (name, child) {
+        var parent = children[name.toLowerCase()];
+        return !!(parent && parent[child.toLowerCase()]);
+      };
+      var isValid = function (name, attr) {
+        var attrPatterns, i;
+        var rule = getElementRule(name);
+        if (rule) {
+          if (attr) {
+            if (rule.attributes[attr]) {
+              return true;
+            }
+            attrPatterns = rule.attributePatterns;
+            if (attrPatterns) {
+              i = attrPatterns.length;
+              while (i--) {
+                if (attrPatterns[i].pattern.test(name)) {
+                  return true;
+                }
+              }
+            }
+          } else {
+            return true;
+          }
+        }
+        return false;
+      };
+      var getCustomElements = function () {
+        return customElementsMap;
+      };
+      return {
+        children: children,
+        elements: elements,
+        getValidStyles: getValidStyles,
+        getValidClasses: getValidClasses,
+        getBlockElements: getBlockElements,
+        getInvalidStyles: getInvalidStyles,
+        getShortEndedElements: getShortEndedElements,
+        getTextBlockElements: getTextBlockElements,
+        getTextInlineElements: getTextInlineElements,
+        getBoolAttrs: getBoolAttrs,
+        getElementRule: getElementRule,
+        getSelfClosingElements: getSelfClosingElements,
+        getNonEmptyElements: getNonEmptyElements,
+        getMoveCaretBeforeOnEnterElements: getMoveCaretBeforeOnEnterElements,
+        getWhiteSpaceElements: getWhiteSpaceElements,
+        getSpecialElements: getSpecialElements,
+        isValidChild: isValidChild,
+        isValid: isValid,
+        getCustomElements: getCustomElements,
+        addValidElements: addValidElements,
+        setValidElements: setValidElements,
+        addCustomElements: addCustomElements,
+        addValidChildren: addValidChildren
+      };
+    }
+
+    var toHex = function (match, r, g, b) {
+      var hex = function (val) {
+        val = parseInt(val, 10).toString(16);
+        return val.length > 1 ? val : '0' + val;
+      };
+      return '#' + hex(r) + hex(g) + hex(b);
+    };
+    var Styles = function (settings, schema) {
+      var rgbRegExp = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi;
+      var urlOrStrRegExp = /(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi;
+      var styleRegExp = /\s*([^:]+):\s*([^;]+);?/g;
+      var trimRightRegExp = /\s+$/;
+      var i;
+      var encodingLookup = {};
+      var encodingItems;
+      var validStyles;
+      var invalidStyles;
+      var invisibleChar = '\uFEFF';
+      settings = settings || {};
+      if (schema) {
+        validStyles = schema.getValidStyles();
+        invalidStyles = schema.getInvalidStyles();
+      }
+      encodingItems = ('\\" \\\' \\; \\: ; : ' + invisibleChar).split(' ');
+      for (i = 0; i < encodingItems.length; i++) {
+        encodingLookup[encodingItems[i]] = invisibleChar + i;
+        encodingLookup[invisibleChar + i] = encodingItems[i];
+      }
+      return {
+        toHex: function (color) {
+          return color.replace(rgbRegExp, toHex);
+        },
+        parse: function (css) {
+          var styles = {};
+          var matches, name, value, isEncoded;
+          var urlConverter = settings.url_converter;
+          var urlConverterScope = settings.url_converter_scope || this;
+          var compress = function (prefix, suffix, noJoin) {
+            var top, right, bottom, left;
+            top = styles[prefix + '-top' + suffix];
+            if (!top) {
+              return;
+            }
+            right = styles[prefix + '-right' + suffix];
+            if (!right) {
+              return;
+            }
+            bottom = styles[prefix + '-bottom' + suffix];
+            if (!bottom) {
+              return;
+            }
+            left = styles[prefix + '-left' + suffix];
+            if (!left) {
+              return;
+            }
+            var box = [
+              top,
+              right,
+              bottom,
+              left
+            ];
+            i = box.length - 1;
+            while (i--) {
+              if (box[i] !== box[i + 1]) {
+                break;
+              }
+            }
+            if (i > -1 && noJoin) {
+              return;
+            }
+            styles[prefix + suffix] = i === -1 ? box[0] : box.join(' ');
+            delete styles[prefix + '-top' + suffix];
+            delete styles[prefix + '-right' + suffix];
+            delete styles[prefix + '-bottom' + suffix];
+            delete styles[prefix + '-left' + suffix];
+          };
+          var canCompress = function (key) {
+            var value = styles[key], i;
+            if (!value) {
+              return;
+            }
+            value = value.split(' ');
+            i = value.length;
+            while (i--) {
+              if (value[i] !== value[0]) {
+                return false;
+              }
+            }
+            styles[key] = value[0];
+            return true;
+          };
+          var compress2 = function (target, a, b, c) {
+            if (!canCompress(a)) {
+              return;
+            }
+            if (!canCompress(b)) {
+              return;
+            }
+            if (!canCompress(c)) {
+              return;
+            }
+            styles[target] = styles[a] + ' ' + styles[b] + ' ' + styles[c];
+            delete styles[a];
+            delete styles[b];
+            delete styles[c];
+          };
+          var encode = function (str) {
+            isEncoded = true;
+            return encodingLookup[str];
+          };
+          var decode = function (str, keepSlashes) {
+            if (isEncoded) {
+              str = str.replace(/\uFEFF[0-9]/g, function (str) {
+                return encodingLookup[str];
+              });
+            }
+            if (!keepSlashes) {
+              str = str.replace(/\\([\'\";:])/g, '$1');
+            }
+            return str;
+          };
+          var decodeSingleHexSequence = function (escSeq) {
+            return String.fromCharCode(parseInt(escSeq.slice(1), 16));
+          };
+          var decodeHexSequences = function (value) {
+            return value.replace(/\\[0-9a-f]+/gi, decodeSingleHexSequence);
+          };
+          var processUrl = function (match, url, url2, url3, str, str2) {
+            str = str || str2;
+            if (str) {
+              str = decode(str);
+              return '\'' + str.replace(/\'/g, '\\\'') + '\'';
+            }
+            url = decode(url || url2 || url3);
+            if (!settings.allow_script_urls) {
+              var scriptUrl = url.replace(/[\s\r\n]+/g, '');
+              if (/(java|vb)script:/i.test(scriptUrl)) {
+                return '';
+              }
+              if (!settings.allow_svg_data_urls && /^data:image\/svg/i.test(scriptUrl)) {
+                return '';
+              }
+            }
+            if (urlConverter) {
+              url = urlConverter.call(urlConverterScope, url, 'style');
+            }
+            return 'url(\'' + url.replace(/\'/g, '\\\'') + '\')';
+          };
+          if (css) {
+            css = css.replace(/[\u0000-\u001F]/g, '');
+            css = css.replace(/\\[\"\';:\uFEFF]/g, encode).replace(/\"[^\"]+\"|\'[^\']+\'/g, function (str) {
+              return str.replace(/[;:]/g, encode);
+            });
+            while (matches = styleRegExp.exec(css)) {
+              styleRegExp.lastIndex = matches.index + matches[0].length;
+              name = matches[1].replace(trimRightRegExp, '').toLowerCase();
+              value = matches[2].replace(trimRightRegExp, '');
+              if (name && value) {
+                name = decodeHexSequences(name);
+                value = decodeHexSequences(value);
+                if (name.indexOf(invisibleChar) !== -1 || name.indexOf('"') !== -1) {
+                  continue;
+                }
+                if (!settings.allow_script_urls && (name === 'behavior' || /expression\s*\(|\/\*|\*\//.test(value))) {
+                  continue;
+                }
+                if (name === 'font-weight' && value === '700') {
+                  value = 'bold';
+                } else if (name === 'color' || name === 'background-color') {
+                  value = value.toLowerCase();
+                }
+                value = value.replace(rgbRegExp, toHex);
+                value = value.replace(urlOrStrRegExp, processUrl);
+                styles[name] = isEncoded ? decode(value, true) : value;
+              }
+            }
+            compress('border', '', true);
+            compress('border', '-width');
+            compress('border', '-color');
+            compress('border', '-style');
+            compress('padding', '');
+            compress('margin', '');
+            compress2('border', 'border-width', 'border-style', 'border-color');
+            if (styles.border === 'medium none') {
+              delete styles.border;
+            }
+            if (styles['border-image'] === 'none') {
+              delete styles['border-image'];
+            }
+          }
+          return styles;
+        },
+        serialize: function (styles, elementName) {
+          var css = '', name, value;
+          var serializeStyles = function (name) {
+            var styleList, i, l, value;
+            styleList = validStyles[name];
+            if (styleList) {
+              for (i = 0, l = styleList.length; i < l; i++) {
+                name = styleList[i];
+                value = styles[name];
+                if (value) {
+                  css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';
+                }
+              }
+            }
+          };
+          var isValid = function (name, elementName) {
+            var styleMap;
+            styleMap = invalidStyles['*'];
+            if (styleMap && styleMap[name]) {
+              return false;
+            }
+            styleMap = invalidStyles[elementName];
+            if (styleMap && styleMap[name]) {
+              return false;
+            }
+            return true;
+          };
+          if (elementName && validStyles) {
+            serializeStyles('*');
+            serializeStyles(elementName);
+          } else {
+            for (name in styles) {
+              value = styles[name];
+              if (value && (!invalidStyles || isValid(name, elementName))) {
+                css += (css.length > 0 ? ' ' : '') + name + ': ' + value + ';';
+              }
+            }
+          }
+          return css;
+        }
+      };
+    };
+
+    var each$5 = Tools.each;
+    var grep$1 = Tools.grep;
+    var isIE = Env.ie;
+    var simpleSelectorRe = /^([a-z0-9],?)+$/i;
+    var whiteSpaceRegExp$2 = /^[ \t\r\n]*$/;
+    var setupAttrHooks = function (styles, settings, getContext) {
+      var keepValues = settings.keep_values;
+      var keepUrlHook = {
+        set: function ($elm, value, name) {
+          if (settings.url_converter) {
+            value = settings.url_converter.call(settings.url_converter_scope || getContext(), value, name, $elm[0]);
+          }
+          $elm.attr('data-mce-' + name, value).attr(name, value);
+        },
+        get: function ($elm, name) {
+          return $elm.attr('data-mce-' + name) || $elm.attr(name);
+        }
+      };
+      var attrHooks = {
+        style: {
+          set: function ($elm, value) {
+            if (value !== null && typeof value === 'object') {
+              $elm.css(value);
+              return;
+            }
+            if (keepValues) {
+              $elm.attr('data-mce-style', value);
+            }
+            $elm.attr('style', value);
+          },
+          get: function ($elm) {
+            var value = $elm.attr('data-mce-style') || $elm.attr('style');
+            value = styles.serialize(styles.parse(value), $elm[0].nodeName);
+            return value;
+          }
+        }
+      };
+      if (keepValues) {
+        attrHooks.href = attrHooks.src = keepUrlHook;
+      }
+      return attrHooks;
+    };
+    var updateInternalStyleAttr = function (styles, $elm) {
+      var rawValue = $elm.attr('style');
+      var value = styles.serialize(styles.parse(rawValue), $elm[0].nodeName);
+      if (!value) {
+        value = null;
+      }
+      $elm.attr('data-mce-style', value);
+    };
+    var findNodeIndex = function (node, normalized) {
+      var idx = 0, lastNodeType, nodeType;
+      if (node) {
+        for (lastNodeType = node.nodeType, node = node.previousSibling; node; node = node.previousSibling) {
+          nodeType = node.nodeType;
+          if (normalized && nodeType === 3) {
+            if (nodeType === lastNodeType || !node.nodeValue.length) {
+              continue;
+            }
+          }
+          idx++;
+          lastNodeType = nodeType;
+        }
+      }
+      return idx;
+    };
+    function DOMUtils(doc, settings) {
+      var _this = this;
+      if (settings === void 0) {
+        settings = {};
+      }
+      var attrHooks;
+      var addedStyles = {};
+      var win = domGlobals.window;
+      var files = {};
+      var counter = 0;
+      var stdMode = true;
+      var boxModel = true;
+      var styleSheetLoader = StyleSheetLoader(doc, { contentCssCors: settings.contentCssCors });
+      var boundEvents = [];
+      var schema = settings.schema ? settings.schema : Schema({});
+      var styles = Styles({
+        url_converter: settings.url_converter,
+        url_converter_scope: settings.url_converter_scope
+      }, settings.schema);
+      var events = settings.ownEvents ? new EventUtils() : EventUtils.Event;
+      var blockElementsMap = schema.getBlockElements();
+      var $ = DomQuery.overrideDefaults(function () {
+        return {
+          context: doc,
+          element: self.getRoot()
+        };
+      });
+      var isBlock = function (node) {
+        if (typeof node === 'string') {
+          return !!blockElementsMap[node];
+        } else if (node) {
+          var type = node.nodeType;
+          if (type) {
+            return !!(type === 1 && blockElementsMap[node.nodeName]);
+          }
+        }
+        return false;
+      };
+      var get = function (elm) {
+        if (elm && doc && typeof elm === 'string') {
+          var node = doc.getElementById(elm);
+          if (node && node.id !== elm) {
+            return doc.getElementsByName(elm)[1];
+          } else {
+            return node;
+          }
+        }
+        return elm;
+      };
+      var $$ = function (elm) {
+        if (typeof elm === 'string') {
+          elm = get(elm);
+        }
+        return $(elm);
+      };
+      var getAttrib = function (elm, name, defaultVal) {
+        var hook, value;
+        var $elm = $$(elm);
+        if ($elm.length) {
+          hook = attrHooks[name];
+          if (hook && hook.get) {
+            value = hook.get($elm, name);
+          } else {
+            value = $elm.attr(name);
+          }
+        }
+        if (typeof value === 'undefined') {
+          value = defaultVal || '';
+        }
+        return value;
+      };
+      var getAttribs = function (elm) {
+        var node = get(elm);
+        if (!node) {
+          return [];
+        }
+        return node.attributes;
+      };
+      var setAttrib = function (elm, name, value) {
+        var originalValue, hook;
+        if (value === '') {
+          value = null;
+        }
+        var $elm = $$(elm);
+        originalValue = $elm.attr(name);
+        if (!$elm.length) {
+          return;
+        }
+        hook = attrHooks[name];
+        if (hook && hook.set) {
+          hook.set($elm, value, name);
+        } else {
+          $elm.attr(name, value);
+        }
+        if (originalValue !== value && settings.onSetAttrib) {
+          settings.onSetAttrib({
+            attrElm: $elm,
+            attrName: name,
+            attrValue: value
+          });
+        }
+      };
+      var clone = function (node, deep) {
+        if (!isIE || node.nodeType !== 1 || deep) {
+          return node.cloneNode(deep);
+        }
+        if (!deep) {
+          var clone_1 = doc.createElement(node.nodeName);
+          each$5(getAttribs(node), function (attr) {
+            setAttrib(clone_1, attr.nodeName, getAttrib(node, attr.nodeName));
+          });
+          return clone_1;
+        }
+        return null;
+      };
+      var getRoot = function () {
+        return settings.root_element || doc.body;
+      };
+      var getViewPort = function (argWin) {
+        var actWin = !argWin ? win : argWin;
+        var doc = actWin.document;
+        var rootElm = doc.documentElement;
+        return {
+          x: actWin.pageXOffset || rootElm.scrollLeft,
+          y: actWin.pageYOffset || rootElm.scrollTop,
+          w: actWin.innerWidth || rootElm.clientWidth,
+          h: actWin.innerHeight || rootElm.clientHeight
+        };
+      };
+      var getPos = function (elm, rootElm) {
+        return Position.getPos(doc.body, get(elm), rootElm);
+      };
+      var setStyle = function (elm, name, value) {
+        var $elm = isString(name) ? $$(elm).css(name, value) : $$(elm).css(name);
+        if (settings.update_styles) {
+          updateInternalStyleAttr(styles, $elm);
+        }
+      };
+      var setStyles = function (elm, stylesArg) {
+        var $elm = $$(elm).css(stylesArg);
+        if (settings.update_styles) {
+          updateInternalStyleAttr(styles, $elm);
+        }
+      };
+      var getStyle = function (elm, name, computed) {
+        var $elm = $$(elm);
+        if (computed) {
+          return $elm.css(name);
+        }
+        name = name.replace(/-(\D)/g, function (a, b) {
+          return b.toUpperCase();
+        });
+        if (name === 'float') {
+          name = Env.ie && Env.ie < 12 ? 'styleFloat' : 'cssFloat';
+        }
+        return $elm[0] && $elm[0].style ? $elm[0].style[name] : undefined;
+      };
+      var getSize = function (elm) {
+        var w, h;
+        elm = get(elm);
+        w = getStyle(elm, 'width');
+        h = getStyle(elm, 'height');
+        if (w.indexOf('px') === -1) {
+          w = 0;
+        }
+        if (h.indexOf('px') === -1) {
+          h = 0;
+        }
+        return {
+          w: parseInt(w, 10) || elm.offsetWidth || elm.clientWidth,
+          h: parseInt(h, 10) || elm.offsetHeight || elm.clientHeight
+        };
+      };
+      var getRect = function (elm) {
+        var pos, size;
+        elm = get(elm);
+        pos = getPos(elm);
+        size = getSize(elm);
+        return {
+          x: pos.x,
+          y: pos.y,
+          w: size.w,
+          h: size.h
+        };
+      };
+      var is = function (elm, selector) {
+        var i;
+        if (!elm) {
+          return false;
+        }
+        if (!Array.isArray(elm)) {
+          if (selector === '*') {
+            return elm.nodeType === 1;
+          }
+          if (simpleSelectorRe.test(selector)) {
+            var selectors = selector.toLowerCase().split(/,/);
+            var elmName = elm.nodeName.toLowerCase();
+            for (i = selectors.length - 1; i >= 0; i--) {
+              if (selectors[i] === elmName) {
+                return true;
+              }
+            }
+            return false;
+          }
+          if (elm.nodeType && elm.nodeType !== 1) {
+            return false;
+          }
+        }
+        var elms = !Array.isArray(elm) ? [elm] : elm;
+        return Sizzle(selector, elms[0].ownerDocument || elms[0], null, elms).length > 0;
+      };
+      var getParents = function (elm, selector, root, collect) {
+        var result = [];
+        var selectorVal;
+        var node = get(elm);
+        collect = collect === undefined;
+        root = root || (getRoot().nodeName !== 'BODY' ? getRoot().parentNode : null);
+        if (Tools.is(selector, 'string')) {
+          selectorVal = selector;
+          if (selector === '*') {
+            selector = function (node) {
+              return node.nodeType === 1;
+            };
+          } else {
+            selector = function (node) {
+              return is(node, selectorVal);
+            };
+          }
+        }
+        while (node) {
+          if (node === root || !node.nodeType || node.nodeType === 9) {
+            break;
+          }
+          if (!selector || typeof selector === 'function' && selector(node)) {
+            if (collect) {
+              result.push(node);
+            } else {
+              return [node];
+            }
+          }
+          node = node.parentNode;
+        }
+        return collect ? result : null;
+      };
+      var getParent = function (node, selector, root) {
+        var parents = getParents(node, selector, root, false);
+        return parents && parents.length > 0 ? parents[0] : null;
+      };
+      var _findSib = function (node, selector, name) {
+        var func = selector;
+        if (node) {
+          if (typeof selector === 'string') {
+            func = function (node) {
+              return is(node, selector);
+            };
+          }
+          for (node = node[name]; node; node = node[name]) {
+            if (typeof func === 'function' && func(node)) {
+              return node;
+            }
+          }
+        }
+        return null;
+      };
+      var getNext = function (node, selector) {
+        return _findSib(node, selector, 'nextSibling');
+      };
+      var getPrev = function (node, selector) {
+        return _findSib(node, selector, 'previousSibling');
+      };
+      var select = function (selector, scope) {
+        return Sizzle(selector, get(scope) || settings.root_element || doc, []);
+      };
+      var run = function (elm, func, scope) {
+        var result;
+        var node = typeof elm === 'string' ? get(elm) : elm;
+        if (!node) {
+          return false;
+        }
+        if (Tools.isArray(node) && (node.length || node.length === 0)) {
+          result = [];
+          each$5(node, function (elm, i) {
+            if (elm) {
+              if (typeof elm === 'string') {
+                elm = get(elm);
+              }
+              result.push(func.call(scope, elm, i));
+            }
+          });
+          return result;
+        }
+        var context = scope ? scope : _this;
+        return func.call(context, node);
+      };
+      var setAttribs = function (elm, attrs) {
+        $$(elm).each(function (i, node) {
+          each$5(attrs, function (value, name) {
+            setAttrib(node, name, value);
+          });
+        });
+      };
+      var setHTML = function (elm, html) {
+        var $elm = $$(elm);
+        if (isIE) {
+          $elm.each(function (i, target) {
+            if (target.canHaveHTML === false) {
+              return;
+            }
+            while (target.firstChild) {
+              target.removeChild(target.firstChild);
+            }
+            try {
+              target.innerHTML = '<br>' + html;
+              target.removeChild(target.firstChild);
+            } catch (ex) {
+              DomQuery('<div></div>').html('<br>' + html).contents().slice(1).appendTo(target);
+            }
+            return html;
+          });
+        } else {
+          $elm.html(html);
+        }
+      };
+      var add = function (parentElm, name, attrs, html, create) {
+        return run(parentElm, function (parentElm) {
+          var newElm = typeof name === 'string' ? doc.createElement(name) : name;
+          setAttribs(newElm, attrs);
+          if (html) {
+            if (typeof html !== 'string' && html.nodeType) {
+              newElm.appendChild(html);
+            } else if (typeof html === 'string') {
+              setHTML(newElm, html);
+            }
+          }
+          return !create ? parentElm.appendChild(newElm) : newElm;
+        });
+      };
+      var create = function (name, attrs, html) {
+        return add(doc.createElement(name), name, attrs, html, true);
+      };
+      var decode = Entities.decode;
+      var encode = Entities.encodeAllRaw;
+      var createHTML = function (name, attrs, html) {
+        var outHtml = '', key;
+        outHtml += '<' + name;
+        for (key in attrs) {
+          if (attrs.hasOwnProperty(key) && attrs[key] !== null && typeof attrs[key] !== 'undefined') {
+            outHtml += ' ' + key + '="' + encode(attrs[key]) + '"';
+          }
+        }
+        if (typeof html !== 'undefined') {
+          return outHtml + '>' + html + '</' + name + '>';
+        }
+        return outHtml + ' />';
+      };
+      var createFragment = function (html) {
+        var node;
+        var container = doc.createElement('div');
+        var frag = doc.createDocumentFragment();
+        if (html) {
+          container.innerHTML = html;
+        }
+        while (node = container.firstChild) {
+          frag.appendChild(node);
+        }
+        return frag;
+      };
+      var remove = function (node, keepChildren) {
+        var $node = $$(node);
+        if (keepChildren) {
+          $node.each(function () {
+            var child;
+            while (child = this.firstChild) {
+              if (child.nodeType === 3 && child.data.length === 0) {
+                this.removeChild(child);
+              } else {
+                this.parentNode.insertBefore(child, this);
+              }
+            }
+          }).remove();
+        } else {
+          $node.remove();
+        }
+        return $node.length > 1 ? $node.toArray() : $node[0];
+      };
+      var removeAllAttribs = function (e) {
+        return run(e, function (e) {
+          var i;
+          var attrs = e.attributes;
+          for (i = attrs.length - 1; i >= 0; i--) {
+            e.removeAttributeNode(attrs.item(i));
+          }
+        });
+      };
+      var parseStyle = function (cssText) {
+        return styles.parse(cssText);
+      };
+      var serializeStyle = function (stylesArg, name) {
+        return styles.serialize(stylesArg, name);
+      };
+      var addStyle = function (cssText) {
+        var head, styleElm;
+        if (self !== DOMUtils.DOM && doc === domGlobals.document) {
+          if (addedStyles[cssText]) {
+            return;
+          }
+          addedStyles[cssText] = true;
+        }
+        styleElm = doc.getElementById('mceDefaultStyles');
+        if (!styleElm) {
+          styleElm = doc.createElement('style');
+          styleElm.id = 'mceDefaultStyles';
+          styleElm.type = 'text/css';
+          head = doc.getElementsByTagName('head')[0];
+          if (head.firstChild) {
+            head.insertBefore(styleElm, head.firstChild);
+          } else {
+            head.appendChild(styleElm);
+          }
+        }
+        if (styleElm.styleSheet) {
+          styleElm.styleSheet.cssText += cssText;
+        } else {
+          styleElm.appendChild(doc.createTextNode(cssText));
+        }
+      };
+      var loadCSS = function (url) {
+        var head;
+        if (self !== DOMUtils.DOM && doc === domGlobals.document) {
+          DOMUtils.DOM.loadCSS(url);
+          return;
+        }
+        if (!url) {
+          url = '';
+        }
+        head = doc.getElementsByTagName('head')[0];
+        each$5(url.split(','), function (url) {
+          var link;
+          url = Tools._addCacheSuffix(url);
+          if (files[url]) {
+            return;
+          }
+          files[url] = true;
+          link = create('link', {
+            rel: 'stylesheet',
+            href: url
+          });
+          head.appendChild(link);
+        });
+      };
+      var toggleClass = function (elm, cls, state) {
+        $$(elm).toggleClass(cls, state).each(function () {
+          if (this.className === '') {
+            DomQuery(this).attr('class', null);
+          }
+        });
+      };
+      var addClass = function (elm, cls) {
+        $$(elm).addClass(cls);
+      };
+      var removeClass = function (elm, cls) {
+        toggleClass(elm, cls, false);
+      };
+      var hasClass = function (elm, cls) {
+        return $$(elm).hasClass(cls);
+      };
+      var show = function (elm) {
+        $$(elm).show();
+      };
+      var hide = function (elm) {
+        $$(elm).hide();
+      };
+      var isHidden = function (elm) {
+        return $$(elm).css('display') === 'none';
+      };
+      var uniqueId = function (prefix) {
+        return (!prefix ? 'mce_' : prefix) + counter++;
+      };
+      var getOuterHTML = function (elm) {
+        var node = typeof elm === 'string' ? get(elm) : elm;
+        return NodeType.isElement(node) ? node.outerHTML : DomQuery('<div></div>').append(DomQuery(node).clone()).html();
+      };
+      var setOuterHTML = function (elm, html) {
+        $$(elm).each(function () {
+          try {
+            if ('outerHTML' in this) {
+              this.outerHTML = html;
+              return;
+            }
+          } catch (ex) {
+          }
+          remove(DomQuery(this).html(html), true);
+        });
+      };
+      var insertAfter = function (node, reference) {
+        var referenceNode = get(reference);
+        return run(node, function (node) {
+          var parent, nextSibling;
+          parent = referenceNode.parentNode;
+          nextSibling = referenceNode.nextSibling;
+          if (nextSibling) {
+            parent.insertBefore(node, nextSibling);
+          } else {
+            parent.appendChild(node);
+          }
+          return node;
+        });
+      };
+      var replace = function (newElm, oldElm, keepChildren) {
+        return run(oldElm, function (oldElm) {
+          if (Tools.is(oldElm, 'array')) {
+            newElm = newElm.cloneNode(true);
+          }
+          if (keepChildren) {
+            each$5(grep$1(oldElm.childNodes), function (node) {
+              newElm.appendChild(node);
+            });
+          }
+          return oldElm.parentNode.replaceChild(newElm, oldElm);
+        });
+      };
+      var rename = function (elm, name) {
+        var newElm;
+        if (elm.nodeName !== name.toUpperCase()) {
+          newElm = create(name);
+          each$5(getAttribs(elm), function (attrNode) {
+            setAttrib(newElm, attrNode.nodeName, getAttrib(elm, attrNode.nodeName));
+          });
+          replace(newElm, elm, true);
+        }
+        return newElm || elm;
+      };
+      var findCommonAncestor = function (a, b) {
+        var ps = a, pe;
+        while (ps) {
+          pe = b;
+          while (pe && ps !== pe) {
+            pe = pe.parentNode;
+          }
+          if (ps === pe) {
+            break;
+          }
+          ps = ps.parentNode;
+        }
+        if (!ps && a.ownerDocument) {
+          return a.ownerDocument.documentElement;
+        }
+        return ps;
+      };
+      var toHex = function (rgbVal) {
+        return styles.toHex(Tools.trim(rgbVal));
+      };
+      var isEmpty = function (node, elements) {
+        var i, attributes, type, name, brCount = 0;
+        node = node.firstChild;
+        if (node) {
+          var walker = new TreeWalker(node, node.parentNode);
+          var whitespace = schema ? schema.getWhiteSpaceElements() : {};
+          elements = elements || (schema ? schema.getNonEmptyElements() : null);
+          do {
+            type = node.nodeType;
+            if (NodeType.isElement(node)) {
+              var bogusVal = node.getAttribute('data-mce-bogus');
+              if (bogusVal) {
+                node = walker.next(bogusVal === 'all');
+                continue;
+              }
+              name = node.nodeName.toLowerCase();
+              if (elements && elements[name]) {
+                if (name === 'br') {
+                  brCount++;
+                  node = walker.next();
+                  continue;
+                }
+                return false;
+              }
+              attributes = getAttribs(node);
+              i = attributes.length;
+              while (i--) {
+                name = attributes[i].nodeName;
+                if (name === 'name' || name === 'data-mce-bookmark') {
+                  return false;
+                }
+              }
+            }
+            if (type === 8) {
+              return false;
+            }
+            if (type === 3 && !whiteSpaceRegExp$2.test(node.nodeValue)) {
+              return false;
+            }
+            if (type === 3 && node.parentNode && whitespace[node.parentNode.nodeName] && whiteSpaceRegExp$2.test(node.nodeValue)) {
+              return false;
+            }
+            node = walker.next();
+          } while (node);
+        }
+        return brCount <= 1;
+      };
+      var createRng = function () {
+        return doc.createRange();
+      };
+      var split = function (parentElm, splitElm, replacementElm) {
+        var r = createRng(), bef, aft, pa;
+        if (parentElm && splitElm) {
+          r.setStart(parentElm.parentNode, findNodeIndex(parentElm));
+          r.setEnd(splitElm.parentNode, findNodeIndex(splitElm));
+          bef = r.extractContents();
+          r = createRng();
+          r.setStart(splitElm.parentNode, findNodeIndex(splitElm) + 1);
+          r.setEnd(parentElm.parentNode, findNodeIndex(parentElm) + 1);
+          aft = r.extractContents();
+          pa = parentElm.parentNode;
+          pa.insertBefore(TrimNode.trimNode(self, bef), parentElm);
+          if (replacementElm) {
+            pa.insertBefore(replacementElm, parentElm);
+          } else {
+            pa.insertBefore(splitElm, parentElm);
+          }
+          pa.insertBefore(TrimNode.trimNode(self, aft), parentElm);
+          remove(parentElm);
+          return replacementElm || splitElm;
+        }
+      };
+      var bind = function (target, name, func, scope) {
+        if (Tools.isArray(target)) {
+          var i = target.length;
+          var rv = [];
+          while (i--) {
+            rv[i] = bind(target[i], name, func, scope);
+          }
+          return rv;
+        }
+        if (settings.collect && (target === doc || target === win)) {
+          boundEvents.push([
+            target,
+            name,
+            func,
+            scope
+          ]);
+        }
+        return events.bind(target, name, func, scope || self);
+      };
+      var unbind = function (target, name, func) {
+        var i;
+        if (Tools.isArray(target)) {
+          i = target.length;
+          var rv = [];
+          while (i--) {
+            rv[i] = unbind(target[i], name, func);
+          }
+          return rv;
+        }
+        if (boundEvents && (target === doc || target === win)) {
+          i = boundEvents.length;
+          while (i--) {
+            var item = boundEvents[i];
+            if (target === item[0] && (!name || name === item[1]) && (!func || func === item[2])) {
+              events.unbind(item[0], item[1], item[2]);
+            }
+          }
+        }
+        return events.unbind(target, name, func);
+      };
+      var fire = function (target, name, evt) {
+        return events.fire(target, name, evt);
+      };
+      var getContentEditable = function (node) {
+        if (node && NodeType.isElement(node)) {
+          var contentEditable = node.getAttribute('data-mce-contenteditable');
+          if (contentEditable && contentEditable !== 'inherit') {
+            return contentEditable;
+          }
+          return node.contentEditable !== 'inherit' ? node.contentEditable : null;
+        } else {
+          return null;
+        }
+      };
+      var getContentEditableParent = function (node) {
+        var root = getRoot();
+        var state = null;
+        for (; node && node !== root; node = node.parentNode) {
+          state = getContentEditable(node);
+          if (state !== null) {
+            break;
+          }
+        }
+        return state;
+      };
+      var destroy = function () {
+        if (boundEvents) {
+          var i = boundEvents.length;
+          while (i--) {
+            var item = boundEvents[i];
+            events.unbind(item[0], item[1], item[2]);
+          }
+        }
+        if (Sizzle.setDocument) {
+          Sizzle.setDocument();
+        }
+      };
+      var isChildOf = function (node, parent) {
+        while (node) {
+          if (parent === node) {
+            return true;
+          }
+          node = node.parentNode;
+        }
+        return false;
+      };
+      var dumpRng = function (r) {
+        return 'startContainer: ' + r.startContainer.nodeName + ', startOffset: ' + r.startOffset + ', endContainer: ' + r.endContainer.nodeName + ', endOffset: ' + r.endOffset;
+      };
+      var self = {
+        doc: doc,
+        settings: settings,
+        win: win,
+        files: files,
+        stdMode: stdMode,
+        boxModel: boxModel,
+        styleSheetLoader: styleSheetLoader,
+        boundEvents: boundEvents,
+        styles: styles,
+        schema: schema,
+        events: events,
+        isBlock: isBlock,
+        $: $,
+        $$: $$,
+        root: null,
+        clone: clone,
+        getRoot: getRoot,
+        getViewPort: getViewPort,
+        getRect: getRect,
+        getSize: getSize,
+        getParent: getParent,
+        getParents: getParents,
+        get: get,
+        getNext: getNext,
+        getPrev: getPrev,
+        select: select,
+        is: is,
+        add: add,
+        create: create,
+        createHTML: createHTML,
+        createFragment: createFragment,
+        remove: remove,
+        setStyle: setStyle,
+        getStyle: getStyle,
+        setStyles: setStyles,
+        removeAllAttribs: removeAllAttribs,
+        setAttrib: setAttrib,
+        setAttribs: setAttribs,
+        getAttrib: getAttrib,
+        getPos: getPos,
+        parseStyle: parseStyle,
+        serializeStyle: serializeStyle,
+        addStyle: addStyle,
+        loadCSS: loadCSS,
+        addClass: addClass,
+        removeClass: removeClass,
+        hasClass: hasClass,
+        toggleClass: toggleClass,
+        show: show,
+        hide: hide,
+        isHidden: isHidden,
+        uniqueId: uniqueId,
+        setHTML: setHTML,
+        getOuterHTML: getOuterHTML,
+        setOuterHTML: setOuterHTML,
+        decode: decode,
+        encode: encode,
+        insertAfter: insertAfter,
+        replace: replace,
+        rename: rename,
+        findCommonAncestor: findCommonAncestor,
+        toHex: toHex,
+        run: run,
+        getAttribs: getAttribs,
+        isEmpty: isEmpty,
+        createRng: createRng,
+        nodeIndex: findNodeIndex,
+        split: split,
+        bind: bind,
+        unbind: unbind,
+        fire: fire,
+        getContentEditable: getContentEditable,
+        getContentEditableParent: getContentEditableParent,
+        destroy: destroy,
+        isChildOf: isChildOf,
+        dumpRng: dumpRng
+      };
+      attrHooks = setupAttrHooks(styles, settings, function () {
+        return self;
+      });
+      return self;
+    }
+    (function (DOMUtils) {
+      DOMUtils.DOM = DOMUtils(domGlobals.document);
+      DOMUtils.nodeIndex = findNodeIndex;
+    }(DOMUtils || (DOMUtils = {})));
+    var DOMUtils$1 = DOMUtils;
+
+    var DOM = DOMUtils$1.DOM;
+    var each$6 = Tools.each, grep$2 = Tools.grep;
+    var QUEUED = 0;
+    var LOADING = 1;
+    var LOADED = 2;
+    var FAILED = 3;
+    var ScriptLoader = function () {
+      function ScriptLoader() {
+        this.states = {};
+        this.queue = [];
+        this.scriptLoadedCallbacks = {};
+        this.queueLoadedCallbacks = [];
+        this.loading = 0;
+      }
+      ScriptLoader.prototype.loadScript = function (url, success, failure) {
+        var dom = DOM;
+        var elm, id;
+        var done = function () {
+          dom.remove(id);
+          if (elm) {
+            elm.onreadystatechange = elm.onload = elm = null;
+          }
+          success();
+        };
+        var error = function () {
+          if (isFunction(failure)) {
+            failure();
+          } else {
+            if (typeof domGlobals.console !== 'undefined' && domGlobals.console.log) {
+              domGlobals.console.log('Failed to load script: ' + url);
+            }
+          }
+        };
+        id = dom.uniqueId();
+        elm = domGlobals.document.createElement('script');
+        elm.id = id;
+        elm.type = 'text/javascript';
+        elm.src = Tools._addCacheSuffix(url);
+        elm.onload = done;
+        elm.onerror = error;
+        (domGlobals.document.getElementsByTagName('head')[0] || domGlobals.document.body).appendChild(elm);
+      };
+      ScriptLoader.prototype.isDone = function (url) {
+        return this.states[url] === LOADED;
+      };
+      ScriptLoader.prototype.markDone = function (url) {
+        this.states[url] = LOADED;
+      };
+      ScriptLoader.prototype.add = function (url, success, scope, failure) {
+        var state = this.states[url];
+        if (state === undefined) {
+          this.queue.push(url);
+          this.states[url] = QUEUED;
+        }
+        if (success) {
+          if (!this.scriptLoadedCallbacks[url]) {
+            this.scriptLoadedCallbacks[url] = [];
+          }
+          this.scriptLoadedCallbacks[url].push({
+            success: success,
+            failure: failure,
+            scope: scope || this
+          });
+        }
+      };
+      ScriptLoader.prototype.load = function (url, success, scope, failure) {
+        return this.add(url, success, scope, failure);
+      };
+      ScriptLoader.prototype.remove = function (url) {
+        delete this.states[url];
+        delete this.scriptLoadedCallbacks[url];
+      };
+      ScriptLoader.prototype.loadQueue = function (success, scope, failure) {
+        this.loadScripts(this.queue, success, scope, failure);
+      };
+      ScriptLoader.prototype.loadScripts = function (scripts, success, scope, failure) {
+        var self = this;
+        var loadScripts;
+        var failures = [];
+        var execCallbacks = function (name, url) {
+          each$6(self.scriptLoadedCallbacks[url], function (callback) {
+            if (isFunction(callback[name])) {
+              callback[name].call(callback.scope);
+            }
+          });
+          self.scriptLoadedCallbacks[url] = undefined;
+        };
+        self.queueLoadedCallbacks.push({
+          success: success,
+          failure: failure,
+          scope: scope || this
+        });
+        loadScripts = function () {
+          var loadingScripts = grep$2(scripts);
+          scripts.length = 0;
+          each$6(loadingScripts, function (url) {
+            if (self.states[url] === LOADED) {
+              execCallbacks('success', url);
+              return;
+            }
+            if (self.states[url] === FAILED) {
+              execCallbacks('failure', url);
+              return;
+            }
+            if (self.states[url] !== LOADING) {
+              self.states[url] = LOADING;
+              self.loading++;
+              self.loadScript(url, function () {
+                self.states[url] = LOADED;
+                self.loading--;
+                execCallbacks('success', url);
+                loadScripts();
+              }, function () {
+                self.states[url] = FAILED;
+                self.loading--;
+                failures.push(url);
+                execCallbacks('failure', url);
+                loadScripts();
+              });
+            }
+          });
+          if (!self.loading) {
+            var notifyCallbacks = self.queueLoadedCallbacks.slice(0);
+            self.queueLoadedCallbacks.length = 0;
+            each$6(notifyCallbacks, function (callback) {
+              if (failures.length === 0) {
+                if (isFunction(callback.success)) {
+                  callback.success.call(callback.scope);
+                }
+              } else {
+                if (isFunction(callback.failure)) {
+                  callback.failure.call(callback.scope, failures);
+                }
+              }
+            });
+          }
+        };
+        loadScripts();
+      };
+      ScriptLoader.ScriptLoader = new ScriptLoader();
+      return ScriptLoader;
+    }();
+
+    var extendStatics = function (d, b) {
+      extendStatics = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (d, b) {
+        d.__proto__ = b;
+      } || function (d, b) {
+        for (var p in b)
+          if (b.hasOwnProperty(p))
+            d[p] = b[p];
+      };
+      return extendStatics(d, b);
+    };
+    function __extends(d, b) {
+      extendStatics(d, b);
+      function __() {
+        this.constructor = d;
+      }
+      d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+    }
+    var __assign = function () {
+      __assign = Object.assign || function __assign(t) {
+        for (var s, i = 1, n = arguments.length; i < n; i++) {
+          s = arguments[i];
+          for (var p in s)
+            if (Object.prototype.hasOwnProperty.call(s, p))
+              t[p] = s[p];
+        }
+        return t;
+      };
+      return __assign.apply(this, arguments);
+    };
+    function __rest(s, e) {
+      var t = {};
+      for (var p in s)
+        if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
+          t[p] = s[p];
+      if (s != null && typeof Object.getOwnPropertySymbols === 'function')
+        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++)
+          if (e.indexOf(p[i]) < 0)
+            t[p[i]] = s[p[i]];
+      return t;
+    }
+    function __decorate(decorators, target, key, desc) {
+      var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+      if (typeof Reflect === 'object' && typeof Reflect.decorate === 'function')
+        r = Reflect.decorate(decorators, target, key, desc);
+      else
+        for (var i = decorators.length - 1; i >= 0; i--)
+          if (d = decorators[i])
+            r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+      return c > 3 && r && Object.defineProperty(target, key, r), r;
+    }
+    function __param(paramIndex, decorator) {
+      return function (target, key) {
+        decorator(target, key, paramIndex);
+      };
+    }
+    function __metadata(metadataKey, metadataValue) {
+      if (typeof Reflect === 'object' && typeof Reflect.metadata === 'function')
+        return Reflect.metadata(metadataKey, metadataValue);
+    }
+    function __awaiter(thisArg, _arguments, P, generator) {
+      return new (P || (P = Promise))(function (resolve, reject) {
+        function fulfilled(value) {
+          try {
+            step(generator.next(value));
+          } catch (e) {
+            reject(e);
+          }
+        }
+        function rejected(value) {
+          try {
+            step(generator['throw'](value));
+          } catch (e) {
+            reject(e);
+          }
+        }
+        function step(result) {
+          result.done ? resolve(result.value) : new P(function (resolve) {
+            resolve(result.value);
+          }).then(fulfilled, rejected);
+        }
+        step((generator = generator.apply(thisArg, _arguments || [])).next());
+      });
+    }
+    function __generator(thisArg, body) {
+      var _ = {
+          label: 0,
+          sent: function () {
+            if (t[0] & 1)
+              throw t[1];
+            return t[1];
+          },
+          trys: [],
+          ops: []
+        }, f, y, t, g;
+      return g = {
+        next: verb(0),
+        'throw': verb(1),
+        'return': verb(2)
+      }, typeof Symbol === 'function' && (g[Symbol.iterator] = function () {
+        return this;
+      }), g;
+      function verb(n) {
+        return function (v) {
+          return step([
+            n,
+            v
+          ]);
+        };
+      }
+      function step(op) {
+        if (f)
+          throw new TypeError('Generator is already executing.');
+        while (_)
+          try {
+            if (f = 1, y && (t = op[0] & 2 ? y['return'] : op[0] ? y['throw'] || ((t = y['return']) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done)
+              return t;
+            if (y = 0, t)
+              op = [
+                op[0] & 2,
+                t.value
+              ];
+            switch (op[0]) {
+            case 0:
+            case 1:
+              t = op;
+              break;
+            case 4:
+              _.label++;
+              return {
+                value: op[1],
+                done: false
+              };
+            case 5:
+              _.label++;
+              y = op[1];
+              op = [0];
+              continue;
+            case 7:
+              op = _.ops.pop();
+              _.trys.pop();
+              continue;
+            default:
+              if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
+                _ = 0;
+                continue;
+              }
+              if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
+                _.label = op[1];
+                break;
+              }
+              if (op[0] === 6 && _.label < t[1]) {
+                _.label = t[1];
+                t = op;
+                break;
+              }
+              if (t && _.label < t[2]) {
+                _.label = t[2];
+                _.ops.push(op);
+                break;
+              }
+              if (t[2])
+                _.ops.pop();
+              _.trys.pop();
+              continue;
+            }
+            op = body.call(thisArg, _);
+          } catch (e) {
+            op = [
+              6,
+              e
+            ];
+            y = 0;
+          } finally {
+            f = t = 0;
+          }
+        if (op[0] & 5)
+          throw op[1];
+        return {
+          value: op[0] ? op[1] : void 0,
+          done: true
+        };
+      }
+    }
+    function __exportStar(m, exports) {
+      for (var p in m)
+        if (!exports.hasOwnProperty(p))
+          exports[p] = m[p];
+    }
+    function __values(o) {
+      var m = typeof Symbol === 'function' && o[Symbol.iterator], i = 0;
+      if (m)
+        return m.call(o);
+      return {
+        next: function () {
+          if (o && i >= o.length)
+            o = void 0;
+          return {
+            value: o && o[i++],
+            done: !o
+          };
+        }
+      };
+    }
+    function __read(o, n) {
+      var m = typeof Symbol === 'function' && o[Symbol.iterator];
+      if (!m)
+        return o;
+      var i = m.call(o), r, ar = [], e;
+      try {
+        while ((n === void 0 || n-- > 0) && !(r = i.next()).done)
+          ar.push(r.value);
+      } catch (error) {
+        e = { error: error };
+      } finally {
+        try {
+          if (r && !r.done && (m = i['return']))
+            m.call(i);
+        } finally {
+          if (e)
+            throw e.error;
+        }
+      }
+      return ar;
+    }
+    function __spread() {
+      for (var ar = [], i = 0; i < arguments.length; i++)
+        ar = ar.concat(__read(arguments[i]));
+      return ar;
+    }
+    function __await(v) {
+      return this instanceof __await ? (this.v = v, this) : new __await(v);
+    }
+    function __asyncGenerator(thisArg, _arguments, generator) {
+      if (!Symbol.asyncIterator)
+        throw new TypeError('Symbol.asyncIterator is not defined.');
+      var g = generator.apply(thisArg, _arguments || []), i, q = [];
+      return i = {}, verb('next'), verb('throw'), verb('return'), i[Symbol.asyncIterator] = function () {
+        return this;
+      }, i;
+      function verb(n) {
+        if (g[n])
+          i[n] = function (v) {
+            return new Promise(function (a, b) {
+              q.push([
+                n,
+                v,
+                a,
+                b
+              ]) > 1 || resume(n, v);
+            });
+          };
+      }
+      function resume(n, v) {
+        try {
+          step(g[n](v));
+        } catch (e) {
+          settle(q[0][3], e);
+        }
+      }
+      function step(r) {
+        r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r);
+      }
+      function fulfill(value) {
+        resume('next', value);
+      }
+      function reject(value) {
+        resume('throw', value);
+      }
+      function settle(f, v) {
+        if (f(v), q.shift(), q.length)
+          resume(q[0][0], q[0][1]);
+      }
+    }
+    function __asyncDelegator(o) {
+      var i, p;
+      return i = {}, verb('next'), verb('throw', function (e) {
+        throw e;
+      }), verb('return'), i[Symbol.iterator] = function () {
+        return this;
+      }, i;
+      function verb(n, f) {
+        i[n] = o[n] ? function (v) {
+          return (p = !p) ? {
+            value: __await(o[n](v)),
+            done: n === 'return'
+          } : f ? f(v) : v;
+        } : f;
+      }
+    }
+    function __asyncValues(o) {
+      if (!Symbol.asyncIterator)
+        throw new TypeError('Symbol.asyncIterator is not defined.');
+      var m = o[Symbol.asyncIterator], i;
+      return m ? m.call(o) : (o = typeof __values === 'function' ? __values(o) : o[Symbol.iterator](), i = {}, verb('next'), verb('throw'), verb('return'), i[Symbol.asyncIterator] = function () {
+        return this;
+      }, i);
+      function verb(n) {
+        i[n] = o[n] && function (v) {
+          return new Promise(function (resolve, reject) {
+            v = o[n](v), settle(resolve, reject, v.done, v.value);
+          });
+        };
+      }
+      function settle(resolve, reject, d, v) {
+        Promise.resolve(v).then(function (v) {
+          resolve({
+            value: v,
+            done: d
+          });
+        }, reject);
+      }
+    }
+    function __makeTemplateObject(cooked, raw) {
+      if (Object.defineProperty) {
+        Object.defineProperty(cooked, 'raw', { value: raw });
+      } else {
+        cooked.raw = raw;
+      }
+      return cooked;
+    }
+    function __importStar(mod) {
+      if (mod && mod.__esModule)
+        return mod;
+      var result = {};
+      if (mod != null)
+        for (var k in mod)
+          if (Object.hasOwnProperty.call(mod, k))
+            result[k] = mod[k];
+      result.default = mod;
+      return result;
+    }
+    function __importDefault(mod) {
+      return mod && mod.__esModule ? mod : { default: mod };
+    }
+
+    var tslib_1 = /*#__PURE__*/Object.freeze({
+        __extends: __extends,
+        get __assign () { return __assign; },
+        __rest: __rest,
+        __decorate: __decorate,
+        __param: __param,
+        __metadata: __metadata,
+        __awaiter: __awaiter,
+        __generator: __generator,
+        __exportStar: __exportStar,
+        __values: __values,
+        __read: __read,
+        __spread: __spread,
+        __await: __await,
+        __asyncGenerator: __asyncGenerator,
+        __asyncDelegator: __asyncDelegator,
+        __asyncValues: __asyncValues,
+        __makeTemplateObject: __makeTemplateObject,
+        __importStar: __importStar,
+        __importDefault: __importDefault
+    });
+
+    var Cell = function (initial) {
+      var value = initial;
+      var get = function () {
+        return value;
+      };
+      var set = function (v) {
+        value = v;
+      };
+      var clone = function () {
+        return Cell(get());
+      };
+      return {
+        get: get,
+        set: set,
+        clone: clone
+      };
+    };
+
+    var isRaw = function (str) {
+      return isObject(str) && has(str, 'raw');
+    };
+    var isTokenised = function (str) {
+      return isArray(str) && str.length > 1;
+    };
+    var data = {};
+    var currentCode = Cell('en');
+    var getData = function () {
+      return map$2(data, function (value) {
+        return __assign({}, value);
+      });
+    };
+    var setCode = function (newCode) {
+      if (newCode) {
+        currentCode.set(newCode);
+      }
+    };
+    var getCode = function () {
+      return currentCode.get();
+    };
+    var add = function (code, items) {
+      var langData = data[code];
+      if (!langData) {
+        data[code] = langData = {};
+      }
+      for (var name in items) {
+        langData[name.toLowerCase()] = items[name];
+      }
+    };
+    var translate = function (text) {
+      var langData = data[currentCode.get()] || {};
+      var toString = function (obj) {
+        if (isFunction(obj)) {
+          return Object.prototype.toString.call(obj);
+        }
+        return !isEmpty(obj) ? '' + obj : '';
+      };
+      var isEmpty = function (text) {
+        return text === '' || text === null || text === undefined;
+      };
+      var getLangData = function (text) {
+        var textstr = toString(text);
+        var lowercaseTextstr = textstr.toLowerCase();
+        return has(langData, lowercaseTextstr) ? toString(langData[lowercaseTextstr]) : textstr;
+      };
+      var removeContext = function (str) {
+        return str.replace(/{context:\w+}$/, '');
+      };
+      var translated = function (text) {
+        return text;
+      };
+      if (isEmpty(text)) {
+        return translated('');
+      }
+      if (isRaw(text)) {
+        return translated(toString(text.raw));
+      }
+      if (isTokenised(text)) {
+        var values_1 = text.slice(1);
+        var substitued = getLangData(text[0]).replace(/\{([0-9]+)\}/g, function ($1, $2) {
+          return has(values_1, $2) ? toString(values_1[$2]) : $1;
+        });
+        return translated(removeContext(substitued));
+      }
+      return translated(removeContext(getLangData(text)));
+    };
+    var isRtl = function () {
+      return get(data, currentCode.get()).bind(function (items) {
+        return get(items, '_dir');
+      }).exists(function (dir) {
+        return dir === 'rtl';
+      });
+    };
+    var hasCode = function (code) {
+      return has(data, code);
+    };
+    var I18n = {
+      getData: getData,
+      setCode: setCode,
+      getCode: getCode,
+      add: add,
+      translate: translate,
+      isRtl: isRtl,
+      hasCode: hasCode
+    };
+
+    var each$7 = Tools.each;
+    function AddOnManager() {
+      var _this = this;
+      var items = [];
+      var urls = {};
+      var lookup = {};
+      var _listeners = [];
+      var get = function (name) {
+        if (lookup[name]) {
+          return lookup[name].instance;
+        }
+        return undefined;
+      };
+      var dependencies = function (name) {
+        var result;
+        if (lookup[name]) {
+          result = lookup[name].dependencies;
+        }
+        return result || [];
+      };
+      var requireLangPack = function (name, languages) {
+        var language = I18n.getCode();
+        if (language && AddOnManager.languageLoad !== false) {
+          if (languages) {
+            languages = ',' + languages + ',';
+            if (languages.indexOf(',' + language.substr(0, 2) + ',') !== -1) {
+              language = language.substr(0, 2);
+            } else if (languages.indexOf(',' + language + ',') === -1) {
+              return;
+            }
+          }
+          ScriptLoader.ScriptLoader.add(urls[name] + '/langs/' + language + '.js');
+        }
+      };
+      var add = function (id, addOn, dependencies) {
+        items.push(addOn);
+        lookup[id] = {
+          instance: addOn,
+          dependencies: dependencies
+        };
+        var result = partition(_listeners, function (listener) {
+          return listener.name === id;
+        });
+        _listeners = result.fail;
+        each$7(result.pass, function (listener) {
+          listener.callback();
+        });
+        return addOn;
+      };
+      var remove = function (name) {
+        delete urls[name];
+        delete lookup[name];
+      };
+      var createUrl = function (baseUrl, dep) {
+        if (typeof dep === 'object') {
+          return dep;
+        }
+        return typeof baseUrl === 'string' ? {
+          prefix: '',
+          resource: dep,
+          suffix: ''
+        } : {
+          prefix: baseUrl.prefix,
+          resource: dep,
+          suffix: baseUrl.suffix
+        };
+      };
+      var addComponents = function (pluginName, scripts) {
+        var pluginUrl = _this.urls[pluginName];
+        each$7(scripts, function (script) {
+          ScriptLoader.ScriptLoader.add(pluginUrl + '/' + script);
+        });
+      };
+      var loadDependencies = function (name, addOnUrl, success, scope) {
+        var deps = dependencies(name);
+        each$7(deps, function (dep) {
+          var newUrl = createUrl(addOnUrl, dep);
+          load(newUrl.resource, newUrl, undefined, undefined);
+        });
+        if (success) {
+          if (scope) {
+            success.call(scope);
+          } else {
+            success.call(ScriptLoader);
+          }
+        }
+      };
+      var load = function (name, addOnUrl, success, scope, failure) {
+        if (urls[name]) {
+          return;
+        }
+        var urlString = typeof addOnUrl === 'string' ? addOnUrl : addOnUrl.prefix + addOnUrl.resource + addOnUrl.suffix;
+        if (urlString.indexOf('/') !== 0 && urlString.indexOf('://') === -1) {
+          urlString = AddOnManager.baseURL + '/' + urlString;
+        }
+        urls[name] = urlString.substring(0, urlString.lastIndexOf('/'));
+        if (lookup[name]) {
+          loadDependencies(name, addOnUrl, success, scope);
+        } else {
+          ScriptLoader.ScriptLoader.add(urlString, function () {
+            return loadDependencies(name, addOnUrl, success, scope);
+          }, scope, failure);
+        }
+      };
+      var waitFor = function (name, callback) {
+        if (lookup.hasOwnProperty(name)) {
+          callback();
+        } else {
+          _listeners.push({
+            name: name,
+            callback: callback
+          });
+        }
+      };
+      return {
+        items: items,
+        urls: urls,
+        lookup: lookup,
+        _listeners: _listeners,
+        get: get,
+        dependencies: dependencies,
+        requireLangPack: requireLangPack,
+        add: add,
+        remove: remove,
+        createUrl: createUrl,
+        addComponents: addComponents,
+        load: load,
+        waitFor: waitFor
+      };
+    }
+    (function (AddOnManager) {
+      AddOnManager.PluginManager = AddOnManager();
+      AddOnManager.ThemeManager = AddOnManager();
+    }(AddOnManager || (AddOnManager = {})));
+    var AddOnManager$1 = AddOnManager;
+
+    var before = function (marker, element) {
+      var parent$1 = parent(marker);
+      parent$1.each(function (v) {
+        v.dom().insertBefore(element.dom(), marker.dom());
+      });
+    };
+    var after = function (marker, element) {
+      var sibling = nextSibling(marker);
+      sibling.fold(function () {
+        var parent$1 = parent(marker);
+        parent$1.each(function (v) {
+          append(v, element);
+        });
+      }, function (v) {
+        before(v, element);
+      });
+    };
+    var prepend = function (parent, element) {
+      var firstChild$1 = firstChild(parent);
+      firstChild$1.fold(function () {
+        append(parent, element);
+      }, function (v) {
+        parent.dom().insertBefore(element.dom(), v.dom());
+      });
+    };
+    var append = function (parent, element) {
+      parent.dom().appendChild(element.dom());
+    };
+    var wrap$1 = function (element, wrapper) {
+      before(element, wrapper);
+      append(wrapper, element);
+    };
+
+    var before$1 = function (marker, elements) {
+      each(elements, function (x) {
+        before(marker, x);
+      });
+    };
+    var append$1 = function (parent, elements) {
+      each(elements, function (x) {
+        append(parent, x);
+      });
+    };
+
+    var empty = function (element) {
+      element.dom().textContent = '';
+      each(children(element), function (rogue) {
+        remove$1(rogue);
+      });
+    };
+    var remove$1 = function (element) {
+      var dom = element.dom();
+      if (dom.parentNode !== null) {
+        dom.parentNode.removeChild(dom);
+      }
+    };
+    var unwrap = function (wrapper) {
+      var children$1 = children(wrapper);
+      if (children$1.length > 0) {
+        before$1(wrapper, children$1);
+      }
+      remove$1(wrapper);
+    };
+
+    var first = function (fn, rate) {
+      var timer = null;
+      var cancel = function () {
+        if (timer !== null) {
+          domGlobals.clearTimeout(timer);
+          timer = null;
+        }
+      };
+      var throttle = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          args[_i] = arguments[_i];
+        }
+        if (timer === null) {
+          timer = domGlobals.setTimeout(function () {
+            fn.apply(null, args);
+            timer = null;
+          }, rate);
+        }
+      };
+      return {
+        cancel: cancel,
+        throttle: throttle
+      };
+    };
+    var last$2 = function (fn, rate) {
+      var timer = null;
+      var cancel = function () {
+        if (timer !== null) {
+          domGlobals.clearTimeout(timer);
+          timer = null;
+        }
+      };
+      var throttle = function () {
+        var args = [];
+        for (var _i = 0; _i < arguments.length; _i++) {
+          args[_i] = arguments[_i];
+        }
+        if (timer !== null)
+          domGlobals.clearTimeout(timer);
+        timer = domGlobals.setTimeout(function () {
+          fn.apply(null, args);
+          timer = null;
+        }, rate);
+      };
+      return {
+        cancel: cancel,
+        throttle: throttle
+      };
+    };
+
+    var read = function (element, attr) {
+      var value = get$1(element, attr);
+      return value === undefined || value === '' ? [] : value.split(' ');
+    };
+    var add$1 = function (element, attr, id) {
+      var old = read(element, attr);
+      var nu = old.concat([id]);
+      set(element, attr, nu.join(' '));
+      return true;
+    };
+    var remove$2 = function (element, attr, id) {
+      var nu = filter(read(element, attr), function (v) {
+        return v !== id;
+      });
+      if (nu.length > 0) {
+        set(element, attr, nu.join(' '));
+      } else {
+        remove(element, attr);
+      }
+      return false;
+    };
+
+    var supports = function (element) {
+      return element.dom().classList !== undefined;
+    };
+    var get$3 = function (element) {
+      return read(element, 'class');
+    };
+    var add$2 = function (element, clazz) {
+      return add$1(element, 'class', clazz);
+    };
+    var remove$3 = function (element, clazz) {
+      return remove$2(element, 'class', clazz);
+    };
+    var toggle = function (element, clazz) {
+      if (contains(get$3(element), clazz)) {
+        return remove$3(element, clazz);
+      } else {
+        return add$2(element, clazz);
+      }
+    };
+
+    var ClassList = /*#__PURE__*/Object.freeze({
+        get: get$3,
+        add: add$2,
+        remove: remove$3,
+        toggle: toggle,
+        supports: supports
+    });
+
+    var add$3 = function (element, clazz) {
+      if (supports(element)) {
+        element.dom().classList.add(clazz);
+      } else {
+        add$2(element, clazz);
+      }
+    };
+    var cleanClass = function (element) {
+      var classList = supports(element) ? element.dom().classList : get$3(element);
+      if (classList.length === 0) {
+        remove(element, 'class');
+      }
+    };
+    var remove$4 = function (element, clazz) {
+      if (supports(element)) {
+        var classList = element.dom().classList;
+        classList.remove(clazz);
+      } else {
+        remove$3(element, clazz);
+      }
+      cleanClass(element);
+    };
+    var has$2 = function (element, clazz) {
+      return supports(element) && element.dom().classList.contains(clazz);
+    };
+
+    var ancestors = function (scope, predicate, isRoot) {
+      return filter(parents(scope, isRoot), predicate);
+    };
+    var siblings$1 = function (scope, predicate) {
+      return filter(siblings(scope), predicate);
+    };
+    var children$1 = function (scope, predicate) {
+      return filter(children(scope), predicate);
+    };
+    var descendants = function (scope, predicate) {
+      var result = [];
+      each(children(scope), function (x) {
+        if (predicate(x)) {
+          result = result.concat([x]);
+        }
+        result = result.concat(descendants(x, predicate));
+      });
+      return result;
+    };
+
+    var all$1 = function (selector) {
+      return all(selector);
+    };
+    var ancestors$1 = function (scope, selector, isRoot) {
+      return ancestors(scope, function (e) {
+        return is$1(e, selector);
+      }, isRoot);
+    };
+    var siblings$2 = function (scope, selector) {
+      return siblings$1(scope, function (e) {
+        return is$1(e, selector);
+      });
+    };
+    var children$2 = function (scope, selector) {
+      return children$1(scope, function (e) {
+        return is$1(e, selector);
+      });
+    };
+    var descendants$1 = function (scope, selector) {
+      return all(selector, scope);
+    };
+
+    var SelectorFilter = /*#__PURE__*/Object.freeze({
+        all: all$1,
+        ancestors: ancestors$1,
+        siblings: siblings$2,
+        children: children$2,
+        descendants: descendants$1
+    });
+
+    function ClosestOrAncestor (is, ancestor, scope, a, isRoot) {
+      return is(scope, a) ? Option.some(scope) : isFunction(isRoot) && isRoot(scope) ? Option.none() : ancestor(scope, a, isRoot);
+    }
+
+    var ancestor = function (scope, predicate, isRoot) {
+      var element = scope.dom();
+      var stop = isFunction(isRoot) ? isRoot : constant(false);
+      while (element.parentNode) {
+        element = element.parentNode;
+        var el = Element.fromDom(element);
+        if (predicate(el)) {
+          return Option.some(el);
+        } else if (stop(el)) {
+          break;
+        }
+      }
+      return Option.none();
+    };
+    var closest = function (scope, predicate, isRoot) {
+      var is = function (s) {
+        return predicate(s);
+      };
+      return ClosestOrAncestor(is, ancestor, scope, predicate, isRoot);
+    };
+
+    var ancestor$1 = function (scope, selector, isRoot) {
+      return ancestor(scope, function (e) {
+        return is$1(e, selector);
+      }, isRoot);
+    };
+    var descendant = function (scope, selector) {
+      return one(selector, scope);
+    };
+    var closest$1 = function (scope, selector, isRoot) {
+      return ClosestOrAncestor(is$1, ancestor$1, scope, selector, isRoot);
+    };
+
+    var annotation = constant('mce-annotation');
+    var dataAnnotation = constant('data-mce-annotation');
+    var dataAnnotationId = constant('data-mce-annotation-uid');
+
+    var identify = function (editor, annotationName) {
+      var rng = editor.selection.getRng();
+      var start = Element.fromDom(rng.startContainer);
+      var root = Element.fromDom(editor.getBody());
+      var selector = annotationName.fold(function () {
+        return '.' + annotation();
+      }, function (an) {
+        return '[' + dataAnnotation() + '="' + an + '"]';
+      });
+      var newStart = child(start, rng.startOffset).getOr(start);
+      var closest = closest$1(newStart, selector, function (n) {
+        return eq(n, root);
+      });
+      var getAttr = function (c, property) {
+        if (has$1(c, property)) {
+          return Option.some(get$1(c, property));
+        } else {
+          return Option.none();
+        }
+      };
+      return closest.bind(function (c) {
+        return getAttr(c, '' + dataAnnotationId()).bind(function (uid) {
+          return getAttr(c, '' + dataAnnotation()).map(function (name) {
+            var elements = findMarkers(editor, uid);
+            return {
+              uid: uid,
+              name: name,
+              elements: elements
+            };
+          });
+        });
+      });
+    };
+    var isAnnotation = function (elem) {
+      return isElement(elem) && has$2(elem, annotation());
+    };
+    var findMarkers = function (editor, uid) {
+      var body = Element.fromDom(editor.getBody());
+      return descendants$1(body, '[' + dataAnnotationId() + '="' + uid + '"]');
+    };
+    var findAll = function (editor, name) {
+      var body = Element.fromDom(editor.getBody());
+      var markers = descendants$1(body, '[' + dataAnnotation() + '="' + name + '"]');
+      var directory = {};
+      each(markers, function (m) {
+        var uid = get$1(m, dataAnnotationId());
+        var nodesAlready = directory.hasOwnProperty(uid) ? directory[uid] : [];
+        directory[uid] = nodesAlready.concat([m]);
+      });
+      return directory;
+    };
+
+    var setup = function (editor, registry) {
+      var changeCallbacks = Cell({});
+      var initData = function () {
+        return {
+          listeners: [],
+          previous: Cell(Option.none())
+        };
+      };
+      var withCallbacks = function (name, f) {
+        updateCallbacks(name, function (data) {
+          f(data);
+          return data;
+        });
+      };
+      var updateCallbacks = function (name, f) {
+        var callbackMap = changeCallbacks.get();
+        var data = callbackMap.hasOwnProperty(name) ? callbackMap[name] : initData();
+        var outputData = f(data);
+        callbackMap[name] = outputData;
+        changeCallbacks.set(callbackMap);
+      };
+      var fireCallbacks = function (name, uid, elements) {
+        withCallbacks(name, function (data) {
+          each(data.listeners, function (f) {
+            return f(true, name, {
+              uid: uid,
+              nodes: map(elements, function (elem) {
+                return elem.dom();
+              })
+            });
+          });
+        });
+      };
+      var fireNoAnnotation = function (name) {
+        withCallbacks(name, function (data) {
+          each(data.listeners, function (f) {
+            return f(false, name);
+          });
+        });
+      };
+      var onNodeChange = last$2(function () {
+        var callbackMap = changeCallbacks.get();
+        var annotations = sort(keys(callbackMap));
+        each(annotations, function (name) {
+          updateCallbacks(name, function (data) {
+            var prev = data.previous.get();
+            identify(editor, Option.some(name)).fold(function () {
+              if (prev.isSome()) {
+                fireNoAnnotation(name);
+                data.previous.set(Option.none());
+              }
+            }, function (_a) {
+              var uid = _a.uid, name = _a.name, elements = _a.elements;
+              if (!prev.is(uid)) {
+                fireCallbacks(name, uid, elements);
+                data.previous.set(Option.some(uid));
+              }
+            });
+            return {
+              previous: data.previous,
+              listeners: data.listeners
+            };
+          });
+        });
+      }, 30);
+      editor.on('remove', function () {
+        onNodeChange.cancel();
+      });
+      editor.on('NodeChange', function () {
+        onNodeChange.throttle();
+      });
+      var addListener = function (name, f) {
+        updateCallbacks(name, function (data) {
+          return {
+            previous: data.previous,
+            listeners: data.listeners.concat([f])
+          };
+        });
+      };
+      return { addListener: addListener };
+    };
+
+    var setup$1 = function (editor, registry) {
+      var identifyParserNode = function (span) {
+        return Option.from(span.attr(dataAnnotation())).bind(registry.lookup);
+      };
+      editor.on('init', function () {
+        editor.serializer.addNodeFilter('span', function (spans) {
+          each(spans, function (span) {
+            identifyParserNode(span).each(function (settings) {
+              if (settings.persistent === false) {
+                span.unwrap();
+              }
+            });
+          });
+        });
+      });
+    };
+
+    var create$1 = function () {
+      var annotations = {};
+      var register = function (name, settings) {
+        annotations[name] = {
+          name: name,
+          settings: settings
+        };
+      };
+      var lookup = function (name) {
+        return annotations.hasOwnProperty(name) ? Option.from(annotations[name]).map(function (a) {
+          return a.settings;
+        }) : Option.none();
+      };
+      return {
+        register: register,
+        lookup: lookup
+      };
+    };
+
+    var unique = 0;
+    var generate = function (prefix) {
+      var date = new Date();
+      var time = date.getTime();
+      var random = Math.floor(Math.random() * 1000000000);
+      unique++;
+      return prefix + '_' + random + unique + String(time);
+    };
+
+    var add$4 = function (element, classes) {
+      each(classes, function (x) {
+        add$3(element, x);
+      });
+    };
+
+    var clone = function (original, isDeep) {
+      return Element.fromDom(original.dom().cloneNode(isDeep));
+    };
+    var shallow = function (original) {
+      return clone(original, false);
+    };
+    var deep = function (original) {
+      return clone(original, true);
+    };
+
+    var fromHtml$1 = function (html, scope) {
+      var doc = scope || domGlobals.document;
+      var div = doc.createElement('div');
+      div.innerHTML = html;
+      return children(Element.fromDom(div));
+    };
+
+    var get$4 = function (element) {
+      return element.dom().innerHTML;
+    };
+    var set$1 = function (element, content) {
+      var owner$1 = owner(element);
+      var docDom = owner$1.dom();
+      var fragment = Element.fromDom(docDom.createDocumentFragment());
+      var contentElements = fromHtml$1(content, docDom);
+      append$1(fragment, contentElements);
+      empty(element);
+      append(element, fragment);
+    };
+
+    var ZWSP = '\uFEFF';
+    var isZwsp = function (chr) {
+      return chr === ZWSP;
+    };
+    var trim$3 = function (text) {
+      return text.replace(new RegExp(ZWSP, 'g'), '');
+    };
+    var Zwsp = {
+      isZwsp: isZwsp,
+      ZWSP: ZWSP,
+      trim: trim$3
+    };
+
+    var isElement$2 = NodeType.isElement;
+    var isText$2 = NodeType.isText;
+    var isCaretContainerBlock = function (node) {
+      if (isText$2(node)) {
+        node = node.parentNode;
+      }
+      return isElement$2(node) && node.hasAttribute('data-mce-caret');
+    };
+    var isCaretContainerInline = function (node) {
+      return isText$2(node) && Zwsp.isZwsp(node.data);
+    };
+    var isCaretContainer = function (node) {
+      return isCaretContainerBlock(node) || isCaretContainerInline(node);
+    };
+    var hasContent = function (node) {
+      return node.firstChild !== node.lastChild || !NodeType.isBr(node.firstChild);
+    };
+    var insertInline = function (node, before) {
+      var doc, sibling, textNode, parentNode;
+      doc = node.ownerDocument;
+      textNode = doc.createTextNode(Zwsp.ZWSP);
+      parentNode = node.parentNode;
+      if (!before) {
+        sibling = node.nextSibling;
+        if (isText$2(sibling)) {
+          if (isCaretContainer(sibling)) {
+            return sibling;
+          }
+          if (startsWithCaretContainer(sibling)) {
+            sibling.splitText(1);
+            return sibling;
+          }
+        }
+        if (node.nextSibling) {
+          parentNode.insertBefore(textNode, node.nextSibling);
+        } else {
+          parentNode.appendChild(textNode);
+        }
+      } else {
+        sibling = node.previousSibling;
+        if (isText$2(sibling)) {
+          if (isCaretContainer(sibling)) {
+            return sibling;
+          }
+          if (endsWithCaretContainer(sibling)) {
+            return sibling.splitText(sibling.data.length - 1);
+          }
+        }
+        parentNode.insertBefore(textNode, node);
+      }
+      return textNode;
+    };
+    var prependInline = function (node) {
+      if (NodeType.isText(node)) {
+        var data = node.data;
+        if (data.length > 0 && data.charAt(0) !== Zwsp.ZWSP) {
+          node.insertData(0, Zwsp.ZWSP);
+        }
+        return node;
+      } else {
+        return null;
+      }
+    };
+    var appendInline = function (node) {
+      if (NodeType.isText(node)) {
+        var data = node.data;
+        if (data.length > 0 && data.charAt(data.length - 1) !== Zwsp.ZWSP) {
+          node.insertData(data.length, Zwsp.ZWSP);
+        }
+        return node;
+      } else {
+        return null;
+      }
+    };
+    var isBeforeInline = function (pos) {
+      var container = pos.container();
+      if (!pos || !NodeType.isText(container)) {
+        return false;
+      }
+      return container.data.charAt(pos.offset()) === Zwsp.ZWSP || pos.isAtStart() && isCaretContainerInline(container.previousSibling);
+    };
+    var isAfterInline = function (pos) {
+      var container = pos.container();
+      if (!pos || !NodeType.isText(container)) {
+        return false;
+      }
+      return container.data.charAt(pos.offset() - 1) === Zwsp.ZWSP || pos.isAtEnd() && isCaretContainerInline(container.nextSibling);
+    };
+    var createBogusBr = function () {
+      var br = domGlobals.document.createElement('br');
+      br.setAttribute('data-mce-bogus', '1');
+      return br;
+    };
+    var insertBlock = function (blockName, node, before) {
+      var doc, blockNode, parentNode;
+      doc = node.ownerDocument;
+      blockNode = doc.createElement(blockName);
+      blockNode.setAttribute('data-mce-caret', before ? 'before' : 'after');
+      blockNode.setAttribute('data-mce-bogus', 'all');
+      blockNode.appendChild(createBogusBr());
+      parentNode = node.parentNode;
+      if (!before) {
+        if (node.nextSibling) {
+          parentNode.insertBefore(blockNode, node.nextSibling);
+        } else {
+          parentNode.appendChild(blockNode);
+        }
+      } else {
+        parentNode.insertBefore(blockNode, node);
+      }
+      return blockNode;
+    };
+    var startsWithCaretContainer = function (node) {
+      return isText$2(node) && node.data[0] === Zwsp.ZWSP;
+    };
+    var endsWithCaretContainer = function (node) {
+      return isText$2(node) && node.data[node.data.length - 1] === Zwsp.ZWSP;
+    };
+    var trimBogusBr = function (elm) {
+      var brs = elm.getElementsByTagName('br');
+      var lastBr = brs[brs.length - 1];
+      if (NodeType.isBogus(lastBr)) {
+        lastBr.parentNode.removeChild(lastBr);
+      }
+    };
+    var showCaretContainerBlock = function (caretContainer) {
+      if (caretContainer && caretContainer.hasAttribute('data-mce-caret')) {
+        trimBogusBr(caretContainer);
+        caretContainer.removeAttribute('data-mce-caret');
+        caretContainer.removeAttribute('data-mce-bogus');
+        caretContainer.removeAttribute('style');
+        caretContainer.removeAttribute('_moz_abspos');
+        return caretContainer;
+      }
+      return null;
+    };
+    var isRangeInCaretContainerBlock = function (range) {
+      return isCaretContainerBlock(range.startContainer);
+    };
+
+    var CaretContainer = /*#__PURE__*/Object.freeze({
+        isCaretContainer: isCaretContainer,
+        isCaretContainerBlock: isCaretContainerBlock,
+        isCaretContainerInline: isCaretContainerInline,
+        showCaretContainerBlock: showCaretContainerBlock,
+        insertInline: insertInline,
+        prependInline: prependInline,
+        appendInline: appendInline,
+        isBeforeInline: isBeforeInline,
+        isAfterInline: isAfterInline,
+        insertBlock: insertBlock,
+        hasContent: hasContent,
+        startsWithCaretContainer: startsWithCaretContainer,
+        endsWithCaretContainer: endsWithCaretContainer,
+        isRangeInCaretContainerBlock: isRangeInCaretContainerBlock
+    });
+
+    var isContentEditableTrue$1 = NodeType.isContentEditableTrue;
+    var isContentEditableFalse$1 = NodeType.isContentEditableFalse;
+    var isBr$2 = NodeType.isBr;
+    var isText$3 = NodeType.isText;
+    var isInvalidTextElement = NodeType.matchNodeNames('script style textarea');
+    var isAtomicInline = NodeType.matchNodeNames('img input textarea hr iframe video audio object');
+    var isTable$2 = NodeType.matchNodeNames('table');
+    var isCaretContainer$1 = isCaretContainer;
+    var isCaretCandidate = function (node) {
+      if (isCaretContainer$1(node)) {
+        return false;
+      }
+      if (isText$3(node)) {
+        if (isInvalidTextElement(node.parentNode)) {
+          return false;
+        }
+        return true;
+      }
+      return isAtomicInline(node) || isBr$2(node) || isTable$2(node) || isNonUiContentEditableFalse(node);
+    };
+    var isUnselectable = function (node) {
+      return NodeType.isElement(node) && node.getAttribute('unselectable') === 'true';
+    };
+    var isNonUiContentEditableFalse = function (node) {
+      return isUnselectable(node) === false && isContentEditableFalse$1(node);
+    };
+    var isInEditable = function (node, root) {
+      for (node = node.parentNode; node && node !== root; node = node.parentNode) {
+        if (isNonUiContentEditableFalse(node)) {
+          return false;
+        }
+        if (isContentEditableTrue$1(node)) {
+          return true;
+        }
+      }
+      return true;
+    };
+    var isAtomicContentEditableFalse = function (node) {
+      if (!isNonUiContentEditableFalse(node)) {
+        return false;
+      }
+      return foldl(from$1(node.getElementsByTagName('*')), function (result, elm) {
+        return result || isContentEditableTrue$1(elm);
+      }, false) !== true;
+    };
+    var isAtomic = function (node) {
+      return isAtomicInline(node) || isAtomicContentEditableFalse(node);
+    };
+    var isEditableCaretCandidate = function (node, root) {
+      return isCaretCandidate(node) && isInEditable(node, root);
+    };
+
+    var round = Math.round;
+    var clone$1 = function (rect) {
+      if (!rect) {
+        return {
+          left: 0,
+          top: 0,
+          bottom: 0,
+          right: 0,
+          width: 0,
+          height: 0
+        };
+      }
+      return {
+        left: round(rect.left),
+        top: round(rect.top),
+        bottom: round(rect.bottom),
+        right: round(rect.right),
+        width: round(rect.width),
+        height: round(rect.height)
+      };
+    };
+    var collapse = function (rect, toStart) {
+      rect = clone$1(rect);
+      if (toStart) {
+        rect.right = rect.left;
+      } else {
+        rect.left = rect.left + rect.width;
+        rect.right = rect.left;
+      }
+      rect.width = 0;
+      return rect;
+    };
+    var isEqual = function (rect1, rect2) {
+      return rect1.left === rect2.left && rect1.top === rect2.top && rect1.bottom === rect2.bottom && rect1.right === rect2.right;
+    };
+    var isValidOverflow = function (overflowY, rect1, rect2) {
+      return overflowY >= 0 && overflowY <= Math.min(rect1.height, rect2.height) / 2;
+    };
+    var isAbove = function (rect1, rect2) {
+      if (rect1.bottom - rect1.height / 2 < rect2.top) {
+        return true;
+      }
+      if (rect1.top > rect2.bottom) {
+        return false;
+      }
+      return isValidOverflow(rect2.top - rect1.bottom, rect1, rect2);
+    };
+    var isBelow = function (rect1, rect2) {
+      if (rect1.top > rect2.bottom) {
+        return true;
+      }
+      if (rect1.bottom < rect2.top) {
+        return false;
+      }
+      return isValidOverflow(rect2.bottom - rect1.top, rect1, rect2);
+    };
+    var containsXY = function (rect, clientX, clientY) {
+      return clientX >= rect.left && clientX <= rect.right && clientY >= rect.top && clientY <= rect.bottom;
+    };
+    var overflowX = function (outer, inner) {
+      if (inner.left > outer.left && inner.right < outer.right) {
+        return 0;
+      } else {
+        return inner.left < outer.left ? inner.left - outer.left : inner.right - outer.right;
+      }
+    };
+    var overflowY = function (outer, inner) {
+      if (inner.top > outer.top && inner.bottom < outer.bottom) {
+        return 0;
+      } else {
+        return inner.top < outer.top ? inner.top - outer.top : inner.bottom - outer.bottom;
+      }
+    };
+    var getOverflow = function (outer, inner) {
+      return {
+        x: overflowX(outer, inner),
+        y: overflowY(outer, inner)
+      };
+    };
+
+    var getSelectedNode = function (range) {
+      var startContainer = range.startContainer, startOffset = range.startOffset;
+      if (startContainer.hasChildNodes() && range.endOffset === startOffset + 1) {
+        return startContainer.childNodes[startOffset];
+      }
+      return null;
+    };
+    var getNode = function (container, offset) {
+      if (container.nodeType === 1 && container.hasChildNodes()) {
+        if (offset >= container.childNodes.length) {
+          offset = container.childNodes.length - 1;
+        }
+        container = container.childNodes[offset];
+      }
+      return container;
+    };
+
+    var extendingChars = new RegExp('[\u0300-\u036f\u0483-\u0487\u0488-\u0489\u0591-\u05bd\u05bf\u05c1-\u05c2\u05c4-\u05c5\u05c7\u0610-\u061a' + '\u064b-\u065f\u0670\u06d6-\u06dc\u06df-\u06e4\u06e7-\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0' + '\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0859-\u085b\u08E3-\u0902\u093a\u093c' + '\u0941-\u0948\u094d\u0951-\u0957\u0962-\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2-\u09e3' + '\u0a01-\u0a02\u0a3c\u0a41-\u0a42\u0a47-\u0a48\u0a4b-\u0a4d\u0a51\u0a70-\u0a71\u0a75\u0a81-\u0a82\u0abc' + '\u0ac1-\u0ac5\u0ac7-\u0ac8\u0acd\u0ae2-\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57' + '\u0b62-\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c00\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55-\u0c56' + '\u0c62-\u0c63\u0c81\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc-\u0ccd\u0cd5-\u0cd6\u0ce2-\u0ce3\u0d01\u0d3e\u0d41-\u0d44' + '\u0d4d\u0d57\u0d62-\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9' + '\u0ebb-\u0ebc\u0ec8-\u0ecd\u0f18-\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86-\u0f87\u0f8d-\u0f97' + '\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039-\u103a\u103d-\u103e\u1058-\u1059\u105e-\u1060\u1071-\u1074' + '\u1082\u1085-\u1086\u108d\u109d\u135d-\u135f\u1712-\u1714\u1732-\u1734\u1752-\u1753\u1772-\u1773\u17b4-\u17b5' + '\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927-\u1928\u1932\u1939-\u193b\u1a17-\u1a18' + '\u1a1b\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1ab0-\u1abd\u1ABE\u1b00-\u1b03\u1b34' + '\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80-\u1b81\u1ba2-\u1ba5\u1ba8-\u1ba9\u1bab-\u1bad\u1be6\u1be8-\u1be9' + '\u1bed\u1bef-\u1bf1\u1c2c-\u1c33\u1c36-\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1cf4\u1cf8-\u1cf9' + '\u1dc0-\u1df5\u1dfc-\u1dff\u200c-\u200d\u20d0-\u20dc\u20DD-\u20E0\u20e1\u20E2-\u20E4\u20e5-\u20f0\u2cef-\u2cf1' + '\u2d7f\u2de0-\u2dff\u302a-\u302d\u302e-\u302f\u3099-\u309a\ua66f\uA670-\uA672\ua674-\ua67d\uA69E-\ua69f\ua6f0-\ua6f1' + '\ua802\ua806\ua80b\ua825-\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc' + '\ua9e5\uaa29-\uaa2e\uaa31-\uaa32\uaa35-\uaa36\uaa43\uaa4c\uaa7c\uaab0\uaab2-\uaab4\uaab7-\uaab8\uaabe-\uaabf\uaac1' + '\uaaec-\uaaed\uaaf6\uabe5\uabe8\uabed\ufb1e\ufe00-\ufe0f\ufe20-\uFE2F\uff9e-\uff9f]');
+    var isExtendingChar = function (ch) {
+      return typeof ch === 'string' && ch.charCodeAt(0) >= 768 && extendingChars.test(ch);
+    };
+
+    var liftN = function (arr, f) {
+      var r = [];
+      for (var i = 0; i < arr.length; i++) {
+        var x = arr[i];
+        if (x.isSome()) {
+          r.push(x.getOrDie());
+        } else {
+          return Option.none();
+        }
+      }
+      return Option.some(f.apply(null, r));
+    };
+
+    var slice$3 = [].slice;
+    var or = function () {
+      var x = [];
+      for (var _i = 0; _i < arguments.length; _i++) {
+        x[_i] = arguments[_i];
+      }
+      var args = slice$3.call(arguments);
+      return function (x) {
+        for (var i = 0; i < args.length; i++) {
+          if (args[i](x)) {
+            return true;
+          }
+        }
+        return false;
+      };
+    };
+    var and = function () {
+      var x = [];
+      for (var _i = 0; _i < arguments.length; _i++) {
+        x[_i] = arguments[_i];
+      }
+      var args = slice$3.call(arguments);
+      return function (x) {
+        for (var i = 0; i < args.length; i++) {
+          if (!args[i](x)) {
+            return false;
+          }
+        }
+        return true;
+      };
+    };
+    var Predicate = {
+      and: and,
+      or: or
+    };
+
+    var isElement$3 = NodeType.isElement;
+    var isCaretCandidate$1 = isCaretCandidate;
+    var isBlock$1 = NodeType.matchStyleValues('display', 'block table');
+    var isFloated = NodeType.matchStyleValues('float', 'left right');
+    var isValidElementCaretCandidate = Predicate.and(isElement$3, isCaretCandidate$1, not(isFloated));
+    var isNotPre = not(NodeType.matchStyleValues('white-space', 'pre pre-line pre-wrap'));
+    var isText$4 = NodeType.isText;
+    var isBr$3 = NodeType.isBr;
+    var nodeIndex = DOMUtils$1.nodeIndex;
+    var resolveIndex = getNode;
+    var createRange = function (doc) {
+      return 'createRange' in doc ? doc.createRange() : DOMUtils$1.DOM.createRng();
+    };
+    var isWhiteSpace = function (chr) {
+      return chr && /[\r\n\t ]/.test(chr);
+    };
+    var isRange = function (rng) {
+      return !!rng.setStart && !!rng.setEnd;
+    };
+    var isHiddenWhiteSpaceRange = function (range) {
+      var container = range.startContainer;
+      var offset = range.startOffset;
+      var text;
+      if (isWhiteSpace(range.toString()) && isNotPre(container.parentNode) && NodeType.isText(container)) {
+        text = container.data;
+        if (isWhiteSpace(text[offset - 1]) || isWhiteSpace(text[offset + 1])) {
+          return true;
+        }
+      }
+      return false;
+    };
+    var getBrClientRect = function (brNode) {
+      var doc = brNode.ownerDocument;
+      var rng = createRange(doc);
+      var nbsp = doc.createTextNode('\xA0');
+      var parentNode = brNode.parentNode;
+      var clientRect;
+      parentNode.insertBefore(nbsp, brNode);
+      rng.setStart(nbsp, 0);
+      rng.setEnd(nbsp, 1);
+      clientRect = clone$1(rng.getBoundingClientRect());
+      parentNode.removeChild(nbsp);
+      return clientRect;
+    };
+    var getBoundingClientRectWebKitText = function (rng) {
+      var sc = rng.startContainer;
+      var ec = rng.endContainer;
+      var so = rng.startOffset;
+      var eo = rng.endOffset;
+      if (sc === ec && NodeType.isText(ec) && so === 0 && eo === 1) {
+        var newRng = rng.cloneRange();
+        newRng.setEndAfter(ec);
+        return getBoundingClientRect(newRng);
+      } else {
+        return null;
+      }
+    };
+    var isZeroRect = function (r) {
+      return r.left === 0 && r.right === 0 && r.top === 0 && r.bottom === 0;
+    };
+    var getBoundingClientRect = function (item) {
+      var clientRect, clientRects;
+      clientRects = item.getClientRects();
+      if (clientRects.length > 0) {
+        clientRect = clone$1(clientRects[0]);
+      } else {
+        clientRect = clone$1(item.getBoundingClientRect());
+      }
+      if (!isRange(item) && isBr$3(item) && isZeroRect(clientRect)) {
+        return getBrClientRect(item);
+      }
+      if (isZeroRect(clientRect) && isRange(item)) {
+        return getBoundingClientRectWebKitText(item);
+      }
+      return clientRect;
+    };
+    var collapseAndInflateWidth = function (clientRect, toStart) {
+      var newClientRect = collapse(clientRect, toStart);
+      newClientRect.width = 1;
+      newClientRect.right = newClientRect.left + 1;
+      return newClientRect;
+    };
+    var getCaretPositionClientRects = function (caretPosition) {
+      var clientRects = [];
+      var beforeNode, node;
+      var addUniqueAndValidRect = function (clientRect) {
+        if (clientRect.height === 0) {
+          return;
+        }
+        if (clientRects.length > 0) {
+          if (isEqual(clientRect, clientRects[clientRects.length - 1])) {
+            return;
+          }
+        }
+        clientRects.push(clientRect);
+      };
+      var addCharacterOffset = function (container, offset) {
+        var range = createRange(container.ownerDocument);
+        if (offset < container.data.length) {
+          if (isExtendingChar(container.data[offset])) {
+            return clientRects;
+          }
+          if (isExtendingChar(container.data[offset - 1])) {
+            range.setStart(container, offset);
+            range.setEnd(container, offset + 1);
+            if (!isHiddenWhiteSpaceRange(range)) {
+              addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), false));
+              return clientRects;
+            }
+          }
+        }
+        if (offset > 0) {
+          range.setStart(container, offset - 1);
+          range.setEnd(container, offset);
+          if (!isHiddenWhiteSpaceRange(range)) {
+            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), false));
+          }
+        }
+        if (offset < container.data.length) {
+          range.setStart(container, offset);
+          range.setEnd(container, offset + 1);
+          if (!isHiddenWhiteSpaceRange(range)) {
+            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(range), true));
+          }
+        }
+      };
+      if (isText$4(caretPosition.container())) {
+        addCharacterOffset(caretPosition.container(), caretPosition.offset());
+        return clientRects;
+      }
+      if (isElement$3(caretPosition.container())) {
+        if (caretPosition.isAtEnd()) {
+          node = resolveIndex(caretPosition.container(), caretPosition.offset());
+          if (isText$4(node)) {
+            addCharacterOffset(node, node.data.length);
+          }
+          if (isValidElementCaretCandidate(node) && !isBr$3(node)) {
+            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false));
+          }
+        } else {
+          node = resolveIndex(caretPosition.container(), caretPosition.offset());
+          if (isText$4(node)) {
+            addCharacterOffset(node, 0);
+          }
+          if (isValidElementCaretCandidate(node) && caretPosition.isAtEnd()) {
+            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), false));
+            return clientRects;
+          }
+          beforeNode = resolveIndex(caretPosition.container(), caretPosition.offset() - 1);
+          if (isValidElementCaretCandidate(beforeNode) && !isBr$3(beforeNode)) {
+            if (isBlock$1(beforeNode) || isBlock$1(node) || !isValidElementCaretCandidate(node)) {
+              addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(beforeNode), false));
+            }
+          }
+          if (isValidElementCaretCandidate(node)) {
+            addUniqueAndValidRect(collapseAndInflateWidth(getBoundingClientRect(node), true));
+          }
+        }
+      }
+      return clientRects;
+    };
+    function CaretPosition(container, offset, clientRects) {
+      var isAtStart = function () {
+        if (isText$4(container)) {
+          return offset === 0;
+        }
+        return offset === 0;
+      };
+      var isAtEnd = function () {
+        if (isText$4(container)) {
+          return offset >= container.data.length;
+        }
+        return offset >= container.childNodes.length;
+      };
+      var toRange = function () {
+        var range;
+        range = createRange(container.ownerDocument);
+        range.setStart(container, offset);
+        range.setEnd(container, offset);
+        return range;
+      };
+      var getClientRects = function () {
+        if (!clientRects) {
+          clientRects = getCaretPositionClientRects(CaretPosition(container, offset));
+        }
+        return clientRects;
+      };
+      var isVisible = function () {
+        return getClientRects().length > 0;
+      };
+      var isEqual = function (caretPosition) {
+        return caretPosition && container === caretPosition.container() && offset === caretPosition.offset();
+      };
+      var getNode = function (before) {
+        return resolveIndex(container, before ? offset - 1 : offset);
+      };
+      return {
+        container: constant(container),
+        offset: constant(offset),
+        toRange: toRange,
+        getClientRects: getClientRects,
+        isVisible: isVisible,
+        isAtStart: isAtStart,
+        isAtEnd: isAtEnd,
+        isEqual: isEqual,
+        getNode: getNode
+      };
+    }
+    (function (CaretPosition) {
+      CaretPosition.fromRangeStart = function (range) {
+        return CaretPosition(range.startContainer, range.startOffset);
+      };
+      CaretPosition.fromRangeEnd = function (range) {
+        return CaretPosition(range.endContainer, range.endOffset);
+      };
+      CaretPosition.after = function (node) {
+        return CaretPosition(node.parentNode, nodeIndex(node) + 1);
+      };
+      CaretPosition.before = function (node) {
+        return CaretPosition(node.parentNode, nodeIndex(node));
+      };
+      CaretPosition.isAbove = function (pos1, pos2) {
+        return liftN([
+          head(pos2.getClientRects()),
+          last(pos1.getClientRects())
+        ], isAbove).getOr(false);
+      };
+      CaretPosition.isBelow = function (pos1, pos2) {
+        return liftN([
+          last(pos2.getClientRects()),
+          head(pos1.getClientRects())
+        ], isBelow).getOr(false);
+      };
+      CaretPosition.isAtStart = function (pos) {
+        return pos ? pos.isAtStart() : false;
+      };
+      CaretPosition.isAtEnd = function (pos) {
+        return pos ? pos.isAtEnd() : false;
+      };
+      CaretPosition.isTextPosition = function (pos) {
+        return pos ? NodeType.isText(pos.container()) : false;
+      };
+      CaretPosition.isElementPosition = function (pos) {
+        return CaretPosition.isTextPosition(pos) === false;
+      };
+    }(CaretPosition || (CaretPosition = {})));
+    var CaretPosition$1 = CaretPosition;
+
+    var isText$5 = NodeType.isText;
+    var isBogus$1 = NodeType.isBogus;
+    var nodeIndex$1 = DOMUtils$1.nodeIndex;
+    var normalizedParent = function (node) {
+      var parentNode = node.parentNode;
+      if (isBogus$1(parentNode)) {
+        return normalizedParent(parentNode);
+      }
+      return parentNode;
+    };
+    var getChildNodes = function (node) {
+      if (!node) {
+        return [];
+      }
+      return ArrUtils.reduce(node.childNodes, function (result, node) {
+        if (isBogus$1(node) && node.nodeName !== 'BR') {
+          result = result.concat(getChildNodes(node));
+        } else {
+          result.push(node);
+        }
+        return result;
+      }, []);
+    };
+    var normalizedTextOffset = function (node, offset) {
+      while (node = node.previousSibling) {
+        if (!isText$5(node)) {
+          break;
+        }
+        offset += node.data.length;
+      }
+      return offset;
+    };
+    var equal$1 = function (a) {
+      return function (b) {
+        return a === b;
+      };
+    };
+    var normalizedNodeIndex = function (node) {
+      var nodes, index, numTextFragments;
+      nodes = getChildNodes(normalizedParent(node));
+      index = ArrUtils.findIndex(nodes, equal$1(node), node);
+      nodes = nodes.slice(0, index + 1);
+      numTextFragments = ArrUtils.reduce(nodes, function (result, node, i) {
+        if (isText$5(node) && isText$5(nodes[i - 1])) {
+          result++;
+        }
+        return result;
+      }, 0);
+      nodes = ArrUtils.filter(nodes, NodeType.matchNodeNames(node.nodeName));
+      index = ArrUtils.findIndex(nodes, equal$1(node), node);
+      return index - numTextFragments;
+    };
+    var createPathItem = function (node) {
+      var name;
+      if (isText$5(node)) {
+        name = 'text()';
+      } else {
+        name = node.nodeName.toLowerCase();
+      }
+      return name + '[' + normalizedNodeIndex(node) + ']';
+    };
+    var parentsUntil = function (root, node, predicate) {
+      var parents = [];
+      for (node = node.parentNode; node !== root; node = node.parentNode) {
+        if (predicate && predicate(node)) {
+          break;
+        }
+        parents.push(node);
+      }
+      return parents;
+    };
+    var create$2 = function (root, caretPosition) {
+      var container, offset, path = [], outputOffset, childNodes, parents;
+      container = caretPosition.container();
+      offset = caretPosition.offset();
+      if (isText$5(container)) {
+        outputOffset = normalizedTextOffset(container, offset);
+      } else {
+        childNodes = container.childNodes;
+        if (offset >= childNodes.length) {
+          outputOffset = 'after';
+          offset = childNodes.length - 1;
+        } else {
+          outputOffset = 'before';
+        }
+        container = childNodes[offset];
+      }
+      path.push(createPathItem(container));
+      parents = parentsUntil(root, container);
+      parents = ArrUtils.filter(parents, not(NodeType.isBogus));
+      path = path.concat(ArrUtils.map(parents, function (node) {
+        return createPathItem(node);
+      }));
+      return path.reverse().join('/') + ',' + outputOffset;
+    };
+    var resolvePathItem = function (node, name, index) {
+      var nodes = getChildNodes(node);
+      nodes = ArrUtils.filter(nodes, function (node, index) {
+        return !isText$5(node) || !isText$5(nodes[index - 1]);
+      });
+      nodes = ArrUtils.filter(nodes, NodeType.matchNodeNames(name));
+      return nodes[index];
+    };
+    var findTextPosition = function (container, offset) {
+      var node = container, targetOffset = 0, dataLen;
+      while (isText$5(node)) {
+        dataLen = node.data.length;
+        if (offset >= targetOffset && offset <= targetOffset + dataLen) {
+          container = node;
+          offset = offset - targetOffset;
+          break;
+        }
+        if (!isText$5(node.nextSibling)) {
+          container = node;
+          offset = dataLen;
+          break;
+        }
+        targetOffset += dataLen;
+        node = node.nextSibling;
+      }
+      if (isText$5(container) && offset > container.data.length) {
+        offset = container.data.length;
+      }
+      return CaretPosition$1(container, offset);
+    };
+    var resolve$2 = function (root, path) {
+      var parts, container, offset;
+      if (!path) {
+        return null;
+      }
+      parts = path.split(',');
+      path = parts[0].split('/');
+      offset = parts.length > 1 ? parts[1] : 'before';
+      container = ArrUtils.reduce(path, function (result, value) {
+        value = /([\w\-\(\)]+)\[([0-9]+)\]/.exec(value);
+        if (!value) {
+          return null;
+        }
+        if (value[1] === 'text()') {
+          value[1] = '#text';
+        }
+        return resolvePathItem(result, value[1], parseInt(value[2], 10));
+      }, root);
+      if (!container) {
+        return null;
+      }
+      if (!isText$5(container)) {
+        if (offset === 'after') {
+          offset = nodeIndex$1(container) + 1;
+        } else {
+          offset = nodeIndex$1(container);
+        }
+        return CaretPosition$1(container.parentNode, offset);
+      }
+      return findTextPosition(container, parseInt(offset, 10));
+    };
+
+    var trimEmptyTextNode = function (dom, node) {
+      if (NodeType.isText(node) && node.data.length === 0) {
+        dom.remove(node);
+      }
+    };
+    var insertNode = function (dom, rng, node) {
+      rng.insertNode(node);
+      trimEmptyTextNode(dom, node.previousSibling);
+      trimEmptyTextNode(dom, node.nextSibling);
+    };
+    var insertFragment = function (dom, rng, frag) {
+      var firstChild = Option.from(frag.firstChild);
+      var lastChild = Option.from(frag.lastChild);
+      rng.insertNode(frag);
+      firstChild.each(function (child) {
+        return trimEmptyTextNode(dom, child.previousSibling);
+      });
+      lastChild.each(function (child) {
+        return trimEmptyTextNode(dom, child.nextSibling);
+      });
+    };
+    var rangeInsertNode = function (dom, rng, node) {
+      if (NodeType.isDocumentFragment(node)) {
+        insertFragment(dom, rng, node);
+      } else {
+        insertNode(dom, rng, node);
+      }
+    };
+
+    var isContentEditableFalse$2 = NodeType.isContentEditableFalse;
+    var getNormalizedTextOffset = function (trim, container, offset) {
+      var node, trimmedOffset;
+      trimmedOffset = trim(container.data.slice(0, offset)).length;
+      for (node = container.previousSibling; node && NodeType.isText(node); node = node.previousSibling) {
+        trimmedOffset += trim(node.data).length;
+      }
+      return trimmedOffset;
+    };
+    var getPoint = function (dom, trim, normalized, rng, start) {
+      var container = rng[start ? 'startContainer' : 'endContainer'];
+      var offset = rng[start ? 'startOffset' : 'endOffset'];
+      var point = [];
+      var childNodes, after = 0;
+      var root = dom.getRoot();
+      if (NodeType.isText(container)) {
+        point.push(normalized ? getNormalizedTextOffset(trim, container, offset) : offset);
+      } else {
+        childNodes = container.childNodes;
+        if (offset >= childNodes.length && childNodes.length) {
+          after = 1;
+          offset = Math.max(0, childNodes.length - 1);
+        }
+        point.push(dom.nodeIndex(childNodes[offset], normalized) + after);
+      }
+      for (; container && container !== root; container = container.parentNode) {
+        point.push(dom.nodeIndex(container, normalized));
+      }
+      return point;
+    };
+    var getLocation = function (trim, selection, normalized, rng) {
+      var dom = selection.dom, bookmark = {};
+      bookmark.start = getPoint(dom, trim, normalized, rng, true);
+      if (!selection.isCollapsed()) {
+        bookmark.end = getPoint(dom, trim, normalized, rng, false);
+      }
+      return bookmark;
+    };
+    var findIndex$2 = function (dom, name, element) {
+      var count = 0;
+      Tools.each(dom.select(name), function (node) {
+        if (node.getAttribute('data-mce-bogus') === 'all') {
+          return;
+        }
+        if (node === element) {
+          return false;
+        }
+        count++;
+      });
+      return count;
+    };
+    var moveEndPoint = function (rng, start) {
+      var container, offset, childNodes;
+      var prefix = start ? 'start' : 'end';
+      container = rng[prefix + 'Container'];
+      offset = rng[prefix + 'Offset'];
+      if (NodeType.isElement(container) && container.nodeName === 'TR') {
+        childNodes = container.childNodes;
+        container = childNodes[Math.min(start ? offset : offset - 1, childNodes.length - 1)];
+        if (container) {
+          offset = start ? 0 : container.childNodes.length;
+          rng['set' + (start ? 'Start' : 'End')](container, offset);
+        }
+      }
+    };
+    var normalizeTableCellSelection = function (rng) {
+      moveEndPoint(rng, true);
+      moveEndPoint(rng, false);
+      return rng;
+    };
+    var findSibling = function (node, offset) {
+      var sibling;
+      if (NodeType.isElement(node)) {
+        node = getNode(node, offset);
+        if (isContentEditableFalse$2(node)) {
+          return node;
+        }
+      }
+      if (isCaretContainer(node)) {
+        if (NodeType.isText(node) && isCaretContainerBlock(node)) {
+          node = node.parentNode;
+        }
+        sibling = node.previousSibling;
+        if (isContentEditableFalse$2(sibling)) {
+          return sibling;
+        }
+        sibling = node.nextSibling;
+        if (isContentEditableFalse$2(sibling)) {
+          return sibling;
+        }
+      }
+    };
+    var findAdjacentContentEditableFalseElm = function (rng) {
+      return findSibling(rng.startContainer, rng.startOffset) || findSibling(rng.endContainer, rng.endOffset);
+    };
+    var getOffsetBookmark = function (trim, normalized, selection) {
+      var element = selection.getNode();
+      var name = element ? element.nodeName : null;
+      var rng = selection.getRng();
+      if (isContentEditableFalse$2(element) || name === 'IMG') {
+        return {
+          name: name,
+          index: findIndex$2(selection.dom, name, element)
+        };
+      }
+      var sibling = findAdjacentContentEditableFalseElm(rng);
+      if (sibling) {
+        name = sibling.tagName;
+        return {
+          name: name,
+          index: findIndex$2(selection.dom, name, sibling)
+        };
+      }
+      return getLocation(trim, selection, normalized, rng);
+    };
+    var getCaretBookmark = function (selection) {
+      var rng = selection.getRng();
+      return {
+        start: create$2(selection.dom.getRoot(), CaretPosition$1.fromRangeStart(rng)),
+        end: create$2(selection.dom.getRoot(), CaretPosition$1.fromRangeEnd(rng))
+      };
+    };
+    var getRangeBookmark = function (selection) {
+      return { rng: selection.getRng() };
+    };
+    var createBookmarkSpan = function (dom, id, filled) {
+      var args = {
+        'data-mce-type': 'bookmark',
+        'id': id,
+        'style': 'overflow:hidden;line-height:0px'
+      };
+      return filled ? dom.create('span', args, '&#xFEFF;') : dom.create('span', args);
+    };
+    var getPersistentBookmark = function (selection, filled) {
+      var dom = selection.dom;
+      var rng = selection.getRng();
+      var id = dom.uniqueId();
+      var collapsed = selection.isCollapsed();
+      var element = selection.getNode();
+      var name = element.nodeName;
+      if (name === 'IMG') {
+        return {
+          name: name,
+          index: findIndex$2(dom, name, element)
+        };
+      }
+      var rng2 = normalizeTableCellSelection(rng.cloneRange());
+      if (!collapsed) {
+        rng2.collapse(false);
+        var endBookmarkNode = createBookmarkSpan(dom, id + '_end', filled);
+        rangeInsertNode(dom, rng2, endBookmarkNode);
+      }
+      rng = normalizeTableCellSelection(rng);
+      rng.collapse(true);
+      var startBookmarkNode = createBookmarkSpan(dom, id + '_start', filled);
+      rangeInsertNode(dom, rng, startBookmarkNode);
+      selection.moveToBookmark({
+        id: id,
+        keep: 1
+      });
+      return { id: id };
+    };
+    var getBookmark = function (selection, type, normalized) {
+      if (type === 2) {
+        return getOffsetBookmark(Zwsp.trim, normalized, selection);
+      } else if (type === 3) {
+        return getCaretBookmark(selection);
+      } else if (type) {
+        return getRangeBookmark(selection);
+      } else {
+        return getPersistentBookmark(selection, false);
+      }
+    };
+    var GetBookmark = {
+      getBookmark: getBookmark,
+      getUndoBookmark: curry(getOffsetBookmark, identity, true),
+      getPersistentBookmark: getPersistentBookmark
+    };
+
+    var CARET_ID = '_mce_caret';
+    var isCaretNode = function (node) {
+      return NodeType.isElement(node) && node.id === CARET_ID;
+    };
+    var getParentCaretContainer = function (body, node) {
+      while (node && node !== body) {
+        if (node.id === CARET_ID) {
+          return node;
+        }
+        node = node.parentNode;
+      }
+      return null;
+    };
+
+    var isElement$4 = NodeType.isElement;
+    var isText$6 = NodeType.isText;
+    var removeNode = function (node) {
+      var parentNode = node.parentNode;
+      if (parentNode) {
+        parentNode.removeChild(node);
+      }
+    };
+    var getNodeValue = function (node) {
+      try {
+        return node.nodeValue;
+      } catch (ex) {
+        return '';
+      }
+    };
+    var setNodeValue = function (node, text) {
+      if (text.length === 0) {
+        removeNode(node);
+      } else {
+        node.nodeValue = text;
+      }
+    };
+    var trimCount = function (text) {
+      var trimmedText = Zwsp.trim(text);
+      return {
+        count: text.length - trimmedText.length,
+        text: trimmedText
+      };
+    };
+    var removeUnchanged = function (caretContainer, pos) {
+      remove$5(caretContainer);
+      return pos;
+    };
+    var removeTextAndReposition = function (caretContainer, pos) {
+      var before = trimCount(caretContainer.data.substr(0, pos.offset()));
+      var after = trimCount(caretContainer.data.substr(pos.offset()));
+      var text = before.text + after.text;
+      if (text.length > 0) {
+        setNodeValue(caretContainer, text);
+        return CaretPosition$1(caretContainer, pos.offset() - before.count);
+      } else {
+        return pos;
+      }
+    };
+    var removeElementAndReposition = function (caretContainer, pos) {
+      var parentNode = pos.container();
+      var newPosition = indexOf(from$1(parentNode.childNodes), caretContainer).map(function (index) {
+        return index < pos.offset() ? CaretPosition$1(parentNode, pos.offset() - 1) : pos;
+      }).getOr(pos);
+      remove$5(caretContainer);
+      return newPosition;
+    };
+    var removeTextCaretContainer = function (caretContainer, pos) {
+      return isText$6(caretContainer) && pos.container() === caretContainer ? removeTextAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos);
+    };
+    var removeElementCaretContainer = function (caretContainer, pos) {
+      return pos.container() === caretContainer.parentNode ? removeElementAndReposition(caretContainer, pos) : removeUnchanged(caretContainer, pos);
+    };
+    var removeAndReposition = function (container, pos) {
+      return CaretPosition$1.isTextPosition(pos) ? removeTextCaretContainer(container, pos) : removeElementCaretContainer(container, pos);
+    };
+    var remove$5 = function (caretContainerNode) {
+      if (isElement$4(caretContainerNode) && isCaretContainer(caretContainerNode)) {
+        if (hasContent(caretContainerNode)) {
+          caretContainerNode.removeAttribute('data-mce-caret');
+        } else {
+          removeNode(caretContainerNode);
+        }
+      }
+      if (isText$6(caretContainerNode)) {
+        var text = Zwsp.trim(getNodeValue(caretContainerNode));
+        setNodeValue(caretContainerNode, text);
+      }
+    };
+    var CaretContainerRemove = {
+      removeAndReposition: removeAndReposition,
+      remove: remove$5
+    };
+
+    var browser$2 = PlatformDetection$1.detect().browser;
+    var isContentEditableFalse$3 = NodeType.isContentEditableFalse;
+    var isTableCell$1 = function (node) {
+      return NodeType.isElement(node) && /^(TD|TH)$/i.test(node.tagName);
+    };
+    var getAbsoluteClientRect = function (root, element, before) {
+      var clientRect = collapse(element.getBoundingClientRect(), before);
+      var docElm, scrollX, scrollY, margin, rootRect;
+      if (root.tagName === 'BODY') {
+        docElm = root.ownerDocument.documentElement;
+        scrollX = root.scrollLeft || docElm.scrollLeft;
+        scrollY = root.scrollTop || docElm.scrollTop;
+      } else {
+        rootRect = root.getBoundingClientRect();
+        scrollX = root.scrollLeft - rootRect.left;
+        scrollY = root.scrollTop - rootRect.top;
+      }
+      clientRect.left += scrollX;
+      clientRect.right += scrollX;
+      clientRect.top += scrollY;
+      clientRect.bottom += scrollY;
+      clientRect.width = 1;
+      margin = element.offsetWidth - element.clientWidth;
+      if (margin > 0) {
+        if (before) {
+          margin *= -1;
+        }
+        clientRect.left += margin;
+        clientRect.right += margin;
+      }
+      return clientRect;
+    };
+    var trimInlineCaretContainers = function (root) {
+      var contentEditableFalseNodes, node, sibling, i, data;
+      contentEditableFalseNodes = DomQuery('*[contentEditable=false]', root);
+      for (i = 0; i < contentEditableFalseNodes.length; i++) {
+        node = contentEditableFalseNodes[i];
+        sibling = node.previousSibling;
+        if (endsWithCaretContainer(sibling)) {
+          data = sibling.data;
+          if (data.length === 1) {
+            sibling.parentNode.removeChild(sibling);
+          } else {
+            sibling.deleteData(data.length - 1, 1);
+          }
+        }
+        sibling = node.nextSibling;
+        if (startsWithCaretContainer(sibling)) {
+          data = sibling.data;
+          if (data.length === 1) {
+            sibling.parentNode.removeChild(sibling);
+          } else {
+            sibling.deleteData(0, 1);
+          }
+        }
+      }
+    };
+    var FakeCaret = function (root, isBlock, hasFocus) {
+      var lastVisualCaret = Cell(Option.none());
+      var cursorInterval, caretContainerNode;
+      var show = function (before, element) {
+        var clientRect, rng;
+        hide();
+        if (isTableCell$1(element)) {
+          return null;
+        }
+        if (isBlock(element)) {
+          caretContainerNode = insertBlock('p', element, before);
+          clientRect = getAbsoluteClientRect(root, element, before);
+          DomQuery(caretContainerNode).css('top', clientRect.top);
+          var caret = DomQuery('<div class="mce-visual-caret" data-mce-bogus="all"></div>').css(clientRect).appendTo(root)[0];
+          lastVisualCaret.set(Option.some({
+            caret: caret,
+            element: element,
+            before: before
+          }));
+          lastVisualCaret.get().each(function (caretState) {
+            if (before) {
+              DomQuery(caretState.caret).addClass('mce-visual-caret-before');
+            }
+          });
+          startBlink();
+          rng = element.ownerDocument.createRange();
+          rng.setStart(caretContainerNode, 0);
+          rng.setEnd(caretContainerNode, 0);
+        } else {
+          caretContainerNode = insertInline(element, before);
+          rng = element.ownerDocument.createRange();
+          if (isContentEditableFalse$3(caretContainerNode.nextSibling)) {
+            rng.setStart(caretContainerNode, 0);
+            rng.setEnd(caretContainerNode, 0);
+          } else {
+            rng.setStart(caretContainerNode, 1);
+            rng.setEnd(caretContainerNode, 1);
+          }
+          return rng;
+        }
+        return rng;
+      };
+      var hide = function () {
+        trimInlineCaretContainers(root);
+        if (caretContainerNode) {
+          CaretContainerRemove.remove(caretContainerNode);
+          caretContainerNode = null;
+        }
+        lastVisualCaret.get().each(function (caretState) {
+          DomQuery(caretState.caret).remove();
+          lastVisualCaret.set(Option.none());
+        });
+        Delay.clearInterval(cursorInterval);
+      };
+      var startBlink = function () {
+        cursorInterval = Delay.setInterval(function () {
+          if (hasFocus()) {
+            DomQuery('div.mce-visual-caret', root).toggleClass('mce-visual-caret-hidden');
+          } else {
+            DomQuery('div.mce-visual-caret', root).addClass('mce-visual-caret-hidden');
+          }
+        }, 500);
+      };
+      var reposition = function () {
+        lastVisualCaret.get().each(function (caretState) {
+          var clientRect = getAbsoluteClientRect(root, caretState.element, caretState.before);
+          DomQuery(caretState.caret).css(__assign({}, clientRect));
+        });
+      };
+      var destroy = function () {
+        return Delay.clearInterval(cursorInterval);
+      };
+      var getCss = function () {
+        return '.mce-visual-caret {' + 'position: absolute;' + 'background-color: black;' + 'background-color: currentcolor;' + '}' + '.mce-visual-caret-hidden {' + 'display: none;' + '}' + '*[data-mce-caret] {' + 'position: absolute;' + 'left: -1000px;' + 'right: auto;' + 'top: 0;' + 'margin: 0;' + 'padding: 0;' + '}';
+      };
+      return {
+        show: show,
+        hide: hide,
+        getCss: getCss,
+        reposition: reposition,
+        destroy: destroy
+      };
+    };
+    var isFakeCaretTableBrowser = function () {
+      return browser$2.isIE() || browser$2.isEdge() || browser$2.isFirefox();
+    };
+    var isFakeCaretTarget = function (node) {
+      return isContentEditableFalse$3(node) || NodeType.isTable(node) && isFakeCaretTableBrowser();
+    };
+
+    var isContentEditableFalse$4 = NodeType.isContentEditableFalse;
+    var isBlockLike = NodeType.matchStyleValues('display', 'block table table-cell table-caption list-item');
+    var isCaretContainer$2 = isCaretContainer;
+    var isCaretContainerBlock$1 = isCaretContainerBlock;
+    var isElement$5 = NodeType.isElement;
+    var isCaretCandidate$2 = isCaretCandidate;
+    var isForwards = function (direction) {
+      return direction > 0;
+    };
+    var isBackwards = function (direction) {
+      return direction < 0;
+    };
+    var skipCaretContainers = function (walk, shallow) {
+      var node;
+      while (node = walk(shallow)) {
+        if (!isCaretContainerBlock$1(node)) {
+          return node;
+        }
+      }
+      return null;
+    };
+    var findNode = function (node, direction, predicateFn, rootNode, shallow) {
+      var walker = new TreeWalker(node, rootNode);
+      if (isBackwards(direction)) {
+        if (isContentEditableFalse$4(node) || isCaretContainerBlock$1(node)) {
+          node = skipCaretContainers(walker.prev, true);
+          if (predicateFn(node)) {
+            return node;
+          }
+        }
+        while (node = skipCaretContainers(walker.prev, shallow)) {
+          if (predicateFn(node)) {
+            return node;
+          }
+        }
+      }
+      if (isForwards(direction)) {
+        if (isContentEditableFalse$4(node) || isCaretContainerBlock$1(node)) {
+          node = skipCaretContainers(walker.next, true);
+          if (predicateFn(node)) {
+            return node;
+          }
+        }
+        while (node = skipCaretContainers(walker.next, shallow)) {
+          if (predicateFn(node)) {
+            return node;
+          }
+        }
+      }
+      return null;
+    };
+    var getParentBlock = function (node, rootNode) {
+      while (node && node !== rootNode) {
+        if (isBlockLike(node)) {
+          return node;
+        }
+        node = node.parentNode;
+      }
+      return null;
+    };
+    var isInSameBlock = function (caretPosition1, caretPosition2, rootNode) {
+      return getParentBlock(caretPosition1.container(), rootNode) === getParentBlock(caretPosition2.container(), rootNode);
+    };
+    var getChildNodeAtRelativeOffset = function (relativeOffset, caretPosition) {
+      var container, offset;
+      if (!caretPosition) {
+        return null;
+      }
+      container = caretPosition.container();
+      offset = caretPosition.offset();
+      if (!isElement$5(container)) {
+        return null;
+      }
+      return container.childNodes[offset + relativeOffset];
+    };
+    var beforeAfter = function (before, node) {
+      var range = node.ownerDocument.createRange();
+      if (before) {
+        range.setStartBefore(node);
+        range.setEndBefore(node);
+      } else {
+        range.setStartAfter(node);
+        range.setEndAfter(node);
+      }
+      return range;
+    };
+    var isNodesInSameBlock = function (root, node1, node2) {
+      return getParentBlock(node1, root) === getParentBlock(node2, root);
+    };
+    var lean = function (left, root, node) {
+      var sibling, siblingName;
+      if (left) {
+        siblingName = 'previousSibling';
+      } else {
+        siblingName = 'nextSibling';
+      }
+      while (node && node !== root) {
+        sibling = node[siblingName];
+        if (isCaretContainer$2(sibling)) {
+          sibling = sibling[siblingName];
+        }
+        if (isContentEditableFalse$4(sibling)) {
+          if (isNodesInSameBlock(root, sibling, node)) {
+            return sibling;
+          }
+          break;
+        }
+        if (isCaretCandidate$2(sibling)) {
+          break;
+        }
+        node = node.parentNode;
+      }
+      return null;
+    };
+    var before$2 = curry(beforeAfter, true);
+    var after$1 = curry(beforeAfter, false);
+    var normalizeRange = function (direction, root, range) {
+      var node, container, offset, location;
+      var leanLeft = curry(lean, true, root);
+      var leanRight = curry(lean, false, root);
+      container = range.startContainer;
+      offset = range.startOffset;
+      if (isCaretContainerBlock(container)) {
+        if (!isElement$5(container)) {
+          container = container.parentNode;
+        }
+        location = container.getAttribute('data-mce-caret');
+        if (location === 'before') {
+          node = container.nextSibling;
+          if (isFakeCaretTarget(node)) {
+            return before$2(node);
+          }
+        }
+        if (location === 'after') {
+          node = container.previousSibling;
+          if (isFakeCaretTarget(node)) {
+            return after$1(node);
+          }
+        }
+      }
+      if (!range.collapsed) {
+        return range;
+      }
+      if (NodeType.isText(container)) {
+        if (isCaretContainer$2(container)) {
+          if (direction === 1) {
+            node = leanRight(container);
+            if (node) {
+              return before$2(node);
+            }
+            node = leanLeft(container);
+            if (node) {
+              return after$1(node);
+            }
+          }
+          if (direction === -1) {
+            node = leanLeft(container);
+            if (node) {
+              return after$1(node);
+            }
+            node = leanRight(container);
+            if (node) {
+              return before$2(node);
+            }
+          }
+          return range;
+        }
+        if (endsWithCaretContainer(container) && offset >= container.data.length - 1) {
+          if (direction === 1) {
+            node = leanRight(container);
+            if (node) {
+              return before$2(node);
+            }
+          }
+          return range;
+        }
+        if (startsWithCaretContainer(container) && offset <= 1) {
+          if (direction === -1) {
+            node = leanLeft(container);
+            if (node) {
+              return after$1(node);
+            }
+          }
+          return range;
+        }
+        if (offset === container.data.length) {
+          node = leanRight(container);
+          if (node) {
+            return before$2(node);
+          }
+          return range;
+        }
+        if (offset === 0) {
+          node = leanLeft(container);
+          if (node) {
+            return after$1(node);
+          }
+          return range;
+        }
+      }
+      return range;
+    };
+    var getRelativeCefElm = function (forward, caretPosition) {
+      return Option.from(getChildNodeAtRelativeOffset(forward ? 0 : -1, caretPosition)).filter(isContentEditableFalse$4);
+    };
+    var getNormalizedRangeEndPoint = function (direction, root, range) {
+      var normalizedRange = normalizeRange(direction, root, range);
+      if (direction === -1) {
+        return CaretPosition.fromRangeStart(normalizedRange);
+      }
+      return CaretPosition.fromRangeEnd(normalizedRange);
+    };
+    var getElementFromPosition = function (pos) {
+      return Option.from(pos.getNode()).map(Element.fromDom);
+    };
+    var getElementFromPrevPosition = function (pos) {
+      return Option.from(pos.getNode(true)).map(Element.fromDom);
+    };
+    var getVisualCaretPosition = function (walkFn, caretPosition) {
+      while (caretPosition = walkFn(caretPosition)) {
+        if (caretPosition.isVisible()) {
+          return caretPosition;
+        }
+      }
+      return caretPosition;
+    };
+    var isMoveInsideSameBlock = function (from, to) {
+      var inSameBlock = isInSameBlock(from, to);
+      if (!inSameBlock && NodeType.isBr(from.getNode())) {
+        return true;
+      }
+      return inSameBlock;
+    };
+
+    var HDirection;
+    (function (HDirection) {
+      HDirection[HDirection['Backwards'] = -1] = 'Backwards';
+      HDirection[HDirection['Forwards'] = 1] = 'Forwards';
+    }(HDirection || (HDirection = {})));
+    var isContentEditableFalse$5 = NodeType.isContentEditableFalse;
+    var isText$7 = NodeType.isText;
+    var isElement$6 = NodeType.isElement;
+    var isBr$4 = NodeType.isBr;
+    var isCaretCandidate$3 = isCaretCandidate;
+    var isAtomic$1 = isAtomic;
+    var isEditableCaretCandidate$1 = isEditableCaretCandidate;
+    var getParents = function (node, root) {
+      var parents = [];
+      while (node && node !== root) {
+        parents.push(node);
+        node = node.parentNode;
+      }
+      return parents;
+    };
+    var nodeAtIndex = function (container, offset) {
+      if (container.hasChildNodes() && offset < container.childNodes.length) {
+        return container.childNodes[offset];
+      }
+      return null;
+    };
+    var getCaretCandidatePosition = function (direction, node) {
+      if (isForwards(direction)) {
+        if (isCaretCandidate$3(node.previousSibling) && !isText$7(node.previousSibling)) {
+          return CaretPosition$1.before(node);
+        }
+        if (isText$7(node)) {
+          return CaretPosition$1(node, 0);
+        }
+      }
+      if (isBackwards(direction)) {
+        if (isCaretCandidate$3(node.nextSibling) && !isText$7(node.nextSibling)) {
+          return CaretPosition$1.after(node);
+        }
+        if (isText$7(node)) {
+          return CaretPosition$1(node, node.data.length);
+        }
+      }
+      if (isBackwards(direction)) {
+        if (isBr$4(node)) {
+          return CaretPosition$1.before(node);
+        }
+        return CaretPosition$1.after(node);
+      }
+      return CaretPosition$1.before(node);
+    };
+    var moveForwardFromBr = function (root, nextNode) {
+      var nextSibling = nextNode.nextSibling;
+      if (nextSibling && isCaretCandidate$3(nextSibling)) {
+        if (isText$7(nextSibling)) {
+          return CaretPosition$1(nextSibling, 0);
+        } else {
+          return CaretPosition$1.before(nextSibling);
+        }
+      } else {
+        return findCaretPosition(HDirection.Forwards, CaretPosition$1.after(nextNode), root);
+      }
+    };
+    var findCaretPosition = function (direction, startPos, root) {
+      var node, nextNode, innerNode;
+      var rootContentEditableFalseElm, caretPosition;
+      if (!isElement$6(root) || !startPos) {
+        return null;
+      }
+      if (startPos.isEqual(CaretPosition$1.after(root)) && root.lastChild) {
+        caretPosition = CaretPosition$1.after(root.lastChild);
+        if (isBackwards(direction) && isCaretCandidate$3(root.lastChild) && isElement$6(root.lastChild)) {
+          return isBr$4(root.lastChild) ? CaretPosition$1.before(root.lastChild) : caretPosition;
+        }
+      } else {
+        caretPosition = startPos;
+      }
+      var container = caretPosition.container();
+      var offset = caretPosition.offset();
+      if (isText$7(container)) {
+        if (isBackwards(direction) && offset > 0) {
+          return CaretPosition$1(container, --offset);
+        }
+        if (isForwards(direction) && offset < container.length) {
+          return CaretPosition$1(container, ++offset);
+        }
+        node = container;
+      } else {
+        if (isBackwards(direction) && offset > 0) {
+          nextNode = nodeAtIndex(container, offset - 1);
+          if (isCaretCandidate$3(nextNode)) {
+            if (!isAtomic$1(nextNode)) {
+              innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode);
+              if (innerNode) {
+                if (isText$7(innerNode)) {
+                  return CaretPosition$1(innerNode, innerNode.data.length);
+                }
+                return CaretPosition$1.after(innerNode);
+              }
+            }
+            if (isText$7(nextNode)) {
+              return CaretPosition$1(nextNode, nextNode.data.length);
+            }
+            return CaretPosition$1.before(nextNode);
+          }
+        }
+        if (isForwards(direction) && offset < container.childNodes.length) {
+          nextNode = nodeAtIndex(container, offset);
+          if (isCaretCandidate$3(nextNode)) {
+            if (isBr$4(nextNode)) {
+              return moveForwardFromBr(root, nextNode);
+            }
+            if (!isAtomic$1(nextNode)) {
+              innerNode = findNode(nextNode, direction, isEditableCaretCandidate$1, nextNode);
+              if (innerNode) {
+                if (isText$7(innerNode)) {
+                  return CaretPosition$1(innerNode, 0);
+                }
+                return CaretPosition$1.before(innerNode);
+              }
+            }
+            if (isText$7(nextNode)) {
+              return CaretPosition$1(nextNode, 0);
+            }
+            return CaretPosition$1.after(nextNode);
+          }
+        }
+        node = nextNode ? nextNode : caretPosition.getNode();
+      }
+      if (isForwards(direction) && caretPosition.isAtEnd() || isBackwards(direction) && caretPosition.isAtStart()) {
+        node = findNode(node, direction, constant(true), root, true);
+        if (isEditableCaretCandidate$1(node, root)) {
+          return getCaretCandidatePosition(direction, node);
+        }
+      }
+      nextNode = findNode(node, direction, isEditableCaretCandidate$1, root);
+      rootContentEditableFalseElm = ArrUtils.last(filter(getParents(container, root), isContentEditableFalse$5));
+      if (rootContentEditableFalseElm && (!nextNode || !rootContentEditableFalseElm.contains(nextNode))) {
+        if (isForwards(direction)) {
+          caretPosition = CaretPosition$1.after(rootContentEditableFalseElm);
+        } else {
+          caretPosition = CaretPosition$1.before(rootContentEditableFalseElm);
+        }
+        return caretPosition;
+      }
+      if (nextNode) {
+        return getCaretCandidatePosition(direction, nextNode);
+      }
+      return null;
+    };
+    var CaretWalker = function (root) {
+      return {
+        next: function (caretPosition) {
+          return findCaretPosition(HDirection.Forwards, caretPosition, root);
+        },
+        prev: function (caretPosition) {
+          return findCaretPosition(HDirection.Backwards, caretPosition, root);
+        }
+      };
+    };
+
+    var walkToPositionIn = function (forward, root, start) {
+      var position = forward ? CaretPosition$1.before(start) : CaretPosition$1.after(start);
+      return fromPosition(forward, root, position);
+    };
+    var afterElement = function (node) {
+      return NodeType.isBr(node) ? CaretPosition$1.before(node) : CaretPosition$1.after(node);
+    };
+    var isBeforeOrStart = function (position) {
+      if (CaretPosition$1.isTextPosition(position)) {
+        return position.offset() === 0;
+      } else {
+        return isCaretCandidate(position.getNode());
+      }
+    };
+    var isAfterOrEnd = function (position) {
+      if (CaretPosition$1.isTextPosition(position)) {
+        var container = position.container();
+        return position.offset() === container.data.length;
+      } else {
+        return isCaretCandidate(position.getNode(true));
+      }
+    };
+    var isBeforeAfterSameElement = function (from, to) {
+      return !CaretPosition$1.isTextPosition(from) && !CaretPosition$1.isTextPosition(to) && from.getNode() === to.getNode(true);
+    };
+    var isAtBr = function (position) {
+      return !CaretPosition$1.isTextPosition(position) && NodeType.isBr(position.getNode());
+    };
+    var shouldSkipPosition = function (forward, from, to) {
+      if (forward) {
+        return !isBeforeAfterSameElement(from, to) && !isAtBr(from) && isAfterOrEnd(from) && isBeforeOrStart(to);
+      } else {
+        return !isBeforeAfterSameElement(to, from) && isBeforeOrStart(from) && isAfterOrEnd(to);
+      }
+    };
+    var fromPosition = function (forward, root, pos) {
+      var walker = CaretWalker(root);
+      return Option.from(forward ? walker.next(pos) : walker.prev(pos));
+    };
+    var navigate = function (forward, root, from) {
+      return fromPosition(forward, root, from).bind(function (to) {
+        if (isInSameBlock(from, to, root) && shouldSkipPosition(forward, from, to)) {
+          return fromPosition(forward, root, to);
+        } else {
+          return Option.some(to);
+        }
+      });
+    };
+    var navigateIgnore = function (forward, root, from, ignoreFilter) {
+      return navigate(forward, root, from).bind(function (pos) {
+        return ignoreFilter(pos) ? navigateIgnore(forward, root, pos, ignoreFilter) : Option.some(pos);
+      });
+    };
+    var positionIn = function (forward, element) {
+      var startNode = forward ? element.firstChild : element.lastChild;
+      if (NodeType.isText(startNode)) {
+        return Option.some(CaretPosition$1(startNode, forward ? 0 : startNode.data.length));
+      } else if (startNode) {
+        if (isCaretCandidate(startNode)) {
+          return Option.some(forward ? CaretPosition$1.before(startNode) : afterElement(startNode));
+        } else {
+          return walkToPositionIn(forward, element, startNode);
+        }
+      } else {
+        return Option.none();
+      }
+    };
+    var nextPosition = curry(fromPosition, true);
+    var prevPosition = curry(fromPosition, false);
+    var CaretFinder = {
+      fromPosition: fromPosition,
+      nextPosition: nextPosition,
+      prevPosition: prevPosition,
+      navigate: navigate,
+      navigateIgnore: navigateIgnore,
+      positionIn: positionIn,
+      firstPositionIn: curry(positionIn, true),
+      lastPositionIn: curry(positionIn, false)
+    };
+
+    var isStringPathBookmark = function (bookmark) {
+      return typeof bookmark.start === 'string';
+    };
+    var isRangeBookmark = function (bookmark) {
+      return bookmark.hasOwnProperty('rng');
+    };
+    var isIdBookmark = function (bookmark) {
+      return bookmark.hasOwnProperty('id');
+    };
+    var isIndexBookmark = function (bookmark) {
+      return bookmark.hasOwnProperty('name');
+    };
+    var isPathBookmark = function (bookmark) {
+      return Tools.isArray(bookmark.start);
+    };
+
+    var addBogus = function (dom, node) {
+      if (dom.isBlock(node) && !node.innerHTML && !Env.ie) {
+        node.innerHTML = '<br data-mce-bogus="1" />';
+      }
+      return node;
+    };
+    var resolveCaretPositionBookmark = function (dom, bookmark) {
+      var rng, pos;
+      rng = dom.createRng();
+      pos = resolve$2(dom.getRoot(), bookmark.start);
+      rng.setStart(pos.container(), pos.offset());
+      pos = resolve$2(dom.getRoot(), bookmark.end);
+      rng.setEnd(pos.container(), pos.offset());
+      return rng;
+    };
+    var insertZwsp = function (node, rng) {
+      var textNode = node.ownerDocument.createTextNode(Zwsp.ZWSP);
+      node.appendChild(textNode);
+      rng.setStart(textNode, 0);
+      rng.setEnd(textNode, 0);
+    };
+    var isEmpty = function (node) {
+      return node.hasChildNodes() === false;
+    };
+    var tryFindRangePosition = function (node, rng) {
+      return CaretFinder.lastPositionIn(node).fold(function () {
+        return false;
+      }, function (pos) {
+        rng.setStart(pos.container(), pos.offset());
+        rng.setEnd(pos.container(), pos.offset());
+        return true;
+      });
+    };
+    var padEmptyCaretContainer = function (root, node, rng) {
+      if (isEmpty(node) && getParentCaretContainer(root, node)) {
+        insertZwsp(node, rng);
+        return true;
+      } else {
+        return false;
+      }
+    };
+    var setEndPoint = function (dom, start, bookmark, rng) {
+      var point = bookmark[start ? 'start' : 'end'];
+      var i, node, offset, children;
+      var root = dom.getRoot();
+      if (point) {
+        offset = point[0];
+        for (node = root, i = point.length - 1; i >= 1; i--) {
+          children = node.childNodes;
+          if (padEmptyCaretContainer(root, node, rng)) {
+            return true;
+          }
+          if (point[i] > children.length - 1) {
+            if (padEmptyCaretContainer(root, node, rng)) {
+              return true;
+            }
+            return tryFindRangePosition(node, rng);
+          }
+          node = children[point[i]];
+        }
+        if (node.nodeType === 3) {
+          offset = Math.min(point[0], node.nodeValue.length);
+        }
+        if (node.nodeType === 1) {
+          offset = Math.min(point[0], node.childNodes.length);
+        }
+        if (start) {
+          rng.setStart(node, offset);
+        } else {
+          rng.setEnd(node, offset);
+        }
+      }
+      return true;
+    };
+    var isValidTextNode = function (node) {
+      return NodeType.isText(node) && node.data.length > 0;
+    };
+    var restoreEndPoint = function (dom, suffix, bookmark) {
+      var marker = dom.get(bookmark.id + '_' + suffix), node, idx, next, prev;
+      var keep = bookmark.keep;
+      var container, offset;
+      if (marker) {
+        node = marker.parentNode;
+        if (suffix === 'start') {
+          if (!keep) {
+            idx = dom.nodeIndex(marker);
+          } else {
+            if (marker.hasChildNodes()) {
+              node = marker.firstChild;
+              idx = 1;
+            } else if (isValidTextNode(marker.nextSibling)) {
+              node = marker.nextSibling;
+              idx = 0;
+            } else if (isValidTextNode(marker.previousSibling)) {
+              node = marker.previousSibling;
+              idx = marker.previousSibling.data.length;
+            } else {
+              node = marker.parentNode;
+              idx = dom.nodeIndex(marker) + 1;
+            }
+          }
+          container = node;
+          offset = idx;
+        } else {
+          if (!keep) {
+            idx = dom.nodeIndex(marker);
+          } else {
+            if (marker.hasChildNodes()) {
+              node = marker.firstChild;
+              idx = 1;
+            } else if (isValidTextNode(marker.previousSibling)) {
+              node = marker.previousSibling;
+              idx = marker.previousSibling.data.length;
+            } else {
+              node = marker.parentNode;
+              idx = dom.nodeIndex(marker);
+            }
+          }
+          container = node;
+          offset = idx;
+        }
+        if (!keep) {
+          prev = marker.previousSibling;
+          next = marker.nextSibling;
+          Tools.each(Tools.grep(marker.childNodes), function (node) {
+            if (NodeType.isText(node)) {
+              node.nodeValue = node.nodeValue.replace(/\uFEFF/g, '');
+            }
+          });
+          while (marker = dom.get(bookmark.id + '_' + suffix)) {
+            dom.remove(marker, true);
+          }
+          if (prev && next && prev.nodeType === next.nodeType && NodeType.isText(prev) && !Env.opera) {
+            idx = prev.nodeValue.length;
+            prev.appendData(next.nodeValue);
+            dom.remove(next);
+            if (suffix === 'start') {
+              container = prev;
+              offset = idx;
+            } else {
+              container = prev;
+              offset = idx;
+            }
+          }
+        }
+        return Option.some(CaretPosition$1(container, offset));
+      } else {
+        return Option.none();
+      }
+    };
+    var alt = function (o1, o2) {
+      return o1.isSome() ? o1 : o2;
+    };
+    var resolvePaths = function (dom, bookmark) {
+      var rng = dom.createRng();
+      if (setEndPoint(dom, true, bookmark, rng) && setEndPoint(dom, false, bookmark, rng)) {
+        return Option.some(rng);
+      } else {
+        return Option.none();
+      }
+    };
+    var resolveId = function (dom, bookmark) {
+      var startPos = restoreEndPoint(dom, 'start', bookmark);
+      var endPos = restoreEndPoint(dom, 'end', bookmark);
+      return liftN([
+        startPos,
+        alt(endPos, startPos)
+      ], function (spos, epos) {
+        var rng = dom.createRng();
+        rng.setStart(addBogus(dom, spos.container()), spos.offset());
+        rng.setEnd(addBogus(dom, epos.container()), epos.offset());
+        return rng;
+      });
+    };
+    var resolveIndex$1 = function (dom, bookmark) {
+      return Option.from(dom.select(bookmark.name)[bookmark.index]).map(function (elm) {
+        var rng = dom.createRng();
+        rng.selectNode(elm);
+        return rng;
+      });
+    };
+    var resolve$3 = function (selection, bookmark) {
+      var dom = selection.dom;
+      if (bookmark) {
+        if (isPathBookmark(bookmark)) {
+          return resolvePaths(dom, bookmark);
+        } else if (isStringPathBookmark(bookmark)) {
+          return Option.some(resolveCaretPositionBookmark(dom, bookmark));
+        } else if (isIdBookmark(bookmark)) {
+          return resolveId(dom, bookmark);
+        } else if (isIndexBookmark(bookmark)) {
+          return resolveIndex$1(dom, bookmark);
+        } else if (isRangeBookmark(bookmark)) {
+          return Option.some(bookmark.rng);
+        }
+      }
+      return Option.none();
+    };
+    var ResolveBookmark = { resolve: resolve$3 };
+
+    var getBookmark$1 = function (selection, type, normalized) {
+      return GetBookmark.getBookmark(selection, type, normalized);
+    };
+    var moveToBookmark = function (selection, bookmark) {
+      ResolveBookmark.resolve(selection, bookmark).each(function (rng) {
+        selection.setRng(rng);
+      });
+    };
+    var isBookmarkNode$1 = function (node) {
+      return NodeType.isElement(node) && node.tagName === 'SPAN' && node.getAttribute('data-mce-type') === 'bookmark';
+    };
+    var Bookmarks = {
+      getBookmark: getBookmark$1,
+      moveToBookmark: moveToBookmark,
+      isBookmarkNode: isBookmarkNode$1
+    };
+
+    var isInlineBlock = function (node) {
+      return node && /^(IMG)$/.test(node.nodeName);
+    };
+    var moveStart = function (dom, selection, rng) {
+      var offset = rng.startOffset;
+      var container = rng.startContainer, walker, node, nodes;
+      if (rng.startContainer === rng.endContainer) {
+        if (isInlineBlock(rng.startContainer.childNodes[rng.startOffset])) {
+          return;
+        }
+      }
+      if (container.nodeType === 1) {
+        nodes = container.childNodes;
+        if (offset < nodes.length) {
+          container = nodes[offset];
+          walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));
+        } else {
+          container = nodes[nodes.length - 1];
+          walker = new TreeWalker(container, dom.getParent(container, dom.isBlock));
+          walker.next(true);
+        }
+        for (node = walker.current(); node; node = walker.next()) {
+          if (node.nodeType === 3 && !isWhiteSpaceNode(node)) {
+            rng.setStart(node, 0);
+            selection.setRng(rng);
+            return;
+          }
+        }
+      }
+    };
+    var getNonWhiteSpaceSibling = function (node, next, inc) {
+      if (node) {
+        next = next ? 'nextSibling' : 'previousSibling';
+        for (node = inc ? node : node[next]; node; node = node[next]) {
+          if (node.nodeType === 1 || !isWhiteSpaceNode(node)) {
+            return node;
+          }
+        }
+      }
+    };
+    var isTextBlock$1 = function (editor, name) {
+      if (name.nodeType) {
+        name = name.nodeName;
+      }
+      return !!editor.schema.getTextBlockElements()[name.toLowerCase()];
+    };
+    var isValid = function (ed, parent, child) {
+      return ed.schema.isValidChild(parent, child);
+    };
+    var isWhiteSpaceNode = function (node) {
+      return node && node.nodeType === 3 && /^([\t \r\n]+|)$/.test(node.nodeValue);
+    };
+    var replaceVars = function (value, vars) {
+      if (typeof value !== 'string') {
+        value = value(vars);
+      } else if (vars) {
+        value = value.replace(/%(\w+)/g, function (str, name) {
+          return vars[name] || str;
+        });
+      }
+      return value;
+    };
+    var isEq = function (str1, str2) {
+      str1 = str1 || '';
+      str2 = str2 || '';
+      str1 = '' + (str1.nodeName || str1);
+      str2 = '' + (str2.nodeName || str2);
+      return str1.toLowerCase() === str2.toLowerCase();
+    };
+    var normalizeStyleValue = function (dom, value, name) {
+      if (name === 'color' || name === 'backgroundColor') {
+        value = dom.toHex(value);
+      }
+      if (name === 'fontWeight' && value === 700) {
+        value = 'bold';
+      }
+      if (name === 'fontFamily') {
+        value = value.replace(/[\'\"]/g, '').replace(/,\s+/g, ',');
+      }
+      return '' + value;
+    };
+    var getStyle = function (dom, node, name) {
+      return normalizeStyleValue(dom, dom.getStyle(node, name), name);
+    };
+    var getTextDecoration = function (dom, node) {
+      var decoration;
+      dom.getParent(node, function (n) {
+        decoration = dom.getStyle(n, 'text-decoration');
+        return decoration && decoration !== 'none';
+      });
+      return decoration;
+    };
+    var getParents$1 = function (dom, node, selector) {
+      return dom.getParents(node, selector, dom.getRoot());
+    };
+    var FormatUtils = {
+      isInlineBlock: isInlineBlock,
+      moveStart: moveStart,
+      getNonWhiteSpaceSibling: getNonWhiteSpaceSibling,
+      isTextBlock: isTextBlock$1,
+      isValid: isValid,
+      isWhiteSpaceNode: isWhiteSpaceNode,
+      replaceVars: replaceVars,
+      isEq: isEq,
+      normalizeStyleValue: normalizeStyleValue,
+      getStyle: getStyle,
+      getTextDecoration: getTextDecoration,
+      getParents: getParents$1
+    };
+
+    var isBookmarkNode$2 = Bookmarks.isBookmarkNode;
+    var getParents$2 = FormatUtils.getParents, isWhiteSpaceNode$1 = FormatUtils.isWhiteSpaceNode, isTextBlock$2 = FormatUtils.isTextBlock;
+    var findLeaf = function (node, offset) {
+      if (typeof offset === 'undefined') {
+        offset = node.nodeType === 3 ? node.length : node.childNodes.length;
+      }
+      while (node && node.hasChildNodes()) {
+        node = node.childNodes[offset];
+        if (node) {
+          offset = node.nodeType === 3 ? node.length : node.childNodes.length;
+        }
+      }
+      return {
+        node: node,
+        offset: offset
+      };
+    };
+    var excludeTrailingWhitespace = function (endContainer, endOffset) {
+      var leaf = findLeaf(endContainer, endOffset);
+      if (leaf.node) {
+        while (leaf.node && leaf.offset === 0 && leaf.node.previousSibling) {
+          leaf = findLeaf(leaf.node.previousSibling);
+        }
+        if (leaf.node && leaf.offset > 0 && leaf.node.nodeType === 3 && leaf.node.nodeValue.charAt(leaf.offset - 1) === ' ') {
+          if (leaf.offset > 1) {
+            endContainer = leaf.node;
+            endContainer.splitText(leaf.offset - 1);
+          }
+        }
+      }
+      return endContainer;
+    };
+    var isBogusBr = function (node) {
+      return node.nodeName === 'BR' && node.getAttribute('data-mce-bogus') && !node.nextSibling;
+    };
+    var findParentContentEditable = function (dom, node) {
+      var parent = node;
+      while (parent) {
+        if (parent.nodeType === 1 && dom.getContentEditable(parent)) {
+          return dom.getContentEditable(parent) === 'false' ? parent : node;
+        }
+        parent = parent.parentNode;
+      }
+      return node;
+    };
+    var findSpace = function (start, remove, node, offset) {
+      var pos, pos2;
+      var str = node.nodeValue;
+      if (typeof offset === 'undefined') {
+        offset = start ? str.length : 0;
+      }
+      if (start) {
+        pos = str.lastIndexOf(' ', offset);
+        pos2 = str.lastIndexOf('\xA0', offset);
+        pos = pos > pos2 ? pos : pos2;
+        if (pos !== -1 && !remove && (pos < offset || !start) && pos <= str.length) {
+          pos++;
+        }
+      } else {
+        pos = str.indexOf(' ', offset);
+        pos2 = str.indexOf('\xA0', offset);
+        pos = pos !== -1 && (pos2 === -1 || pos < pos2) ? pos : pos2;
+      }
+      return pos;
+    };
+    var findWordEndPoint = function (dom, body, container, offset, start, remove) {
+      var node, pos, lastTextNode;
+      if (container.nodeType === 3) {
+        pos = findSpace(start, remove, container, offset);
+        if (pos !== -1) {
+          return {
+            container: container,
+            offset: pos
+          };
+        }
+        lastTextNode = container;
+      }
+      var walker = new TreeWalker(container, dom.getParent(container, dom.isBlock) || body);
+      while (node = walker[start ? 'prev' : 'next']()) {
+        if (node.nodeType === 3 && !isBookmarkNode$2(node.parentNode)) {
+          lastTextNode = node;
+          pos = findSpace(start, remove, node);
+          if (pos !== -1) {
+            return {
+              container: node,
+              offset: pos
+            };
+          }
+        } else if (dom.isBlock(node) || FormatUtils.isEq(node, 'BR')) {
+          break;
+        }
+      }
+      if (lastTextNode) {
+        if (start) {
+          offset = 0;
+        } else {
+          offset = lastTextNode.length;
+        }
+        return {
+          container: lastTextNode,
+          offset: offset
+        };
+      }
+    };
+    var findSelectorEndPoint = function (dom, format, rng, container, siblingName) {
+      var parents, i, y, curFormat;
+      if (container.nodeType === 3 && container.nodeValue.length === 0 && container[siblingName]) {
+        container = container[siblingName];
+      }
+      parents = getParents$2(dom, container);
+      for (i = 0; i < parents.length; i++) {
+        for (y = 0; y < format.length; y++) {
+          curFormat = format[y];
+          if ('collapsed' in curFormat && curFormat.collapsed !== rng.collapsed) {
+            continue;
+          }
+          if (dom.is(parents[i], curFormat.selector)) {
+            return parents[i];
+          }
+        }
+      }
+      return container;
+    };
+    var findBlockEndPoint = function (editor, format, container, siblingName) {
+      var node;
+      var dom = editor.dom;
+      var root = dom.getRoot();
+      if (!format[0].wrapper) {
+        node = dom.getParent(container, format[0].block, root);
+      }
+      if (!node) {
+        var scopeRoot = dom.getParent(container, 'LI,TD,TH');
+        node = dom.getParent(container.nodeType === 3 ? container.parentNode : container, function (node) {
+          return node !== root && isTextBlock$2(editor, node);
+        }, scopeRoot);
+      }
+      if (node && format[0].wrapper) {
+        node = getParents$2(dom, node, 'ul,ol').reverse()[0] || node;
+      }
+      if (!node) {
+        node = container;
+        while (node[siblingName] && !dom.isBlock(node[siblingName])) {
+          node = node[siblingName];
+          if (FormatUtils.isEq(node, 'br')) {
+            break;
+          }
+        }
+      }
+      return node || container;
+    };
+    var findParentContainer = function (dom, format, startContainer, startOffset, endContainer, endOffset, start) {
+      var container, parent, sibling, siblingName, root;
+      container = parent = start ? startContainer : endContainer;
+      siblingName = start ? 'previousSibling' : 'nextSibling';
+      root = dom.getRoot();
+      if (container.nodeType === 3 && !isWhiteSpaceNode$1(container)) {
+        if (start ? startOffset > 0 : endOffset < container.nodeValue.length) {
+          return container;
+        }
+      }
+      while (true) {
+        if (!format[0].block_expand && dom.isBlock(parent)) {
+          return parent;
+        }
+        for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) {
+          if (!isBookmarkNode$2(sibling) && !isWhiteSpaceNode$1(sibling) && !isBogusBr(sibling)) {
+            return parent;
+          }
+        }
+        if (parent === root || parent.parentNode === root) {
+          container = parent;
+          break;
+        }
+        parent = parent.parentNode;
+      }
+      return container;
+    };
+    var expandRng = function (editor, rng, format, remove) {
+      var endPoint, startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset;
+      var dom = editor.dom;
+      if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) {
+        startContainer = getNode(startContainer, startOffset);
+        if (startContainer.nodeType === 3) {
+          startOffset = 0;
+        }
+      }
+      if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) {
+        endContainer = getNode(endContainer, rng.collapsed ? endOffset : endOffset - 1);
+        if (endContainer.nodeType === 3) {
+          endOffset = endContainer.nodeValue.length;
+        }
+      }
+      startContainer = findParentContentEditable(dom, startContainer);
+      endContainer = findParentContentEditable(dom, endContainer);
+      if (isBookmarkNode$2(startContainer.parentNode) || isBookmarkNode$2(startContainer)) {
+        startContainer = isBookmarkNode$2(startContainer) ? startContainer : startContainer.parentNode;
+        if (rng.collapsed) {
+          startContainer = startContainer.previousSibling || startContainer;
+        } else {
+          startContainer = startContainer.nextSibling || startContainer;
+        }
+        if (startContainer.nodeType === 3) {
+          startOffset = rng.collapsed ? startContainer.length : 0;
+        }
+      }
+      if (isBookmarkNode$2(endContainer.parentNode) || isBookmarkNode$2(endContainer)) {
+        endContainer = isBookmarkNode$2(endContainer) ? endContainer : endContainer.parentNode;
+        if (rng.collapsed) {
+          endContainer = endContainer.nextSibling || endContainer;
+        } else {
+          endContainer = endContainer.previousSibling || endContainer;
+        }
+        if (endContainer.nodeType === 3) {
+          endOffset = rng.collapsed ? 0 : endContainer.length;
+        }
+      }
+      if (rng.collapsed) {
+        endPoint = findWordEndPoint(dom, editor.getBody(), startContainer, startOffset, true, remove);
+        if (endPoint) {
+          startContainer = endPoint.container;
+          startOffset = endPoint.offset;
+        }
+        endPoint = findWordEndPoint(dom, editor.getBody(), endContainer, endOffset, false, remove);
+        if (endPoint) {
+          endContainer = endPoint.container;
+          endOffset = endPoint.offset;
+        }
+      }
+      if (format[0].inline) {
+        endContainer = remove ? endContainer : excludeTrailingWhitespace(endContainer, endOffset);
+      }
+      if (format[0].inline || format[0].block_expand) {
+        if (!format[0].inline || (startContainer.nodeType !== 3 || startOffset === 0)) {
+          startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true);
+        }
+        if (!format[0].inline || (endContainer.nodeType !== 3 || endOffset === endContainer.nodeValue.length)) {
+          endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false);
+        }
+      }
+      if (format[0].selector && format[0].expand !== false && !format[0].inline) {
+        startContainer = findSelectorEndPoint(dom, format, rng, startContainer, 'previousSibling');
+        endContainer = findSelectorEndPoint(dom, format, rng, endContainer, 'nextSibling');
+      }
+      if (format[0].block || format[0].selector) {
+        startContainer = findBlockEndPoint(editor, format, startContainer, 'previousSibling');
+        endContainer = findBlockEndPoint(editor, format, endContainer, 'nextSibling');
+        if (format[0].block) {
+          if (!dom.isBlock(startContainer)) {
+            startContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, true);
+          }
+          if (!dom.isBlock(endContainer)) {
+            endContainer = findParentContainer(dom, format, startContainer, startOffset, endContainer, endOffset, false);
+          }
+        }
+      }
+      if (startContainer.nodeType === 1) {
+        startOffset = dom.nodeIndex(startContainer);
+        startContainer = startContainer.parentNode;
+      }
+      if (endContainer.nodeType === 1) {
+        endOffset = dom.nodeIndex(endContainer) + 1;
+        endContainer = endContainer.parentNode;
+      }
+      return {
+        startContainer: startContainer,
+        startOffset: startOffset,
+        endContainer: endContainer,
+        endOffset: endOffset
+      };
+    };
+    var ExpandRange = { expandRng: expandRng };
+
+    var each$8 = Tools.each;
+    var getEndChild = function (container, index) {
+      var childNodes = container.childNodes;
+      index--;
+      if (index > childNodes.length - 1) {
+        index = childNodes.length - 1;
+      } else if (index < 0) {
+        index = 0;
+      }
+      return childNodes[index] || container;
+    };
+    var walk$1 = function (dom, rng, callback) {
+      var startContainer = rng.startContainer;
+      var startOffset = rng.startOffset;
+      var endContainer = rng.endContainer;
+      var endOffset = rng.endOffset;
+      var ancestor;
+      var startPoint;
+      var endPoint;
+      var node;
+      var parent;
+      var siblings;
+      var nodes;
+      nodes = dom.select('td[data-mce-selected],th[data-mce-selected]');
+      if (nodes.length > 0) {
+        each$8(nodes, function (node) {
+          callback([node]);
+        });
+        return;
+      }
+      var exclude = function (nodes) {
+        var node;
+        node = nodes[0];
+        if (node.nodeType === 3 && node === startContainer && startOffset >= node.nodeValue.length) {
+          nodes.splice(0, 1);
+        }
+        node = nodes[nodes.length - 1];
+        if (endOffset === 0 && nodes.length > 0 && node === endContainer && node.nodeType === 3) {
+          nodes.splice(nodes.length - 1, 1);
+        }
+        return nodes;
+      };
+      var collectSiblings = function (node, name, endNode) {
+        var siblings = [];
+        for (; node && node !== endNode; node = node[name]) {
+          siblings.push(node);
+        }
+        return siblings;
+      };
+      var findEndPoint = function (node, root) {
+        do {
+          if (node.parentNode === root) {
+            return node;
+          }
+          node = node.parentNode;
+        } while (node);
+      };
+      var walkBoundary = function (startNode, endNode, next) {
+        var siblingName = next ? 'nextSibling' : 'previousSibling';
+        for (node = startNode, parent = node.parentNode; node && node !== endNode; node = parent) {
+          parent = node.parentNode;
+          siblings = collectSiblings(node === startNode ? node : node[siblingName], siblingName);
+          if (siblings.length) {
+            if (!next) {
+              siblings.reverse();
+            }
+            callback(exclude(siblings));
+          }
+        }
+      };
+      if (startContainer.nodeType === 1 && startContainer.hasChildNodes()) {
+        startContainer = startContainer.childNodes[startOffset];
+      }
+      if (endContainer.nodeType === 1 && endContainer.hasChildNodes()) {
+        endContainer = getEndChild(endContainer, endOffset);
+      }
+      if (startContainer === endContainer) {
+        return callback(exclude([startContainer]));
+      }
+      ancestor = dom.findCommonAncestor(startContainer, endContainer);
+      for (node = startContainer; node; node = node.parentNode) {
+        if (node === endContainer) {
+          return walkBoundary(startContainer, ancestor, true);
+        }
+        if (node === ancestor) {
+          break;
+        }
+      }
+      for (node = endContainer; node; node = node.parentNode) {
+        if (node === startContainer) {
+          return walkBoundary(endContainer, ancestor);
+        }
+        if (node === ancestor) {
+          break;
+        }
+      }
+      startPoint = findEndPoint(startContainer, ancestor) || startContainer;
+      endPoint = findEndPoint(endContainer, ancestor) || endContainer;
+      walkBoundary(startContainer, startPoint, true);
+      siblings = collectSiblings(startPoint === startContainer ? startPoint : startPoint.nextSibling, 'nextSibling', endPoint === endContainer ? endPoint.nextSibling : endPoint);
+      if (siblings.length) {
+        callback(exclude(siblings));
+      }
+      walkBoundary(endContainer, endPoint);
+    };
+    var RangeWalk = { walk: walk$1 };
+
+    var zeroWidth = function () {
+      return '\uFEFF';
+    };
+
+    function NodeValue (is, name) {
+      var get = function (element) {
+        if (!is(element)) {
+          throw new Error('Can only get ' + name + ' value of a ' + name + ' node');
+        }
+        return getOption(element).getOr('');
+      };
+      var getOptionIE10 = function (element) {
+        try {
+          return getOptionSafe(element);
+        } catch (e) {
+          return Option.none();
+        }
+      };
+      var getOptionSafe = function (element) {
+        return is(element) ? Option.from(element.dom().nodeValue) : Option.none();
+      };
+      var browser = PlatformDetection$1.detect().browser;
+      var getOption = browser.isIE() && browser.version.major === 10 ? getOptionIE10 : getOptionSafe;
+      var set = function (element, value) {
+        if (!is(element)) {
+          throw new Error('Can only set raw ' + name + ' value of a ' + name + ' node');
+        }
+        element.dom().nodeValue = value;
+      };
+      return {
+        get: get,
+        getOption: getOption,
+        set: set
+      };
+    }
+
+    var api = NodeValue(isText, 'text');
+    var get$5 = function (element) {
+      return api.get(element);
+    };
+
+    var isZeroWidth = function (elem) {
+      return isText(elem) && get$5(elem) === zeroWidth();
+    };
+    var context = function (editor, elem, wrapName, nodeName) {
+      return parent(elem).fold(function () {
+        return 'skipping';
+      }, function (parent) {
+        if (nodeName === 'br' || isZeroWidth(elem)) {
+          return 'valid';
+        } else if (isAnnotation(elem)) {
+          return 'existing';
+        } else if (isCaretNode(elem)) {
+          return 'caret';
+        } else if (!FormatUtils.isValid(editor, wrapName, nodeName) || !FormatUtils.isValid(editor, name(parent), wrapName)) {
+          return 'invalid-child';
+        } else {
+          return 'valid';
+        }
+      });
+    };
+
+    var shouldApplyToTrailingSpaces = function (rng) {
+      return rng.startContainer.nodeType === 3 && rng.startContainer.nodeValue.length >= rng.startOffset && rng.startContainer.nodeValue[rng.startOffset] === '\xA0';
+    };
+    var applyWordGrab = function (editor, rng) {
+      var r = ExpandRange.expandRng(editor, rng, [{ inline: true }], shouldApplyToTrailingSpaces(rng));
+      rng.setStart(r.startContainer, r.startOffset);
+      rng.setEnd(r.endContainer, r.endOffset);
+      editor.selection.setRng(rng);
+    };
+    var makeAnnotation = function (eDoc, _a, annotationName, decorate) {
+      var _b = _a.uid, uid = _b === void 0 ? generate('mce-annotation') : _b, data = __rest(_a, ['uid']);
+      var master = Element.fromTag('span', eDoc);
+      add$3(master, annotation());
+      set(master, '' + dataAnnotationId(), uid);
+      set(master, '' + dataAnnotation(), annotationName);
+      var _c = decorate(uid, data), _d = _c.attributes, attributes = _d === void 0 ? {} : _d, _e = _c.classes, classes = _e === void 0 ? [] : _e;
+      setAll(master, attributes);
+      add$4(master, classes);
+      return master;
+    };
+    var annotate = function (editor, rng, annotationName, decorate, data) {
+      var newWrappers = [];
+      var master = makeAnnotation(editor.getDoc(), data, annotationName, decorate);
+      var wrapper = Cell(Option.none());
+      var finishWrapper = function () {
+        wrapper.set(Option.none());
+      };
+      var getOrOpenWrapper = function () {
+        return wrapper.get().getOrThunk(function () {
+          var nu = shallow(master);
+          newWrappers.push(nu);
+          wrapper.set(Option.some(nu));
+          return nu;
+        });
+      };
+      var processElements = function (elems) {
+        each(elems, processElement);
+      };
+      var processElement = function (elem) {
+        var ctx = context(editor, elem, 'span', name(elem));
+        switch (ctx) {
+        case 'invalid-child': {
+            finishWrapper();
+            var children$1 = children(elem);
+            processElements(children$1);
+            finishWrapper();
+            break;
+          }
+        case 'valid': {
+            var w = getOrOpenWrapper();
+            wrap$1(elem, w);
+            break;
+          }
+        case 'skipping':
+        case 'existing':
+        case 'caret':
+        }
+      };
+      var processNodes = function (nodes) {
+        var elems = map(nodes, Element.fromDom);
+        processElements(elems);
+      };
+      RangeWalk.walk(editor.dom, rng, function (nodes) {
+        finishWrapper();
+        processNodes(nodes);
+      });
+      return newWrappers;
+    };
+    var annotateWithBookmark = function (editor, name, settings, data) {
+      editor.undoManager.transact(function () {
+        var initialRng = editor.selection.getRng();
+        if (initialRng.collapsed) {
+          applyWordGrab(editor, initialRng);
+        }
+        if (editor.selection.getRng().collapsed) {
+          var wrapper = makeAnnotation(editor.getDoc(), data, name, settings.decorate);
+          set$1(wrapper, '\xA0');
+          editor.selection.getRng().insertNode(wrapper.dom());
+          editor.selection.select(wrapper.dom());
+        } else {
+          var bookmark = GetBookmark.getPersistentBookmark(editor.selection, false);
+          var rng = editor.selection.getRng();
+          annotate(editor, rng, name, settings.decorate, data);
+          editor.selection.moveToBookmark(bookmark);
+        }
+      });
+    };
+
+    var Annotator = function (editor) {
+      var registry = create$1();
+      setup$1(editor, registry);
+      var changes = setup(editor, registry);
+      return {
+        register: function (name, settings) {
+          registry.register(name, settings);
+        },
+        annotate: function (name, data) {
+          registry.lookup(name).each(function (settings) {
+            annotateWithBookmark(editor, name, settings, data);
+          });
+        },
+        annotationChanged: function (name, callback) {
+          changes.addListener(name, callback);
+        },
+        remove: function (name) {
+          identify(editor, Option.some(name)).each(function (_a) {
+            var elements = _a.elements;
+            each(elements, unwrap);
+          });
+        },
+        getAll: function (name) {
+          var directory = findAll(editor, name);
+          return map$2(directory, function (elems) {
+            return map(elems, function (elem) {
+              return elem.dom();
+            });
+          });
+        }
+      };
+    };
+
+    var whiteSpaceRegExp$3 = /^[ \t\r\n]*$/;
+    var typeLookup = {
+      '#text': 3,
+      '#comment': 8,
+      '#cdata': 4,
+      '#pi': 7,
+      '#doctype': 10,
+      '#document-fragment': 11
+    };
+    var walk$2 = function (node, root, prev) {
+      var sibling;
+      var parent;
+      var startName = prev ? 'lastChild' : 'firstChild';
+      var siblingName = prev ? 'prev' : 'next';
+      if (node[startName]) {
+        return node[startName];
+      }
+      if (node !== root) {
+        sibling = node[siblingName];
+        if (sibling) {
+          return sibling;
+        }
+        for (parent = node.parent; parent && parent !== root; parent = parent.parent) {
+          sibling = parent[siblingName];
+          if (sibling) {
+            return sibling;
+          }
+        }
+      }
+    };
+    var Node$1 = function () {
+      function Node(name, type) {
+        this.name = name;
+        this.type = type;
+        if (type === 1) {
+          this.attributes = [];
+          this.attributes.map = {};
+        }
+      }
+      Node.create = function (name, attrs) {
+        var node, attrName;
+        node = new Node(name, typeLookup[name] || 1);
+        if (attrs) {
+          for (attrName in attrs) {
+            node.attr(attrName, attrs[attrName]);
+          }
+        }
+        return node;
+      };
+      Node.prototype.replace = function (node) {
+        var self = this;
+        if (node.parent) {
+          node.remove();
+        }
+        self.insert(node, self);
+        self.remove();
+        return self;
+      };
+      Node.prototype.attr = function (name, value) {
+        var self = this;
+        var attrs, i;
+        if (typeof name !== 'string') {
+          for (i in name) {
+            self.attr(i, name[i]);
+          }
+          return self;
+        }
+        if (attrs = self.attributes) {
+          if (value !== undefined) {
+            if (value === null) {
+              if (name in attrs.map) {
+                delete attrs.map[name];
+                i = attrs.length;
+                while (i--) {
+                  if (attrs[i].name === name) {
+                    attrs = attrs.splice(i, 1);
+                    return self;
+                  }
+                }
+              }
+              return self;
+            }
+            if (name in attrs.map) {
+              i = attrs.length;
+              while (i--) {
+                if (attrs[i].name === name) {
+                  attrs[i].value = value;
+                  break;
+                }
+              }
+            } else {
+              attrs.push({
+                name: name,
+                value: value
+              });
+            }
+            attrs.map[name] = value;
+            return self;
+          }
+          return attrs.map[name];
+        }
+      };
+      Node.prototype.clone = function () {
+        var self = this;
+        var clone = new Node(self.name, self.type);
+        var i, l, selfAttrs, selfAttr, cloneAttrs;
+        if (selfAttrs = self.attributes) {
+          cloneAttrs = [];
+          cloneAttrs.map = {};
+          for (i = 0, l = selfAttrs.length; i < l; i++) {
+            selfAttr = selfAttrs[i];
+            if (selfAttr.name !== 'id') {
+              cloneAttrs[cloneAttrs.length] = {
+                name: selfAttr.name,
+                value: selfAttr.value
+              };
+              cloneAttrs.map[selfAttr.name] = selfAttr.value;
+            }
+          }
+          clone.attributes = cloneAttrs;
+        }
+        clone.value = self.value;
+        clone.shortEnded = self.shortEnded;
+        return clone;
+      };
+      Node.prototype.wrap = function (wrapper) {
+        var self = this;
+        self.parent.insert(wrapper, self);
+        wrapper.append(self);
+        return self;
+      };
+      Node.prototype.unwrap = function () {
+        var self = this;
+        var node, next;
+        for (node = self.firstChild; node;) {
+          next = node.next;
+          self.insert(node, self, true);
+          node = next;
+        }
+        self.remove();
+      };
+      Node.prototype.remove = function () {
+        var self = this, parent = self.parent, next = self.next, prev = self.prev;
+        if (parent) {
+          if (parent.firstChild === self) {
+            parent.firstChild = next;
+            if (next) {
+              next.prev = null;
+            }
+          } else {
+            prev.next = next;
+          }
+          if (parent.lastChild === self) {
+            parent.lastChild = prev;
+            if (prev) {
+              prev.next = null;
+            }
+          } else {
+            next.prev = prev;
+          }
+          self.parent = self.next = self.prev = null;
+        }
+        return self;
+      };
+      Node.prototype.append = function (node) {
+        var self = this;
+        var last;
+        if (node.parent) {
+          node.remove();
+        }
+        last = self.lastChild;
+        if (last) {
+          last.next = node;
+          node.prev = last;
+          self.lastChild = node;
+        } else {
+          self.lastChild = self.firstChild = node;
+        }
+        node.parent = self;
+        return node;
+      };
+      Node.prototype.insert = function (node, refNode, before) {
+        var parent;
+        if (node.parent) {
+          node.remove();
+        }
+        parent = refNode.parent || this;
+        if (before) {
+          if (refNode === parent.firstChild) {
+            parent.firstChild = node;
+          } else {
+            refNode.prev.next = node;
+          }
+          node.prev = refNode.prev;
+          node.next = refNode;
+          refNode.prev = node;
+        } else {
+          if (refNode === parent.lastChild) {
+            parent.lastChild = node;
+          } else {
+            refNode.next.prev = node;
+          }
+          node.next = refNode.next;
+          node.prev = refNode;
+          refNode.next = node;
+        }
+        node.parent = parent;
+        return node;
+      };
+      Node.prototype.getAll = function (name) {
+        var self = this;
+        var node;
+        var collection = [];
+        for (node = self.firstChild; node; node = walk$2(node, self)) {
+          if (node.name === name) {
+            collection.push(node);
+          }
+        }
+        return collection;
+      };
+      Node.prototype.empty = function () {
+        var self = this;
+        var nodes, i, node;
+        if (self.firstChild) {
+          nodes = [];
+          for (node = self.firstChild; node; node = walk$2(node, self)) {
+            nodes.push(node);
+          }
+          i = nodes.length;
+          while (i--) {
+            node = nodes[i];
+            node.parent = node.firstChild = node.lastChild = node.next = node.prev = null;
+          }
+        }
+        self.firstChild = self.lastChild = null;
+        return self;
+      };
+      Node.prototype.isEmpty = function (elements, whitespace, predicate) {
+        var self = this;
+        var node = self.firstChild, i, name;
+        whitespace = whitespace || {};
+        if (node) {
+          do {
+            if (node.type === 1) {
+              if (node.attr('data-mce-bogus')) {
+                continue;
+              }
+              if (elements[node.name]) {
+                return false;
+              }
+              i = node.attributes.length;
+              while (i--) {
+                name = node.attributes[i].name;
+                if (name === 'name' || name.indexOf('data-mce-bookmark') === 0) {
+                  return false;
+                }
+              }
+            }
+            if (node.type === 8) {
+              return false;
+            }
+            if (node.type === 3 && !whiteSpaceRegExp$3.test(node.value)) {
+              return false;
+            }
+            if (node.type === 3 && node.parent && whitespace[node.parent.name] && whiteSpaceRegExp$3.test(node.value)) {
+              return false;
+            }
+            if (predicate && predicate(node)) {
+              return false;
+            }
+          } while (node = walk$2(node, self));
+        }
+        return true;
+      };
+      Node.prototype.walk = function (prev) {
+        return walk$2(this, null, prev);
+      };
+      return Node;
+    }();
+
+    var isValidPrefixAttrName = function (name) {
+      return name.indexOf('data-') === 0 || name.indexOf('aria-') === 0;
+    };
+    var trimComments = function (text) {
+      return text.replace(/<!--|-->/g, '');
+    };
+    var isInvalidUri = function (settings, uri) {
+      if (settings.allow_html_data_urls) {
+        return false;
+      } else if (/^data:image\//i.test(uri)) {
+        return settings.allow_svg_data_urls === false && /^data:image\/svg\+xml/i.test(uri);
+      } else {
+        return /^data:/i.test(uri);
+      }
+    };
+    var findEndTagIndex = function (schema, html, startIndex) {
+      var count = 1, index, matches, tokenRegExp, shortEndedElements;
+      shortEndedElements = schema.getShortEndedElements();
+      tokenRegExp = /<([!?\/])?([A-Za-z0-9\-_\:\.]+)((?:\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\/|\s+)>/g;
+      tokenRegExp.lastIndex = index = startIndex;
+      while (matches = tokenRegExp.exec(html)) {
+        index = tokenRegExp.lastIndex;
+        if (matches[1] === '/') {
+          count--;
+        } else if (!matches[1]) {
+          if (matches[2] in shortEndedElements) {
+            continue;
+          }
+          count++;
+        }
+        if (count === 0) {
+          break;
+        }
+      }
+      return index;
+    };
+    var checkBogusAttribute = function (regExp, attrString) {
+      var matches = regExp.exec(attrString);
+      if (matches) {
+        var name = matches[1];
+        var value = matches[2];
+        return typeof name === 'string' && name.toLowerCase() === 'data-mce-bogus' ? value : null;
+      } else {
+        return null;
+      }
+    };
+    function SaxParser(settings, schema) {
+      if (schema === void 0) {
+        schema = Schema();
+      }
+      var noop = function () {
+      };
+      settings = settings || {};
+      if (settings.fix_self_closing !== false) {
+        settings.fix_self_closing = true;
+      }
+      var comment = settings.comment ? settings.comment : noop;
+      var cdata = settings.cdata ? settings.cdata : noop;
+      var text = settings.text ? settings.text : noop;
+      var start = settings.start ? settings.start : noop;
+      var end = settings.end ? settings.end : noop;
+      var pi = settings.pi ? settings.pi : noop;
+      var doctype = settings.doctype ? settings.doctype : noop;
+      var parse = function (html) {
+        var matches, index = 0, value, endRegExp;
+        var stack = [];
+        var attrList, i, textData, name;
+        var isInternalElement, removeInternalElements, shortEndedElements, fillAttrsMap, isShortEnded;
+        var validate, elementRule, isValidElement, attr, attribsValue, validAttributesMap, validAttributePatterns;
+        var attributesRequired, attributesDefault, attributesForced, processHtml;
+        var anyAttributesRequired, selfClosing, tokenRegExp, attrRegExp, specialElements, attrValue, idCount = 0;
+        var decode = Entities.decode;
+        var fixSelfClosing;
+        var filteredUrlAttrs = Tools.makeMap('src,href,data,background,formaction,poster,xlink:href');
+        var scriptUriRegExp = /((java|vb)script|mhtml):/i;
+        var processEndTag = function (name) {
+          var pos, i;
+          pos = stack.length;
+          while (pos--) {
+            if (stack[pos].name === name) {
+              break;
+            }
+          }
+          if (pos >= 0) {
+            for (i = stack.length - 1; i >= pos; i--) {
+              name = stack[i];
+              if (name.valid) {
+                end(name.name);
+              }
+            }
+            stack.length = pos;
+          }
+        };
+        var parseAttribute = function (match, name, value, val2, val3) {
+          var attrRule, i;
+          var trimRegExp = /[\s\u0000-\u001F]+/g;
+          name = name.toLowerCase();
+          value = name in fillAttrsMap ? name : decode(value || val2 || val3 || '');
+          if (validate && !isInternalElement && isValidPrefixAttrName(name) === false) {
+            attrRule = validAttributesMap[name];
+            if (!attrRule && validAttributePatterns) {
+              i = validAttributePatterns.length;
+              while (i--) {
+                attrRule = validAttributePatterns[i];
+                if (attrRule.pattern.test(name)) {
+                  break;
+                }
+              }
+              if (i === -1) {
+                attrRule = null;
+              }
+            }
+            if (!attrRule) {
+              return;
+            }
+            if (attrRule.validValues && !(value in attrRule.validValues)) {
+              return;
+            }
+          }
+          if (filteredUrlAttrs[name] && !settings.allow_script_urls) {
+            var uri = value.replace(trimRegExp, '');
+            try {
+              uri = decodeURIComponent(uri);
+            } catch (ex) {
+              uri = unescape(uri);
+            }
+            if (scriptUriRegExp.test(uri)) {
+              return;
+            }
+            if (isInvalidUri(settings, uri)) {
+              return;
+            }
+          }
+          if (isInternalElement && (name in filteredUrlAttrs || name.indexOf('on') === 0)) {
+            return;
+          }
+          attrList.map[name] = value;
+          attrList.push({
+            name: name,
+            value: value
+          });
+        };
+        tokenRegExp = new RegExp('<(?:' + '(?:!--([\\w\\W]*?)-->)|' + '(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|' + '(?:!DOCTYPE([\\w\\W]*?)>)|' + '(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|' + '(?:\\/([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)>)|' + '(?:([A-Za-z][A-Za-z0-9\\-_\\:\\.]*)((?:\\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\\/|\\s+)>)' + ')', 'g');
+        attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;
+        shortEndedElements = schema.getShortEndedElements();
+        selfClosing = settings.self_closing_elements || schema.getSelfClosingElements();
+        fillAttrsMap = schema.getBoolAttrs();
+        validate = settings.validate;
+        removeInternalElements = settings.remove_internals;
+        fixSelfClosing = settings.fix_self_closing;
+        specialElements = schema.getSpecialElements();
+        processHtml = html + '>';
+        while (matches = tokenRegExp.exec(processHtml)) {
+          if (index < matches.index) {
+            text(decode(html.substr(index, matches.index - index)));
+          }
+          if (value = matches[6]) {
+            value = value.toLowerCase();
+            if (value.charAt(0) === ':') {
+              value = value.substr(1);
+            }
+            processEndTag(value);
+          } else if (value = matches[7]) {
+            if (matches.index + matches[0].length > html.length) {
+              text(decode(html.substr(matches.index)));
+              index = matches.index + matches[0].length;
+              continue;
+            }
+            value = value.toLowerCase();
+            if (value.charAt(0) === ':') {
+              value = value.substr(1);
+            }
+            isShortEnded = value in shortEndedElements;
+            if (fixSelfClosing && selfClosing[value] && stack.length > 0 && stack[stack.length - 1].name === value) {
+              processEndTag(value);
+            }
+            var bogusValue = checkBogusAttribute(attrRegExp, matches[8]);
+            if (bogusValue !== null) {
+              if (bogusValue === 'all') {
+                index = findEndTagIndex(schema, html, tokenRegExp.lastIndex);
+                tokenRegExp.lastIndex = index;
+                continue;
+              }
+              isValidElement = false;
+            }
+            if (!validate || (elementRule = schema.getElementRule(value))) {
+              isValidElement = true;
+              if (validate) {
+                validAttributesMap = elementRule.attributes;
+                validAttributePatterns = elementRule.attributePatterns;
+              }
+              if (attribsValue = matches[8]) {
+                isInternalElement = attribsValue.indexOf('data-mce-type') !== -1;
+                if (isInternalElement && removeInternalElements) {
+                  isValidElement = false;
+                }
+                attrList = [];
+                attrList.map = {};
+                attribsValue.replace(attrRegExp, parseAttribute);
+              } else {
+                attrList = [];
+                attrList.map = {};
+              }
+              if (validate && !isInternalElement) {
+                attributesRequired = elementRule.attributesRequired;
+                attributesDefault = elementRule.attributesDefault;
+                attributesForced = elementRule.attributesForced;
+                anyAttributesRequired = elementRule.removeEmptyAttrs;
+                if (anyAttributesRequired && !attrList.length) {
+                  isValidElement = false;
+                }
+                if (attributesForced) {
+                  i = attributesForced.length;
+                  while (i--) {
+                    attr = attributesForced[i];
+                    name = attr.name;
+                    attrValue = attr.value;
+                    if (attrValue === '{$uid}') {
+                      attrValue = 'mce_' + idCount++;
+                    }
+                    attrList.map[name] = attrValue;
+                    attrList.push({
+                      name: name,
+                      value: attrValue
+                    });
+                  }
+                }
+                if (attributesDefault) {
+                  i = attributesDefault.length;
+                  while (i--) {
+                    attr = attributesDefault[i];
+                    name = attr.name;
+                    if (!(name in attrList.map)) {
+                      attrValue = attr.value;
+                      if (attrValue === '{$uid}') {
+                        attrValue = 'mce_' + idCount++;
+                      }
+                      attrList.map[name] = attrValue;
+                      attrList.push({
+                        name: name,
+                        value: attrValue
+                      });
+                    }
+                  }
+                }
+                if (attributesRequired) {
+                  i = attributesRequired.length;
+                  while (i--) {
+                    if (attributesRequired[i] in attrList.map) {
+                      break;
+                    }
+                  }
+                  if (i === -1) {
+                    isValidElement = false;
+                  }
+                }
+                if (attr = attrList.map['data-mce-bogus']) {
+                  if (attr === 'all') {
+                    index = findEndTagIndex(schema, html, tokenRegExp.lastIndex);
+                    tokenRegExp.lastIndex = index;
+                    continue;
+                  }
+                  isValidElement = false;
+                }
+              }
+              if (isValidElement) {
+                start(value, attrList, isShortEnded);
+              }
+            } else {
+              isValidElement = false;
+            }
+            if (endRegExp = specialElements[value]) {
+              endRegExp.lastIndex = index = matches.index + matches[0].length;
+              if (matches = endRegExp.exec(html)) {
+                if (isValidElement) {
+                  textData = html.substr(index, matches.index - index);
+                }
+                index = matches.index + matches[0].length;
+              } else {
+                textData = html.substr(index);
+                index = html.length;
+              }
+              if (isValidElement) {
+                if (textData.length > 0) {
+                  text(textData, true);
+                }
+                end(value);
+              }
+              tokenRegExp.lastIndex = index;
+              continue;
+            }
+            if (!isShortEnded) {
+              if (!attribsValue || attribsValue.indexOf('/') !== attribsValue.length - 1) {
+                stack.push({
+                  name: value,
+                  valid: isValidElement
+                });
+              } else if (isValidElement) {
+                end(value);
+              }
+            }
+          } else if (value = matches[1]) {
+            if (value.charAt(0) === '>') {
+              value = ' ' + value;
+            }
+            if (!settings.allow_conditional_comments && value.substr(0, 3).toLowerCase() === '[if') {
+              value = ' ' + value;
+            }
+            comment(value);
+          } else if (value = matches[2]) {
+            cdata(trimComments(value));
+          } else if (value = matches[3]) {
+            doctype(value);
+          } else if (value = matches[4]) {
+            pi(value, matches[5]);
+          }
+          index = matches.index + matches[0].length;
+        }
+        if (index < html.length) {
+          text(decode(html.substr(index)));
+        }
+        for (i = stack.length - 1; i >= 0; i--) {
+          value = stack[i];
+          if (value.valid) {
+            end(value.name);
+          }
+        }
+      };
+      return { parse: parse };
+    }
+    (function (SaxParser) {
+      SaxParser.findEndTag = findEndTagIndex;
+    }(SaxParser || (SaxParser = {})));
+    var SaxParser$1 = SaxParser;
+
+    var trimHtml = function (tempAttrs, html) {
+      var trimContentRegExp = new RegExp(['\\s?(' + tempAttrs.join('|') + ')="[^"]+"'].join('|'), 'gi');
+      return html.replace(trimContentRegExp, '');
+    };
+    var trimInternal = function (serializer, html) {
+      var content = html;
+      var bogusAllRegExp = /<(\w+) [^>]*data-mce-bogus="all"[^>]*>/g;
+      var endTagIndex, index, matchLength, matches, shortEndedElements;
+      var schema = serializer.schema;
+      content = trimHtml(serializer.getTempAttrs(), content);
+      shortEndedElements = schema.getShortEndedElements();
+      while (matches = bogusAllRegExp.exec(content)) {
+        index = bogusAllRegExp.lastIndex;
+        matchLength = matches[0].length;
+        if (shortEndedElements[matches[1]]) {
+          endTagIndex = index;
+        } else {
+          endTagIndex = SaxParser$1.findEndTag(schema, content, index);
+        }
+        content = content.substring(0, index - matchLength) + content.substring(endTagIndex);
+        bogusAllRegExp.lastIndex = index - matchLength;
+      }
+      return Zwsp.trim(content);
+    };
+    var trimExternal = trimInternal;
+    var TrimHtml = {
+      trimExternal: trimExternal,
+      trimInternal: trimInternal
+    };
+
+    var getBodySetting = function (editor, name, defaultValue) {
+      var value = editor.getParam(name, defaultValue);
+      if (value.indexOf('=') !== -1) {
+        var bodyObj = editor.getParam(name, '', 'hash');
+        return bodyObj.hasOwnProperty(editor.id) ? bodyObj[editor.id] : defaultValue;
+      } else {
+        return value;
+      }
+    };
+    var getIframeAttrs = function (editor) {
+      return editor.getParam('iframe_attrs', {});
+    };
+    var getDocType = function (editor) {
+      return editor.getParam('doctype', '<!DOCTYPE html>');
+    };
+    var getDocumentBaseUrl = function (editor) {
+      return editor.getParam('document_base_url', '');
+    };
+    var getBodyId = function (editor) {
+      return getBodySetting(editor, 'body_id', 'tinymce');
+    };
+    var getBodyClass = function (editor) {
+      return getBodySetting(editor, 'body_class', '');
+    };
+    var getContentSecurityPolicy = function (editor) {
+      return editor.getParam('content_security_policy', '');
+    };
+    var shouldPutBrInPre = function (editor) {
+      return editor.getParam('br_in_pre', true);
+    };
+    var getForcedRootBlock = function (editor) {
+      if (editor.getParam('force_p_newlines', false)) {
+        return 'p';
+      }
+      var block = editor.getParam('forced_root_block', 'p');
+      if (block === false) {
+        return '';
+      } else if (block === true) {
+        return 'p';
+      } else {
+        return block;
+      }
+    };
+    var getForcedRootBlockAttrs = function (editor) {
+      return editor.getParam('forced_root_block_attrs', {});
+    };
+    var getBrNewLineSelector = function (editor) {
+      return editor.getParam('br_newline_selector', '.mce-toc h2,figcaption,caption');
+    };
+    var getNoNewLineSelector = function (editor) {
+      return editor.getParam('no_newline_selector', '');
+    };
+    var shouldKeepStyles = function (editor) {
+      return editor.getParam('keep_styles', true);
+    };
+    var shouldEndContainerOnEmptyBlock = function (editor) {
+      return editor.getParam('end_container_on_empty_block', false);
+    };
+    var getFontStyleValues = function (editor) {
+      return Tools.explode(editor.getParam('font_size_style_values', ''));
+    };
+    var getFontSizeClasses = function (editor) {
+      return Tools.explode(editor.getParam('font_size_classes', ''));
+    };
+    var getImagesDataImgFilter = function (editor) {
+      return editor.getParam('images_dataimg_filter', constant(true), 'function');
+    };
+    var isAutomaticUploadsEnabled = function (editor) {
+      return editor.getParam('automatic_uploads', true, 'boolean');
+    };
+    var shouldReuseFileName = function (editor) {
+      return editor.getParam('images_reuse_filename', false, 'boolean');
+    };
+    var shouldReplaceBlobUris = function (editor) {
+      return editor.getParam('images_replace_blob_uris', true, 'boolean');
+    };
+    var getImageUploadUrl = function (editor) {
+      return editor.getParam('images_upload_url', '', 'string');
+    };
+    var getImageUploadBasePath = function (editor) {
+      return editor.getParam('images_upload_base_path', '', 'string');
+    };
+    var getImagesUploadCredentials = function (editor) {
+      return editor.getParam('images_upload_credentials', false, 'boolean');
+    };
+    var getImagesUploadHandler = function (editor) {
+      return editor.getParam('images_upload_handler', null, 'function');
+    };
+    var shouldUseContentCssCors = function (editor) {
+      return editor.getParam('content_css_cors', false, 'boolean');
+    };
+    var getLanguageCode = function (editor) {
+      return editor.getParam('language', 'en', 'string');
+    };
+    var getLanguageUrl = function (editor) {
+      return editor.getParam('language_url', '', 'string');
+    };
+    var shouldIndentUseMargin = function (editor) {
+      return editor.getParam('indent_use_margin', false);
+    };
+    var getIndentation = function (editor) {
+      return editor.getParam('indentation', '40px', 'string');
+    };
+    var getContentCss = function (editor) {
+      var contentCss = editor.settings.content_css;
+      if (isString(contentCss)) {
+        return map(contentCss.split(','), trim$2);
+      } else if (isArray(contentCss)) {
+        return contentCss;
+      } else if (contentCss === false || editor.inline) {
+        return [];
+      } else {
+        return ['default'];
+      }
+    };
+    var getDirectionality = function (editor) {
+      return editor.getParam('directionality', I18n.isRtl() ? 'rtl' : undefined);
+    };
+    var Settings = {
+      getIframeAttrs: getIframeAttrs,
+      getDocType: getDocType,
+      getDocumentBaseUrl: getDocumentBaseUrl,
+      getBodyId: getBodyId,
+      getBodyClass: getBodyClass,
+      getContentSecurityPolicy: getContentSecurityPolicy,
+      shouldPutBrInPre: shouldPutBrInPre,
+      getForcedRootBlock: getForcedRootBlock,
+      getForcedRootBlockAttrs: getForcedRootBlockAttrs,
+      getBrNewLineSelector: getBrNewLineSelector,
+      getNoNewLineSelector: getNoNewLineSelector,
+      shouldKeepStyles: shouldKeepStyles,
+      shouldEndContainerOnEmptyBlock: shouldEndContainerOnEmptyBlock,
+      getFontStyleValues: getFontStyleValues,
+      getFontSizeClasses: getFontSizeClasses,
+      getImagesDataImgFilter: getImagesDataImgFilter,
+      isAutomaticUploadsEnabled: isAutomaticUploadsEnabled,
+      shouldReuseFileName: shouldReuseFileName,
+      shouldReplaceBlobUris: shouldReplaceBlobUris,
+      getImageUploadUrl: getImageUploadUrl,
+      getImageUploadBasePath: getImageUploadBasePath,
+      getImagesUploadCredentials: getImagesUploadCredentials,
+      getImagesUploadHandler: getImagesUploadHandler,
+      shouldUseContentCssCors: shouldUseContentCssCors,
+      getLanguageCode: getLanguageCode,
+      getLanguageUrl: getLanguageUrl,
+      shouldIndentUseMargin: shouldIndentUseMargin,
+      getIndentation: getIndentation,
+      getContentCss: getContentCss,
+      getDirectionality: getDirectionality
+    };
+
+    var defaultFormat = 'html';
+    var trimEmptyContents = function (editor, html) {
+      var blockName = Settings.getForcedRootBlock(editor);
+      var emptyRegExp = new RegExp('^(<' + blockName + '[^>]*>(&nbsp;|&#160;|\\s|\xA0|<br \\/>|)<\\/' + blockName + '>[\r\n]*|<br \\/>[\r\n]*)$');
+      return html.replace(emptyRegExp, '');
+    };
+    var getContentFromBody = function (editor, args, body) {
+      var content;
+      args.format = args.format ? args.format : defaultFormat;
+      args.get = true;
+      args.getInner = true;
+      if (!args.no_events) {
+        editor.fire('BeforeGetContent', args);
+      }
+      if (args.format === 'raw') {
+        content = Tools.trim(TrimHtml.trimExternal(editor.serializer, body.innerHTML));
+      } else if (args.format === 'text') {
+        content = Zwsp.trim(body.innerText || body.textContent);
+      } else if (args.format === 'tree') {
+        return editor.serializer.serialize(body, args);
+      } else {
+        content = trimEmptyContents(editor, editor.serializer.serialize(body, args));
+      }
+      if (args.format !== 'text' && !isWsPreserveElement(Element.fromDom(body))) {
+        args.content = Tools.trim(content);
+      } else {
+        args.content = content;
+      }
+      if (!args.no_events) {
+        editor.fire('GetContent', args);
+      }
+      return args.content;
+    };
+    var getContent = function (editor, args) {
+      if (args === void 0) {
+        args = {};
+      }
+      return Option.from(editor.getBody()).fold(constant(args.format === 'tree' ? new Node$1('body', 11) : ''), function (body) {
+        return getContentFromBody(editor, args, body);
+      });
+    };
+
+    var makeMap$3 = Tools.makeMap;
+    var Writer = function (settings) {
+      var html = [];
+      var indent, indentBefore, indentAfter, encode, htmlOutput;
+      settings = settings || {};
+      indent = settings.indent;
+      indentBefore = makeMap$3(settings.indent_before || '');
+      indentAfter = makeMap$3(settings.indent_after || '');
+      encode = Entities.getEncodeFunc(settings.entity_encoding || 'raw', settings.entities);
+      htmlOutput = settings.element_format === 'html';
+      return {
+        start: function (name, attrs, empty) {
+          var i, l, attr, value;
+          if (indent && indentBefore[name] && html.length > 0) {
+            value = html[html.length - 1];
+            if (value.length > 0 && value !== '\n') {
+              html.push('\n');
+            }
+          }
+          html.push('<', name);
+          if (attrs) {
+            for (i = 0, l = attrs.length; i < l; i++) {
+              attr = attrs[i];
+              html.push(' ', attr.name, '="', encode(attr.value, true), '"');
+            }
+          }
+          if (!empty || htmlOutput) {
+            html[html.length] = '>';
+          } else {
+            html[html.length] = ' />';
+          }
+          if (empty && indent && indentAfter[name] && html.length > 0) {
+            value = html[html.length - 1];
+            if (value.length > 0 && value !== '\n') {
+              html.push('\n');
+            }
+          }
+        },
+        end: function (name) {
+          var value;
+          html.push('</', name, '>');
+          if (indent && indentAfter[name] && html.length > 0) {
+            value = html[html.length - 1];
+            if (value.length > 0 && value !== '\n') {
+              html.push('\n');
+            }
+          }
+        },
+        text: function (text, raw) {
+          if (text.length > 0) {
+            html[html.length] = raw ? text : encode(text);
+          }
+        },
+        cdata: function (text) {
+          html.push('<![CDATA[', text, ']]>');
+        },
+        comment: function (text) {
+          html.push('<!--', text, '-->');
+        },
+        pi: function (name, text) {
+          if (text) {
+            html.push('<?', name, ' ', encode(text), '?>');
+          } else {
+            html.push('<?', name, '?>');
+          }
+          if (indent) {
+            html.push('\n');
+          }
+        },
+        doctype: function (text) {
+          html.push('<!DOCTYPE', text, '>', indent ? '\n' : '');
+        },
+        reset: function () {
+          html.length = 0;
+        },
+        getContent: function () {
+          return html.join('').replace(/\n$/, '');
+        }
+      };
+    };
+
+    var Serializer = function (settings, schema) {
+      if (schema === void 0) {
+        schema = Schema();
+      }
+      var writer = Writer(settings);
+      settings = settings || {};
+      settings.validate = 'validate' in settings ? settings.validate : true;
+      var serialize = function (node) {
+        var handlers, validate;
+        validate = settings.validate;
+        handlers = {
+          3: function (node) {
+            writer.text(node.value, node.raw);
+          },
+          8: function (node) {
+            writer.comment(node.value);
+          },
+          7: function (node) {
+            writer.pi(node.name, node.value);
+          },
+          10: function (node) {
+            writer.doctype(node.value);
+          },
+          4: function (node) {
+            writer.cdata(node.value);
+          },
+          11: function (node) {
+            if (node = node.firstChild) {
+              do {
+                walk(node);
+              } while (node = node.next);
+            }
+          }
+        };
+        writer.reset();
+        var walk = function (node) {
+          var handler = handlers[node.type];
+          var name, isEmpty, attrs, attrName, attrValue, sortedAttrs, i, l, elementRule;
+          if (!handler) {
+            name = node.name;
+            isEmpty = node.shortEnded;
+            attrs = node.attributes;
+            if (validate && attrs && attrs.length > 1) {
+              sortedAttrs = [];
+              sortedAttrs.map = {};
+              elementRule = schema.getElementRule(node.name);
+              if (elementRule) {
+                for (i = 0, l = elementRule.attributesOrder.length; i < l; i++) {
+                  attrName = elementRule.attributesOrder[i];
+                  if (attrName in attrs.map) {
+                    attrValue = attrs.map[attrName];
+                    sortedAttrs.map[attrName] = attrValue;
+                    sortedAttrs.push({
+                      name: attrName,
+                      value: attrValue
+                    });
+                  }
+                }
+                for (i = 0, l = attrs.length; i < l; i++) {
+                  attrName = attrs[i].name;
+                  if (!(attrName in sortedAttrs.map)) {
+                    attrValue = attrs.map[attrName];
+                    sortedAttrs.map[attrName] = attrValue;
+                    sortedAttrs.push({
+                      name: attrName,
+                      value: attrValue
+                    });
+                  }
+                }
+                attrs = sortedAttrs;
+              }
+            }
+            writer.start(node.name, attrs, isEmpty);
+            if (!isEmpty) {
+              if (node = node.firstChild) {
+                do {
+                  walk(node);
+                } while (node = node.next);
+              }
+              writer.end(name);
+            }
+          } else {
+            handler(node);
+          }
+        };
+        if (node.type === 1 && !settings.inner) {
+          walk(node);
+        } else {
+          handlers[11](node);
+        }
+        return writer.getContent();
+      };
+      return { serialize: serialize };
+    };
+
+    var traverse = function (node, fn) {
+      fn(node);
+      if (node.firstChild) {
+        traverse(node.firstChild, fn);
+      }
+      if (node.next) {
+        traverse(node.next, fn);
+      }
+    };
+    var findMatchingNodes = function (nodeFilters, attributeFilters, node) {
+      var nodeMatches = {};
+      var attrMatches = {};
+      var matches = [];
+      if (node.firstChild) {
+        traverse(node.firstChild, function (node) {
+          each(nodeFilters, function (filter) {
+            if (filter.name === node.name) {
+              if (nodeMatches[filter.name]) {
+                nodeMatches[filter.name].nodes.push(node);
+              } else {
+                nodeMatches[filter.name] = {
+                  filter: filter,
+                  nodes: [node]
+                };
+              }
+            }
+          });
+          each(attributeFilters, function (filter) {
+            if (typeof node.attr(filter.name) === 'string') {
+              if (attrMatches[filter.name]) {
+                attrMatches[filter.name].nodes.push(node);
+              } else {
+                attrMatches[filter.name] = {
+                  filter: filter,
+                  nodes: [node]
+                };
+              }
+            }
+          });
+        });
+      }
+      for (var name in nodeMatches) {
+        if (nodeMatches.hasOwnProperty(name)) {
+          matches.push(nodeMatches[name]);
+        }
+      }
+      for (var name in attrMatches) {
+        if (attrMatches.hasOwnProperty(name)) {
+          matches.push(attrMatches[name]);
+        }
+      }
+      return matches;
+    };
+    var filter$2 = function (nodeFilters, attributeFilters, node) {
+      var matches = findMatchingNodes(nodeFilters, attributeFilters, node);
+      each(matches, function (match) {
+        each(match.filter.callbacks, function (callback) {
+          callback(match.nodes, match.filter.name, {});
+        });
+      });
+    };
+
+    var hasFocus = function (element) {
+      var doc = owner(element).dom();
+      return element.dom() === doc.activeElement;
+    };
+    var active = function (_DOC) {
+      var doc = _DOC !== undefined ? _DOC.dom() : domGlobals.document;
+      return Option.from(doc.activeElement).map(Element.fromDom);
+    };
+    var search = function (element) {
+      return active(owner(element)).filter(function (e) {
+        return element.dom().contains(e.dom());
+      });
+    };
+
+    var generate$1 = function (cases) {
+      if (!isArray(cases)) {
+        throw new Error('cases must be an array');
+      }
+      if (cases.length === 0) {
+        throw new Error('there must be at least one case');
+      }
+      var constructors = [];
+      var adt = {};
+      each(cases, function (acase, count) {
+        var keys$1 = keys(acase);
+        if (keys$1.length !== 1) {
+          throw new Error('one and only one name per case');
+        }
+        var key = keys$1[0];
+        var value = acase[key];
+        if (adt[key] !== undefined) {
+          throw new Error('duplicate key detected:' + key);
+        } else if (key === 'cata') {
+          throw new Error('cannot have a case named cata (sorry)');
+        } else if (!isArray(value)) {
+          throw new Error('case arguments must be an array');
+        }
+        constructors.push(key);
+        adt[key] = function () {
+          var argLength = arguments.length;
+          if (argLength !== value.length) {
+            throw new Error('Wrong number of arguments to case ' + key + '. Expected ' + value.length + ' (' + value + '), got ' + argLength);
+          }
+          var args = new Array(argLength);
+          for (var i = 0; i < args.length; i++)
+            args[i] = arguments[i];
+          var match = function (branches) {
+            var branchKeys = keys(branches);
+            if (constructors.length !== branchKeys.length) {
+              throw new Error('Wrong number of arguments to match. Expected: ' + constructors.join(',') + '\nActual: ' + branchKeys.join(','));
+            }
+            var allReqd = forall(constructors, function (reqKey) {
+              return contains(branchKeys, reqKey);
+            });
+            if (!allReqd)
+              throw new Error('Not all branches were specified when using match. Specified: ' + branchKeys.join(', ') + '\nRequired: ' + constructors.join(', '));
+            return branches[key].apply(null, args);
+          };
+          return {
+            fold: function () {
+              if (arguments.length !== cases.length) {
+                throw new Error('Wrong number of arguments to fold. Expected ' + cases.length + ', got ' + arguments.length);
+              }
+              var target = arguments[count];
+              return target.apply(null, args);
+            },
+            match: match,
+            log: function (label) {
+              domGlobals.console.log(label, {
+                constructors: constructors,
+                constructor: key,
+                params: args
+              });
+            }
+          };
+        };
+      });
+      return adt;
+    };
+    var Adt = { generate: generate$1 };
+
+    var adt = Adt.generate([
+      { before: ['element'] },
+      {
+        on: [
+          'element',
+          'offset'
+        ]
+      },
+      { after: ['element'] }
+    ]);
+
+    var type$1 = Adt.generate([
+      { domRange: ['rng'] },
+      {
+        relative: [
+          'startSitu',
+          'finishSitu'
+        ]
+      },
+      {
+        exact: [
+          'start',
+          'soffset',
+          'finish',
+          'foffset'
+        ]
+      }
+    ]);
+    var range$1 = Immutable('start', 'soffset', 'finish', 'foffset');
+
+    var browser$3 = PlatformDetection$1.detect().browser;
+    var clamp = function (offset, element) {
+      var max = isText(element) ? get$5(element).length : children(element).length + 1;
+      if (offset > max) {
+        return max;
+      } else if (offset < 0) {
+        return 0;
+      }
+      return offset;
+    };
+    var normalizeRng = function (rng) {
+      return range$1(rng.start(), clamp(rng.soffset(), rng.start()), rng.finish(), clamp(rng.foffset(), rng.finish()));
+    };
+    var isOrContains = function (root, elm) {
+      return contains$3(root, elm) || eq(root, elm);
+    };
+    var isRngInRoot = function (root) {
+      return function (rng) {
+        return isOrContains(root, rng.start()) && isOrContains(root, rng.finish());
+      };
+    };
+    var shouldStore = function (editor) {
+      return editor.inline === true || browser$3.isIE();
+    };
+    var nativeRangeToSelectionRange = function (r) {
+      return range$1(Element.fromDom(r.startContainer), r.startOffset, Element.fromDom(r.endContainer), r.endOffset);
+    };
+    var readRange = function (win) {
+      var selection = win.getSelection();
+      var rng = !selection || selection.rangeCount === 0 ? Option.none() : Option.from(selection.getRangeAt(0));
+      return rng.map(nativeRangeToSelectionRange);
+    };
+    var getBookmark$2 = function (root) {
+      var win = defaultView(root);
+      return readRange(win.dom()).filter(isRngInRoot(root));
+    };
+    var validate = function (root, bookmark) {
+      return Option.from(bookmark).filter(isRngInRoot(root)).map(normalizeRng);
+    };
+    var bookmarkToNativeRng = function (bookmark) {
+      var rng = domGlobals.document.createRange();
+      try {
+        rng.setStart(bookmark.start().dom(), bookmark.soffset());
+        rng.setEnd(bookmark.finish().dom(), bookmark.foffset());
+        return Option.some(rng);
+      } catch (_) {
+        return Option.none();
+      }
+    };
+    var store = function (editor) {
+      var newBookmark = shouldStore(editor) ? getBookmark$2(Element.fromDom(editor.getBody())) : Option.none();
+      editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark;
+    };
+    var storeNative = function (editor, rng) {
+      var root = Element.fromDom(editor.getBody());
+      var range = shouldStore(editor) ? Option.from(rng) : Option.none();
+      var newBookmark = range.map(nativeRangeToSelectionRange).filter(isRngInRoot(root));
+      editor.bookmark = newBookmark.isSome() ? newBookmark : editor.bookmark;
+    };
+    var getRng = function (editor) {
+      var bookmark = editor.bookmark ? editor.bookmark : Option.none();
+      return bookmark.bind(curry(validate, Element.fromDom(editor.getBody()))).bind(bookmarkToNativeRng);
+    };
+    var restore = function (editor) {
+      getRng(editor).each(function (rng) {
+        editor.selection.setRng(rng);
+      });
+    };
+    var SelectionBookmark = {
+      store: store,
+      storeNative: storeNative,
+      readRange: readRange,
+      restore: restore,
+      getRng: getRng,
+      getBookmark: getBookmark$2,
+      validate: validate
+    };
+
+    var getContentEditableHost = function (editor, node) {
+      return editor.dom.getParent(node, function (node) {
+        return editor.dom.getContentEditable(node) === 'true';
+      });
+    };
+    var getCollapsedNode = function (rng) {
+      return rng.collapsed ? Option.from(getNode(rng.startContainer, rng.startOffset)).map(Element.fromDom) : Option.none();
+    };
+    var getFocusInElement = function (root, rng) {
+      return getCollapsedNode(rng).bind(function (node) {
+        if (isTableSection(node)) {
+          return Option.some(node);
+        } else if (contains$3(root, node) === false) {
+          return Option.some(root);
+        } else {
+          return Option.none();
+        }
+      });
+    };
+    var normalizeSelection = function (editor, rng) {
+      getFocusInElement(Element.fromDom(editor.getBody()), rng).bind(function (elm) {
+        return CaretFinder.firstPositionIn(elm.dom());
+      }).fold(function () {
+        editor.selection.normalize();
+        return;
+      }, function (caretPos) {
+        return editor.selection.setRng(caretPos.toRange());
+      });
+    };
+    var focusBody = function (body) {
+      if (body.setActive) {
+        try {
+          body.setActive();
+        } catch (ex) {
+          body.focus();
+        }
+      } else {
+        body.focus();
+      }
+    };
+    var hasElementFocus = function (elm) {
+      return hasFocus(elm) || search(elm).isSome();
+    };
+    var hasIframeFocus = function (editor) {
+      return editor.iframeElement && hasFocus(Element.fromDom(editor.iframeElement));
+    };
+    var hasInlineFocus = function (editor) {
+      var rawBody = editor.getBody();
+      return rawBody && hasElementFocus(Element.fromDom(rawBody));
+    };
+    var hasFocus$1 = function (editor) {
+      return editor.inline ? hasInlineFocus(editor) : hasIframeFocus(editor);
+    };
+    var focusEditor = function (editor) {
+      var selection = editor.selection;
+      var body = editor.getBody();
+      var rng = selection.getRng();
+      editor.quirks.refreshContentEditable();
+      var contentEditableHost = getContentEditableHost(editor, selection.getNode());
+      if (editor.$.contains(body, contentEditableHost)) {
+        focusBody(contentEditableHost);
+        normalizeSelection(editor, rng);
+        activateEditor(editor);
+        return;
+      }
+      if (editor.bookmark !== undefined && hasFocus$1(editor) === false) {
+        SelectionBookmark.getRng(editor).each(function (bookmarkRng) {
+          editor.selection.setRng(bookmarkRng);
+          rng = bookmarkRng;
+        });
+      }
+      if (!editor.inline) {
+        if (!Env.opera) {
+          focusBody(body);
+        }
+        editor.getWin().focus();
+      }
+      if (Env.gecko || editor.inline) {
+        focusBody(body);
+        normalizeSelection(editor, rng);
+      }
+      activateEditor(editor);
+    };
+    var activateEditor = function (editor) {
+      return editor.editorManager.setActive(editor);
+    };
+    var focus = function (editor, skipFocus) {
+      if (editor.removed) {
+        return;
+      }
+      skipFocus ? activateEditor(editor) : focusEditor(editor);
+    };
+    var EditorFocus = {
+      focus: focus,
+      hasFocus: hasFocus$1
+    };
+
+    var defaultFormat$1 = 'html';
+    var isTreeNode = function (content) {
+      return content instanceof Node$1;
+    };
+    var moveSelection = function (editor) {
+      if (EditorFocus.hasFocus(editor)) {
+        CaretFinder.firstPositionIn(editor.getBody()).each(function (pos) {
+          var node = pos.getNode();
+          var caretPos = NodeType.isTable(node) ? CaretFinder.firstPositionIn(node).getOr(pos) : pos;
+          editor.selection.setRng(caretPos.toRange());
+        });
+      }
+    };
+    var setEditorHtml = function (editor, html) {
+      editor.dom.setHTML(editor.getBody(), html);
+      moveSelection(editor);
+    };
+    var setContentString = function (editor, body, content, args) {
+      var forcedRootBlockName, padd;
+      if (content.length === 0 || /^\s+$/.test(content)) {
+        padd = '<br data-mce-bogus="1">';
+        if (body.nodeName === 'TABLE') {
+          content = '<tr><td>' + padd + '</td></tr>';
+        } else if (/^(UL|OL)$/.test(body.nodeName)) {
+          content = '<li>' + padd + '</li>';
+        }
+        forcedRootBlockName = Settings.getForcedRootBlock(editor);
+        if (forcedRootBlockName && editor.schema.isValidChild(body.nodeName.toLowerCase(), forcedRootBlockName.toLowerCase())) {
+          content = padd;
+          content = editor.dom.createHTML(forcedRootBlockName, editor.settings.forced_root_block_attrs, content);
+        } else if (!content) {
+          content = '<br data-mce-bogus="1">';
+        }
+        setEditorHtml(editor, content);
+        editor.fire('SetContent', args);
+      } else {
+        if (args.format !== 'raw') {
+          content = Serializer({ validate: editor.validate }, editor.schema).serialize(editor.parser.parse(content, {
+            isRootContent: true,
+            insert: true
+          }));
+        }
+        args.content = isWsPreserveElement(Element.fromDom(body)) ? content : Tools.trim(content);
+        setEditorHtml(editor, args.content);
+        if (!args.no_events) {
+          editor.fire('SetContent', args);
+        }
+      }
+      return args.content;
+    };
+    var setContentTree = function (editor, body, content, args) {
+      filter$2(editor.parser.getNodeFilters(), editor.parser.getAttributeFilters(), content);
+      var html = Serializer({ validate: editor.validate }, editor.schema).serialize(content);
+      args.content = isWsPreserveElement(Element.fromDom(body)) ? html : Tools.trim(html);
+      setEditorHtml(editor, args.content);
+      if (!args.no_events) {
+        editor.fire('SetContent', args);
+      }
+      return content;
+    };
+    var setContent = function (editor, content, args) {
+      if (args === void 0) {
+        args = {};
+      }
+      args.format = args.format ? args.format : defaultFormat$1;
+      args.set = true;
+      args.content = isTreeNode(content) ? '' : content;
+      if (!isTreeNode(content) && !args.no_events) {
+        editor.fire('BeforeSetContent', args);
+        content = args.content;
+      }
+      return Option.from(editor.getBody()).fold(constant(content), function (body) {
+        return isTreeNode(content) ? setContentTree(editor, body, content, args) : setContentString(editor, body, content, args);
+      });
+    };
+
+    var firePreProcess = function (editor, args) {
+      return editor.fire('PreProcess', args);
+    };
+    var firePostProcess = function (editor, args) {
+      return editor.fire('PostProcess', args);
+    };
+    var fireRemove = function (editor) {
+      return editor.fire('remove');
+    };
+    var fireDetach = function (editor) {
+      return editor.fire('detach');
+    };
+    var fireSwitchMode = function (editor, mode) {
+      return editor.fire('SwitchMode', { mode: mode });
+    };
+    var fireObjectResizeStart = function (editor, target, width, height) {
+      editor.fire('ObjectResizeStart', {
+        target: target,
+        width: width,
+        height: height
+      });
+    };
+    var fireObjectResized = function (editor, target, width, height) {
+      editor.fire('ObjectResized', {
+        target: target,
+        width: width,
+        height: height
+      });
+    };
+    var Events = {
+      firePreProcess: firePreProcess,
+      firePostProcess: firePostProcess,
+      fireRemove: fireRemove,
+      fireDetach: fireDetach,
+      fireSwitchMode: fireSwitchMode,
+      fireObjectResizeStart: fireObjectResizeStart,
+      fireObjectResized: fireObjectResized
+    };
+
+    var DOM$1 = DOMUtils$1.DOM;
+    var restoreOriginalStyles = function (editor) {
+      DOM$1.setStyle(editor.id, 'display', editor.orgDisplay);
+    };
+    var safeDestroy = function (x) {
+      return Option.from(x).each(function (x) {
+        return x.destroy();
+      });
+    };
+    var clearDomReferences = function (editor) {
+      editor.contentAreaContainer = editor.formElement = editor.container = editor.editorContainer = null;
+      editor.bodyElement = editor.contentDocument = editor.contentWindow = null;
+      editor.iframeElement = editor.targetElm = null;
+      if (editor.selection) {
+        editor.selection = editor.selection.win = editor.selection.dom = editor.selection.dom.doc = null;
+      }
+    };
+    var restoreForm = function (editor) {
+      var form = editor.formElement;
+      if (form) {
+        if (form._mceOldSubmit) {
+          form.submit = form._mceOldSubmit;
+          form._mceOldSubmit = null;
+        }
+        DOM$1.unbind(form, 'submit reset', editor.formEventDelegate);
+      }
+    };
+    var remove$6 = function (editor) {
+      if (!editor.removed) {
+        var _selectionOverrides = editor._selectionOverrides, editorUpload = editor.editorUpload;
+        var body = editor.getBody();
+        var element = editor.getElement();
+        if (body) {
+          editor.save({ is_removing: true });
+        }
+        editor.removed = true;
+        editor.unbindAllNativeEvents();
+        if (editor.hasHiddenInput && element) {
+          DOM$1.remove(element.nextSibling);
+        }
+        Events.fireRemove(editor);
+        editor.editorManager.remove(editor);
+        if (!editor.inline && body) {
+          restoreOriginalStyles(editor);
+        }
+        Events.fireDetach(editor);
+        DOM$1.remove(editor.getContainer());
+        safeDestroy(_selectionOverrides);
+        safeDestroy(editorUpload);
+        editor.destroy();
+      }
+    };
+    var destroy = function (editor, automatic) {
+      var selection = editor.selection, dom = editor.dom;
+      if (editor.destroyed) {
+        return;
+      }
+      if (!automatic && !editor.removed) {
+        editor.remove();
+        return;
+      }
+      if (!automatic) {
+        editor.editorManager.off('beforeunload', editor._beforeUnload);
+        if (editor.theme && editor.theme.destroy) {
+          editor.theme.destroy();
+        }
+        safeDestroy(selection);
+        safeDestroy(dom);
+      }
+      restoreForm(editor);
+      clearDomReferences(editor);
+      editor.destroyed = true;
+    };
+
+    var sectionResult = Immutable('sections', 'settings');
+    var detection = PlatformDetection$1.detect();
+    var isTouch = detection.deviceType.isTouch();
+    var isPhone = detection.deviceType.isPhone();
+    var mobilePlugins = [
+      'lists',
+      'autolink',
+      'autosave'
+    ];
+    var defaultMobileSettings = isPhone ? { theme: 'mobile' } : {};
+    var normalizePlugins = function (plugins) {
+      var pluginNames = isArray(plugins) ? plugins.join(' ') : plugins;
+      var trimmedPlugins = map(isString(pluginNames) ? pluginNames.split(' ') : [], trim$2);
+      return filter(trimmedPlugins, function (item) {
+        return item.length > 0;
+      });
+    };
+    var filterMobilePlugins = function (plugins) {
+      return filter(plugins, curry(contains, mobilePlugins));
+    };
+    var extractSections = function (keys, settings) {
+      var result = bifilter(settings, function (value, key) {
+        return contains(keys, key);
+      });
+      return sectionResult(result.t, result.f);
+    };
+    var getSection = function (sectionResult, name, defaults) {
+      var sections = sectionResult.sections();
+      var sectionSettings = sections.hasOwnProperty(name) ? sections[name] : {};
+      return Tools.extend({}, defaults, sectionSettings);
+    };
+    var hasSection = function (sectionResult, name) {
+      return sectionResult.sections().hasOwnProperty(name);
+    };
+    var getDefaultSettings = function (id, documentBaseUrl, editor) {
+      return {
+        id: id,
+        theme: 'silver',
+        popup_css: '',
+        plugins: '',
+        document_base_url: documentBaseUrl,
+        add_form_submit_trigger: true,
+        submit_patch: true,
+        add_unload_trigger: true,
+        convert_urls: true,
+        relative_urls: true,
+        remove_script_host: true,
+        object_resizing: true,
+        doctype: '<!DOCTYPE html>',
+        visual: true,
+        font_size_style_values: 'xx-small,x-small,small,medium,large,x-large,xx-large',
+        font_size_legacy_values: 'xx-small,small,medium,large,x-large,xx-large,300%',
+        forced_root_block: 'p',
+        hidden_input: true,
+        render_ui: true,
+        inline_styles: true,
+        convert_fonts_to_spans: true,
+        indent: true,
+        indent_before: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist',
+        indent_after: 'p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,th,ul,ol,li,dl,dt,dd,area,table,thead,' + 'tfoot,tbody,tr,section,summary,article,hgroup,aside,figure,figcaption,option,optgroup,datalist',
+        entity_encoding: 'named',
+        url_converter: editor.convertURL,
+        url_converter_scope: editor,
+        ie7_compat: true
+      };
+    };
+    var getExternalPlugins = function (overrideSettings, settings) {
+      var userDefinedExternalPlugins = settings.external_plugins ? settings.external_plugins : {};
+      if (overrideSettings && overrideSettings.external_plugins) {
+        return Tools.extend({}, overrideSettings.external_plugins, userDefinedExternalPlugins);
+      } else {
+        return userDefinedExternalPlugins;
+      }
+    };
+    var combinePlugins = function (forcedPlugins, plugins) {
+      return [].concat(normalizePlugins(forcedPlugins)).concat(normalizePlugins(plugins));
+    };
+    var processPlugins = function (isTouchDevice, sectionResult, defaultOverrideSettings, settings) {
+      var forcedPlugins = normalizePlugins(defaultOverrideSettings.forced_plugins);
+      var plugins = normalizePlugins(settings.plugins);
+      var platformPlugins = isTouchDevice && hasSection(sectionResult, 'mobile') ? filterMobilePlugins(plugins) : plugins;
+      var combinedPlugins = combinePlugins(forcedPlugins, platformPlugins);
+      return Tools.extend(settings, { plugins: combinedPlugins.join(' ') });
+    };
+    var isOnMobile = function (isTouchDevice, sectionResult) {
+      var isInline = sectionResult.settings().inline;
+      return isTouchDevice && !isInline;
+    };
+    var combineSettings = function (isTouchDevice, defaultSettings, defaultOverrideSettings, settings) {
+      var sectionResult = extractSections(['mobile'], settings);
+      var extendedSettings = Tools.extend(defaultSettings, defaultOverrideSettings, sectionResult.settings(), isOnMobile(isTouchDevice, sectionResult) ? getSection(sectionResult, 'mobile', defaultMobileSettings) : {}, {
+        validate: true,
+        external_plugins: getExternalPlugins(defaultOverrideSettings, sectionResult.settings())
+      });
+      return processPlugins(isTouchDevice, sectionResult, defaultOverrideSettings, extendedSettings);
+    };
+    var getEditorSettings = function (editor, id, documentBaseUrl, defaultOverrideSettings, settings) {
+      var defaultSettings = getDefaultSettings(id, documentBaseUrl, editor);
+      return combineSettings(isTouch, defaultSettings, defaultOverrideSettings, settings);
+    };
+    var getFiltered = function (predicate, editor, name) {
+      return Option.from(editor.settings[name]).filter(predicate);
+    };
+    var getString = curry(getFiltered, isString);
+    var getParamObject = function (value) {
+      var output = {};
+      if (typeof value === 'string') {
+        each(value.indexOf('=') > 0 ? value.split(/[;,](?![^=;,]*(?:[;,]|$))/) : value.split(','), function (val) {
+          var arr = val.split('=');
+          if (arr.length > 1) {
+            output[Tools.trim(arr[0])] = Tools.trim(arr[1]);
+          } else {
+            output[Tools.trim(arr[0])] = Tools.trim(arr[0]);
+          }
+        });
+      } else {
+        output = value;
+      }
+      return output;
+    };
+    var isArrayOf = function (p) {
+      return function (a) {
+        return isArray(a) && forall(a, p);
+      };
+    };
+    var getParam = function (editor, name, defaultVal, type) {
+      var value = name in editor.settings ? editor.settings[name] : defaultVal;
+      if (type === 'hash') {
+        return getParamObject(value);
+      } else if (type === 'string') {
+        return getFiltered(isString, editor, name).getOr(defaultVal);
+      } else if (type === 'number') {
+        return getFiltered(isNumber, editor, name).getOr(defaultVal);
+      } else if (type === 'boolean') {
+        return getFiltered(isBoolean, editor, name).getOr(defaultVal);
+      } else if (type === 'object') {
+        return getFiltered(isObject, editor, name).getOr(defaultVal);
+      } else if (type === 'array') {
+        return getFiltered(isArray, editor, name).getOr(defaultVal);
+      } else if (type === 'string[]') {
+        return getFiltered(isArrayOf(isString), editor, name).getOr(defaultVal);
+      } else if (type === 'function') {
+        return getFiltered(isFunction, editor, name).getOr(defaultVal);
+      } else {
+        return value;
+      }
+    };
+
+    var getProp = function (propName, elm) {
+      var rawElm = elm.dom();
+      return rawElm[propName];
+    };
+    var getComputedSizeProp = function (propName, elm) {
+      return parseInt(get$2(elm, propName), 10);
+    };
+    var getClientWidth = curry(getProp, 'clientWidth');
+    var getClientHeight = curry(getProp, 'clientHeight');
+    var getMarginTop = curry(getComputedSizeProp, 'margin-top');
+    var getMarginLeft = curry(getComputedSizeProp, 'margin-left');
+    var getBoundingClientRect$1 = function (elm) {
+      return elm.dom().getBoundingClientRect();
+    };
+    var isInsideElementContentArea = function (bodyElm, clientX, clientY) {
+      var clientWidth = getClientWidth(bodyElm);
+      var clientHeight = getClientHeight(bodyElm);
+      return clientX >= 0 && clientY >= 0 && clientX <= clientWidth && clientY <= clientHeight;
+    };
+    var transpose = function (inline, elm, clientX, clientY) {
+      var clientRect = getBoundingClientRect$1(elm);
+      var deltaX = inline ? clientRect.left + elm.dom().clientLeft + getMarginLeft(elm) : 0;
+      var deltaY = inline ? clientRect.top + elm.dom().clientTop + getMarginTop(elm) : 0;
+      var x = clientX - deltaX;
+      var y = clientY - deltaY;
+      return {
+        x: x,
+        y: y
+      };
+    };
+    var isXYInContentArea = function (editor, clientX, clientY) {
+      var bodyElm = Element.fromDom(editor.getBody());
+      var targetElm = editor.inline ? bodyElm : documentElement(bodyElm);
+      var transposedPoint = transpose(editor.inline, targetElm, clientX, clientY);
+      return isInsideElementContentArea(targetElm, transposedPoint.x, transposedPoint.y);
+    };
+    var fromDomSafe = function (node) {
+      return Option.from(node).map(Element.fromDom);
+    };
+    var isEditorAttachedToDom = function (editor) {
+      var rawContainer = editor.inline ? editor.getBody() : editor.getContentAreaContainer();
+      return fromDomSafe(rawContainer).map(function (container) {
+        return contains$3(owner(container), container);
+      }).getOr(false);
+    };
+    var EditorView = {
+      isXYInContentArea: isXYInContentArea,
+      isEditorAttachedToDom: isEditorAttachedToDom
+    };
+
+    function NotificationManagerImpl() {
+      var unimplemented = function () {
+        throw new Error('Theme did not provide a NotificationManager implementation.');
+      };
+      return {
+        open: unimplemented,
+        close: unimplemented,
+        reposition: unimplemented,
+        getArgs: unimplemented
+      };
+    }
+
+    function NotificationManager(editor) {
+      var notifications = [];
+      var getImplementation = function () {
+        var theme = editor.theme;
+        return theme && theme.getNotificationManagerImpl ? theme.getNotificationManagerImpl() : NotificationManagerImpl();
+      };
+      var getTopNotification = function () {
+        return Option.from(notifications[0]);
+      };
+      var isEqual = function (a, b) {
+        return a.type === b.type && a.text === b.text && !a.progressBar && !a.timeout && !b.progressBar && !b.timeout;
+      };
+      var reposition = function () {
+        if (notifications.length > 0) {
+          getImplementation().reposition(notifications);
+        }
+      };
+      var addNotification = function (notification) {
+        notifications.push(notification);
+      };
+      var closeNotification = function (notification) {
+        findIndex(notifications, function (otherNotification) {
+          return otherNotification === notification;
+        }).each(function (index) {
+          notifications.splice(index, 1);
+        });
+      };
+      var open = function (spec) {
+        if (editor.removed || !EditorView.isEditorAttachedToDom(editor)) {
+          return;
+        }
+        return find(notifications, function (notification) {
+          return isEqual(getImplementation().getArgs(notification), spec);
+        }).getOrThunk(function () {
+          editor.editorManager.setActive(editor);
+          var notification = getImplementation().open(spec, function () {
+            closeNotification(notification);
+            reposition();
+          });
+          addNotification(notification);
+          reposition();
+          return notification;
+        });
+      };
+      var close = function () {
+        getTopNotification().each(function (notification) {
+          getImplementation().close(notification);
+          closeNotification(notification);
+          reposition();
+        });
+      };
+      var getNotifications = function () {
+        return notifications;
+      };
+      var registerEvents = function (editor) {
+        editor.on('SkinLoaded', function () {
+          var serviceMessage = editor.settings.service_message;
+          if (serviceMessage) {
+            open({
+              text: serviceMessage,
+              type: 'warn',
+              timeout: 0
+            });
+          }
+        });
+        editor.on('ResizeEditor ResizeWindow NodeChange', function () {
+          Delay.requestAnimationFrame(reposition);
+        });
+        editor.on('remove', function () {
+          each(notifications.slice(), function (notification) {
+            getImplementation().close(notification);
+          });
+        });
+      };
+      registerEvents(editor);
+      return {
+        open: open,
+        close: close,
+        getNotifications: getNotifications
+      };
+    }
+
+    function WindowManagerImpl () {
+      var unimplemented = function () {
+        throw new Error('Theme did not provide a WindowManager implementation.');
+      };
+      return {
+        open: unimplemented,
+        openUrl: unimplemented,
+        alert: unimplemented,
+        confirm: unimplemented,
+        close: unimplemented,
+        getParams: unimplemented,
+        setParams: unimplemented
+      };
+    }
+
+    var WindowManager = function (editor) {
+      var dialogs = [];
+      var getImplementation = function () {
+        var theme = editor.theme;
+        return theme && theme.getWindowManagerImpl ? theme.getWindowManagerImpl() : WindowManagerImpl();
+      };
+      var funcBind = function (scope, f) {
+        return function () {
+          return f ? f.apply(scope, arguments) : undefined;
+        };
+      };
+      var fireOpenEvent = function (dialog) {
+        editor.fire('OpenWindow', { dialog: dialog });
+      };
+      var fireCloseEvent = function (dialog) {
+        editor.fire('CloseWindow', { dialog: dialog });
+      };
+      var addDialog = function (dialog) {
+        dialogs.push(dialog);
+        fireOpenEvent(dialog);
+      };
+      var closeDialog = function (dialog) {
+        fireCloseEvent(dialog);
+        dialogs = filter(dialogs, function (otherDialog) {
+          return otherDialog !== dialog;
+        });
+        if (dialogs.length === 0) {
+          editor.focus();
+        }
+      };
+      var getTopDialog = function () {
+        return Option.from(dialogs[dialogs.length - 1]);
+      };
+      var storeSelectionAndOpenDialog = function (openDialog) {
+        editor.editorManager.setActive(editor);
+        SelectionBookmark.store(editor);
+        var dialog = openDialog();
+        addDialog(dialog);
+        return dialog;
+      };
+      var open = function (args, params) {
+        return storeSelectionAndOpenDialog(function () {
+          return getImplementation().open(args, params, closeDialog);
+        });
+      };
+      var openUrl = function (args) {
+        return storeSelectionAndOpenDialog(function () {
+          return getImplementation().openUrl(args, closeDialog);
+        });
+      };
+      var alert = function (message, callback, scope) {
+        getImplementation().alert(message, funcBind(scope ? scope : this, callback));
+      };
+      var confirm = function (message, callback, scope) {
+        getImplementation().confirm(message, funcBind(scope ? scope : this, callback));
+      };
+      var close = function () {
+        getTopDialog().each(function (dialog) {
+          getImplementation().close(dialog);
+          closeDialog(dialog);
+        });
+      };
+      editor.on('remove', function () {
+        each(dialogs, function (dialog) {
+          getImplementation().close(dialog);
+        });
+      });
+      return {
+        open: open,
+        openUrl: openUrl,
+        alert: alert,
+        confirm: confirm,
+        close: close
+      };
+    };
+
+    var PluginManager = AddOnManager$1.PluginManager;
+    var resolvePluginName = function (targetUrl, suffix) {
+      for (var name in PluginManager.urls) {
+        var matchUrl = PluginManager.urls[name] + '/plugin' + suffix + '.js';
+        if (matchUrl === targetUrl) {
+          return name;
+        }
+      }
+      return null;
+    };
+    var pluginUrlToMessage = function (editor, url) {
+      var plugin = resolvePluginName(url, editor.suffix);
+      return plugin ? I18n.translate([
+        'Failed to load plugin: {0} from url {1}',
+        plugin,
+        url
+      ]) : I18n.translate([
+        'Failed to load plugin url: {0}',
+        url
+      ]);
+    };
+    var displayNotification = function (editor, message) {
+      editor.notificationManager.open({
+        type: 'error',
+        text: message
+      });
+    };
+    var displayError = function (editor, message) {
+      if (editor._skinLoaded) {
+        displayNotification(editor, message);
+      } else {
+        editor.on('SkinLoaded', function () {
+          displayNotification(editor, message);
+        });
+      }
+    };
+    var uploadError = function (editor, message) {
+      displayError(editor, I18n.translate([
+        'Failed to upload image: {0}',
+        message
+      ]));
+    };
+    var pluginLoadError = function (editor, url) {
+      displayError(editor, pluginUrlToMessage(editor, url));
+    };
+    var pluginInitError = function (editor, name, err) {
+      var message = I18n.translate([
+        'Failed to initialize plugin: {0}',
+        name
+      ]);
+      initError(message, err);
+      displayError(editor, message);
+    };
+    var initError = function (message) {
+      var x = [];
+      for (var _i = 1; _i < arguments.length; _i++) {
+        x[_i - 1] = arguments[_i];
+      }
+      var console = domGlobals.window.console;
+      if (console) {
+        if (console.error) {
+          console.error.apply(console, arguments);
+        } else {
+          console.log.apply(console, arguments);
+        }
+      }
+    };
+    var ErrorReporter = {
+      pluginLoadError: pluginLoadError,
+      pluginInitError: pluginInitError,
+      uploadError: uploadError,
+      displayError: displayError,
+      initError: initError
+    };
+
+    var getAll = function () {
+      return {
+        'accessibility-check': '<svg width="24" height="24"><path d="M12 2a2 2 0 0 1 2 2 2 2 0 0 1-2 2 2 2 0 0 1-2-2c0-1.1.9-2 2-2zm8 7h-5v12c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-5c0-.6-.4-1-1-1a1 1 0 0 0-1 1v5c0 .6-.4 1-1 1a1 1 0 0 1-1-1V9H4a1 1 0 1 1 0-2h16c.6 0 1 .4 1 1s-.4 1-1 1z" fill-rule="nonzero"/></svg>',
+        'align-center': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm3 4h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 1 1 0-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2zm-3-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',
+        'align-justify': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0 4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',
+        'align-left': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 4h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',
+        'align-none': '<svg width="24" height="24"><path d="M14.2 5L13 7H5a1 1 0 1 1 0-2h9.2zm4 0h.8a1 1 0 0 1 0 2h-2l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 0 1 0-2h6.8zm4 0H19a1 1 0 0 1 0 2h-4.4l1.2-2zm-6.4 4l-1.2 2H5a1 1 0 0 1 0-2h4.4zm4 0H19a1 1 0 0 1 0 2h-6.8l1.2-2zM7 17l-1.2 2H5a1 1 0 0 1 0-2h2zm4 0h8a1 1 0 0 1 0 2H9.8l1.2-2zm5.2-13.5l1.3.7-9.7 16.3-1.3-.7 9.7-16.3z" fill-rule="evenodd"/></svg>',
+        'align-right': '<svg width="24" height="24"><path d="M5 5h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm6 4h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0 8h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm-6-4h14c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',
+        'arrow-left': '<svg width="24" height="24"><path d="M5.6 13l12 6a1 1 0 0 0 1.4-1V6a1 1 0 0 0-1.4-.9l-12 6a1 1 0 0 0 0 1.8z" fill-rule="evenodd"/></svg>',
+        'arrow-right': '<svg width="24" height="24"><path d="M18.5 13l-12 6A1 1 0 0 1 5 18V6a1 1 0 0 1 1.4-.9l12 6a1 1 0 0 1 0 1.8z" fill-rule="evenodd"/></svg>',
+        'bold': '<svg width="24" height="24"><path d="M7.8 19c-.3 0-.5 0-.6-.2l-.2-.5V5.7c0-.2 0-.4.2-.5l.6-.2h5c1.5 0 2.7.3 3.5 1 .7.6 1.1 1.4 1.1 2.5a3 3 0 0 1-.6 1.9c-.4.6-1 1-1.6 1.2.4.1.9.3 1.3.6s.8.7 1 1.2c.4.4.5 1 .5 1.6 0 1.3-.4 2.3-1.3 3-.8.7-2.1 1-3.8 1H7.8zm5-8.3c.6 0 1.2-.1 1.6-.5.4-.3.6-.7.6-1.3 0-1.1-.8-1.7-2.3-1.7H9.3v3.5h3.4zm.5 6c.7 0 1.3-.1 1.7-.4.4-.4.6-.9.6-1.5s-.2-1-.7-1.4c-.4-.3-1-.4-2-.4H9.4v3.8h4z" fill-rule="evenodd"/></svg>',
+        'bookmark': '<svg width="24" height="24"><path d="M6 4v17l6-4 6 4V4c0-.6-.4-1-1-1H7a1 1 0 0 0-1 1z" fill-rule="nonzero"/></svg>',
+        'border-width': '<svg width="24" height="24"><path d="M5 14.8h14a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2zm-.5 3.7h15c.3 0 .5.2.5.5s-.2.5-.5.5h-15a.5.5 0 1 1 0-1zm.5-8.3h14c.6 0 1 .4 1 1v1c0 .5-.4 1-1 1H5a1 1 0 0 1-1-1v-1c0-.6.4-1 1-1zm0-5.7h14c.6 0 1 .4 1 1v2c0 .6-.4 1-1 1H5a1 1 0 0 1-1-1v-2c0-.6.4-1 1-1z" fill-rule="evenodd"/></svg>',
+        'brightness': '<svg width="24" height="24"><path d="M12 17c.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7v-1c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3zm0-10a1 1 0 0 1-.7-.3A1 1 0 0 1 11 6V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v1c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3zm7 4c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-1a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1zM7 12c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3H5a1 1 0 0 1-.7-.3A1 1 0 0 1 4 12c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h1c.3 0 .5.1.7.3.2.2.3.4.3.7zm10 3.5l.7.8c.2.1.3.4.3.6 0 .3-.1.6-.3.8a1 1 0 0 1-.8.3 1 1 0 0 1-.6-.3l-.8-.7a1 1 0 0 1-.3-.8c0-.2.1-.5.3-.7a1 1 0 0 1 1.4 0zm-10-7l-.7-.8a1 1 0 0 1-.3-.6c0-.3.1-.6.3-.8.2-.2.5-.3.8-.3.2 0 .5.1.7.3l.7.7c.2.2.3.5.3.8 0 .2-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.8-.3zm10 0a1 1 0 0 1-.8.3 1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.6.3-.8l.8-.7c.1-.2.4-.3.6-.3.3 0 .6.1.8.3.2.2.3.5.3.8 0 .2-.1.5-.3.7l-.7.7zm-10 7c.2-.2.5-.3.8-.3.2 0 .5.1.7.3a1 1 0 0 1 0 1.4l-.8.8a1 1 0 0 1-.6.3 1 1 0 0 1-.8-.3 1 1 0 0 1-.3-.8c0-.2.1-.5.3-.6l.7-.8zM12 8a4 4 0 0 1 3.7 2.4 4 4 0 0 1 0 3.2A4 4 0 0 1 12 16a4 4 0 0 1-3.7-2.4 4 4 0 0 1 0-3.2A4 4 0 0 1 12 8zm0 6.5c.7 0 1.3-.2 1.8-.7.5-.5.7-1.1.7-1.8s-.2-1.3-.7-1.8c-.5-.5-1.1-.7-1.8-.7s-1.3.2-1.8.7c-.5.5-.7 1.1-.7 1.8s.2 1.3.7 1.8c.5.5 1.1.7 1.8.7z" fill-rule="evenodd"/></svg>',
+        'browse': '<svg width="24" height="24"><path d="M19 4a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2h-4v-2h4V8H5v10h4v2H5a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2h14zm-8 9.4l-2.3 2.3a1 1 0 1 1-1.4-1.4l4-4a1 1 0 0 1 1.4 0l4 4a1 1 0 0 1-1.4 1.4L13 13.4V20a1 1 0 0 1-2 0v-6.6z" fill-rule="nonzero"/></svg>',
+        'cancel': '<svg width="24" height="24"><path d="M12 4.6a7.4 7.4 0 1 1 0 14.8 7.4 7.4 0 0 1 0-14.8zM12 3a9 9 0 1 0 0 18 9 9 0 0 0 0-18zm0 8L14.8 8l1 1.1-2.7 2.8 2.7 2.7-1.1 1.1-2.7-2.7-2.7 2.7-1-1.1 2.6-2.7-2.7-2.7 1-1.1 2.8 2.7z" fill-rule="nonzero"/></svg>',
+        'change-case': '<svg width="24" height="24"><path d="M18.4 18.2v-.6c-.5.8-1.3 1.2-2.4 1.2-2.2 0-3.3-1.6-3.3-4.8 0-3.1 1-4.7 3.3-4.7 1.1 0 1.8.3 2.4 1.1v-.6c0-.5.4-.8.8-.8s.8.3.8.8v8.4c0 .5-.4.8-.8.8a.8.8 0 0 1-.8-.8zm-2-7.4c-1.3 0-1.8.9-1.8 3.2 0 2.4.5 3.3 1.7 3.3 1.3 0 1.8-.9 1.8-3.2 0-2.4-.5-3.3-1.7-3.3zM10 15.7H5.5l-.8 2.6a1 1 0 0 1-1 .7h-.2a.7.7 0 0 1-.7-1l4-12a1 1 0 1 1 2 0l4 12a.7.7 0 0 1-.8 1h-.2a1 1 0 0 1-1-.7l-.8-2.6zm-.3-1.5l-2-6.5-1.9 6.5h3.9z" fill-rule="evenodd"/></svg>',
+        'character-count': '<svg width="24" height="24"><path d="M4 11.5h16v1H4v-1zm4.8-6.8V10H7.7V5.8h-1v-1h2zM11 8.3V9h2v1h-3V7.7l2-1v-.9h-2v-1h3v2.4l-2 1zm6.3-3.4V10h-3.1V9h2.1V8h-2.1V6.8h2.1v-1h-2.1v-1h3.1zM5.8 16.4c0-.5.2-.8.5-1 .2-.2.6-.3 1.2-.3l.8.1c.2 0 .4.2.5.3l.4.4v2.8l.2.3H8.2v-.1-.2l-.6.3H7c-.4 0-.7 0-1-.2a1 1 0 0 1-.3-.9c0-.3 0-.6.3-.8.3-.2.7-.4 1.2-.4l.6-.2h.3v-.2l-.1-.2a.8.8 0 0 0-.5-.1 1 1 0 0 0-.4 0l-.3.4h-1zm2.3.8h-.2l-.2.1-.4.1a1 1 0 0 0-.4.2l-.2.2.1.3.5.1h.4l.4-.4v-.6zm2-3.4h1.2v1.7l.5-.3h.5c.5 0 .9.1 1.2.5.3.4.5.8.5 1.4 0 .6-.2 1.1-.5 1.5-.3.4-.7.6-1.3.6l-.6-.1-.4-.4v.4h-1.1v-5.4zm1.1 3.3c0 .3 0 .6.2.8a.7.7 0 0 0 1.2 0l.2-.8c0-.4 0-.6-.2-.8a.7.7 0 0 0-.6-.3l-.6.3-.2.8zm6.1-.5c0-.2 0-.3-.2-.4a.8.8 0 0 0-.5-.2c-.3 0-.5.1-.6.3l-.2.9c0 .3 0 .6.2.8.1.2.3.3.6.3.2 0 .4 0 .5-.2l.2-.4h1.1c0 .5-.3.8-.6 1.1a2 2 0 0 1-1.3.4c-.5 0-1-.2-1.3-.6a2 2 0 0 1-.5-1.4c0-.6.1-1.1.5-1.5.3-.4.8-.5 1.4-.5.5 0 1 0 1.2.3.4.3.5.7.5 1.2h-1v-.1z" fill-rule="evenodd"/></svg>',
+        'checklist-rtl': '<svg width="24" height="24"><path d="M5 17h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1H5a1 1 0 1 1 0-2zm14.2 11c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L18 8c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',
+        'checklist': '<svg width="24" height="24"><path d="M11 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8a1 1 0 0 1 0 2h-8a1 1 0 0 1 0-2zM7.2 16c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 20c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 14c-.2.3-.7.4-1 0l-1.3-1.3a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8zm0-6c.2-.4.6-.5.9-.3.3.2.4.6.2 1L6 8c-.2.3-.7.4-1 0L3.8 6.9a.7.7 0 0 1 0-1c.3-.2.7-.2 1 0l.7.9 1.7-2.8z" fill-rule="evenodd"/></svg>',
+        'checkmark': '<svg width="24" height="24"><path d="M18.2 5.4a1 1 0 0 1 1.6 1.2l-8 12a1 1 0 0 1-1.5.1l-5-5a1 1 0 1 1 1.4-1.4l4.1 4.1 7.4-11z" fill-rule="nonzero"/></svg>',
+        'chevron-down': '<svg width="10" height="10"><path d="M8.7 2.2c.3-.3.8-.3 1 0 .4.4.4.9 0 1.2L5.7 7.8c-.3.3-.9.3-1.2 0L.2 3.4a.8.8 0 0 1 0-1.2c.3-.3.8-.3 1.1 0L5 6l3.7-3.8z" fill-rule="nonzero"/></svg>',
+        'chevron-left': '<svg width="10" height="10"><path d="M7.8 1.3L4 5l3.8 3.7c.3.3.3.8 0 1-.4.4-.9.4-1.2 0L2.2 5.7a.8.8 0 0 1 0-1.2L6.6.2C7 0 7.4 0 7.8.2c.3.3.3.8 0 1.1z" fill-rule="nonzero"/></svg>',
+        'chevron-right': '<svg width="10" height="10"><path d="M2.2 1.3a.8.8 0 0 1 0-1c.4-.4.9-.4 1.2 0l4.4 4.1c.3.4.3.9 0 1.2L3.4 9.8c-.3.3-.8.3-1.2 0a.8.8 0 0 1 0-1.1L6 5 2.2 1.3z" fill-rule="nonzero"/></svg>',
+        'chevron-up': '<svg width="10" height="10"><path d="M8.7 7.8L5 4 1.3 7.8c-.3.3-.8.3-1 0a.8.8 0 0 1 0-1.2l4.1-4.4c.3-.3.9-.3 1.2 0l4.2 4.4c.3.3.3.9 0 1.2-.3.3-.8.3-1.1 0z" fill-rule="nonzero"/></svg>',
+        'close': '<svg width="24" height="24"><path d="M17.3 8.2L13.4 12l3.9 3.8a1 1 0 0 1-1.5 1.5L12 13.4l-3.8 3.9a1 1 0 0 1-1.5-1.5l3.9-3.8-3.9-3.8a1 1 0 0 1 1.5-1.5l3.8 3.9 3.8-3.9a1 1 0 0 1 1.5 1.5z" fill-rule="evenodd"/></svg>',
+        'code-sample': '<svg width="24" height="26"><path d="M7.1 11a2.8 2.8 0 0 1-.8 2 2.8 2.8 0 0 1 .8 2v1.7c0 .3.1.6.4.8.2.3.5.4.8.4.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.7 0-1.4-.3-2-.8-.5-.6-.8-1.3-.8-2V15c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 0 1-.4-.4v-.8c0-.2.2-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V9.3c0-.7.3-1.4.8-2 .6-.5 1.3-.8 2-.8.3 0 .4.2.4.4v.8c0 .2-.1.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8V11zm9.8 0V9.3c0-.3-.1-.6-.4-.8-.2-.3-.5-.4-.8-.4a.4.4 0 0 1-.4-.4V7c0-.2.1-.4.4-.4.7 0 1.4.3 2 .8.5.6.8 1.3.8 2V11c0 .3.1.6.4.8.2.3.5.4.8.4.2 0 .4.2.4.4v.8c0 .2-.2.4-.4.4-.3 0-.6.1-.8.4-.3.2-.4.5-.4.8v1.7c0 .7-.3 1.4-.8 2-.6.5-1.3.8-2 .8a.4.4 0 0 1-.4-.4v-.8c0-.2.1-.4.4-.4.3 0 .6-.1.8-.4.3-.2.4-.5.4-.8V15a2.8 2.8 0 0 1 .8-2 2.8 2.8 0 0 1-.8-2zm-3.3-.4c0 .4-.1.8-.5 1.1-.3.3-.7.5-1.1.5-.4 0-.8-.2-1.1-.5-.4-.3-.5-.7-.5-1.1 0-.5.1-.9.5-1.2.3-.3.7-.4 1.1-.4.4 0 .8.1 1.1.4.4.3.5.7.5 1.2zM12 13c.4 0 .8.1 1.1.5.4.3.5.7.5 1.1 0 1-.1 1.6-.5 2a3 3 0 0 1-1.1 1c-.4.3-.8.4-1.1.4a.5.5 0 0 1-.5-.5V17a3 3 0 0 0 1-.2l.6-.6c-.6 0-1-.2-1.3-.5-.2-.3-.3-.7-.3-1 0-.5.1-1 .5-1.2.3-.4.7-.5 1.1-.5z" fill-rule="evenodd"/></svg>',
+        'color-levels': '<svg width="24" height="24"><path d="M17.5 11.4A9 9 0 0 1 18 14c0 .5 0 1-.2 1.4 0 .4-.3.9-.5 1.3a6.2 6.2 0 0 1-3.7 3 5.7 5.7 0 0 1-3.2 0A5.9 5.9 0 0 1 7.6 18a6.2 6.2 0 0 1-1.4-2.6 6.7 6.7 0 0 1 0-2.8c0-.4.1-.9.3-1.3a13.6 13.6 0 0 1 2.3-4A20 20 0 0 1 12 4a26.4 26.4 0 0 1 3.2 3.4 18.2 18.2 0 0 1 2.3 4zm-2 4.5c.4-.7.5-1.4.5-2a7.3 7.3 0 0 0-1-3.2c.2.6.2 1.2.2 1.9a4.5 4.5 0 0 1-1.3 3 5.3 5.3 0 0 1-2.3 1.5 4.9 4.9 0 0 1-2 .1 4.3 4.3 0 0 0 2.4.8 4 4 0 0 0 2-.6 4 4 0 0 0 1.5-1.5z" fill-rule="evenodd"/></svg>',
+        'color-picker': '<svg width="24" height="24"><path d="M12 3a9 9 0 0 0 0 18 1.5 1.5 0 0 0 1.1-2.5c-.2-.3-.4-.6-.4-1 0-.8.7-1.5 1.5-1.5H16a5 5 0 0 0 5-5c0-4.4-4-8-9-8zm-5.5 9a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm3-4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm5 0a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3zm3 4a1.5 1.5 0 1 1 0-3 1.5 1.5 0 0 1 0 3z" fill-rule="nonzero"/></svg>',
+        'color-swatch-remove-color': '<svg width="24" height="24"><path stroke="#000" stroke-width="2" d="M21 3L3 21" fill-rule="evenodd"/></svg>',
+        'color-swatch': '<svg width="24" height="24"><rect x="3" y="3" width="18" height="18" rx="1" fill-rule="evenodd"/></svg>',
+        'comment-add': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 0 0-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-6.4L7 23z"/><path d="M13 10h2a1 1 0 0 1 0 2h-2v2a1 1 0 0 1-2 0v-2H9a1 1 0 0 1 0-2h2V8a1 1 0 0 1 2 0v2z"/></g></svg>',
+        'comment': '<svg width="24" height="24"><path fill-rule="nonzero" d="M9 19l3-2h7c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H5a1 1 0 0 0-1 1v10c0 .6.4 1 1 1h4v2zm-2 4v-4H5a3 3 0 0 1-3-3V6a3 3 0 0 1 3-3h14a3 3 0 0 1 3 3v10a3 3 0 0 1-3 3h-6.4L7 23z"/></svg>',
+        'contrast': '<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4zm-6 8a6 6 0 0 0 6 6V6a6 6 0 0 0-6 6z" fill-rule="evenodd"/></svg>',
+        'copy': '<svg width="24" height="24"><path d="M16 3H6a2 2 0 0 0-2 2v11h2V5h10V3zm1 4a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2V9c0-1.2.9-2 2-2h7zm0 12V9h-7v10h7z" fill-rule="nonzero"/></svg>',
+        'crop': '<svg width="24" height="24"><path d="M17 8v7h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v2c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-2H7V9H5a1 1 0 1 1 0-2h2V5c0-.6.4-1 1-1s1 .4 1 1v2h7l3-3 1 1-3 3zM9 9v5l5-5H9zm1 6h5v-5l-5 5z" fill-rule="evenodd"/></svg>',
+        'cut': '<svg width="24" height="24"><path d="M18 15c.6.7 1 1.4 1 2.3 0 .8-.2 1.5-.7 2l-.8.5-1 .2c-.4 0-.8 0-1.2-.3a3.9 3.9 0 0 1-2.1-2.2c-.2-.5-.3-1-.2-1.5l-1-1-1 1c0 .5 0 1-.2 1.5-.1.5-.4 1-.9 1.4-.3.4-.7.6-1.2.8l-1.2.3c-.4 0-.7 0-1-.2-.3 0-.6-.3-.8-.5-.5-.5-.8-1.2-.7-2 0-.9.4-1.6 1-2.2A3.7 3.7 0 0 1 8.6 14H9l1-1-4-4-.5-1a3.3 3.3 0 0 1 0-2c0-.4.3-.7.5-1l6 6 6-6 .5 1a3.3 3.3 0 0 1 0 2c0 .4-.3.7-.5 1l-4 4 1 1h.5c.4 0 .8 0 1.2.3.5.2.9.4 1.2.8zm-8.5 2.2l.1-.4v-.3-.4a1 1 0 0 0-.2-.5 1 1 0 0 0-.4-.2 1.6 1.6 0 0 0-.8 0 2.6 2.6 0 0 0-.8.3 2.5 2.5 0 0 0-.9 1.1l-.1.4v.7l.2.5.5.2h.7a2.5 2.5 0 0 0 .8-.3 2.8 2.8 0 0 0 1-1zm2.5-2.8c.4 0 .7-.1 1-.4.3-.3.4-.6.4-1s-.1-.7-.4-1c-.3-.3-.6-.4-1-.4s-.7.1-1 .4c-.3.3-.4.6-.4 1s.1.7.4 1c.3.3.6.4 1 .4zm5.4 4l.2-.5v-.4-.3a2.6 2.6 0 0 0-.3-.8 2.4 2.4 0 0 0-.7-.7 2.5 2.5 0 0 0-.8-.3 1.5 1.5 0 0 0-.8 0 1 1 0 0 0-.4.2 1 1 0 0 0-.2.5 1.5 1.5 0 0 0 0 .7v.4l.3.4.3.4a2.8 2.8 0 0 0 .8.5l.4.1h.7l.5-.2z" fill-rule="evenodd"/></svg>',
+        'document-properties': '<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',
+        'drag': '<svg width="24" height="24"><path d="M13 5h2v2h-2V5zm0 4h2v2h-2V9zM9 9h2v2H9V9zm4 4h2v2h-2v-2zm-4 0h2v2H9v-2zm0 4h2v2H9v-2zm4 0h2v2h-2v-2zM9 5h2v2H9V5z" fill-rule="evenodd"/></svg>',
+        'duplicate': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M16 3v2H6v11H4V5c0-1.1.9-2 2-2h10zm3 8h-2V9h-7v10h9a2 2 0 0 1-2 2h-7a2 2 0 0 1-2-2V9c0-1.2.9-2 2-2h7a2 2 0 0 1 2 2v2z"/><path d="M17 14h1a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0v-1h-1a1 1 0 0 1 0-2h1v-1a1 1 0 0 1 2 0v1z"/></g></svg>',
+        'edit-block': '<svg width="24" height="24"><path fill-rule="nonzero" d="M19.8 8.8l-9.4 9.4c-.2.2-.5.4-.9.4l-5.4 1.2 1.2-5.4.5-.8 9.4-9.4c.7-.7 1.8-.7 2.5 0l2.1 2.1c.7.7.7 1.8 0 2.5zm-2-.2l1-.9v-.3l-2.2-2.2a.3.3 0 0 0-.3 0l-1 1L18 8.5zm-1 1l-2.5-2.4-6 6 2.5 2.5 6-6zm-7 7.1l-2.6-2.4-.3.3-.1.2-.7 3 3.1-.6h.1l.4-.5z"/></svg>',
+        'edit-image': '<svg width="24" height="24"><path d="M18 16h2V7a2 2 0 0 0-2-2H7v2h11v9zM6 17h15a1 1 0 0 1 0 2h-1v1a1 1 0 0 1-2 0v-1H6a2 2 0 0 1-2-2V7H3a1 1 0 1 1 0-2h1V4a1 1 0 1 1 2 0v13zm3-5.3l1.3 2 3-4.7 3.7 6H7l2-3.3z" fill-rule="nonzero"/></svg>',
+        'embed-page': '<svg width="24" height="24"><path d="M19 6V5H5v14h2A13 13 0 0 1 19 6zm0 1.4c-.8.8-1.6 2.4-2.2 4.6H19V7.4zm0 5.6h-2.4c-.4 1.8-.6 3.8-.6 6h3v-6zm-4 6c0-2.2.2-4.2.6-6H13c-.7 1.8-1.1 3.8-1.1 6h3zm-4 0c0-2.2.4-4.2 1-6H9.6A12 12 0 0 0 8 19h3zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm11.8 9c.4-1.9 1-3.4 1.8-4.5a9.2 9.2 0 0 0-4 4.5h2.2zm-3.4 0a12 12 0 0 1 2.8-4 12 12 0 0 0-5 4h2.2z" fill-rule="nonzero"/></svg>',
+        'embed': '<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm4.8 2.6l5.6 4a.5.5 0 0 1 0 .8l-5.6 4A.5.5 0 0 1 9 16V8a.5.5 0 0 1 .8-.4z" fill-rule="nonzero"/></svg>',
+        'emoji': '<svg width="24" height="24"><path d="M9 11c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 0 0-1 1c0 .6.4 1 1 1zm6 0c.6 0 1-.4 1-1s-.4-1-1-1a1 1 0 0 0-1 1c0 .6.4 1 1 1zm-3 5.5c2.1 0 4-1.5 4.4-3.5H7.6c.5 2 2.3 3.5 4.4 3.5zM12 4a8 8 0 1 0 0 16 8 8 0 0 0 0-16zm0 14.5a6.5 6.5 0 1 1 0-13 6.5 6.5 0 0 1 0 13z" fill-rule="nonzero"/></svg>',
+        'fill': '<svg width="24" height="26"><path d="M16.6 12l-9-9-1.4 1.4 2.4 2.4-5.2 5.1c-.5.6-.5 1.6 0 2.2L9 19.6a1.5 1.5 0 0 0 2.2 0l5.5-5.5c.5-.6.5-1.6 0-2.2zM5.2 13L10 8.2l4.8 4.8H5.2zM19 14.5s-2 2.2-2 3.5c0 1.1.9 2 2 2a2 2 0 0 0 2-2c0-1.3-2-3.5-2-3.5z" fill-rule="nonzero"/></svg>',
+        'flip-horizontally': '<svg width="24" height="24"><path d="M14 19h2v-2h-2v2zm4-8h2V9h-2v2zM4 7v10c0 1.1.9 2 2 2h3v-2H6V7h3V5H6a2 2 0 0 0-2 2zm14-2v2h2a2 2 0 0 0-2-2zm-7 16h2V3h-2v18zm7-6h2v-2h-2v2zm-4-8h2V5h-2v2zm4 12a2 2 0 0 0 2-2h-2v2z" fill-rule="nonzero"/></svg>',
+        'flip-vertically': '<svg width="24" height="24"><path d="M5 14v2h2v-2H5zm8 4v2h2v-2h-2zm4-14H7a2 2 0 0 0-2 2v3h2V6h10v3h2V6a2 2 0 0 0-2-2zm2 14h-2v2a2 2 0 0 0 2-2zM3 11v2h18v-2H3zm6 7v2h2v-2H9zm8-4v2h2v-2h-2zM5 18c0 1.1.9 2 2 2v-2H5z" fill-rule="nonzero"/></svg>',
+        'format-painter': '<svg width="24" height="24"><path d="M18 5V4c0-.5-.4-1-1-1H5a1 1 0 0 0-1 1v4c0 .6.5 1 1 1h12c.6 0 1-.4 1-1V7h1v4H9v9c0 .6.4 1 1 1h2c.6 0 1-.4 1-1v-7h8V5h-3z" fill-rule="nonzero"/></svg>',
+        'fullscreen': '<svg width="24" height="24"><path d="M15.3 10l-1.2-1.3 2.9-3h-2.3a.9.9 0 1 1 0-1.7H19c.5 0 .9.4.9.9v4.4a.9.9 0 1 1-1.8 0V7l-2.9 3zm0 4l3 3v-2.3a.9.9 0 1 1 1.7 0V19c0 .5-.4.9-.9.9h-4.4a.9.9 0 1 1 0-1.8H17l-3-2.9 1.3-1.2zM10 15.4l-2.9 3h2.3a.9.9 0 1 1 0 1.7H5a.9.9 0 0 1-.9-.9v-4.4a.9.9 0 1 1 1.8 0V17l2.9-3 1.2 1.3zM8.7 10L5.7 7v2.3a.9.9 0 0 1-1.7 0V5c0-.5.4-.9.9-.9h4.4a.9.9 0 0 1 0 1.8H7l3 2.9-1.3 1.2z" fill-rule="nonzero"/></svg>',
+        'gallery': '<svg width="24" height="24"><path fill-rule="nonzero" d="M5 15.7l2.3-2.2c.3-.3.7-.3 1 0L11 16l5.1-5c.3-.4.8-.4 1 0l2 1.9V8H5v7.7zM5 18V19h3l1.8-1.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 6h16c.6 0 1 .4 1 1v13c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V7c0-.6.4-1 1-1zm6 7a2 2 0 1 1 0-4 2 2 0 0 1 0 4zM4.5 4h15a.5.5 0 1 1 0 1h-15a.5.5 0 0 1 0-1zm2-2h11a.5.5 0 1 1 0 1h-11a.5.5 0 0 1 0-1z"/></svg>',
+        'gamma': '<svg width="24" height="24"><path d="M4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm1 2v14h14V5H5zm6.5 11.8V14L9.2 8.7a5.1 5.1 0 0 0-.4-.8l-.1-.2H8 8v-1l.3-.1.3-.1h.7a1 1 0 0 1 .6.5l.1.3a8.5 8.5 0 0 1 .3.6l1.9 4.6 2-5.2a1 1 0 0 1 1-.6.5.5 0 0 1 .5.6L13 14v2.8a.7.7 0 0 1-1.4 0z" fill-rule="nonzero"/></svg>',
+        'help': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M12 5.5a6.5 6.5 0 0 0-6 9 6.3 6.3 0 0 0 1.4 2l1 1a6.3 6.3 0 0 0 3.6 1 6.5 6.5 0 0 0 6-9 6.3 6.3 0 0 0-1.4-2l-1-1a6.3 6.3 0 0 0-3.6-1zM12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4z"/><path d="M9.6 9.7a.7.7 0 0 1-.7-.8c0-1.1 1.5-1.8 3.2-1.8 1.8 0 3.2.8 3.2 2.4 0 1.4-.4 2.1-1.5 2.8-.2 0-.3.1-.3.2a2 2 0 0 0-.8.8.8.8 0 0 1-1.4-.6c.3-.7.8-1 1.3-1.5l.4-.2c.7-.4.8-.6.8-1.5 0-.5-.6-.9-1.7-.9-.5 0-1 .1-1.4.3-.2 0-.3.1-.3.2v-.2c0 .4-.4.8-.8.8z" fill-rule="nonzero"/><circle cx="12" cy="16" r="1"/></g></svg>',
+        'highlight-bg-color': '<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-highlight-bg-color__color" d="M3 18h18v3H3z"/><path fill-rule="nonzero" d="M7.7 16.7H3l3.3-3.3-.7-.8L10.2 8l4 4.1-4 4.2c-.2.2-.6.2-.8 0l-.6-.7-1.1 1.1zm5-7.5L11 7.4l3-2.9a2 2 0 0 1 2.6 0L18 6c.7.7.7 2 0 2.7l-2.9 2.9-1.8-1.8-.5-.6"/></g></svg>',
+        'home': '<svg width="24" height="24"><path fill-rule="nonzero" d="M10 20v-6h4v6h5v-8h3L12 3 2 12h3v8z"/></svg>',
+        'horizontal-rule': '<svg width="24" height="24"><path d="M4 11h16v2H4z" fill-rule="evenodd"/></svg>',
+        'image-options': '<svg width="24" height="24"><path d="M6 10a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm12 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm-6 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2z" fill-rule="nonzero"/></svg>',
+        'image': '<svg width="24" height="24"><path d="M5 15.7l3.3-3.2c.3-.3.7-.3 1 0L12 15l4.1-4c.3-.4.8-.4 1 0l2 1.9V5H5v10.7zM5 18V19h3l2.8-2.9-2-2L5 17.9zm14-3l-2.5-2.4-6.4 6.5H19v-4zM4 3h16c.6 0 1 .4 1 1v16c0 .6-.4 1-1 1H4a1 1 0 0 1-1-1V4c0-.6.4-1 1-1zm6 8a2 2 0 1 0 0-4 2 2 0 0 0 0 4z" fill-rule="nonzero"/></svg>',
+        'indent': '<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 1 1 0-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm-5 4h12a1 1 0 0 1 0 2H7a1 1 0 0 1 0-2zm-2.6-3.8L6.2 12l-1.8-1.2a1 1 0 0 1 1.2-1.6l3 2a1 1 0 0 1 0 1.6l-3 2a1 1 0 1 1-1.2-1.6z" fill-rule="evenodd"/></svg>',
+        'info': '<svg width="24" height="24"><path d="M12 4a7.8 7.8 0 0 1 5.7 2.3A8 8 0 1 1 12 4zm-1 3v2h2V7h-2zm3 10v-1h-1v-5h-3v1h1v4h-1v1h4z" fill-rule="evenodd"/></svg>',
+        'insert-character': '<svg width="24" height="24"><path d="M15 18h4l1-2v4h-6v-3.3l1.4-1a6 6 0 0 0 1.8-2.9 6.3 6.3 0 0 0-.1-4.1 5.8 5.8 0 0 0-3-3.2c-.6-.3-1.3-.5-2.1-.5a5.1 5.1 0 0 0-3.9 1.8 6.3 6.3 0 0 0-1.3 6 6.2 6.2 0 0 0 1.8 3l1.4.9V20H4v-4l1 2h4v-.5l-2-1L5.4 15A6.5 6.5 0 0 1 4 11c0-1 .2-1.9.6-2.7A7 7 0 0 1 6.3 6C7.1 5.4 8 5 9 4.5c1-.3 2-.5 3.1-.5a8.8 8.8 0 0 1 5.7 2 7 7 0 0 1 1.7 2.3 6 6 0 0 1 .2 4.8c-.2.7-.6 1.3-1 1.9a7.6 7.6 0 0 1-3.6 2.5v.5z" fill-rule="evenodd"/></svg>',
+        'insert-time': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M12 19a7 7 0 1 0 0-14 7 7 0 0 0 0 14zm0 2a9 9 0 1 1 0-18 9 9 0 0 1 0 18z"/><path d="M16 12h-3V7c0-.6-.4-1-1-1a1 1 0 0 0-1 1v7h5c.6 0 1-.4 1-1s-.4-1-1-1z"/></g></svg>',
+        'invert': '<svg width="24" height="24"><path d="M18 19.3L16.5 18a5.8 5.8 0 0 1-3.1 1.9 6.1 6.1 0 0 1-5.5-1.6A5.8 5.8 0 0 1 6 14v-.3l.1-1.2A13.9 13.9 0 0 1 7.7 9l-3-3 .7-.8 2.8 2.9 9 8.9 1.5 1.6-.7.6zm0-5.5v.3l-.1 1.1-.4 1-1.2-1.2a4.3 4.3 0 0 0 .2-1v-.2c0-.4 0-.8-.2-1.3l-.5-1.4a14.8 14.8 0 0 0-3-4.2L12 6a26.1 26.1 0 0 0-2.2 2.5l-1-1a20.9 20.9 0 0 1 2.9-3.3L12 4l1 .8a22.2 22.2 0 0 1 4 5.4c.6 1.2 1 2.4 1 3.6z" fill-rule="evenodd"/></svg>',
+        'italic': '<svg width="24" height="24"><path d="M16.7 4.7l-.1.9h-.3c-.6 0-1 0-1.4.3-.3.3-.4.6-.5 1.1l-2.1 9.8v.6c0 .5.4.8 1.4.8h.2l-.2.8H8l.2-.8h.2c1.1 0 1.8-.5 2-1.5l2-9.8.1-.5c0-.6-.4-.8-1.4-.8h-.3l.2-.9h5.8z" fill-rule="evenodd"/></svg>',
+        'line': '<svg width="24" height="24"><path d="M15 9l-8 8H4v-3l8-8 3 3zm1-1l-3-3 1-1h1c-.2 0 0 0 0 0l2 2s0 .2 0 0v1l-1 1zM4 18h16v2H4v-2z" fill-rule="evenodd"/></svg>',
+        'link': '<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 0 1 1.4 1.4l-2.1 2a2 2 0 1 0 2.7 2.8l4.8-4.8a1 1 0 0 0 0-1.4 1 1 0 1 1 1.4-1.3 2.9 2.9 0 0 1 0 4L9.6 20a3.9 3.9 0 0 1-5.5-5.5l2-2zm11.6-.6a1 1 0 0 1-1.4-1.4l2-2a2 2 0 1 0-2.6-2.8L11 10.3a1 1 0 0 0 0 1.4A1 1 0 1 1 9.6 13a2.9 2.9 0 0 1 0-4L14.4 4a3.9 3.9 0 0 1 5.5 5.5l-2 2z" fill-rule="nonzero"/></svg>',
+        'list-bull-circle': '<svg width="48" height="48"><g fill-rule="evenodd"><path d="M11 16a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM11 26a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6zM11 36a2 2 0 1 0 0-4 2 2 0 0 0 0 4zm0 1a3 3 0 1 1 0-6 3 3 0 0 1 0 6z" fill-rule="nonzero"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',
+        'list-bull-default': '<svg width="48" height="48"><g fill-rule="evenodd"><circle cx="11" cy="14" r="3"/><circle cx="11" cy="24" r="3"/><circle cx="11" cy="34" r="3"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',
+        'list-bull-square': '<svg width="48" height="48"><g fill-rule="evenodd"><path d="M8 11h6v6H8zM8 21h6v6H8zM8 31h6v6H8z"/><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/></g></svg>',
+        'list-num-default-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 17v-4.8l-1.6 1v-1.1l1.6-1h1.2V17zM33.3 17.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm1.7 5.7c0-1.2 1-2 2.2-2 1.3 0 2.1.8 2.1 1.8 0 .7-.3 1.2-1.3 2.2l-1.2 1v.2h2.6v1h-4.3v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H35zm-1.7 4.3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm3.2 7.3v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H35c0-1.1 1-1.8 2.2-1.8 1.2 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.7.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .6 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm-3.3 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',
+        'list-num-default': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10 17v-4.8l-1.5 1v-1.1l1.6-1h1.2V17h-1.2zm3.6.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-5 5.7c0-1.2.8-2 2.1-2s2.1.8 2.1 1.8c0 .7-.3 1.2-1.4 2.2l-1.1 1v.2h2.6v1H8.6v-.9l2-1.9c.8-.8 1-1.1 1-1.5 0-.5-.4-.8-1-.8-.5 0-.9.3-.9.9H8.5zm6.3 4.3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM10 34.4v-1h.7c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7s-1 .3-1 .8H8.6c0-1.1 1-1.8 2.2-1.8 1.3 0 2.1.6 2.1 1.6 0 .7-.4 1.2-1 1.3v.1c.8.1 1.3.7 1.3 1.4 0 1-1 1.9-2.4 1.9-1.3 0-2.2-.8-2.3-2h1.2c0 .6.5 1 1.1 1 .7 0 1-.4 1-1 0-.5-.3-.8-1-.8h-.7zm4.7 2.7c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7z"/></g></svg>',
+        'list-num-lower-alpha-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M36.5 16c-.9 0-1.5-.5-1.5-1.3s.6-1.3 1.8-1.4h1v-.4c0-.4-.2-.6-.7-.6-.4 0-.7.1-.8.4h-1.1c0-.8.8-1.4 2-1.4S39 12 39 13V16h-1.2v-.6c-.3.4-.8.7-1.4.7zm.4-.8c.6 0 1-.4 1-.9V14h-1c-.5.1-.7.3-.7.6 0 .4.3.6.7.6zM33.1 16.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zM37.7 26c-.7 0-1.2-.2-1.5-.7v.7H35v-6.3h1.2v2.5c.3-.5.8-.9 1.5-.9 1.1 0 1.8 1 1.8 2.4 0 1.5-.7 2.4-1.8 2.4zm-.5-3.6c-.6 0-1 .5-1 1.3s.4 1.4 1 1.4c.7 0 1-.6 1-1.4 0-.8-.3-1.3-1-1.3zM33.2 26.1c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm6 7h-1c-.1-.5-.4-.8-1-.8s-1 .5-1 1.4c0 1 .4 1.4 1 1.4.5 0 .9-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm-6.1 3c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
+        'list-num-lower-alpha': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.3 15.2c.5 0 1-.4 1-.9V14h-1c-.5.1-.8.3-.8.6 0 .4.3.6.8.6zm-.4.9c-1 0-1.5-.6-1.5-1.4 0-.8.6-1.3 1.7-1.4h1.1v-.4c0-.4-.2-.6-.7-.6-.5 0-.8.1-.9.4h-1c0-.8.8-1.4 2-1.4 1.1 0 1.8.6 1.8 1.6V16h-1.1v-.6h-.1c-.2.4-.7.7-1.3.7zm4.6 0c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-3.2 10c-.6 0-1.2-.3-1.4-.8v.7H8.5v-6.3H10v2.5c.3-.5.8-.9 1.4-.9 1.2 0 1.9 1 1.9 2.4 0 1.5-.7 2.4-1.9 2.4zm-.4-3.7c-.7 0-1 .5-1 1.3s.3 1.4 1 1.4c.6 0 1-.6 1-1.4 0-.8-.4-1.3-1-1.3zm4 3.7c-.5 0-.7-.3-.7-.7 0-.4.2-.7.7-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-2.2 7h-1.2c0-.5-.4-.8-.9-.8-.6 0-1 .5-1 1.4 0 1 .4 1.4 1 1.4.5 0 .8-.2 1-.7h1c0 1-.8 1.7-2 1.7-1.4 0-2.2-.9-2.2-2.4s.8-2.4 2.2-2.4c1.2 0 2 .7 2 1.7zm1.8 3c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
+        'list-num-lower-greek-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M37.4 16c-1.2 0-2-.8-2-2.3 0-1.5.8-2.4 2-2.4.6 0 1 .4 1.3 1v-.9H40v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1-.7h-.2c-.2.4-.7.8-1.3.8zm.3-1c.6 0 1-.5 1-1.3s-.4-1.3-1-1.3-1 .5-1 1.3.4 1.4 1 1.4zM33.3 16.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM36 21.9c0-1.5.8-2.3 2.1-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.9 1.3.9.3 1.3.8 1.3 1.7 0 1.2-.7 1.9-1.8 1.9-.6 0-1.1-.3-1.4-.8v2.2H36V22zm1.8 1.2v-1h.3c.5 0 .9-.2.9-.7 0-.5-.3-.8-.9-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1 1.3s1-.4 1-1-.4-1-1.2-1h-.3zM33.3 26.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zM37.1 34.6L34.8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.2.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 0 0-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zM33.3 36.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
+        'list-num-lower-greek': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M10.5 15c.7 0 1-.5 1-1.3s-.3-1.3-1-1.3c-.5 0-.9.5-.9 1.3s.4 1.4 1 1.4zm-.3 1c-1.1 0-1.8-.8-1.8-2.3 0-1.5.7-2.4 1.8-2.4.7 0 1.1.4 1.3 1h.1v-.9h1.2v3.2c0 .4.1.5.4.5h.2v.9h-.6c-.6 0-1-.2-1.1-.7h-.1c-.2.4-.7.8-1.4.8zm5 .1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.7-.7.5 0 .8.3.8.7 0 .4-.3.7-.8.7zm-4.9 7v-1h.3c.6 0 1-.2 1-.7 0-.5-.4-.8-1-.8-.5 0-.8.3-.8 1v2.2c0 .8.4 1.3 1.1 1.3.6 0 1-.4 1-1s-.5-1-1.3-1h-.3zM8.6 22c0-1.5.7-2.3 2-2.3 1.2 0 2 .6 2 1.6 0 .6-.3 1-.8 1.3.8.3 1.3.8 1.3 1.7 0 1.2-.8 1.9-1.9 1.9-.6 0-1.1-.3-1.3-.8v2.2H8.5V22zm6.2 4.2c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm-4.5 8.5L8 30h1.4l1.7 3.5 1.7-3.5h1.1l-2.2 4.6v.1c.5.8.7 1.4.7 1.8 0 .4-.1.8-.4 1-.2.2-.6.3-1 .3-.9 0-1.3-.4-1.3-1.2 0-.5.2-1 .5-1.7l.1-.2zm.7 1a2 2 0 0 0-.4.9c0 .3.1.4.4.4.3 0 .4-.1.4-.4 0-.2-.1-.6-.4-1zm4.5.5c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
+        'list-num-lower-roman-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M32.9 16v-1.2h-1.3V16H33zm0 10v-1.2h-1.3V26H33zm0 10v-1.2h-1.3V36H33z"/><path fill-rule="nonzero" d="M36 21h-1.5v5H36zM36 31h-1.5v5H36zM39 21h-1.5v5H39zM39 31h-1.5v5H39zM42 31h-1.5v5H42zM36 11h-1.5v5H36zM36 19h-1.5v1H36zM36 29h-1.5v1H36zM39 19h-1.5v1H39zM39 29h-1.5v1H39zM42 29h-1.5v1H42zM36 9h-1.5v1H36z"/></g></svg>',
+        'list-num-lower-roman': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 16v-1.2h1.3V16H15zm0 10v-1.2h1.3V26H15zm0 10v-1.2h1.3V36H15z"/><path fill-rule="nonzero" d="M12 21h1.5v5H12zM12 31h1.5v5H12zM9 21h1.5v5H9zM9 31h1.5v5H9zM6 31h1.5v5H6zM12 11h1.5v5H12zM12 19h1.5v1H12zM12 29h1.5v1H12zM9 19h1.5v1H9zM9 29h1.5v1H9zM6 29h1.5v1H6zM12 9h1.5v1H12z"/></g></svg>',
+        'list-num-upper-alpha-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M39.3 17l-.5-1.4h-2l-.5 1.4H35l2-6h1.6l2 6h-1.3zm-1.6-4.7l-.7 2.3h1.6l-.8-2.3zM33.4 17c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zm4.7 9.9h-2.7v-6H38c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zm-1.4-5v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4h1.1c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9h-1.1V26zM33 27.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm4.9 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm-4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
+        'list-num-upper-alpha': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M12.6 17l-.5-1.4h-2L9.5 17H8.3l2-6H12l2 6h-1.3zM11 12.3l-.7 2.3h1.6l-.8-2.3zm4.7 4.8c-.4 0-.7-.3-.7-.7 0-.4.3-.7.7-.7.5 0 .7.3.7.7 0 .4-.2.7-.7.7zM11.4 27H8.7v-6h2.6c1.2 0 1.9.6 1.9 1.5 0 .6-.5 1.2-1 1.3.7.1 1.3.7 1.3 1.5 0 1-.8 1.7-2 1.7zM10 22v1.5h1c.6 0 1-.3 1-.8 0-.4-.4-.7-1-.7h-1zm0 4H11c.7 0 1.1-.3 1.1-.8 0-.6-.4-.9-1.1-.9H10V26zm5.4 1.1c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7zm-4.1 10c-1.8 0-2.8-1.1-2.8-3.1s1-3.1 2.8-3.1c1.4 0 2.5.9 2.6 2.2h-1.3c0-.7-.6-1.1-1.3-1.1-1 0-1.6.7-1.6 2s.6 2 1.6 2c.7 0 1.2-.4 1.4-1h1.2c-.1 1.3-1.2 2.2-2.6 2.2zm4.5 0c-.5 0-.8-.3-.8-.7 0-.4.3-.7.8-.7.4 0 .7.3.7.7 0 .4-.3.7-.7.7z"/></g></svg>',
+        'list-num-upper-roman-rtl': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M8 12h22v4H8zM8 22h22v4H8zM8 32h22v4H8z"/><path d="M31.6 17v-1.2H33V17h-1.3zm0 10v-1.2H33V27h-1.3zm0 10v-1.2H33V37h-1.3z"/><path fill-rule="nonzero" d="M34.5 20H36v7h-1.5zM34.5 30H36v7h-1.5zM37.5 20H39v7h-1.5zM37.5 30H39v7h-1.5zM40.5 30H42v7h-1.5zM34.5 10H36v7h-1.5z"/></g></svg>',
+        'list-num-upper-roman': '<svg width="48" height="48"><g fill-rule="evenodd"><path opacity=".2" d="M18 12h22v4H18zM18 22h22v4H18zM18 32h22v4H18z"/><path d="M15.1 17v-1.2h1.3V17H15zm0 10v-1.2h1.3V27H15zm0 10v-1.2h1.3V37H15z"/><path fill-rule="nonzero" d="M12 20h1.5v7H12zM12 30h1.5v7H12zM9 20h1.5v7H9zM9 30h1.5v7H9zM6 30h1.5v7H6zM12 10h1.5v7H12z"/></g></svg>',
+        'lock': '<svg width="24" height="24"><path d="M16.3 11c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H8V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h.3zM10 8v3h4V8a1 1 0 0 0-.3-.7A1 1 0 0 0 13 7h-2a1 1 0 0 0-.7.3 1 1 0 0 0-.3.7z" fill-rule="evenodd"/></svg>',
+        'ltr': '<svg width="24" height="24"><path d="M11 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 7.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L11 5zM4.4 16.2L6.2 15l-1.8-1.2a1 1 0 0 1 1.2-1.6l3 2a1 1 0 0 1 0 1.6l-3 2a1 1 0 1 1-1.2-1.6z" fill-rule="evenodd"/></svg>',
+        'more-drawer': '<svg width="24" height="24"><path d="M6 10a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm12 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2zm-6 0a2 2 0 0 0-2 2c0 1.1.9 2 2 2a2 2 0 0 0 2-2 2 2 0 0 0-2-2z" fill-rule="nonzero"/></svg>',
+        'new-document': '<svg width="24" height="24"><path d="M14.4 3H7a2 2 0 0 0-2 2v14c0 1.1.9 2 2 2h10a2 2 0 0 0 2-2V7.6L14.4 3zM17 19H7V5h6v4h4v10z" fill-rule="nonzero"/></svg>',
+        'new-tab': '<svg width="24" height="24"><path d="M15 13l2-2v8H5V7h8l-2 2H7v8h8v-4zm4-8v5.5l-2-2-5.6 5.5H10v-1.4L15.5 7l-2-2H19z" fill-rule="evenodd"/></svg>',
+        'non-breaking': '<svg width="24" height="24"><path d="M11 11H8a1 1 0 1 1 0-2h3V6c0-.6.4-1 1-1s1 .4 1 1v3h3c.6 0 1 .4 1 1s-.4 1-1 1h-3v3c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-3zm10 4v5H3v-5c0-.6.4-1 1-1s1 .4 1 1v3h14v-3c0-.6.4-1 1-1s1 .4 1 1z" fill-rule="evenodd"/></svg>',
+        'notice': '<svg width="24" height="24"><path d="M17.8 9.8L15.4 4 20 8.5v7L15.5 20h-7L4 15.5v-7L8.5 4h7l2.3 5.8zm0 0l2.2 5.7-2.3-5.8zM13 17v-2h-2v2h2zm0-4V7h-2v6h2z" fill-rule="evenodd"/></svg>',
+        'ordered-list-rtl': '<svg width="24" height="24"><path d="M6 17h8a1 1 0 0 1 0 2H6a1 1 0 0 1 0-2zm0-6h8a1 1 0 0 1 0 2H6a1 1 0 0 1 0-2zm0-6h8a1 1 0 0 1 0 2H6a1 1 0 1 1 0-2zm13-1v3.5a.5.5 0 1 1-1 0V5h-.5a.5.5 0 1 1 0-1H19zm-1 8.8l.2.2h1.3a.5.5 0 1 1 0 1h-1.6a1 1 0 0 1-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 0 0-.2-.2h-1.3a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zm2 4.2v2c0 .6-.4 1-1 1h-1.5a.5.5 0 0 1 0-1h1.2a.3.3 0 1 0 0-.6h-1.3a.4.4 0 1 1 0-.8h1.3a.3.3 0 0 0 0-.6h-1.2a.5.5 0 1 1 0-1H19c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',
+        'ordered-list': '<svg width="24" height="24"><path d="M10 17h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0-6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 1 1 0-2zM6 4v3.5c0 .3-.2.5-.5.5a.5.5 0 0 1-.5-.5V5h-.5a.5.5 0 0 1 0-1H6zm-1 8.8l.2.2h1.3c.3 0 .5.2.5.5s-.2.5-.5.5H4.9a1 1 0 0 1-.9-1V13c0-.4.3-.8.6-1l1.2-.4.2-.3a.2.2 0 0 0-.2-.2H4.5a.5.5 0 0 1-.5-.5c0-.3.2-.5.5-.5h1.6c.5 0 .9.4.9 1v.1c0 .4-.3.8-.6 1l-1.2.4-.2.3zM7 17v2c0 .6-.4 1-1 1H4.5a.5.5 0 0 1 0-1h1.2c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.4a.4.4 0 1 1 0-.8h1.3c.2 0 .3-.1.3-.3 0-.2-.1-.3-.3-.3H4.5a.5.5 0 1 1 0-1H6c.6 0 1 .4 1 1z" fill-rule="evenodd"/></svg>',
+        'orientation': '<svg width="24" height="24"><path d="M7.3 6.4L1 13l6.4 6.5 6.5-6.5-6.5-6.5zM3.7 13l3.6-3.7L11 13l-3.7 3.7-3.6-3.7zM12 6l2.8 2.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0L9.2 5.7a.8.8 0 0 1 0-1.2L13.6.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L12 4h1a9 9 0 1 1-4.3 16.9l1.5-1.5A7 7 0 1 0 13 6h-1z" fill-rule="nonzero"/></svg>',
+        'outdent': '<svg width="24" height="24"><path d="M7 5h12c.6 0 1 .4 1 1s-.4 1-1 1H7a1 1 0 1 1 0-2zm5 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm0 4h7c.6 0 1 .4 1 1s-.4 1-1 1h-7a1 1 0 0 1 0-2zm-5 4h12a1 1 0 0 1 0 2H7a1 1 0 0 1 0-2zm1.6-3.8a1 1 0 0 1-1.2 1.6l-3-2a1 1 0 0 1 0-1.6l3-2a1 1 0 0 1 1.2 1.6L6.8 12l1.8 1.2z" fill-rule="evenodd"/></svg>',
+        'page-break': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M5 11c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h1c.6 0 1 .4 1 1s-.4 1-1 1h-1a1 1 0 0 1 0-2zm4 0c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zM7 3v5h10V3c0-.6.4-1 1-1s1 .4 1 1v7H5V3c0-.6.4-1 1-1s1 .4 1 1zM6 22a1 1 0 0 1-1-1v-7h14v7c0 .6-.4 1-1 1a1 1 0 0 1-1-1v-5H7v5c0 .6-.4 1-1 1z"/></g></svg>',
+        'paragraph': '<svg width="24" height="24"><path d="M10 5h7a1 1 0 0 1 0 2h-1v11a1 1 0 0 1-2 0V7h-2v11a1 1 0 0 1-2 0v-6c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 6.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L10 5z" fill-rule="evenodd"/></svg>',
+        'paste-text': '<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0 1 12 1a3 3 0 0 1 2.8 2H18a2 2 0 0 1 2 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 0 0-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1zm0 9h6v2h-.5l-.5-1h-1v4h.8v1h-3.6v-1h.8v-4h-1l-.5 1H12v-2z" fill-rule="nonzero"/></svg>',
+        'paste': '<svg width="24" height="24"><path d="M18 9V5h-2v1c0 .6-.4 1-1 1H9a1 1 0 0 1-1-1V5H6v13h3V9h9zM9 20H6a2 2 0 0 1-2-2V5c0-1.1.9-2 2-2h3.2A3 3 0 0 1 12 1a3 3 0 0 1 2.8 2H18a2 2 0 0 1 2 2v4h1v12H9v-1zm1.5-9.5v9h9v-9h-9zM12 3a1 1 0 0 0-1 1c0 .5.4 1 1 1s1-.5 1-1-.4-1-1-1z" fill-rule="nonzero"/></svg>',
+        'permanent-pen': '<svg width="24" height="24"><path d="M10.5 17.5L8 20H3v-3l3.5-3.5a2 2 0 0 1 0-3L14 3l1 1-7.3 7.3a1 1 0 0 0 0 1.4l3.6 3.6c.4.4 1 .4 1.4 0L20 9l1 1-7.6 7.6a2 2 0 0 1-2.8 0l-.1-.1z" fill-rule="nonzero"/></svg>',
+        'plus': '<svg width="24" height="24"><g fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" stroke="#000" stroke-width="2"><path d="M12 5v14M5 12h14"/></g></svg>',
+        'preferences': '<svg width="24" height="24"><path d="M20.1 13.5l-1.9.2a5.8 5.8 0 0 1-.6 1.5l1.2 1.5c.4.4.3 1 0 1.4l-.7.7a1 1 0 0 1-1.4 0l-1.5-1.2a6.2 6.2 0 0 1-1.5.6l-.2 1.9c0 .5-.5.9-1 .9h-1a1 1 0 0 1-1-.9l-.2-1.9a5.8 5.8 0 0 1-1.5-.6l-1.5 1.2a1 1 0 0 1-1.4 0l-.7-.7a1 1 0 0 1 0-1.4l1.2-1.5a6.2 6.2 0 0 1-.6-1.5l-1.9-.2a1 1 0 0 1-.9-1v-1c0-.5.4-1 .9-1l1.9-.2a5.8 5.8 0 0 1 .6-1.5L5.2 7.3a1 1 0 0 1 0-1.4l.7-.7a1 1 0 0 1 1.4 0l1.5 1.2a6.2 6.2 0 0 1 1.5-.6l.2-1.9c0-.5.5-.9 1-.9h1c.5 0 1 .4 1 .9l.2 1.9a5.8 5.8 0 0 1 1.5.6l1.5-1.2a1 1 0 0 1 1.4 0l.7.7c.3.4.4 1 0 1.4l-1.2 1.5a6.2 6.2 0 0 1 .6 1.5l1.9.2c.5 0 .9.5.9 1v1c0 .5-.4 1-.9 1zM12 15a3 3 0 1 0 0-6 3 3 0 0 0 0 6z" fill-rule="evenodd"/></svg>',
+        'preview': '<svg width="24" height="24"><path d="M3.5 12.5c.5.8 1.1 1.6 1.8 2.3 2 2 4.2 3.2 6.7 3.2s4.7-1.2 6.7-3.2a16.2 16.2 0 0 0 2.1-2.8 15.7 15.7 0 0 0-2.1-2.8c-2-2-4.2-3.2-6.7-3.2a9.3 9.3 0 0 0-6.7 3.2A16.2 16.2 0 0 0 3.2 12c0 .2.2.3.3.5zm-2.4-1l.7-1.2L4 7.8C6.2 5.4 8.9 4 12 4c3 0 5.8 1.4 8.1 3.8a18.2 18.2 0 0 1 2.8 3.7v1l-.7 1.2-2.1 2.5c-2.3 2.4-5 3.8-8.1 3.8-3 0-5.8-1.4-8.1-3.8a18.2 18.2 0 0 1-2.8-3.7 1 1 0 0 1 0-1zm12-3.3a2 2 0 1 0 2.7 2.6 4 4 0 1 1-2.6-2.6z" fill-rule="nonzero"/></svg>',
+        'print': '<svg width="24" height="24"><path d="M18 8H6a3 3 0 0 0-3 3v6h2v3h14v-3h2v-6a3 3 0 0 0-3-3zm-1 10H7v-4h10v4zm.5-5c-.8 0-1.5-.7-1.5-1.5s.7-1.5 1.5-1.5 1.5.7 1.5 1.5-.7 1.5-1.5 1.5zm.5-8H6v2h12V5z" fill-rule="nonzero"/></svg>',
+        'quote': '<svg width="24" height="24"><path d="M7.5 17h.9c.4 0 .7-.2.9-.6L11 13V8c0-.6-.4-1-1-1H6a1 1 0 0 0-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 0 0 .8 1.3zm8 0h.9c.4 0 .7-.2.9-.6L19 13V8c0-.6-.4-1-1-1h-4a1 1 0 0 0-1 1v4c0 .6.4 1 1 1h2l-1.3 2.7a1 1 0 0 0 .8 1.3z" fill-rule="nonzero"/></svg>',
+        'redo': '<svg width="24" height="24"><path d="M17.6 10H12c-2.8 0-4.4 1.4-4.9 3.5-.4 2 .3 4 1.4 4.6a1 1 0 1 1-1 1.8c-2-1.2-2.9-4.1-2.3-6.8.6-3 3-5.1 6.8-5.1h5.6l-3.3-3.3a1 1 0 1 1 1.4-1.4l5 5a1 1 0 0 1 0 1.4l-5 5a1 1 0 0 1-1.4-1.4l3.3-3.3z" fill-rule="nonzero"/></svg>',
+        'reload': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5 22.1l-1.2-4.7v-.2a1 1 0 0 1 1-1l5 .4a1 1 0 1 1-.2 2l-2.2-.2a7.8 7.8 0 0 0 8.4.2 7.5 7.5 0 0 0 3.5-6.4 1 1 0 1 1 2 0 9.5 9.5 0 0 1-4.5 8 9.9 9.9 0 0 1-10.2 0l.4 1.4a1 1 0 1 1-2 .5zM13.6 7.4c0-.5.5-1 1-.9l2.8.2a8 8 0 0 0-9.5-1 7.5 7.5 0 0 0-3.6 7 1 1 0 0 1-2 0 9.5 9.5 0 0 1 4.5-8.6 10 10 0 0 1 10.9.3l-.3-1a1 1 0 0 1 2-.5l1.1 4.8a1 1 0 0 1-1 1.2l-5-.4a1 1 0 0 1-.9-1z"/></g></svg>',
+        'remove-formatting': '<svg width="24" height="24"><path d="M13.2 6a1 1 0 0 1 0 .2l-2.6 10a1 1 0 0 1-1 .8h-.2a.8.8 0 0 1-.8-1l2.6-10H8a1 1 0 1 1 0-2h9a1 1 0 0 1 0 2h-3.8zM5 18h7a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2zm13 1.5L16.5 18 15 19.5a.7.7 0 0 1-1-1l1.5-1.5-1.5-1.5a.7.7 0 0 1 1-1l1.5 1.5 1.5-1.5a.7.7 0 0 1 1 1L17.5 17l1.5 1.5a.7.7 0 0 1-1 1z" fill-rule="evenodd"/></svg>',
+        'remove': '<svg width="24" height="24"><path d="M16 7h3a1 1 0 0 1 0 2h-1v9a3 3 0 0 1-3 3H9a3 3 0 0 1-3-3V9H5a1 1 0 1 1 0-2h3V6a3 3 0 0 1 3-3h2a3 3 0 0 1 3 3v1zm-2 0V6c0-.6-.4-1-1-1h-2a1 1 0 0 0-1 1v1h4zm2 2H8v9c0 .6.4 1 1 1h6c.6 0 1-.4 1-1V9zm-7 3a1 1 0 0 1 2 0v4a1 1 0 0 1-2 0v-4zm4 0a1 1 0 0 1 2 0v4a1 1 0 0 1-2 0v-4z" fill-rule="nonzero"/></svg>',
+        'resize-handle': '<svg width="10" height="10"><g fill-rule="nonzero"><path d="M8.1 1.1A.5.5 0 1 1 9 2l-7 7A.5.5 0 1 1 1 8l7-7zM8.1 5.1A.5.5 0 1 1 9 6l-3 3A.5.5 0 1 1 5 8l3-3z"/></g></svg>',
+        'resize': '<svg width="24" height="24"><path d="M4 5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h6c.3 0 .5.1.7.3.2.2.3.4.3.7 0 .3-.1.5-.3.7a1 1 0 0 1-.7.3H7.4L18 16.6V13c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3.3 0 .5.1.7.3.2.2.3.4.3.7v6c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-6a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3.6L6 7.4V11c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3 1 1 0 0 1-.7-.3A1 1 0 0 1 4 11V5z" fill-rule="evenodd"/></svg>',
+        'restore-draft': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M17 13c0 .6-.4 1-1 1h-4V8c0-.6.4-1 1-1s1 .4 1 1v4h2c.6 0 1 .4 1 1z"/><path d="M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10z" fill-rule="nonzero"/></g></svg>',
+        'rotate-left': '<svg width="24" height="24"><path d="M4.7 10H9a1 1 0 0 1 0 2H3a1 1 0 0 1-1-1V5a1 1 0 1 1 2 0v3l2.5-2.4a9.2 9.2 0 0 1 10.8-1.5A9 9 0 0 1 13.4 21c-2.4.1-4.7-.7-6.5-2.2a1 1 0 1 1 1.3-1.5 7.2 7.2 0 0 0 11.6-3.7 7 7 0 0 0-3.5-7.7A7.2 7.2 0 0 0 8 7L4.7 10z" fill-rule="nonzero"/></svg>',
+        'rotate-right': '<svg width="24" height="24"><path d="M20 8V5a1 1 0 0 1 2 0v6c0 .6-.4 1-1 1h-6a1 1 0 0 1 0-2h4.3L16 7A7.2 7.2 0 0 0 7.7 6a7 7 0 0 0 3 13.1c1.9.1 3.7-.5 5-1.7a1 1 0 0 1 1.4 1.5A9.2 9.2 0 0 1 2.2 14c-.9-3.9 1-8 4.5-9.9 3.5-1.9 8-1.3 10.8 1.5L20 8z" fill-rule="nonzero"/></svg>',
+        'rtl': '<svg width="24" height="24"><path d="M8 5h8v2h-2v12h-2V7h-2v12H8v-7c-.5 0-1 0-1.4-.3A3.4 3.4 0 0 1 4.8 10a3.3 3.3 0 0 1 0-2.8 3.4 3.4 0 0 1 1.8-1.8L8 5zm12 11.2a1 1 0 1 1-1 1.6l-3-2a1 1 0 0 1 0-1.6l3-2a1 1 0 1 1 1 1.6L18.4 15l1.8 1.2z" fill-rule="evenodd"/></svg>',
+        'save': '<svg width="24" height="24"><path d="M5 16h14a2 2 0 0 1 2 2v2a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-2c0-1.1.9-2 2-2zm0 2v2h14v-2H5zm10 0h2v2h-2v-2zm-4-6.4L8.7 9.3a1 1 0 1 0-1.4 1.4l4 4c.4.4 1 .4 1.4 0l4-4a1 1 0 1 0-1.4-1.4L13 11.6V4a1 1 0 0 0-2 0v7.6z" fill-rule="nonzero"/></svg>',
+        'search': '<svg width="24" height="24"><path d="M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12z" fill-rule="nonzero"/></svg>',
+        'select-all': '<svg width="24" height="24"><path d="M3 5h2V3a2 2 0 0 0-2 2zm0 8h2v-2H3v2zm4 8h2v-2H7v2zM3 9h2V7H3v2zm10-6h-2v2h2V3zm6 0v2h2a2 2 0 0 0-2-2zM5 21v-2H3c0 1.1.9 2 2 2zm-2-4h2v-2H3v2zM9 3H7v2h2V3zm2 18h2v-2h-2v2zm8-8h2v-2h-2v2zm0 8a2 2 0 0 0 2-2h-2v2zm0-12h2V7h-2v2zm0 8h2v-2h-2v2zm-4 4h2v-2h-2v2zm0-16h2V3h-2v2zM7 17h10V7H7v10zm2-8h6v6H9V9z" fill-rule="nonzero"/></svg>',
+        'selected': '<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2zm3.6 10.9L7 12.3a.7.7 0 0 0-1 1L9.6 17 18 8.6a.7.7 0 0 0 0-1 .7.7 0 0 0-1 0l-7.4 7.3z"/></svg>',
+        'settings': '<svg width="24" height="24"><path d="M11 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V8H5a1 1 0 1 1 0-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.5V6zM8 8h2V6H8v2zm9 2.8v.2h2c.6 0 1 .4 1 1s-.4 1-1 1h-2v.3c0 .2 0 .3-.2.5l-.6.2h-2.4c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V13H5a1 1 0 0 1 0-2h8v-.3c0-.2 0-.3.2-.5l.6-.2h2.4c.3 0 .4 0 .6.2l.2.6zM14 13h2v-2h-2v2zm-3 2.8v.2h8c.6 0 1 .4 1 1s-.4 1-1 1h-8v.3c0 .2 0 .3-.2.5l-.6.2H7.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6V18H5a1 1 0 0 1 0-2h2v-.3c0-.2 0-.3.2-.5l.5-.2h2.5c.3 0 .4 0 .6.2l.2.6zM8 18h2v-2H8v2z" fill-rule="evenodd"/></svg>',
+        'sharpen': '<svg width="24" height="24"><path d="M16 6l4 4-8 9-8-9 4-4h8zm-4 10.2l5.5-6.2-.1-.1H12v-.3h5.1l-.2-.2H12V9h4.6l-.2-.2H12v-.3h4.1l-.2-.2H12V8h3.6l-.2-.2H8.7L6.5 10l.1.1H12v.3H6.9l.2.2H12v.3H7.3l.2.2H12v.3H7.7l.3.2h4v.3H8.2l.2.2H12v.3H8.6l.3.2H12v.3H9l.3.2H12v.3H9.5l.2.2H12v.3h-2l.2.2H12v.3h-1.6l.2.2H12v.3h-1.1l.2.2h.9v.3h-.7l.2.2h.5v.3h-.3l.3.2z" fill-rule="evenodd"/></svg>',
+        'sourcecode': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M9.8 15.7c.3.3.3.8 0 1-.3.4-.9.4-1.2 0l-4.4-4.1a.8.8 0 0 1 0-1.2l4.4-4.2c.3-.3.9-.3 1.2 0 .3.3.3.8 0 1.1L6 12l3.8 3.7zM14.2 15.7c-.3.3-.3.8 0 1 .4.4.9.4 1.2 0l4.4-4.1c.3-.3.3-.9 0-1.2l-4.4-4.2a.8.8 0 0 0-1.2 0c-.3.3-.3.8 0 1.1L18 12l-3.8 3.7z"/></g></svg>',
+        'spell-check': '<svg width="24" height="24"><path d="M6 8v3H5V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h2c.3 0 .5.1.7.3.2.2.3.4.3.7v6H8V8H6zm0-3v2h2V5H6zm13 0h-3v5h3v1h-3a1 1 0 0 1-.7-.3 1 1 0 0 1-.3-.7V5c0-.3.1-.5.3-.7.2-.2.4-.3.7-.3h3v1zm-5 1.5l-.1.7c-.1.2-.3.3-.6.3.3 0 .5.1.6.3l.1.7V10c0 .3-.1.5-.3.7a1 1 0 0 1-.7.3h-3V4h3c.3 0 .5.1.7.3.2.2.3.4.3.7v1.5zM13 10V8h-2v2h2zm0-3V5h-2v2h2zm3 5l1 1-6.5 7L7 15.5l1.3-1 2.2 2.2L16 12z" fill-rule="evenodd"/></svg>',
+        'strike-through': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M15.6 8.5c-.5-.7-1-1.1-1.3-1.3-.6-.4-1.3-.6-2-.6-2.7 0-2.8 1.7-2.8 2.1 0 1.6 1.8 2 3.2 2.3 4.4.9 4.6 2.8 4.6 3.9 0 1.4-.7 4.1-5 4.1A6.2 6.2 0 0 1 7 16.4l1.5-1.1c.4.6 1.6 2 3.7 2 1.6 0 2.5-.4 3-1.2.4-.8.3-2-.8-2.6-.7-.4-1.6-.7-2.9-1-1-.2-3.9-.8-3.9-3.6C7.6 6 10.3 5 12.4 5c2.9 0 4.2 1.6 4.7 2.4l-1.5 1.1z"/><path d="M5 11h14a1 1 0 0 1 0 2H5a1 1 0 0 1 0-2z" fill-rule="nonzero"/></g></svg>',
+        'subscript': '<svg width="24" height="24"><path d="M10.4 10l4.6 4.6-1.4 1.4L9 11.4 4.4 16 3 14.6 7.6 10 3 5.4 4.4 4 9 8.6 13.6 4 15 5.4 10.4 10zM21 19h-5v-1l1-.8 1.7-1.6c.3-.4.5-.8.5-1.2 0-.3 0-.6-.2-.7-.2-.2-.5-.3-.9-.3a2 2 0 0 0-.8.2l-.7.3-.4-1.1 1-.6 1.2-.2c.8 0 1.4.3 1.8.7.4.4.6.9.6 1.5s-.2 1.1-.5 1.6a8 8 0 0 1-1.3 1.3l-.6.6h2.6V19z" fill-rule="nonzero"/></svg>',
+        'superscript': '<svg width="24" height="24"><path d="M15 9.4L10.4 14l4.6 4.6-1.4 1.4L9 15.4 4.4 20 3 18.6 7.6 14 3 9.4 4.4 8 9 12.6 13.6 8 15 9.4zm5.9 1.6h-5v-1l1-.8 1.7-1.6c.3-.5.5-.9.5-1.3 0-.3 0-.5-.2-.7-.2-.2-.5-.3-.9-.3l-.8.2-.7.4-.4-1.2c.2-.2.5-.4 1-.5.3-.2.8-.2 1.2-.2.8 0 1.4.2 1.8.6.4.4.6 1 .6 1.6 0 .5-.2 1-.5 1.5l-1.3 1.4-.6.5h2.6V11z" fill-rule="nonzero"/></svg>',
+        'table-cell-properties': '<svg width="24" height="24"><path d="M4 5h16v14H4V5zm10 10h-4v3h4v-3zm0-8h-4v3h4V7zM9 7H5v3h4V7zm-4 4v3h4v-3H5zm10 0v3h4v-3h-4zm0-1h4V7h-4v3zM5 15v3h4v-3H5zm10 3h4v-3h-4v3z" fill-rule="evenodd"/></svg>',
+        'table-cell-select-all': '<svg width="24" height="24"><path d="M12.5 5.5v6h6v-6h-6zm-1 0h-6v6h6v-6zm1 13h6v-6h-6v6zm-1 0v-6h-6v6h6zm-7-14h15v15h-15v-15z" fill-rule="nonzero"/></svg>',
+        'table-cell-select-inner': '<svg width="24" height="24"><g fill-rule="nonzero"><path d="M5.5 5.5v13h13v-13h-13zm-1-1h15v15h-15v-15z" opacity=".2"/><path d="M11.5 11.5v-7h1v7h7v1h-7v7h-1v-7h-7v-1h7z"/></g></svg>',
+        'table-delete-column': '<svg width="24" height="24"><path d="M9 11.2l1 1v.2l-1 1v-2.2zm5 1l1-1v2.2l-1-1v-.2zM20 5v14H4V5h16zm-1 2h-4v.8l-.2-.2-.8.8V7h-4v1.4l-.8-.8-.2.2V7H5v11h4v-1.8l.5.5.5-.4V18h4v-1.8l.8.8.2-.3V18h4V7zm-3.9 3.4l-1.8 1.9 1.8 1.9c.4.3.4.9 0 1.2-.3.3-.8.3-1.2 0L12 13.5l-1.8 1.9a.8.8 0 0 1-1.2 0 .9.9 0 0 1 0-1.2l1.8-1.9-1.9-2a.9.9 0 0 1 1.2-1.2l2 2 1.8-1.8c.3-.4.9-.4 1.2 0a.8.8 0 0 1 0 1.1z" fill-rule="evenodd"/></svg>',
+        'table-delete-row': '<svg width="24" height="24"><path d="M16.7 8.8l1.1 1.2-2.4 2.5L18 15l-1.2 1.2-2.5-2.5-2.4 2.5-1.3-1.2 2.5-2.5-2.5-2.5 1.2-1.3 2.6 2.6 2.4-2.5zM4 5h16v14H4V5zm15 5V7H5v3h4.8l1 1H5v3h5.8l-1 1H5v3h14v-3h-.4l-1-1H19v-3h-1.3l1-1h.3z" fill-rule="evenodd"/></svg>',
+        'table-delete-table': '<svg width="24" height="26"><path d="M4 6h16v14H4V6zm1 2v11h14V8H5zm11.7 8.7l-1.5 1.5L12 15l-3.3 3.2-1.4-1.5 3.2-3.2-3.3-3.2 1.5-1.5L12 12l3.2-3.2 1.5 1.5-3.2 3.2 3.2 3.2z" fill-rule="evenodd"/></svg>',
+        'table-insert-column-after': '<svg width="24" height="24"><path d="M14.3 9c.4 0 .7.3.7.6v2.2h2.1c.4 0 .7.3.7.7 0 .4-.3.7-.7.7H15v2.2c0 .3-.3.6-.7.6a.7.7 0 0 1-.6-.6v-2.2h-2.2a.7.7 0 0 1 0-1.4h2.2V9.6c0-.3.3-.6.6-.6zM4 5h16v14H4V5zm5 13v-3H5v3h4zm0-4v-3H5v3h4zm0-4V7H5v3h4zm10 8V7h-9v11h9z" fill-rule="evenodd"/></svg>',
+        'table-insert-column-before': '<svg width="24" height="24"><path d="M9.7 16a.7.7 0 0 1-.7-.6v-2.2H6.9a.7.7 0 0 1 0-1.4H9V9.6c0-.3.3-.6.7-.6.3 0 .6.3.6.6v2.2h2.2c.4 0 .8.3.8.7 0 .4-.4.7-.8.7h-2.2v2.2c0 .3-.3.6-.6.6zM4 5h16v14H4V5zm10 13V7H5v11h9zm5 0v-3h-4v3h4zm0-4v-3h-4v3h4zm0-4V7h-4v3h4z" fill-rule="evenodd"/></svg>',
+        'table-insert-row-above': '<svg width="24" height="24"><path d="M14.8 10.5c0 .3-.2.5-.5.5h-1.8v1.8c0 .3-.2.5-.5.5a.5.5 0 0 1-.5-.6V11H9.7a.5.5 0 0 1 0-1h1.8V8.3c0-.3.2-.6.5-.6s.5.3.5.6V10h1.8c.3 0 .5.2.5.5zM4 5h16v14H4V5zm5 13v-3H5v3h4zm5 0v-3h-4v3h4zm5 0v-3h-4v3h4zm0-4V7H5v7h14z" fill-rule="evenodd"/></svg>',
+        'table-insert-row-after': '<svg width="24" height="24"><path d="M9.2 14.5c0-.3.2-.5.5-.5h1.8v-1.8c0-.3.2-.5.5-.5s.5.2.5.6V14h1.8c.3 0 .5.2.5.5s-.2.5-.5.5h-1.8v1.7c0 .3-.2.6-.5.6a.5.5 0 0 1-.5-.6V15H9.7a.5.5 0 0 1-.5-.5zM4 5h16v14H4V5zm6 2v3h4V7h-4zM5 7v3h4V7H5zm14 11v-7H5v7h14zm0-8V7h-4v3h4z" fill-rule="evenodd"/></svg>',
+        'table-left-header': '<svg width="24" height="24"><path d="M4 5h16v13H4V5zm10 12v-3h-4v3h4zm0-4v-3h-4v3h4zm0-4V6h-4v3h4zm5 8v-3h-4v3h4zm0-4v-3h-4v3h4zm0-4V6h-4v3h4z" fill-rule="evenodd"/></svg>',
+        'table-merge-cells': '<svg width="24" height="24"><path d="M4 5h16v14H4V5zm6 13h9v-7h-9v7zm4-11h-4v3h4V7zM9 7H5v3h4V7zm-4 4v3h4v-3H5zm10-1h4V7h-4v3zM5 15v3h4v-3H5z" fill-rule="evenodd"/></svg>',
+        'table-row-properties': '<svg width="24" height="24"><path d="M4 5h16v14H4V5zm10 10h-4v3h4v-3zm0-8h-4v3h4V7zM9 7H5v3h4V7zm6 3h4V7h-4v3zM5 15v3h4v-3H5zm10 3h4v-3h-4v3z" fill-rule="evenodd"/></svg>',
+        'table-split-cells': '<svg width="24" height="24"><path d="M4 5h16v14H4V5zm6 2v3h4V7h-4zM9 18v-3H5v3h4zm0-4v-3H5v3h4zm0-4V7H5v3h4zm10 8v-7h-9v7h9zm0-8V7h-4v3h4zm-3.5 4.5l1.5 1.6c.3.2.3.7 0 1-.2.2-.7.2-1 0l-1.5-1.6-1.6 1.5c-.2.3-.7.3-1 0a.7.7 0 0 1 0-1l1.6-1.5-1.5-1.6a.7.7 0 0 1 1-1l1.5 1.6 1.6-1.5c.2-.3.7-.3 1 0 .2.2.2.7 0 1l-1.6 1.5z" fill-rule="evenodd"/></svg>',
+        'table-top-header': '<svg width="24" height="24"><path d="M4 5h16v13H4V5zm5 12v-3H5v3h4zm0-4v-3H5v3h4zm5 4v-3h-4v3h4zm0-4v-3h-4v3h4zm5 4v-3h-4v3h4zm0-4v-3h-4v3h4z" fill-rule="evenodd"/></svg>',
+        'table': '<svg width="24" height="24"><path d="M4 5h16v14H4V5zm6 9h4v-3h-4v3zm4 1h-4v3h4v-3zm0-8h-4v3h4V7zM9 7H5v3h4V7zm-4 4v3h4v-3H5zm10 0v3h4v-3h-4zm0-1h4V7h-4v3zM5 15v3h4v-3H5zm10 3h4v-3h-4v3z" fill-rule="evenodd"/></svg>',
+        'template': '<svg width="24" height="24"><path d="M19 19v-1H5v1h14zM9 16v-4a5 5 0 1 1 6 0v4h4a2 2 0 0 1 2 2v3H3v-3c0-1.1.9-2 2-2h4zm4 0v-5l.8-.6a3 3 0 1 0-3.6 0l.8.6v5h2z" fill-rule="nonzero"/></svg>',
+        'temporary-placeholder': '<svg width="24" height="24"><g fill-rule="evenodd"><path d="M9 7.6V6h2.5V4.5a.5.5 0 1 1 1 0V6H15v1.6a8 8 0 1 1-6 0zm-2.6 5.3a.5.5 0 0 0 .3.6c.3 0 .6 0 .6-.3l.1-.2a5 5 0 0 1 3.3-2.8c.3-.1.4-.4.4-.6-.1-.3-.4-.5-.6-.4a6 6 0 0 0-4.1 3.7z"/><circle cx="14" cy="4" r="1"/><circle cx="12" cy="2" r="1"/><circle cx="10" cy="4" r="1"/></g></svg>',
+        'text-color': '<svg width="24" height="24"><g fill-rule="evenodd"><path id="tox-icon-text-color__color" d="M3 18h18v3H3z"/><path d="M8.7 16h-.8a.5.5 0 0 1-.5-.6l2.7-9c.1-.3.3-.4.5-.4h2.8c.2 0 .4.1.5.4l2.7 9a.5.5 0 0 1-.5.6h-.8a.5.5 0 0 1-.4-.4l-.7-2.2c0-.3-.3-.4-.5-.4h-3.4c-.2 0-.4.1-.5.4l-.7 2.2c0 .3-.2.4-.4.4zm2.6-7.6l-.6 2a.5.5 0 0 0 .5.6h1.6a.5.5 0 0 0 .5-.6l-.6-2c0-.3-.3-.4-.5-.4h-.4c-.2 0-.4.1-.5.4z"/></g></svg>',
+        'toc': '<svg width="24" height="24"><path d="M5 5c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 1 1 0-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 1 1 0-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h11c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2zm0-4c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 1 1 0-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm-3 8c.6 0 1 .4 1 1s-.4 1-1 1a1 1 0 0 1 0-2zm3 0h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',
+        'translate': '<svg width="24" height="24"><path d="M12.7 14.3l-.3.7-.4.7-2.2-2.2-3.1 3c-.3.4-.8.4-1 0a.7.7 0 0 1 0-1l3.1-3A12.4 12.4 0 0 1 6.7 9H8a10.1 10.1 0 0 0 1.7 2.4c.5-.5 1-1.1 1.4-1.8l.9-2H4.7a.7.7 0 1 1 0-1.5h4.4v-.7c0-.4.3-.8.7-.8.4 0 .7.4.7.8v.7H15c.4 0 .8.3.8.7 0 .4-.4.8-.8.8h-1.4a12.3 12.3 0 0 1-1 2.4 13.5 13.5 0 0 1-1.7 2.3l1.9 1.8zm4.3-3l2.7 7.3a.5.5 0 0 1-.4.7 1 1 0 0 1-1-.7l-.6-1.5h-3.4l-.6 1.5a1 1 0 0 1-1 .7.5.5 0 0 1-.4-.7l2.7-7.4a1 1 0 1 1 2 0zm-2.2 4.4h2.4L16 12.5l-1.2 3.2z" fill-rule="evenodd"/></svg>',
+        'underline': '<svg width="24" height="24"><path d="M16 5c.6 0 1 .4 1 1v5.5a4 4 0 0 1-.4 1.8l-1 1.4a5.3 5.3 0 0 1-5.5 1 5 5 0 0 1-1.6-1c-.5-.4-.8-.9-1.1-1.4a4 4 0 0 1-.4-1.8V6c0-.6.4-1 1-1s1 .4 1 1v5.5c0 .3 0 .6.2 1l.6.7a3.3 3.3 0 0 0 2.2.8 3.4 3.4 0 0 0 2.2-.8c.3-.2.4-.5.6-.8l.2-.9V6c0-.6.4-1 1-1zM8 17h8c.6 0 1 .4 1 1s-.4 1-1 1H8a1 1 0 0 1 0-2z" fill-rule="evenodd"/></svg>',
+        'undo': '<svg width="24" height="24"><path d="M6.4 8H12c3.7 0 6.2 2 6.8 5.1.6 2.7-.4 5.6-2.3 6.8a1 1 0 0 1-1-1.8c1.1-.6 1.8-2.7 1.4-4.6-.5-2.1-2.1-3.5-4.9-3.5H6.4l3.3 3.3a1 1 0 1 1-1.4 1.4l-5-5a1 1 0 0 1 0-1.4l5-5a1 1 0 0 1 1.4 1.4L6.4 8z" fill-rule="nonzero"/></svg>',
+        'unlink': '<svg width="24" height="24"><path d="M6.2 12.3a1 1 0 0 1 1.4 1.4l-2 2a2 2 0 1 0 2.6 2.8l4.8-4.8a1 1 0 0 0 0-1.4 1 1 0 1 1 1.4-1.3 2.9 2.9 0 0 1 0 4L9.6 20a3.9 3.9 0 0 1-5.5-5.5l2-2zm11.6-.6a1 1 0 0 1-1.4-1.4l2.1-2a2 2 0 1 0-2.7-2.8L11 10.3a1 1 0 0 0 0 1.4A1 1 0 1 1 9.6 13a2.9 2.9 0 0 1 0-4L14.4 4a3.9 3.9 0 0 1 5.5 5.5l-2 2zM7.6 6.3a.8.8 0 0 1-1 1.1L3.3 4.2a.7.7 0 1 1 1-1l3.2 3.1zM5.1 8.6a.8.8 0 0 1 0 1.5H3a.8.8 0 0 1 0-1.5H5zm5-3.5a.8.8 0 0 1-1.5 0V3a.8.8 0 0 1 1.5 0V5zm6 11.8a.8.8 0 0 1 1-1l3.2 3.2a.8.8 0 0 1-1 1L16 17zm-2.2 2a.8.8 0 0 1 1.5 0V21a.8.8 0 0 1-1.5 0V19zm5-3.5a.7.7 0 1 1 0-1.5H21a.8.8 0 0 1 0 1.5H19z" fill-rule="nonzero"/></svg>',
+        'unlock': '<svg width="24" height="24"><path d="M16 5c.8 0 1.5.3 2.1.9.6.6.9 1.3.9 2.1v3h-2V8a1 1 0 0 0-.3-.7A1 1 0 0 0 16 7h-2a1 1 0 0 0-.7.3 1 1 0 0 0-.3.7v3h.3c.2 0 .3 0 .5.2l.2.6v7.4c0 .3 0 .4-.2.6l-.6.2H4.8c-.3 0-.4 0-.6-.2a.7.7 0 0 1-.2-.6v-7.4c0-.3 0-.4.2-.6l.5-.2H11V8c0-.8.3-1.5.9-2.1.6-.6 1.3-.9 2.1-.9h2z" fill-rule="evenodd"/></svg>',
+        'unordered-list': '<svg width="24" height="24"><path d="M11 5h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zm0 6h8c.6 0 1 .4 1 1s-.4 1-1 1h-8a1 1 0 0 1 0-2zM4.5 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1zm0 6c0-.4.1-.8.4-1 .3-.4.7-.5 1.1-.5.4 0 .8.1 1 .4.4.3.5.7.5 1.1 0 .4-.1.8-.4 1-.3.4-.7.5-1.1.5-.4 0-.8-.1-1-.4-.4-.3-.5-.7-.5-1.1z" fill-rule="evenodd"/></svg>',
+        'unselected': '<svg width="24" height="24"><path fill-rule="nonzero" d="M6 4h12a2 2 0 0 1 2 2v12a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6c0-1.1.9-2 2-2zm0 1a1 1 0 0 0-1 1v12c0 .6.4 1 1 1h12c.6 0 1-.4 1-1V6c0-.6-.4-1-1-1H6z"/></svg>',
+        'upload': '<svg width="24" height="24"><path d="M18 19v-2a1 1 0 0 1 2 0v3c0 .6-.4 1-1 1H5a1 1 0 0 1-1-1v-3a1 1 0 0 1 2 0v2h12zM11 6.4L8.7 8.7a1 1 0 0 1-1.4-1.4l4-4a1 1 0 0 1 1.4 0l4 4a1 1 0 1 1-1.4 1.4L13 6.4V16a1 1 0 0 1-2 0V6.4z" fill-rule="nonzero"/></svg>',
+        'user': '<svg width="24" height="24"><path d="M12 24a12 12 0 1 1 0-24 12 12 0 0 1 0 24zm-8.7-5.3a11 11 0 0 0 17.4 0C19.4 16.3 14.6 15 12 15c-2.6 0-7.4 1.3-8.7 3.7zM12 13c2.2 0 4-2 4-4.5S14.2 4 12 4 8 6 8 8.5 9.8 13 12 13z" fill-rule="nonzero"/></svg>',
+        'warning': '<svg width="24" height="24"><path d="M19.8 18.3c.2.5.3.9 0 1.2-.1.3-.5.5-1 .5H5.2c-.5 0-.9-.2-1-.5-.3-.3-.2-.7 0-1.2L11 4.7l.5-.5.5-.2c.2 0 .3 0 .5.2.2 0 .3.3.5.5l6.8 13.6zM12 18c.3 0 .5-.1.7-.3.2-.2.3-.4.3-.7a1 1 0 0 0-.3-.7 1 1 0 0 0-.7-.3 1 1 0 0 0-.7.3 1 1 0 0 0-.3.7c0 .3.1.5.3.7.2.2.4.3.7.3zm.7-3l.3-4a1 1 0 0 0-.3-.7 1 1 0 0 0-.7-.3 1 1 0 0 0-.7.3 1 1 0 0 0-.3.7l.3 4h1.4z" fill-rule="evenodd"/></svg>',
+        'zoom-in': '<svg width="24" height="24"><path d="M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12zm-1-9a1 1 0 0 1 2 0v6a1 1 0 0 1-2 0V8zm-2 4a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2H8z" fill-rule="nonzero"/></svg>',
+        'zoom-out': '<svg width="24" height="24"><path d="M16 17.3a8 8 0 1 1 1.4-1.4l4.3 4.4a1 1 0 0 1-1.4 1.4l-4.4-4.3zm-5-.3a6 6 0 1 0 0-12 6 6 0 0 0 0 12zm-3-5a1 1 0 0 1 0-2h6a1 1 0 0 1 0 2H8z" fill-rule="nonzero"/></svg>'
+      };
+    };
+
+    var CreateIconManager = function () {
+      var lookup = {};
+      var add = function (id, iconPack) {
+        lookup[id] = iconPack;
+      };
+      var get = function (id) {
+        if (lookup[id]) {
+          return lookup[id];
+        }
+        return { icons: {} };
+      };
+      var has$1 = function (id) {
+        return has(lookup, id);
+      };
+      return {
+        add: add,
+        get: get,
+        has: has$1
+      };
+    };
+    var IconManager = CreateIconManager();
+
+    var PluginManager$1 = AddOnManager$1.PluginManager;
+
+    var ThemeManager = AddOnManager$1.ThemeManager;
+
+    function XMLHttpRequest () {
+      var f = Global$1.getOrDie('XMLHttpRequest');
+      return new f();
+    }
+
+    function Uploader(uploadStatus, settings) {
+      var pendingPromises = {};
+      var pathJoin = function (path1, path2) {
+        if (path1) {
+          return path1.replace(/\/$/, '') + '/' + path2.replace(/^\//, '');
+        }
+        return path2;
+      };
+      var defaultHandler = function (blobInfo, success, failure, progress) {
+        var xhr, formData;
+        xhr = XMLHttpRequest();
+        xhr.open('POST', settings.url);
+        xhr.withCredentials = settings.credentials;
+        xhr.upload.onprogress = function (e) {
+          progress(e.loaded / e.total * 100);
+        };
+        xhr.onerror = function () {
+          failure('Image upload failed due to a XHR Transport error. Code: ' + xhr.status);
+        };
+        xhr.onload = function () {
+          var json;
+          if (xhr.status < 200 || xhr.status >= 300) {
+            failure('HTTP Error: ' + xhr.status);
+            return;
+          }
+          json = JSON.parse(xhr.responseText);
+          if (!json || typeof json.location !== 'string') {
+            failure('Invalid JSON: ' + xhr.responseText);
+            return;
+          }
+          success(pathJoin(settings.basePath, json.location));
+        };
+        formData = new domGlobals.FormData();
+        formData.append('file', blobInfo.blob(), blobInfo.filename());
+        xhr.send(formData);
+      };
+      var noUpload = function () {
+        return new promiseObj(function (resolve) {
+          resolve([]);
+        });
+      };
+      var handlerSuccess = function (blobInfo, url) {
+        return {
+          url: url,
+          blobInfo: blobInfo,
+          status: true
+        };
+      };
+      var handlerFailure = function (blobInfo, error) {
+        return {
+          url: '',
+          blobInfo: blobInfo,
+          status: false,
+          error: error
+        };
+      };
+      var resolvePending = function (blobUri, result) {
+        Tools.each(pendingPromises[blobUri], function (resolve) {
+          resolve(result);
+        });
+        delete pendingPromises[blobUri];
+      };
+      var uploadBlobInfo = function (blobInfo, handler, openNotification) {
+        uploadStatus.markPending(blobInfo.blobUri());
+        return new promiseObj(function (resolve) {
+          var notification, progress;
+          var noop = function () {
+          };
+          try {
+            var closeNotification_1 = function () {
+              if (notification) {
+                notification.close();
+                progress = noop;
+              }
+            };
+            var success = function (url) {
+              closeNotification_1();
+              uploadStatus.markUploaded(blobInfo.blobUri(), url);
+              resolvePending(blobInfo.blobUri(), handlerSuccess(blobInfo, url));
+              resolve(handlerSuccess(blobInfo, url));
+            };
+            var failure = function (error) {
+              closeNotification_1();
+              uploadStatus.removeFailed(blobInfo.blobUri());
+              resolvePending(blobInfo.blobUri(), handlerFailure(blobInfo, error));
+              resolve(handlerFailure(blobInfo, error));
+            };
+            progress = function (percent) {
+              if (percent < 0 || percent > 100) {
+                return;
+              }
+              if (!notification) {
+                notification = openNotification();
+              }
+              notification.progressBar.value(percent);
+            };
+            handler(blobInfo, success, failure, progress);
+          } catch (ex) {
+            resolve(handlerFailure(blobInfo, ex.message));
+          }
+        });
+      };
+      var isDefaultHandler = function (handler) {
+        return handler === defaultHandler;
+      };
+      var pendingUploadBlobInfo = function (blobInfo) {
+        var blobUri = blobInfo.blobUri();
+        return new promiseObj(function (resolve) {
+          pendingPromises[blobUri] = pendingPromises[blobUri] || [];
+          pendingPromises[blobUri].push(resolve);
+        });
+      };
+      var uploadBlobs = function (blobInfos, openNotification) {
+        blobInfos = Tools.grep(blobInfos, function (blobInfo) {
+          return !uploadStatus.isUploaded(blobInfo.blobUri());
+        });
+        return promiseObj.all(Tools.map(blobInfos, function (blobInfo) {
+          return uploadStatus.isPending(blobInfo.blobUri()) ? pendingUploadBlobInfo(blobInfo) : uploadBlobInfo(blobInfo, settings.handler, openNotification);
+        }));
+      };
+      var upload = function (blobInfos, openNotification) {
+        return !settings.url && isDefaultHandler(settings.handler) ? noUpload() : uploadBlobs(blobInfos, openNotification);
+      };
+      if (isFunction(settings.handler) === false) {
+        settings.handler = defaultHandler;
+      }
+      return { upload: upload };
+    }
+
+    function FileReader () {
+      var f = Global$1.getOrDie('FileReader');
+      return new f();
+    }
+
+    function Uint8Array (arr) {
+      var f = Global$1.getOrDie('Uint8Array');
+      return new f(arr);
+    }
+
+    var requestAnimationFrame$1 = function (callback) {
+      var f = Global$1.getOrDie('requestAnimationFrame');
+      f(callback);
+    };
+    var atob = function (base64) {
+      var f = Global$1.getOrDie('atob');
+      return f(base64);
+    };
+    var Window = {
+      atob: atob,
+      requestAnimationFrame: requestAnimationFrame$1
+    };
+
+    var blobUriToBlob = function (url) {
+      return new promiseObj(function (resolve, reject) {
+        var rejectWithError = function () {
+          reject('Cannot convert ' + url + ' to Blob. Resource might not exist or is inaccessible.');
+        };
+        try {
+          var xhr = XMLHttpRequest();
+          xhr.open('GET', url, true);
+          xhr.responseType = 'blob';
+          xhr.onload = function () {
+            if (this.status === 200) {
+              resolve(this.response);
+            } else {
+              rejectWithError();
+            }
+          };
+          xhr.onerror = rejectWithError;
+          xhr.send();
+        } catch (ex) {
+          rejectWithError();
+        }
+      });
+    };
+    var parseDataUri = function (uri) {
+      var type, matches;
+      var uriParts = decodeURIComponent(uri).split(',');
+      matches = /data:([^;]+)/.exec(uriParts[0]);
+      if (matches) {
+        type = matches[1];
+      }
+      return {
+        type: type,
+        data: uriParts[1]
+      };
+    };
+    var dataUriToBlob = function (uri) {
+      return new promiseObj(function (resolve) {
+        var str, arr, i;
+        var uriParts = parseDataUri(uri);
+        try {
+          str = Window.atob(uriParts.data);
+        } catch (e) {
+          resolve(new domGlobals.Blob([]));
+          return;
+        }
+        arr = Uint8Array(str.length);
+        for (i = 0; i < arr.length; i++) {
+          arr[i] = str.charCodeAt(i);
+        }
+        resolve(new domGlobals.Blob([arr], { type: uriParts.type }));
+      });
+    };
+    var uriToBlob = function (url) {
+      if (url.indexOf('blob:') === 0) {
+        return blobUriToBlob(url);
+      }
+      if (url.indexOf('data:') === 0) {
+        return dataUriToBlob(url);
+      }
+      return null;
+    };
+    var blobToDataUri = function (blob) {
+      return new promiseObj(function (resolve) {
+        var reader = FileReader();
+        reader.onloadend = function () {
+          resolve(reader.result);
+        };
+        reader.readAsDataURL(blob);
+      });
+    };
+    var Conversions = {
+      uriToBlob: uriToBlob,
+      blobToDataUri: blobToDataUri,
+      parseDataUri: parseDataUri
+    };
+
+    var count = 0;
+    var uniqueId = function (prefix) {
+      return (prefix || 'blobid') + count++;
+    };
+    var imageToBlobInfo = function (blobCache, img, resolve, reject) {
+      var base64, blobInfo;
+      if (img.src.indexOf('blob:') === 0) {
+        blobInfo = blobCache.getByUri(img.src);
+        if (blobInfo) {
+          resolve({
+            image: img,
+            blobInfo: blobInfo
+          });
+        } else {
+          Conversions.uriToBlob(img.src).then(function (blob) {
+            Conversions.blobToDataUri(blob).then(function (dataUri) {
+              base64 = Conversions.parseDataUri(dataUri).data;
+              blobInfo = blobCache.create(uniqueId(), blob, base64);
+              blobCache.add(blobInfo);
+              resolve({
+                image: img,
+                blobInfo: blobInfo
+              });
+            });
+          }, function (err) {
+            reject(err);
+          });
+        }
+        return;
+      }
+      base64 = Conversions.parseDataUri(img.src).data;
+      blobInfo = blobCache.findFirst(function (cachedBlobInfo) {
+        return cachedBlobInfo.base64() === base64;
+      });
+      if (blobInfo) {
+        resolve({
+          image: img,
+          blobInfo: blobInfo
+        });
+      } else {
+        Conversions.uriToBlob(img.src).then(function (blob) {
+          blobInfo = blobCache.create(uniqueId(), blob, base64);
+          blobCache.add(blobInfo);
+          resolve({
+            image: img,
+            blobInfo: blobInfo
+          });
+        }, function (err) {
+          reject(err);
+        });
+      }
+    };
+    var getAllImages = function (elm) {
+      return elm ? from$1(elm.getElementsByTagName('img')) : [];
+    };
+    function ImageScanner(uploadStatus, blobCache) {
+      var cachedPromises = {};
+      var findAll = function (elm, predicate) {
+        var images;
+        if (!predicate) {
+          predicate = constant(true);
+        }
+        images = filter(getAllImages(elm), function (img) {
+          var src = img.src;
+          if (!Env.fileApi) {
+            return false;
+          }
+          if (img.hasAttribute('data-mce-bogus')) {
+            return false;
+          }
+          if (img.hasAttribute('data-mce-placeholder')) {
+            return false;
+          }
+          if (!src || src === Env.transparentSrc) {
+            return false;
+          }
+          if (src.indexOf('blob:') === 0) {
+            return !uploadStatus.isUploaded(src) && predicate(img);
+          }
+          if (src.indexOf('data:') === 0) {
+            return predicate(img);
+          }
+          return false;
+        });
+        var promises = map(images, function (img) {
+          if (cachedPromises[img.src]) {
+            return new promiseObj(function (resolve) {
+              cachedPromises[img.src].then(function (imageInfo) {
+                if (typeof imageInfo === 'string') {
+                  return imageInfo;
+                }
+                resolve({
+                  image: img,
+                  blobInfo: imageInfo.blobInfo
+                });
+              });
+            });
+          }
+          var newPromise = new promiseObj(function (resolve, reject) {
+            imageToBlobInfo(blobCache, img, resolve, reject);
+          }).then(function (result) {
+            delete cachedPromises[result.image.src];
+            return result;
+          }).catch(function (error) {
+            delete cachedPromises[img.src];
+            return error;
+          });
+          cachedPromises[img.src] = newPromise;
+          return newPromise;
+        });
+        return promiseObj.all(promises);
+      };
+      return { findAll: findAll };
+    }
+
+    var count$1 = 0;
+    var seed = function () {
+      var rnd = function () {
+        return Math.round(Math.random() * 4294967295).toString(36);
+      };
+      var now = new Date().getTime();
+      return 's' + now.toString(36) + rnd() + rnd() + rnd();
+    };
+    var uuid = function (prefix) {
+      return prefix + count$1++ + seed();
+    };
+    var Uuid = { uuid: uuid };
+
+    var BlobCache = function () {
+      var cache = [];
+      var mimeToExt = function (mime) {
+        var mimes = {
+          'image/jpeg': 'jpg',
+          'image/jpg': 'jpg',
+          'image/gif': 'gif',
+          'image/png': 'png'
+        };
+        return mimes[mime.toLowerCase()] || 'dat';
+      };
+      var create = function (o, blob, base64, filename) {
+        if (isString(o)) {
+          var id = o;
+          return toBlobInfo({
+            id: id,
+            name: filename,
+            blob: blob,
+            base64: base64
+          });
+        } else if (isObject(o)) {
+          return toBlobInfo(o);
+        } else {
+          throw new Error('Unknown input type');
+        }
+      };
+      var toBlobInfo = function (o) {
+        var id, name;
+        if (!o.blob || !o.base64) {
+          throw new Error('blob and base64 representations of the image are required for BlobInfo to be created');
+        }
+        id = o.id || Uuid.uuid('blobid');
+        name = o.name || id;
+        return {
+          id: constant(id),
+          name: constant(name),
+          filename: constant(name + '.' + mimeToExt(o.blob.type)),
+          blob: constant(o.blob),
+          base64: constant(o.base64),
+          blobUri: constant(o.blobUri || URL.createObjectURL(o.blob)),
+          uri: constant(o.uri)
+        };
+      };
+      var add = function (blobInfo) {
+        if (!get(blobInfo.id())) {
+          cache.push(blobInfo);
+        }
+      };
+      var get = function (id) {
+        return findFirst(function (cachedBlobInfo) {
+          return cachedBlobInfo.id() === id;
+        });
+      };
+      var findFirst = function (predicate) {
+        return filter(cache, predicate)[0];
+      };
+      var getByUri = function (blobUri) {
+        return findFirst(function (blobInfo) {
+          return blobInfo.blobUri() === blobUri;
+        });
+      };
+      var removeByUri = function (blobUri) {
+        cache = filter(cache, function (blobInfo) {
+          if (blobInfo.blobUri() === blobUri) {
+            URL.revokeObjectURL(blobInfo.blobUri());
+            return false;
+          }
+          return true;
+        });
+      };
+      var destroy = function () {
+        each(cache, function (cachedBlobInfo) {
+          URL.revokeObjectURL(cachedBlobInfo.blobUri());
+        });
+        cache = [];
+      };
+      return {
+        create: create,
+        add: add,
+        get: get,
+        getByUri: getByUri,
+        findFirst: findFirst,
+        removeByUri: removeByUri,
+        destroy: destroy
+      };
+    };
+
+    function UploadStatus () {
+      var PENDING = 1, UPLOADED = 2;
+      var blobUriStatuses = {};
+      var createStatus = function (status, resultUri) {
+        return {
+          status: status,
+          resultUri: resultUri
+        };
+      };
+      var hasBlobUri = function (blobUri) {
+        return blobUri in blobUriStatuses;
+      };
+      var getResultUri = function (blobUri) {
+        var result = blobUriStatuses[blobUri];
+        return result ? result.resultUri : null;
+      };
+      var isPending = function (blobUri) {
+        return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === PENDING : false;
+      };
+      var isUploaded = function (blobUri) {
+        return hasBlobUri(blobUri) ? blobUriStatuses[blobUri].status === UPLOADED : false;
+      };
+      var markPending = function (blobUri) {
+        blobUriStatuses[blobUri] = createStatus(PENDING, null);
+      };
+      var markUploaded = function (blobUri, resultUri) {
+        blobUriStatuses[blobUri] = createStatus(UPLOADED, resultUri);
+      };
+      var removeFailed = function (blobUri) {
+        delete blobUriStatuses[blobUri];
+      };
+      var destroy = function () {
+        blobUriStatuses = {};
+      };
+      return {
+        hasBlobUri: hasBlobUri,
+        getResultUri: getResultUri,
+        isPending: isPending,
+        isUploaded: isUploaded,
+        markPending: markPending,
+        markUploaded: markUploaded,
+        removeFailed: removeFailed,
+        destroy: destroy
+      };
+    }
+
+    var EditorUpload = function (editor) {
+      var blobCache = BlobCache();
+      var uploader, imageScanner;
+      var uploadStatus = UploadStatus();
+      var urlFilters = [];
+      var aliveGuard = function (callback) {
+        return function (result) {
+          if (editor.selection) {
+            return callback(result);
+          }
+          return [];
+        };
+      };
+      var cacheInvalidator = function () {
+        return '?' + new Date().getTime();
+      };
+      var replaceString = function (content, search, replace) {
+        var index = 0;
+        do {
+          index = content.indexOf(search, index);
+          if (index !== -1) {
+            content = content.substring(0, index) + replace + content.substr(index + search.length);
+            index += replace.length - search.length + 1;
+          }
+        } while (index !== -1);
+        return content;
+      };
+      var replaceImageUrl = function (content, targetUrl, replacementUrl) {
+        content = replaceString(content, 'src="' + targetUrl + '"', 'src="' + replacementUrl + '"');
+        content = replaceString(content, 'data-mce-src="' + targetUrl + '"', 'data-mce-src="' + replacementUrl + '"');
+        return content;
+      };
+      var replaceUrlInUndoStack = function (targetUrl, replacementUrl) {
+        each(editor.undoManager.data, function (level) {
+          if (level.type === 'fragmented') {
+            level.fragments = map(level.fragments, function (fragment) {
+              return replaceImageUrl(fragment, targetUrl, replacementUrl);
+            });
+          } else {
+            level.content = replaceImageUrl(level.content, targetUrl, replacementUrl);
+          }
+        });
+      };
+      var openNotification = function () {
+        return editor.notificationManager.open({
+          text: editor.translate('Image uploading...'),
+          type: 'info',
+          timeout: -1,
+          progressBar: true
+        });
+      };
+      var replaceImageUri = function (image, resultUri) {
+        blobCache.removeByUri(image.src);
+        replaceUrlInUndoStack(image.src, resultUri);
+        editor.$(image).attr({
+          'src': Settings.shouldReuseFileName(editor) ? resultUri + cacheInvalidator() : resultUri,
+          'data-mce-src': editor.convertURL(resultUri, 'src')
+        });
+      };
+      var uploadImages = function (callback) {
+        if (!uploader) {
+          uploader = Uploader(uploadStatus, {
+            url: Settings.getImageUploadUrl(editor),
+            basePath: Settings.getImageUploadBasePath(editor),
+            credentials: Settings.getImagesUploadCredentials(editor),
+            handler: Settings.getImagesUploadHandler(editor)
+          });
+        }
+        return scanForImages().then(aliveGuard(function (imageInfos) {
+          var blobInfos;
+          blobInfos = map(imageInfos, function (imageInfo) {
+            return imageInfo.blobInfo;
+          });
+          return uploader.upload(blobInfos, openNotification).then(aliveGuard(function (result) {
+            var filteredResult = map(result, function (uploadInfo, index) {
+              var image = imageInfos[index].image;
+              if (uploadInfo.status && Settings.shouldReplaceBlobUris(editor)) {
+                replaceImageUri(image, uploadInfo.url);
+              } else if (uploadInfo.error) {
+                ErrorReporter.uploadError(editor, uploadInfo.error);
+              }
+              return {
+                element: image,
+                status: uploadInfo.status
+              };
+            });
+            if (callback) {
+              callback(filteredResult);
+            }
+            return filteredResult;
+          }));
+        }));
+      };
+      var uploadImagesAuto = function (callback) {
+        if (Settings.isAutomaticUploadsEnabled(editor)) {
+          return uploadImages(callback);
+        }
+      };
+      var isValidDataUriImage = function (imgElm) {
+        if (forall(urlFilters, function (filter) {
+            return filter(imgElm);
+          }) === false) {
+          return false;
+        }
+        if (imgElm.getAttribute('src').indexOf('data:') === 0) {
+          var dataImgFilter = Settings.getImagesDataImgFilter(editor);
+          return dataImgFilter(imgElm);
+        }
+        return true;
+      };
+      var addFilter = function (filter) {
+        urlFilters.push(filter);
+      };
+      var scanForImages = function () {
+        if (!imageScanner) {
+          imageScanner = ImageScanner(uploadStatus, blobCache);
+        }
+        return imageScanner.findAll(editor.getBody(), isValidDataUriImage).then(aliveGuard(function (result) {
+          result = filter(result, function (resultItem) {
+            if (typeof resultItem === 'string') {
+              ErrorReporter.displayError(editor, resultItem);
+              return false;
+            }
+            return true;
+          });
+          each(result, function (resultItem) {
+            replaceUrlInUndoStack(resultItem.image.src, resultItem.blobInfo.blobUri());
+            resultItem.image.src = resultItem.blobInfo.blobUri();
+            resultItem.image.removeAttribute('data-mce-src');
+          });
+          return result;
+        }));
+      };
+      var destroy = function () {
+        blobCache.destroy();
+        uploadStatus.destroy();
+        imageScanner = uploader = null;
+      };
+      var replaceBlobUris = function (content) {
+        return content.replace(/src="(blob:[^"]+)"/g, function (match, blobUri) {
+          var resultUri = uploadStatus.getResultUri(blobUri);
+          if (resultUri) {
+            return 'src="' + resultUri + '"';
+          }
+          var blobInfo = blobCache.getByUri(blobUri);
+          if (!blobInfo) {
+            blobInfo = foldl(editor.editorManager.get(), function (result, editor) {
+              return result || editor.editorUpload && editor.editorUpload.blobCache.getByUri(blobUri);
+            }, null);
+          }
+          if (blobInfo) {
+            var blob = blobInfo.blob();
+            return 'src="data:' + blob.type + ';base64,' + blobInfo.base64() + '"';
+          }
+          return match;
+        });
+      };
+      editor.on('SetContent', function () {
+        if (Settings.isAutomaticUploadsEnabled(editor)) {
+          uploadImagesAuto();
+        } else {
+          scanForImages();
+        }
+      });
+      editor.on('RawSaveContent', function (e) {
+        e.content = replaceBlobUris(e.content);
+      });
+      editor.on('GetContent', function (e) {
+        if (e.source_view || e.format === 'raw') {
+          return;
+        }
+        e.content = replaceBlobUris(e.content);
+      });
+      editor.on('PostRender', function () {
+        editor.parser.addNodeFilter('img', function (images) {
+          each(images, function (img) {
+            var src = img.attr('src');
+            if (blobCache.getByUri(src)) {
+              return;
+            }
+            var resultUri = uploadStatus.getResultUri(src);
+            if (resultUri) {
+              img.attr('src', resultUri);
+            }
+          });
+        });
+      });
+      return {
+        blobCache: blobCache,
+        addFilter: addFilter,
+        uploadImages: uploadImages,
+        uploadImagesAuto: uploadImagesAuto,
+        scanForImages: scanForImages,
+        destroy: destroy
+      };
+    };
+
+    var dropLast = function (xs) {
+      return xs.slice(0, -1);
+    };
+    var parentsUntil$1 = function (start, root, predicate) {
+      if (contains$3(root, start)) {
+        return dropLast(parents(start, function (elm) {
+          return predicate(elm) || eq(elm, root);
+        }));
+      } else {
+        return [];
+      }
+    };
+    var parents$1 = function (start, root) {
+      return parentsUntil$1(start, root, constant(false));
+    };
+    var parentsAndSelf = function (start, root) {
+      return [start].concat(parents$1(start, root));
+    };
+    var Parents = {
+      parentsUntil: parentsUntil$1,
+      parents: parents$1,
+      parentsAndSelf: parentsAndSelf
+    };
+
+    var isBlockElement = function (blockElements, node) {
+      return blockElements.hasOwnProperty(node.nodeName);
+    };
+    var isValidTarget = function (blockElements, node) {
+      if (NodeType.isText(node)) {
+        return true;
+      } else if (NodeType.isElement(node)) {
+        return !isBlockElement(blockElements, node) && !Bookmarks.isBookmarkNode(node);
+      } else {
+        return false;
+      }
+    };
+    var hasBlockParent = function (blockElements, root, node) {
+      return exists(Parents.parents(Element.fromDom(node), Element.fromDom(root)), function (elm) {
+        return isBlockElement(blockElements, elm.dom());
+      });
+    };
+    var shouldRemoveTextNode = function (blockElements, node) {
+      if (NodeType.isText(node)) {
+        if (node.nodeValue.length === 0) {
+          return true;
+        } else if (/^\s+$/.test(node.nodeValue) && (!node.nextSibling || isBlockElement(blockElements, node.nextSibling))) {
+          return true;
+        }
+      }
+      return false;
+    };
+    var addRootBlocks = function (editor) {
+      var dom = editor.dom, selection = editor.selection;
+      var schema = editor.schema, blockElements = schema.getBlockElements();
+      var node = selection.getStart();
+      var rootNode = editor.getBody();
+      var rng;
+      var startContainer, startOffset, endContainer, endOffset, rootBlockNode;
+      var tempNode, wrapped, restoreSelection;
+      var rootNodeName;
+      var forcedRootBlock = Settings.getForcedRootBlock(editor);
+      if (!node || !NodeType.isElement(node) || !forcedRootBlock) {
+        return;
+      }
+      rootNodeName = rootNode.nodeName.toLowerCase();
+      if (!schema.isValidChild(rootNodeName, forcedRootBlock.toLowerCase()) || hasBlockParent(blockElements, rootNode, node)) {
+        return;
+      }
+      rng = selection.getRng();
+      startContainer = rng.startContainer;
+      startOffset = rng.startOffset;
+      endContainer = rng.endContainer;
+      endOffset = rng.endOffset;
+      restoreSelection = EditorFocus.hasFocus(editor);
+      node = rootNode.firstChild;
+      while (node) {
+        if (isValidTarget(blockElements, node)) {
+          if (shouldRemoveTextNode(blockElements, node)) {
+            tempNode = node;
+            node = node.nextSibling;
+            dom.remove(tempNode);
+            continue;
+          }
+          if (!rootBlockNode) {
+            rootBlockNode = dom.create(forcedRootBlock, Settings.getForcedRootBlockAttrs(editor));
+            node.parentNode.insertBefore(rootBlockNode, node);
+            wrapped = true;
+          }
+          tempNode = node;
+          node = node.nextSibling;
+          rootBlockNode.appendChild(tempNode);
+        } else {
+          rootBlockNode = null;
+          node = node.nextSibling;
+        }
+      }
+      if (wrapped && restoreSelection) {
+        rng.setStart(startContainer, startOffset);
+        rng.setEnd(endContainer, endOffset);
+        selection.setRng(rng);
+        editor.nodeChanged();
+      }
+    };
+    var setup$2 = function (editor) {
+      if (Settings.getForcedRootBlock(editor)) {
+        editor.on('NodeChange', curry(addRootBlocks, editor));
+      }
+    };
+    var ForceBlocks = { setup: setup$2 };
+
+    var isEq$1 = function (rng1, rng2) {
+      return rng1 && rng2 && (rng1.startContainer === rng2.startContainer && rng1.startOffset === rng2.startOffset) && (rng1.endContainer === rng2.endContainer && rng1.endOffset === rng2.endOffset);
+    };
+    var RangeCompare = { isEq: isEq$1 };
+
+    var getStartNode = function (rng) {
+      var sc = rng.startContainer, so = rng.startOffset;
+      if (NodeType.isText(sc)) {
+        return so === 0 ? Option.some(Element.fromDom(sc)) : Option.none();
+      } else {
+        return Option.from(sc.childNodes[so]).map(Element.fromDom);
+      }
+    };
+    var getEndNode = function (rng) {
+      var ec = rng.endContainer, eo = rng.endOffset;
+      if (NodeType.isText(ec)) {
+        return eo === ec.data.length ? Option.some(Element.fromDom(ec)) : Option.none();
+      } else {
+        return Option.from(ec.childNodes[eo - 1]).map(Element.fromDom);
+      }
+    };
+    var getFirstChildren = function (node) {
+      return firstChild(node).fold(constant([node]), function (child) {
+        return [node].concat(getFirstChildren(child));
+      });
+    };
+    var getLastChildren = function (node) {
+      return lastChild(node).fold(constant([node]), function (child) {
+        if (name(child) === 'br') {
+          return prevSibling(child).map(function (sibling) {
+            return [node].concat(getLastChildren(sibling));
+          }).getOr([]);
+        } else {
+          return [node].concat(getLastChildren(child));
+        }
+      });
+    };
+    var hasAllContentsSelected = function (elm, rng) {
+      return liftN([
+        getStartNode(rng),
+        getEndNode(rng)
+      ], function (startNode, endNode) {
+        var start = find(getFirstChildren(elm), curry(eq, startNode));
+        var end = find(getLastChildren(elm), curry(eq, endNode));
+        return start.isSome() && end.isSome();
+      }).getOr(false);
+    };
+    var moveEndPoint$1 = function (dom, rng, node, start) {
+      var root = node, walker = new TreeWalker(node, root);
+      var nonEmptyElementsMap = dom.schema.getNonEmptyElements();
+      do {
+        if (node.nodeType === 3 && Tools.trim(node.nodeValue).length !== 0) {
+          if (start) {
+            rng.setStart(node, 0);
+          } else {
+            rng.setEnd(node, node.nodeValue.length);
+          }
+          return;
+        }
+        if (nonEmptyElementsMap[node.nodeName] && !/^(TD|TH)$/.test(node.nodeName)) {
+          if (start) {
+            rng.setStartBefore(node);
+          } else {
+            if (node.nodeName === 'BR') {
+              rng.setEndBefore(node);
+            } else {
+              rng.setEndAfter(node);
+            }
+          }
+          return;
+        }
+        if (Env.ie && Env.ie < 11 && dom.isBlock(node) && dom.isEmpty(node)) {
+          if (start) {
+            rng.setStart(node, 0);
+          } else {
+            rng.setEnd(node, 0);
+          }
+          return;
+        }
+      } while (node = start ? walker.next() : walker.prev());
+      if (root.nodeName === 'BODY') {
+        if (start) {
+          rng.setStart(root, 0);
+        } else {
+          rng.setEnd(root, root.childNodes.length);
+        }
+      }
+    };
+    var hasAnyRanges = function (editor) {
+      var sel = editor.selection.getSel();
+      return sel && sel.rangeCount > 0;
+    };
+
+    var NodeChange = function () {
+      function NodeChange(editor) {
+        this.lastPath = [];
+        this.editor = editor;
+        var lastRng;
+        var self = this;
+        if (!('onselectionchange' in editor.getDoc())) {
+          editor.on('NodeChange click mouseup keyup focus', function (e) {
+            var nativeRng, fakeRng;
+            nativeRng = editor.selection.getRng();
+            fakeRng = {
+              startContainer: nativeRng.startContainer,
+              startOffset: nativeRng.startOffset,
+              endContainer: nativeRng.endContainer,
+              endOffset: nativeRng.endOffset
+            };
+            if (e.type === 'nodechange' || !RangeCompare.isEq(fakeRng, lastRng)) {
+              editor.fire('SelectionChange');
+            }
+            lastRng = fakeRng;
+          });
+        }
+        editor.on('contextmenu', function () {
+          editor.fire('SelectionChange');
+        });
+        editor.on('SelectionChange', function () {
+          var startElm = editor.selection.getStart(true);
+          if (!startElm || !Env.range && editor.selection.isCollapsed()) {
+            return;
+          }
+          if (hasAnyRanges(editor) && !self.isSameElementPath(startElm) && editor.dom.isChildOf(startElm, editor.getBody())) {
+            editor.nodeChanged({ selectionChange: true });
+          }
+        });
+        editor.on('mouseup', function (e) {
+          if (!e.isDefaultPrevented() && hasAnyRanges(editor)) {
+            if (editor.selection.getNode().nodeName === 'IMG') {
+              Delay.setEditorTimeout(editor, function () {
+                editor.nodeChanged();
+              });
+            } else {
+              editor.nodeChanged();
+            }
+          }
+        });
+      }
+      NodeChange.prototype.nodeChanged = function (args) {
+        var selection = this.editor.selection;
+        var node, parents, root;
+        if (this.editor.initialized && selection && !this.editor.settings.disable_nodechange && !this.editor.readonly) {
+          root = this.editor.getBody();
+          node = selection.getStart(true) || root;
+          if (node.ownerDocument !== this.editor.getDoc() || !this.editor.dom.isChildOf(node, root)) {
+            node = root;
+          }
+          parents = [];
+          this.editor.dom.getParent(node, function (node) {
+            if (node === root) {
+              return true;
+            }
+            parents.push(node);
+          });
+          args = args || {};
+          args.element = node;
+          args.parents = parents;
+          this.editor.fire('NodeChange', args);
+        }
+      };
+      NodeChange.prototype.isSameElementPath = function (startElm) {
+        var i, currentPath;
+        currentPath = this.editor.$(startElm).parentsUntil(this.editor.getBody()).add(startElm);
+        if (currentPath.length === this.lastPath.length) {
+          for (i = currentPath.length; i >= 0; i--) {
+            if (currentPath[i] !== this.lastPath[i]) {
+              break;
+            }
+          }
+          if (i === -1) {
+            this.lastPath = currentPath;
+            return true;
+          }
+        }
+        this.lastPath = currentPath;
+        return false;
+      };
+      return NodeChange;
+    }();
+
+    var getAbsolutePosition = function (elm) {
+      var doc, docElem, win, clientRect;
+      clientRect = elm.getBoundingClientRect();
+      doc = elm.ownerDocument;
+      docElem = doc.documentElement;
+      win = doc.defaultView;
+      return {
+        top: clientRect.top + win.pageYOffset - docElem.clientTop,
+        left: clientRect.left + win.pageXOffset - docElem.clientLeft
+      };
+    };
+    var getBodyPosition = function (editor) {
+      return editor.inline ? getAbsolutePosition(editor.getBody()) : {
+        left: 0,
+        top: 0
+      };
+    };
+    var getScrollPosition = function (editor) {
+      var body = editor.getBody();
+      return editor.inline ? {
+        left: body.scrollLeft,
+        top: body.scrollTop
+      } : {
+        left: 0,
+        top: 0
+      };
+    };
+    var getBodyScroll = function (editor) {
+      var body = editor.getBody(), docElm = editor.getDoc().documentElement;
+      var inlineScroll = {
+        left: body.scrollLeft,
+        top: body.scrollTop
+      };
+      var iframeScroll = {
+        left: body.scrollLeft || docElm.scrollLeft,
+        top: body.scrollTop || docElm.scrollTop
+      };
+      return editor.inline ? inlineScroll : iframeScroll;
+    };
+    var getMousePosition = function (editor, event) {
+      if (event.target.ownerDocument !== editor.getDoc()) {
+        var iframePosition = getAbsolutePosition(editor.getContentAreaContainer());
+        var scrollPosition = getBodyScroll(editor);
+        return {
+          left: event.pageX - iframePosition.left + scrollPosition.left,
+          top: event.pageY - iframePosition.top + scrollPosition.top
+        };
+      }
+      return {
+        left: event.pageX,
+        top: event.pageY
+      };
+    };
+    var calculatePosition = function (bodyPosition, scrollPosition, mousePosition) {
+      return {
+        pageX: mousePosition.left - bodyPosition.left + scrollPosition.left,
+        pageY: mousePosition.top - bodyPosition.top + scrollPosition.top
+      };
+    };
+    var calc = function (editor, event) {
+      return calculatePosition(getBodyPosition(editor), getScrollPosition(editor), getMousePosition(editor, event));
+    };
+    var MousePosition = { calc: calc };
+
+    var isContentEditableFalse$6 = NodeType.isContentEditableFalse, isContentEditableTrue$2 = NodeType.isContentEditableTrue;
+    var isDraggable = function (rootElm, elm) {
+      return isContentEditableFalse$6(elm) && elm !== rootElm;
+    };
+    var isValidDropTarget = function (editor, targetElement, dragElement) {
+      if (targetElement === dragElement || editor.dom.isChildOf(targetElement, dragElement)) {
+        return false;
+      }
+      return !isContentEditableFalse$6(targetElement);
+    };
+    var cloneElement = function (elm) {
+      var cloneElm = elm.cloneNode(true);
+      cloneElm.removeAttribute('data-mce-selected');
+      return cloneElm;
+    };
+    var createGhost = function (editor, elm, width, height) {
+      var clonedElm = elm.cloneNode(true);
+      editor.dom.setStyles(clonedElm, {
+        width: width,
+        height: height
+      });
+      editor.dom.setAttrib(clonedElm, 'data-mce-selected', null);
+      var ghostElm = editor.dom.create('div', {
+        'class': 'mce-drag-container',
+        'data-mce-bogus': 'all',
+        'unselectable': 'on',
+        'contenteditable': 'false'
+      });
+      editor.dom.setStyles(ghostElm, {
+        position: 'absolute',
+        opacity: 0.5,
+        overflow: 'hidden',
+        border: 0,
+        padding: 0,
+        margin: 0,
+        width: width,
+        height: height
+      });
+      editor.dom.setStyles(clonedElm, {
+        margin: 0,
+        boxSizing: 'border-box'
+      });
+      ghostElm.appendChild(clonedElm);
+      return ghostElm;
+    };
+    var appendGhostToBody = function (ghostElm, bodyElm) {
+      if (ghostElm.parentNode !== bodyElm) {
+        bodyElm.appendChild(ghostElm);
+      }
+    };
+    var moveGhost = function (ghostElm, position, width, height, maxX, maxY) {
+      var overflowX = 0, overflowY = 0;
+      ghostElm.style.left = position.pageX + 'px';
+      ghostElm.style.top = position.pageY + 'px';
+      if (position.pageX + width > maxX) {
+        overflowX = position.pageX + width - maxX;
+      }
+      if (position.pageY + height > maxY) {
+        overflowY = position.pageY + height - maxY;
+      }
+      ghostElm.style.width = width - overflowX + 'px';
+      ghostElm.style.height = height - overflowY + 'px';
+    };
+    var removeElement = function (elm) {
+      if (elm && elm.parentNode) {
+        elm.parentNode.removeChild(elm);
+      }
+    };
+    var isLeftMouseButtonPressed = function (e) {
+      return e.button === 0;
+    };
+    var hasDraggableElement = function (state) {
+      return state.element;
+    };
+    var applyRelPos = function (state, position) {
+      return {
+        pageX: position.pageX - state.relX,
+        pageY: position.pageY + 5
+      };
+    };
+    var start = function (state, editor) {
+      return function (e) {
+        if (isLeftMouseButtonPressed(e)) {
+          var ceElm = find(editor.dom.getParents(e.target), Predicate.or(isContentEditableFalse$6, isContentEditableTrue$2)).getOr(null);
+          if (isDraggable(editor.getBody(), ceElm)) {
+            var elmPos = editor.dom.getPos(ceElm);
+            var bodyElm = editor.getBody();
+            var docElm = editor.getDoc().documentElement;
+            state.element = ceElm;
+            state.screenX = e.screenX;
+            state.screenY = e.screenY;
+            state.maxX = (editor.inline ? bodyElm.scrollWidth : docElm.offsetWidth) - 2;
+            state.maxY = (editor.inline ? bodyElm.scrollHeight : docElm.offsetHeight) - 2;
+            state.relX = e.pageX - elmPos.x;
+            state.relY = e.pageY - elmPos.y;
+            state.width = ceElm.offsetWidth;
+            state.height = ceElm.offsetHeight;
+            state.ghost = createGhost(editor, ceElm, state.width, state.height);
+          }
+        }
+      };
+    };
+    var move = function (state, editor) {
+      var throttledPlaceCaretAt = Delay.throttle(function (clientX, clientY) {
+        editor._selectionOverrides.hideFakeCaret();
+        editor.selection.placeCaretAt(clientX, clientY);
+      }, 0);
+      return function (e) {
+        var movement = Math.max(Math.abs(e.screenX - state.screenX), Math.abs(e.screenY - state.screenY));
+        if (hasDraggableElement(state) && !state.dragging && movement > 10) {
+          var args = editor.fire('dragstart', { target: state.element });
+          if (args.isDefaultPrevented()) {
+            return;
+          }
+          state.dragging = true;
+          editor.focus();
+        }
+        if (state.dragging) {
+          var targetPos = applyRelPos(state, MousePosition.calc(editor, e));
+          appendGhostToBody(state.ghost, editor.getBody());
+          moveGhost(state.ghost, targetPos, state.width, state.height, state.maxX, state.maxY);
+          throttledPlaceCaretAt(e.clientX, e.clientY);
+        }
+      };
+    };
+    var getRawTarget = function (selection) {
+      var rng = selection.getSel().getRangeAt(0);
+      var startContainer = rng.startContainer;
+      return startContainer.nodeType === 3 ? startContainer.parentNode : startContainer;
+    };
+    var drop = function (state, editor) {
+      return function (e) {
+        if (state.dragging) {
+          if (isValidDropTarget(editor, getRawTarget(editor.selection), state.element)) {
+            var targetClone_1 = cloneElement(state.element);
+            var args = editor.fire('drop', {
+              targetClone: targetClone_1,
+              clientX: e.clientX,
+              clientY: e.clientY
+            });
+            if (!args.isDefaultPrevented()) {
+              targetClone_1 = args.targetClone;
+              editor.undoManager.transact(function () {
+                removeElement(state.element);
+                editor.insertContent(editor.dom.getOuterHTML(targetClone_1));
+                editor._selectionOverrides.hideFakeCaret();
+              });
+            }
+          }
+        }
+        removeDragState(state);
+      };
+    };
+    var stop = function (state, editor) {
+      return function () {
+        if (state.dragging) {
+          editor.fire('dragend');
+        }
+        removeDragState(state);
+      };
+    };
+    var removeDragState = function (state) {
+      state.dragging = false;
+      state.element = null;
+      removeElement(state.ghost);
+    };
+    var bindFakeDragEvents = function (editor) {
+      var state = {};
+      var pageDom, dragStartHandler, dragHandler, dropHandler, dragEndHandler, rootDocument;
+      pageDom = DOMUtils$1.DOM;
+      rootDocument = domGlobals.document;
+      dragStartHandler = start(state, editor);
+      dragHandler = move(state, editor);
+      dropHandler = drop(state, editor);
+      dragEndHandler = stop(state, editor);
+      editor.on('mousedown', dragStartHandler);
+      editor.on('mousemove', dragHandler);
+      editor.on('mouseup', dropHandler);
+      pageDom.bind(rootDocument, 'mousemove', dragHandler);
+      pageDom.bind(rootDocument, 'mouseup', dragEndHandler);
+      editor.on('remove', function () {
+        pageDom.unbind(rootDocument, 'mousemove', dragHandler);
+        pageDom.unbind(rootDocument, 'mouseup', dragEndHandler);
+      });
+    };
+    var blockIeDrop = function (editor) {
+      editor.on('drop', function (e) {
+        var realTarget = typeof e.clientX !== 'undefined' ? editor.getDoc().elementFromPoint(e.clientX, e.clientY) : null;
+        if (isContentEditableFalse$6(realTarget) || isContentEditableFalse$6(editor.dom.getContentEditableParent(realTarget))) {
+          e.preventDefault();
+        }
+      });
+    };
+    var init = function (editor) {
+      bindFakeDragEvents(editor);
+      blockIeDrop(editor);
+    };
+    var DragDropOverrides = { init: init };
+
+    var getNodeClientRects = function (node) {
+      var toArrayWithNode = function (clientRects) {
+        return map(clientRects, function (clientRect) {
+          clientRect = clone$1(clientRect);
+          clientRect.node = node;
+          return clientRect;
+        });
+      };
+      if (NodeType.isElement(node)) {
+        return toArrayWithNode(node.getClientRects());
+      }
+      if (NodeType.isText(node)) {
+        var rng = node.ownerDocument.createRange();
+        rng.setStart(node, 0);
+        rng.setEnd(node, node.data.length);
+        return toArrayWithNode(rng.getClientRects());
+      }
+    };
+    var getClientRects = function (node) {
+      return foldl(node, function (result, node) {
+        return result.concat(getNodeClientRects(node));
+      }, []);
+    };
+
+    var VDirection;
+    (function (VDirection) {
+      VDirection[VDirection['Up'] = -1] = 'Up';
+      VDirection[VDirection['Down'] = 1] = 'Down';
+    }(VDirection || (VDirection = {})));
+    var findUntil = function (direction, root, predicateFn, node) {
+      while (node = findNode(node, direction, isEditableCaretCandidate, root)) {
+        if (predicateFn(node)) {
+          return;
+        }
+      }
+    };
+    var walkUntil = function (direction, isAboveFn, isBeflowFn, root, predicateFn, caretPosition) {
+      var line = 0, node;
+      var result = [];
+      var targetClientRect;
+      var add = function (node) {
+        var i, clientRect, clientRects;
+        clientRects = getClientRects([node]);
+        if (direction === -1) {
+          clientRects = clientRects.reverse();
+        }
+        for (i = 0; i < clientRects.length; i++) {
+          clientRect = clientRects[i];
+          if (isBeflowFn(clientRect, targetClientRect)) {
+            continue;
+          }
+          if (result.length > 0 && isAboveFn(clientRect, ArrUtils.last(result))) {
+            line++;
+          }
+          clientRect.line = line;
+          if (predicateFn(clientRect)) {
+            return true;
+          }
+          result.push(clientRect);
+        }
+      };
+      targetClientRect = ArrUtils.last(caretPosition.getClientRects());
+      if (!targetClientRect) {
+        return result;
+      }
+      node = caretPosition.getNode();
+      add(node);
+      findUntil(direction, root, add, node);
+      return result;
+    };
+    var aboveLineNumber = function (lineNumber, clientRect) {
+      return clientRect.line > lineNumber;
+    };
+    var isLineNumber = function (lineNumber, clientRect) {
+      return clientRect.line === lineNumber;
+    };
+    var upUntil = curry(walkUntil, VDirection.Up, isAbove, isBelow);
+    var downUntil = curry(walkUntil, VDirection.Down, isBelow, isAbove);
+    var positionsUntil = function (direction, root, predicateFn, node) {
+      var caretWalker = CaretWalker(root);
+      var walkFn, isBelowFn, isAboveFn, caretPosition;
+      var result = [];
+      var line = 0, clientRect, targetClientRect;
+      var getClientRect = function (caretPosition) {
+        if (direction === 1) {
+          return ArrUtils.last(caretPosition.getClientRects());
+        }
+        return ArrUtils.last(caretPosition.getClientRects());
+      };
+      if (direction === 1) {
+        walkFn = caretWalker.next;
+        isBelowFn = isBelow;
+        isAboveFn = isAbove;
+        caretPosition = CaretPosition$1.after(node);
+      } else {
+        walkFn = caretWalker.prev;
+        isBelowFn = isAbove;
+        isAboveFn = isBelow;
+        caretPosition = CaretPosition$1.before(node);
+      }
+      targetClientRect = getClientRect(caretPosition);
+      do {
+        if (!caretPosition.isVisible()) {
+          continue;
+        }
+        clientRect = getClientRect(caretPosition);
+        if (isAboveFn(clientRect, targetClientRect)) {
+          continue;
+        }
+        if (result.length > 0 && isBelowFn(clientRect, ArrUtils.last(result))) {
+          line++;
+        }
+        clientRect = clone$1(clientRect);
+        clientRect.position = caretPosition;
+        clientRect.line = line;
+        if (predicateFn(clientRect)) {
+          return result;
+        }
+        result.push(clientRect);
+      } while (caretPosition = walkFn(caretPosition));
+      return result;
+    };
+    var isAboveLine = function (lineNumber) {
+      return function (clientRect) {
+        return aboveLineNumber(lineNumber, clientRect);
+      };
+    };
+    var isLine = function (lineNumber) {
+      return function (clientRect) {
+        return isLineNumber(lineNumber, clientRect);
+      };
+    };
+
+    var isContentEditableFalse$7 = NodeType.isContentEditableFalse;
+    var findNode$1 = findNode;
+    var distanceToRectLeft = function (clientRect, clientX) {
+      return Math.abs(clientRect.left - clientX);
+    };
+    var distanceToRectRight = function (clientRect, clientX) {
+      return Math.abs(clientRect.right - clientX);
+    };
+    var isInside = function (clientX, clientRect) {
+      return clientX >= clientRect.left && clientX <= clientRect.right;
+    };
+    var findClosestClientRect = function (clientRects, clientX) {
+      return ArrUtils.reduce(clientRects, function (oldClientRect, clientRect) {
+        var oldDistance, newDistance;
+        oldDistance = Math.min(distanceToRectLeft(oldClientRect, clientX), distanceToRectRight(oldClientRect, clientX));
+        newDistance = Math.min(distanceToRectLeft(clientRect, clientX), distanceToRectRight(clientRect, clientX));
+        if (isInside(clientX, clientRect)) {
+          return clientRect;
+        }
+        if (isInside(clientX, oldClientRect)) {
+          return oldClientRect;
+        }
+        if (newDistance === oldDistance && isContentEditableFalse$7(clientRect.node)) {
+          return clientRect;
+        }
+        if (newDistance < oldDistance) {
+          return clientRect;
+        }
+        return oldClientRect;
+      });
+    };
+    var walkUntil$1 = function (direction, root, predicateFn, node) {
+      while (node = findNode$1(node, direction, isEditableCaretCandidate, root)) {
+        if (predicateFn(node)) {
+          return;
+        }
+      }
+    };
+    var findLineNodeRects = function (root, targetNodeRect) {
+      var clientRects = [];
+      var collect = function (checkPosFn, node) {
+        var lineRects;
+        lineRects = filter(getClientRects([node]), function (clientRect) {
+          return !checkPosFn(clientRect, targetNodeRect);
+        });
+        clientRects = clientRects.concat(lineRects);
+        return lineRects.length === 0;
+      };
+      clientRects.push(targetNodeRect);
+      walkUntil$1(VDirection.Up, root, curry(collect, isAbove), targetNodeRect.node);
+      walkUntil$1(VDirection.Down, root, curry(collect, isBelow), targetNodeRect.node);
+      return clientRects;
+    };
+    var getFakeCaretTargets = function (root) {
+      return filter(from$1(root.getElementsByTagName('*')), isFakeCaretTarget);
+    };
+    var caretInfo = function (clientRect, clientX) {
+      return {
+        node: clientRect.node,
+        before: distanceToRectLeft(clientRect, clientX) < distanceToRectRight(clientRect, clientX)
+      };
+    };
+    var closestCaret = function (root, clientX, clientY) {
+      var closestNodeRect;
+      var contentEditableFalseNodeRects = getClientRects(getFakeCaretTargets(root));
+      var targetNodeRects = filter(contentEditableFalseNodeRects, function (rect) {
+        return clientY >= rect.top && clientY <= rect.bottom;
+      });
+      closestNodeRect = findClosestClientRect(targetNodeRects, clientX);
+      if (closestNodeRect) {
+        closestNodeRect = findClosestClientRect(findLineNodeRects(root, closestNodeRect), clientX);
+        if (closestNodeRect && isFakeCaretTarget(closestNodeRect.node)) {
+          return caretInfo(closestNodeRect, clientX);
+        }
+      }
+      return null;
+    };
+
+    var isXYWithinRange = function (clientX, clientY, range) {
+      if (range.collapsed) {
+        return false;
+      }
+      return foldl(range.getClientRects(), function (state, rect) {
+        return state || containsXY(rect, clientX, clientY);
+      }, false);
+    };
+    var RangePoint = { isXYWithinRange: isXYWithinRange };
+
+    var isContentEditableTrue$3 = NodeType.isContentEditableTrue;
+    var isContentEditableFalse$8 = NodeType.isContentEditableFalse;
+    var showCaret = function (direction, editor, node, before, scrollIntoView) {
+      return editor._selectionOverrides.showCaret(direction, node, before, scrollIntoView);
+    };
+    var getNodeRange = function (node) {
+      var rng = node.ownerDocument.createRange();
+      rng.selectNode(node);
+      return rng;
+    };
+    var selectNode = function (editor, node) {
+      var e = editor.fire('BeforeObjectSelected', { target: node });
+      if (e.isDefaultPrevented()) {
+        return null;
+      }
+      return getNodeRange(node);
+    };
+    var renderCaretAtRange = function (editor, range, scrollIntoView) {
+      var normalizedRange = normalizeRange(1, editor.getBody(), range);
+      var caretPosition = CaretPosition$1.fromRangeStart(normalizedRange);
+      var caretPositionNode = caretPosition.getNode();
+      if (isContentEditableFalse$8(caretPositionNode)) {
+        return showCaret(1, editor, caretPositionNode, !caretPosition.isAtEnd(), false);
+      }
+      var caretPositionBeforeNode = caretPosition.getNode(true);
+      if (isContentEditableFalse$8(caretPositionBeforeNode)) {
+        return showCaret(1, editor, caretPositionBeforeNode, false, false);
+      }
+      var ceRoot = editor.dom.getParent(caretPosition.getNode(), function (node) {
+        return isContentEditableFalse$8(node) || isContentEditableTrue$3(node);
+      });
+      if (isContentEditableFalse$8(ceRoot)) {
+        return showCaret(1, editor, ceRoot, false, scrollIntoView);
+      }
+      return null;
+    };
+    var renderRangeCaret = function (editor, range, scrollIntoView) {
+      if (!range || !range.collapsed) {
+        return range;
+      }
+      var caretRange = renderCaretAtRange(editor, range, scrollIntoView);
+      if (caretRange) {
+        return caretRange;
+      }
+      return range;
+    };
+
+    var setup$3 = function (editor) {
+      var renderFocusCaret = first(function () {
+        if (!editor.removed && editor.getBody().contains(domGlobals.document.activeElement)) {
+          var rng = editor.selection.getRng();
+          if (rng.collapsed) {
+            var caretRange = renderRangeCaret(editor, editor.selection.getRng(), false);
+            editor.selection.setRng(caretRange);
+          }
+        }
+      }, 0);
+      editor.on('focus', function () {
+        renderFocusCaret.throttle();
+      });
+      editor.on('blur', function () {
+        renderFocusCaret.cancel();
+      });
+    };
+    var CefFocus = { setup: setup$3 };
+
+    var VK = {
+      BACKSPACE: 8,
+      DELETE: 46,
+      DOWN: 40,
+      ENTER: 13,
+      LEFT: 37,
+      RIGHT: 39,
+      SPACEBAR: 32,
+      TAB: 9,
+      UP: 38,
+      END: 35,
+      HOME: 36,
+      modifierPressed: function (e) {
+        return e.shiftKey || e.ctrlKey || e.altKey || this.metaKeyPressed(e);
+      },
+      metaKeyPressed: function (e) {
+        return Env.mac ? e.metaKey : e.ctrlKey && !e.altKey;
+      }
+    };
+
+    var is$2 = function (expected) {
+      return function (actual) {
+        return expected === actual;
+      };
+    };
+    var isNbsp = is$2('\xA0');
+    var isWhiteSpace$1 = function (chr) {
+      return /^[\r\n\t ]$/.test(chr);
+    };
+    var isContent = function (chr) {
+      return !isWhiteSpace$1(chr) && !isNbsp(chr);
+    };
+
+    var isChar = function (forward, predicate, pos) {
+      return Option.from(pos.container()).filter(NodeType.isText).exists(function (text) {
+        var delta = forward ? 0 : -1;
+        return predicate(text.data.charAt(pos.offset() + delta));
+      });
+    };
+    var isBeforeSpace = curry(isChar, true, isWhiteSpace$1);
+    var isAfterSpace = curry(isChar, false, isWhiteSpace$1);
+    var isEmptyText = function (pos) {
+      var container = pos.container();
+      return NodeType.isText(container) && container.data.length === 0;
+    };
+    var matchesElementPosition = function (before, predicate) {
+      return function (pos) {
+        return Option.from(getChildNodeAtRelativeOffset(before ? 0 : -1, pos)).filter(predicate).isSome();
+      };
+    };
+    var isImageBlock = function (node) {
+      return node.nodeName === 'IMG' && get$2(Element.fromDom(node), 'display') === 'block';
+    };
+    var isCefNode = function (node) {
+      return NodeType.isContentEditableFalse(node) && !NodeType.isBogusAll(node);
+    };
+    var isBeforeImageBlock = matchesElementPosition(true, isImageBlock);
+    var isAfterImageBlock = matchesElementPosition(false, isImageBlock);
+    var isBeforeTable = matchesElementPosition(true, NodeType.isTable);
+    var isAfterTable = matchesElementPosition(false, NodeType.isTable);
+    var isBeforeContentEditableFalse = matchesElementPosition(true, isCefNode);
+    var isAfterContentEditableFalse = matchesElementPosition(false, isCefNode);
+
+    var isContentEditableTrue$4 = NodeType.isContentEditableTrue;
+    var isContentEditableFalse$9 = NodeType.isContentEditableFalse;
+    var getContentEditableRoot = function (editor, node) {
+      var root = editor.getBody();
+      while (node && node !== root) {
+        if (isContentEditableTrue$4(node) || isContentEditableFalse$9(node)) {
+          return node;
+        }
+        node = node.parentNode;
+      }
+      return null;
+    };
+    var SelectionOverrides = function (editor) {
+      var isBlock = function (node) {
+        return editor.dom.isBlock(node);
+      };
+      var rootNode = editor.getBody();
+      var fakeCaret = FakeCaret(editor.getBody(), isBlock, function () {
+        return EditorFocus.hasFocus(editor);
+      });
+      var realSelectionId = 'sel-' + editor.dom.uniqueId();
+      var selectedContentEditableNode;
+      var isFakeSelectionElement = function (elm) {
+        return editor.dom.hasClass(elm, 'mce-offscreen-selection');
+      };
+      var getRealSelectionElement = function () {
+        var container = editor.dom.get(realSelectionId);
+        return container ? container.getElementsByTagName('*')[0] : container;
+      };
+      var setRange = function (range) {
+        if (range) {
+          editor.selection.setRng(range);
+        }
+      };
+      var getRange = function () {
+        return editor.selection.getRng();
+      };
+      var showCaret = function (direction, node, before, scrollIntoView) {
+        if (scrollIntoView === void 0) {
+          scrollIntoView = true;
+        }
+        var e;
+        e = editor.fire('ShowCaret', {
+          target: node,
+          direction: direction,
+          before: before
+        });
+        if (e.isDefaultPrevented()) {
+          return null;
+        }
+        if (scrollIntoView) {
+          editor.selection.scrollIntoView(node, direction === -1);
+        }
+        return fakeCaret.show(before, node);
+      };
+      var getNormalizedRangeEndPoint = function (direction, range) {
+        range = normalizeRange(direction, rootNode, range);
+        if (direction === -1) {
+          return CaretPosition$1.fromRangeStart(range);
+        }
+        return CaretPosition$1.fromRangeEnd(range);
+      };
+      var showBlockCaretContainer = function (blockCaretContainer) {
+        if (blockCaretContainer.hasAttribute('data-mce-caret')) {
+          showCaretContainerBlock(blockCaretContainer);
+          setRange(getRange());
+          editor.selection.scrollIntoView(blockCaretContainer[0]);
+        }
+      };
+      var registerEvents = function () {
+        editor.on('mouseup', function (e) {
+          var range = getRange();
+          if (range.collapsed && EditorView.isXYInContentArea(editor, e.clientX, e.clientY)) {
+            setRange(renderCaretAtRange(editor, range, false));
+          }
+        });
+        editor.on('click', function (e) {
+          var contentEditableRoot;
+          contentEditableRoot = getContentEditableRoot(editor, e.target);
+          if (contentEditableRoot) {
+            if (isContentEditableFalse$9(contentEditableRoot)) {
+              e.preventDefault();
+              editor.focus();
+            }
+            if (isContentEditableTrue$4(contentEditableRoot)) {
+              if (editor.dom.isChildOf(contentEditableRoot, editor.selection.getNode())) {
+                removeContentEditableSelection();
+              }
+            }
+          }
+        });
+        editor.on('blur NewBlock', function () {
+          removeContentEditableSelection();
+        });
+        editor.on('ResizeWindow FullscreenStateChanged', function () {
+          return fakeCaret.reposition();
+        });
+        var handleTouchSelect = function (editor) {
+          var moved = false;
+          editor.on('touchstart', function () {
+            moved = false;
+          });
+          editor.on('touchmove', function () {
+            moved = true;
+          });
+          editor.on('touchend', function (e) {
+            var contentEditableRoot = getContentEditableRoot(editor, e.target);
+            if (isContentEditableFalse$9(contentEditableRoot)) {
+              if (!moved) {
+                e.preventDefault();
+                setContentEditableSelection(selectNode(editor, contentEditableRoot));
+              }
+            }
+          });
+        };
+        var hasNormalCaretPosition = function (elm) {
+          var caretWalker = CaretWalker(elm);
+          if (!elm.firstChild) {
+            return false;
+          }
+          var startPos = CaretPosition$1.before(elm.firstChild);
+          var newPos = caretWalker.next(startPos);
+          return newPos && !isBeforeContentEditableFalse(newPos) && !isAfterContentEditableFalse(newPos);
+        };
+        var isInSameBlock = function (node1, node2) {
+          var block1 = editor.dom.getParent(node1, editor.dom.isBlock);
+          var block2 = editor.dom.getParent(node2, editor.dom.isBlock);
+          return block1 === block2;
+        };
+        var hasBetterMouseTarget = function (targetNode, caretNode) {
+          var targetBlock = editor.dom.getParent(targetNode, editor.dom.isBlock);
+          var caretBlock = editor.dom.getParent(caretNode, editor.dom.isBlock);
+          if (targetBlock && editor.dom.isChildOf(targetBlock, caretBlock) && isContentEditableFalse$9(getContentEditableRoot(editor, targetBlock)) === false) {
+            return true;
+          }
+          return targetBlock && !isInSameBlock(targetBlock, caretBlock) && hasNormalCaretPosition(targetBlock);
+        };
+        handleTouchSelect(editor);
+        editor.on('mousedown', function (e) {
+          var contentEditableRoot;
+          var targetElm = e.target;
+          if (targetElm !== rootNode && targetElm.nodeName !== 'HTML' && !editor.dom.isChildOf(targetElm, rootNode)) {
+            return;
+          }
+          if (EditorView.isXYInContentArea(editor, e.clientX, e.clientY) === false) {
+            return;
+          }
+          contentEditableRoot = getContentEditableRoot(editor, targetElm);
+          if (contentEditableRoot) {
+            if (isContentEditableFalse$9(contentEditableRoot)) {
+              e.preventDefault();
+              setContentEditableSelection(selectNode(editor, contentEditableRoot));
+            } else {
+              removeContentEditableSelection();
+              if (!(isContentEditableTrue$4(contentEditableRoot) && e.shiftKey) && !RangePoint.isXYWithinRange(e.clientX, e.clientY, editor.selection.getRng())) {
+                hideFakeCaret();
+                editor.selection.placeCaretAt(e.clientX, e.clientY);
+              }
+            }
+          } else if (isFakeCaretTarget(targetElm) === false) {
+            removeContentEditableSelection();
+            hideFakeCaret();
+            var caretInfo = closestCaret(rootNode, e.clientX, e.clientY);
+            if (caretInfo) {
+              if (!hasBetterMouseTarget(e.target, caretInfo.node)) {
+                e.preventDefault();
+                var range = showCaret(1, caretInfo.node, caretInfo.before, false);
+                editor.getBody().focus();
+                setRange(range);
+              }
+            }
+          }
+        });
+        editor.on('keypress', function (e) {
+          if (VK.modifierPressed(e)) {
+            return;
+          }
+          switch (e.keyCode) {
+          default:
+            if (isContentEditableFalse$9(editor.selection.getNode())) {
+              e.preventDefault();
+            }
+            break;
+          }
+        });
+        editor.on('GetSelectionRange', function (e) {
+          var rng = e.range;
+          if (selectedContentEditableNode) {
+            if (!selectedContentEditableNode.parentNode) {
+              selectedContentEditableNode = null;
+              return;
+            }
+            rng = rng.cloneRange();
+            rng.selectNode(selectedContentEditableNode);
+            e.range = rng;
+          }
+        });
+        editor.on('SetSelectionRange', function (e) {
+          var rng;
+          rng = setContentEditableSelection(e.range, e.forward);
+          if (rng) {
+            e.range = rng;
+          }
+        });
+        var isPasteBin = function (node) {
+          return node.id === 'mcepastebin';
+        };
+        editor.on('AfterSetSelectionRange', function (e) {
+          var rng = e.range;
+          if (!isRangeInCaretContainer(rng) && !isPasteBin(rng.startContainer.parentNode)) {
+            hideFakeCaret();
+          }
+          if (!isFakeSelectionElement(rng.startContainer.parentNode)) {
+            removeContentEditableSelection();
+          }
+        });
+        editor.on('copy', function (e) {
+          var clipboardData = e.clipboardData;
+          if (!e.isDefaultPrevented() && e.clipboardData && !Env.ie) {
+            var realSelectionElement = getRealSelectionElement();
+            if (realSelectionElement) {
+              e.preventDefault();
+              clipboardData.clearData();
+              clipboardData.setData('text/html', realSelectionElement.outerHTML);
+              clipboardData.setData('text/plain', realSelectionElement.outerText);
+            }
+          }
+        });
+        DragDropOverrides.init(editor);
+        CefFocus.setup(editor);
+      };
+      var isWithinCaretContainer = function (node) {
+        return isCaretContainer(node) || startsWithCaretContainer(node) || endsWithCaretContainer(node);
+      };
+      var isRangeInCaretContainer = function (rng) {
+        return isWithinCaretContainer(rng.startContainer) || isWithinCaretContainer(rng.endContainer);
+      };
+      var setContentEditableSelection = function (range, forward) {
+        var node;
+        var $ = editor.$;
+        var dom = editor.dom;
+        var $realSelectionContainer, sel, startContainer, startOffset, endOffset, e, caretPosition, targetClone, origTargetClone;
+        if (!range) {
+          return null;
+        }
+        if (range.collapsed) {
+          if (!isRangeInCaretContainer(range)) {
+            if (forward === false) {
+              caretPosition = getNormalizedRangeEndPoint(-1, range);
+              if (isFakeCaretTarget(caretPosition.getNode(true))) {
+                return showCaret(-1, caretPosition.getNode(true), false, false);
+              }
+              if (isFakeCaretTarget(caretPosition.getNode())) {
+                return showCaret(-1, caretPosition.getNode(), !caretPosition.isAtEnd(), false);
+              }
+            } else {
+              caretPosition = getNormalizedRangeEndPoint(1, range);
+              if (isFakeCaretTarget(caretPosition.getNode())) {
+                return showCaret(1, caretPosition.getNode(), !caretPosition.isAtEnd(), false);
+              }
+              if (isFakeCaretTarget(caretPosition.getNode(true))) {
+                return showCaret(1, caretPosition.getNode(true), false, false);
+              }
+            }
+          }
+          return null;
+        }
+        startContainer = range.startContainer;
+        startOffset = range.startOffset;
+        endOffset = range.endOffset;
+        if (startContainer.nodeType === 3 && startOffset === 0 && isContentEditableFalse$9(startContainer.parentNode)) {
+          startContainer = startContainer.parentNode;
+          startOffset = dom.nodeIndex(startContainer);
+          startContainer = startContainer.parentNode;
+        }
+        if (startContainer.nodeType !== 1) {
+          return null;
+        }
+        if (endOffset === startOffset + 1) {
+          node = startContainer.childNodes[startOffset];
+        }
+        if (!isContentEditableFalse$9(node)) {
+          return null;
+        }
+        targetClone = origTargetClone = node.cloneNode(true);
+        e = editor.fire('ObjectSelected', {
+          target: node,
+          targetClone: targetClone
+        });
+        if (e.isDefaultPrevented()) {
+          return null;
+        }
+        $realSelectionContainer = descendant(Element.fromDom(editor.getBody()), '#' + realSelectionId).fold(function () {
+          return $([]);
+        }, function (elm) {
+          return $([elm.dom()]);
+        });
+        targetClone = e.targetClone;
+        if ($realSelectionContainer.length === 0) {
+          $realSelectionContainer = $('<div data-mce-bogus="all" class="mce-offscreen-selection"></div>').attr('id', realSelectionId);
+          $realSelectionContainer.appendTo(editor.getBody());
+        }
+        range = editor.dom.createRng();
+        if (targetClone === origTargetClone && Env.ie) {
+          $realSelectionContainer.empty().append('<p style="font-size: 0" data-mce-bogus="all">\xA0</p>').append(targetClone);
+          range.setStartAfter($realSelectionContainer[0].firstChild.firstChild);
+          range.setEndAfter(targetClone);
+        } else {
+          $realSelectionContainer.empty().append('\xA0').append(targetClone).append('\xA0');
+          range.setStart($realSelectionContainer[0].firstChild, 1);
+          range.setEnd($realSelectionContainer[0].lastChild, 0);
+        }
+        $realSelectionContainer.css({ top: dom.getPos(node, editor.getBody()).y });
+        $realSelectionContainer[0].focus();
+        sel = editor.selection.getSel();
+        sel.removeAllRanges();
+        sel.addRange(range);
+        each(descendants$1(Element.fromDom(editor.getBody()), '*[data-mce-selected]'), function (elm) {
+          remove(elm, 'data-mce-selected');
+        });
+        node.setAttribute('data-mce-selected', '1');
+        selectedContentEditableNode = node;
+        hideFakeCaret();
+        return range;
+      };
+      var removeContentEditableSelection = function () {
+        if (selectedContentEditableNode) {
+          selectedContentEditableNode.removeAttribute('data-mce-selected');
+          descendant(Element.fromDom(editor.getBody()), '#' + realSelectionId).each(remove$1);
+          selectedContentEditableNode = null;
+        }
+        descendant(Element.fromDom(editor.getBody()), '#' + realSelectionId).each(remove$1);
+        selectedContentEditableNode = null;
+      };
+      var destroy = function () {
+        fakeCaret.destroy();
+        selectedContentEditableNode = null;
+      };
+      var hideFakeCaret = function () {
+        fakeCaret.hide();
+      };
+      if (Env.ceFalse) {
+        registerEvents();
+      }
+      return {
+        showCaret: showCaret,
+        showBlockCaretContainer: showBlockCaretContainer,
+        hideFakeCaret: hideFakeCaret,
+        destroy: destroy
+      };
+    };
+
+    var KEEP = 0, INSERT = 1, DELETE = 2;
+    var diff = function (left, right) {
+      var size = left.length + right.length + 2;
+      var vDown = new Array(size);
+      var vUp = new Array(size);
+      var snake = function (start, end, diag) {
+        return {
+          start: start,
+          end: end,
+          diag: diag
+        };
+      };
+      var buildScript = function (start1, end1, start2, end2, script) {
+        var middle = getMiddleSnake(start1, end1, start2, end2);
+        if (middle === null || middle.start === end1 && middle.diag === end1 - end2 || middle.end === start1 && middle.diag === start1 - start2) {
+          var i = start1;
+          var j = start2;
+          while (i < end1 || j < end2) {
+            if (i < end1 && j < end2 && left[i] === right[j]) {
+              script.push([
+                KEEP,
+                left[i]
+              ]);
+              ++i;
+              ++j;
+            } else {
+              if (end1 - start1 > end2 - start2) {
+                script.push([
+                  DELETE,
+                  left[i]
+                ]);
+                ++i;
+              } else {
+                script.push([
+                  INSERT,
+                  right[j]
+                ]);
+                ++j;
+              }
+            }
+          }
+        } else {
+          buildScript(start1, middle.start, start2, middle.start - middle.diag, script);
+          for (var i2 = middle.start; i2 < middle.end; ++i2) {
+            script.push([
+              KEEP,
+              left[i2]
+            ]);
+          }
+          buildScript(middle.end, end1, middle.end - middle.diag, end2, script);
+        }
+      };
+      var buildSnake = function (start, diag, end1, end2) {
+        var end = start;
+        while (end - diag < end2 && end < end1 && left[end] === right[end - diag]) {
+          ++end;
+        }
+        return snake(start, end, diag);
+      };
+      var getMiddleSnake = function (start1, end1, start2, end2) {
+        var m = end1 - start1;
+        var n = end2 - start2;
+        if (m === 0 || n === 0) {
+          return null;
+        }
+        var delta = m - n;
+        var sum = n + m;
+        var offset = (sum % 2 === 0 ? sum : sum + 1) / 2;
+        vDown[1 + offset] = start1;
+        vUp[1 + offset] = end1 + 1;
+        var d, k, i, x, y;
+        for (d = 0; d <= offset; ++d) {
+          for (k = -d; k <= d; k += 2) {
+            i = k + offset;
+            if (k === -d || k !== d && vDown[i - 1] < vDown[i + 1]) {
+              vDown[i] = vDown[i + 1];
+            } else {
+              vDown[i] = vDown[i - 1] + 1;
+            }
+            x = vDown[i];
+            y = x - start1 + start2 - k;
+            while (x < end1 && y < end2 && left[x] === right[y]) {
+              vDown[i] = ++x;
+              ++y;
+            }
+            if (delta % 2 !== 0 && delta - d <= k && k <= delta + d) {
+              if (vUp[i - delta] <= vDown[i]) {
+                return buildSnake(vUp[i - delta], k + start1 - start2, end1, end2);
+              }
+            }
+          }
+          for (k = delta - d; k <= delta + d; k += 2) {
+            i = k + offset - delta;
+            if (k === delta - d || k !== delta + d && vUp[i + 1] <= vUp[i - 1]) {
+              vUp[i] = vUp[i + 1] - 1;
+            } else {
+              vUp[i] = vUp[i - 1];
+            }
+            x = vUp[i] - 1;
+            y = x - start1 + start2 - k;
+            while (x >= start1 && y >= start2 && left[x] === right[y]) {
+              vUp[i] = x--;
+              y--;
+            }
+            if (delta % 2 === 0 && -d <= k && k <= d) {
+              if (vUp[i] <= vDown[i + delta]) {
+                return buildSnake(vUp[i], k + start1 - start2, end1, end2);
+              }
+            }
+          }
+        }
+      };
+      var script = [];
+      buildScript(0, left.length, 0, right.length, script);
+      return script;
+    };
+    var Diff = {
+      KEEP: KEEP,
+      DELETE: DELETE,
+      INSERT: INSERT,
+      diff: diff
+    };
+
+    var getOuterHtml = function (elm) {
+      if (NodeType.isElement(elm)) {
+        return elm.outerHTML;
+      } else if (NodeType.isText(elm)) {
+        return Entities.encodeRaw(elm.data, false);
+      } else if (NodeType.isComment(elm)) {
+        return '<!--' + elm.data + '-->';
+      }
+      return '';
+    };
+    var createFragment$1 = function (html) {
+      var frag, node, container;
+      container = domGlobals.document.createElement('div');
+      frag = domGlobals.document.createDocumentFragment();
+      if (html) {
+        container.innerHTML = html;
+      }
+      while (node = container.firstChild) {
+        frag.appendChild(node);
+      }
+      return frag;
+    };
+    var insertAt = function (elm, html, index) {
+      var fragment = createFragment$1(html);
+      if (elm.hasChildNodes() && index < elm.childNodes.length) {
+        var target = elm.childNodes[index];
+        target.parentNode.insertBefore(fragment, target);
+      } else {
+        elm.appendChild(fragment);
+      }
+    };
+    var removeAt = function (elm, index) {
+      if (elm.hasChildNodes() && index < elm.childNodes.length) {
+        var target = elm.childNodes[index];
+        target.parentNode.removeChild(target);
+      }
+    };
+    var applyDiff = function (diff, elm) {
+      var index = 0;
+      each(diff, function (action) {
+        if (action[0] === Diff.KEEP) {
+          index++;
+        } else if (action[0] === Diff.INSERT) {
+          insertAt(elm, action[1], index);
+          index++;
+        } else if (action[0] === Diff.DELETE) {
+          removeAt(elm, index);
+        }
+      });
+    };
+    var read$1 = function (elm) {
+      return filter(map(from$1(elm.childNodes), getOuterHtml), function (item) {
+        return item.length > 0;
+      });
+    };
+    var write = function (fragments, elm) {
+      var currentFragments = map(from$1(elm.childNodes), getOuterHtml);
+      applyDiff(Diff.diff(currentFragments, fragments), elm);
+      return elm;
+    };
+    var Fragments = {
+      read: read$1,
+      write: write
+    };
+
+    var undoLevelDocument = Cell(Option.none());
+    var lazyTempDocument = function () {
+      return undoLevelDocument.get().getOrThunk(function () {
+        var doc = domGlobals.document.implementation.createHTMLDocument('undo');
+        undoLevelDocument.set(Option.some(doc));
+        return doc;
+      });
+    };
+    var hasIframes = function (html) {
+      return html.indexOf('</iframe>') !== -1;
+    };
+    var createFragmentedLevel = function (fragments) {
+      return {
+        type: 'fragmented',
+        fragments: fragments,
+        content: '',
+        bookmark: null,
+        beforeBookmark: null
+      };
+    };
+    var createCompleteLevel = function (content) {
+      return {
+        type: 'complete',
+        fragments: null,
+        content: content,
+        bookmark: null,
+        beforeBookmark: null
+      };
+    };
+    var createFromEditor = function (editor) {
+      var fragments, content, trimmedFragments;
+      fragments = Fragments.read(editor.getBody());
+      trimmedFragments = bind(fragments, function (html) {
+        var trimmed = TrimHtml.trimInternal(editor.serializer, html);
+        return trimmed.length > 0 ? [trimmed] : [];
+      });
+      content = trimmedFragments.join('');
+      return hasIframes(content) ? createFragmentedLevel(trimmedFragments) : createCompleteLevel(content);
+    };
+    var applyToEditor = function (editor, level, before) {
+      if (level.type === 'fragmented') {
+        Fragments.write(level.fragments, editor.getBody());
+      } else {
+        editor.setContent(level.content, { format: 'raw' });
+      }
+      editor.selection.moveToBookmark(before ? level.beforeBookmark : level.bookmark);
+    };
+    var getLevelContent = function (level) {
+      return level.type === 'fragmented' ? level.fragments.join('') : level.content;
+    };
+    var getCleanLevelContent = function (level) {
+      var elm = Element.fromTag('body', lazyTempDocument());
+      set$1(elm, getLevelContent(level));
+      each(descendants$1(elm, '*[data-mce-bogus]'), unwrap);
+      return get$4(elm);
+    };
+    var hasEqualContent = function (level1, level2) {
+      return getLevelContent(level1) === getLevelContent(level2);
+    };
+    var hasEqualCleanedContent = function (level1, level2) {
+      return getCleanLevelContent(level1) === getCleanLevelContent(level2);
+    };
+    var isEq$2 = function (level1, level2) {
+      if (!level1 || !level2) {
+        return false;
+      } else if (hasEqualContent(level1, level2)) {
+        return true;
+      } else {
+        return hasEqualCleanedContent(level1, level2);
+      }
+    };
+    var Levels = {
+      createFragmentedLevel: createFragmentedLevel,
+      createCompleteLevel: createCompleteLevel,
+      createFromEditor: createFromEditor,
+      applyToEditor: applyToEditor,
+      isEq: isEq$2
+    };
+
+    var UndoManager = function (editor) {
+      var self = this, index = 0, data = [], beforeBookmark, isFirstTypedCharacter, locks = 0;
+      var isUnlocked = function () {
+        return locks === 0;
+      };
+      var setTyping = function (typing) {
+        if (isUnlocked()) {
+          self.typing = typing;
+        }
+      };
+      var setDirty = function (state) {
+        editor.setDirty(state);
+      };
+      var addNonTypingUndoLevel = function (e) {
+        setTyping(false);
+        self.add({}, e);
+      };
+      var endTyping = function () {
+        if (self.typing) {
+          setTyping(false);
+          self.add();
+        }
+      };
+      editor.on('init', function () {
+        self.add();
+      });
+      editor.on('BeforeExecCommand', function (e) {
+        var cmd = e.command;
+        if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') {
+          endTyping();
+          self.beforeChange();
+        }
+      });
+      editor.on('ExecCommand', function (e) {
+        var cmd = e.command;
+        if (cmd !== 'Undo' && cmd !== 'Redo' && cmd !== 'mceRepaint') {
+          addNonTypingUndoLevel(e);
+        }
+      });
+      editor.on('ObjectResizeStart cut', function () {
+        self.beforeChange();
+      });
+      editor.on('SaveContent ObjectResized blur', addNonTypingUndoLevel);
+      editor.on('dragend', addNonTypingUndoLevel);
+      editor.on('keyup', function (e) {
+        var keyCode = e.keyCode;
+        if (e.isDefaultPrevented()) {
+          return;
+        }
+        if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45 || e.ctrlKey) {
+          addNonTypingUndoLevel();
+          editor.nodeChanged();
+        }
+        if (keyCode === 46 || keyCode === 8) {
+          editor.nodeChanged();
+        }
+        if (isFirstTypedCharacter && self.typing && Levels.isEq(Levels.createFromEditor(editor), data[0]) === false) {
+          if (editor.isDirty() === false) {
+            setDirty(true);
+            editor.fire('change', {
+              level: data[0],
+              lastLevel: null
+            });
+          }
+          editor.fire('TypingUndo');
+          isFirstTypedCharacter = false;
+          editor.nodeChanged();
+        }
+      });
+      editor.on('keydown', function (e) {
+        var keyCode = e.keyCode;
+        if (e.isDefaultPrevented()) {
+          return;
+        }
+        if (keyCode >= 33 && keyCode <= 36 || keyCode >= 37 && keyCode <= 40 || keyCode === 45) {
+          if (self.typing) {
+            addNonTypingUndoLevel(e);
+          }
+          return;
+        }
+        var modKey = e.ctrlKey && !e.altKey || e.metaKey;
+        if ((keyCode < 16 || keyCode > 20) && keyCode !== 224 && keyCode !== 91 && !self.typing && !modKey) {
+          self.beforeChange();
+          setTyping(true);
+          self.add({}, e);
+          isFirstTypedCharacter = true;
+        }
+      });
+      editor.on('mousedown', function (e) {
+        if (self.typing) {
+          addNonTypingUndoLevel(e);
+        }
+      });
+      var isInsertReplacementText = function (event) {
+        return event.inputType === 'insertReplacementText';
+      };
+      var isInsertTextDataNull = function (event) {
+        return event.inputType === 'insertText' && event.data === null;
+      };
+      editor.on('input', function (e) {
+        if (e.inputType && (isInsertReplacementText(e) || isInsertTextDataNull(e))) {
+          addNonTypingUndoLevel(e);
+        }
+      });
+      editor.addShortcut('meta+z', '', 'Undo');
+      editor.addShortcut('meta+y,meta+shift+z', '', 'Redo');
+      editor.on('AddUndo Undo Redo ClearUndos', function (e) {
+        if (!e.isDefaultPrevented()) {
+          editor.nodeChanged();
+        }
+      });
+      self = {
+        data: data,
+        typing: false,
+        beforeChange: function () {
+          if (isUnlocked()) {
+            beforeBookmark = GetBookmark.getUndoBookmark(editor.selection);
+          }
+        },
+        add: function (level, event) {
+          var i;
+          var settings = editor.settings;
+          var lastLevel, currentLevel;
+          currentLevel = Levels.createFromEditor(editor);
+          level = level || {};
+          level = Tools.extend(level, currentLevel);
+          if (isUnlocked() === false || editor.removed) {
+            return null;
+          }
+          lastLevel = data[index];
+          if (editor.fire('BeforeAddUndo', {
+              level: level,
+              lastLevel: lastLevel,
+              originalEvent: event
+            }).isDefaultPrevented()) {
+            return null;
+          }
+          if (lastLevel && Levels.isEq(lastLevel, level)) {
+            return null;
+          }
+          if (data[index]) {
+            data[index].beforeBookmark = beforeBookmark;
+          }
+          if (settings.custom_undo_redo_levels) {
+            if (data.length > settings.custom_undo_redo_levels) {
+              for (i = 0; i < data.length - 1; i++) {
+                data[i] = data[i + 1];
+              }
+              data.length--;
+              index = data.length;
+            }
+          }
+          level.bookmark = GetBookmark.getUndoBookmark(editor.selection);
+          if (index < data.length - 1) {
+            data.length = index + 1;
+          }
+          data.push(level);
+          index = data.length - 1;
+          var args = {
+            level: level,
+            lastLevel: lastLevel,
+            originalEvent: event
+          };
+          editor.fire('AddUndo', args);
+          if (index > 0) {
+            setDirty(true);
+            editor.fire('change', args);
+          }
+          return level;
+        },
+        undo: function () {
+          var level;
+          if (self.typing) {
+            self.add();
+            self.typing = false;
+            setTyping(false);
+          }
+          if (index > 0) {
+            level = data[--index];
+            Levels.applyToEditor(editor, level, true);
+            setDirty(true);
+            editor.fire('Undo', { level: level });
+          }
+          return level;
+        },
+        redo: function () {
+          var level;
+          if (index < data.length - 1) {
+            level = data[++index];
+            Levels.applyToEditor(editor, level, false);
+            setDirty(true);
+            editor.fire('Redo', { level: level });
+          }
+          return level;
+        },
+        clear: function () {
+          data = [];
+          index = 0;
+          self.typing = false;
+          self.data = data;
+          editor.fire('ClearUndos');
+        },
+        reset: function () {
+          self.clear();
+          self.add();
+        },
+        hasUndo: function () {
+          return index > 0 || self.typing && data[0] && !Levels.isEq(Levels.createFromEditor(editor), data[0]);
+        },
+        hasRedo: function () {
+          return index < data.length - 1 && !self.typing;
+        },
+        transact: function (callback) {
+          endTyping();
+          self.beforeChange();
+          self.ignore(callback);
+          return self.add();
+        },
+        ignore: function (callback) {
+          try {
+            locks++;
+            callback();
+          } finally {
+            locks--;
+          }
+        },
+        extra: function (callback1, callback2) {
+          var lastLevel, bookmark;
+          if (self.transact(callback1)) {
+            bookmark = data[index].bookmark;
+            lastLevel = data[index - 1];
+            Levels.applyToEditor(editor, lastLevel, true);
+            if (self.transact(callback2)) {
+              data[index - 1].beforeBookmark = bookmark;
+            }
+          }
+        }
+      };
+      return self;
+    };
+
+    var getLastChildren$1 = function (elm) {
+      var children = [];
+      var rawNode = elm.dom();
+      while (rawNode) {
+        children.push(Element.fromDom(rawNode));
+        rawNode = rawNode.lastChild;
+      }
+      return children;
+    };
+    var removeTrailingBr = function (elm) {
+      var allBrs = descendants$1(elm, 'br');
+      var brs = filter(getLastChildren$1(elm).slice(-1), isBr$1);
+      if (allBrs.length === brs.length) {
+        each(brs, remove$1);
+      }
+    };
+    var fillWithPaddingBr = function (elm) {
+      empty(elm);
+      append(elm, Element.fromHtml('<br data-mce-bogus="1">'));
+    };
+    var isPaddingContents = function (elm) {
+      return isText(elm) ? get$5(elm) === '\xA0' : isBr$1(elm);
+    };
+    var isPaddedElement = function (elm) {
+      return filter(children(elm), isPaddingContents).length === 1;
+    };
+    var trimBlockTrailingBr = function (elm) {
+      lastChild(elm).each(function (lastChild) {
+        prevSibling(lastChild).each(function (lastChildPrevSibling) {
+          if (isBlock(elm) && isBr$1(lastChild) && isBlock(lastChildPrevSibling)) {
+            remove$1(lastChild);
+          }
+        });
+      });
+    };
+    var PaddingBr = {
+      removeTrailingBr: removeTrailingBr,
+      fillWithPaddingBr: fillWithPaddingBr,
+      isPaddedElement: isPaddedElement,
+      trimBlockTrailingBr: trimBlockTrailingBr
+    };
+
+    var isEq$3 = FormatUtils.isEq;
+    var matchesUnInheritedFormatSelector = function (ed, node, name) {
+      var formatList = ed.formatter.get(name);
+      if (formatList) {
+        for (var i = 0; i < formatList.length; i++) {
+          if (formatList[i].inherit === false && ed.dom.is(node, formatList[i].selector)) {
+            return true;
+          }
+        }
+      }
+      return false;
+    };
+    var matchParents = function (editor, node, name, vars) {
+      var root = editor.dom.getRoot();
+      if (node === root) {
+        return false;
+      }
+      node = editor.dom.getParent(node, function (node) {
+        if (matchesUnInheritedFormatSelector(editor, node, name)) {
+          return true;
+        }
+        return node.parentNode === root || !!matchNode(editor, node, name, vars, true);
+      });
+      return matchNode(editor, node, name, vars);
+    };
+    var matchName = function (dom, node, format) {
+      if (isEq$3(node, format.inline)) {
+        return true;
+      }
+      if (isEq$3(node, format.block)) {
+        return true;
+      }
+      if (format.selector) {
+        return node.nodeType === 1 && dom.is(node, format.selector);
+      }
+    };
+    var matchItems = function (dom, node, format, itemName, similar, vars) {
+      var key, value;
+      var items = format[itemName];
+      var i;
+      if (format.onmatch) {
+        return format.onmatch(node, format, itemName);
+      }
+      if (items) {
+        if (typeof items.length === 'undefined') {
+          for (key in items) {
+            if (items.hasOwnProperty(key)) {
+              if (itemName === 'attributes') {
+                value = dom.getAttrib(node, key);
+              } else {
+                value = FormatUtils.getStyle(dom, node, key);
+              }
+              if (similar && !value && !format.exact) {
+                return;
+              }
+              if ((!similar || format.exact) && !isEq$3(value, FormatUtils.normalizeStyleValue(dom, FormatUtils.replaceVars(items[key], vars), key))) {
+                return;
+              }
+            }
+          }
+        } else {
+          for (i = 0; i < items.length; i++) {
+            if (itemName === 'attributes' ? dom.getAttrib(node, items[i]) : FormatUtils.getStyle(dom, node, items[i])) {
+              return format;
+            }
+          }
+        }
+      }
+      return format;
+    };
+    var matchNode = function (ed, node, name, vars, similar) {
+      var formatList = ed.formatter.get(name);
+      var format, i, x, classes;
+      var dom = ed.dom;
+      if (formatList && node) {
+        for (i = 0; i < formatList.length; i++) {
+          format = formatList[i];
+          if (matchName(ed.dom, node, format) && matchItems(dom, node, format, 'attributes', similar, vars) && matchItems(dom, node, format, 'styles', similar, vars)) {
+            if (classes = format.classes) {
+              for (x = 0; x < classes.length; x++) {
+                if (!ed.dom.hasClass(node, classes[x])) {
+                  return;
+                }
+              }
+            }
+            return format;
+          }
+        }
+      }
+    };
+    var match = function (editor, name, vars, node) {
+      var startNode;
+      if (node) {
+        return matchParents(editor, node, name, vars);
+      }
+      node = editor.selection.getNode();
+      if (matchParents(editor, node, name, vars)) {
+        return true;
+      }
+      startNode = editor.selection.getStart();
+      if (startNode !== node) {
+        if (matchParents(editor, startNode, name, vars)) {
+          return true;
+        }
+      }
+      return false;
+    };
+    var matchAll = function (editor, names, vars) {
+      var startElement;
+      var matchedFormatNames = [];
+      var checkedMap = {};
+      startElement = editor.selection.getStart();
+      editor.dom.getParent(startElement, function (node) {
+        var i, name;
+        for (i = 0; i < names.length; i++) {
+          name = names[i];
+          if (!checkedMap[name] && matchNode(editor, node, name, vars)) {
+            checkedMap[name] = true;
+            matchedFormatNames.push(name);
+          }
+        }
+      }, editor.dom.getRoot());
+      return matchedFormatNames;
+    };
+    var canApply = function (editor, name) {
+      var formatList = editor.formatter.get(name);
+      var startNode, parents, i, x, selector;
+      var dom = editor.dom;
+      if (formatList) {
+        startNode = editor.selection.getStart();
+        parents = FormatUtils.getParents(dom, startNode);
+        for (x = formatList.length - 1; x >= 0; x--) {
+          selector = formatList[x].selector;
+          if (!selector || formatList[x].defaultBlock) {
+            return true;
+          }
+          for (i = parents.length - 1; i >= 0; i--) {
+            if (dom.is(parents[i], selector)) {
+              return true;
+            }
+          }
+        }
+      }
+      return false;
+    };
+    var MatchFormat = {
+      matchNode: matchNode,
+      matchName: matchName,
+      match: match,
+      matchAll: matchAll,
+      canApply: canApply,
+      matchesUnInheritedFormatSelector: matchesUnInheritedFormatSelector
+    };
+
+    var splitText = function (node, offset) {
+      return node.splitText(offset);
+    };
+    var split$1 = function (rng) {
+      var startContainer = rng.startContainer, startOffset = rng.startOffset, endContainer = rng.endContainer, endOffset = rng.endOffset;
+      if (startContainer === endContainer && NodeType.isText(startContainer)) {
+        if (startOffset > 0 && startOffset < startContainer.nodeValue.length) {
+          endContainer = splitText(startContainer, startOffset);
+          startContainer = endContainer.previousSibling;
+          if (endOffset > startOffset) {
+            endOffset = endOffset - startOffset;
+            startContainer = endContainer = splitText(endContainer, endOffset).previousSibling;
+            endOffset = endContainer.nodeValue.length;
+            startOffset = 0;
+          } else {
+            endOffset = 0;
+          }
+        }
+      } else {
+        if (NodeType.isText(startContainer) && startOffset > 0 && startOffset < startContainer.nodeValue.length) {
+          startContainer = splitText(startContainer, startOffset);
+          startOffset = 0;
+        }
+        if (NodeType.isText(endContainer) && endOffset > 0 && endOffset < endContainer.nodeValue.length) {
+          endContainer = splitText(endContainer, endOffset).previousSibling;
+          endOffset = endContainer.nodeValue.length;
+        }
+      }
+      return {
+        startContainer: startContainer,
+        startOffset: startOffset,
+        endContainer: endContainer,
+        endOffset: endOffset
+      };
+    };
+
+    var isCollapsibleWhitespace = function (c) {
+      return ' \f\n\r\t\x0B'.indexOf(c) !== -1;
+    };
+    var normalizeContent = function (content, isStartOfContent, isEndOfContent) {
+      var result = foldl(content.split(''), function (acc, c) {
+        if (isCollapsibleWhitespace(c) || c === '\xA0') {
+          if (acc.previousCharIsSpace || acc.str === '' && isStartOfContent || acc.str.length === content.length - 1 && isEndOfContent) {
+            return {
+              previousCharIsSpace: false,
+              str: acc.str + '\xA0'
+            };
+          } else {
+            return {
+              previousCharIsSpace: true,
+              str: acc.str + ' '
+            };
+          }
+        } else {
+          return {
+            previousCharIsSpace: false,
+            str: acc.str + c
+          };
+        }
+      }, {
+        previousCharIsSpace: false,
+        str: ''
+      });
+      return result.str;
+    };
+    var normalize = function (node, offset, count) {
+      if (count === 0) {
+        return;
+      }
+      var whitespace = node.data.slice(offset, offset + count);
+      var isEndOfContent = offset + count >= node.data.length;
+      var isStartOfContent = offset === 0;
+      node.replaceData(offset, count, normalizeContent(whitespace, isStartOfContent, isEndOfContent));
+    };
+    var normalizeWhitespaceAfter = function (node, offset) {
+      var content = node.data.slice(offset);
+      var whitespaceCount = content.length - lTrim(content).length;
+      return normalize(node, offset, whitespaceCount);
+    };
+    var normalizeWhitespaceBefore = function (node, offset) {
+      var content = node.data.slice(0, offset);
+      var whitespaceCount = content.length - rTrim(content).length;
+      return normalize(node, offset - whitespaceCount, whitespaceCount);
+    };
+    var mergeTextNodes = function (prevNode, nextNode, normalizeWhitespace) {
+      var whitespaceOffset = rTrim(prevNode.data).length;
+      prevNode.appendData(nextNode.data);
+      remove$1(Element.fromDom(nextNode));
+      if (normalizeWhitespace) {
+        normalizeWhitespaceAfter(prevNode, whitespaceOffset);
+      }
+      return prevNode;
+    };
+
+    var ancestor$2 = function (scope, selector, isRoot) {
+      return ancestor$1(scope, selector, isRoot).isSome();
+    };
+
+    var hasWhitespacePreserveParent = function (rootNode, node) {
+      var rootElement = Element.fromDom(rootNode);
+      var startNode = Element.fromDom(node);
+      return ancestor$2(startNode, 'pre,code', curry(eq, rootElement));
+    };
+    var isWhitespace = function (rootNode, node) {
+      return NodeType.isText(node) && /^[ \t\r\n]*$/.test(node.data) && hasWhitespacePreserveParent(rootNode, node) === false;
+    };
+    var isNamedAnchor = function (node) {
+      return NodeType.isElement(node) && node.nodeName === 'A' && node.hasAttribute('name');
+    };
+    var isContent$1 = function (rootNode, node) {
+      return isCaretCandidate(node) && isWhitespace(rootNode, node) === false || isNamedAnchor(node) || isBookmark(node);
+    };
+    var isBookmark = NodeType.hasAttribute('data-mce-bookmark');
+    var isBogus$2 = NodeType.hasAttribute('data-mce-bogus');
+    var isBogusAll$1 = NodeType.hasAttributeValue('data-mce-bogus', 'all');
+    var isEmptyNode = function (targetNode) {
+      var node, brCount = 0;
+      if (isContent$1(targetNode, targetNode)) {
+        return false;
+      } else {
+        node = targetNode.firstChild;
+        if (!node) {
+          return true;
+        }
+        var walker = new TreeWalker(node, targetNode);
+        do {
+          if (isBogusAll$1(node)) {
+            node = walker.next(true);
+            continue;
+          }
+          if (isBogus$2(node)) {
+            node = walker.next();
+            continue;
+          }
+          if (NodeType.isBr(node)) {
+            brCount++;
+            node = walker.next();
+            continue;
+          }
+          if (isContent$1(targetNode, node)) {
+            return false;
+          }
+          node = walker.next();
+        } while (node);
+        return brCount <= 1;
+      }
+    };
+    var isEmpty$1 = function (elm) {
+      return isEmptyNode(elm.dom());
+    };
+    var Empty = { isEmpty: isEmpty$1 };
+
+    var needsReposition = function (pos, elm) {
+      var container = pos.container();
+      var offset = pos.offset();
+      return CaretPosition$1.isTextPosition(pos) === false && container === elm.parentNode && offset > CaretPosition$1.before(elm).offset();
+    };
+    var reposition = function (elm, pos) {
+      return needsReposition(pos, elm) ? CaretPosition$1(pos.container(), pos.offset() - 1) : pos;
+    };
+    var beforeOrStartOf = function (node) {
+      return NodeType.isText(node) ? CaretPosition$1(node, 0) : CaretPosition$1.before(node);
+    };
+    var afterOrEndOf = function (node) {
+      return NodeType.isText(node) ? CaretPosition$1(node, node.data.length) : CaretPosition$1.after(node);
+    };
+    var getPreviousSiblingCaretPosition = function (elm) {
+      if (isCaretCandidate(elm.previousSibling)) {
+        return Option.some(afterOrEndOf(elm.previousSibling));
+      } else {
+        return elm.previousSibling ? CaretFinder.lastPositionIn(elm.previousSibling) : Option.none();
+      }
+    };
+    var getNextSiblingCaretPosition = function (elm) {
+      if (isCaretCandidate(elm.nextSibling)) {
+        return Option.some(beforeOrStartOf(elm.nextSibling));
+      } else {
+        return elm.nextSibling ? CaretFinder.firstPositionIn(elm.nextSibling) : Option.none();
+      }
+    };
+    var findCaretPositionBackwardsFromElm = function (rootElement, elm) {
+      var startPosition = CaretPosition$1.before(elm.previousSibling ? elm.previousSibling : elm.parentNode);
+      return CaretFinder.prevPosition(rootElement, startPosition).fold(function () {
+        return CaretFinder.nextPosition(rootElement, CaretPosition$1.after(elm));
+      }, Option.some);
+    };
+    var findCaretPositionForwardsFromElm = function (rootElement, elm) {
+      return CaretFinder.nextPosition(rootElement, CaretPosition$1.after(elm)).fold(function () {
+        return CaretFinder.prevPosition(rootElement, CaretPosition$1.before(elm));
+      }, Option.some);
+    };
+    var findCaretPositionBackwards = function (rootElement, elm) {
+      return getPreviousSiblingCaretPosition(elm).orThunk(function () {
+        return getNextSiblingCaretPosition(elm);
+      }).orThunk(function () {
+        return findCaretPositionBackwardsFromElm(rootElement, elm);
+      });
+    };
+    var findCaretPositionForward = function (rootElement, elm) {
+      return getNextSiblingCaretPosition(elm).orThunk(function () {
+        return getPreviousSiblingCaretPosition(elm);
+      }).orThunk(function () {
+        return findCaretPositionForwardsFromElm(rootElement, elm);
+      });
+    };
+    var findCaretPosition$1 = function (forward, rootElement, elm) {
+      return forward ? findCaretPositionForward(rootElement, elm) : findCaretPositionBackwards(rootElement, elm);
+    };
+    var findCaretPosOutsideElmAfterDelete = function (forward, rootElement, elm) {
+      return findCaretPosition$1(forward, rootElement, elm).map(curry(reposition, elm));
+    };
+    var setSelection = function (editor, forward, pos) {
+      pos.fold(function () {
+        editor.focus();
+      }, function (pos) {
+        editor.selection.setRng(pos.toRange(), forward);
+      });
+    };
+    var eqRawNode = function (rawNode) {
+      return function (elm) {
+        return elm.dom() === rawNode;
+      };
+    };
+    var isBlock$2 = function (editor, elm) {
+      return elm && editor.schema.getBlockElements().hasOwnProperty(name(elm));
+    };
+    var paddEmptyBlock = function (elm) {
+      if (Empty.isEmpty(elm)) {
+        var br = Element.fromHtml('<br data-mce-bogus="1">');
+        empty(elm);
+        append(elm, br);
+        return Option.some(CaretPosition$1.before(br.dom()));
+      } else {
+        return Option.none();
+      }
+    };
+    var deleteNormalized = function (elm, afterDeletePosOpt, normalizeWhitespace) {
+      var prevTextOpt = prevSibling(elm).filter(function (e) {
+        return NodeType.isText(e.dom());
+      });
+      var nextTextOpt = nextSibling(elm).filter(function (e) {
+        return NodeType.isText(e.dom());
+      });
+      remove$1(elm);
+      return liftN([
+        prevTextOpt,
+        nextTextOpt,
+        afterDeletePosOpt
+      ], function (prev, next, pos) {
+        var prevNode = prev.dom(), nextNode = next.dom();
+        var offset = prevNode.data.length;
+        mergeTextNodes(prevNode, nextNode, normalizeWhitespace);
+        return pos.container() === nextNode ? CaretPosition$1(prevNode, offset) : pos;
+      }).orThunk(function () {
+        if (normalizeWhitespace) {
+          prevTextOpt.each(function (elm) {
+            return normalizeWhitespaceBefore(elm.dom(), elm.dom().length);
+          });
+          nextTextOpt.each(function (elm) {
+            return normalizeWhitespaceAfter(elm.dom(), 0);
+          });
+        }
+        return afterDeletePosOpt;
+      });
+    };
+    var isInlineElement = function (editor, element) {
+      return has(editor.schema.getTextInlineElements(), name(element));
+    };
+    var deleteElement = function (editor, forward, elm, moveCaret) {
+      if (moveCaret === void 0) {
+        moveCaret = true;
+      }
+      var afterDeletePos = findCaretPosOutsideElmAfterDelete(forward, editor.getBody(), elm.dom());
+      var parentBlock = ancestor(elm, curry(isBlock$2, editor), eqRawNode(editor.getBody()));
+      var normalizedAfterDeletePos = deleteNormalized(elm, afterDeletePos, isInlineElement(editor, elm));
+      if (editor.dom.isEmpty(editor.getBody())) {
+        editor.setContent('');
+        editor.selection.setCursorLocation();
+      } else {
+        parentBlock.bind(paddEmptyBlock).fold(function () {
+          if (moveCaret) {
+            setSelection(editor, forward, normalizedAfterDeletePos);
+          }
+        }, function (paddPos) {
+          if (moveCaret) {
+            setSelection(editor, forward, Option.some(paddPos));
+          }
+        });
+      }
+    };
+    var DeleteElement = { deleteElement: deleteElement };
+
+    var ZWSP$1 = Zwsp.ZWSP, CARET_ID$1 = '_mce_caret';
+    var importNode = function (ownerDocument, node) {
+      return ownerDocument.importNode(node, true);
+    };
+    var getEmptyCaretContainers = function (node) {
+      var nodes = [];
+      while (node) {
+        if (node.nodeType === 3 && node.nodeValue !== ZWSP$1 || node.childNodes.length > 1) {
+          return [];
+        }
+        if (node.nodeType === 1) {
+          nodes.push(node);
+        }
+        node = node.firstChild;
+      }
+      return nodes;
+    };
+    var isCaretContainerEmpty = function (node) {
+      return getEmptyCaretContainers(node).length > 0;
+    };
+    var findFirstTextNode = function (node) {
+      if (node) {
+        var walker = new TreeWalker(node, node);
+        for (node = walker.current(); node; node = walker.next()) {
+          if (node.nodeType === 3) {
+            return node;
+          }
+        }
+      }
+      return null;
+    };
+    var createCaretContainer = function (fill) {
+      var caretContainer = Element.fromTag('span');
+      setAll(caretContainer, {
+        'id': CARET_ID$1,
+        'data-mce-bogus': '1',
+        'data-mce-type': 'format-caret'
+      });
+      if (fill) {
+        append(caretContainer, Element.fromText(ZWSP$1));
+      }
+      return caretContainer;
+    };
+    var trimZwspFromCaretContainer = function (caretContainerNode) {
+      var textNode = findFirstTextNode(caretContainerNode);
+      if (textNode && textNode.nodeValue.charAt(0) === ZWSP$1) {
+        textNode.deleteData(0, 1);
+      }
+      return textNode;
+    };
+    var removeCaretContainerNode = function (editor, node, moveCaret) {
+      if (moveCaret === void 0) {
+        moveCaret = true;
+      }
+      var dom = editor.dom, selection = editor.selection;
+      if (isCaretContainerEmpty(node)) {
+        DeleteElement.deleteElement(editor, false, Element.fromDom(node), moveCaret);
+      } else {
+        var rng = selection.getRng();
+        var block = dom.getParent(node, dom.isBlock);
+        var textNode = trimZwspFromCaretContainer(node);
+        if (rng.startContainer === textNode && rng.startOffset > 0) {
+          rng.setStart(textNode, rng.startOffset - 1);
+        }
+        if (rng.endContainer === textNode && rng.endOffset > 0) {
+          rng.setEnd(textNode, rng.endOffset - 1);
+        }
+        dom.remove(node, true);
+        if (block && dom.isEmpty(block)) {
+          PaddingBr.fillWithPaddingBr(Element.fromDom(block));
+        }
+        selection.setRng(rng);
+      }
+    };
+    var removeCaretContainer = function (editor, node, moveCaret) {
+      if (moveCaret === void 0) {
+        moveCaret = true;
+      }
+      var dom = editor.dom, selection = editor.selection;
+      if (!node) {
+        node = getParentCaretContainer(editor.getBody(), selection.getStart());
+        if (!node) {
+          while (node = dom.get(CARET_ID$1)) {
+            removeCaretContainerNode(editor, node, false);
+          }
+        }
+      } else {
+        removeCaretContainerNode(editor, node, moveCaret);
+      }
+    };
+    var insertCaretContainerNode = function (editor, caretContainer, formatNode) {
+      var dom = editor.dom, block = dom.getParent(formatNode, curry(FormatUtils.isTextBlock, editor));
+      if (block && dom.isEmpty(block)) {
+        formatNode.parentNode.replaceChild(caretContainer, formatNode);
+      } else {
+        PaddingBr.removeTrailingBr(Element.fromDom(formatNode));
+        if (dom.isEmpty(formatNode)) {
+          formatNode.parentNode.replaceChild(caretContainer, formatNode);
+        } else {
+          dom.insertAfter(caretContainer, formatNode);
+        }
+      }
+    };
+    var appendNode = function (parentNode, node) {
+      parentNode.appendChild(node);
+      return node;
+    };
+    var insertFormatNodesIntoCaretContainer = function (formatNodes, caretContainer) {
+      var innerMostFormatNode = foldr(formatNodes, function (parentNode, formatNode) {
+        return appendNode(parentNode, formatNode.cloneNode(false));
+      }, caretContainer);
+      return appendNode(innerMostFormatNode, innerMostFormatNode.ownerDocument.createTextNode(ZWSP$1));
+    };
+    var applyCaretFormat = function (editor, name, vars) {
+      var rng, caretContainer, textNode, offset, bookmark, container, text;
+      var selection = editor.selection;
+      rng = selection.getRng();
+      offset = rng.startOffset;
+      container = rng.startContainer;
+      text = container.nodeValue;
+      caretContainer = getParentCaretContainer(editor.getBody(), selection.getStart());
+      if (caretContainer) {
+        textNode = findFirstTextNode(caretContainer);
+      }
+      var wordcharRegex = /[^\s\u00a0\u00ad\u200b\ufeff]/;
+      if (text && offset > 0 && offset < text.length && wordcharRegex.test(text.charAt(offset)) && wordcharRegex.test(text.charAt(offset - 1))) {
+        bookmark = selection.getBookmark();
+        rng.collapse(true);
+        rng = ExpandRange.expandRng(editor, rng, editor.formatter.get(name));
+        rng = split$1(rng);
+        editor.formatter.apply(name, vars, rng);
+        selection.moveToBookmark(bookmark);
+      } else {
+        if (!caretContainer || textNode.nodeValue !== ZWSP$1) {
+          caretContainer = importNode(editor.getDoc(), createCaretContainer(true).dom());
+          textNode = caretContainer.firstChild;
+          rng.insertNode(caretContainer);
+          offset = 1;
+          editor.formatter.apply(name, vars, caretContainer);
+        } else {
+          editor.formatter.apply(name, vars, caretContainer);
+        }
+        selection.setCursorLocation(textNode, offset);
+      }
+    };
+    var removeCaretFormat = function (editor, name, vars, similar) {
+      var dom = editor.dom, selection = editor.selection;
+      var container, offset, bookmark;
+      var hasContentAfter, node, formatNode;
+      var parents = [], rng = selection.getRng();
+      var caretContainer;
+      container = rng.startContainer;
+      offset = rng.startOffset;
+      node = container;
+      if (container.nodeType === 3) {
+        if (offset !== container.nodeValue.length) {
+          hasContentAfter = true;
+        }
+        node = node.parentNode;
+      }
+      while (node) {
+        if (MatchFormat.matchNode(editor, node, name, vars, similar)) {
+          formatNode = node;
+          break;
+        }
+        if (node.nextSibling) {
+          hasContentAfter = true;
+        }
+        parents.push(node);
+        node = node.parentNode;
+      }
+      if (!formatNode) {
+        return;
+      }
+      if (hasContentAfter) {
+        bookmark = selection.getBookmark();
+        rng.collapse(true);
+        var expandedRng = ExpandRange.expandRng(editor, rng, editor.formatter.get(name), true);
+        expandedRng = split$1(expandedRng);
+        editor.formatter.remove(name, vars, expandedRng);
+        selection.moveToBookmark(bookmark);
+      } else {
+        caretContainer = getParentCaretContainer(editor.getBody(), formatNode);
+        var newCaretContainer = createCaretContainer(false).dom();
+        var caretNode = insertFormatNodesIntoCaretContainer(parents, newCaretContainer);
+        if (caretContainer) {
+          insertCaretContainerNode(editor, newCaretContainer, caretContainer);
+        } else {
+          insertCaretContainerNode(editor, newCaretContainer, formatNode);
+        }
+        removeCaretContainerNode(editor, caretContainer, false);
+        selection.setCursorLocation(caretNode, 1);
+        if (dom.isEmpty(formatNode)) {
+          dom.remove(formatNode);
+        }
+      }
+    };
+    var disableCaretContainer = function (editor, keyCode) {
+      var selection = editor.selection, body = editor.getBody();
+      removeCaretContainer(editor, null, false);
+      if ((keyCode === 8 || keyCode === 46) && selection.isCollapsed() && selection.getStart().innerHTML === ZWSP$1) {
+        removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart()));
+      }
+      if (keyCode === 37 || keyCode === 39) {
+        removeCaretContainer(editor, getParentCaretContainer(body, selection.getStart()));
+      }
+    };
+    var setup$4 = function (editor) {
+      editor.on('mouseup keydown', function (e) {
+        disableCaretContainer(editor, e.keyCode);
+      });
+    };
+    var replaceWithCaretFormat = function (targetNode, formatNodes) {
+      var caretContainer = createCaretContainer(false);
+      var innerMost = insertFormatNodesIntoCaretContainer(formatNodes, caretContainer.dom());
+      before(Element.fromDom(targetNode), caretContainer);
+      remove$1(Element.fromDom(targetNode));
+      return CaretPosition$1(innerMost, 0);
+    };
+    var isFormatElement = function (editor, element) {
+      var inlineElements = editor.schema.getTextInlineElements();
+      return inlineElements.hasOwnProperty(name(element)) && !isCaretNode(element.dom()) && !NodeType.isBogus(element.dom());
+    };
+    var isEmptyCaretFormatElement = function (element) {
+      return isCaretNode(element.dom()) && isCaretContainerEmpty(element.dom());
+    };
+
+    var postProcessHooks = {}, filter$3 = ArrUtils.filter, each$9 = ArrUtils.each;
+    var addPostProcessHook = function (name, hook) {
+      var hooks = postProcessHooks[name];
+      if (!hooks) {
+        postProcessHooks[name] = hooks = [];
+      }
+      postProcessHooks[name].push(hook);
+    };
+    var postProcess = function (name, editor) {
+      each$9(postProcessHooks[name], function (hook) {
+        hook(editor);
+      });
+    };
+    addPostProcessHook('pre', function (editor) {
+      var rng = editor.selection.getRng();
+      var isPre, blocks;
+      var hasPreSibling = function (pre) {
+        return isPre(pre.previousSibling) && ArrUtils.indexOf(blocks, pre.previousSibling) !== -1;
+      };
+      var joinPre = function (pre1, pre2) {
+        DomQuery(pre2).remove();
+        DomQuery(pre1).append('<br><br>').append(pre2.childNodes);
+      };
+      isPre = NodeType.matchNodeNames('pre');
+      if (!rng.collapsed) {
+        blocks = editor.selection.getSelectedBlocks();
+        each$9(filter$3(filter$3(blocks, isPre), hasPreSibling), function (pre) {
+          joinPre(pre.previousSibling, pre);
+        });
+      }
+    });
+    var Hooks = { postProcess: postProcess };
+
+    var each$a = Tools.each;
+    var ElementUtils = function (dom) {
+      this.compare = function (node1, node2) {
+        if (node1.nodeName !== node2.nodeName) {
+          return false;
+        }
+        var getAttribs = function (node) {
+          var attribs = {};
+          each$a(dom.getAttribs(node), function (attr) {
+            var name = attr.nodeName.toLowerCase();
+            if (name.indexOf('_') !== 0 && name !== 'style' && name.indexOf('data-') !== 0) {
+              attribs[name] = dom.getAttrib(node, name);
+            }
+          });
+          return attribs;
+        };
+        var compareObjects = function (obj1, obj2) {
+          var value, name;
+          for (name in obj1) {
+            if (obj1.hasOwnProperty(name)) {
+              value = obj2[name];
+              if (typeof value === 'undefined') {
+                return false;
+              }
+              if (obj1[name] !== value) {
+                return false;
+              }
+              delete obj2[name];
+            }
+          }
+          for (name in obj2) {
+            if (obj2.hasOwnProperty(name)) {
+              return false;
+            }
+          }
+          return true;
+        };
+        if (!compareObjects(getAttribs(node1), getAttribs(node2))) {
+          return false;
+        }
+        if (!compareObjects(dom.parseStyle(dom.getAttrib(node1, 'style')), dom.parseStyle(dom.getAttrib(node2, 'style')))) {
+          return false;
+        }
+        return !Bookmarks.isBookmarkNode(node1) && !Bookmarks.isBookmarkNode(node2);
+      };
+    };
+
+    var MCE_ATTR_RE = /^(src|href|style)$/;
+    var each$b = Tools.each;
+    var isEq$4 = FormatUtils.isEq;
+    var isTableCell$2 = function (node) {
+      return /^(TH|TD)$/.test(node.nodeName);
+    };
+    var isChildOfInlineParent = function (dom, node, parent) {
+      return dom.isChildOf(node, parent) && node !== parent && !dom.isBlock(parent);
+    };
+    var getContainer = function (ed, rng, start) {
+      var container, offset, lastIdx;
+      container = rng[start ? 'startContainer' : 'endContainer'];
+      offset = rng[start ? 'startOffset' : 'endOffset'];
+      if (NodeType.isElement(container)) {
+        lastIdx = container.childNodes.length - 1;
+        if (!start && offset) {
+          offset--;
+        }
+        container = container.childNodes[offset > lastIdx ? lastIdx : offset];
+      }
+      if (NodeType.isText(container) && start && offset >= container.nodeValue.length) {
+        container = new TreeWalker(container, ed.getBody()).next() || container;
+      }
+      if (NodeType.isText(container) && !start && offset === 0) {
+        container = new TreeWalker(container, ed.getBody()).prev() || container;
+      }
+      return container;
+    };
+    var wrap$2 = function (dom, node, name, attrs) {
+      var wrapper = dom.create(name, attrs);
+      node.parentNode.insertBefore(wrapper, node);
+      wrapper.appendChild(node);
+      return wrapper;
+    };
+    var wrapWithSiblings = function (dom, node, next, name, attrs) {
+      var start = Element.fromDom(node);
+      var wrapper = Element.fromDom(dom.create(name, attrs));
+      var siblings = next ? nextSiblings(start) : prevSiblings(start);
+      append$1(wrapper, siblings);
+      if (next) {
+        before(start, wrapper);
+        prepend(wrapper, start);
+      } else {
+        after(start, wrapper);
+        append(wrapper, start);
+      }
+      return wrapper.dom();
+    };
+    var matchName$1 = function (dom, node, format) {
+      if (isEq$4(node, format.inline)) {
+        return true;
+      }
+      if (isEq$4(node, format.block)) {
+        return true;
+      }
+      if (format.selector) {
+        return NodeType.isElement(node) && dom.is(node, format.selector);
+      }
+    };
+    var isColorFormatAndAnchor = function (node, format) {
+      return format.links && node.tagName === 'A';
+    };
+    var find$3 = function (dom, node, next, inc) {
+      node = FormatUtils.getNonWhiteSpaceSibling(node, next, inc);
+      return !node || (node.nodeName === 'BR' || dom.isBlock(node));
+    };
+    var removeNode$1 = function (ed, node, format) {
+      var parentNode = node.parentNode;
+      var rootBlockElm;
+      var dom = ed.dom, forcedRootBlock = Settings.getForcedRootBlock(ed);
+      if (format.block) {
+        if (!forcedRootBlock) {
+          if (dom.isBlock(node) && !dom.isBlock(parentNode)) {
+            if (!find$3(dom, node, false) && !find$3(dom, node.firstChild, true, 1)) {
+              node.insertBefore(dom.create('br'), node.firstChild);
+            }
+            if (!find$3(dom, node, true) && !find$3(dom, node.lastChild, false, 1)) {
+              node.appendChild(dom.create('br'));
+            }
+          }
+        } else {
+          if (parentNode === dom.getRoot()) {
+            if (!format.list_block || !isEq$4(node, format.list_block)) {
+              each$b(Tools.grep(node.childNodes), function (node) {
+                if (FormatUtils.isValid(ed, forcedRootBlock, node.nodeName.toLowerCase())) {
+                  if (!rootBlockElm) {
+                    rootBlockElm = wrap$2(dom, node, forcedRootBlock);
+                    dom.setAttribs(rootBlockElm, ed.settings.forced_root_block_attrs);
+                  } else {
+                    rootBlockElm.appendChild(node);
+                  }
+                } else {
+                  rootBlockElm = 0;
+                }
+              });
+            }
+          }
+        }
+      }
+      if (format.selector && format.inline && !isEq$4(format.inline, node)) {
+        return;
+      }
+      dom.remove(node, 1);
+    };
+    var removeFormat = function (ed, format, vars, node, compareNode) {
+      var i, attrs, stylesModified;
+      var dom = ed.dom;
+      if (!matchName$1(dom, node, format) && !isColorFormatAndAnchor(node, format)) {
+        return false;
+      }
+      if (format.remove !== 'all') {
+        each$b(format.styles, function (value, name) {
+          value = FormatUtils.normalizeStyleValue(dom, FormatUtils.replaceVars(value, vars), name);
+          if (typeof name === 'number') {
+            name = value;
+            compareNode = 0;
+          }
+          if (format.remove_similar || (!compareNode || isEq$4(FormatUtils.getStyle(dom, compareNode, name), value))) {
+            dom.setStyle(node, name, '');
+          }
+          stylesModified = 1;
+        });
+        if (stylesModified && dom.getAttrib(node, 'style') === '') {
+          node.removeAttribute('style');
+          node.removeAttribute('data-mce-style');
+        }
+        each$b(format.attributes, function (value, name) {
+          var valueOut;
+          value = FormatUtils.replaceVars(value, vars);
+          if (typeof name === 'number') {
+            name = value;
+            compareNode = 0;
+          }
+          if (!compareNode || isEq$4(dom.getAttrib(compareNode, name), value)) {
+            if (name === 'class') {
+              value = dom.getAttrib(node, name);
+              if (value) {
+                valueOut = '';
+                each$b(value.split(/\s+/), function (cls) {
+                  if (/mce\-\w+/.test(cls)) {
+                    valueOut += (valueOut ? ' ' : '') + cls;
+                  }
+                });
+                if (valueOut) {
+                  dom.setAttrib(node, name, valueOut);
+                  return;
+                }
+              }
+            }
+            if (name === 'class') {
+              node.removeAttribute('className');
+            }
+            if (MCE_ATTR_RE.test(name)) {
+              node.removeAttribute('data-mce-' + name);
+            }
+            node.removeAttribute(name);
+          }
+        });
+        each$b(format.classes, function (value) {
+          value = FormatUtils.replaceVars(value, vars);
+          if (!compareNode || dom.hasClass(compareNode, value)) {
+            dom.removeClass(node, value);
+          }
+        });
+        attrs = dom.getAttribs(node);
+        for (i = 0; i < attrs.length; i++) {
+          var attrName = attrs[i].nodeName;
+          if (attrName.indexOf('_') !== 0 && attrName.indexOf('data-') !== 0) {
+            return false;
+          }
+        }
+      }
+      if (format.remove !== 'none') {
+        removeNode$1(ed, node, format);
+        return true;
+      }
+    };
+    var findFormatRoot = function (editor, container, name, vars, similar) {
+      var formatRoot;
+      each$b(FormatUtils.getParents(editor.dom, container.parentNode).reverse(), function (parent) {
+        var format;
+        if (!formatRoot && parent.id !== '_start' && parent.id !== '_end') {
+          format = MatchFormat.matchNode(editor, parent, name, vars, similar);
+          if (format && format.split !== false) {
+            formatRoot = parent;
+          }
+        }
+      });
+      return formatRoot;
+    };
+    var wrapAndSplit = function (editor, formatList, formatRoot, container, target, split, format, vars) {
+      var parent, clone, lastClone, firstClone, i, formatRootParent;
+      var dom = editor.dom;
+      if (formatRoot) {
+        formatRootParent = formatRoot.parentNode;
+        for (parent = container.parentNode; parent && parent !== formatRootParent; parent = parent.parentNode) {
+          clone = dom.clone(parent, false);
+          for (i = 0; i < formatList.length; i++) {
+            if (removeFormat(editor, formatList[i], vars, clone, clone)) {
+              clone = 0;
+              break;
+            }
+          }
+          if (clone) {
+            if (lastClone) {
+              clone.appendChild(lastClone);
+            }
+            if (!firstClone) {
+              firstClone = clone;
+            }
+            lastClone = clone;
+          }
+        }
+        if (split && (!format.mixed || !dom.isBlock(formatRoot))) {
+          container = dom.split(formatRoot, container);
+        }
+        if (lastClone) {
+          target.parentNode.insertBefore(lastClone, target);
+          firstClone.appendChild(target);
+        }
+      }
+      return container;
+    };
+    var remove$7 = function (ed, name, vars, node, similar) {
+      var formatList = ed.formatter.get(name), format = formatList[0];
+      var bookmark, rng, contentEditable = true;
+      var dom = ed.dom;
+      var selection = ed.selection;
+      var splitToFormatRoot = function (container) {
+        var formatRoot = findFormatRoot(ed, container, name, vars, similar);
+        return wrapAndSplit(ed, formatList, formatRoot, container, container, true, format, vars);
+      };
+      var isRemoveBookmarkNode = function (node) {
+        return Bookmarks.isBookmarkNode(node) && NodeType.isElement(node) && (node.id === '_start' || node.id === '_end');
+      };
+      var process = function (node) {
+        var children, i, l, lastContentEditable, hasContentEditableState;
+        if (NodeType.isElement(node) && dom.getContentEditable(node)) {
+          lastContentEditable = contentEditable;
+          contentEditable = dom.getContentEditable(node) === 'true';
+          hasContentEditableState = true;
+        }
+        children = Tools.grep(node.childNodes);
+        if (contentEditable && !hasContentEditableState) {
+          for (i = 0, l = formatList.length; i < l; i++) {
+            if (removeFormat(ed, formatList[i], vars, node, node)) {
+              break;
+            }
+          }
+        }
+        if (format.deep) {
+          if (children.length) {
+            for (i = 0, l = children.length; i < l; i++) {
+              process(children[i]);
+            }
+            if (hasContentEditableState) {
+              contentEditable = lastContentEditable;
+            }
+          }
+        }
+      };
+      var unwrap = function (start) {
+        var node = dom.get(start ? '_start' : '_end');
+        var out = node[start ? 'firstChild' : 'lastChild'];
+        if (isRemoveBookmarkNode(out)) {
+          out = out[start ? 'firstChild' : 'lastChild'];
+        }
+        if (NodeType.isText(out) && out.data.length === 0) {
+          out = start ? node.previousSibling || node.nextSibling : node.nextSibling || node.previousSibling;
+        }
+        dom.remove(node, true);
+        return out;
+      };
+      var removeRngStyle = function (rng) {
+        var startContainer, endContainer;
+        var commonAncestorContainer = rng.commonAncestorContainer;
+        rng = ExpandRange.expandRng(ed, rng, formatList, true);
+        if (format.split) {
+          rng = split$1(rng);
+          startContainer = getContainer(ed, rng, true);
+          endContainer = getContainer(ed, rng);
+          if (startContainer !== endContainer) {
+            if (/^(TR|TH|TD)$/.test(startContainer.nodeName) && startContainer.firstChild) {
+              if (startContainer.nodeName === 'TR') {
+                startContainer = startContainer.firstChild.firstChild || startContainer;
+              } else {
+                startContainer = startContainer.firstChild || startContainer;
+              }
+            }
+            if (commonAncestorContainer && /^T(HEAD|BODY|FOOT|R)$/.test(commonAncestorContainer.nodeName) && isTableCell$2(endContainer) && endContainer.firstChild) {
+              endContainer = endContainer.firstChild || endContainer;
+            }
+            if (isChildOfInlineParent(dom, startContainer, endContainer)) {
+              var marker = Option.from(startContainer.firstChild).getOr(startContainer);
+              splitToFormatRoot(wrapWithSiblings(dom, marker, true, 'span', {
+                'id': '_start',
+                'data-mce-type': 'bookmark'
+              }));
+              unwrap(true);
+              return;
+            }
+            if (isChildOfInlineParent(dom, endContainer, startContainer)) {
+              var marker = Option.from(endContainer.lastChild).getOr(endContainer);
+              splitToFormatRoot(wrapWithSiblings(dom, marker, false, 'span', {
+                'id': '_end',
+                'data-mce-type': 'bookmark'
+              }));
+              unwrap(false);
+              return;
+            }
+            startContainer = wrap$2(dom, startContainer, 'span', {
+              'id': '_start',
+              'data-mce-type': 'bookmark'
+            });
+            endContainer = wrap$2(dom, endContainer, 'span', {
+              'id': '_end',
+              'data-mce-type': 'bookmark'
+            });
+            splitToFormatRoot(startContainer);
+            splitToFormatRoot(endContainer);
+            startContainer = unwrap(true);
+            endContainer = unwrap();
+          } else {
+            startContainer = endContainer = splitToFormatRoot(startContainer);
+          }
+          rng.startContainer = startContainer.parentNode ? startContainer.parentNode : startContainer;
+          rng.startOffset = dom.nodeIndex(startContainer);
+          rng.endContainer = endContainer.parentNode ? endContainer.parentNode : endContainer;
+          rng.endOffset = dom.nodeIndex(endContainer) + 1;
+        }
+        RangeWalk.walk(dom, rng, function (nodes) {
+          each$b(nodes, function (node) {
+            process(node);
+            if (NodeType.isElement(node) && ed.dom.getStyle(node, 'text-decoration') === 'underline' && node.parentNode && FormatUtils.getTextDecoration(dom, node.parentNode) === 'underline') {
+              removeFormat(ed, {
+                deep: false,
+                exact: true,
+                inline: 'span',
+                styles: { textDecoration: 'underline' }
+              }, null, node);
+            }
+          });
+        });
+      };
+      if (node) {
+        if (node.nodeType) {
+          rng = dom.createRng();
+          rng.setStartBefore(node);
+          rng.setEndAfter(node);
+          removeRngStyle(rng);
+        } else {
+          removeRngStyle(node);
+        }
+        return;
+      }
+      if (dom.getContentEditable(selection.getNode()) === 'false') {
+        node = selection.getNode();
+        for (var i = 0, l = formatList.length; i < l; i++) {
+          if (formatList[i].ceFalseOverride) {
+            if (removeFormat(ed, formatList[i], vars, node, node)) {
+              break;
+            }
+          }
+        }
+        return;
+      }
+      if (!selection.isCollapsed() || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) {
+        bookmark = GetBookmark.getPersistentBookmark(ed.selection, true);
+        removeRngStyle(selection.getRng());
+        selection.moveToBookmark(bookmark);
+        if (format.inline && MatchFormat.match(ed, name, vars, selection.getStart())) {
+          FormatUtils.moveStart(dom, selection, selection.getRng());
+        }
+        ed.nodeChanged();
+      } else {
+        removeCaretFormat(ed, name, vars, similar);
+      }
+    };
+    var RemoveFormat = {
+      removeFormat: removeFormat,
+      remove: remove$7
+    };
+
+    var each$c = Tools.each;
+    var isElementNode = function (node) {
+      return node && node.nodeType === 1 && !Bookmarks.isBookmarkNode(node) && !isCaretNode(node) && !NodeType.isBogus(node);
+    };
+    var findElementSibling = function (node, siblingName) {
+      var sibling;
+      for (sibling = node; sibling; sibling = sibling[siblingName]) {
+        if (sibling.nodeType === 3 && sibling.nodeValue.length !== 0) {
+          return node;
+        }
+        if (sibling.nodeType === 1 && !Bookmarks.isBookmarkNode(sibling)) {
+          return sibling;
+        }
+      }
+      return node;
+    };
+    var mergeSiblingsNodes = function (dom, prev, next) {
+      var sibling, tmpSibling;
+      var elementUtils = new ElementUtils(dom);
+      if (prev && next) {
+        prev = findElementSibling(prev, 'previousSibling');
+        next = findElementSibling(next, 'nextSibling');
+        if (elementUtils.compare(prev, next)) {
+          for (sibling = prev.nextSibling; sibling && sibling !== next;) {
+            tmpSibling = sibling;
+            sibling = sibling.nextSibling;
+            prev.appendChild(tmpSibling);
+          }
+          dom.remove(next);
+          Tools.each(Tools.grep(next.childNodes), function (node) {
+            prev.appendChild(node);
+          });
+          return prev;
+        }
+      }
+      return next;
+    };
+    var processChildElements = function (node, filter, process) {
+      each$c(node.childNodes, function (node) {
+        if (isElementNode(node)) {
+          if (filter(node)) {
+            process(node);
+          }
+          if (node.hasChildNodes()) {
+            processChildElements(node, filter, process);
+          }
+        }
+      });
+    };
+    var hasStyle = function (dom, name) {
+      return curry(function (name, node) {
+        return !!(node && FormatUtils.getStyle(dom, node, name));
+      }, name);
+    };
+    var applyStyle = function (dom, name, value) {
+      return curry(function (name, value, node) {
+        dom.setStyle(node, name, value);
+        if (node.getAttribute('style') === '') {
+          node.removeAttribute('style');
+        }
+        unwrapEmptySpan(dom, node);
+      }, name, value);
+    };
+    var unwrapEmptySpan = function (dom, node) {
+      if (node.nodeName === 'SPAN' && dom.getAttribs(node).length === 0) {
+        dom.remove(node, true);
+      }
+    };
+    var processUnderlineAndColor = function (dom, node) {
+      var textDecoration;
+      if (node.nodeType === 1 && node.parentNode && node.parentNode.nodeType === 1) {
+        textDecoration = FormatUtils.getTextDecoration(dom, node.parentNode);
+        if (dom.getStyle(node, 'color') && textDecoration) {
+          dom.setStyle(node, 'text-decoration', textDecoration);
+        } else if (dom.getStyle(node, 'text-decoration') === textDecoration) {
+          dom.setStyle(node, 'text-decoration', null);
+        }
+      }
+    };
+    var mergeUnderlineAndColor = function (dom, format, vars, node) {
+      if (format.styles.color || format.styles.textDecoration) {
+        Tools.walk(node, curry(processUnderlineAndColor, dom), 'childNodes');
+        processUnderlineAndColor(dom, node);
+      }
+    };
+    var mergeBackgroundColorAndFontSize = function (dom, format, vars, node) {
+      if (format.styles && format.styles.backgroundColor) {
+        processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'backgroundColor', FormatUtils.replaceVars(format.styles.backgroundColor, vars)));
+      }
+    };
+    var mergeSubSup = function (dom, format, vars, node) {
+      if (format.inline === 'sub' || format.inline === 'sup') {
+        processChildElements(node, hasStyle(dom, 'fontSize'), applyStyle(dom, 'fontSize', ''));
+        dom.remove(dom.select(format.inline === 'sup' ? 'sub' : 'sup', node), true);
+      }
+    };
+    var mergeSiblings = function (dom, format, vars, node) {
+      if (node && format.merge_siblings !== false) {
+        node = mergeSiblingsNodes(dom, FormatUtils.getNonWhiteSpaceSibling(node), node);
+        node = mergeSiblingsNodes(dom, node, FormatUtils.getNonWhiteSpaceSibling(node, true));
+      }
+    };
+    var clearChildStyles = function (dom, format, node) {
+      if (format.clear_child_styles) {
+        var selector = format.links ? '*:not(a)' : '*';
+        each$c(dom.select(selector, node), function (node) {
+          if (isElementNode(node)) {
+            each$c(format.styles, function (value, name) {
+              dom.setStyle(node, name, '');
+            });
+          }
+        });
+      }
+    };
+    var mergeWithChildren = function (editor, formatList, vars, node) {
+      each$c(formatList, function (format) {
+        each$c(editor.dom.select(format.inline, node), function (child) {
+          if (!isElementNode(child)) {
+            return;
+          }
+          RemoveFormat.removeFormat(editor, format, vars, child, format.exact ? child : null);
+        });
+        clearChildStyles(editor.dom, format, node);
+      });
+    };
+    var mergeWithParents = function (editor, format, name, vars, node) {
+      if (MatchFormat.matchNode(editor, node.parentNode, name, vars)) {
+        if (RemoveFormat.removeFormat(editor, format, vars, node)) {
+          return;
+        }
+      }
+      if (format.merge_with_parents) {
+        editor.dom.getParent(node.parentNode, function (parent) {
+          if (MatchFormat.matchNode(editor, parent, name, vars)) {
+            RemoveFormat.removeFormat(editor, format, vars, node);
+            return true;
+          }
+        });
+      }
+    };
+    var MergeFormats = {
+      mergeWithChildren: mergeWithChildren,
+      mergeUnderlineAndColor: mergeUnderlineAndColor,
+      mergeBackgroundColorAndFontSize: mergeBackgroundColorAndFontSize,
+      mergeSubSup: mergeSubSup,
+      mergeSiblings: mergeSiblings,
+      mergeWithParents: mergeWithParents
+    };
+
+    var createRange$1 = function (sc, so, ec, eo) {
+      var rng = domGlobals.document.createRange();
+      rng.setStart(sc, so);
+      rng.setEnd(ec, eo);
+      return rng;
+    };
+    var normalizeBlockSelectionRange = function (rng) {
+      var startPos = CaretPosition$1.fromRangeStart(rng);
+      var endPos = CaretPosition$1.fromRangeEnd(rng);
+      var rootNode = rng.commonAncestorContainer;
+      return CaretFinder.fromPosition(false, rootNode, endPos).map(function (newEndPos) {
+        if (!isInSameBlock(startPos, endPos, rootNode) && isInSameBlock(startPos, newEndPos, rootNode)) {
+          return createRange$1(startPos.container(), startPos.offset(), newEndPos.container(), newEndPos.offset());
+        } else {
+          return rng;
+        }
+      }).getOr(rng);
+    };
+    var normalize$1 = function (rng) {
+      return rng.collapsed ? rng : normalizeBlockSelectionRange(rng);
+    };
+    var RangeNormalizer = { normalize: normalize$1 };
+
+    var each$d = Tools.each;
+    var isElementNode$1 = function (node) {
+      return node && node.nodeType === 1 && !Bookmarks.isBookmarkNode(node) && !isCaretNode(node) && !NodeType.isBogus(node);
+    };
+    var applyFormat = function (ed, name, vars, node) {
+      var formatList = ed.formatter.get(name);
+      var format = formatList[0];
+      var bookmark, rng;
+      var isCollapsed = !node && ed.selection.isCollapsed();
+      var dom = ed.dom, selection = ed.selection;
+      var setElementFormat = function (elm, fmt) {
+        fmt = fmt || format;
+        if (elm) {
+          if (fmt.onformat) {
+            fmt.onformat(elm, fmt, vars, node);
+          }
+          each$d(fmt.styles, function (value, name) {
+            dom.setStyle(elm, name, FormatUtils.replaceVars(value, vars));
+          });
+          if (fmt.styles) {
+            var styleVal = dom.getAttrib(elm, 'style');
+            if (styleVal) {
+              elm.setAttribute('data-mce-style', styleVal);
+            }
+          }
+          each$d(fmt.attributes, function (value, name) {
+            dom.setAttrib(elm, name, FormatUtils.replaceVars(value, vars));
+          });
+          each$d(fmt.classes, function (value) {
+            value = FormatUtils.replaceVars(value, vars);
+            if (!dom.hasClass(elm, value)) {
+              dom.addClass(elm, value);
+            }
+          });
+        }
+      };
+      var applyNodeStyle = function (formatList, node) {
+        var found = false;
+        if (!format.selector) {
+          return false;
+        }
+        each$d(formatList, function (format) {
+          if ('collapsed' in format && format.collapsed !== isCollapsed) {
+            return;
+          }
+          if (dom.is(node, format.selector) && !isCaretNode(node)) {
+            setElementFormat(node, format);
+            found = true;
+            return false;
+          }
+        });
+        return found;
+      };
+      var applyRngStyle = function (dom, rng, bookmark, nodeSpecific) {
+        var newWrappers = [];
+        var wrapName, wrapElm, contentEditable = true;
+        wrapName = format.inline || format.block;
+        wrapElm = dom.create(wrapName);
+        setElementFormat(wrapElm);
+        RangeWalk.walk(dom, rng, function (nodes) {
+          var currentWrapElm;
+          var process = function (node) {
+            var nodeName, parentName, hasContentEditableState, lastContentEditable;
+            lastContentEditable = contentEditable;
+            nodeName = node.nodeName.toLowerCase();
+            parentName = node.parentNode.nodeName.toLowerCase();
+            if (node.nodeType === 1 && dom.getContentEditable(node)) {
+              lastContentEditable = contentEditable;
+              contentEditable = dom.getContentEditable(node) === 'true';
+              hasContentEditableState = true;
+            }
+            if (FormatUtils.isEq(nodeName, 'br')) {
+              currentWrapElm = 0;
+              if (format.block) {
+                dom.remove(node);
+              }
+              return;
+            }
+            if (format.wrapper && MatchFormat.matchNode(ed, node, name, vars)) {
+              currentWrapElm = 0;
+              return;
+            }
+            if (contentEditable && !hasContentEditableState && format.block && !format.wrapper && FormatUtils.isTextBlock(ed, nodeName) && FormatUtils.isValid(ed, parentName, wrapName)) {
+              node = dom.rename(node, wrapName);
+              setElementFormat(node);
+              newWrappers.push(node);
+              currentWrapElm = 0;
+              return;
+            }
+            if (format.selector) {
+              var found = applyNodeStyle(formatList, node);
+              if (!format.inline || found) {
+                currentWrapElm = 0;
+                return;
+              }
+            }
+            if (contentEditable && !hasContentEditableState && FormatUtils.isValid(ed, wrapName, nodeName) && FormatUtils.isValid(ed, parentName, wrapName) && !(!nodeSpecific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !isCaretNode(node) && (!format.inline || !dom.isBlock(node))) {
+              if (!currentWrapElm) {
+                currentWrapElm = dom.clone(wrapElm, false);
+                node.parentNode.insertBefore(currentWrapElm, node);
+                newWrappers.push(currentWrapElm);
+              }
+              currentWrapElm.appendChild(node);
+            } else {
+              currentWrapElm = 0;
+              each$d(Tools.grep(node.childNodes), process);
+              if (hasContentEditableState) {
+                contentEditable = lastContentEditable;
+              }
+              currentWrapElm = 0;
+            }
+          };
+          each$d(nodes, process);
+        });
+        if (format.links === true) {
+          each$d(newWrappers, function (node) {
+            var process = function (node) {
+              if (node.nodeName === 'A') {
+                setElementFormat(node, format);
+              }
+              each$d(Tools.grep(node.childNodes), process);
+            };
+            process(node);
+          });
+        }
+        each$d(newWrappers, function (node) {
+          var childCount;
+          var getChildCount = function (node) {
+            var count = 0;
+            each$d(node.childNodes, function (node) {
+              if (!FormatUtils.isWhiteSpaceNode(node) && !Bookmarks.isBookmarkNode(node)) {
+                count++;
+              }
+            });
+            return count;
+          };
+          var getChildElementNode = function (root) {
+            var child = false;
+            each$d(root.childNodes, function (node) {
+              if (isElementNode$1(node)) {
+                child = node;
+                return false;
+              }
+            });
+            return child;
+          };
+          var mergeStyles = function (node) {
+            var child, clone;
+            child = getChildElementNode(node);
+            if (child && !Bookmarks.isBookmarkNode(child) && MatchFormat.matchName(dom, child, format)) {
+              clone = dom.clone(child, false);
+              setElementFormat(clone);
+              dom.replace(clone, node, true);
+              dom.remove(child, 1);
+            }
+            return clone || node;
+          };
+          childCount = getChildCount(node);
+          if ((newWrappers.length > 1 || !dom.isBlock(node)) && childCount === 0) {
+            dom.remove(node, 1);
+            return;
+          }
+          if (format.inline || format.wrapper) {
+            if (!format.exact && childCount === 1) {
+              node = mergeStyles(node);
+            }
+            MergeFormats.mergeWithChildren(ed, formatList, vars, node);
+            MergeFormats.mergeWithParents(ed, format, name, vars, node);
+            MergeFormats.mergeBackgroundColorAndFontSize(dom, format, vars, node);
+            MergeFormats.mergeSubSup(dom, format, vars, node);
+            MergeFormats.mergeSiblings(dom, format, vars, node);
+          }
+        });
+      };
+      if (dom.getContentEditable(selection.getNode()) === 'false') {
+        node = selection.getNode();
+        for (var i = 0, l = formatList.length; i < l; i++) {
+          if (formatList[i].ceFalseOverride && dom.is(node, formatList[i].selector)) {
+            setElementFormat(node, formatList[i]);
+            return;
+          }
+        }
+        return;
+      }
+      if (format) {
+        if (node) {
+          if (node.nodeType) {
+            if (!applyNodeStyle(formatList, node)) {
+              rng = dom.createRng();
+              rng.setStartBefore(node);
+              rng.setEndAfter(node);
+              applyRngStyle(dom, ExpandRange.expandRng(ed, rng, formatList), null, true);
+            }
+          } else {
+            applyRngStyle(dom, node, null, true);
+          }
+        } else {
+          if (!isCollapsed || !format.inline || dom.select('td[data-mce-selected],th[data-mce-selected]').length) {
+            var curSelNode = ed.selection.getNode();
+            if (!ed.settings.forced_root_block && formatList[0].defaultBlock && !dom.getParent(curSelNode, dom.isBlock)) {
+              applyFormat(ed, formatList[0].defaultBlock);
+            }
+            ed.selection.setRng(RangeNormalizer.normalize(ed.selection.getRng()));
+            bookmark = GetBookmark.getPersistentBookmark(ed.selection, true);
+            applyRngStyle(dom, ExpandRange.expandRng(ed, selection.getRng(), formatList), bookmark);
+            if (format.styles) {
+              MergeFormats.mergeUnderlineAndColor(dom, format, vars, curSelNode);
+            }
+            selection.moveToBookmark(bookmark);
+            FormatUtils.moveStart(dom, selection, selection.getRng());
+            ed.nodeChanged();
+          } else {
+            applyCaretFormat(ed, name, vars);
+          }
+        }
+        Hooks.postProcess(name, ed);
+      }
+    };
+    var ApplyFormat = { applyFormat: applyFormat };
+
+    var setup$5 = function (registeredFormatListeners, editor) {
+      var currentFormats = Cell({});
+      registeredFormatListeners.set({});
+      editor.on('NodeChange', function (e) {
+        updateAndFireChangeCallbacks(editor, e.element, currentFormats, registeredFormatListeners.get());
+      });
+    };
+    var updateAndFireChangeCallbacks = function (editor, elm, currentFormats, formatChangeData) {
+      var formatsList = keys(currentFormats.get());
+      var newFormats = {};
+      var matchedFormats = {};
+      var parents = filter(FormatUtils.getParents(editor.dom, elm), function (node) {
+        return node.nodeType === 1 && !node.getAttribute('data-mce-bogus');
+      });
+      each$3(formatChangeData, function (data, format) {
+        Tools.each(parents, function (node) {
+          if (editor.formatter.matchNode(node, format, {}, data.similar)) {
+            if (formatsList.indexOf(format) === -1) {
+              each(data.callbacks, function (callback) {
+                callback(true, {
+                  node: node,
+                  format: format,
+                  parents: parents
+                });
+              });
+              newFormats[format] = data.callbacks;
+            }
+            matchedFormats[format] = data.callbacks;
+            return false;
+          }
+          if (MatchFormat.matchesUnInheritedFormatSelector(editor, node, format)) {
+            return false;
+          }
+        });
+      });
+      var remainingFormats = filterRemainingFormats(currentFormats.get(), matchedFormats, elm, parents);
+      currentFormats.set(__assign({}, newFormats, remainingFormats));
+    };
+    var filterRemainingFormats = function (currentFormats, matchedFormats, elm, parents) {
+      return bifilter(currentFormats, function (callbacks, format) {
+        if (!has(matchedFormats, format)) {
+          each(callbacks, function (callback) {
+            callback(false, {
+              node: elm,
+              format: format,
+              parents: parents
+            });
+          });
+          return false;
+        } else {
+          return true;
+        }
+      }).t;
+    };
+    var addListeners = function (registeredFormatListeners, formats, callback, similar) {
+      var formatChangeItems = registeredFormatListeners.get();
+      each(formats.split(','), function (format) {
+        if (!formatChangeItems[format]) {
+          formatChangeItems[format] = {
+            similar: similar,
+            callbacks: []
+          };
+        }
+        formatChangeItems[format].callbacks.push(callback);
+      });
+      registeredFormatListeners.set(formatChangeItems);
+    };
+    var removeListeners = function (registeredFormatListeners, formats, callback) {
+      var formatChangeItems = registeredFormatListeners.get();
+      each(formats.split(','), function (format) {
+        formatChangeItems[format].callbacks = filter(formatChangeItems[format].callbacks, function (c) {
+          return c !== callback;
+        });
+        if (formatChangeItems[format].callbacks.length === 0) {
+          delete formatChangeItems[format];
+        }
+      });
+      registeredFormatListeners.set(formatChangeItems);
+    };
+    var formatChanged = function (editor, registeredFormatListeners, formats, callback, similar) {
+      if (registeredFormatListeners.get() === null) {
+        setup$5(registeredFormatListeners, editor);
+      }
+      addListeners(registeredFormatListeners, formats, callback, similar);
+      return {
+        unbind: function () {
+          return removeListeners(registeredFormatListeners, formats, callback);
+        }
+      };
+    };
+
+    var get$6 = function (dom) {
+      var formats = {
+        valigntop: [{
+            selector: 'td,th',
+            styles: { verticalAlign: 'top' }
+          }],
+        valignmiddle: [{
+            selector: 'td,th',
+            styles: { verticalAlign: 'middle' }
+          }],
+        valignbottom: [{
+            selector: 'td,th',
+            styles: { verticalAlign: 'bottom' }
+          }],
+        alignleft: [
+          {
+            selector: 'figure.image',
+            collapsed: false,
+            classes: 'align-left',
+            ceFalseOverride: true,
+            preview: 'font-family font-size'
+          },
+          {
+            selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',
+            styles: { textAlign: 'left' },
+            inherit: false,
+            preview: false,
+            defaultBlock: 'div'
+          },
+          {
+            selector: 'img,table',
+            collapsed: false,
+            styles: { float: 'left' },
+            preview: 'font-family font-size'
+          }
+        ],
+        aligncenter: [
+          {
+            selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',
+            styles: { textAlign: 'center' },
+            inherit: false,
+            preview: 'font-family font-size',
+            defaultBlock: 'div'
+          },
+          {
+            selector: 'figure.image',
+            collapsed: false,
+            classes: 'align-center',
+            ceFalseOverride: true,
+            preview: 'font-family font-size'
+          },
+          {
+            selector: 'img',
+            collapsed: false,
+            styles: {
+              display: 'block',
+              marginLeft: 'auto',
+              marginRight: 'auto'
+            },
+            preview: false
+          },
+          {
+            selector: 'table',
+            collapsed: false,
+            styles: {
+              marginLeft: 'auto',
+              marginRight: 'auto'
+            },
+            preview: 'font-family font-size'
+          }
+        ],
+        alignright: [
+          {
+            selector: 'figure.image',
+            collapsed: false,
+            classes: 'align-right',
+            ceFalseOverride: true,
+            preview: 'font-family font-size'
+          },
+          {
+            selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',
+            styles: { textAlign: 'right' },
+            inherit: false,
+            preview: 'font-family font-size',
+            defaultBlock: 'div'
+          },
+          {
+            selector: 'img,table',
+            collapsed: false,
+            styles: { float: 'right' },
+            preview: 'font-family font-size'
+          }
+        ],
+        alignjustify: [{
+            selector: 'figure,p,h1,h2,h3,h4,h5,h6,td,th,tr,div,ul,ol,li',
+            styles: { textAlign: 'justify' },
+            inherit: false,
+            defaultBlock: 'div',
+            preview: 'font-family font-size'
+          }],
+        bold: [
+          {
+            inline: 'strong',
+            remove: 'all'
+          },
+          {
+            inline: 'span',
+            styles: { fontWeight: 'bold' }
+          },
+          {
+            inline: 'b',
+            remove: 'all'
+          }
+        ],
+        italic: [
+          {
+            inline: 'em',
+            remove: 'all'
+          },
+          {
+            inline: 'span',
+            styles: { fontStyle: 'italic' }
+          },
+          {
+            inline: 'i',
+            remove: 'all'
+          }
+        ],
+        underline: [
+          {
+            inline: 'span',
+            styles: { textDecoration: 'underline' },
+            exact: true
+          },
+          {
+            inline: 'u',
+            remove: 'all'
+          }
+        ],
+        strikethrough: [
+          {
+            inline: 'span',
+            styles: { textDecoration: 'line-through' },
+            exact: true
+          },
+          {
+            inline: 'strike',
+            remove: 'all'
+          }
+        ],
+        forecolor: {
+          inline: 'span',
+          styles: { color: '%value' },
+          links: true,
+          remove_similar: true,
+          clear_child_styles: true
+        },
+        hilitecolor: {
+          inline: 'span',
+          styles: { backgroundColor: '%value' },
+          links: true,
+          remove_similar: true,
+          clear_child_styles: true
+        },
+        fontname: {
+          inline: 'span',
+          toggle: false,
+          styles: { fontFamily: '%value' },
+          clear_child_styles: true
+        },
+        fontsize: {
+          inline: 'span',
+          toggle: false,
+          styles: { fontSize: '%value' },
+          clear_child_styles: true
+        },
+        fontsize_class: {
+          inline: 'span',
+          attributes: { class: '%value' }
+        },
+        blockquote: {
+          block: 'blockquote',
+          wrapper: true,
+          remove: 'all'
+        },
+        subscript: { inline: 'sub' },
+        superscript: { inline: 'sup' },
+        code: { inline: 'code' },
+        link: {
+          inline: 'a',
+          selector: 'a',
+          remove: 'all',
+          split: true,
+          deep: true,
+          onmatch: function () {
+            return true;
+          },
+          onformat: function (elm, fmt, vars) {
+            Tools.each(vars, function (value, key) {
+              dom.setAttrib(elm, key, value);
+            });
+          }
+        },
+        removeformat: [
+          {
+            selector: 'b,strong,em,i,font,u,strike,sub,sup,dfn,code,samp,kbd,var,cite,mark,q,del,ins',
+            remove: 'all',
+            split: true,
+            expand: false,
+            block_expand: true,
+            deep: true
+          },
+          {
+            selector: 'span',
+            attributes: [
+              'style',
+              'class'
+            ],
+            remove: 'empty',
+            split: true,
+            expand: false,
+            deep: true
+          },
+          {
+            selector: '*',
+            attributes: [
+              'style',
+              'class'
+            ],
+            split: false,
+            expand: false,
+            deep: true
+          }
+        ]
+      };
+      Tools.each('p h1 h2 h3 h4 h5 h6 div address pre div dt dd samp'.split(/\s/), function (name) {
+        formats[name] = {
+          block: name,
+          remove: 'all'
+        };
+      });
+      return formats;
+    };
+    var DefaultFormats = { get: get$6 };
+
+    function FormatRegistry(editor) {
+      var formats = {};
+      var get = function (name) {
+        return name ? formats[name] : formats;
+      };
+      var has$1 = function (name) {
+        return has(formats, name);
+      };
+      var register = function (name, format) {
+        if (name) {
+          if (typeof name !== 'string') {
+            Tools.each(name, function (format, name) {
+              register(name, format);
+            });
+          } else {
+            if (!isArray(format)) {
+              format = [format];
+            }
+            Tools.each(format, function (format) {
+              if (typeof format.deep === 'undefined') {
+                format.deep = !format.selector;
+              }
+              if (typeof format.split === 'undefined') {
+                format.split = !format.selector || format.inline;
+              }
+              if (typeof format.remove === 'undefined' && format.selector && !format.inline) {
+                format.remove = 'none';
+              }
+              if (format.selector && format.inline) {
+                format.mixed = true;
+                format.block_expand = true;
+              }
+              if (typeof format.classes === 'string') {
+                format.classes = format.classes.split(/\s+/);
+              }
+            });
+            formats[name] = format;
+          }
+        }
+      };
+      var unregister = function (name) {
+        if (name && formats[name]) {
+          delete formats[name];
+        }
+        return formats;
+      };
+      register(DefaultFormats.get(editor.dom));
+      register(editor.settings.formats);
+      return {
+        get: get,
+        has: has$1,
+        register: register,
+        unregister: unregister
+      };
+    }
+
+    var each$e = Tools.each;
+    var dom = DOMUtils$1.DOM;
+    var parsedSelectorToHtml = function (ancestry, editor) {
+      var elm, item, fragment;
+      var schema = editor && editor.schema || Schema({});
+      var decorate = function (elm, item) {
+        if (item.classes.length) {
+          dom.addClass(elm, item.classes.join(' '));
+        }
+        dom.setAttribs(elm, item.attrs);
+      };
+      var createElement = function (sItem) {
+        var elm;
+        item = typeof sItem === 'string' ? {
+          name: sItem,
+          classes: [],
+          attrs: {}
+        } : sItem;
+        elm = dom.create(item.name);
+        decorate(elm, item);
+        return elm;
+      };
+      var getRequiredParent = function (elm, candidate) {
+        var name = typeof elm !== 'string' ? elm.nodeName.toLowerCase() : elm;
+        var elmRule = schema.getElementRule(name);
+        var parentsRequired = elmRule && elmRule.parentsRequired;
+        if (parentsRequired && parentsRequired.length) {
+          return candidate && Tools.inArray(parentsRequired, candidate) !== -1 ? candidate : parentsRequired[0];
+        } else {
+          return false;
+        }
+      };
+      var wrapInHtml = function (elm, ancestry, siblings) {
+        var parent, parentCandidate, parentRequired;
+        var ancestor = ancestry.length > 0 && ancestry[0];
+        var ancestorName = ancestor && ancestor.name;
+        parentRequired = getRequiredParent(elm, ancestorName);
+        if (parentRequired) {
+          if (ancestorName === parentRequired) {
+            parentCandidate = ancestry[0];
+            ancestry = ancestry.slice(1);
+          } else {
+            parentCandidate = parentRequired;
+          }
+        } else if (ancestor) {
+          parentCandidate = ancestry[0];
+          ancestry = ancestry.slice(1);
+        } else if (!siblings) {
+          return elm;
+        }
+        if (parentCandidate) {
+          parent = createElement(parentCandidate);
+          parent.appendChild(elm);
+        }
+        if (siblings) {
+          if (!parent) {
+            parent = dom.create('div');
+            parent.appendChild(elm);
+          }
+          Tools.each(siblings, function (sibling) {
+            var siblingElm = createElement(sibling);
+            parent.insertBefore(siblingElm, elm);
+          });
+        }
+        return wrapInHtml(parent, ancestry, parentCandidate && parentCandidate.siblings);
+      };
+      if (ancestry && ancestry.length) {
+        item = ancestry[0];
+        elm = createElement(item);
+        fragment = dom.create('div');
+        fragment.appendChild(wrapInHtml(elm, ancestry.slice(1), item.siblings));
+        return fragment;
+      } else {
+        return '';
+      }
+    };
+    var selectorToHtml = function (selector, editor) {
+      return parsedSelectorToHtml(parseSelector(selector), editor);
+    };
+    var parseSelectorItem = function (item) {
+      var tagName;
+      var obj = {
+        classes: [],
+        attrs: {}
+      };
+      item = obj.selector = Tools.trim(item);
+      if (item !== '*') {
+        tagName = item.replace(/(?:([#\.]|::?)([\w\-]+)|(\[)([^\]]+)\]?)/g, function ($0, $1, $2, $3, $4) {
+          switch ($1) {
+          case '#':
+            obj.attrs.id = $2;
+            break;
+          case '.':
+            obj.classes.push($2);
+            break;
+          case ':':
+            if (Tools.inArray('checked disabled enabled read-only required'.split(' '), $2) !== -1) {
+              obj.attrs[$2] = $2;
+            }
+            break;
+          }
+          if ($3 === '[') {
+            var m = $4.match(/([\w\-]+)(?:\=\"([^\"]+))?/);
+            if (m) {
+              obj.attrs[m[1]] = m[2];
+            }
+          }
+          return '';
+        });
+      }
+      obj.name = tagName || 'div';
+      return obj;
+    };
+    var parseSelector = function (selector) {
+      if (!selector || typeof selector !== 'string') {
+        return [];
+      }
+      selector = selector.split(/\s*,\s*/)[0];
+      selector = selector.replace(/\s*(~\+|~|\+|>)\s*/g, '$1');
+      return Tools.map(selector.split(/(?:>|\s+(?![^\[\]]+\]))/), function (item) {
+        var siblings = Tools.map(item.split(/(?:~\+|~|\+)/), parseSelectorItem);
+        var obj = siblings.pop();
+        if (siblings.length) {
+          obj.siblings = siblings;
+        }
+        return obj;
+      }).reverse();
+    };
+    var getCssText = function (editor, format) {
+      var name, previewFrag, previewElm, items;
+      var previewCss = '', parentFontSize, previewStyles;
+      previewStyles = editor.settings.preview_styles;
+      if (previewStyles === false) {
+        return '';
+      }
+      if (typeof previewStyles !== 'string') {
+        previewStyles = 'font-family font-size font-weight font-style text-decoration ' + 'text-transform color background-color border border-radius outline text-shadow';
+      }
+      var removeVars = function (val) {
+        return val.replace(/%(\w+)/g, '');
+      };
+      if (typeof format === 'string') {
+        format = editor.formatter.get(format);
+        if (!format) {
+          return;
+        }
+        format = format[0];
+      }
+      if ('preview' in format) {
+        previewStyles = format.preview;
+        if (previewStyles === false) {
+          return '';
+        }
+      }
+      name = format.block || format.inline || 'span';
+      items = parseSelector(format.selector);
+      if (items.length) {
+        if (!items[0].name) {
+          items[0].name = name;
+        }
+        name = format.selector;
+        previewFrag = parsedSelectorToHtml(items, editor);
+      } else {
+        previewFrag = parsedSelectorToHtml([name], editor);
+      }
+      previewElm = dom.select(name, previewFrag)[0] || previewFrag.firstChild;
+      each$e(format.styles, function (value, name) {
+        value = removeVars(value);
+        if (value) {
+          dom.setStyle(previewElm, name, value);
+        }
+      });
+      each$e(format.attributes, function (value, name) {
+        value = removeVars(value);
+        if (value) {
+          dom.setAttrib(previewElm, name, value);
+        }
+      });
+      each$e(format.classes, function (value) {
+        value = removeVars(value);
+        if (!dom.hasClass(previewElm, value)) {
+          dom.addClass(previewElm, value);
+        }
+      });
+      editor.fire('PreviewFormats');
+      dom.setStyles(previewFrag, {
+        position: 'absolute',
+        left: -65535
+      });
+      editor.getBody().appendChild(previewFrag);
+      parentFontSize = dom.getStyle(editor.getBody(), 'fontSize', true);
+      parentFontSize = /px$/.test(parentFontSize) ? parseInt(parentFontSize, 10) : 0;
+      each$e(previewStyles.split(' '), function (name) {
+        var value = dom.getStyle(previewElm, name, true);
+        if (name === 'background-color' && /transparent|rgba\s*\([^)]+,\s*0\)/.test(value)) {
+          value = dom.getStyle(editor.getBody(), name, true);
+          if (dom.toHex(value).toLowerCase() === '#ffffff') {
+            return;
+          }
+        }
+        if (name === 'color') {
+          if (dom.toHex(value).toLowerCase() === '#000000') {
+            return;
+          }
+        }
+        if (name === 'font-size') {
+          if (/em|%$/.test(value)) {
+            if (parentFontSize === 0) {
+              return;
+            }
+            var numValue = parseFloat(value) / (/%$/.test(value) ? 100 : 1);
+            value = numValue * parentFontSize + 'px';
+          }
+        }
+        if (name === 'border' && value) {
+          previewCss += 'padding:0 2px;';
+        }
+        previewCss += name + ':' + value + ';';
+      });
+      editor.fire('AfterPreviewFormats');
+      dom.remove(previewFrag);
+      return previewCss;
+    };
+    var Preview = {
+      getCssText: getCssText,
+      parseSelector: parseSelector,
+      selectorToHtml: selectorToHtml
+    };
+
+    var toggle$1 = function (editor, formats, name, vars, node) {
+      var fmt = formats.get(name);
+      if (MatchFormat.match(editor, name, vars, node) && (!('toggle' in fmt[0]) || fmt[0].toggle)) {
+        RemoveFormat.remove(editor, name, vars, node);
+      } else {
+        ApplyFormat.applyFormat(editor, name, vars, node);
+      }
+    };
+    var ToggleFormat = { toggle: toggle$1 };
+
+    var setup$6 = function (editor) {
+      editor.addShortcut('meta+b', '', 'Bold');
+      editor.addShortcut('meta+i', '', 'Italic');
+      editor.addShortcut('meta+u', '', 'Underline');
+      for (var i = 1; i <= 6; i++) {
+        editor.addShortcut('access+' + i, '', [
+          'FormatBlock',
+          false,
+          'h' + i
+        ]);
+      }
+      editor.addShortcut('access+7', '', [
+        'FormatBlock',
+        false,
+        'p'
+      ]);
+      editor.addShortcut('access+8', '', [
+        'FormatBlock',
+        false,
+        'div'
+      ]);
+      editor.addShortcut('access+9', '', [
+        'FormatBlock',
+        false,
+        'address'
+      ]);
+    };
+    var FormatShortcuts = { setup: setup$6 };
+
+    var Formatter = function (editor) {
+      var formats = FormatRegistry(editor);
+      var formatChangeState = Cell(null);
+      FormatShortcuts.setup(editor);
+      setup$4(editor);
+      return {
+        get: formats.get,
+        has: formats.has,
+        register: formats.register,
+        unregister: formats.unregister,
+        apply: curry(ApplyFormat.applyFormat, editor),
+        remove: curry(RemoveFormat.remove, editor),
+        toggle: curry(ToggleFormat.toggle, editor, formats),
+        match: curry(MatchFormat.match, editor),
+        matchAll: curry(MatchFormat.matchAll, editor),
+        matchNode: curry(MatchFormat.matchNode, editor),
+        canApply: curry(MatchFormat.canApply, editor),
+        formatChanged: curry(formatChanged, editor, formatChangeState),
+        getCssText: curry(Preview.getCssText, editor)
+      };
+    };
+
+    var hasOwnProperty$2 = Object.prototype.hasOwnProperty;
+    var shallow$1 = function (old, nu) {
+      return nu;
+    };
+    var baseMerge = function (merger) {
+      return function () {
+        var objects = new Array(arguments.length);
+        for (var i = 0; i < objects.length; i++)
+          objects[i] = arguments[i];
+        if (objects.length === 0)
+          throw new Error('Can\'t merge zero objects');
+        var ret = {};
+        for (var j = 0; j < objects.length; j++) {
+          var curObject = objects[j];
+          for (var key in curObject)
+            if (hasOwnProperty$2.call(curObject, key)) {
+              ret[key] = merger(ret[key], curObject[key]);
+            }
+        }
+        return ret;
+      };
+    };
+    var merge = baseMerge(shallow$1);
+
+    var register = function (htmlParser, settings, dom) {
+      htmlParser.addAttributeFilter('data-mce-tabindex', function (nodes, name) {
+        var i = nodes.length, node;
+        while (i--) {
+          node = nodes[i];
+          node.attr('tabindex', node.attr('data-mce-tabindex'));
+          node.attr(name, null);
+        }
+      });
+      htmlParser.addAttributeFilter('src,href,style', function (nodes, name) {
+        var i = nodes.length, node, value;
+        var internalName = 'data-mce-' + name;
+        var urlConverter = settings.url_converter;
+        var urlConverterScope = settings.url_converter_scope;
+        while (i--) {
+          node = nodes[i];
+          value = node.attr(internalName);
+          if (value !== undefined) {
+            node.attr(name, value.length > 0 ? value : null);
+            node.attr(internalName, null);
+          } else {
+            value = node.attr(name);
+            if (name === 'style') {
+              value = dom.serializeStyle(dom.parseStyle(value), node.name);
+            } else if (urlConverter) {
+              value = urlConverter.call(urlConverterScope, value, name, node.name);
+            }
+            node.attr(name, value.length > 0 ? value : null);
+          }
+        }
+      });
+      htmlParser.addAttributeFilter('class', function (nodes) {
+        var i = nodes.length, node, value;
+        while (i--) {
+          node = nodes[i];
+          value = node.attr('class');
+          if (value) {
+            value = node.attr('class').replace(/(?:^|\s)mce-item-\w+(?!\S)/g, '');
+            node.attr('class', value.length > 0 ? value : null);
+          }
+        }
+      });
+      htmlParser.addAttributeFilter('data-mce-type', function (nodes, name, args) {
+        var i = nodes.length, node;
+        while (i--) {
+          node = nodes[i];
+          if (node.attr('data-mce-type') === 'bookmark' && !args.cleanup) {
+            var hasChildren = Option.from(node.firstChild).exists(function (firstChild) {
+              return !Zwsp.isZwsp(firstChild.value);
+            });
+            if (hasChildren) {
+              node.unwrap();
+            } else {
+              node.remove();
+            }
+          }
+        }
+      });
+      htmlParser.addNodeFilter('noscript', function (nodes) {
+        var i = nodes.length, node;
+        while (i--) {
+          node = nodes[i].firstChild;
+          if (node) {
+            node.value = Entities.decode(node.value);
+          }
+        }
+      });
+      htmlParser.addNodeFilter('script,style', function (nodes, name) {
+        var i = nodes.length, node, value, type;
+        var trim = function (value) {
+          return value.replace(/(<!--\[CDATA\[|\]\]-->)/g, '\n').replace(/^[\r\n]*|[\r\n]*$/g, '').replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi, '').replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g, '');
+        };
+        while (i--) {
+          node = nodes[i];
+          value = node.firstChild ? node.firstChild.value : '';
+          if (name === 'script') {
+            type = node.attr('type');
+            if (type) {
+              node.attr('type', type === 'mce-no/type' ? null : type.replace(/^mce\-/, ''));
+            }
+            if (settings.element_format === 'xhtml' && value.length > 0) {
+              node.firstChild.value = '// <![CDATA[\n' + trim(value) + '\n// ]]>';
+            }
+          } else {
+            if (settings.element_format === 'xhtml' && value.length > 0) {
+              node.firstChild.value = '<!--\n' + trim(value) + '\n-->';
+            }
+          }
+        }
+      });
+      htmlParser.addNodeFilter('#comment', function (nodes) {
+        var i = nodes.length, node;
+        while (i--) {
+          node = nodes[i];
+          if (node.value.indexOf('[CDATA[') === 0) {
+            node.name = '#cdata';
+            node.type = 4;
+            node.value = node.value.replace(/^\[CDATA\[|\]\]$/g, '');
+          } else if (node.value.indexOf('mce:protected ') === 0) {
+            node.name = '#text';
+            node.type = 3;
+            node.raw = true;
+            node.value = unescape(node.value).substr(14);
+          }
+        }
+      });
+      htmlParser.addNodeFilter('xml:namespace,input', function (nodes, name) {
+        var i = nodes.length, node;
+        while (i--) {
+          node = nodes[i];
+          if (node.type === 7) {
+            node.remove();
+          } else if (node.type === 1) {
+            if (name === 'input' && !node.attr('type')) {
+              node.attr('type', 'text');
+            }
+          }
+        }
+      });
+      htmlParser.addAttributeFilter('data-mce-type', function (nodes) {
+        each(nodes, function (node) {
+          if (node.attr('data-mce-type') === 'format-caret') {
+            if (node.isEmpty(htmlParser.schema.getNonEmptyElements())) {
+              node.remove();
+            } else {
+              node.unwrap();
+            }
+          }
+        });
+      });
+      htmlParser.addAttributeFilter('data-mce-src,data-mce-href,data-mce-style,' + 'data-mce-selected,data-mce-expando,' + 'data-mce-type,data-mce-resize', function (nodes, name) {
+        var i = nodes.length;
+        while (i--) {
+          nodes[i].attr(name, null);
+        }
+      });
+    };
+    var trimTrailingBr = function (rootNode) {
+      var brNode1, brNode2;
+      var isBr = function (node) {
+        return node && node.name === 'br';
+      };
+      brNode1 = rootNode.lastChild;
+      if (isBr(brNode1)) {
+        brNode2 = brNode1.prev;
+        if (isBr(brNode2)) {
+          brNode1.remove();
+          brNode2.remove();
+        }
+      }
+    };
+    var DomSerializerFilters = {
+      register: register,
+      trimTrailingBr: trimTrailingBr
+    };
+
+    var preProcess = function (editor, node, args) {
+      var impl, doc, oldDoc;
+      var dom = editor.dom;
+      node = node.cloneNode(true);
+      impl = domGlobals.document.implementation;
+      if (impl.createHTMLDocument) {
+        doc = impl.createHTMLDocument('');
+        Tools.each(node.nodeName === 'BODY' ? node.childNodes : [node], function (node) {
+          doc.body.appendChild(doc.importNode(node, true));
+        });
+        if (node.nodeName !== 'BODY') {
+          node = doc.body.firstChild;
+        } else {
+          node = doc.body;
+        }
+        oldDoc = dom.doc;
+        dom.doc = doc;
+      }
+      Events.firePreProcess(editor, merge(args, { node: node }));
+      if (oldDoc) {
+        dom.doc = oldDoc;
+      }
+      return node;
+    };
+    var shouldFireEvent = function (editor, args) {
+      return editor && editor.hasEventListeners('PreProcess') && !args.no_events;
+    };
+    var process = function (editor, node, args) {
+      return shouldFireEvent(editor, args) ? preProcess(editor, node, args) : node;
+    };
+    var DomSerializerPreProcess = { process: process };
+
+    var removeAttrs = function (node, names) {
+      each(names, function (name) {
+        node.attr(name, null);
+      });
+    };
+    var addFontToSpansFilter = function (domParser, styles, fontSizes) {
+      domParser.addNodeFilter('font', function (nodes) {
+        each(nodes, function (node) {
+          var props = styles.parse(node.attr('style'));
+          var color = node.attr('color');
+          var face = node.attr('face');
+          var size = node.attr('size');
+          if (color) {
+            props.color = color;
+          }
+          if (face) {
+            props['font-family'] = face;
+          }
+          if (size) {
+            props['font-size'] = fontSizes[parseInt(node.attr('size'), 10) - 1];
+          }
+          node.name = 'span';
+          node.attr('style', styles.serialize(props));
+          removeAttrs(node, [
+            'color',
+            'face',
+            'size'
+          ]);
+        });
+      });
+    };
+    var addStrikeToSpanFilter = function (domParser, styles) {
+      domParser.addNodeFilter('strike', function (nodes) {
+        each(nodes, function (node) {
+          var props = styles.parse(node.attr('style'));
+          props['text-decoration'] = 'line-through';
+          node.name = 'span';
+          node.attr('style', styles.serialize(props));
+        });
+      });
+    };
+    var addFilters = function (domParser, settings) {
+      var styles = Styles();
+      if (settings.convert_fonts_to_spans) {
+        addFontToSpansFilter(domParser, styles, Tools.explode(settings.font_size_legacy_values));
+      }
+      addStrikeToSpanFilter(domParser, styles);
+    };
+    var register$1 = function (domParser, settings) {
+      if (settings.inline_styles) {
+        addFilters(domParser, settings);
+      }
+    };
+    var LegacyFilter = { register: register$1 };
+
+    var paddEmptyNode = function (settings, args, blockElements, node) {
+      var brPreferred = settings.padd_empty_with_br || args.insert;
+      if (brPreferred && blockElements[node.name]) {
+        node.empty().append(new Node$1('br', 1)).shortEnded = true;
+      } else {
+        node.empty().append(new Node$1('#text', 3)).value = '\xA0';
+      }
+    };
+    var isPaddedWithNbsp = function (node) {
+      return hasOnlyChild(node, '#text') && node.firstChild.value === '\xA0';
+    };
+    var hasOnlyChild = function (node, name) {
+      return node && node.firstChild && node.firstChild === node.lastChild && node.firstChild.name === name;
+    };
+    var isPadded = function (schema, node) {
+      var rule = schema.getElementRule(node.name);
+      return rule && rule.paddEmpty;
+    };
+    var isEmpty$2 = function (schema, nonEmptyElements, whitespaceElements, node) {
+      return node.isEmpty(nonEmptyElements, whitespaceElements, function (node) {
+        return isPadded(schema, node);
+      });
+    };
+    var isLineBreakNode = function (node, blockElements) {
+      return node && (blockElements[node.name] || node.name === 'br');
+    };
+
+    var register$2 = function (parser, settings) {
+      var schema = parser.schema;
+      if (settings.remove_trailing_brs) {
+        parser.addNodeFilter('br', function (nodes, _, args) {
+          var i;
+          var l = nodes.length;
+          var node;
+          var blockElements = Tools.extend({}, schema.getBlockElements());
+          var nonEmptyElements = schema.getNonEmptyElements();
+          var parent, lastParent, prev, prevName;
+          var whiteSpaceElements = schema.getNonEmptyElements();
+          var elementRule, textNode;
+          blockElements.body = 1;
+          for (i = 0; i < l; i++) {
+            node = nodes[i];
+            parent = node.parent;
+            if (blockElements[node.parent.name] && node === parent.lastChild) {
+              prev = node.prev;
+              while (prev) {
+                prevName = prev.name;
+                if (prevName !== 'span' || prev.attr('data-mce-type') !== 'bookmark') {
+                  if (prevName !== 'br') {
+                    break;
+                  }
+                  if (prevName === 'br') {
+                    node = null;
+                    break;
+                  }
+                }
+                prev = prev.prev;
+              }
+              if (node) {
+                node.remove();
+                if (isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, parent)) {
+                  elementRule = schema.getElementRule(parent.name);
+                  if (elementRule) {
+                    if (elementRule.removeEmpty) {
+                      parent.remove();
+                    } else if (elementRule.paddEmpty) {
+                      paddEmptyNode(settings, args, blockElements, parent);
+                    }
+                  }
+                }
+              }
+            } else {
+              lastParent = node;
+              while (parent && parent.firstChild === lastParent && parent.lastChild === lastParent) {
+                lastParent = parent;
+                if (blockElements[parent.name]) {
+                  break;
+                }
+                parent = parent.parent;
+              }
+              if (lastParent === parent && settings.padd_empty_with_br !== true) {
+                textNode = new Node$1('#text', 3);
+                textNode.value = '\xA0';
+                node.replace(textNode);
+              }
+            }
+          }
+        });
+      }
+      parser.addAttributeFilter('href', function (nodes) {
+        var i = nodes.length, node;
+        var appendRel = function (rel) {
+          var parts = rel.split(' ').filter(function (p) {
+            return p.length > 0;
+          });
+          return parts.concat(['noopener']).sort().join(' ');
+        };
+        var addNoOpener = function (rel) {
+          var newRel = rel ? Tools.trim(rel) : '';
+          if (!/\b(noopener)\b/g.test(newRel)) {
+            return appendRel(newRel);
+          } else {
+            return newRel;
+          }
+        };
+        if (!settings.allow_unsafe_link_target) {
+          while (i--) {
+            node = nodes[i];
+            if (node.name === 'a' && node.attr('target') === '_blank') {
+              node.attr('rel', addNoOpener(node.attr('rel')));
+            }
+          }
+        }
+      });
+      if (!settings.allow_html_in_named_anchor) {
+        parser.addAttributeFilter('id,name', function (nodes) {
+          var i = nodes.length, sibling, prevSibling, parent, node;
+          while (i--) {
+            node = nodes[i];
+            if (node.name === 'a' && node.firstChild && !node.attr('href')) {
+              parent = node.parent;
+              sibling = node.lastChild;
+              do {
+                prevSibling = sibling.prev;
+                parent.insert(sibling, node);
+                sibling = prevSibling;
+              } while (sibling);
+            }
+          }
+        });
+      }
+      if (settings.fix_list_elements) {
+        parser.addNodeFilter('ul,ol', function (nodes) {
+          var i = nodes.length, node, parentNode;
+          while (i--) {
+            node = nodes[i];
+            parentNode = node.parent;
+            if (parentNode.name === 'ul' || parentNode.name === 'ol') {
+              if (node.prev && node.prev.name === 'li') {
+                node.prev.append(node);
+              } else {
+                var li = new Node$1('li', 1);
+                li.attr('style', 'list-style-type: none');
+                node.wrap(li);
+              }
+            }
+          }
+        });
+      }
+      if (settings.validate && schema.getValidClasses()) {
+        parser.addAttributeFilter('class', function (nodes) {
+          var i = nodes.length, node, classList, ci, className, classValue;
+          var validClasses = schema.getValidClasses();
+          var validClassesMap, valid;
+          while (i--) {
+            node = nodes[i];
+            classList = node.attr('class').split(' ');
+            classValue = '';
+            for (ci = 0; ci < classList.length; ci++) {
+              className = classList[ci];
+              valid = false;
+              validClassesMap = validClasses['*'];
+              if (validClassesMap && validClassesMap[className]) {
+                valid = true;
+              }
+              validClassesMap = validClasses[node.name];
+              if (!valid && validClassesMap && validClassesMap[className]) {
+                valid = true;
+              }
+              if (valid) {
+                if (classValue) {
+                  classValue += ' ';
+                }
+                classValue += className;
+              }
+            }
+            if (!classValue.length) {
+              classValue = null;
+            }
+            node.attr('class', classValue);
+          }
+        });
+      }
+    };
+
+    var makeMap$4 = Tools.makeMap, each$f = Tools.each, explode$2 = Tools.explode, extend$2 = Tools.extend;
+    var DomParser = function (settings, schema) {
+      if (schema === void 0) {
+        schema = Schema();
+      }
+      var nodeFilters = {};
+      var attributeFilters = [];
+      var matchedNodes = {};
+      var matchedAttributes = {};
+      settings = settings || {};
+      settings.validate = 'validate' in settings ? settings.validate : true;
+      settings.root_name = settings.root_name || 'body';
+      var fixInvalidChildren = function (nodes) {
+        var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i;
+        var nonEmptyElements, whitespaceElements, nonSplitableElements, textBlockElements, specialElements, sibling, nextNode;
+        nonSplitableElements = makeMap$4('tr,td,th,tbody,thead,tfoot,table');
+        nonEmptyElements = schema.getNonEmptyElements();
+        whitespaceElements = schema.getWhiteSpaceElements();
+        textBlockElements = schema.getTextBlockElements();
+        specialElements = schema.getSpecialElements();
+        for (ni = 0; ni < nodes.length; ni++) {
+          node = nodes[ni];
+          if (!node.parent || node.fixed) {
+            continue;
+          }
+          if (textBlockElements[node.name] && node.parent.name === 'li') {
+            sibling = node.next;
+            while (sibling) {
+              if (textBlockElements[sibling.name]) {
+                sibling.name = 'li';
+                sibling.fixed = true;
+                node.parent.insert(sibling, node.parent);
+              } else {
+                break;
+              }
+              sibling = sibling.next;
+            }
+            node.unwrap(node);
+            continue;
+          }
+          parents = [node];
+          for (parent = node.parent; parent && !schema.isValidChild(parent.name, node.name) && !nonSplitableElements[parent.name]; parent = parent.parent) {
+            parents.push(parent);
+          }
+          if (parent && parents.length > 1) {
+            parents.reverse();
+            newParent = currentNode = filterNode(parents[0].clone());
+            for (i = 0; i < parents.length - 1; i++) {
+              if (schema.isValidChild(currentNode.name, parents[i].name)) {
+                tempNode = filterNode(parents[i].clone());
+                currentNode.append(tempNode);
+              } else {
+                tempNode = currentNode;
+              }
+              for (childNode = parents[i].firstChild; childNode && childNode !== parents[i + 1];) {
+                nextNode = childNode.next;
+                tempNode.append(childNode);
+                childNode = nextNode;
+              }
+              currentNode = tempNode;
+            }
+            if (!isEmpty$2(schema, nonEmptyElements, whitespaceElements, newParent)) {
+              parent.insert(newParent, parents[0], true);
+              parent.insert(node, newParent);
+            } else {
+              parent.insert(node, parents[0], true);
+            }
+            parent = parents[0];
+            if (isEmpty$2(schema, nonEmptyElements, whitespaceElements, parent) || hasOnlyChild(parent, 'br')) {
+              parent.empty().remove();
+            }
+          } else if (node.parent) {
+            if (node.name === 'li') {
+              sibling = node.prev;
+              if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {
+                sibling.append(node);
+                continue;
+              }
+              sibling = node.next;
+              if (sibling && (sibling.name === 'ul' || sibling.name === 'ul')) {
+                sibling.insert(node, sibling.firstChild, true);
+                continue;
+              }
+              node.wrap(filterNode(new Node$1('ul', 1)));
+              continue;
+            }
+            if (schema.isValidChild(node.parent.name, 'div') && schema.isValidChild('div', node.name)) {
+              node.wrap(filterNode(new Node$1('div', 1)));
+            } else {
+              if (specialElements[node.name]) {
+                node.empty().remove();
+              } else {
+                node.unwrap();
+              }
+            }
+          }
+        }
+      };
+      var filterNode = function (node) {
+        var i, name, list;
+        name = node.name;
+        if (name in nodeFilters) {
+          list = matchedNodes[name];
+          if (list) {
+            list.push(node);
+          } else {
+            matchedNodes[name] = [node];
+          }
+        }
+        i = attributeFilters.length;
+        while (i--) {
+          name = attributeFilters[i].name;
+          if (name in node.attributes.map) {
+            list = matchedAttributes[name];
+            if (list) {
+              list.push(node);
+            } else {
+              matchedAttributes[name] = [node];
+            }
+          }
+        }
+        return node;
+      };
+      var addNodeFilter = function (name, callback) {
+        each$f(explode$2(name), function (name) {
+          var list = nodeFilters[name];
+          if (!list) {
+            nodeFilters[name] = list = [];
+          }
+          list.push(callback);
+        });
+      };
+      var getNodeFilters = function () {
+        var out = [];
+        for (var name in nodeFilters) {
+          if (nodeFilters.hasOwnProperty(name)) {
+            out.push({
+              name: name,
+              callbacks: nodeFilters[name]
+            });
+          }
+        }
+        return out;
+      };
+      var addAttributeFilter = function (name, callback) {
+        each$f(explode$2(name), function (name) {
+          var i;
+          for (i = 0; i < attributeFilters.length; i++) {
+            if (attributeFilters[i].name === name) {
+              attributeFilters[i].callbacks.push(callback);
+              return;
+            }
+          }
+          attributeFilters.push({
+            name: name,
+            callbacks: [callback]
+          });
+        });
+      };
+      var getAttributeFilters = function () {
+        return [].concat(attributeFilters);
+      };
+      var parse = function (html, args) {
+        var parser, nodes, i, l, fi, fl, list, name;
+        var blockElements;
+        var invalidChildren = [];
+        var isInWhiteSpacePreservedElement;
+        var node;
+        var getRootBlockName = function (name) {
+          if (name === false) {
+            return '';
+          } else if (name === true) {
+            return 'p';
+          } else {
+            return name;
+          }
+        };
+        args = args || {};
+        matchedNodes = {};
+        matchedAttributes = {};
+        blockElements = extend$2(makeMap$4('script,style,head,html,body,title,meta,param'), schema.getBlockElements());
+        var nonEmptyElements = schema.getNonEmptyElements();
+        var children = schema.children;
+        var validate = settings.validate;
+        var forcedRootBlockName = 'forced_root_block' in args ? args.forced_root_block : settings.forced_root_block;
+        var rootBlockName = getRootBlockName(forcedRootBlockName);
+        var whiteSpaceElements = schema.getWhiteSpaceElements();
+        var startWhiteSpaceRegExp = /^[ \t\r\n]+/;
+        var endWhiteSpaceRegExp = /[ \t\r\n]+$/;
+        var allWhiteSpaceRegExp = /[ \t\r\n]+/g;
+        var isAllWhiteSpaceRegExp = /^[ \t\r\n]+$/;
+        isInWhiteSpacePreservedElement = whiteSpaceElements.hasOwnProperty(args.context) || whiteSpaceElements.hasOwnProperty(settings.root_name);
+        var addRootBlocks = function () {
+          var node = rootNode.firstChild, next, rootBlockNode;
+          var trim = function (rootBlockNode) {
+            if (rootBlockNode) {
+              node = rootBlockNode.firstChild;
+              if (node && node.type === 3) {
+                node.value = node.value.replace(startWhiteSpaceRegExp, '');
+              }
+              node = rootBlockNode.lastChild;
+              if (node && node.type === 3) {
+                node.value = node.value.replace(endWhiteSpaceRegExp, '');
+              }
+            }
+          };
+          if (!schema.isValidChild(rootNode.name, rootBlockName.toLowerCase())) {
+            return;
+          }
+          while (node) {
+            next = node.next;
+            if (node.type === 3 || node.type === 1 && node.name !== 'p' && !blockElements[node.name] && !node.attr('data-mce-type')) {
+              if (!rootBlockNode) {
+                rootBlockNode = createNode(rootBlockName, 1);
+                rootBlockNode.attr(settings.forced_root_block_attrs);
+                rootNode.insert(rootBlockNode, node);
+                rootBlockNode.append(node);
+              } else {
+                rootBlockNode.append(node);
+              }
+            } else {
+              trim(rootBlockNode);
+              rootBlockNode = null;
+            }
+            node = next;
+          }
+          trim(rootBlockNode);
+        };
+        var createNode = function (name, type) {
+          var node = new Node$1(name, type);
+          var list;
+          if (name in nodeFilters) {
+            list = matchedNodes[name];
+            if (list) {
+              list.push(node);
+            } else {
+              matchedNodes[name] = [node];
+            }
+          }
+          return node;
+        };
+        var removeWhitespaceBefore = function (node) {
+          var textNode, textNodeNext, textVal, sibling;
+          var blockElements = schema.getBlockElements();
+          for (textNode = node.prev; textNode && textNode.type === 3;) {
+            textVal = textNode.value.replace(endWhiteSpaceRegExp, '');
+            if (textVal.length > 0) {
+              textNode.value = textVal;
+              return;
+            }
+            textNodeNext = textNode.next;
+            if (textNodeNext) {
+              if (textNodeNext.type === 3 && textNodeNext.value.length) {
+                textNode = textNode.prev;
+                continue;
+              }
+              if (!blockElements[textNodeNext.name] && textNodeNext.name !== 'script' && textNodeNext.name !== 'style') {
+                textNode = textNode.prev;
+                continue;
+              }
+            }
+            sibling = textNode.prev;
+            textNode.remove();
+            textNode = sibling;
+          }
+        };
+        var cloneAndExcludeBlocks = function (input) {
+          var name;
+          var output = {};
+          for (name in input) {
+            if (name !== 'li' && name !== 'p') {
+              output[name] = input[name];
+            }
+          }
+          return output;
+        };
+        parser = SaxParser$1({
+          validate: validate,
+          allow_script_urls: settings.allow_script_urls,
+          allow_conditional_comments: settings.allow_conditional_comments,
+          self_closing_elements: cloneAndExcludeBlocks(schema.getSelfClosingElements()),
+          cdata: function (text) {
+            node.append(createNode('#cdata', 4)).value = text;
+          },
+          text: function (text, raw) {
+            var textNode;
+            if (!isInWhiteSpacePreservedElement) {
+              text = text.replace(allWhiteSpaceRegExp, ' ');
+              if (isLineBreakNode(node.lastChild, blockElements)) {
+                text = text.replace(startWhiteSpaceRegExp, '');
+              }
+            }
+            if (text.length !== 0) {
+              textNode = createNode('#text', 3);
+              textNode.raw = !!raw;
+              node.append(textNode).value = text;
+            }
+          },
+          comment: function (text) {
+            node.append(createNode('#comment', 8)).value = text;
+          },
+          pi: function (name, text) {
+            node.append(createNode(name, 7)).value = text;
+            removeWhitespaceBefore(node);
+          },
+          doctype: function (text) {
+            var newNode;
+            newNode = node.append(createNode('#doctype', 10));
+            newNode.value = text;
+            removeWhitespaceBefore(node);
+          },
+          start: function (name, attrs, empty) {
+            var newNode, attrFiltersLen, elementRule, attrName, parent;
+            elementRule = validate ? schema.getElementRule(name) : {};
+            if (elementRule) {
+              newNode = createNode(elementRule.outputName || name, 1);
+              newNode.attributes = attrs;
+              newNode.shortEnded = empty;
+              node.append(newNode);
+              parent = children[node.name];
+              if (parent && children[newNode.name] && !parent[newNode.name]) {
+                invalidChildren.push(newNode);
+              }
+              attrFiltersLen = attributeFilters.length;
+              while (attrFiltersLen--) {
+                attrName = attributeFilters[attrFiltersLen].name;
+                if (attrName in attrs.map) {
+                  list = matchedAttributes[attrName];
+                  if (list) {
+                    list.push(newNode);
+                  } else {
+                    matchedAttributes[attrName] = [newNode];
+                  }
+                }
+              }
+              if (blockElements[name]) {
+                removeWhitespaceBefore(newNode);
+              }
+              if (!empty) {
+                node = newNode;
+              }
+              if (!isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {
+                isInWhiteSpacePreservedElement = true;
+              }
+            }
+          },
+          end: function (name) {
+            var textNode, elementRule, text, sibling, tempNode;
+            elementRule = validate ? schema.getElementRule(name) : {};
+            if (elementRule) {
+              if (blockElements[name]) {
+                if (!isInWhiteSpacePreservedElement) {
+                  textNode = node.firstChild;
+                  if (textNode && textNode.type === 3) {
+                    text = textNode.value.replace(startWhiteSpaceRegExp, '');
+                    if (text.length > 0) {
+                      textNode.value = text;
+                      textNode = textNode.next;
+                    } else {
+                      sibling = textNode.next;
+                      textNode.remove();
+                      textNode = sibling;
+                      while (textNode && textNode.type === 3) {
+                        text = textNode.value;
+                        sibling = textNode.next;
+                        if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {
+                          textNode.remove();
+                          textNode = sibling;
+                        }
+                        textNode = sibling;
+                      }
+                    }
+                  }
+                  textNode = node.lastChild;
+                  if (textNode && textNode.type === 3) {
+                    text = textNode.value.replace(endWhiteSpaceRegExp, '');
+                    if (text.length > 0) {
+                      textNode.value = text;
+                      textNode = textNode.prev;
+                    } else {
+                      sibling = textNode.prev;
+                      textNode.remove();
+                      textNode = sibling;
+                      while (textNode && textNode.type === 3) {
+                        text = textNode.value;
+                        sibling = textNode.prev;
+                        if (text.length === 0 || isAllWhiteSpaceRegExp.test(text)) {
+                          textNode.remove();
+                          textNode = sibling;
+                        }
+                        textNode = sibling;
+                      }
+                    }
+                  }
+                }
+              }
+              if (isInWhiteSpacePreservedElement && whiteSpaceElements[name]) {
+                isInWhiteSpacePreservedElement = false;
+              }
+              if (elementRule.removeEmpty && isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, node)) {
+                if (!node.attr('name') && !node.attr('id')) {
+                  tempNode = node.parent;
+                  if (blockElements[node.name]) {
+                    node.empty().remove();
+                  } else {
+                    node.unwrap();
+                  }
+                  node = tempNode;
+                  return;
+                }
+              }
+              if (elementRule.paddEmpty && (isPaddedWithNbsp(node) || isEmpty$2(schema, nonEmptyElements, whiteSpaceElements, node))) {
+                paddEmptyNode(settings, args, blockElements, node);
+              }
+              node = node.parent;
+            }
+          }
+        }, schema);
+        var rootNode = node = new Node$1(args.context || settings.root_name, 11);
+        parser.parse(html);
+        if (validate && invalidChildren.length) {
+          if (!args.context) {
+            fixInvalidChildren(invalidChildren);
+          } else {
+            args.invalid = true;
+          }
+        }
+        if (rootBlockName && (rootNode.name === 'body' || args.isRootContent)) {
+          addRootBlocks();
+        }
+        if (!args.invalid) {
+          for (name in matchedNodes) {
+            if (!matchedNodes.hasOwnProperty(name)) {
+              continue;
+            }
+            list = nodeFilters[name];
+            nodes = matchedNodes[name];
+            fi = nodes.length;
+            while (fi--) {
+              if (!nodes[fi].parent) {
+                nodes.splice(fi, 1);
+              }
+            }
+            for (i = 0, l = list.length; i < l; i++) {
+              list[i](nodes, name, args);
+            }
+          }
+          for (i = 0, l = attributeFilters.length; i < l; i++) {
+            list = attributeFilters[i];
+            if (list.name in matchedAttributes) {
+              nodes = matchedAttributes[list.name];
+              fi = nodes.length;
+              while (fi--) {
+                if (!nodes[fi].parent) {
+                  nodes.splice(fi, 1);
+                }
+              }
+              for (fi = 0, fl = list.callbacks.length; fi < fl; fi++) {
+                list.callbacks[fi](nodes, list.name, args);
+              }
+            }
+          }
+        }
+        return rootNode;
+      };
+      var exports = {
+        schema: schema,
+        addAttributeFilter: addAttributeFilter,
+        getAttributeFilters: getAttributeFilters,
+        addNodeFilter: addNodeFilter,
+        getNodeFilters: getNodeFilters,
+        filterNode: filterNode,
+        parse: parse
+      };
+      register$2(exports, settings);
+      LegacyFilter.register(exports, settings);
+      return exports;
+    };
+
+    var addTempAttr = function (htmlParser, tempAttrs, name) {
+      if (Tools.inArray(tempAttrs, name) === -1) {
+        htmlParser.addAttributeFilter(name, function (nodes, name) {
+          var i = nodes.length;
+          while (i--) {
+            nodes[i].attr(name, null);
+          }
+        });
+        tempAttrs.push(name);
+      }
+    };
+    var postProcess$1 = function (editor, args, content) {
+      if (!args.no_events && editor) {
+        var outArgs = Events.firePostProcess(editor, merge(args, { content: content }));
+        return outArgs.content;
+      } else {
+        return content;
+      }
+    };
+    var getHtmlFromNode = function (dom, node, args) {
+      var html = Zwsp.trim(args.getInner ? node.innerHTML : dom.getOuterHTML(node));
+      return args.selection || isWsPreserveElement(Element.fromDom(node)) ? html : Tools.trim(html);
+    };
+    var parseHtml = function (htmlParser, html, args) {
+      var parserArgs = args.selection ? merge({ forced_root_block: false }, args) : args;
+      var rootNode = htmlParser.parse(html, parserArgs);
+      DomSerializerFilters.trimTrailingBr(rootNode);
+      return rootNode;
+    };
+    var serializeNode = function (settings, schema, node) {
+      var htmlSerializer = Serializer(settings, schema);
+      return htmlSerializer.serialize(node);
+    };
+    var toHtml = function (editor, settings, schema, rootNode, args) {
+      var content = serializeNode(settings, schema, rootNode);
+      return postProcess$1(editor, args, content);
+    };
+    var DomSerializer = function (settings, editor) {
+      var dom, schema, htmlParser;
+      var tempAttrs = ['data-mce-selected'];
+      dom = editor && editor.dom ? editor.dom : DOMUtils$1.DOM;
+      schema = editor && editor.schema ? editor.schema : Schema(settings);
+      settings.entity_encoding = settings.entity_encoding || 'named';
+      settings.remove_trailing_brs = 'remove_trailing_brs' in settings ? settings.remove_trailing_brs : true;
+      htmlParser = DomParser(settings, schema);
+      DomSerializerFilters.register(htmlParser, settings, dom);
+      var serialize = function (node, parserArgs) {
+        var args = merge({ format: 'html' }, parserArgs ? parserArgs : {});
+        var targetNode = DomSerializerPreProcess.process(editor, node, args);
+        var html = getHtmlFromNode(dom, targetNode, args);
+        var rootNode = parseHtml(htmlParser, html, args);
+        return args.format === 'tree' ? rootNode : toHtml(editor, settings, schema, rootNode, args);
+      };
+      return {
+        schema: schema,
+        addNodeFilter: htmlParser.addNodeFilter,
+        addAttributeFilter: htmlParser.addAttributeFilter,
+        serialize: serialize,
+        addRules: function (rules) {
+          schema.addValidElements(rules);
+        },
+        setRules: function (rules) {
+          schema.setValidElements(rules);
+        },
+        addTempAttr: curry(addTempAttr, htmlParser, tempAttrs),
+        getTempAttrs: function () {
+          return tempAttrs;
+        }
+      };
+    };
+
+    var Serializer$1 = function (settings, editor) {
+      var domSerializer = DomSerializer(settings, editor);
+      return {
+        schema: domSerializer.schema,
+        addNodeFilter: domSerializer.addNodeFilter,
+        addAttributeFilter: domSerializer.addAttributeFilter,
+        serialize: domSerializer.serialize,
+        addRules: domSerializer.addRules,
+        setRules: domSerializer.setRules,
+        addTempAttr: domSerializer.addTempAttr,
+        getTempAttrs: domSerializer.getTempAttrs
+      };
+    };
+
+    function BookmarkManager(selection) {
+      return {
+        getBookmark: curry(Bookmarks.getBookmark, selection),
+        moveToBookmark: curry(Bookmarks.moveToBookmark, selection)
+      };
+    }
+    (function (BookmarkManager) {
+      BookmarkManager.isBookmarkNode = Bookmarks.isBookmarkNode;
+    }(BookmarkManager || (BookmarkManager = {})));
+    var BookmarkManager$1 = BookmarkManager;
+
+    var isContentEditableFalse$a = NodeType.isContentEditableFalse;
+    var isContentEditableTrue$5 = NodeType.isContentEditableTrue;
+    var getContentEditableRoot$1 = function (root, node) {
+      while (node && node !== root) {
+        if (isContentEditableTrue$5(node) || isContentEditableFalse$a(node)) {
+          return node;
+        }
+        node = node.parentNode;
+      }
+      return null;
+    };
+    var ControlSelection = function (selection, editor) {
+      var dom = editor.dom, each = Tools.each;
+      var selectedElm, selectedElmGhost, resizeHelper, resizeHandles, selectedHandle;
+      var startX, startY, selectedElmX, selectedElmY, startW, startH, ratio, resizeStarted;
+      var width, height;
+      var editableDoc = editor.getDoc(), rootDocument = domGlobals.document;
+      var abs = Math.abs, round = Math.round, rootElement = editor.getBody();
+      var startScrollWidth, startScrollHeight;
+      resizeHandles = {
+        nw: [
+          0,
+          0,
+          -1,
+          -1
+        ],
+        ne: [
+          1,
+          0,
+          1,
+          -1
+        ],
+        se: [
+          1,
+          1,
+          1,
+          1
+        ],
+        sw: [
+          0,
+          1,
+          -1,
+          1
+        ]
+      };
+      var isImage = function (elm) {
+        return elm && (elm.nodeName === 'IMG' || editor.dom.is(elm, 'figure.image'));
+      };
+      var isEventOnImageOutsideRange = function (evt, range) {
+        return isImage(evt.target) && !RangePoint.isXYWithinRange(evt.clientX, evt.clientY, range);
+      };
+      var contextMenuSelectImage = function (evt) {
+        var target = evt.target;
+        if (isEventOnImageOutsideRange(evt, editor.selection.getRng()) && !evt.isDefaultPrevented()) {
+          evt.preventDefault();
+          editor.selection.select(target);
+        }
+      };
+      var getResizeTarget = function (elm) {
+        return editor.dom.is(elm, 'figure.image') ? elm.querySelector('img') : elm;
+      };
+      var isResizable = function (elm) {
+        var selector = editor.settings.object_resizing;
+        if (selector === false || Env.iOS) {
+          return false;
+        }
+        if (typeof selector !== 'string') {
+          selector = 'table,img,figure.image,div';
+        }
+        if (elm.getAttribute('data-mce-resize') === 'false') {
+          return false;
+        }
+        if (elm === editor.getBody()) {
+          return false;
+        }
+        return is$1(Element.fromDom(elm), selector);
+      };
+      var resizeGhostElement = function (e) {
+        var deltaX, deltaY, proportional;
+        var resizeHelperX, resizeHelperY;
+        deltaX = e.screenX - startX;
+        deltaY = e.screenY - startY;
+        width = deltaX * selectedHandle[2] + startW;
+        height = deltaY * selectedHandle[3] + startH;
+        width = width < 5 ? 5 : width;
+        height = height < 5 ? 5 : height;
+        if (isImage(selectedElm) && editor.settings.resize_img_proportional !== false) {
+          proportional = !VK.modifierPressed(e);
+        } else {
+          proportional = VK.modifierPressed(e) || isImage(selectedElm) && selectedHandle[2] * selectedHandle[3] !== 0;
+        }
+        if (proportional) {
+          if (abs(deltaX) > abs(deltaY)) {
+            height = round(width * ratio);
+            width = round(height / ratio);
+          } else {
+            width = round(height / ratio);
+            height = round(width * ratio);
+          }
+        }
+        dom.setStyles(getResizeTarget(selectedElmGhost), {
+          width: width,
+          height: height
+        });
+        resizeHelperX = selectedHandle.startPos.x + deltaX;
+        resizeHelperY = selectedHandle.startPos.y + deltaY;
+        resizeHelperX = resizeHelperX > 0 ? resizeHelperX : 0;
+        resizeHelperY = resizeHelperY > 0 ? resizeHelperY : 0;
+        dom.setStyles(resizeHelper, {
+          left: resizeHelperX,
+          top: resizeHelperY,
+          display: 'block'
+        });
+        resizeHelper.innerHTML = width + ' &times; ' + height;
+        if (selectedHandle[2] < 0 && selectedElmGhost.clientWidth <= width) {
+          dom.setStyle(selectedElmGhost, 'left', selectedElmX + (startW - width));
+        }
+        if (selectedHandle[3] < 0 && selectedElmGhost.clientHeight <= height) {
+          dom.setStyle(selectedElmGhost, 'top', selectedElmY + (startH - height));
+        }
+        deltaX = rootElement.scrollWidth - startScrollWidth;
+        deltaY = rootElement.scrollHeight - startScrollHeight;
+        if (deltaX + deltaY !== 0) {
+          dom.setStyles(resizeHelper, {
+            left: resizeHelperX - deltaX,
+            top: resizeHelperY - deltaY
+          });
+        }
+        if (!resizeStarted) {
+          Events.fireObjectResizeStart(editor, selectedElm, startW, startH);
+          resizeStarted = true;
+        }
+      };
+      var endGhostResize = function () {
+        resizeStarted = false;
+        var setSizeProp = function (name, value) {
+          if (value) {
+            if (selectedElm.style[name] || !editor.schema.isValid(selectedElm.nodeName.toLowerCase(), name)) {
+              dom.setStyle(getResizeTarget(selectedElm), name, value);
+            } else {
+              dom.setAttrib(getResizeTarget(selectedElm), name, value);
+            }
+          }
+        };
+        setSizeProp('width', width);
+        setSizeProp('height', height);
+        dom.unbind(editableDoc, 'mousemove', resizeGhostElement);
+        dom.unbind(editableDoc, 'mouseup', endGhostResize);
+        if (rootDocument !== editableDoc) {
+          dom.unbind(rootDocument, 'mousemove', resizeGhostElement);
+          dom.unbind(rootDocument, 'mouseup', endGhostResize);
+        }
+        dom.remove(selectedElmGhost);
+        dom.remove(resizeHelper);
+        showResizeRect(selectedElm);
+        Events.fireObjectResized(editor, selectedElm, width, height);
+        dom.setAttrib(selectedElm, 'style', dom.getAttrib(selectedElm, 'style'));
+        editor.nodeChanged();
+      };
+      var showResizeRect = function (targetElm) {
+        var position, targetWidth, targetHeight, e, rect;
+        hideResizeRect();
+        unbindResizeHandleEvents();
+        position = dom.getPos(targetElm, rootElement);
+        selectedElmX = position.x;
+        selectedElmY = position.y;
+        rect = targetElm.getBoundingClientRect();
+        targetWidth = rect.width || rect.right - rect.left;
+        targetHeight = rect.height || rect.bottom - rect.top;
+        if (selectedElm !== targetElm) {
+          selectedElm = targetElm;
+          width = height = 0;
+        }
+        e = editor.fire('ObjectSelected', { target: targetElm });
+        if (isResizable(targetElm) && !e.isDefaultPrevented()) {
+          each(resizeHandles, function (handle, name) {
+            var handleElm;
+            var startDrag = function (e) {
+              startX = e.screenX;
+              startY = e.screenY;
+              startW = getResizeTarget(selectedElm).clientWidth;
+              startH = getResizeTarget(selectedElm).clientHeight;
+              ratio = startH / startW;
+              selectedHandle = handle;
+              handle.startPos = {
+                x: targetWidth * handle[0] + selectedElmX,
+                y: targetHeight * handle[1] + selectedElmY
+              };
+              startScrollWidth = rootElement.scrollWidth;
+              startScrollHeight = rootElement.scrollHeight;
+              selectedElmGhost = selectedElm.cloneNode(true);
+              dom.addClass(selectedElmGhost, 'mce-clonedresizable');
+              dom.setAttrib(selectedElmGhost, 'data-mce-bogus', 'all');
+              selectedElmGhost.contentEditable = false;
+              selectedElmGhost.unSelectabe = true;
+              dom.setStyles(selectedElmGhost, {
+                left: selectedElmX,
+                top: selectedElmY,
+                margin: 0
+              });
+              selectedElmGhost.removeAttribute('data-mce-selected');
+              rootElement.appendChild(selectedElmGhost);
+              dom.bind(editableDoc, 'mousemove', resizeGhostElement);
+              dom.bind(editableDoc, 'mouseup', endGhostResize);
+              if (rootDocument !== editableDoc) {
+                dom.bind(rootDocument, 'mousemove', resizeGhostElement);
+                dom.bind(rootDocument, 'mouseup', endGhostResize);
+              }
+              resizeHelper = dom.add(rootElement, 'div', {
+                'class': 'mce-resize-helper',
+                'data-mce-bogus': 'all'
+              }, startW + ' &times; ' + startH);
+            };
+            handleElm = dom.get('mceResizeHandle' + name);
+            if (handleElm) {
+              dom.remove(handleElm);
+            }
+            handleElm = dom.add(rootElement, 'div', {
+              'id': 'mceResizeHandle' + name,
+              'data-mce-bogus': 'all',
+              'class': 'mce-resizehandle',
+              'unselectable': true,
+              'style': 'cursor:' + name + '-resize; margin:0; padding:0'
+            });
+            if (Env.ie === 11) {
+              handleElm.contentEditable = false;
+            }
+            dom.bind(handleElm, 'mousedown', function (e) {
+              e.stopImmediatePropagation();
+              e.preventDefault();
+              startDrag(e);
+            });
+            handle.elm = handleElm;
+            dom.setStyles(handleElm, {
+              left: targetWidth * handle[0] + selectedElmX - handleElm.offsetWidth / 2,
+              top: targetHeight * handle[1] + selectedElmY - handleElm.offsetHeight / 2
+            });
+          });
+        } else {
+          hideResizeRect();
+        }
+        selectedElm.setAttribute('data-mce-selected', '1');
+      };
+      var hideResizeRect = function () {
+        var name, handleElm;
+        unbindResizeHandleEvents();
+        if (selectedElm) {
+          selectedElm.removeAttribute('data-mce-selected');
+        }
+        for (name in resizeHandles) {
+          handleElm = dom.get('mceResizeHandle' + name);
+          if (handleElm) {
+            dom.unbind(handleElm);
+            dom.remove(handleElm);
+          }
+        }
+      };
+      var updateResizeRect = function (e) {
+        var startElm, controlElm;
+        var isChildOrEqual = function (node, parent) {
+          if (node) {
+            do {
+              if (node === parent) {
+                return true;
+              }
+            } while (node = node.parentNode);
+          }
+        };
+        if (resizeStarted || editor.removed) {
+          return;
+        }
+        each(dom.select('img[data-mce-selected],hr[data-mce-selected]'), function (img) {
+          img.removeAttribute('data-mce-selected');
+        });
+        controlElm = e.type === 'mousedown' ? e.target : selection.getNode();
+        controlElm = dom.$(controlElm).closest('table,img,figure.image,hr')[0];
+        if (isChildOrEqual(controlElm, rootElement)) {
+          disableGeckoResize();
+          startElm = selection.getStart(true);
+          if (isChildOrEqual(startElm, controlElm) && isChildOrEqual(selection.getEnd(true), controlElm)) {
+            showResizeRect(controlElm);
+            return;
+          }
+        }
+        hideResizeRect();
+      };
+      var isWithinContentEditableFalse = function (elm) {
+        return isContentEditableFalse$a(getContentEditableRoot$1(editor.getBody(), elm));
+      };
+      var unbindResizeHandleEvents = function () {
+        for (var name in resizeHandles) {
+          var handle = resizeHandles[name];
+          if (handle.elm) {
+            dom.unbind(handle.elm);
+            delete handle.elm;
+          }
+        }
+      };
+      var disableGeckoResize = function () {
+        try {
+          editor.getDoc().execCommand('enableObjectResizing', false, false);
+        } catch (ex) {
+        }
+      };
+      editor.on('init', function () {
+        disableGeckoResize();
+        if (Env.ie && Env.ie >= 11) {
+          editor.on('mousedown click', function (e) {
+            var target = e.target, nodeName = target.nodeName;
+            if (!resizeStarted && /^(TABLE|IMG|HR)$/.test(nodeName) && !isWithinContentEditableFalse(target)) {
+              if (e.button !== 2) {
+                editor.selection.select(target, nodeName === 'TABLE');
+              }
+              if (e.type === 'mousedown') {
+                editor.nodeChanged();
+              }
+            }
+          });
+          editor.dom.bind(rootElement, 'mscontrolselect', function (e) {
+            var delayedSelect = function (node) {
+              Delay.setEditorTimeout(editor, function () {
+                editor.selection.select(node);
+              });
+            };
+            if (isWithinContentEditableFalse(e.target)) {
+              e.preventDefault();
+              delayedSelect(e.target);
+              return;
+            }
+            if (/^(TABLE|IMG|HR)$/.test(e.target.nodeName)) {
+              e.preventDefault();
+              if (e.target.tagName === 'IMG') {
+                delayedSelect(e.target);
+              }
+            }
+          });
+        }
+        var throttledUpdateResizeRect = Delay.throttle(function (e) {
+          if (!editor.composing) {
+            updateResizeRect(e);
+          }
+        });
+        editor.on('nodechange ResizeEditor ResizeWindow drop FullscreenStateChanged', throttledUpdateResizeRect);
+        editor.on('keyup compositionend', function (e) {
+          if (selectedElm && selectedElm.nodeName === 'TABLE') {
+            throttledUpdateResizeRect(e);
+          }
+        });
+        editor.on('hide blur', hideResizeRect);
+        editor.on('contextmenu', contextMenuSelectImage);
+      });
+      editor.on('remove', unbindResizeHandleEvents);
+      var destroy = function () {
+        selectedElm = selectedElmGhost = null;
+      };
+      return {
+        isResizable: isResizable,
+        showResizeRect: showResizeRect,
+        hideResizeRect: hideResizeRect,
+        updateResizeRect: updateResizeRect,
+        destroy: destroy
+      };
+    };
+
+    var getPos$1 = function (elm) {
+      var x = 0, y = 0;
+      var offsetParent = elm;
+      while (offsetParent && offsetParent.nodeType) {
+        x += offsetParent.offsetLeft || 0;
+        y += offsetParent.offsetTop || 0;
+        offsetParent = offsetParent.offsetParent;
+      }
+      return {
+        x: x,
+        y: y
+      };
+    };
+    var fireScrollIntoViewEvent = function (editor, elm, alignToTop) {
+      var scrollEvent = {
+        elm: elm,
+        alignToTop: alignToTop
+      };
+      editor.fire('ScrollIntoView', scrollEvent);
+      return scrollEvent.isDefaultPrevented();
+    };
+    var scrollElementIntoView = function (editor, elm, alignToTop) {
+      var y, viewPort;
+      var dom = editor.dom;
+      var root = dom.getRoot();
+      var viewPortY, viewPortH, offsetY = 0;
+      if (fireScrollIntoViewEvent(editor, elm, alignToTop)) {
+        return;
+      }
+      if (!NodeType.isElement(elm)) {
+        return;
+      }
+      if (alignToTop === false) {
+        offsetY = elm.offsetHeight;
+      }
+      if (root.nodeName !== 'BODY') {
+        var scrollContainer = editor.selection.getScrollContainer();
+        if (scrollContainer) {
+          y = getPos$1(elm).y - getPos$1(scrollContainer).y + offsetY;
+          viewPortH = scrollContainer.clientHeight;
+          viewPortY = scrollContainer.scrollTop;
+          if (y < viewPortY || y + 25 > viewPortY + viewPortH) {
+            scrollContainer.scrollTop = y < viewPortY ? y : y - viewPortH + 25;
+          }
+          return;
+        }
+      }
+      viewPort = dom.getViewPort(editor.getWin());
+      y = dom.getPos(elm).y + offsetY;
+      viewPortY = viewPort.y;
+      viewPortH = viewPort.h;
+      if (y < viewPort.y || y + 25 > viewPortY + viewPortH) {
+        editor.getWin().scrollTo(0, y < viewPortY ? y : y - viewPortH + 25);
+      }
+    };
+    var getViewPortRect = function (editor) {
+      if (editor.inline) {
+        return editor.getBody().getBoundingClientRect();
+      } else {
+        var win = editor.getWin();
+        return {
+          left: 0,
+          right: win.innerWidth,
+          top: 0,
+          bottom: win.innerHeight,
+          width: win.innerWidth,
+          height: win.innerHeight
+        };
+      }
+    };
+    var scrollBy = function (editor, dx, dy) {
+      if (editor.inline) {
+        editor.getBody().scrollLeft += dx;
+        editor.getBody().scrollTop += dy;
+      } else {
+        editor.getWin().scrollBy(dx, dy);
+      }
+    };
+    var scrollRangeIntoView = function (editor, rng) {
+      head(CaretPosition.fromRangeStart(rng).getClientRects()).each(function (rngRect) {
+        var bodyRect = getViewPortRect(editor);
+        var overflow = getOverflow(bodyRect, rngRect);
+        var margin = 4;
+        var dx = overflow.x > 0 ? overflow.x + margin : overflow.x - margin;
+        var dy = overflow.y > 0 ? overflow.y + margin : overflow.y - margin;
+        scrollBy(editor, overflow.x !== 0 ? dx : 0, overflow.y !== 0 ? dy : 0);
+      });
+    };
+    var ScrollIntoView = {
+      scrollElementIntoView: scrollElementIntoView,
+      scrollRangeIntoView: scrollRangeIntoView
+    };
+
+    var hasCeProperty = function (node) {
+      return NodeType.isContentEditableTrue(node) || NodeType.isContentEditableFalse(node);
+    };
+    var findParent = function (node, rootNode, predicate) {
+      while (node && node !== rootNode) {
+        if (predicate(node)) {
+          return node;
+        }
+        node = node.parentNode;
+      }
+      return null;
+    };
+    var findClosestIeRange = function (clientX, clientY, doc) {
+      var element, rng, rects;
+      element = doc.elementFromPoint(clientX, clientY);
+      rng = doc.body.createTextRange();
+      if (!element || element.tagName === 'HTML') {
+        element = doc.body;
+      }
+      rng.moveToElementText(element);
+      rects = Tools.toArray(rng.getClientRects());
+      rects = rects.sort(function (a, b) {
+        a = Math.abs(Math.max(a.top - clientY, a.bottom - clientY));
+        b = Math.abs(Math.max(b.top - clientY, b.bottom - clientY));
+        return a - b;
+      });
+      if (rects.length > 0) {
+        clientY = (rects[0].bottom + rects[0].top) / 2;
+        try {
+          rng.moveToPoint(clientX, clientY);
+          rng.collapse(true);
+          return rng;
+        } catch (ex) {
+        }
+      }
+      return null;
+    };
+    var moveOutOfContentEditableFalse = function (rng, rootNode) {
+      var parentElement = rng && rng.parentElement ? rng.parentElement() : null;
+      return NodeType.isContentEditableFalse(findParent(parentElement, rootNode, hasCeProperty)) ? null : rng;
+    };
+    var fromPoint$1 = function (clientX, clientY, doc) {
+      var rng, point;
+      var pointDoc = doc;
+      if (pointDoc.caretPositionFromPoint) {
+        point = pointDoc.caretPositionFromPoint(clientX, clientY);
+        if (point) {
+          rng = doc.createRange();
+          rng.setStart(point.offsetNode, point.offset);
+          rng.collapse(true);
+        }
+      } else if (doc.caretRangeFromPoint) {
+        rng = doc.caretRangeFromPoint(clientX, clientY);
+      } else if (pointDoc.body.createTextRange) {
+        rng = pointDoc.body.createTextRange();
+        try {
+          rng.moveToPoint(clientX, clientY);
+          rng.collapse(true);
+        } catch (ex) {
+          rng = findClosestIeRange(clientX, clientY, doc);
+        }
+        return moveOutOfContentEditableFalse(rng, doc.body);
+      }
+      return rng;
+    };
+    var CaretRangeFromPoint = { fromPoint: fromPoint$1 };
+
+    var processRanges = function (editor, ranges) {
+      return map(ranges, function (range) {
+        var evt = editor.fire('GetSelectionRange', { range: range });
+        return evt.range !== range ? evt.range : range;
+      });
+    };
+    var EventProcessRanges = { processRanges: processRanges };
+
+    var fromElements = function (elements, scope) {
+      var doc = scope || domGlobals.document;
+      var fragment = doc.createDocumentFragment();
+      each(elements, function (element) {
+        fragment.appendChild(element.dom());
+      });
+      return Element.fromDom(fragment);
+    };
+
+    var tableModel = Immutable('element', 'width', 'rows');
+    var tableRow = Immutable('element', 'cells');
+    var cellPosition = Immutable('x', 'y');
+    var getSpan = function (td, key) {
+      var value = parseInt(get$1(td, key), 10);
+      return isNaN(value) ? 1 : value;
+    };
+    var fillout = function (table, x, y, tr, td) {
+      var rowspan = getSpan(td, 'rowspan');
+      var colspan = getSpan(td, 'colspan');
+      var rows = table.rows();
+      for (var y2 = y; y2 < y + rowspan; y2++) {
+        if (!rows[y2]) {
+          rows[y2] = tableRow(deep(tr), []);
+        }
+        for (var x2 = x; x2 < x + colspan; x2++) {
+          var cells = rows[y2].cells();
+          cells[x2] = y2 === y && x2 === x ? td : shallow(td);
+        }
+      }
+    };
+    var cellExists = function (table, x, y) {
+      var rows = table.rows();
+      var cells = rows[y] ? rows[y].cells() : [];
+      return !!cells[x];
+    };
+    var skipCellsX = function (table, x, y) {
+      while (cellExists(table, x, y)) {
+        x++;
+      }
+      return x;
+    };
+    var getWidth = function (rows) {
+      return foldl(rows, function (acc, row) {
+        return row.cells().length > acc ? row.cells().length : acc;
+      }, 0);
+    };
+    var findElementPos = function (table, element) {
+      var rows = table.rows();
+      for (var y = 0; y < rows.length; y++) {
+        var cells = rows[y].cells();
+        for (var x = 0; x < cells.length; x++) {
+          if (eq(cells[x], element)) {
+            return Option.some(cellPosition(x, y));
+          }
+        }
+      }
+      return Option.none();
+    };
+    var extractRows = function (table, sx, sy, ex, ey) {
+      var newRows = [];
+      var rows = table.rows();
+      for (var y = sy; y <= ey; y++) {
+        var cells = rows[y].cells();
+        var slice = sx < ex ? cells.slice(sx, ex + 1) : cells.slice(ex, sx + 1);
+        newRows.push(tableRow(rows[y].element(), slice));
+      }
+      return newRows;
+    };
+    var subTable = function (table, startPos, endPos) {
+      var sx = startPos.x(), sy = startPos.y();
+      var ex = endPos.x(), ey = endPos.y();
+      var newRows = sy < ey ? extractRows(table, sx, sy, ex, ey) : extractRows(table, sx, ey, ex, sy);
+      return tableModel(table.element(), getWidth(newRows), newRows);
+    };
+    var createDomTable = function (table, rows) {
+      var tableElement = shallow(table.element());
+      var tableBody = Element.fromTag('tbody');
+      append$1(tableBody, rows);
+      append(tableElement, tableBody);
+      return tableElement;
+    };
+    var modelRowsToDomRows = function (table) {
+      return map(table.rows(), function (row) {
+        var cells = map(row.cells(), function (cell) {
+          var td = deep(cell);
+          remove(td, 'colspan');
+          remove(td, 'rowspan');
+          return td;
+        });
+        var tr = shallow(row.element());
+        append$1(tr, cells);
+        return tr;
+      });
+    };
+    var fromDom$1 = function (tableElm) {
+      var table = tableModel(shallow(tableElm), 0, []);
+      each(descendants$1(tableElm, 'tr'), function (tr, y) {
+        each(descendants$1(tr, 'td,th'), function (td, x) {
+          fillout(table, skipCellsX(table, x, y), y, tr, td);
+        });
+      });
+      return tableModel(table.element(), getWidth(table.rows()), table.rows());
+    };
+    var toDom = function (table) {
+      return createDomTable(table, modelRowsToDomRows(table));
+    };
+    var subsection = function (table, startElement, endElement) {
+      return findElementPos(table, startElement).bind(function (startPos) {
+        return findElementPos(table, endElement).map(function (endPos) {
+          return subTable(table, startPos, endPos);
+        });
+      });
+    };
+    var SimpleTableModel = {
+      fromDom: fromDom$1,
+      toDom: toDom,
+      subsection: subsection
+    };
+
+    var getRanges = function (selection) {
+      var ranges = [];
+      if (selection) {
+        for (var i = 0; i < selection.rangeCount; i++) {
+          ranges.push(selection.getRangeAt(i));
+        }
+      }
+      return ranges;
+    };
+    var getSelectedNodes = function (ranges) {
+      return bind(ranges, function (range) {
+        var node = getSelectedNode(range);
+        return node ? [Element.fromDom(node)] : [];
+      });
+    };
+    var hasMultipleRanges = function (selection) {
+      return getRanges(selection).length > 1;
+    };
+    var MultiRange = {
+      getRanges: getRanges,
+      getSelectedNodes: getSelectedNodes,
+      hasMultipleRanges: hasMultipleRanges
+    };
+
+    var getCellsFromRanges = function (ranges) {
+      return filter(MultiRange.getSelectedNodes(ranges), isTableCell);
+    };
+    var getCellsFromElement = function (elm) {
+      return descendants$1(elm, 'td[data-mce-selected],th[data-mce-selected]');
+    };
+    var getCellsFromElementOrRanges = function (ranges, element) {
+      var selectedCells = getCellsFromElement(element);
+      var rangeCells = getCellsFromRanges(ranges);
+      return selectedCells.length > 0 ? selectedCells : rangeCells;
+    };
+    var getCellsFromEditor = function (editor) {
+      return getCellsFromElementOrRanges(MultiRange.getRanges(editor.selection.getSel()), Element.fromDom(editor.getBody()));
+    };
+    var TableCellSelection = {
+      getCellsFromRanges: getCellsFromRanges,
+      getCellsFromElement: getCellsFromElement,
+      getCellsFromElementOrRanges: getCellsFromElementOrRanges,
+      getCellsFromEditor: getCellsFromEditor
+    };
+
+    var findParentListContainer = function (parents) {
+      return find(parents, function (elm) {
+        return name(elm) === 'ul' || name(elm) === 'ol';
+      });
+    };
+    var getFullySelectedListWrappers = function (parents, rng) {
+      return find(parents, function (elm) {
+        return name(elm) === 'li' && hasAllContentsSelected(elm, rng);
+      }).fold(constant([]), function (li) {
+        return findParentListContainer(parents).map(function (listCont) {
+          return [
+            Element.fromTag('li'),
+            Element.fromTag(name(listCont))
+          ];
+        }).getOr([]);
+      });
+    };
+    var wrap$3 = function (innerElm, elms) {
+      var wrapped = foldl(elms, function (acc, elm) {
+        append(elm, acc);
+        return elm;
+      }, innerElm);
+      return elms.length > 0 ? fromElements([wrapped]) : wrapped;
+    };
+    var directListWrappers = function (commonAnchorContainer) {
+      if (isListItem(commonAnchorContainer)) {
+        return parent(commonAnchorContainer).filter(isList).fold(constant([]), function (listElm) {
+          return [
+            commonAnchorContainer,
+            listElm
+          ];
+        });
+      } else {
+        return isList(commonAnchorContainer) ? [commonAnchorContainer] : [];
+      }
+    };
+    var getWrapElements = function (rootNode, rng) {
+      var commonAnchorContainer = Element.fromDom(rng.commonAncestorContainer);
+      var parents = Parents.parentsAndSelf(commonAnchorContainer, rootNode);
+      var wrapElements = filter(parents, function (elm) {
+        return isInline(elm) || isHeading(elm);
+      });
+      var listWrappers = getFullySelectedListWrappers(parents, rng);
+      var allWrappers = wrapElements.concat(listWrappers.length ? listWrappers : directListWrappers(commonAnchorContainer));
+      return map(allWrappers, shallow);
+    };
+    var emptyFragment = function () {
+      return fromElements([]);
+    };
+    var getFragmentFromRange = function (rootNode, rng) {
+      return wrap$3(Element.fromDom(rng.cloneContents()), getWrapElements(rootNode, rng));
+    };
+    var getParentTable = function (rootElm, cell) {
+      return ancestor$1(cell, 'table', curry(eq, rootElm));
+    };
+    var getTableFragment = function (rootNode, selectedTableCells) {
+      return getParentTable(rootNode, selectedTableCells[0]).bind(function (tableElm) {
+        var firstCell = selectedTableCells[0];
+        var lastCell = selectedTableCells[selectedTableCells.length - 1];
+        var fullTableModel = SimpleTableModel.fromDom(tableElm);
+        return SimpleTableModel.subsection(fullTableModel, firstCell, lastCell).map(function (sectionedTableModel) {
+          return fromElements([SimpleTableModel.toDom(sectionedTableModel)]);
+        });
+      }).getOrThunk(emptyFragment);
+    };
+    var getSelectionFragment = function (rootNode, ranges) {
+      return ranges.length > 0 && ranges[0].collapsed ? emptyFragment() : getFragmentFromRange(rootNode, ranges[0]);
+    };
+    var read$2 = function (rootNode, ranges) {
+      var selectedCells = TableCellSelection.getCellsFromElementOrRanges(ranges, rootNode);
+      return selectedCells.length > 0 ? getTableFragment(rootNode, selectedCells) : getSelectionFragment(rootNode, ranges);
+    };
+    var FragmentReader = { read: read$2 };
+
+    var getTextContent = function (editor) {
+      return Option.from(editor.selection.getRng()).map(function (rng) {
+        var bin = editor.dom.add(editor.getBody(), 'div', {
+          'data-mce-bogus': 'all',
+          'style': 'overflow: hidden; opacity: 0;'
+        }, rng.cloneContents());
+        var text = Zwsp.trim(bin.innerText);
+        editor.dom.remove(bin);
+        return text;
+      }).getOr('');
+    };
+    var getHtmlContent = function (editor, args) {
+      var rng = editor.selection.getRng(), tmpElm = editor.dom.create('body');
+      var sel = editor.selection.getSel();
+      var fragment;
+      var ranges = EventProcessRanges.processRanges(editor, MultiRange.getRanges(sel));
+      fragment = args.contextual ? FragmentReader.read(Element.fromDom(editor.getBody()), ranges).dom() : rng.cloneContents();
+      if (fragment) {
+        tmpElm.appendChild(fragment);
+      }
+      return editor.selection.serializer.serialize(tmpElm, args);
+    };
+    var getContent$1 = function (editor, args) {
+      if (args === void 0) {
+        args = {};
+      }
+      args.get = true;
+      args.format = args.format || 'html';
+      args.selection = true;
+      args = editor.fire('BeforeGetContent', args);
+      if (args.isDefaultPrevented()) {
+        editor.fire('GetContent', args);
+        return args.content;
+      }
+      if (args.format === 'text') {
+        return getTextContent(editor);
+      } else {
+        args.getInner = true;
+        var content = getHtmlContent(editor, args);
+        if (args.format === 'tree') {
+          return content;
+        } else {
+          args.content = editor.selection.isCollapsed() ? '' : content;
+          editor.fire('GetContent', args);
+          return args.content;
+        }
+      }
+    };
+    var GetSelectionContent = { getContent: getContent$1 };
+
+    var findParent$1 = function (node, rootNode, predicate) {
+      while (node && node !== rootNode) {
+        if (predicate(node)) {
+          return node;
+        }
+        node = node.parentNode;
+      }
+      return null;
+    };
+    var hasParent = function (node, rootNode, predicate) {
+      return findParent$1(node, rootNode, predicate) !== null;
+    };
+    var hasParentWithName = function (node, rootNode, name) {
+      return hasParent(node, rootNode, function (node) {
+        return node.nodeName === name;
+      });
+    };
+    var isTable$3 = function (node) {
+      return node && node.nodeName === 'TABLE';
+    };
+    var isTableCell$3 = function (node) {
+      return node && /^(TD|TH|CAPTION)$/.test(node.nodeName);
+    };
+    var isCeFalseCaretContainer = function (node, rootNode) {
+      return isCaretContainer(node) && hasParent(node, rootNode, isCaretNode) === false;
+    };
+    var hasBrBeforeAfter = function (dom, node, left) {
+      var walker = new TreeWalker(node, dom.getParent(node.parentNode, dom.isBlock) || dom.getRoot());
+      while (node = walker[left ? 'prev' : 'next']()) {
+        if (NodeType.isBr(node)) {
+          return true;
+        }
+      }
+    };
+    var isPrevNode = function (node, name) {
+      return node.previousSibling && node.previousSibling.nodeName === name;
+    };
+    var hasContentEditableFalseParent = function (body, node) {
+      while (node && node !== body) {
+        if (NodeType.isContentEditableFalse(node)) {
+          return true;
+        }
+        node = node.parentNode;
+      }
+      return false;
+    };
+    var findTextNodeRelative = function (dom, isAfterNode, collapsed, left, startNode) {
+      var lastInlineElement;
+      var body = dom.getRoot();
+      var node;
+      var nonEmptyElementsMap = dom.schema.getNonEmptyElements();
+      var parentBlockContainer = dom.getParent(startNode.parentNode, dom.isBlock) || body;
+      if (left && NodeType.isBr(startNode) && isAfterNode && dom.isEmpty(parentBlockContainer)) {
+        return Option.some(CaretPosition(startNode.parentNode, dom.nodeIndex(startNode)));
+      }
+      var walker = new TreeWalker(startNode, parentBlockContainer);
+      while (node = walker[left ? 'prev' : 'next']()) {
+        if (dom.getContentEditableParent(node) === 'false' || isCeFalseCaretContainer(node, body)) {
+          return Option.none();
+        }
+        if (NodeType.isText(node) && node.nodeValue.length > 0) {
+          if (hasParentWithName(node, body, 'A') === false) {
+            return Option.some(CaretPosition(node, left ? node.nodeValue.length : 0));
+          }
+          return Option.none();
+        }
+        if (dom.isBlock(node) || nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
+          return Option.none();
+        }
+        lastInlineElement = node;
+      }
+      if (collapsed && lastInlineElement) {
+        return Option.some(CaretPosition(lastInlineElement, 0));
+      }
+      return Option.none();
+    };
+    var normalizeEndPoint = function (dom, collapsed, start, rng) {
+      var container, offset;
+      var body = dom.getRoot();
+      var node, nonEmptyElementsMap;
+      var directionLeft, isAfterNode, normalized = false;
+      container = rng[(start ? 'start' : 'end') + 'Container'];
+      offset = rng[(start ? 'start' : 'end') + 'Offset'];
+      isAfterNode = NodeType.isElement(container) && offset === container.childNodes.length;
+      nonEmptyElementsMap = dom.schema.getNonEmptyElements();
+      directionLeft = start;
+      if (isCaretContainer(container)) {
+        return Option.none();
+      }
+      if (NodeType.isElement(container) && offset > container.childNodes.length - 1) {
+        directionLeft = false;
+      }
+      if (NodeType.isDocument(container)) {
+        container = body;
+        offset = 0;
+      }
+      if (container === body) {
+        if (directionLeft) {
+          node = container.childNodes[offset > 0 ? offset - 1 : 0];
+          if (node) {
+            if (isCaretContainer(node)) {
+              return Option.none();
+            }
+            if (nonEmptyElementsMap[node.nodeName] || isTable$3(node)) {
+              return Option.none();
+            }
+          }
+        }
+        if (container.hasChildNodes()) {
+          offset = Math.min(!directionLeft && offset > 0 ? offset - 1 : offset, container.childNodes.length - 1);
+          container = container.childNodes[offset];
+          offset = NodeType.isText(container) && isAfterNode ? container.data.length : 0;
+          if (!collapsed && container === body.lastChild && isTable$3(container)) {
+            return Option.none();
+          }
+          if (hasContentEditableFalseParent(body, container) || isCaretContainer(container)) {
+            return Option.none();
+          }
+          if (container.hasChildNodes() && isTable$3(container) === false) {
+            node = container;
+            var walker = new TreeWalker(container, body);
+            do {
+              if (NodeType.isContentEditableFalse(node) || isCaretContainer(node)) {
+                normalized = false;
+                break;
+              }
+              if (NodeType.isText(node) && node.nodeValue.length > 0) {
+                offset = directionLeft ? 0 : node.nodeValue.length;
+                container = node;
+                normalized = true;
+                break;
+              }
+              if (nonEmptyElementsMap[node.nodeName.toLowerCase()] && !isTableCell$3(node)) {
+                offset = dom.nodeIndex(node);
+                container = node.parentNode;
+                if (!directionLeft) {
+                  offset++;
+                }
+                normalized = true;
+                break;
+              }
+            } while (node = directionLeft ? walker.next() : walker.prev());
+          }
+        }
+      }
+      if (collapsed) {
+        if (NodeType.isText(container) && offset === 0) {
+          findTextNodeRelative(dom, isAfterNode, collapsed, true, container).each(function (pos) {
+            container = pos.container();
+            offset = pos.offset();
+            normalized = true;
+          });
+        }
+        if (NodeType.isElement(container)) {
+          node = container.childNodes[offset];
+          if (!node) {
+            node = container.childNodes[offset - 1];
+          }
+          if (node && NodeType.isBr(node) && !isPrevNode(node, 'A') && !hasBrBeforeAfter(dom, node, false) && !hasBrBeforeAfter(dom, node, true)) {
+            findTextNodeRelative(dom, isAfterNode, collapsed, true, node).each(function (pos) {
+              container = pos.container();
+              offset = pos.offset();
+              normalized = true;
+            });
+          }
+        }
+      }
+      if (directionLeft && !collapsed && NodeType.isText(container) && offset === container.nodeValue.length) {
+        findTextNodeRelative(dom, isAfterNode, collapsed, false, container).each(function (pos) {
+          container = pos.container();
+          offset = pos.offset();
+          normalized = true;
+        });
+      }
+      return normalized ? Option.some(CaretPosition(container, offset)) : Option.none();
+    };
+    var normalize$2 = function (dom, rng) {
+      var collapsed = rng.collapsed, normRng = rng.cloneRange();
+      var startPos = CaretPosition.fromRangeStart(rng);
+      normalizeEndPoint(dom, collapsed, true, normRng).each(function (pos) {
+        if (!collapsed || !CaretPosition.isAbove(startPos, pos)) {
+          normRng.setStart(pos.container(), pos.offset());
+        }
+      });
+      if (!collapsed) {
+        normalizeEndPoint(dom, collapsed, false, normRng).each(function (pos) {
+          normRng.setEnd(pos.container(), pos.offset());
+        });
+      }
+      if (collapsed) {
+        normRng.collapse(true);
+      }
+      return RangeCompare.isEq(rng, normRng) ? Option.none() : Option.some(normRng);
+    };
+    var NormalizeRange = { normalize: normalize$2 };
+
+    var prependData = function (target, data) {
+      target.insertData(0, data);
+    };
+    var removeEmpty = function (text) {
+      if (text.dom().length === 0) {
+        remove$1(text);
+        return Option.none();
+      }
+      return Option.some(text);
+    };
+    var rngSetContent = function (rng, fragment) {
+      var firstChild = Option.from(fragment.firstChild).map(Element.fromDom);
+      var lastChild = Option.from(fragment.lastChild).map(Element.fromDom);
+      rng.deleteContents();
+      rng.insertNode(fragment);
+      var prevText = firstChild.bind(prevSibling).filter(isText).bind(removeEmpty);
+      var nextText = lastChild.bind(nextSibling).filter(isText).bind(removeEmpty);
+      liftN([
+        prevText,
+        firstChild.filter(isText)
+      ], function (prev, start) {
+        prependData(start.dom(), prev.dom().data);
+        remove$1(prev);
+      });
+      liftN([
+        nextText,
+        lastChild.filter(isText)
+      ], function (next, end) {
+        var oldLength = end.dom().length;
+        end.dom().appendData(next.dom().data);
+        rng.setEnd(end.dom(), oldLength);
+        remove$1(next);
+      });
+      rng.collapse(false);
+    };
+    var setupArgs = function (args, content) {
+      args = args || { format: 'html' };
+      args.set = true;
+      args.selection = true;
+      args.content = content;
+      return args;
+    };
+    var setContent$1 = function (editor, content, args) {
+      args = setupArgs(args, content);
+      if (!args.no_events) {
+        args = editor.fire('BeforeSetContent', args);
+        if (args.isDefaultPrevented()) {
+          editor.fire('SetContent', args);
+          return;
+        }
+      }
+      var rng = editor.selection.getRng();
+      rngSetContent(rng, rng.createContextualFragment(args.content));
+      editor.selection.setRng(rng);
+      ScrollIntoView.scrollRangeIntoView(editor, rng);
+      if (!args.no_events) {
+        editor.fire('SetContent', args);
+      }
+    };
+    var SetSelectionContent = { setContent: setContent$1 };
+
+    var getEndpointElement = function (root, rng, start, real, resolve) {
+      var container = start ? rng.startContainer : rng.endContainer;
+      var offset = start ? rng.startOffset : rng.endOffset;
+      return Option.from(container).map(Element.fromDom).map(function (elm) {
+        return !real || !rng.collapsed ? child(elm, resolve(elm, offset)).getOr(elm) : elm;
+      }).bind(function (elm) {
+        return isElement(elm) ? Option.some(elm) : parent(elm);
+      }).map(function (elm) {
+        return elm.dom();
+      }).getOr(root);
+    };
+    var getStart = function (root, rng, real) {
+      return getEndpointElement(root, rng, true, real, function (elm, offset) {
+        return Math.min(childNodesCount(elm), offset);
+      });
+    };
+    var getEnd = function (root, rng, real) {
+      return getEndpointElement(root, rng, false, real, function (elm, offset) {
+        return offset > 0 ? offset - 1 : offset;
+      });
+    };
+    var skipEmptyTextNodes = function (node, forwards) {
+      var orig = node;
+      while (node && NodeType.isText(node) && node.length === 0) {
+        node = forwards ? node.nextSibling : node.previousSibling;
+      }
+      return node || orig;
+    };
+    var getNode$1 = function (root, rng) {
+      var elm, startContainer, endContainer, startOffset, endOffset;
+      if (!rng) {
+        return root;
+      }
+      startContainer = rng.startContainer;
+      endContainer = rng.endContainer;
+      startOffset = rng.startOffset;
+      endOffset = rng.endOffset;
+      elm = rng.commonAncestorContainer;
+      if (!rng.collapsed) {
+        if (startContainer === endContainer) {
+          if (endOffset - startOffset < 2) {
+            if (startContainer.hasChildNodes()) {
+              elm = startContainer.childNodes[startOffset];
+            }
+          }
+        }
+        if (startContainer.nodeType === 3 && endContainer.nodeType === 3) {
+          if (startContainer.length === startOffset) {
+            startContainer = skipEmptyTextNodes(startContainer.nextSibling, true);
+          } else {
+            startContainer = startContainer.parentNode;
+          }
+          if (endOffset === 0) {
+            endContainer = skipEmptyTextNodes(endContainer.previousSibling, false);
+          } else {
+            endContainer = endContainer.parentNode;
+          }
+          if (startContainer && startContainer === endContainer) {
+            return startContainer;
+          }
+        }
+      }
+      if (elm && elm.nodeType === 3) {
+        return elm.parentNode;
+      }
+      return elm;
+    };
+    var getSelectedBlocks = function (dom, rng, startElm, endElm) {
+      var node, root;
+      var selectedBlocks = [];
+      root = dom.getRoot();
+      startElm = dom.getParent(startElm || getStart(root, rng, rng.collapsed), dom.isBlock);
+      endElm = dom.getParent(endElm || getEnd(root, rng, rng.collapsed), dom.isBlock);
+      if (startElm && startElm !== root) {
+        selectedBlocks.push(startElm);
+      }
+      if (startElm && endElm && startElm !== endElm) {
+        node = startElm;
+        var walker = new TreeWalker(startElm, root);
+        while ((node = walker.next()) && node !== endElm) {
+          if (dom.isBlock(node)) {
+            selectedBlocks.push(node);
+          }
+        }
+      }
+      if (endElm && startElm !== endElm && endElm !== root) {
+        selectedBlocks.push(endElm);
+      }
+      return selectedBlocks;
+    };
+    var select$1 = function (dom, node, content) {
+      return Option.from(node).map(function (node) {
+        var idx = dom.nodeIndex(node);
+        var rng = dom.createRng();
+        rng.setStart(node.parentNode, idx);
+        rng.setEnd(node.parentNode, idx + 1);
+        if (content) {
+          moveEndPoint$1(dom, rng, node, true);
+          moveEndPoint$1(dom, rng, node, false);
+        }
+        return rng;
+      });
+    };
+
+    var deleteFromCallbackMap = function (callbackMap, selector, callback) {
+      if (callbackMap && callbackMap.hasOwnProperty(selector)) {
+        var newCallbacks = filter(callbackMap[selector], function (cb) {
+          return cb !== callback;
+        });
+        if (newCallbacks.length === 0) {
+          delete callbackMap[selector];
+        } else {
+          callbackMap[selector] = newCallbacks;
+        }
+      }
+    };
+    function SelectorChanged (dom, editor) {
+      var selectorChangedData, currentSelectors;
+      return {
+        selectorChangedWithUnbind: function (selector, callback) {
+          if (!selectorChangedData) {
+            selectorChangedData = {};
+            currentSelectors = {};
+            editor.on('NodeChange', function (e) {
+              var node = e.element, parents = dom.getParents(node, null, dom.getRoot()), matchedSelectors = {};
+              Tools.each(selectorChangedData, function (callbacks, selector) {
+                Tools.each(parents, function (node) {
+                  if (dom.is(node, selector)) {
+                    if (!currentSelectors[selector]) {
+                      Tools.each(callbacks, function (callback) {
+                        callback(true, {
+                          node: node,
+                          selector: selector,
+                          parents: parents
+                        });
+                      });
+                      currentSelectors[selector] = callbacks;
+                    }
+                    matchedSelectors[selector] = callbacks;
+                    return false;
+                  }
+                });
+              });
+              Tools.each(currentSelectors, function (callbacks, selector) {
+                if (!matchedSelectors[selector]) {
+                  delete currentSelectors[selector];
+                  Tools.each(callbacks, function (callback) {
+                    callback(false, {
+                      node: node,
+                      selector: selector,
+                      parents: parents
+                    });
+                  });
+                }
+              });
+            });
+          }
+          if (!selectorChangedData[selector]) {
+            selectorChangedData[selector] = [];
+          }
+          selectorChangedData[selector].push(callback);
+          return {
+            unbind: function () {
+              deleteFromCallbackMap(selectorChangedData, selector, callback);
+              deleteFromCallbackMap(currentSelectors, selector, callback);
+            }
+          };
+        }
+      };
+    }
+
+    var isNativeIeSelection = function (rng) {
+      return !!rng.select;
+    };
+    var isAttachedToDom = function (node) {
+      return !!(node && node.ownerDocument) && contains$3(Element.fromDom(node.ownerDocument), Element.fromDom(node));
+    };
+    var isValidRange = function (rng) {
+      if (!rng) {
+        return false;
+      } else if (isNativeIeSelection(rng)) {
+        return true;
+      } else {
+        return isAttachedToDom(rng.startContainer) && isAttachedToDom(rng.endContainer);
+      }
+    };
+    var Selection = function (dom, win, serializer, editor) {
+      var bookmarkManager, controlSelection;
+      var selectedRange, explicitRange;
+      var selectorChangedWithUnbind = SelectorChanged(dom, editor).selectorChangedWithUnbind;
+      var setCursorLocation = function (node, offset) {
+        var rng = dom.createRng();
+        if (!node) {
+          moveEndPoint$1(dom, rng, editor.getBody(), true);
+          setRng(rng);
+        } else {
+          rng.setStart(node, offset);
+          rng.setEnd(node, offset);
+          setRng(rng);
+          collapse(false);
+        }
+      };
+      var getContent = function (args) {
+        return GetSelectionContent.getContent(editor, args);
+      };
+      var setContent = function (content, args) {
+        return SetSelectionContent.setContent(editor, content, args);
+      };
+      var getStart$1 = function (real) {
+        return getStart(editor.getBody(), getRng(), real);
+      };
+      var getEnd$1 = function (real) {
+        return getEnd(editor.getBody(), getRng(), real);
+      };
+      var getBookmark = function (type, normalized) {
+        return bookmarkManager.getBookmark(type, normalized);
+      };
+      var moveToBookmark = function (bookmark) {
+        return bookmarkManager.moveToBookmark(bookmark);
+      };
+      var select = function (node, content) {
+        select$1(dom, node, content).each(setRng);
+        return node;
+      };
+      var isCollapsed = function () {
+        var rng = getRng(), sel = getSel();
+        if (!rng || rng.item) {
+          return false;
+        }
+        if (rng.compareEndPoints) {
+          return rng.compareEndPoints('StartToEnd', rng) === 0;
+        }
+        return !sel || rng.collapsed;
+      };
+      var collapse = function (toStart) {
+        var rng = getRng();
+        rng.collapse(!!toStart);
+        setRng(rng);
+      };
+      var getSel = function () {
+        return win.getSelection ? win.getSelection() : win.document.selection;
+      };
+      var getRng = function () {
+        var selection, rng, elm, doc;
+        var tryCompareBoundaryPoints = function (how, sourceRange, destinationRange) {
+          try {
+            return sourceRange.compareBoundaryPoints(how, destinationRange);
+          } catch (ex) {
+            return -1;
+          }
+        };
+        if (!win) {
+          return null;
+        }
+        doc = win.document;
+        if (typeof doc === 'undefined' || doc === null) {
+          return null;
+        }
+        if (editor.bookmark !== undefined && EditorFocus.hasFocus(editor) === false) {
+          var bookmark = SelectionBookmark.getRng(editor);
+          if (bookmark.isSome()) {
+            return bookmark.map(function (r) {
+              return EventProcessRanges.processRanges(editor, [r])[0];
+            }).getOr(doc.createRange());
+          }
+        }
+        try {
+          if (selection = getSel()) {
+            if (selection.rangeCount > 0) {
+              rng = selection.getRangeAt(0);
+            } else {
+              rng = selection.createRange ? selection.createRange() : doc.createRange();
+            }
+          }
+        } catch (ex) {
+        }
+        rng = EventProcessRanges.processRanges(editor, [rng])[0];
+        if (!rng) {
+          rng = doc.createRange ? doc.createRange() : doc.body.createTextRange();
+        }
+        if (rng.setStart && rng.startContainer.nodeType === 9 && rng.collapsed) {
+          elm = dom.getRoot();
+          rng.setStart(elm, 0);
+          rng.setEnd(elm, 0);
+        }
+        if (selectedRange && explicitRange) {
+          if (tryCompareBoundaryPoints(rng.START_TO_START, rng, selectedRange) === 0 && tryCompareBoundaryPoints(rng.END_TO_END, rng, selectedRange) === 0) {
+            rng = explicitRange;
+          } else {
+            selectedRange = null;
+            explicitRange = null;
+          }
+        }
+        return rng;
+      };
+      var setRng = function (rng, forward) {
+        var sel, node, evt;
+        if (!isValidRange(rng)) {
+          return;
+        }
+        var ieRange = isNativeIeSelection(rng) ? rng : null;
+        if (ieRange) {
+          explicitRange = null;
+          try {
+            ieRange.select();
+          } catch (ex) {
+          }
+          return;
+        }
+        sel = getSel();
+        evt = editor.fire('SetSelectionRange', {
+          range: rng,
+          forward: forward
+        });
+        rng = evt.range;
+        if (sel) {
+          explicitRange = rng;
+          try {
+            sel.removeAllRanges();
+            sel.addRange(rng);
+          } catch (ex) {
+          }
+          if (forward === false && sel.extend) {
+            sel.collapse(rng.endContainer, rng.endOffset);
+            sel.extend(rng.startContainer, rng.startOffset);
+          }
+          selectedRange = sel.rangeCount > 0 ? sel.getRangeAt(0) : null;
+        }
+        if (!rng.collapsed && rng.startContainer === rng.endContainer && sel.setBaseAndExtent && !Env.ie) {
+          if (rng.endOffset - rng.startOffset < 2) {
+            if (rng.startContainer.hasChildNodes()) {
+              node = rng.startContainer.childNodes[rng.startOffset];
+              if (node && node.tagName === 'IMG') {
+                sel.setBaseAndExtent(rng.startContainer, rng.startOffset, rng.endContainer, rng.endOffset);
+                if (sel.anchorNode !== rng.startContainer || sel.focusNode !== rng.endContainer) {
+                  sel.setBaseAndExtent(node, 0, node, 1);
+                }
+              }
+            }
+          }
+        }
+        editor.fire('AfterSetSelectionRange', {
+          range: rng,
+          forward: forward
+        });
+      };
+      var setNode = function (elm) {
+        setContent(dom.getOuterHTML(elm));
+        return elm;
+      };
+      var getNode = function () {
+        return getNode$1(editor.getBody(), getRng());
+      };
+      var getSelectedBlocks$1 = function (startElm, endElm) {
+        return getSelectedBlocks(dom, getRng(), startElm, endElm);
+      };
+      var isForward = function () {
+        var sel = getSel();
+        var anchorRange, focusRange;
+        if (!sel || !sel.anchorNode || !sel.focusNode) {
+          return true;
+        }
+        anchorRange = dom.createRng();
+        anchorRange.setStart(sel.anchorNode, sel.anchorOffset);
+        anchorRange.collapse(true);
+        focusRange = dom.createRng();
+        focusRange.setStart(sel.focusNode, sel.focusOffset);
+        focusRange.collapse(true);
+        return anchorRange.compareBoundaryPoints(anchorRange.START_TO_START, focusRange) <= 0;
+      };
+      var normalize = function () {
+        var rng = getRng();
+        var sel = getSel();
+        if (!MultiRange.hasMultipleRanges(sel) && hasAnyRanges(editor)) {
+          var normRng = NormalizeRange.normalize(dom, rng);
+          normRng.each(function (normRng) {
+            setRng(normRng, isForward());
+          });
+          return normRng.getOr(rng);
+        }
+        return rng;
+      };
+      var selectorChanged = function (selector, callback) {
+        selectorChangedWithUnbind(selector, callback);
+        return exports;
+      };
+      var getScrollContainer = function () {
+        var scrollContainer;
+        var node = dom.getRoot();
+        while (node && node.nodeName !== 'BODY') {
+          if (node.scrollHeight > node.clientHeight) {
+            scrollContainer = node;
+            break;
+          }
+          node = node.parentNode;
+        }
+        return scrollContainer;
+      };
+      var scrollIntoView = function (elm, alignToTop) {
+        return ScrollIntoView.scrollElementIntoView(editor, elm, alignToTop);
+      };
+      var placeCaretAt = function (clientX, clientY) {
+        return setRng(CaretRangeFromPoint.fromPoint(clientX, clientY, editor.getDoc()));
+      };
+      var getBoundingClientRect = function () {
+        var rng = getRng();
+        return rng.collapsed ? CaretPosition$1.fromRangeStart(rng).getClientRects()[0] : rng.getBoundingClientRect();
+      };
+      var destroy = function () {
+        win = selectedRange = explicitRange = null;
+        controlSelection.destroy();
+      };
+      var exports = {
+        bookmarkManager: null,
+        controlSelection: null,
+        dom: dom,
+        win: win,
+        serializer: serializer,
+        editor: editor,
+        collapse: collapse,
+        setCursorLocation: setCursorLocation,
+        getContent: getContent,
+        setContent: setContent,
+        getBookmark: getBookmark,
+        moveToBookmark: moveToBookmark,
+        select: select,
+        isCollapsed: isCollapsed,
+        isForward: isForward,
+        setNode: setNode,
+        getNode: getNode,
+        getSel: getSel,
+        setRng: setRng,
+        getRng: getRng,
+        getStart: getStart$1,
+        getEnd: getEnd$1,
+        getSelectedBlocks: getSelectedBlocks$1,
+        normalize: normalize,
+        selectorChanged: selectorChanged,
+        selectorChangedWithUnbind: selectorChangedWithUnbind,
+        getScrollContainer: getScrollContainer,
+        scrollIntoView: scrollIntoView,
+        placeCaretAt: placeCaretAt,
+        getBoundingClientRect: getBoundingClientRect,
+        destroy: destroy
+      };
+      bookmarkManager = BookmarkManager$1(exports);
+      controlSelection = ControlSelection(exports, editor);
+      exports.bookmarkManager = bookmarkManager;
+      exports.controlSelection = controlSelection;
+      return exports;
+    };
+
+    var isText$8 = NodeType.isText;
+    var startsWithCaretContainer$1 = function (node) {
+      return isText$8(node) && node.data[0] === Zwsp.ZWSP;
+    };
+    var endsWithCaretContainer$1 = function (node) {
+      return isText$8(node) && node.data[node.data.length - 1] === Zwsp.ZWSP;
+    };
+    var createZwsp = function (node) {
+      return node.ownerDocument.createTextNode(Zwsp.ZWSP);
+    };
+    var insertBefore = function (node) {
+      if (isText$8(node.previousSibling)) {
+        if (endsWithCaretContainer$1(node.previousSibling)) {
+          return node.previousSibling;
+        } else {
+          node.previousSibling.appendData(Zwsp.ZWSP);
+          return node.previousSibling;
+        }
+      } else if (isText$8(node)) {
+        if (startsWithCaretContainer$1(node)) {
+          return node;
+        } else {
+          node.insertData(0, Zwsp.ZWSP);
+          return node;
+        }
+      } else {
+        var newNode = createZwsp(node);
+        node.parentNode.insertBefore(newNode, node);
+        return newNode;
+      }
+    };
+    var insertAfter = function (node) {
+      if (isText$8(node.nextSibling)) {
+        if (startsWithCaretContainer$1(node.nextSibling)) {
+          return node.nextSibling;
+        } else {
+          node.nextSibling.insertData(0, Zwsp.ZWSP);
+          return node.nextSibling;
+        }
+      } else if (isText$8(node)) {
+        if (endsWithCaretContainer$1(node)) {
+          return node;
+        } else {
+          node.appendData(Zwsp.ZWSP);
+          return node;
+        }
+      } else {
+        var newNode = createZwsp(node);
+        if (node.nextSibling) {
+          node.parentNode.insertBefore(newNode, node.nextSibling);
+        } else {
+          node.parentNode.appendChild(newNode);
+        }
+        return newNode;
+      }
+    };
+    var insertInline$1 = function (before, node) {
+      return before ? insertBefore(node) : insertAfter(node);
+    };
+    var insertInlineBefore = curry(insertInline$1, true);
+    var insertInlineAfter = curry(insertInline$1, false);
+
+    var insertInlinePos = function (pos, before) {
+      if (NodeType.isText(pos.container())) {
+        return insertInline$1(before, pos.container());
+      } else {
+        return insertInline$1(before, pos.getNode());
+      }
+    };
+    var isPosCaretContainer = function (pos, caret) {
+      var caretNode = caret.get();
+      return caretNode && pos.container() === caretNode && isCaretContainerInline(caretNode);
+    };
+    var renderCaret = function (caret, location) {
+      return location.fold(function (element) {
+        CaretContainerRemove.remove(caret.get());
+        var text = insertInlineBefore(element);
+        caret.set(text);
+        return Option.some(CaretPosition$1(text, text.length - 1));
+      }, function (element) {
+        return CaretFinder.firstPositionIn(element).map(function (pos) {
+          if (!isPosCaretContainer(pos, caret)) {
+            CaretContainerRemove.remove(caret.get());
+            var text = insertInlinePos(pos, true);
+            caret.set(text);
+            return CaretPosition$1(text, 1);
+          } else {
+            return CaretPosition$1(caret.get(), 1);
+          }
+        });
+      }, function (element) {
+        return CaretFinder.lastPositionIn(element).map(function (pos) {
+          if (!isPosCaretContainer(pos, caret)) {
+            CaretContainerRemove.remove(caret.get());
+            var text = insertInlinePos(pos, false);
+            caret.set(text);
+            return CaretPosition$1(text, text.length - 1);
+          } else {
+            return CaretPosition$1(caret.get(), caret.get().length - 1);
+          }
+        });
+      }, function (element) {
+        CaretContainerRemove.remove(caret.get());
+        var text = insertInlineAfter(element);
+        caret.set(text);
+        return Option.some(CaretPosition$1(text, 1));
+      });
+    };
+    var BoundaryCaret = { renderCaret: renderCaret };
+
+    var strongRtl = /[\u0591-\u07FF\uFB1D-\uFDFF\uFE70-\uFEFC]/;
+    var hasStrongRtl = function (text) {
+      return strongRtl.test(text);
+    };
+
+    var isInlineTarget = function (editor, elm) {
+      var selector = getString(editor, 'inline_boundaries_selector').getOr('a[href],code');
+      return is$1(Element.fromDom(elm), selector);
+    };
+    var isRtl$1 = function (element) {
+      return DOMUtils$1.DOM.getStyle(element, 'direction', true) === 'rtl' || hasStrongRtl(element.textContent);
+    };
+    var findInlineParents = function (isInlineTarget, rootNode, pos) {
+      return filter(DOMUtils$1.DOM.getParents(pos.container(), '*', rootNode), isInlineTarget);
+    };
+    var findRootInline = function (isInlineTarget, rootNode, pos) {
+      var parents = findInlineParents(isInlineTarget, rootNode, pos);
+      return Option.from(parents[parents.length - 1]);
+    };
+    var hasSameParentBlock = function (rootNode, node1, node2) {
+      var block1 = getParentBlock(node1, rootNode);
+      var block2 = getParentBlock(node2, rootNode);
+      return block1 && block1 === block2;
+    };
+    var isAtZwsp = function (pos) {
+      return isBeforeInline(pos) || isAfterInline(pos);
+    };
+    var normalizePosition = function (forward, pos) {
+      if (!pos) {
+        return pos;
+      }
+      var container = pos.container(), offset = pos.offset();
+      if (forward) {
+        if (isCaretContainerInline(container)) {
+          if (NodeType.isText(container.nextSibling)) {
+            return CaretPosition$1(container.nextSibling, 0);
+          } else {
+            return CaretPosition$1.after(container);
+          }
+        } else {
+          return isBeforeInline(pos) ? CaretPosition$1(container, offset + 1) : pos;
+        }
+      } else {
+        if (isCaretContainerInline(container)) {
+          if (NodeType.isText(container.previousSibling)) {
+            return CaretPosition$1(container.previousSibling, container.previousSibling.data.length);
+          } else {
+            return CaretPosition$1.before(container);
+          }
+        } else {
+          return isAfterInline(pos) ? CaretPosition$1(container, offset - 1) : pos;
+        }
+      }
+    };
+    var normalizeForwards = curry(normalizePosition, true);
+    var normalizeBackwards = curry(normalizePosition, false);
+    var InlineUtils = {
+      isInlineTarget: isInlineTarget,
+      findRootInline: findRootInline,
+      isRtl: isRtl$1,
+      isAtZwsp: isAtZwsp,
+      normalizePosition: normalizePosition,
+      normalizeForwards: normalizeForwards,
+      normalizeBackwards: normalizeBackwards,
+      hasSameParentBlock: hasSameParentBlock
+    };
+
+    var evaluateUntil = function (fns, args) {
+      for (var i = 0; i < fns.length; i++) {
+        var result = fns[i].apply(null, args);
+        if (result.isSome()) {
+          return result;
+        }
+      }
+      return Option.none();
+    };
+    var LazyEvaluator = { evaluateUntil: evaluateUntil };
+
+    var Location = Adt.generate([
+      { before: ['element'] },
+      { start: ['element'] },
+      { end: ['element'] },
+      { after: ['element'] }
+    ]);
+    var rescope = function (rootNode, node) {
+      var parentBlock = getParentBlock(node, rootNode);
+      return parentBlock ? parentBlock : rootNode;
+    };
+    var before$3 = function (isInlineTarget, rootNode, pos) {
+      var nPos = InlineUtils.normalizeForwards(pos);
+      var scope = rescope(rootNode, nPos.container());
+      return InlineUtils.findRootInline(isInlineTarget, scope, nPos).fold(function () {
+        return CaretFinder.nextPosition(scope, nPos).bind(curry(InlineUtils.findRootInline, isInlineTarget, scope)).map(function (inline) {
+          return Location.before(inline);
+        });
+      }, Option.none);
+    };
+    var isNotInsideFormatCaretContainer = function (rootNode, elm) {
+      return getParentCaretContainer(rootNode, elm) === null;
+    };
+    var findInsideRootInline = function (isInlineTarget, rootNode, pos) {
+      return InlineUtils.findRootInline(isInlineTarget, rootNode, pos).filter(curry(isNotInsideFormatCaretContainer, rootNode));
+    };
+    var start$1 = function (isInlineTarget, rootNode, pos) {
+      var nPos = InlineUtils.normalizeBackwards(pos);
+      return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) {
+        var prevPos = CaretFinder.prevPosition(inline, nPos);
+        return prevPos.isNone() ? Option.some(Location.start(inline)) : Option.none();
+      });
+    };
+    var end = function (isInlineTarget, rootNode, pos) {
+      var nPos = InlineUtils.normalizeForwards(pos);
+      return findInsideRootInline(isInlineTarget, rootNode, nPos).bind(function (inline) {
+        var nextPos = CaretFinder.nextPosition(inline, nPos);
+        return nextPos.isNone() ? Option.some(Location.end(inline)) : Option.none();
+      });
+    };
+    var after$2 = function (isInlineTarget, rootNode, pos) {
+      var nPos = InlineUtils.normalizeBackwards(pos);
+      var scope = rescope(rootNode, nPos.container());
+      return InlineUtils.findRootInline(isInlineTarget, scope, nPos).fold(function () {
+        return CaretFinder.prevPosition(scope, nPos).bind(curry(InlineUtils.findRootInline, isInlineTarget, scope)).map(function (inline) {
+          return Location.after(inline);
+        });
+      }, Option.none);
+    };
+    var isValidLocation = function (location) {
+      return InlineUtils.isRtl(getElement(location)) === false;
+    };
+    var readLocation = function (isInlineTarget, rootNode, pos) {
+      var location = LazyEvaluator.evaluateUntil([
+        before$3,
+        start$1,
+        end,
+        after$2
+      ], [
+        isInlineTarget,
+        rootNode,
+        pos
+      ]);
+      return location.filter(isValidLocation);
+    };
+    var getElement = function (location) {
+      return location.fold(identity, identity, identity, identity);
+    };
+    var getName = function (location) {
+      return location.fold(constant('before'), constant('start'), constant('end'), constant('after'));
+    };
+    var outside = function (location) {
+      return location.fold(Location.before, Location.before, Location.after, Location.after);
+    };
+    var inside = function (location) {
+      return location.fold(Location.start, Location.start, Location.end, Location.end);
+    };
+    var isEq$5 = function (location1, location2) {
+      return getName(location1) === getName(location2) && getElement(location1) === getElement(location2);
+    };
+    var betweenInlines = function (forward, isInlineTarget, rootNode, from, to, location) {
+      return liftN([
+        InlineUtils.findRootInline(isInlineTarget, rootNode, from),
+        InlineUtils.findRootInline(isInlineTarget, rootNode, to)
+      ], function (fromInline, toInline) {
+        if (fromInline !== toInline && InlineUtils.hasSameParentBlock(rootNode, fromInline, toInline)) {
+          return Location.after(forward ? fromInline : toInline);
+        } else {
+          return location;
+        }
+      }).getOr(location);
+    };
+    var skipNoMovement = function (fromLocation, toLocation) {
+      return fromLocation.fold(constant(true), function (fromLocation) {
+        return !isEq$5(fromLocation, toLocation);
+      });
+    };
+    var findLocationTraverse = function (forward, isInlineTarget, rootNode, fromLocation, pos) {
+      var from = InlineUtils.normalizePosition(forward, pos);
+      var to = CaretFinder.fromPosition(forward, rootNode, from).map(curry(InlineUtils.normalizePosition, forward));
+      var location = to.fold(function () {
+        return fromLocation.map(outside);
+      }, function (to) {
+        return readLocation(isInlineTarget, rootNode, to).map(curry(betweenInlines, forward, isInlineTarget, rootNode, from, to)).filter(curry(skipNoMovement, fromLocation));
+      });
+      return location.filter(isValidLocation);
+    };
+    var findLocationSimple = function (forward, location) {
+      if (forward) {
+        return location.fold(compose(Option.some, Location.start), Option.none, compose(Option.some, Location.after), Option.none);
+      } else {
+        return location.fold(Option.none, compose(Option.some, Location.before), Option.none, compose(Option.some, Location.end));
+      }
+    };
+    var findLocation = function (forward, isInlineTarget, rootNode, pos) {
+      var from = InlineUtils.normalizePosition(forward, pos);
+      var fromLocation = readLocation(isInlineTarget, rootNode, from);
+      return readLocation(isInlineTarget, rootNode, from).bind(curry(findLocationSimple, forward)).orThunk(function () {
+        return findLocationTraverse(forward, isInlineTarget, rootNode, fromLocation, pos);
+      });
+    };
+    var BoundaryLocation = {
+      readLocation: readLocation,
+      findLocation: findLocation,
+      prevLocation: curry(findLocation, false),
+      nextLocation: curry(findLocation, true),
+      getElement: getElement,
+      outside: outside,
+      inside: inside
+    };
+
+    var hasSelectionModifyApi = function (editor) {
+      return isFunction(editor.selection.getSel().modify);
+    };
+    var moveRel = function (forward, selection, pos) {
+      var delta = forward ? 1 : -1;
+      selection.setRng(CaretPosition$1(pos.container(), pos.offset() + delta).toRange());
+      selection.getSel().modify('move', forward ? 'forward' : 'backward', 'word');
+      return true;
+    };
+    var moveByWord = function (forward, editor) {
+      var rng = editor.selection.getRng();
+      var pos = forward ? CaretPosition$1.fromRangeEnd(rng) : CaretPosition$1.fromRangeStart(rng);
+      if (!hasSelectionModifyApi(editor)) {
+        return false;
+      } else if (forward && isBeforeInline(pos)) {
+        return moveRel(true, editor.selection, pos);
+      } else if (!forward && isAfterInline(pos)) {
+        return moveRel(false, editor.selection, pos);
+      } else {
+        return false;
+      }
+    };
+    var WordSelection = {
+      hasSelectionModifyApi: hasSelectionModifyApi,
+      moveByWord: moveByWord
+    };
+
+    var setCaretPosition = function (editor, pos) {
+      var rng = editor.dom.createRng();
+      rng.setStart(pos.container(), pos.offset());
+      rng.setEnd(pos.container(), pos.offset());
+      editor.selection.setRng(rng);
+    };
+    var isFeatureEnabled = function (editor) {
+      return editor.settings.inline_boundaries !== false;
+    };
+    var setSelected = function (state, elm) {
+      if (state) {
+        elm.setAttribute('data-mce-selected', 'inline-boundary');
+      } else {
+        elm.removeAttribute('data-mce-selected');
+      }
+    };
+    var renderCaretLocation = function (editor, caret, location) {
+      return BoundaryCaret.renderCaret(caret, location).map(function (pos) {
+        setCaretPosition(editor, pos);
+        return location;
+      });
+    };
+    var findLocation$1 = function (editor, caret, forward) {
+      var rootNode = editor.getBody();
+      var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());
+      var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);
+      var location = BoundaryLocation.findLocation(forward, isInlineTarget, rootNode, from);
+      return location.bind(function (location) {
+        return renderCaretLocation(editor, caret, location);
+      });
+    };
+    var toggleInlines = function (isInlineTarget, dom, elms) {
+      var selectedInlines = filter(dom.select('*[data-mce-selected="inline-boundary"]'), isInlineTarget);
+      var targetInlines = filter(elms, isInlineTarget);
+      each(difference(selectedInlines, targetInlines), curry(setSelected, false));
+      each(difference(targetInlines, selectedInlines), curry(setSelected, true));
+    };
+    var safeRemoveCaretContainer = function (editor, caret) {
+      if (editor.selection.isCollapsed() && editor.composing !== true && caret.get()) {
+        var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());
+        if (CaretPosition$1.isTextPosition(pos) && InlineUtils.isAtZwsp(pos) === false) {
+          setCaretPosition(editor, CaretContainerRemove.removeAndReposition(caret.get(), pos));
+          caret.set(null);
+        }
+      }
+    };
+    var renderInsideInlineCaret = function (isInlineTarget, editor, caret, elms) {
+      if (editor.selection.isCollapsed()) {
+        var inlines = filter(elms, isInlineTarget);
+        each(inlines, function (inline) {
+          var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());
+          BoundaryLocation.readLocation(isInlineTarget, editor.getBody(), pos).bind(function (location) {
+            return renderCaretLocation(editor, caret, location);
+          });
+        });
+      }
+    };
+    var move$1 = function (editor, caret, forward) {
+      return function () {
+        return isFeatureEnabled(editor) ? findLocation$1(editor, caret, forward).isSome() : false;
+      };
+    };
+    var moveWord = function (forward, editor, caret) {
+      return function () {
+        return isFeatureEnabled(editor) ? WordSelection.moveByWord(forward, editor) : false;
+      };
+    };
+    var setupSelectedState = function (editor) {
+      var caret = Cell(null);
+      var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);
+      editor.on('NodeChange', function (e) {
+        if (isFeatureEnabled(editor)) {
+          toggleInlines(isInlineTarget, editor.dom, e.parents);
+          safeRemoveCaretContainer(editor, caret);
+          renderInsideInlineCaret(isInlineTarget, editor, caret, e.parents);
+        }
+      });
+      return caret;
+    };
+    var moveNextWord = curry(moveWord, true);
+    var movePrevWord = curry(moveWord, false);
+    var BoundarySelection = {
+      move: move$1,
+      moveNextWord: moveNextWord,
+      movePrevWord: movePrevWord,
+      setupSelectedState: setupSelectedState,
+      setCaretPosition: setCaretPosition
+    };
+
+    var BreakType;
+    (function (BreakType) {
+      BreakType[BreakType['Br'] = 0] = 'Br';
+      BreakType[BreakType['Block'] = 1] = 'Block';
+      BreakType[BreakType['Wrap'] = 2] = 'Wrap';
+      BreakType[BreakType['Eol'] = 3] = 'Eol';
+    }(BreakType || (BreakType = {})));
+    var flip = function (direction, positions) {
+      return direction === HDirection.Backwards ? positions.reverse() : positions;
+    };
+    var walk$3 = function (direction, caretWalker, pos) {
+      return direction === HDirection.Forwards ? caretWalker.next(pos) : caretWalker.prev(pos);
+    };
+    var getBreakType = function (scope, direction, currentPos, nextPos) {
+      if (NodeType.isBr(nextPos.getNode(direction === HDirection.Forwards))) {
+        return BreakType.Br;
+      } else if (isInSameBlock(currentPos, nextPos) === false) {
+        return BreakType.Block;
+      } else {
+        return BreakType.Wrap;
+      }
+    };
+    var getPositionsUntil = function (predicate, direction, scope, start) {
+      var caretWalker = CaretWalker(scope);
+      var currentPos = start, nextPos;
+      var positions = [];
+      while (currentPos) {
+        nextPos = walk$3(direction, caretWalker, currentPos);
+        if (!nextPos) {
+          break;
+        }
+        if (NodeType.isBr(nextPos.getNode(false))) {
+          if (direction === HDirection.Forwards) {
+            return {
+              positions: flip(direction, positions).concat([nextPos]),
+              breakType: BreakType.Br,
+              breakAt: Option.some(nextPos)
+            };
+          } else {
+            return {
+              positions: flip(direction, positions),
+              breakType: BreakType.Br,
+              breakAt: Option.some(nextPos)
+            };
+          }
+        }
+        if (!nextPos.isVisible()) {
+          currentPos = nextPos;
+          continue;
+        }
+        if (predicate(currentPos, nextPos)) {
+          var breakType = getBreakType(scope, direction, currentPos, nextPos);
+          return {
+            positions: flip(direction, positions),
+            breakType: breakType,
+            breakAt: Option.some(nextPos)
+          };
+        }
+        positions.push(nextPos);
+        currentPos = nextPos;
+      }
+      return {
+        positions: flip(direction, positions),
+        breakType: BreakType.Eol,
+        breakAt: Option.none()
+      };
+    };
+    var getAdjacentLinePositions = function (direction, getPositionsUntilBreak, scope, start) {
+      return getPositionsUntilBreak(scope, start).breakAt.map(function (pos) {
+        var positions = getPositionsUntilBreak(scope, pos).positions;
+        return direction === HDirection.Backwards ? positions.concat(pos) : [pos].concat(positions);
+      }).getOr([]);
+    };
+    var findClosestHorizontalPositionFromPoint = function (positions, x) {
+      return foldl(positions, function (acc, newPos) {
+        return acc.fold(function () {
+          return Option.some(newPos);
+        }, function (lastPos) {
+          return liftN([
+            head(lastPos.getClientRects()),
+            head(newPos.getClientRects())
+          ], function (lastRect, newRect) {
+            var lastDist = Math.abs(x - lastRect.left);
+            var newDist = Math.abs(x - newRect.left);
+            return newDist <= lastDist ? newPos : lastPos;
+          }).or(acc);
+        });
+      }, Option.none());
+    };
+    var findClosestHorizontalPosition = function (positions, pos) {
+      return head(pos.getClientRects()).bind(function (targetRect) {
+        return findClosestHorizontalPositionFromPoint(positions, targetRect.left);
+      });
+    };
+    var getPositionsUntilPreviousLine = curry(getPositionsUntil, CaretPosition.isAbove, -1);
+    var getPositionsUntilNextLine = curry(getPositionsUntil, CaretPosition.isBelow, 1);
+    var isAtFirstLine = function (scope, pos) {
+      return getPositionsUntilPreviousLine(scope, pos).breakAt.isNone();
+    };
+    var isAtLastLine = function (scope, pos) {
+      return getPositionsUntilNextLine(scope, pos).breakAt.isNone();
+    };
+    var getPositionsAbove = curry(getAdjacentLinePositions, -1, getPositionsUntilPreviousLine);
+    var getPositionsBelow = curry(getAdjacentLinePositions, 1, getPositionsUntilNextLine);
+    var getFirstLinePositions = function (scope) {
+      return CaretFinder.firstPositionIn(scope).map(function (pos) {
+        return [pos].concat(getPositionsUntilNextLine(scope, pos).positions);
+      }).getOr([]);
+    };
+    var getLastLinePositions = function (scope) {
+      return CaretFinder.lastPositionIn(scope).map(function (pos) {
+        return getPositionsUntilPreviousLine(scope, pos).positions.concat(pos);
+      }).getOr([]);
+    };
+
+    var isContentEditableFalse$b = NodeType.isContentEditableFalse;
+    var getSelectedNode$1 = getSelectedNode;
+    var moveToCeFalseHorizontally = function (direction, editor, getNextPosFn, range) {
+      var forwards = direction === HDirection.Forwards;
+      var isBeforeContentEditableFalseFn = forwards ? isBeforeContentEditableFalse : isAfterContentEditableFalse;
+      if (!range.collapsed) {
+        var node = getSelectedNode$1(range);
+        if (isContentEditableFalse$b(node)) {
+          return showCaret(direction, editor, node, direction === HDirection.Backwards, true);
+        }
+      }
+      var rangeIsInContainerBlock = isRangeInCaretContainerBlock(range);
+      var caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);
+      if (isBeforeContentEditableFalseFn(caretPosition)) {
+        return selectNode(editor, caretPosition.getNode(!forwards));
+      }
+      var nextCaretPosition = InlineUtils.normalizePosition(forwards, getNextPosFn(caretPosition));
+      if (!nextCaretPosition) {
+        if (rangeIsInContainerBlock) {
+          return range;
+        }
+        return null;
+      }
+      if (isBeforeContentEditableFalseFn(nextCaretPosition)) {
+        return showCaret(direction, editor, nextCaretPosition.getNode(!forwards), forwards, true);
+      }
+      var peekCaretPosition = getNextPosFn(nextCaretPosition);
+      if (peekCaretPosition && isBeforeContentEditableFalseFn(peekCaretPosition)) {
+        if (isMoveInsideSameBlock(nextCaretPosition, peekCaretPosition)) {
+          return showCaret(direction, editor, peekCaretPosition.getNode(!forwards), forwards, true);
+        }
+      }
+      if (rangeIsInContainerBlock) {
+        return renderRangeCaret(editor, nextCaretPosition.toRange(), true);
+      }
+      return null;
+    };
+    var moveToCeFalseVertically = function (direction, editor, walkerFn, range) {
+      var caretPosition, linePositions, nextLinePositions;
+      var closestNextLineRect, caretClientRect, clientX;
+      var dist1, dist2, contentEditableFalseNode;
+      contentEditableFalseNode = getSelectedNode$1(range);
+      caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);
+      linePositions = walkerFn(editor.getBody(), isAboveLine(1), caretPosition);
+      nextLinePositions = filter(linePositions, isLine(1));
+      caretClientRect = ArrUtils.last(caretPosition.getClientRects());
+      if (isBeforeContentEditableFalse(caretPosition) || isBeforeTable(caretPosition)) {
+        contentEditableFalseNode = caretPosition.getNode();
+      }
+      if (isAfterContentEditableFalse(caretPosition) || isAfterTable(caretPosition)) {
+        contentEditableFalseNode = caretPosition.getNode(true);
+      }
+      if (!caretClientRect) {
+        return null;
+      }
+      clientX = caretClientRect.left;
+      closestNextLineRect = findClosestClientRect(nextLinePositions, clientX);
+      if (closestNextLineRect) {
+        if (isContentEditableFalse$b(closestNextLineRect.node)) {
+          dist1 = Math.abs(clientX - closestNextLineRect.left);
+          dist2 = Math.abs(clientX - closestNextLineRect.right);
+          return showCaret(direction, editor, closestNextLineRect.node, dist1 < dist2, true);
+        }
+      }
+      if (contentEditableFalseNode) {
+        var caretPositions = positionsUntil(direction, editor.getBody(), isAboveLine(1), contentEditableFalseNode);
+        closestNextLineRect = findClosestClientRect(filter(caretPositions, isLine(1)), clientX);
+        if (closestNextLineRect) {
+          return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);
+        }
+        closestNextLineRect = ArrUtils.last(filter(caretPositions, isLine(0)));
+        if (closestNextLineRect) {
+          return renderRangeCaret(editor, closestNextLineRect.position.toRange(), true);
+        }
+      }
+    };
+    var createTextBlock = function (editor) {
+      var textBlock = editor.dom.create(Settings.getForcedRootBlock(editor));
+      if (!Env.ie || Env.ie >= 11) {
+        textBlock.innerHTML = '<br data-mce-bogus="1">';
+      }
+      return textBlock;
+    };
+    var exitPreBlock = function (editor, direction, range) {
+      var pre, caretPos, newBlock;
+      var caretWalker = CaretWalker(editor.getBody());
+      var getNextVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.next);
+      var getPrevVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.prev);
+      if (range.collapsed && editor.settings.forced_root_block) {
+        pre = editor.dom.getParent(range.startContainer, 'PRE');
+        if (!pre) {
+          return;
+        }
+        if (direction === 1) {
+          caretPos = getNextVisualCaretPosition(CaretPosition$1.fromRangeStart(range));
+        } else {
+          caretPos = getPrevVisualCaretPosition(CaretPosition$1.fromRangeStart(range));
+        }
+        if (!caretPos) {
+          newBlock = createTextBlock(editor);
+          if (direction === 1) {
+            editor.$(pre).after(newBlock);
+          } else {
+            editor.$(pre).before(newBlock);
+          }
+          editor.selection.select(newBlock, true);
+          editor.selection.collapse();
+        }
+      }
+    };
+    var getHorizontalRange = function (editor, forward) {
+      var caretWalker = CaretWalker(editor.getBody());
+      var getNextVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.next);
+      var getPrevVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.prev);
+      var newRange;
+      var direction = forward ? HDirection.Forwards : HDirection.Backwards;
+      var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition;
+      var range = editor.selection.getRng();
+      newRange = moveToCeFalseHorizontally(direction, editor, getNextPosFn, range);
+      if (newRange) {
+        return newRange;
+      }
+      newRange = exitPreBlock(editor, direction, range);
+      if (newRange) {
+        return newRange;
+      }
+      return null;
+    };
+    var getVerticalRange = function (editor, down) {
+      var newRange;
+      var direction = down ? 1 : -1;
+      var walkerFn = down ? downUntil : upUntil;
+      var range = editor.selection.getRng();
+      newRange = moveToCeFalseVertically(direction, editor, walkerFn, range);
+      if (newRange) {
+        return newRange;
+      }
+      newRange = exitPreBlock(editor, direction, range);
+      if (newRange) {
+        return newRange;
+      }
+      return null;
+    };
+    var moveH = function (editor, forward) {
+      return function () {
+        var newRng = getHorizontalRange(editor, forward);
+        if (newRng) {
+          editor.selection.setRng(newRng);
+          return true;
+        } else {
+          return false;
+        }
+      };
+    };
+    var moveV = function (editor, down) {
+      return function () {
+        var newRng = getVerticalRange(editor, down);
+        if (newRng) {
+          editor.selection.setRng(newRng);
+          return true;
+        } else {
+          return false;
+        }
+      };
+    };
+    var isCefPosition = function (forward) {
+      return function (pos) {
+        return forward ? isAfterContentEditableFalse(pos) : isBeforeContentEditableFalse(pos);
+      };
+    };
+    var moveToLineEndPoint = function (editor, forward) {
+      return function () {
+        var from = forward ? CaretPosition$1.fromRangeEnd(editor.selection.getRng()) : CaretPosition$1.fromRangeStart(editor.selection.getRng());
+        var result = forward ? getPositionsUntilNextLine(editor.getBody(), from) : getPositionsUntilPreviousLine(editor.getBody(), from);
+        var to = forward ? last(result.positions) : head(result.positions);
+        return to.filter(isCefPosition(forward)).fold(constant(false), function (pos) {
+          editor.selection.setRng(pos.toRange());
+          return true;
+        });
+      };
+    };
+
+    var deflate = function (rect, delta) {
+      return {
+        left: rect.left - delta,
+        top: rect.top - delta,
+        right: rect.right + delta * 2,
+        bottom: rect.bottom + delta * 2,
+        width: rect.width + delta,
+        height: rect.height + delta
+      };
+    };
+    var getCorners = function (getYAxisValue, tds) {
+      return bind(tds, function (td) {
+        var rect = deflate(clone$1(td.getBoundingClientRect()), -1);
+        return [
+          {
+            x: rect.left,
+            y: getYAxisValue(rect),
+            cell: td
+          },
+          {
+            x: rect.right,
+            y: getYAxisValue(rect),
+            cell: td
+          }
+        ];
+      });
+    };
+    var findClosestCorner = function (corners, x, y) {
+      return foldl(corners, function (acc, newCorner) {
+        return acc.fold(function () {
+          return Option.some(newCorner);
+        }, function (oldCorner) {
+          var oldDist = Math.sqrt(Math.abs(oldCorner.x - x) + Math.abs(oldCorner.y - y));
+          var newDist = Math.sqrt(Math.abs(newCorner.x - x) + Math.abs(newCorner.y - y));
+          return Option.some(newDist < oldDist ? newCorner : oldCorner);
+        });
+      }, Option.none());
+    };
+    var getClosestCell = function (getYAxisValue, isTargetCorner, table, x, y) {
+      var cells = descendants$1(Element.fromDom(table), 'td,th,caption').map(function (e) {
+        return e.dom();
+      });
+      var corners = filter(getCorners(getYAxisValue, cells), function (corner) {
+        return isTargetCorner(corner, y);
+      });
+      return findClosestCorner(corners, x, y).map(function (corner) {
+        return corner.cell;
+      });
+    };
+    var getBottomValue = function (rect) {
+      return rect.bottom;
+    };
+    var getTopValue = function (rect) {
+      return rect.top;
+    };
+    var isAbove$1 = function (corner, y) {
+      return corner.y < y;
+    };
+    var isBelow$1 = function (corner, y) {
+      return corner.y > y;
+    };
+    var getClosestCellAbove = curry(getClosestCell, getBottomValue, isAbove$1);
+    var getClosestCellBelow = curry(getClosestCell, getTopValue, isBelow$1);
+    var findClosestPositionInAboveCell = function (table, pos) {
+      return head(pos.getClientRects()).bind(function (rect) {
+        return getClosestCellAbove(table, rect.left, rect.top);
+      }).bind(function (cell) {
+        return findClosestHorizontalPosition(getLastLinePositions(cell), pos);
+      });
+    };
+    var findClosestPositionInBelowCell = function (table, pos) {
+      return last(pos.getClientRects()).bind(function (rect) {
+        return getClosestCellBelow(table, rect.left, rect.top);
+      }).bind(function (cell) {
+        return findClosestHorizontalPosition(getFirstLinePositions(cell), pos);
+      });
+    };
+
+    var moveToRange = function (editor, rng) {
+      editor.selection.setRng(rng);
+      ScrollIntoView.scrollRangeIntoView(editor, rng);
+    };
+    var hasNextBreak = function (getPositionsUntil, scope, lineInfo) {
+      return lineInfo.breakAt.map(function (breakPos) {
+        return getPositionsUntil(scope, breakPos).breakAt.isSome();
+      }).getOr(false);
+    };
+    var startsWithWrapBreak = function (lineInfo) {
+      return lineInfo.breakType === BreakType.Wrap && lineInfo.positions.length === 0;
+    };
+    var startsWithBrBreak = function (lineInfo) {
+      return lineInfo.breakType === BreakType.Br && lineInfo.positions.length === 1;
+    };
+    var isAtTableCellLine = function (getPositionsUntil, scope, pos) {
+      var lineInfo = getPositionsUntil(scope, pos);
+      if (startsWithWrapBreak(lineInfo) || !NodeType.isBr(pos.getNode()) && startsWithBrBreak(lineInfo)) {
+        return !hasNextBreak(getPositionsUntil, scope, lineInfo);
+      } else {
+        return lineInfo.breakAt.isNone();
+      }
+    };
+    var isAtFirstTableCellLine = curry(isAtTableCellLine, getPositionsUntilPreviousLine);
+    var isAtLastTableCellLine = curry(isAtTableCellLine, getPositionsUntilNextLine);
+    var isCaretAtStartOrEndOfTable = function (forward, rng, table) {
+      var caretPos = CaretPosition$1.fromRangeStart(rng);
+      return CaretFinder.positionIn(!forward, table).map(function (pos) {
+        return pos.isEqual(caretPos);
+      }).getOr(false);
+    };
+    var navigateHorizontally = function (editor, forward, table, td) {
+      var rng = editor.selection.getRng();
+      var direction = forward ? 1 : -1;
+      if (isFakeCaretTableBrowser() && isCaretAtStartOrEndOfTable(forward, rng, table)) {
+        var newRng = showCaret(direction, editor, table, !forward, true);
+        moveToRange(editor, newRng);
+        return true;
+      }
+      return false;
+    };
+    var getClosestAbovePosition = function (root, table, start) {
+      return findClosestPositionInAboveCell(table, start).orThunk(function () {
+        return head(start.getClientRects()).bind(function (rect) {
+          return findClosestHorizontalPositionFromPoint(getPositionsAbove(root, CaretPosition$1.before(table)), rect.left);
+        });
+      }).getOr(CaretPosition$1.before(table));
+    };
+    var getClosestBelowPosition = function (root, table, start) {
+      return findClosestPositionInBelowCell(table, start).orThunk(function () {
+        return head(start.getClientRects()).bind(function (rect) {
+          return findClosestHorizontalPositionFromPoint(getPositionsBelow(root, CaretPosition$1.after(table)), rect.left);
+        });
+      }).getOr(CaretPosition$1.after(table));
+    };
+    var getTable = function (previous, pos) {
+      var node = pos.getNode(previous);
+      return NodeType.isElement(node) && node.nodeName === 'TABLE' ? Option.some(node) : Option.none();
+    };
+    var renderBlock = function (down, editor, table, pos) {
+      var forcedRootBlock = Settings.getForcedRootBlock(editor);
+      if (forcedRootBlock) {
+        editor.undoManager.transact(function () {
+          var element = Element.fromTag(forcedRootBlock);
+          setAll(element, Settings.getForcedRootBlockAttrs(editor));
+          append(element, Element.fromTag('br'));
+          if (down) {
+            after(Element.fromDom(table), element);
+          } else {
+            before(Element.fromDom(table), element);
+          }
+          var rng = editor.dom.createRng();
+          rng.setStart(element.dom(), 0);
+          rng.setEnd(element.dom(), 0);
+          moveToRange(editor, rng);
+        });
+      } else {
+        moveToRange(editor, pos.toRange());
+      }
+    };
+    var moveCaret = function (editor, down, pos) {
+      var table = down ? getTable(true, pos) : getTable(false, pos);
+      var last = down === false;
+      table.fold(function () {
+        return moveToRange(editor, pos.toRange());
+      }, function (table) {
+        return CaretFinder.positionIn(last, editor.getBody()).filter(function (lastPos) {
+          return lastPos.isEqual(pos);
+        }).fold(function () {
+          return moveToRange(editor, pos.toRange());
+        }, function (_) {
+          return renderBlock(down, editor, table, pos);
+        });
+      });
+    };
+    var navigateVertically = function (editor, down, table, td) {
+      var rng = editor.selection.getRng();
+      var pos = CaretPosition$1.fromRangeStart(rng);
+      var root = editor.getBody();
+      if (!down && isAtFirstTableCellLine(td, pos)) {
+        var newPos = getClosestAbovePosition(root, table, pos);
+        moveCaret(editor, down, newPos);
+        return true;
+      } else if (down && isAtLastTableCellLine(td, pos)) {
+        var newPos = getClosestBelowPosition(root, table, pos);
+        moveCaret(editor, down, newPos);
+        return true;
+      } else {
+        return false;
+      }
+    };
+    var moveH$1 = function (editor, forward) {
+      return function () {
+        return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) {
+          return Option.from(editor.dom.getParent(td, 'table')).map(function (table) {
+            return navigateHorizontally(editor, forward, table, td);
+          });
+        }).getOr(false);
+      };
+    };
+    var moveV$1 = function (editor, forward) {
+      return function () {
+        return Option.from(editor.dom.getParent(editor.selection.getNode(), 'td,th')).bind(function (td) {
+          return Option.from(editor.dom.getParent(td, 'table')).map(function (table) {
+            return navigateVertically(editor, forward, table, td);
+          });
+        }).getOr(false);
+      };
+    };
+
+    var isTarget = function (node) {
+      return contains(['figcaption'], name(node));
+    };
+    var rangeBefore = function (target) {
+      var rng = domGlobals.document.createRange();
+      rng.setStartBefore(target.dom());
+      rng.setEndBefore(target.dom());
+      return rng;
+    };
+    var insertElement = function (root, elm, forward) {
+      if (forward) {
+        append(root, elm);
+      } else {
+        prepend(root, elm);
+      }
+    };
+    var insertBr = function (root, forward) {
+      var br = Element.fromTag('br');
+      insertElement(root, br, forward);
+      return rangeBefore(br);
+    };
+    var insertBlock$1 = function (root, forward, blockName, attrs) {
+      var block = Element.fromTag(blockName);
+      var br = Element.fromTag('br');
+      setAll(block, attrs);
+      append(block, br);
+      insertElement(root, block, forward);
+      return rangeBefore(br);
+    };
+    var insertEmptyLine = function (root, rootBlockName, attrs, forward) {
+      if (rootBlockName === '') {
+        return insertBr(root, forward);
+      } else {
+        return insertBlock$1(root, forward, rootBlockName, attrs);
+      }
+    };
+    var getClosestTargetBlock = function (pos, root) {
+      var isRoot = curry(eq, root);
+      return closest(Element.fromDom(pos.container()), isBlock, isRoot).filter(isTarget);
+    };
+    var isAtFirstOrLastLine = function (root, forward, pos) {
+      return forward ? isAtLastLine(root.dom(), pos) : isAtFirstLine(root.dom(), pos);
+    };
+    var moveCaretToNewEmptyLine = function (editor, forward) {
+      var root = Element.fromDom(editor.getBody());
+      var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());
+      var rootBlock = Settings.getForcedRootBlock(editor);
+      var rootBlockAttrs = Settings.getForcedRootBlockAttrs(editor);
+      return getClosestTargetBlock(pos, root).exists(function () {
+        if (isAtFirstOrLastLine(root, forward, pos)) {
+          var rng = insertEmptyLine(root, rootBlock, rootBlockAttrs, forward);
+          editor.selection.setRng(rng);
+          return true;
+        } else {
+          return false;
+        }
+      });
+    };
+    var moveV$2 = function (editor, forward) {
+      return function () {
+        if (editor.selection.isCollapsed()) {
+          return moveCaretToNewEmptyLine(editor, forward);
+        } else {
+          return false;
+        }
+      };
+    };
+
+    var defaultPatterns = function (patterns) {
+      return map(patterns, function (pattern) {
+        return merge({
+          shiftKey: false,
+          altKey: false,
+          ctrlKey: false,
+          metaKey: false,
+          keyCode: 0,
+          action: noop
+        }, pattern);
+      });
+    };
+    var matchesEvent = function (pattern, evt) {
+      return evt.keyCode === pattern.keyCode && evt.shiftKey === pattern.shiftKey && evt.altKey === pattern.altKey && evt.ctrlKey === pattern.ctrlKey && evt.metaKey === pattern.metaKey;
+    };
+    var match$1 = function (patterns, evt) {
+      return bind(defaultPatterns(patterns), function (pattern) {
+        return matchesEvent(pattern, evt) ? [pattern] : [];
+      });
+    };
+    var action = function (f) {
+      var x = [];
+      for (var _i = 1; _i < arguments.length; _i++) {
+        x[_i - 1] = arguments[_i];
+      }
+      var args = Array.prototype.slice.call(arguments, 1);
+      return function () {
+        return f.apply(null, args);
+      };
+    };
+    var execute = function (patterns, evt) {
+      return find(match$1(patterns, evt), function (pattern) {
+        return pattern.action();
+      });
+    };
+    var MatchKeys = {
+      match: match$1,
+      action: action,
+      execute: execute
+    };
+
+    var executeKeydownOverride = function (editor, caret, evt) {
+      var os = PlatformDetection$1.detect().os;
+      MatchKeys.execute([
+        {
+          keyCode: VK.RIGHT,
+          action: moveH(editor, true)
+        },
+        {
+          keyCode: VK.LEFT,
+          action: moveH(editor, false)
+        },
+        {
+          keyCode: VK.UP,
+          action: moveV(editor, false)
+        },
+        {
+          keyCode: VK.DOWN,
+          action: moveV(editor, true)
+        },
+        {
+          keyCode: VK.RIGHT,
+          action: moveH$1(editor, true)
+        },
+        {
+          keyCode: VK.LEFT,
+          action: moveH$1(editor, false)
+        },
+        {
+          keyCode: VK.UP,
+          action: moveV$1(editor, false)
+        },
+        {
+          keyCode: VK.DOWN,
+          action: moveV$1(editor, true)
+        },
+        {
+          keyCode: VK.RIGHT,
+          action: BoundarySelection.move(editor, caret, true)
+        },
+        {
+          keyCode: VK.LEFT,
+          action: BoundarySelection.move(editor, caret, false)
+        },
+        {
+          keyCode: VK.RIGHT,
+          ctrlKey: !os.isOSX(),
+          altKey: os.isOSX(),
+          action: BoundarySelection.moveNextWord(editor, caret)
+        },
+        {
+          keyCode: VK.LEFT,
+          ctrlKey: !os.isOSX(),
+          altKey: os.isOSX(),
+          action: BoundarySelection.movePrevWord(editor, caret)
+        },
+        {
+          keyCode: VK.UP,
+          action: moveV$2(editor, false)
+        },
+        {
+          keyCode: VK.DOWN,
+          action: moveV$2(editor, true)
+        }
+      ], evt).each(function (_) {
+        evt.preventDefault();
+      });
+    };
+    var setup$7 = function (editor, caret) {
+      editor.on('keydown', function (evt) {
+        if (evt.isDefaultPrevented() === false) {
+          executeKeydownOverride(editor, caret, evt);
+        }
+      });
+    };
+    var ArrowKeys = { setup: setup$7 };
+
+    var isBeforeRoot = function (rootNode) {
+      return function (elm) {
+        return eq(rootNode, Element.fromDom(elm.dom().parentNode));
+      };
+    };
+    var getParentBlock$1 = function (rootNode, elm) {
+      return contains$3(rootNode, elm) ? closest(elm, function (element) {
+        return isTextBlock(element) || isListItem(element);
+      }, isBeforeRoot(rootNode)) : Option.none();
+    };
+    var placeCaretInEmptyBody = function (editor) {
+      var body = editor.getBody();
+      var node = body.firstChild && editor.dom.isBlock(body.firstChild) ? body.firstChild : body;
+      editor.selection.setCursorLocation(node, 0);
+    };
+    var paddEmptyBody = function (editor) {
+      if (editor.dom.isEmpty(editor.getBody())) {
+        editor.setContent('');
+        placeCaretInEmptyBody(editor);
+      }
+    };
+    var willDeleteLastPositionInElement = function (forward, fromPos, elm) {
+      return liftN([
+        CaretFinder.firstPositionIn(elm),
+        CaretFinder.lastPositionIn(elm)
+      ], function (firstPos, lastPos) {
+        var normalizedFirstPos = InlineUtils.normalizePosition(true, firstPos);
+        var normalizedLastPos = InlineUtils.normalizePosition(false, lastPos);
+        var normalizedFromPos = InlineUtils.normalizePosition(false, fromPos);
+        if (forward) {
+          return CaretFinder.nextPosition(elm, normalizedFromPos).map(function (nextPos) {
+            return nextPos.isEqual(normalizedLastPos) && fromPos.isEqual(normalizedFirstPos);
+          }).getOr(false);
+        } else {
+          return CaretFinder.prevPosition(elm, normalizedFromPos).map(function (prevPos) {
+            return prevPos.isEqual(normalizedFirstPos) && fromPos.isEqual(normalizedLastPos);
+          }).getOr(false);
+        }
+      }).getOr(true);
+    };
+    var DeleteUtils = {
+      getParentBlock: getParentBlock$1,
+      paddEmptyBody: paddEmptyBody,
+      willDeleteLastPositionInElement: willDeleteLastPositionInElement
+    };
+
+    var BlockPosition = Immutable('block', 'position');
+    var BlockBoundary = Immutable('from', 'to');
+    var getBlockPosition = function (rootNode, pos) {
+      var rootElm = Element.fromDom(rootNode);
+      var containerElm = Element.fromDom(pos.container());
+      return DeleteUtils.getParentBlock(rootElm, containerElm).map(function (block) {
+        return BlockPosition(block, pos);
+      });
+    };
+    var isDifferentBlocks = function (blockBoundary) {
+      return eq(blockBoundary.from().block(), blockBoundary.to().block()) === false;
+    };
+    var hasSameParent = function (blockBoundary) {
+      return parent(blockBoundary.from().block()).bind(function (parent1) {
+        return parent(blockBoundary.to().block()).filter(function (parent2) {
+          return eq(parent1, parent2);
+        });
+      }).isSome();
+    };
+    var isEditable = function (blockBoundary) {
+      return NodeType.isContentEditableFalse(blockBoundary.from().block()) === false && NodeType.isContentEditableFalse(blockBoundary.to().block()) === false;
+    };
+    var skipLastBr = function (rootNode, forward, blockPosition) {
+      if (NodeType.isBr(blockPosition.position().getNode()) && Empty.isEmpty(blockPosition.block()) === false) {
+        return CaretFinder.positionIn(false, blockPosition.block().dom()).bind(function (lastPositionInBlock) {
+          if (lastPositionInBlock.isEqual(blockPosition.position())) {
+            return CaretFinder.fromPosition(forward, rootNode, lastPositionInBlock).bind(function (to) {
+              return getBlockPosition(rootNode, to);
+            });
+          } else {
+            return Option.some(blockPosition);
+          }
+        }).getOr(blockPosition);
+      } else {
+        return blockPosition;
+      }
+    };
+    var readFromRange = function (rootNode, forward, rng) {
+      var fromBlockPos = getBlockPosition(rootNode, CaretPosition$1.fromRangeStart(rng));
+      var toBlockPos = fromBlockPos.bind(function (blockPos) {
+        return CaretFinder.fromPosition(forward, rootNode, blockPos.position()).bind(function (to) {
+          return getBlockPosition(rootNode, to).map(function (blockPos) {
+            return skipLastBr(rootNode, forward, blockPos);
+          });
+        });
+      });
+      return liftN([
+        fromBlockPos,
+        toBlockPos
+      ], BlockBoundary).filter(function (blockBoundary) {
+        return isDifferentBlocks(blockBoundary) && hasSameParent(blockBoundary) && isEditable(blockBoundary);
+      });
+    };
+    var read$3 = function (rootNode, forward, rng) {
+      return rng.collapsed ? readFromRange(rootNode, forward, rng) : Option.none();
+    };
+    var BlockMergeBoundary = { read: read$3 };
+
+    var getChildrenUntilBlockBoundary = function (block) {
+      var children$1 = children(block);
+      return findIndex(children$1, isBlock).fold(function () {
+        return children$1;
+      }, function (index) {
+        return children$1.slice(0, index);
+      });
+    };
+    var extractChildren = function (block) {
+      var children = getChildrenUntilBlockBoundary(block);
+      each(children, remove$1);
+      return children;
+    };
+    var removeEmptyRoot = function (rootNode, block) {
+      var parents = Parents.parentsAndSelf(block, rootNode);
+      return find(parents.reverse(), Empty.isEmpty).each(remove$1);
+    };
+    var isEmptyBefore = function (el) {
+      return filter(prevSiblings(el), function (el) {
+        return !Empty.isEmpty(el);
+      }).length === 0;
+    };
+    var nestedBlockMerge = function (rootNode, fromBlock, toBlock, insertionPoint) {
+      if (Empty.isEmpty(toBlock)) {
+        PaddingBr.fillWithPaddingBr(toBlock);
+        return CaretFinder.firstPositionIn(toBlock.dom());
+      }
+      if (isEmptyBefore(insertionPoint) && Empty.isEmpty(fromBlock)) {
+        before(insertionPoint, Element.fromTag('br'));
+      }
+      var position = CaretFinder.prevPosition(toBlock.dom(), CaretPosition$1.before(insertionPoint.dom()));
+      each(extractChildren(fromBlock), function (child) {
+        before(insertionPoint, child);
+      });
+      removeEmptyRoot(rootNode, fromBlock);
+      return position;
+    };
+    var sidelongBlockMerge = function (rootNode, fromBlock, toBlock) {
+      if (Empty.isEmpty(toBlock)) {
+        remove$1(toBlock);
+        if (Empty.isEmpty(fromBlock)) {
+          PaddingBr.fillWithPaddingBr(fromBlock);
+        }
+        return CaretFinder.firstPositionIn(fromBlock.dom());
+      }
+      var position = CaretFinder.lastPositionIn(toBlock.dom());
+      each(extractChildren(fromBlock), function (child) {
+        append(toBlock, child);
+      });
+      removeEmptyRoot(rootNode, fromBlock);
+      return position;
+    };
+    var findInsertionPoint = function (toBlock, block) {
+      var parentsAndSelf = Parents.parentsAndSelf(block, toBlock);
+      return Option.from(parentsAndSelf[parentsAndSelf.length - 1]);
+    };
+    var getInsertionPoint = function (fromBlock, toBlock) {
+      return contains$3(toBlock, fromBlock) ? findInsertionPoint(toBlock, fromBlock) : Option.none();
+    };
+    var trimBr = function (first, block) {
+      CaretFinder.positionIn(first, block.dom()).map(function (position) {
+        return position.getNode();
+      }).map(Element.fromDom).filter(isBr$1).each(remove$1);
+    };
+    var mergeBlockInto = function (rootNode, fromBlock, toBlock) {
+      trimBr(true, fromBlock);
+      trimBr(false, toBlock);
+      return getInsertionPoint(fromBlock, toBlock).fold(curry(sidelongBlockMerge, rootNode, fromBlock, toBlock), curry(nestedBlockMerge, rootNode, fromBlock, toBlock));
+    };
+    var mergeBlocks = function (rootNode, forward, block1, block2) {
+      return forward ? mergeBlockInto(rootNode, block2, block1) : mergeBlockInto(rootNode, block1, block2);
+    };
+    var MergeBlocks = { mergeBlocks: mergeBlocks };
+
+    var backspaceDelete = function (editor, forward) {
+      var position;
+      var rootNode = Element.fromDom(editor.getBody());
+      position = BlockMergeBoundary.read(rootNode.dom(), forward, editor.selection.getRng()).bind(function (blockBoundary) {
+        return MergeBlocks.mergeBlocks(rootNode, forward, blockBoundary.from().block(), blockBoundary.to().block());
+      });
+      position.each(function (pos) {
+        editor.selection.setRng(pos.toRange());
+      });
+      return position.isSome();
+    };
+    var BlockBoundaryDelete = { backspaceDelete: backspaceDelete };
+
+    var deleteRangeMergeBlocks = function (rootNode, selection) {
+      var rng = selection.getRng();
+      return liftN([
+        DeleteUtils.getParentBlock(rootNode, Element.fromDom(rng.startContainer)),
+        DeleteUtils.getParentBlock(rootNode, Element.fromDom(rng.endContainer))
+      ], function (block1, block2) {
+        if (eq(block1, block2) === false) {
+          rng.deleteContents();
+          MergeBlocks.mergeBlocks(rootNode, true, block1, block2).each(function (pos) {
+            selection.setRng(pos.toRange());
+          });
+          return true;
+        } else {
+          return false;
+        }
+      }).getOr(false);
+    };
+    var isRawNodeInTable = function (root, rawNode) {
+      var node = Element.fromDom(rawNode);
+      var isRoot = curry(eq, root);
+      return ancestor(node, isTableCell, isRoot).isSome();
+    };
+    var isSelectionInTable = function (root, rng) {
+      return isRawNodeInTable(root, rng.startContainer) || isRawNodeInTable(root, rng.endContainer);
+    };
+    var isEverythingSelected = function (root, rng) {
+      var noPrevious = CaretFinder.prevPosition(root.dom(), CaretPosition$1.fromRangeStart(rng)).isNone();
+      var noNext = CaretFinder.nextPosition(root.dom(), CaretPosition$1.fromRangeEnd(rng)).isNone();
+      return !isSelectionInTable(root, rng) && noPrevious && noNext;
+    };
+    var emptyEditor = function (editor) {
+      editor.setContent('');
+      editor.selection.setCursorLocation();
+      return true;
+    };
+    var deleteRange = function (editor) {
+      var rootNode = Element.fromDom(editor.getBody());
+      var rng = editor.selection.getRng();
+      return isEverythingSelected(rootNode, rng) ? emptyEditor(editor) : deleteRangeMergeBlocks(rootNode, editor.selection);
+    };
+    var backspaceDelete$1 = function (editor, forward) {
+      return editor.selection.isCollapsed() ? false : deleteRange(editor);
+    };
+    var BlockRangeDelete = { backspaceDelete: backspaceDelete$1 };
+
+    var isBr$5 = function (pos) {
+      return getElementFromPosition(pos).exists(isBr$1);
+    };
+    var findBr = function (forward, root, pos) {
+      var parentBlocks = filter(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock);
+      var scope = head(parentBlocks).getOr(root);
+      return CaretFinder.fromPosition(forward, scope.dom(), pos).filter(isBr$5);
+    };
+    var isBeforeBr = function (root, pos) {
+      return getElementFromPosition(pos).exists(isBr$1) || findBr(true, root, pos).isSome();
+    };
+    var isAfterBr = function (root, pos) {
+      return getElementFromPrevPosition(pos).exists(isBr$1) || findBr(false, root, pos).isSome();
+    };
+    var findPreviousBr = curry(findBr, false);
+    var findNextBr = curry(findBr, true);
+
+    var isCompoundElement = function (node) {
+      return isTableCell(Element.fromDom(node)) || isListItem(Element.fromDom(node));
+    };
+    var DeleteAction = Adt.generate([
+      { remove: ['element'] },
+      { moveToElement: ['element'] },
+      { moveToPosition: ['position'] }
+    ]);
+    var isAtContentEditableBlockCaret = function (forward, from) {
+      var elm = from.getNode(forward === false);
+      var caretLocation = forward ? 'after' : 'before';
+      return NodeType.isElement(elm) && elm.getAttribute('data-mce-caret') === caretLocation;
+    };
+    var isDeleteFromCefDifferentBlocks = function (root, forward, from, to) {
+      var inSameBlock = function (elm) {
+        return isInline(Element.fromDom(elm)) && !isInSameBlock(from, to, root);
+      };
+      return getRelativeCefElm(!forward, from).fold(function () {
+        return getRelativeCefElm(forward, to).fold(constant(false), inSameBlock);
+      }, inSameBlock);
+    };
+    var deleteEmptyBlockOrMoveToCef = function (root, forward, from, to) {
+      var toCefElm = to.getNode(forward === false);
+      return DeleteUtils.getParentBlock(Element.fromDom(root), Element.fromDom(from.getNode())).map(function (blockElm) {
+        return Empty.isEmpty(blockElm) ? DeleteAction.remove(blockElm.dom()) : DeleteAction.moveToElement(toCefElm);
+      }).orThunk(function () {
+        return Option.some(DeleteAction.moveToElement(toCefElm));
+      });
+    };
+    var findCefPosition = function (root, forward, from) {
+      return CaretFinder.fromPosition(forward, root, from).bind(function (to) {
+        if (isCompoundElement(to.getNode())) {
+          return Option.none();
+        } else if (isDeleteFromCefDifferentBlocks(root, forward, from, to)) {
+          return Option.none();
+        } else if (forward && NodeType.isContentEditableFalse(to.getNode())) {
+          return deleteEmptyBlockOrMoveToCef(root, forward, from, to);
+        } else if (forward === false && NodeType.isContentEditableFalse(to.getNode(true))) {
+          return deleteEmptyBlockOrMoveToCef(root, forward, from, to);
+        } else if (forward && isAfterContentEditableFalse(from)) {
+          return Option.some(DeleteAction.moveToPosition(to));
+        } else if (forward === false && isBeforeContentEditableFalse(from)) {
+          return Option.some(DeleteAction.moveToPosition(to));
+        } else {
+          return Option.none();
+        }
+      });
+    };
+    var getContentEditableBlockAction = function (forward, elm) {
+      if (forward && NodeType.isContentEditableFalse(elm.nextSibling)) {
+        return Option.some(DeleteAction.moveToElement(elm.nextSibling));
+      } else if (forward === false && NodeType.isContentEditableFalse(elm.previousSibling)) {
+        return Option.some(DeleteAction.moveToElement(elm.previousSibling));
+      } else {
+        return Option.none();
+      }
+    };
+    var skipMoveToActionFromInlineCefToContent = function (root, from, deleteAction) {
+      return deleteAction.fold(function (elm) {
+        return Option.some(DeleteAction.remove(elm));
+      }, function (elm) {
+        return Option.some(DeleteAction.moveToElement(elm));
+      }, function (to) {
+        if (isInSameBlock(from, to, root)) {
+          return Option.none();
+        } else {
+          return Option.some(DeleteAction.moveToPosition(to));
+        }
+      });
+    };
+    var getContentEditableAction = function (root, forward, from) {
+      if (isAtContentEditableBlockCaret(forward, from)) {
+        return getContentEditableBlockAction(forward, from.getNode(forward === false)).fold(function () {
+          return findCefPosition(root, forward, from);
+        }, Option.some);
+      } else {
+        return findCefPosition(root, forward, from).bind(function (deleteAction) {
+          return skipMoveToActionFromInlineCefToContent(root, from, deleteAction);
+        });
+      }
+    };
+    var read$4 = function (root, forward, rng) {
+      var normalizedRange = normalizeRange(forward ? 1 : -1, root, rng);
+      var from = CaretPosition$1.fromRangeStart(normalizedRange);
+      var rootElement = Element.fromDom(root);
+      if (forward === false && isAfterContentEditableFalse(from)) {
+        return Option.some(DeleteAction.remove(from.getNode(true)));
+      } else if (forward && isBeforeContentEditableFalse(from)) {
+        return Option.some(DeleteAction.remove(from.getNode()));
+      } else if (forward === false && isBeforeContentEditableFalse(from) && isAfterBr(rootElement, from)) {
+        return findPreviousBr(rootElement, from).map(function (br) {
+          return DeleteAction.remove(br.getNode());
+        });
+      } else if (forward && isAfterContentEditableFalse(from) && isBeforeBr(rootElement, from)) {
+        return findNextBr(rootElement, from).map(function (br) {
+          return DeleteAction.remove(br.getNode());
+        });
+      } else {
+        return getContentEditableAction(root, forward, from);
+      }
+    };
+
+    var deleteElement$1 = function (editor, forward) {
+      return function (element) {
+        editor._selectionOverrides.hideFakeCaret();
+        DeleteElement.deleteElement(editor, forward, Element.fromDom(element));
+        return true;
+      };
+    };
+    var moveToElement = function (editor, forward) {
+      return function (element) {
+        var pos = forward ? CaretPosition$1.before(element) : CaretPosition$1.after(element);
+        editor.selection.setRng(pos.toRange());
+        return true;
+      };
+    };
+    var moveToPosition = function (editor) {
+      return function (pos) {
+        editor.selection.setRng(pos.toRange());
+        return true;
+      };
+    };
+    var backspaceDeleteCaret = function (editor, forward) {
+      var result = read$4(editor.getBody(), forward, editor.selection.getRng()).map(function (deleteAction) {
+        return deleteAction.fold(deleteElement$1(editor, forward), moveToElement(editor, forward), moveToPosition(editor));
+      });
+      return result.getOr(false);
+    };
+    var deleteOffscreenSelection = function (rootElement) {
+      each(descendants$1(rootElement, '.mce-offscreen-selection'), remove$1);
+    };
+    var backspaceDeleteRange = function (editor, forward) {
+      var selectedElement = editor.selection.getNode();
+      if (NodeType.isContentEditableFalse(selectedElement)) {
+        deleteOffscreenSelection(Element.fromDom(editor.getBody()));
+        DeleteElement.deleteElement(editor, forward, Element.fromDom(editor.selection.getNode()));
+        DeleteUtils.paddEmptyBody(editor);
+        return true;
+      } else {
+        return false;
+      }
+    };
+    var getContentEditableRoot$2 = function (root, node) {
+      while (node && node !== root) {
+        if (NodeType.isContentEditableTrue(node) || NodeType.isContentEditableFalse(node)) {
+          return node;
+        }
+        node = node.parentNode;
+      }
+      return null;
+    };
+    var paddEmptyElement = function (editor) {
+      var br;
+      var ceRoot = getContentEditableRoot$2(editor.getBody(), editor.selection.getNode());
+      if (NodeType.isContentEditableTrue(ceRoot) && editor.dom.isBlock(ceRoot) && editor.dom.isEmpty(ceRoot)) {
+        br = editor.dom.create('br', { 'data-mce-bogus': '1' });
+        editor.dom.setHTML(ceRoot, '');
+        ceRoot.appendChild(br);
+        editor.selection.setRng(CaretPosition$1.before(br).toRange());
+      }
+      return true;
+    };
+    var backspaceDelete$2 = function (editor, forward) {
+      if (editor.selection.isCollapsed()) {
+        return backspaceDeleteCaret(editor, forward);
+      } else {
+        return backspaceDeleteRange(editor, forward);
+      }
+    };
+    var CefDelete = {
+      backspaceDelete: backspaceDelete$2,
+      paddEmptyElement: paddEmptyElement
+    };
+
+    var trimEmptyTextNode$1 = function (dom, node) {
+      if (NodeType.isText(node) && node.data.length === 0) {
+        dom.remove(node);
+      }
+    };
+    var deleteContentAndShowCaret = function (editor, range, node, direction, forward, peekCaretPosition) {
+      var caretRange = showCaret(direction, editor, peekCaretPosition.getNode(!forward), forward, true);
+      if (range.collapsed) {
+        var deleteRange = range.cloneRange();
+        if (forward) {
+          deleteRange.setEnd(caretRange.startContainer, caretRange.startOffset);
+        } else {
+          deleteRange.setStart(caretRange.endContainer, caretRange.endOffset);
+        }
+        deleteRange.deleteContents();
+      } else {
+        range.deleteContents();
+      }
+      editor.selection.setRng(caretRange);
+      trimEmptyTextNode$1(editor.dom, node);
+      return true;
+    };
+    var deleteCefBoundaryText = function (editor, forward) {
+      var range = editor.selection.getRng();
+      if (!NodeType.isText(range.commonAncestorContainer)) {
+        return false;
+      }
+      var direction = forward ? HDirection.Forwards : HDirection.Backwards;
+      var caretWalker = CaretWalker(editor.getBody());
+      var getNextVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.next);
+      var getPrevVisualCaretPosition = curry(getVisualCaretPosition, caretWalker.prev);
+      var getNextPosFn = forward ? getNextVisualCaretPosition : getPrevVisualCaretPosition;
+      var isBeforeContentEditableFalseFn = forward ? isBeforeContentEditableFalse : isAfterContentEditableFalse;
+      var caretPosition = getNormalizedRangeEndPoint(direction, editor.getBody(), range);
+      var nextCaretPosition = InlineUtils.normalizePosition(forward, getNextPosFn(caretPosition));
+      if (!nextCaretPosition) {
+        return false;
+      } else if (isBeforeContentEditableFalseFn(nextCaretPosition)) {
+        return deleteContentAndShowCaret(editor, range, caretPosition.getNode(), direction, forward, nextCaretPosition);
+      }
+      var peekCaretPosition = getNextPosFn(nextCaretPosition);
+      if (peekCaretPosition && isBeforeContentEditableFalseFn(peekCaretPosition)) {
+        if (isMoveInsideSameBlock(nextCaretPosition, peekCaretPosition)) {
+          return deleteContentAndShowCaret(editor, range, caretPosition.getNode(), direction, forward, peekCaretPosition);
+        }
+      }
+      return false;
+    };
+    var backspaceDelete$3 = function (editor, forward) {
+      return deleteCefBoundaryText(editor, forward);
+    };
+    var CefBoundaryDelete = { backspaceDelete: backspaceDelete$3 };
+
+    var isFeatureEnabled$1 = function (editor) {
+      return editor.settings.inline_boundaries !== false;
+    };
+    var rangeFromPositions = function (from, to) {
+      var range = domGlobals.document.createRange();
+      range.setStart(from.container(), from.offset());
+      range.setEnd(to.container(), to.offset());
+      return range;
+    };
+    var hasOnlyTwoOrLessPositionsLeft = function (elm) {
+      return liftN([
+        CaretFinder.firstPositionIn(elm),
+        CaretFinder.lastPositionIn(elm)
+      ], function (firstPos, lastPos) {
+        var normalizedFirstPos = InlineUtils.normalizePosition(true, firstPos);
+        var normalizedLastPos = InlineUtils.normalizePosition(false, lastPos);
+        return CaretFinder.nextPosition(elm, normalizedFirstPos).map(function (pos) {
+          return pos.isEqual(normalizedLastPos);
+        }).getOr(true);
+      }).getOr(true);
+    };
+    var setCaretLocation = function (editor, caret) {
+      return function (location) {
+        return BoundaryCaret.renderCaret(caret, location).map(function (pos) {
+          BoundarySelection.setCaretPosition(editor, pos);
+          return true;
+        }).getOr(false);
+      };
+    };
+    var deleteFromTo = function (editor, caret, from, to) {
+      var rootNode = editor.getBody();
+      var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);
+      editor.undoManager.ignore(function () {
+        editor.selection.setRng(rangeFromPositions(from, to));
+        editor.execCommand('Delete');
+        BoundaryLocation.readLocation(isInlineTarget, rootNode, CaretPosition$1.fromRangeStart(editor.selection.getRng())).map(BoundaryLocation.inside).map(setCaretLocation(editor, caret));
+      });
+      editor.nodeChanged();
+    };
+    var rescope$1 = function (rootNode, node) {
+      var parentBlock = getParentBlock(node, rootNode);
+      return parentBlock ? parentBlock : rootNode;
+    };
+    var backspaceDeleteCollapsed = function (editor, caret, forward, from) {
+      var rootNode = rescope$1(editor.getBody(), from.container());
+      var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);
+      var fromLocation = BoundaryLocation.readLocation(isInlineTarget, rootNode, from);
+      return fromLocation.bind(function (location) {
+        if (forward) {
+          return location.fold(constant(Option.some(BoundaryLocation.inside(location))), Option.none, constant(Option.some(BoundaryLocation.outside(location))), Option.none);
+        } else {
+          return location.fold(Option.none, constant(Option.some(BoundaryLocation.outside(location))), Option.none, constant(Option.some(BoundaryLocation.inside(location))));
+        }
+      }).map(setCaretLocation(editor, caret)).getOrThunk(function () {
+        var toPosition = CaretFinder.navigate(forward, rootNode, from);
+        var toLocation = toPosition.bind(function (pos) {
+          return BoundaryLocation.readLocation(isInlineTarget, rootNode, pos);
+        });
+        if (fromLocation.isSome() && toLocation.isSome()) {
+          return InlineUtils.findRootInline(isInlineTarget, rootNode, from).map(function (elm) {
+            if (hasOnlyTwoOrLessPositionsLeft(elm)) {
+              DeleteElement.deleteElement(editor, forward, Element.fromDom(elm));
+              return true;
+            } else {
+              return false;
+            }
+          }).getOr(false);
+        } else {
+          return toLocation.bind(function (_) {
+            return toPosition.map(function (to) {
+              if (forward) {
+                deleteFromTo(editor, caret, from, to);
+              } else {
+                deleteFromTo(editor, caret, to, from);
+              }
+              return true;
+            });
+          }).getOr(false);
+        }
+      });
+    };
+    var backspaceDelete$4 = function (editor, caret, forward) {
+      if (editor.selection.isCollapsed() && isFeatureEnabled$1(editor)) {
+        var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());
+        return backspaceDeleteCollapsed(editor, caret, forward, from);
+      }
+      return false;
+    };
+    var BoundaryDelete = { backspaceDelete: backspaceDelete$4 };
+
+    var getParentInlines = function (rootElm, startElm) {
+      var parents = Parents.parentsAndSelf(startElm, rootElm);
+      return findIndex(parents, isBlock).fold(constant(parents), function (index) {
+        return parents.slice(0, index);
+      });
+    };
+    var hasOnlyOneChild = function (elm) {
+      return children(elm).length === 1;
+    };
+    var deleteLastPosition = function (forward, editor, target, parentInlines) {
+      var isFormatElement$1 = curry(isFormatElement, editor);
+      var formatNodes = map(filter(parentInlines, isFormatElement$1), function (elm) {
+        return elm.dom();
+      });
+      if (formatNodes.length === 0) {
+        DeleteElement.deleteElement(editor, forward, target);
+      } else {
+        var pos = replaceWithCaretFormat(target.dom(), formatNodes);
+        editor.selection.setRng(pos.toRange());
+      }
+    };
+    var deleteCaret = function (editor, forward) {
+      var rootElm = Element.fromDom(editor.getBody());
+      var startElm = Element.fromDom(editor.selection.getStart());
+      var parentInlines = filter(getParentInlines(rootElm, startElm), hasOnlyOneChild);
+      return last(parentInlines).map(function (target) {
+        var fromPos = CaretPosition$1.fromRangeStart(editor.selection.getRng());
+        if (DeleteUtils.willDeleteLastPositionInElement(forward, fromPos, target.dom()) && !isEmptyCaretFormatElement(target)) {
+          deleteLastPosition(forward, editor, target, parentInlines);
+          return true;
+        } else {
+          return false;
+        }
+      }).getOr(false);
+    };
+    var backspaceDelete$5 = function (editor, forward) {
+      return editor.selection.isCollapsed() ? deleteCaret(editor, forward) : false;
+    };
+    var InlineFormatDelete = { backspaceDelete: backspaceDelete$5 };
+
+    var tableCellRng = Immutable('start', 'end');
+    var tableSelection = Immutable('rng', 'table', 'cells');
+    var deleteAction = Adt.generate([
+      { removeTable: ['element'] },
+      { emptyCells: ['cells'] }
+    ]);
+    var isRootFromElement = function (root) {
+      return curry(eq, root);
+    };
+    var getClosestCell$1 = function (container, isRoot) {
+      return closest$1(Element.fromDom(container), 'td,th', isRoot);
+    };
+    var getClosestTable = function (cell, isRoot) {
+      return ancestor$1(cell, 'table', isRoot);
+    };
+    var isExpandedCellRng = function (cellRng) {
+      return eq(cellRng.start(), cellRng.end()) === false;
+    };
+    var getTableFromCellRng = function (cellRng, isRoot) {
+      return getClosestTable(cellRng.start(), isRoot).bind(function (startParentTable) {
+        return getClosestTable(cellRng.end(), isRoot).bind(function (endParentTable) {
+          return eq(startParentTable, endParentTable) ? Option.some(startParentTable) : Option.none();
+        });
+      });
+    };
+    var getTableCells = function (table) {
+      return descendants$1(table, 'td,th');
+    };
+    var getCellRangeFromStartTable = function (cellRng, isRoot) {
+      return getClosestTable(cellRng.start(), isRoot).bind(function (table) {
+        return last(getTableCells(table)).map(function (endCell) {
+          return tableCellRng(cellRng.start(), endCell);
+        });
+      });
+    };
+    var partialSelection = function (isRoot, rng) {
+      var startCell = getClosestCell$1(rng.startContainer, isRoot);
+      var endCell = getClosestCell$1(rng.endContainer, isRoot);
+      return rng.collapsed ? Option.none() : liftN([
+        startCell,
+        endCell
+      ], tableCellRng).fold(function () {
+        return startCell.fold(function () {
+          return endCell.bind(function (endCell) {
+            return getClosestTable(endCell, isRoot).bind(function (table) {
+              return head(getTableCells(table)).map(function (startCell) {
+                return tableCellRng(startCell, endCell);
+              });
+            });
+          });
+        }, function (startCell) {
+          return getClosestTable(startCell, isRoot).bind(function (table) {
+            return last(getTableCells(table)).map(function (endCell) {
+              return tableCellRng(startCell, endCell);
+            });
+          });
+        });
+      }, function (cellRng) {
+        return isWithinSameTable(isRoot, cellRng) ? Option.none() : getCellRangeFromStartTable(cellRng, isRoot);
+      });
+    };
+    var isWithinSameTable = function (isRoot, cellRng) {
+      return getTableFromCellRng(cellRng, isRoot).isSome();
+    };
+    var getCellRng = function (rng, isRoot) {
+      var startCell = getClosestCell$1(rng.startContainer, isRoot);
+      var endCell = getClosestCell$1(rng.endContainer, isRoot);
+      return liftN([
+        startCell,
+        endCell
+      ], tableCellRng).filter(isExpandedCellRng).filter(function (cellRng) {
+        return isWithinSameTable(isRoot, cellRng);
+      }).orThunk(function () {
+        return partialSelection(isRoot, rng);
+      });
+    };
+    var getTableSelectionFromCellRng = function (cellRng, isRoot) {
+      return getTableFromCellRng(cellRng, isRoot).map(function (table) {
+        return tableSelection(cellRng, table, getTableCells(table));
+      });
+    };
+    var getTableSelectionFromRng = function (root, rng) {
+      var isRoot = isRootFromElement(root);
+      return getCellRng(rng, isRoot).bind(function (cellRng) {
+        return getTableSelectionFromCellRng(cellRng, isRoot);
+      });
+    };
+    var getCellIndex = function (cells, cell) {
+      return findIndex(cells, function (x) {
+        return eq(x, cell);
+      });
+    };
+    var getSelectedCells = function (tableSelection) {
+      return liftN([
+        getCellIndex(tableSelection.cells(), tableSelection.rng().start()),
+        getCellIndex(tableSelection.cells(), tableSelection.rng().end())
+      ], function (startIndex, endIndex) {
+        return tableSelection.cells().slice(startIndex, endIndex + 1);
+      });
+    };
+    var getAction = function (tableSelection) {
+      return getSelectedCells(tableSelection).map(function (selected) {
+        var cells = tableSelection.cells();
+        return selected.length === cells.length ? deleteAction.removeTable(tableSelection.table()) : deleteAction.emptyCells(selected);
+      });
+    };
+    var getActionFromCells = function (cells) {
+      return deleteAction.emptyCells(cells);
+    };
+    var getActionFromRange = function (root, rng) {
+      return getTableSelectionFromRng(root, rng).bind(getAction);
+    };
+    var TableDeleteAction = {
+      getActionFromRange: getActionFromRange,
+      getActionFromCells: getActionFromCells
+    };
+
+    var emptyCells = function (editor, cells) {
+      each(cells, PaddingBr.fillWithPaddingBr);
+      editor.selection.setCursorLocation(cells[0].dom(), 0);
+      return true;
+    };
+    var deleteTableElement = function (editor, table) {
+      DeleteElement.deleteElement(editor, false, table);
+      return true;
+    };
+    var deleteCellRange = function (editor, rootElm, rng) {
+      return TableDeleteAction.getActionFromRange(rootElm, rng).map(function (action) {
+        return action.fold(curry(deleteTableElement, editor), curry(emptyCells, editor));
+      });
+    };
+    var deleteCaptionRange = function (editor, caption) {
+      return emptyElement(editor, caption);
+    };
+    var deleteTableRange = function (editor, rootElm, rng, startElm) {
+      return getParentCaption(rootElm, startElm).fold(function () {
+        return deleteCellRange(editor, rootElm, rng);
+      }, function (caption) {
+        return deleteCaptionRange(editor, caption);
+      }).getOr(false);
+    };
+    var deleteRange$1 = function (editor, startElm) {
+      var rootNode = Element.fromDom(editor.getBody());
+      var rng = editor.selection.getRng();
+      var selectedCells = TableCellSelection.getCellsFromEditor(editor);
+      return selectedCells.length !== 0 ? emptyCells(editor, selectedCells) : deleteTableRange(editor, rootNode, rng, startElm);
+    };
+    var getParentCell = function (rootElm, elm) {
+      return find(Parents.parentsAndSelf(elm, rootElm), isTableCell);
+    };
+    var getParentCaption = function (rootElm, elm) {
+      return find(Parents.parentsAndSelf(elm, rootElm), function (elm) {
+        return name(elm) === 'caption';
+      });
+    };
+    var deleteBetweenCells = function (editor, rootElm, forward, fromCell, from) {
+      return CaretFinder.navigate(forward, editor.getBody(), from).bind(function (to) {
+        return getParentCell(rootElm, Element.fromDom(to.getNode())).map(function (toCell) {
+          return eq(toCell, fromCell) === false;
+        });
+      });
+    };
+    var emptyElement = function (editor, elm) {
+      PaddingBr.fillWithPaddingBr(elm);
+      editor.selection.setCursorLocation(elm.dom(), 0);
+      return Option.some(true);
+    };
+    var isDeleteOfLastCharPos = function (fromCaption, forward, from, to) {
+      return CaretFinder.firstPositionIn(fromCaption.dom()).bind(function (first) {
+        return CaretFinder.lastPositionIn(fromCaption.dom()).map(function (last) {
+          return forward ? from.isEqual(first) && to.isEqual(last) : from.isEqual(last) && to.isEqual(first);
+        });
+      }).getOr(true);
+    };
+    var emptyCaretCaption = function (editor, elm) {
+      return emptyElement(editor, elm);
+    };
+    var validateCaretCaption = function (rootElm, fromCaption, to) {
+      return getParentCaption(rootElm, Element.fromDom(to.getNode())).map(function (toCaption) {
+        return eq(toCaption, fromCaption) === false;
+      });
+    };
+    var deleteCaretInsideCaption = function (editor, rootElm, forward, fromCaption, from) {
+      return CaretFinder.navigate(forward, editor.getBody(), from).bind(function (to) {
+        return isDeleteOfLastCharPos(fromCaption, forward, from, to) ? emptyCaretCaption(editor, fromCaption) : validateCaretCaption(rootElm, fromCaption, to);
+      }).or(Option.some(true));
+    };
+    var deleteCaretCells = function (editor, forward, rootElm, startElm) {
+      var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());
+      return getParentCell(rootElm, startElm).bind(function (fromCell) {
+        return Empty.isEmpty(fromCell) ? emptyElement(editor, fromCell) : deleteBetweenCells(editor, rootElm, forward, fromCell, from);
+      }).getOr(false);
+    };
+    var deleteCaretCaption = function (editor, forward, rootElm, fromCaption) {
+      var from = CaretPosition$1.fromRangeStart(editor.selection.getRng());
+      return Empty.isEmpty(fromCaption) ? emptyElement(editor, fromCaption) : deleteCaretInsideCaption(editor, rootElm, forward, fromCaption, from);
+    };
+    var isNearTable = function (forward, pos) {
+      return forward ? isBeforeTable(pos) : isAfterTable(pos);
+    };
+    var isBeforeOrAfterTable = function (editor, forward) {
+      var fromPos = CaretPosition$1.fromRangeStart(editor.selection.getRng());
+      return isNearTable(forward, fromPos) || CaretFinder.fromPosition(forward, editor.getBody(), fromPos).map(function (pos) {
+        return isNearTable(forward, pos);
+      }).getOr(false);
+    };
+    var deleteCaret$1 = function (editor, forward, startElm) {
+      var rootElm = Element.fromDom(editor.getBody());
+      return getParentCaption(rootElm, startElm).fold(function () {
+        return deleteCaretCells(editor, forward, rootElm, startElm) || isBeforeOrAfterTable(editor, forward);
+      }, function (fromCaption) {
+        return deleteCaretCaption(editor, forward, rootElm, fromCaption).getOr(false);
+      });
+    };
+    var backspaceDelete$6 = function (editor, forward) {
+      var startElm = Element.fromDom(editor.selection.getStart(true));
+      var cells = TableCellSelection.getCellsFromEditor(editor);
+      return editor.selection.isCollapsed() && cells.length === 0 ? deleteCaret$1(editor, forward, startElm) : deleteRange$1(editor, startElm);
+    };
+    var TableDelete = { backspaceDelete: backspaceDelete$6 };
+
+    var deleteCaret$2 = function (editor, forward) {
+      var fromPos = CaretPosition$1.fromRangeStart(editor.selection.getRng());
+      return CaretFinder.fromPosition(forward, editor.getBody(), fromPos).filter(function (pos) {
+        return forward ? isBeforeImageBlock(pos) : isAfterImageBlock(pos);
+      }).bind(function (pos) {
+        return Option.from(getChildNodeAtRelativeOffset(forward ? 0 : -1, pos));
+      }).map(function (elm) {
+        editor.selection.select(elm);
+        return true;
+      }).getOr(false);
+    };
+    var backspaceDelete$7 = function (editor, forward) {
+      return editor.selection.isCollapsed() ? deleteCaret$2(editor, forward) : false;
+    };
+    var PageBreakDelete = { backspaceDelete: backspaceDelete$7 };
+
+    var executeKeydownOverride$1 = function (editor, caret, evt) {
+      MatchKeys.execute([
+        {
+          keyCode: VK.BACKSPACE,
+          action: MatchKeys.action(CefDelete.backspaceDelete, editor, false)
+        },
+        {
+          keyCode: VK.DELETE,
+          action: MatchKeys.action(CefDelete.backspaceDelete, editor, true)
+        },
+        {
+          keyCode: VK.BACKSPACE,
+          action: MatchKeys.action(CefBoundaryDelete.backspaceDelete, editor, false)
+        },
+        {
+          keyCode: VK.DELETE,
+          action: MatchKeys.action(CefBoundaryDelete.backspaceDelete, editor, true)
+        },
+        {
+          keyCode: VK.BACKSPACE,
+          action: MatchKeys.action(BoundaryDelete.backspaceDelete, editor, caret, false)
+        },
+        {
+          keyCode: VK.DELETE,
+          action: MatchKeys.action(BoundaryDelete.backspaceDelete, editor, caret, true)
+        },
+        {
+          keyCode: VK.BACKSPACE,
+          action: MatchKeys.action(TableDelete.backspaceDelete, editor, false)
+        },
+        {
+          keyCode: VK.DELETE,
+          action: MatchKeys.action(TableDelete.backspaceDelete, editor, true)
+        },
+        {
+          keyCode: VK.BACKSPACE,
+          action: MatchKeys.action(PageBreakDelete.backspaceDelete, editor, false)
+        },
+        {
+          keyCode: VK.DELETE,
+          action: MatchKeys.action(PageBreakDelete.backspaceDelete, editor, true)
+        },
+        {
+          keyCode: VK.BACKSPACE,
+          action: MatchKeys.action(BlockRangeDelete.backspaceDelete, editor, false)
+        },
+        {
+          keyCode: VK.DELETE,
+          action: MatchKeys.action(BlockRangeDelete.backspaceDelete, editor, true)
+        },
+        {
+          keyCode: VK.BACKSPACE,
+          action: MatchKeys.action(BlockBoundaryDelete.backspaceDelete, editor, false)
+        },
+        {
+          keyCode: VK.DELETE,
+          action: MatchKeys.action(BlockBoundaryDelete.backspaceDelete, editor, true)
+        },
+        {
+          keyCode: VK.BACKSPACE,
+          action: MatchKeys.action(InlineFormatDelete.backspaceDelete, editor, false)
+        },
+        {
+          keyCode: VK.DELETE,
+          action: MatchKeys.action(InlineFormatDelete.backspaceDelete, editor, true)
+        }
+      ], evt).each(function (_) {
+        evt.preventDefault();
+      });
+    };
+    var executeKeyupOverride = function (editor, evt) {
+      MatchKeys.execute([
+        {
+          keyCode: VK.BACKSPACE,
+          action: MatchKeys.action(CefDelete.paddEmptyElement, editor)
+        },
+        {
+          keyCode: VK.DELETE,
+          action: MatchKeys.action(CefDelete.paddEmptyElement, editor)
+        }
+      ], evt);
+    };
+    var setup$8 = function (editor, caret) {
+      editor.on('keydown', function (evt) {
+        if (evt.isDefaultPrevented() === false) {
+          executeKeydownOverride$1(editor, caret, evt);
+        }
+      });
+      editor.on('keyup', function (evt) {
+        if (evt.isDefaultPrevented() === false) {
+          executeKeyupOverride(editor, evt);
+        }
+      });
+    };
+    var DeleteBackspaceKeys = { setup: setup$8 };
+
+    var firstNonWhiteSpaceNodeSibling = function (node) {
+      while (node) {
+        if (node.nodeType === 1 || node.nodeType === 3 && node.data && /[\r\n\s]/.test(node.data)) {
+          return node;
+        }
+        node = node.nextSibling;
+      }
+    };
+    var moveToCaretPosition = function (editor, root) {
+      var node, rng, lastNode = root;
+      var dom = editor.dom;
+      var moveCaretBeforeOnEnterElementsMap = editor.schema.getMoveCaretBeforeOnEnterElements();
+      if (!root) {
+        return;
+      }
+      if (/^(LI|DT|DD)$/.test(root.nodeName)) {
+        var firstChild = firstNonWhiteSpaceNodeSibling(root.firstChild);
+        if (firstChild && /^(UL|OL|DL)$/.test(firstChild.nodeName)) {
+          root.insertBefore(dom.doc.createTextNode('\xA0'), root.firstChild);
+        }
+      }
+      rng = dom.createRng();
+      root.normalize();
+      if (root.hasChildNodes()) {
+        var walker = new TreeWalker(root, root);
+        while (node = walker.current()) {
+          if (NodeType.isText(node)) {
+            rng.setStart(node, 0);
+            rng.setEnd(node, 0);
+            break;
+          }
+          if (moveCaretBeforeOnEnterElementsMap[node.nodeName.toLowerCase()]) {
+            rng.setStartBefore(node);
+            rng.setEndBefore(node);
+            break;
+          }
+          lastNode = node;
+          node = walker.next();
+        }
+        if (!node) {
+          rng.setStart(lastNode, 0);
+          rng.setEnd(lastNode, 0);
+        }
+      } else {
+        if (NodeType.isBr(root)) {
+          if (root.nextSibling && dom.isBlock(root.nextSibling)) {
+            rng.setStartBefore(root);
+            rng.setEndBefore(root);
+          } else {
+            rng.setStartAfter(root);
+            rng.setEndAfter(root);
+          }
+        } else {
+          rng.setStart(root, 0);
+          rng.setEnd(root, 0);
+        }
+      }
+      editor.selection.setRng(rng);
+      editor.selection.scrollIntoView(root);
+    };
+    var getEditableRoot = function (dom, node) {
+      var root = dom.getRoot();
+      var parent, editableRoot;
+      parent = node;
+      while (parent !== root && dom.getContentEditable(parent) !== 'false') {
+        if (dom.getContentEditable(parent) === 'true') {
+          editableRoot = parent;
+        }
+        parent = parent.parentNode;
+      }
+      return parent !== root ? editableRoot : root;
+    };
+    var getParentBlock$2 = function (editor) {
+      return Option.from(editor.dom.getParent(editor.selection.getStart(true), editor.dom.isBlock));
+    };
+    var getParentBlockName = function (editor) {
+      return getParentBlock$2(editor).fold(constant(''), function (parentBlock) {
+        return parentBlock.nodeName.toUpperCase();
+      });
+    };
+    var isListItemParentBlock = function (editor) {
+      return getParentBlock$2(editor).filter(function (elm) {
+        return isListItem(Element.fromDom(elm));
+      }).isSome();
+    };
+    var NewLineUtils = {
+      moveToCaretPosition: moveToCaretPosition,
+      getEditableRoot: getEditableRoot,
+      getParentBlock: getParentBlock$2,
+      getParentBlockName: getParentBlockName,
+      isListItemParentBlock: isListItemParentBlock
+    };
+
+    var hasFirstChild = function (elm, name) {
+      return elm.firstChild && elm.firstChild.nodeName === name;
+    };
+    var hasParent$1 = function (elm, parentName) {
+      return elm && elm.parentNode && elm.parentNode.nodeName === parentName;
+    };
+    var isListBlock = function (elm) {
+      return elm && /^(OL|UL|LI)$/.test(elm.nodeName);
+    };
+    var isNestedList = function (elm) {
+      return isListBlock(elm) && isListBlock(elm.parentNode);
+    };
+    var getContainerBlock = function (containerBlock) {
+      var containerBlockParent = containerBlock.parentNode;
+      if (/^(LI|DT|DD)$/.test(containerBlockParent.nodeName)) {
+        return containerBlockParent;
+      }
+      return containerBlock;
+    };
+    var isFirstOrLastLi = function (containerBlock, parentBlock, first) {
+      var node = containerBlock[first ? 'firstChild' : 'lastChild'];
+      while (node) {
+        if (NodeType.isElement(node)) {
+          break;
+        }
+        node = node[first ? 'nextSibling' : 'previousSibling'];
+      }
+      return node === parentBlock;
+    };
+    var insert = function (editor, createNewBlock, containerBlock, parentBlock, newBlockName) {
+      var dom = editor.dom;
+      var rng = editor.selection.getRng();
+      if (containerBlock === editor.getBody()) {
+        return;
+      }
+      if (isNestedList(containerBlock)) {
+        newBlockName = 'LI';
+      }
+      var newBlock = newBlockName ? createNewBlock(newBlockName) : dom.create('BR');
+      if (isFirstOrLastLi(containerBlock, parentBlock, true) && isFirstOrLastLi(containerBlock, parentBlock, false)) {
+        if (hasParent$1(containerBlock, 'LI')) {
+          dom.insertAfter(newBlock, getContainerBlock(containerBlock));
+        } else {
+          dom.replace(newBlock, containerBlock);
+        }
+      } else if (isFirstOrLastLi(containerBlock, parentBlock, true)) {
+        if (hasParent$1(containerBlock, 'LI')) {
+          dom.insertAfter(newBlock, getContainerBlock(containerBlock));
+          newBlock.appendChild(dom.doc.createTextNode(' '));
+          newBlock.appendChild(containerBlock);
+        } else {
+          containerBlock.parentNode.insertBefore(newBlock, containerBlock);
+        }
+      } else if (isFirstOrLastLi(containerBlock, parentBlock, false)) {
+        dom.insertAfter(newBlock, getContainerBlock(containerBlock));
+      } else {
+        containerBlock = getContainerBlock(containerBlock);
+        var tmpRng = rng.cloneRange();
+        tmpRng.setStartAfter(parentBlock);
+        tmpRng.setEndAfter(containerBlock);
+        var fragment = tmpRng.extractContents();
+        if (newBlockName === 'LI' && hasFirstChild(fragment, 'LI')) {
+          newBlock = fragment.firstChild;
+          dom.insertAfter(fragment, containerBlock);
+        } else {
+          dom.insertAfter(fragment, containerBlock);
+          dom.insertAfter(newBlock, containerBlock);
+        }
+      }
+      dom.remove(parentBlock);
+      NewLineUtils.moveToCaretPosition(editor, newBlock);
+    };
+    var InsertLi = { insert: insert };
+
+    var trimZwsp = function (fragment) {
+      each(descendants(Element.fromDom(fragment), isText), function (text) {
+        var rawNode = text.dom();
+        rawNode.nodeValue = Zwsp.trim(rawNode.nodeValue);
+      });
+    };
+    var isEmptyAnchor = function (dom, elm) {
+      return elm && elm.nodeName === 'A' && dom.isEmpty(elm);
+    };
+    var isTableCell$4 = function (node) {
+      return node && /^(TD|TH|CAPTION)$/.test(node.nodeName);
+    };
+    var emptyBlock = function (elm) {
+      elm.innerHTML = '<br data-mce-bogus="1">';
+    };
+    var containerAndSiblingName = function (container, nodeName) {
+      return container.nodeName === nodeName || container.previousSibling && container.previousSibling.nodeName === nodeName;
+    };
+    var canSplitBlock = function (dom, node) {
+      return node && dom.isBlock(node) && !/^(TD|TH|CAPTION|FORM)$/.test(node.nodeName) && !/^(fixed|absolute)/i.test(node.style.position) && dom.getContentEditable(node) !== 'true';
+    };
+    var trimInlineElementsOnLeftSideOfBlock = function (dom, nonEmptyElementsMap, block) {
+      var node = block;
+      var firstChilds = [];
+      var i;
+      if (!node) {
+        return;
+      }
+      while (node = node.firstChild) {
+        if (dom.isBlock(node)) {
+          return;
+        }
+        if (NodeType.isElement(node) && !nonEmptyElementsMap[node.nodeName.toLowerCase()]) {
+          firstChilds.push(node);
+        }
+      }
+      i = firstChilds.length;
+      while (i--) {
+        node = firstChilds[i];
+        if (!node.hasChildNodes() || node.firstChild === node.lastChild && node.firstChild.nodeValue === '') {
+          dom.remove(node);
+        } else {
+          if (isEmptyAnchor(dom, node)) {
+            dom.remove(node);
+          }
+        }
+      }
+    };
+    var normalizeZwspOffset = function (start, container, offset) {
+      if (NodeType.isText(container) === false) {
+        return offset;
+      } else if (start) {
+        return offset === 1 && container.data.charAt(offset - 1) === Zwsp.ZWSP ? 0 : offset;
+      } else {
+        return offset === container.data.length - 1 && container.data.charAt(offset) === Zwsp.ZWSP ? container.data.length : offset;
+      }
+    };
+    var includeZwspInRange = function (rng) {
+      var newRng = rng.cloneRange();
+      newRng.setStart(rng.startContainer, normalizeZwspOffset(true, rng.startContainer, rng.startOffset));
+      newRng.setEnd(rng.endContainer, normalizeZwspOffset(false, rng.endContainer, rng.endOffset));
+      return newRng;
+    };
+    var trimLeadingLineBreaks = function (node) {
+      do {
+        if (NodeType.isText(node)) {
+          node.nodeValue = node.nodeValue.replace(/^[\r\n]+/, '');
+        }
+        node = node.firstChild;
+      } while (node);
+    };
+    var getEditableRoot$1 = function (dom, node) {
+      var root = dom.getRoot();
+      var parent, editableRoot;
+      parent = node;
+      while (parent !== root && dom.getContentEditable(parent) !== 'false') {
+        if (dom.getContentEditable(parent) === 'true') {
+          editableRoot = parent;
+        }
+        parent = parent.parentNode;
+      }
+      return parent !== root ? editableRoot : root;
+    };
+    var setForcedBlockAttrs = function (editor, node) {
+      var forcedRootBlockName = Settings.getForcedRootBlock(editor);
+      if (forcedRootBlockName && forcedRootBlockName.toLowerCase() === node.tagName.toLowerCase()) {
+        editor.dom.setAttribs(node, Settings.getForcedRootBlockAttrs(editor));
+      }
+    };
+    var wrapSelfAndSiblingsInDefaultBlock = function (editor, newBlockName, rng, container, offset) {
+      var newBlock, parentBlock, startNode, node, next, rootBlockName;
+      var blockName = newBlockName || 'P';
+      var dom = editor.dom, editableRoot = getEditableRoot$1(dom, container);
+      parentBlock = dom.getParent(container, dom.isBlock);
+      if (!parentBlock || !canSplitBlock(dom, parentBlock)) {
+        parentBlock = parentBlock || editableRoot;
+        if (parentBlock === editor.getBody() || isTableCell$4(parentBlock)) {
+          rootBlockName = parentBlock.nodeName.toLowerCase();
+        } else {
+          rootBlockName = parentBlock.parentNode.nodeName.toLowerCase();
+        }
+        if (!parentBlock.hasChildNodes()) {
+          newBlock = dom.create(blockName);
+          setForcedBlockAttrs(editor, newBlock);
+          parentBlock.appendChild(newBlock);
+          rng.setStart(newBlock, 0);
+          rng.setEnd(newBlock, 0);
+          return newBlock;
+        }
+        node = container;
+        while (node.parentNode !== parentBlock) {
+          node = node.parentNode;
+        }
+        while (node && !dom.isBlock(node)) {
+          startNode = node;
+          node = node.previousSibling;
+        }
+        if (startNode && editor.schema.isValidChild(rootBlockName, blockName.toLowerCase())) {
+          newBlock = dom.create(blockName);
+          setForcedBlockAttrs(editor, newBlock);
+          startNode.parentNode.insertBefore(newBlock, startNode);
+          node = startNode;
+          while (node && !dom.isBlock(node)) {
+            next = node.nextSibling;
+            newBlock.appendChild(node);
+            node = next;
+          }
+          rng.setStart(container, offset);
+          rng.setEnd(container, offset);
+        }
+      }
+      return container;
+    };
+    var addBrToBlockIfNeeded = function (dom, block) {
+      var lastChild;
+      block.normalize();
+      lastChild = block.lastChild;
+      if (!lastChild || /^(left|right)$/gi.test(dom.getStyle(lastChild, 'float', true))) {
+        dom.add(block, 'br');
+      }
+    };
+    var insert$1 = function (editor, evt) {
+      var tmpRng, editableRoot, container, offset, parentBlock, shiftKey;
+      var newBlock, fragment, containerBlock, parentBlockName, containerBlockName, newBlockName, isAfterLastNodeInContainer;
+      var dom = editor.dom;
+      var schema = editor.schema, nonEmptyElementsMap = schema.getNonEmptyElements();
+      var rng = editor.selection.getRng();
+      var createNewBlock = function (name) {
+        var node = container, block, clonedNode, caretNode;
+        var textInlineElements = schema.getTextInlineElements();
+        if (name || parentBlockName === 'TABLE' || parentBlockName === 'HR') {
+          block = dom.create(name || newBlockName);
+          setForcedBlockAttrs(editor, block);
+        } else {
+          block = parentBlock.cloneNode(false);
+        }
+        caretNode = block;
+        if (Settings.shouldKeepStyles(editor) === false) {
+          dom.setAttrib(block, 'style', null);
+          dom.setAttrib(block, 'class', null);
+        } else {
+          do {
+            if (textInlineElements[node.nodeName]) {
+              if (isCaretNode(node) || Bookmarks.isBookmarkNode(node)) {
+                continue;
+              }
+              clonedNode = node.cloneNode(false);
+              dom.setAttrib(clonedNode, 'id', '');
+              if (block.hasChildNodes()) {
+                clonedNode.appendChild(block.firstChild);
+                block.appendChild(clonedNode);
+              } else {
+                caretNode = clonedNode;
+                block.appendChild(clonedNode);
+              }
+            }
+          } while ((node = node.parentNode) && node !== editableRoot);
+        }
+        emptyBlock(caretNode);
+        return block;
+      };
+      var isCaretAtStartOrEndOfBlock = function (start) {
+        var node, name;
+        var normalizedOffset = normalizeZwspOffset(start, container, offset);
+        if (NodeType.isText(container) && (start ? normalizedOffset > 0 : normalizedOffset < container.nodeValue.length)) {
+          return false;
+        }
+        if (container.parentNode === parentBlock && isAfterLastNodeInContainer && !start) {
+          return true;
+        }
+        if (start && NodeType.isElement(container) && container === parentBlock.firstChild) {
+          return true;
+        }
+        if (containerAndSiblingName(container, 'TABLE') || containerAndSiblingName(container, 'HR')) {
+          return isAfterLastNodeInContainer && !start || !isAfterLastNodeInContainer && start;
+        }
+        var walker = new TreeWalker(container, parentBlock);
+        if (NodeType.isText(container)) {
+          if (start && normalizedOffset === 0) {
+            walker.prev();
+          } else if (!start && normalizedOffset === container.nodeValue.length) {
+            walker.next();
+          }
+        }
+        while (node = walker.current()) {
+          if (NodeType.isElement(node)) {
+            if (!node.getAttribute('data-mce-bogus')) {
+              name = node.nodeName.toLowerCase();
+              if (nonEmptyElementsMap[name] && name !== 'br') {
+                return false;
+              }
+            }
+          } else if (NodeType.isText(node) && !/^[ \t\r\n]*$/.test(node.nodeValue)) {
+            return false;
+          }
+          if (start) {
+            walker.prev();
+          } else {
+            walker.next();
+          }
+        }
+        return true;
+      };
+      var insertNewBlockAfter = function () {
+        if (/^(H[1-6]|PRE|FIGURE)$/.test(parentBlockName) && containerBlockName !== 'HGROUP') {
+          newBlock = createNewBlock(newBlockName);
+        } else {
+          newBlock = createNewBlock();
+        }
+        if (Settings.shouldEndContainerOnEmptyBlock(editor) && canSplitBlock(dom, containerBlock) && dom.isEmpty(parentBlock)) {
+          newBlock = dom.split(containerBlock, parentBlock);
+        } else {
+          dom.insertAfter(newBlock, parentBlock);
+        }
+        NewLineUtils.moveToCaretPosition(editor, newBlock);
+      };
+      NormalizeRange.normalize(dom, rng).each(function (normRng) {
+        rng.setStart(normRng.startContainer, normRng.startOffset);
+        rng.setEnd(normRng.endContainer, normRng.endOffset);
+      });
+      container = rng.startContainer;
+      offset = rng.startOffset;
+      newBlockName = Settings.getForcedRootBlock(editor);
+      shiftKey = !!(evt && evt.shiftKey);
+      var ctrlKey = !!(evt && evt.ctrlKey);
+      if (NodeType.isElement(container) && container.hasChildNodes()) {
+        isAfterLastNodeInContainer = offset > container.childNodes.length - 1;
+        container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
+        if (isAfterLastNodeInContainer && NodeType.isText(container)) {
+          offset = container.nodeValue.length;
+        } else {
+          offset = 0;
+        }
+      }
+      editableRoot = getEditableRoot$1(dom, container);
+      if (!editableRoot) {
+        return;
+      }
+      if (newBlockName && !shiftKey || !newBlockName && shiftKey) {
+        container = wrapSelfAndSiblingsInDefaultBlock(editor, newBlockName, rng, container, offset);
+      }
+      parentBlock = dom.getParent(container, dom.isBlock);
+      containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;
+      parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : '';
+      containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';
+      if (containerBlockName === 'LI' && !ctrlKey) {
+        parentBlock = containerBlock;
+        containerBlock = containerBlock.parentNode;
+        parentBlockName = containerBlockName;
+      }
+      if (/^(LI|DT|DD)$/.test(parentBlockName)) {
+        if (dom.isEmpty(parentBlock)) {
+          InsertLi.insert(editor, createNewBlock, containerBlock, parentBlock, newBlockName);
+          return;
+        }
+      }
+      if (newBlockName && parentBlock === editor.getBody()) {
+        return;
+      }
+      newBlockName = newBlockName || 'P';
+      if (isCaretContainerBlock(parentBlock)) {
+        newBlock = showCaretContainerBlock(parentBlock);
+        if (dom.isEmpty(parentBlock)) {
+          emptyBlock(parentBlock);
+        }
+        NewLineUtils.moveToCaretPosition(editor, newBlock);
+      } else if (isCaretAtStartOrEndOfBlock()) {
+        insertNewBlockAfter();
+      } else if (isCaretAtStartOrEndOfBlock(true)) {
+        newBlock = parentBlock.parentNode.insertBefore(createNewBlock(), parentBlock);
+        NewLineUtils.moveToCaretPosition(editor, containerAndSiblingName(parentBlock, 'HR') ? newBlock : parentBlock);
+      } else {
+        tmpRng = includeZwspInRange(rng).cloneRange();
+        tmpRng.setEndAfter(parentBlock);
+        fragment = tmpRng.extractContents();
+        trimZwsp(fragment);
+        trimLeadingLineBreaks(fragment);
+        newBlock = fragment.firstChild;
+        dom.insertAfter(fragment, parentBlock);
+        trimInlineElementsOnLeftSideOfBlock(dom, nonEmptyElementsMap, newBlock);
+        addBrToBlockIfNeeded(dom, parentBlock);
+        if (dom.isEmpty(parentBlock)) {
+          emptyBlock(parentBlock);
+        }
+        newBlock.normalize();
+        if (dom.isEmpty(newBlock)) {
+          dom.remove(newBlock);
+          insertNewBlockAfter();
+        } else {
+          NewLineUtils.moveToCaretPosition(editor, newBlock);
+        }
+      }
+      dom.setAttrib(newBlock, 'id', '');
+      editor.fire('NewBlock', { newBlock: newBlock });
+    };
+    var InsertBlock = { insert: insert$1 };
+
+    var hasRightSideContent = function (schema, container, parentBlock) {
+      var walker = new TreeWalker(container, parentBlock);
+      var node;
+      var nonEmptyElementsMap = schema.getNonEmptyElements();
+      while (node = walker.next()) {
+        if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || node.length > 0) {
+          return true;
+        }
+      }
+    };
+    var scrollToBr = function (dom, selection, brElm) {
+      var marker = dom.create('span', {}, '&nbsp;');
+      brElm.parentNode.insertBefore(marker, brElm);
+      selection.scrollIntoView(marker);
+      dom.remove(marker);
+    };
+    var moveSelectionToBr = function (dom, selection, brElm, extraBr) {
+      var rng = dom.createRng();
+      if (!extraBr) {
+        rng.setStartAfter(brElm);
+        rng.setEndAfter(brElm);
+      } else {
+        rng.setStartBefore(brElm);
+        rng.setEndBefore(brElm);
+      }
+      selection.setRng(rng);
+    };
+    var insertBrAtCaret = function (editor, evt) {
+      var selection = editor.selection;
+      var dom = editor.dom;
+      var rng = selection.getRng();
+      var brElm;
+      var extraBr;
+      NormalizeRange.normalize(dom, rng).each(function (normRng) {
+        rng.setStart(normRng.startContainer, normRng.startOffset);
+        rng.setEnd(normRng.endContainer, normRng.endOffset);
+      });
+      var offset = rng.startOffset;
+      var container = rng.startContainer;
+      if (container.nodeType === 1 && container.hasChildNodes()) {
+        var isAfterLastNodeInContainer = offset > container.childNodes.length - 1;
+        container = container.childNodes[Math.min(offset, container.childNodes.length - 1)] || container;
+        if (isAfterLastNodeInContainer && container.nodeType === 3) {
+          offset = container.nodeValue.length;
+        } else {
+          offset = 0;
+        }
+      }
+      var parentBlock = dom.getParent(container, dom.isBlock);
+      var containerBlock = parentBlock ? dom.getParent(parentBlock.parentNode, dom.isBlock) : null;
+      var containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : '';
+      var isControlKey = !!(evt && evt.ctrlKey);
+      if (containerBlockName === 'LI' && !isControlKey) {
+        parentBlock = containerBlock;
+      }
+      if (container && container.nodeType === 3 && offset >= container.nodeValue.length) {
+        if (!hasRightSideContent(editor.schema, container, parentBlock)) {
+          brElm = dom.create('br');
+          rng.insertNode(brElm);
+          rng.setStartAfter(brElm);
+          rng.setEndAfter(brElm);
+          extraBr = true;
+        }
+      }
+      brElm = dom.create('br');
+      rangeInsertNode(dom, rng, brElm);
+      scrollToBr(dom, selection, brElm);
+      moveSelectionToBr(dom, selection, brElm, extraBr);
+      editor.undoManager.add();
+    };
+    var insertBrBefore = function (editor, inline) {
+      var br = Element.fromTag('br');
+      before(Element.fromDom(inline), br);
+      editor.undoManager.add();
+    };
+    var insertBrAfter = function (editor, inline) {
+      if (!hasBrAfter(editor.getBody(), inline)) {
+        after(Element.fromDom(inline), Element.fromTag('br'));
+      }
+      var br = Element.fromTag('br');
+      after(Element.fromDom(inline), br);
+      scrollToBr(editor.dom, editor.selection, br.dom());
+      moveSelectionToBr(editor.dom, editor.selection, br.dom(), false);
+      editor.undoManager.add();
+    };
+    var isBeforeBr$1 = function (pos) {
+      return NodeType.isBr(pos.getNode());
+    };
+    var hasBrAfter = function (rootNode, startNode) {
+      if (isBeforeBr$1(CaretPosition$1.after(startNode))) {
+        return true;
+      } else {
+        return CaretFinder.nextPosition(rootNode, CaretPosition$1.after(startNode)).map(function (pos) {
+          return NodeType.isBr(pos.getNode());
+        }).getOr(false);
+      }
+    };
+    var isAnchorLink = function (elm) {
+      return elm && elm.nodeName === 'A' && 'href' in elm;
+    };
+    var isInsideAnchor = function (location) {
+      return location.fold(constant(false), isAnchorLink, isAnchorLink, constant(false));
+    };
+    var readInlineAnchorLocation = function (editor) {
+      var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);
+      var position = CaretPosition$1.fromRangeStart(editor.selection.getRng());
+      return BoundaryLocation.readLocation(isInlineTarget, editor.getBody(), position).filter(isInsideAnchor);
+    };
+    var insertBrOutsideAnchor = function (editor, location) {
+      location.fold(noop, curry(insertBrBefore, editor), curry(insertBrAfter, editor), noop);
+    };
+    var insert$2 = function (editor, evt) {
+      var anchorLocation = readInlineAnchorLocation(editor);
+      if (anchorLocation.isSome()) {
+        anchorLocation.each(curry(insertBrOutsideAnchor, editor));
+      } else {
+        insertBrAtCaret(editor, evt);
+      }
+    };
+    var InsertBr = { insert: insert$2 };
+
+    var matchesSelector = function (editor, selector) {
+      return NewLineUtils.getParentBlock(editor).filter(function (parentBlock) {
+        return selector.length > 0 && is$1(Element.fromDom(parentBlock), selector);
+      }).isSome();
+    };
+    var shouldInsertBr = function (editor) {
+      return matchesSelector(editor, Settings.getBrNewLineSelector(editor));
+    };
+    var shouldBlockNewLine = function (editor) {
+      return matchesSelector(editor, Settings.getNoNewLineSelector(editor));
+    };
+    var ContextSelectors = {
+      shouldInsertBr: shouldInsertBr,
+      shouldBlockNewLine: shouldBlockNewLine
+    };
+
+    var newLineAction = Adt.generate([
+      { br: [] },
+      { block: [] },
+      { none: [] }
+    ]);
+    var shouldBlockNewLine$1 = function (editor, shiftKey) {
+      return ContextSelectors.shouldBlockNewLine(editor);
+    };
+    var isBrMode = function (requiredState) {
+      return function (editor, shiftKey) {
+        var brMode = Settings.getForcedRootBlock(editor) === '';
+        return brMode === requiredState;
+      };
+    };
+    var inListBlock = function (requiredState) {
+      return function (editor, shiftKey) {
+        return NewLineUtils.isListItemParentBlock(editor) === requiredState;
+      };
+    };
+    var inBlock = function (blockName, requiredState) {
+      return function (editor, shiftKey) {
+        var state = NewLineUtils.getParentBlockName(editor) === blockName.toUpperCase();
+        return state === requiredState;
+      };
+    };
+    var inPreBlock = function (requiredState) {
+      return inBlock('pre', requiredState);
+    };
+    var inSummaryBlock = function () {
+      return inBlock('summary', true);
+    };
+    var shouldPutBrInPre$1 = function (requiredState) {
+      return function (editor, shiftKey) {
+        return Settings.shouldPutBrInPre(editor) === requiredState;
+      };
+    };
+    var inBrContext = function (editor, shiftKey) {
+      return ContextSelectors.shouldInsertBr(editor);
+    };
+    var hasShiftKey = function (editor, shiftKey) {
+      return shiftKey;
+    };
+    var canInsertIntoEditableRoot = function (editor) {
+      var forcedRootBlock = Settings.getForcedRootBlock(editor);
+      var rootEditable = NewLineUtils.getEditableRoot(editor.dom, editor.selection.getStart());
+      return rootEditable && editor.schema.isValidChild(rootEditable.nodeName, forcedRootBlock ? forcedRootBlock : 'P');
+    };
+    var match$2 = function (predicates, action) {
+      return function (editor, shiftKey) {
+        var isMatch = foldl(predicates, function (res, p) {
+          return res && p(editor, shiftKey);
+        }, true);
+        return isMatch ? Option.some(action) : Option.none();
+      };
+    };
+    var getAction$1 = function (editor, evt) {
+      return LazyEvaluator.evaluateUntil([
+        match$2([shouldBlockNewLine$1], newLineAction.none()),
+        match$2([inSummaryBlock()], newLineAction.br()),
+        match$2([
+          inPreBlock(true),
+          shouldPutBrInPre$1(false),
+          hasShiftKey
+        ], newLineAction.br()),
+        match$2([
+          inPreBlock(true),
+          shouldPutBrInPre$1(false)
+        ], newLineAction.block()),
+        match$2([
+          inPreBlock(true),
+          shouldPutBrInPre$1(true),
+          hasShiftKey
+        ], newLineAction.block()),
+        match$2([
+          inPreBlock(true),
+          shouldPutBrInPre$1(true)
+        ], newLineAction.br()),
+        match$2([
+          inListBlock(true),
+          hasShiftKey
+        ], newLineAction.br()),
+        match$2([inListBlock(true)], newLineAction.block()),
+        match$2([
+          isBrMode(true),
+          hasShiftKey,
+          canInsertIntoEditableRoot
+        ], newLineAction.block()),
+        match$2([isBrMode(true)], newLineAction.br()),
+        match$2([inBrContext], newLineAction.br()),
+        match$2([
+          isBrMode(false),
+          hasShiftKey
+        ], newLineAction.br()),
+        match$2([canInsertIntoEditableRoot], newLineAction.block())
+      ], [
+        editor,
+        !!(evt && evt.shiftKey)
+      ]).getOr(newLineAction.none());
+    };
+    var NewLineAction = { getAction: getAction$1 };
+
+    var insert$3 = function (editor, evt) {
+      NewLineAction.getAction(editor, evt).fold(function () {
+        InsertBr.insert(editor, evt);
+      }, function () {
+        InsertBlock.insert(editor, evt);
+      }, noop);
+    };
+    var InsertNewLine = { insert: insert$3 };
+
+    var endTypingLevel = function (undoManager) {
+      if (undoManager.typing) {
+        undoManager.typing = false;
+        undoManager.add();
+      }
+    };
+    var handleEnterKeyEvent = function (editor, event) {
+      if (event.isDefaultPrevented()) {
+        return;
+      }
+      event.preventDefault();
+      endTypingLevel(editor.undoManager);
+      editor.undoManager.transact(function () {
+        if (editor.selection.isCollapsed() === false) {
+          editor.execCommand('Delete');
+        }
+        InsertNewLine.insert(editor, event);
+      });
+    };
+    var setup$9 = function (editor) {
+      editor.on('keydown', function (event) {
+        if (event.keyCode === VK.ENTER) {
+          handleEnterKeyEvent(editor, event);
+        }
+      });
+    };
+    var EnterKey = { setup: setup$9 };
+
+    var insertTextAtPosition = function (text, pos) {
+      var container = pos.container();
+      var offset = pos.offset();
+      if (NodeType.isText(container)) {
+        container.insertData(offset, text);
+        return Option.some(CaretPosition(container, offset + text.length));
+      } else {
+        return getElementFromPosition(pos).map(function (elm) {
+          var textNode = Element.fromText(text);
+          if (pos.isAtEnd()) {
+            after(elm, textNode);
+          } else {
+            before(elm, textNode);
+          }
+          return CaretPosition(textNode.dom(), text.length);
+        });
+      }
+    };
+    var insertNbspAtPosition = curry(insertTextAtPosition, '\xA0');
+    var insertSpaceAtPosition = curry(insertTextAtPosition, ' ');
+
+    var navigateIgnoreEmptyTextNodes = function (forward, root, from) {
+      return CaretFinder.navigateIgnore(forward, root, from, isEmptyText);
+    };
+    var isAtBlockBoundary = function (forward, root, pos) {
+      var parentBlocks = filter(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock);
+      return head(parentBlocks).fold(function () {
+        return navigateIgnoreEmptyTextNodes(forward, root.dom(), pos).forall(function (newPos) {
+          return isInSameBlock(newPos, pos, root.dom()) === false;
+        });
+      }, function (parent) {
+        return navigateIgnoreEmptyTextNodes(forward, parent.dom(), pos).isNone();
+      });
+    };
+    var isAtStartOfBlock = curry(isAtBlockBoundary, false);
+    var isAtEndOfBlock = curry(isAtBlockBoundary, true);
+
+    var nbsp = '\xA0';
+    var isInMiddleOfText = function (pos) {
+      return CaretPosition.isTextPosition(pos) && !pos.isAtStart() && !pos.isAtEnd();
+    };
+    var getClosestBlock = function (root, pos) {
+      var parentBlocks = filter(Parents.parentsAndSelf(Element.fromDom(pos.container()), root), isBlock);
+      return head(parentBlocks).getOr(root);
+    };
+    var hasSpaceBefore = function (root, pos) {
+      if (isInMiddleOfText(pos)) {
+        return isAfterSpace(pos);
+      } else {
+        return isAfterSpace(pos) || CaretFinder.prevPosition(getClosestBlock(root, pos).dom(), pos).exists(isAfterSpace);
+      }
+    };
+    var hasSpaceAfter = function (root, pos) {
+      if (isInMiddleOfText(pos)) {
+        return isBeforeSpace(pos);
+      } else {
+        return isBeforeSpace(pos) || CaretFinder.nextPosition(getClosestBlock(root, pos).dom(), pos).exists(isBeforeSpace);
+      }
+    };
+    var isPreValue = function (value) {
+      return contains([
+        'pre',
+        'pre-line',
+        'pre-wrap'
+      ], value);
+    };
+    var isInPre = function (pos) {
+      return getElementFromPosition(pos).bind(function (elm) {
+        return closest(elm, isElement);
+      }).exists(function (elm) {
+        return isPreValue(get$2(elm, 'white-space'));
+      });
+    };
+    var isAtBeginningOfBody = function (root, pos) {
+      return CaretFinder.prevPosition(root.dom(), pos).isNone();
+    };
+    var isAtEndOfBody = function (root, pos) {
+      return CaretFinder.nextPosition(root.dom(), pos).isNone();
+    };
+    var isAtLineBoundary = function (root, pos) {
+      return isAtBeginningOfBody(root, pos) || isAtEndOfBody(root, pos) || isAtStartOfBlock(root, pos) || isAtEndOfBlock(root, pos) || isAfterBr(root, pos) || isBeforeBr(root, pos);
+    };
+    var needsToHaveNbsp = function (root, pos) {
+      if (isInPre(pos)) {
+        return false;
+      } else {
+        return isAtLineBoundary(root, pos) || hasSpaceBefore(root, pos) || hasSpaceAfter(root, pos);
+      }
+    };
+    var needsToBeNbspLeft = function (root, pos) {
+      if (isInPre(pos)) {
+        return false;
+      } else {
+        return isAtStartOfBlock(root, pos) || isAfterBr(root, pos) || hasSpaceBefore(root, pos);
+      }
+    };
+    var leanRight = function (pos) {
+      var container = pos.container();
+      var offset = pos.offset();
+      if (NodeType.isText(container) && offset < container.data.length) {
+        return CaretPosition(container, offset + 1);
+      } else {
+        return pos;
+      }
+    };
+    var needsToBeNbspRight = function (root, pos) {
+      var afterPos = leanRight(pos);
+      if (isInPre(afterPos)) {
+        return false;
+      } else {
+        return isAtEndOfBlock(root, afterPos) || isBeforeBr(root, afterPos) || hasSpaceAfter(root, afterPos);
+      }
+    };
+    var needsToBeNbsp = function (root, pos) {
+      return needsToBeNbspLeft(root, pos) || needsToBeNbspRight(root, pos);
+    };
+    var isNbspAt = function (text, offset) {
+      return isNbsp(text.charAt(offset));
+    };
+    var hasNbsp = function (pos) {
+      var container = pos.container();
+      return NodeType.isText(container) && contains$2(container.data, nbsp);
+    };
+    var normalizeNbspMiddle = function (text) {
+      return map(text.split(''), function (chr, i, chars) {
+        if (isNbsp(chr) && i > 0 && i < chars.length - 1 && isContent(chars[i - 1]) && isContent(chars[i + 1])) {
+          return ' ';
+        } else {
+          return chr;
+        }
+      }).join('');
+    };
+    var normalizeNbspAtStart = function (root, node) {
+      var text = node.data;
+      var firstPos = CaretPosition(node, 0);
+      if (isNbspAt(text, 0) && !needsToBeNbsp(root, firstPos)) {
+        node.data = ' ' + text.slice(1);
+        return true;
+      } else {
+        return false;
+      }
+    };
+    var normalizeNbspInMiddleOfTextNode = function (node) {
+      var text = node.data;
+      var newText = normalizeNbspMiddle(text);
+      if (newText !== text) {
+        node.data = newText;
+        return true;
+      } else {
+        return false;
+      }
+    };
+    var normalizeNbspAtEnd = function (root, node) {
+      var text = node.data;
+      var lastPos = CaretPosition(node, text.length - 1);
+      if (isNbspAt(text, text.length - 1) && !needsToBeNbsp(root, lastPos)) {
+        node.data = text.slice(0, -1) + ' ';
+        return true;
+      } else {
+        return false;
+      }
+    };
+    var normalizeNbsps = function (root, pos) {
+      return Option.some(pos).filter(hasNbsp).bind(function (pos) {
+        var container = pos.container();
+        var normalized = normalizeNbspAtStart(root, container) || normalizeNbspInMiddleOfTextNode(container) || normalizeNbspAtEnd(root, container);
+        return normalized ? Option.some(pos) : Option.none();
+      });
+    };
+    var normalizeNbspsInEditor = function (editor) {
+      var root = Element.fromDom(editor.getBody());
+      if (editor.selection.isCollapsed()) {
+        normalizeNbsps(root, CaretPosition.fromRangeStart(editor.selection.getRng())).each(function (pos) {
+          editor.selection.setRng(pos.toRange());
+        });
+      }
+    };
+
+    var locationToCaretPosition = function (root) {
+      return function (location) {
+        return location.fold(function (element) {
+          return CaretFinder.prevPosition(root.dom(), CaretPosition$1.before(element));
+        }, function (element) {
+          return CaretFinder.firstPositionIn(element);
+        }, function (element) {
+          return CaretFinder.lastPositionIn(element);
+        }, function (element) {
+          return CaretFinder.nextPosition(root.dom(), CaretPosition$1.after(element));
+        });
+      };
+    };
+    var insertInlineBoundarySpaceOrNbsp = function (root, pos) {
+      return function (checkPos) {
+        return needsToHaveNbsp(root, checkPos) ? insertNbspAtPosition(pos) : insertSpaceAtPosition(pos);
+      };
+    };
+    var setSelection$1 = function (editor) {
+      return function (pos) {
+        editor.selection.setRng(pos.toRange());
+        editor.nodeChanged();
+        return true;
+      };
+    };
+    var insertSpaceOrNbspAtSelection = function (editor) {
+      var pos = CaretPosition$1.fromRangeStart(editor.selection.getRng());
+      var root = Element.fromDom(editor.getBody());
+      if (editor.selection.isCollapsed()) {
+        var isInlineTarget = curry(InlineUtils.isInlineTarget, editor);
+        var caretPosition = CaretPosition$1.fromRangeStart(editor.selection.getRng());
+        return BoundaryLocation.readLocation(isInlineTarget, editor.getBody(), caretPosition).bind(locationToCaretPosition(root)).bind(insertInlineBoundarySpaceOrNbsp(root, pos)).exists(setSelection$1(editor));
+      } else {
+        return false;
+      }
+    };
+
+    var executeKeydownOverride$2 = function (editor, evt) {
+      MatchKeys.execute([{
+          keyCode: VK.SPACEBAR,
+          action: MatchKeys.action(insertSpaceOrNbspAtSelection, editor)
+        }], evt).each(function (_) {
+        evt.preventDefault();
+      });
+    };
+    var setup$a = function (editor) {
+      editor.on('keydown', function (evt) {
+        if (evt.isDefaultPrevented() === false) {
+          executeKeydownOverride$2(editor, evt);
+        }
+      });
+    };
+    var SpaceKey = { setup: setup$a };
+
+    var findBlockCaretContainer = function (editor) {
+      return descendant(Element.fromDom(editor.getBody()), '*[data-mce-caret]').fold(constant(null), function (elm) {
+        return elm.dom();
+      });
+    };
+    var removeIeControlRect = function (editor) {
+      editor.selection.setRng(editor.selection.getRng());
+    };
+    var showBlockCaretContainer = function (editor, blockCaretContainer) {
+      if (blockCaretContainer.hasAttribute('data-mce-caret')) {
+        showCaretContainerBlock(blockCaretContainer);
+        removeIeControlRect(editor);
+        editor.selection.scrollIntoView(blockCaretContainer);
+      }
+    };
+    var handleBlockContainer = function (editor, e) {
+      var blockCaretContainer = findBlockCaretContainer(editor);
+      if (!blockCaretContainer) {
+        return;
+      }
+      if (e.type === 'compositionstart') {
+        e.preventDefault();
+        e.stopPropagation();
+        showBlockCaretContainer(editor, blockCaretContainer);
+        return;
+      }
+      if (hasContent(blockCaretContainer)) {
+        showBlockCaretContainer(editor, blockCaretContainer);
+        editor.undoManager.add();
+      }
+    };
+    var setup$b = function (editor) {
+      editor.on('keyup compositionstart', curry(handleBlockContainer, editor));
+    };
+    var CaretContainerInput = { setup: setup$b };
+
+    var browser$4 = PlatformDetection$1.detect().browser;
+    var setupIeInput = function (editor) {
+      var keypressThrotter = first(function () {
+        if (!editor.composing) {
+          normalizeNbspsInEditor(editor);
+        }
+      }, 0);
+      if (browser$4.isIE()) {
+        editor.on('keypress', function (e) {
+          keypressThrotter.throttle();
+        });
+        editor.on('remove', function (e) {
+          keypressThrotter.cancel();
+        });
+      }
+    };
+    var setup$c = function (editor) {
+      setupIeInput(editor);
+      editor.on('input', function (e) {
+        if (e.isComposing === false) {
+          normalizeNbspsInEditor(editor);
+        }
+      });
+    };
+
+    var executeKeydownOverride$3 = function (editor, evt) {
+      MatchKeys.execute([
+        {
+          keyCode: VK.END,
+          action: moveToLineEndPoint(editor, true)
+        },
+        {
+          keyCode: VK.HOME,
+          action: moveToLineEndPoint(editor, false)
+        }
+      ], evt).each(function (_) {
+        evt.preventDefault();
+      });
+    };
+    var setup$d = function (editor) {
+      editor.on('keydown', function (evt) {
+        if (evt.isDefaultPrevented() === false) {
+          executeKeydownOverride$3(editor, evt);
+        }
+      });
+    };
+    var HomeEndKeys = { setup: setup$d };
+
+    var setup$e = function (editor) {
+      var caret = BoundarySelection.setupSelectedState(editor);
+      CaretContainerInput.setup(editor);
+      ArrowKeys.setup(editor, caret);
+      DeleteBackspaceKeys.setup(editor, caret);
+      EnterKey.setup(editor);
+      SpaceKey.setup(editor);
+      setup$c(editor);
+      HomeEndKeys.setup(editor);
+    };
+    var KeyboardOverrides = { setup: setup$e };
+
+    var Quirks = function (editor) {
+      var each = Tools.each;
+      var BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings, parser = editor.parser;
+      var isGecko = Env.gecko, isIE = Env.ie, isWebKit = Env.webkit;
+      var mceInternalUrlPrefix = 'data:text/mce-internal,';
+      var mceInternalDataType = isIE ? 'Text' : 'URL';
+      var setEditorCommandState = function (cmd, state) {
+        try {
+          editor.getDoc().execCommand(cmd, false, state);
+        } catch (ex) {
+        }
+      };
+      var isDefaultPrevented = function (e) {
+        return e.isDefaultPrevented();
+      };
+      var setMceInternalContent = function (e) {
+        var selectionHtml, internalContent;
+        if (e.dataTransfer) {
+          if (editor.selection.isCollapsed() && e.target.tagName === 'IMG') {
+            selection.select(e.target);
+          }
+          selectionHtml = editor.selection.getContent();
+          if (selectionHtml.length > 0) {
+            internalContent = mceInternalUrlPrefix + escape(editor.id) + ',' + escape(selectionHtml);
+            e.dataTransfer.setData(mceInternalDataType, internalContent);
+          }
+        }
+      };
+      var getMceInternalContent = function (e) {
+        var internalContent;
+        if (e.dataTransfer) {
+          internalContent = e.dataTransfer.getData(mceInternalDataType);
+          if (internalContent && internalContent.indexOf(mceInternalUrlPrefix) >= 0) {
+            internalContent = internalContent.substr(mceInternalUrlPrefix.length).split(',');
+            return {
+              id: unescape(internalContent[0]),
+              html: unescape(internalContent[1])
+            };
+          }
+        }
+        return null;
+      };
+      var insertClipboardContents = function (content, internal) {
+        if (editor.queryCommandSupported('mceInsertClipboardContent')) {
+          editor.execCommand('mceInsertClipboardContent', false, {
+            content: content,
+            internal: internal
+          });
+        } else {
+          editor.execCommand('mceInsertContent', false, content);
+        }
+      };
+      var emptyEditorWhenDeleting = function () {
+        var serializeRng = function (rng) {
+          var body = dom.create('body');
+          var contents = rng.cloneContents();
+          body.appendChild(contents);
+          return selection.serializer.serialize(body, { format: 'html' });
+        };
+        var allContentsSelected = function (rng) {
+          var selection = serializeRng(rng);
+          var allRng = dom.createRng();
+          allRng.selectNode(editor.getBody());
+          var allSelection = serializeRng(allRng);
+          return selection === allSelection;
+        };
+        editor.on('keydown', function (e) {
+          var keyCode = e.keyCode;
+          var isCollapsed, body;
+          if (!isDefaultPrevented(e) && (keyCode === DELETE || keyCode === BACKSPACE)) {
+            isCollapsed = editor.selection.isCollapsed();
+            body = editor.getBody();
+            if (isCollapsed && !dom.isEmpty(body)) {
+              return;
+            }
+            if (!isCollapsed && !allContentsSelected(editor.selection.getRng())) {
+              return;
+            }
+            e.preventDefault();
+            editor.setContent('');
+            if (body.firstChild && dom.isBlock(body.firstChild)) {
+              editor.selection.setCursorLocation(body.firstChild, 0);
+            } else {
+              editor.selection.setCursorLocation(body, 0);
+            }
+            editor.nodeChanged();
+          }
+        });
+      };
+      var selectAll = function () {
+        editor.shortcuts.add('meta+a', null, 'SelectAll');
+      };
+      var inputMethodFocus = function () {
+        if (!editor.inline) {
+          dom.bind(editor.getDoc(), 'mousedown mouseup', function (e) {
+            var rng;
+            if (e.target === editor.getDoc().documentElement) {
+              rng = selection.getRng();
+              editor.getBody().focus();
+              if (e.type === 'mousedown') {
+                if (isCaretContainer(rng.startContainer)) {
+                  return;
+                }
+                selection.placeCaretAt(e.clientX, e.clientY);
+              } else {
+                selection.setRng(rng);
+              }
+            }
+          });
+        }
+      };
+      var removeHrOnBackspace = function () {
+        editor.on('keydown', function (e) {
+          if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {
+            if (!editor.getBody().getElementsByTagName('hr').length) {
+              return;
+            }
+            if (selection.isCollapsed() && selection.getRng().startOffset === 0) {
+              var node = selection.getNode();
+              var previousSibling = node.previousSibling;
+              if (node.nodeName === 'HR') {
+                dom.remove(node);
+                e.preventDefault();
+                return;
+              }
+              if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'hr') {
+                dom.remove(previousSibling);
+                e.preventDefault();
+              }
+            }
+          }
+        });
+      };
+      var focusBody = function () {
+        if (!domGlobals.Range.prototype.getClientRects) {
+          editor.on('mousedown', function (e) {
+            if (!isDefaultPrevented(e) && e.target.nodeName === 'HTML') {
+              var body_1 = editor.getBody();
+              body_1.blur();
+              Delay.setEditorTimeout(editor, function () {
+                body_1.focus();
+              });
+            }
+          });
+        }
+      };
+      var selectControlElements = function () {
+        editor.on('click', function (e) {
+          var target = e.target;
+          if (/^(IMG|HR)$/.test(target.nodeName) && dom.getContentEditableParent(target) !== 'false') {
+            e.preventDefault();
+            editor.selection.select(target);
+            editor.nodeChanged();
+          }
+          if (target.nodeName === 'A' && dom.hasClass(target, 'mce-item-anchor')) {
+            e.preventDefault();
+            selection.select(target);
+          }
+        });
+      };
+      var removeStylesWhenDeletingAcrossBlockElements = function () {
+        var getAttributeApplyFunction = function () {
+          var template = dom.getAttribs(selection.getStart().cloneNode(false));
+          return function () {
+            var target = selection.getStart();
+            if (target !== editor.getBody()) {
+              dom.setAttrib(target, 'style', null);
+              each(template, function (attr) {
+                target.setAttributeNode(attr.cloneNode(true));
+              });
+            }
+          };
+        };
+        var isSelectionAcrossElements = function () {
+          return !selection.isCollapsed() && dom.getParent(selection.getStart(), dom.isBlock) !== dom.getParent(selection.getEnd(), dom.isBlock);
+        };
+        editor.on('keypress', function (e) {
+          var applyAttributes;
+          if (!isDefaultPrevented(e) && (e.keyCode === 8 || e.keyCode === 46) && isSelectionAcrossElements()) {
+            applyAttributes = getAttributeApplyFunction();
+            editor.getDoc().execCommand('delete', false, null);
+            applyAttributes();
+            e.preventDefault();
+            return false;
+          }
+        });
+        dom.bind(editor.getDoc(), 'cut', function (e) {
+          var applyAttributes;
+          if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {
+            applyAttributes = getAttributeApplyFunction();
+            Delay.setEditorTimeout(editor, function () {
+              applyAttributes();
+            });
+          }
+        });
+      };
+      var disableBackspaceIntoATable = function () {
+        editor.on('keydown', function (e) {
+          if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {
+            if (selection.isCollapsed() && selection.getRng().startOffset === 0) {
+              var previousSibling = selection.getNode().previousSibling;
+              if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === 'table') {
+                e.preventDefault();
+                return false;
+              }
+            }
+          }
+        });
+      };
+      var removeBlockQuoteOnBackSpace = function () {
+        editor.on('keydown', function (e) {
+          var rng, container, offset, root, parent;
+          if (isDefaultPrevented(e) || e.keyCode !== VK.BACKSPACE) {
+            return;
+          }
+          rng = selection.getRng();
+          container = rng.startContainer;
+          offset = rng.startOffset;
+          root = dom.getRoot();
+          parent = container;
+          if (!rng.collapsed || offset !== 0) {
+            return;
+          }
+          while (parent && parent.parentNode && parent.parentNode.firstChild === parent && parent.parentNode !== root) {
+            parent = parent.parentNode;
+          }
+          if (parent.tagName === 'BLOCKQUOTE') {
+            editor.formatter.toggle('blockquote', null, parent);
+            rng = dom.createRng();
+            rng.setStart(container, 0);
+            rng.setEnd(container, 0);
+            selection.setRng(rng);
+          }
+        });
+      };
+      var setGeckoEditingOptions = function () {
+        var setOpts = function () {
+          setEditorCommandState('StyleWithCSS', false);
+          setEditorCommandState('enableInlineTableEditing', false);
+          if (!settings.object_resizing) {
+            setEditorCommandState('enableObjectResizing', false);
+          }
+        };
+        if (!settings.readonly) {
+          editor.on('BeforeExecCommand mousedown', setOpts);
+        }
+      };
+      var addBrAfterLastLinks = function () {
+        var fixLinks = function () {
+          each(dom.select('a'), function (node) {
+            var parentNode = node.parentNode;
+            var root = dom.getRoot();
+            if (parentNode.lastChild === node) {
+              while (parentNode && !dom.isBlock(parentNode)) {
+                if (parentNode.parentNode.lastChild !== parentNode || parentNode === root) {
+                  return;
+                }
+                parentNode = parentNode.parentNode;
+              }
+              dom.add(parentNode, 'br', { 'data-mce-bogus': 1 });
+            }
+          });
+        };
+        editor.on('SetContent ExecCommand', function (e) {
+          if (e.type === 'setcontent' || e.command === 'mceInsertLink') {
+            fixLinks();
+          }
+        });
+      };
+      var setDefaultBlockType = function () {
+        if (settings.forced_root_block) {
+          editor.on('init', function () {
+            setEditorCommandState('DefaultParagraphSeparator', Settings.getForcedRootBlock(editor));
+          });
+        }
+      };
+      var normalizeSelection = function () {
+        editor.on('keyup focusin mouseup', function (e) {
+          if (!VK.modifierPressed(e)) {
+            selection.normalize();
+          }
+        }, true);
+      };
+      var showBrokenImageIcon = function () {
+        editor.contentStyles.push('img:-moz-broken {' + '-moz-force-broken-image-icon:1;' + 'min-width:24px;' + 'min-height:24px' + '}');
+      };
+      var restoreFocusOnKeyDown = function () {
+        if (!editor.inline) {
+          editor.on('keydown', function () {
+            if (domGlobals.document.activeElement === domGlobals.document.body) {
+              editor.getWin().focus();
+            }
+          });
+        }
+      };
+      var bodyHeight = function () {
+        if (!editor.inline) {
+          editor.contentStyles.push('body {min-height: 150px}');
+          editor.on('click', function (e) {
+            var rng;
+            if (e.target.nodeName === 'HTML') {
+              if (Env.ie > 11) {
+                editor.getBody().focus();
+                return;
+              }
+              rng = editor.selection.getRng();
+              editor.getBody().focus();
+              editor.selection.setRng(rng);
+              editor.selection.normalize();
+              editor.nodeChanged();
+            }
+          });
+        }
+      };
+      var blockCmdArrowNavigation = function () {
+        if (Env.mac) {
+          editor.on('keydown', function (e) {
+            if (VK.metaKeyPressed(e) && !e.shiftKey && (e.keyCode === 37 || e.keyCode === 39)) {
+              e.preventDefault();
+              var selection_1 = editor.selection.getSel();
+              selection_1.modify('move', e.keyCode === 37 ? 'backward' : 'forward', 'lineboundary');
+            }
+          });
+        }
+      };
+      var disableAutoUrlDetect = function () {
+        setEditorCommandState('AutoUrlDetect', false);
+      };
+      var tapLinksAndImages = function () {
+        editor.on('click', function (e) {
+          var elm = e.target;
+          do {
+            if (elm.tagName === 'A') {
+              e.preventDefault();
+              return;
+            }
+          } while (elm = elm.parentNode);
+        });
+        editor.contentStyles.push('.mce-content-body {-webkit-touch-callout: none}');
+      };
+      var blockFormSubmitInsideEditor = function () {
+        editor.on('init', function () {
+          editor.dom.bind(editor.getBody(), 'submit', function (e) {
+            e.preventDefault();
+          });
+        });
+      };
+      var removeAppleInterchangeBrs = function () {
+        parser.addNodeFilter('br', function (nodes) {
+          var i = nodes.length;
+          while (i--) {
+            if (nodes[i].attr('class') === 'Apple-interchange-newline') {
+              nodes[i].remove();
+            }
+          }
+        });
+      };
+      var ieInternalDragAndDrop = function () {
+        editor.on('dragstart', function (e) {
+          setMceInternalContent(e);
+        });
+        editor.on('drop', function (e) {
+          if (!isDefaultPrevented(e)) {
+            var internalContent = getMceInternalContent(e);
+            if (internalContent && internalContent.id !== editor.id) {
+              e.preventDefault();
+              var rng = CaretRangeFromPoint.fromPoint(e.x, e.y, editor.getDoc());
+              selection.setRng(rng);
+              insertClipboardContents(internalContent.html, true);
+            }
+          }
+        });
+      };
+      var refreshContentEditable = function () {
+      };
+      var isHidden = function () {
+        var sel;
+        if (!isGecko || editor.removed) {
+          return false;
+        }
+        sel = editor.selection.getSel();
+        return !sel || !sel.rangeCount || sel.rangeCount === 0;
+      };
+      removeBlockQuoteOnBackSpace();
+      emptyEditorWhenDeleting();
+      if (!Env.windowsPhone) {
+        normalizeSelection();
+      }
+      if (isWebKit) {
+        inputMethodFocus();
+        selectControlElements();
+        setDefaultBlockType();
+        blockFormSubmitInsideEditor();
+        disableBackspaceIntoATable();
+        removeAppleInterchangeBrs();
+        if (Env.iOS) {
+          restoreFocusOnKeyDown();
+          bodyHeight();
+          tapLinksAndImages();
+        } else {
+          selectAll();
+        }
+      }
+      if (Env.ie >= 11) {
+        bodyHeight();
+        disableBackspaceIntoATable();
+      }
+      if (Env.ie) {
+        selectAll();
+        disableAutoUrlDetect();
+        ieInternalDragAndDrop();
+      }
+      if (isGecko) {
+        removeHrOnBackspace();
+        focusBody();
+        removeStylesWhenDeletingAcrossBlockElements();
+        setGeckoEditingOptions();
+        addBrAfterLastLinks();
+        showBrokenImageIcon();
+        blockCmdArrowNavigation();
+        disableBackspaceIntoATable();
+      }
+      return {
+        refreshContentEditable: refreshContentEditable,
+        isHidden: isHidden
+      };
+    };
+
+    var isTextBlockNode = function (node) {
+      return NodeType.isElement(node) && isTextBlock(Element.fromDom(node));
+    };
+    var normalizeSelection$1 = function (editor) {
+      var rng = editor.selection.getRng();
+      var startPos = CaretPosition.fromRangeStart(rng);
+      var endPos = CaretPosition.fromRangeEnd(rng);
+      if (CaretPosition.isElementPosition(startPos)) {
+        var container = startPos.container();
+        if (isTextBlockNode(container)) {
+          CaretFinder.firstPositionIn(container).each(function (pos) {
+            return rng.setStart(pos.container(), pos.offset());
+          });
+        }
+      }
+      if (CaretPosition.isElementPosition(endPos)) {
+        var container = startPos.container();
+        if (isTextBlockNode(container)) {
+          CaretFinder.lastPositionIn(container).each(function (pos) {
+            return rng.setEnd(pos.container(), pos.offset());
+          });
+        }
+      }
+      editor.selection.setRng(RangeNormalizer.normalize(rng));
+    };
+    var setup$f = function (editor) {
+      editor.on('click', function (e) {
+        if (e.detail >= 3) {
+          normalizeSelection$1(editor);
+        }
+      });
+    };
+
+    var preventSummaryToggle = function (editor) {
+      editor.on('click', function (e) {
+        if (editor.dom.getParent(e.target, 'details')) {
+          e.preventDefault();
+        }
+      });
+    };
+    var filterDetails = function (editor) {
+      editor.parser.addNodeFilter('details', function (elms) {
+        each(elms, function (details) {
+          details.attr('data-mce-open', details.attr('open'));
+          details.attr('open', 'open');
+        });
+      });
+      editor.serializer.addNodeFilter('details', function (elms) {
+        each(elms, function (details) {
+          var open = details.attr('data-mce-open');
+          details.attr('open', isString(open) ? open : null);
+          details.attr('data-mce-open', null);
+        });
+      });
+    };
+    var setup$g = function (editor) {
+      preventSummaryToggle(editor);
+      filterDetails(editor);
+    };
+
+    var DOM$2 = DOMUtils$1.DOM;
+    var appendStyle = function (editor, text) {
+      var head = Element.fromDom(editor.getDoc().head);
+      var tag = Element.fromTag('style');
+      set(tag, 'type', 'text/css');
+      append(tag, Element.fromText(text));
+      append(head, tag);
+    };
+    var createParser = function (editor) {
+      var parser = DomParser(editor.settings, editor.schema);
+      parser.addAttributeFilter('src,href,style,tabindex', function (nodes, name) {
+        var i = nodes.length, node;
+        var dom = editor.dom;
+        var value, internalName;
+        while (i--) {
+          node = nodes[i];
+          value = node.attr(name);
+          internalName = 'data-mce-' + name;
+          if (!node.attr(internalName)) {
+            if (value.indexOf('data:') === 0 || value.indexOf('blob:') === 0) {
+              continue;
+            }
+            if (name === 'style') {
+              value = dom.serializeStyle(dom.parseStyle(value), node.name);
+              if (!value.length) {
+                value = null;
+              }
+              node.attr(internalName, value);
+              node.attr(name, value);
+            } else if (name === 'tabindex') {
+              node.attr(internalName, value);
+              node.attr(name, null);
+            } else {
+              node.attr(internalName, editor.convertURL(value, name, node.name));
+            }
+          }
+        }
+      });
+      parser.addNodeFilter('script', function (nodes) {
+        var i = nodes.length, node, type;
+        while (i--) {
+          node = nodes[i];
+          type = node.attr('type') || 'no/type';
+          if (type.indexOf('mce-') !== 0) {
+            node.attr('type', 'mce-' + type);
+          }
+        }
+      });
+      parser.addNodeFilter('#cdata', function (nodes) {
+        var i = nodes.length, node;
+        while (i--) {
+          node = nodes[i];
+          node.type = 8;
+          node.name = '#comment';
+          node.value = '[CDATA[' + node.value + ']]';
+        }
+      });
+      parser.addNodeFilter('p,h1,h2,h3,h4,h5,h6,div', function (nodes) {
+        var i = nodes.length, node;
+        var nonEmptyElements = editor.schema.getNonEmptyElements();
+        while (i--) {
+          node = nodes[i];
+          if (node.isEmpty(nonEmptyElements) && node.getAll('br').length === 0) {
+            node.append(new Node$1('br', 1)).shortEnded = true;
+          }
+        }
+      });
+      return parser;
+    };
+    var autoFocus = function (editor) {
+      if (editor.settings.auto_focus) {
+        Delay.setEditorTimeout(editor, function () {
+          var focusEditor;
+          if (editor.settings.auto_focus === true) {
+            focusEditor = editor;
+          } else {
+            focusEditor = editor.editorManager.get(editor.settings.auto_focus);
+          }
+          if (!focusEditor.destroyed) {
+            focusEditor.focus();
+          }
+        }, 100);
+      }
+    };
+    var initEditor = function (editor) {
+      editor.bindPendingEventDelegates();
+      editor.initialized = true;
+      editor.fire('init');
+      editor.focus(true);
+      editor.nodeChanged({ initial: true });
+      editor.execCallback('init_instance_callback', editor);
+      autoFocus(editor);
+    };
+    var getStyleSheetLoader = function (editor) {
+      return editor.inline ? DOM$2.styleSheetLoader : editor.dom.styleSheetLoader;
+    };
+    var initContentBody = function (editor, skipWrite) {
+      var settings = editor.settings;
+      var targetElm = editor.getElement();
+      var doc = editor.getDoc(), body, contentCssText;
+      if (!settings.inline) {
+        editor.getElement().style.visibility = editor.orgVisibility;
+      }
+      if (!skipWrite && !editor.inline) {
+        doc.open();
+        doc.write(editor.iframeHTML);
+        doc.close();
+      }
+      if (editor.inline) {
+        editor.on('remove', function () {
+          var bodyEl = this.getBody();
+          DOM$2.removeClass(bodyEl, 'mce-content-body');
+          DOM$2.removeClass(bodyEl, 'mce-edit-focus');
+          DOM$2.setAttrib(bodyEl, 'contentEditable', null);
+        });
+        DOM$2.addClass(targetElm, 'mce-content-body');
+        editor.contentDocument = doc = settings.content_document || domGlobals.document;
+        editor.contentWindow = settings.content_window || domGlobals.window;
+        editor.bodyElement = targetElm;
+        editor.contentAreaContainer = targetElm;
+        settings.content_document = settings.content_window = null;
+        settings.root_name = targetElm.nodeName.toLowerCase();
+      }
+      body = editor.getBody();
+      body.disabled = true;
+      editor.readonly = settings.readonly;
+      if (!editor.readonly) {
+        if (editor.inline && DOM$2.getStyle(body, 'position', true) === 'static') {
+          body.style.position = 'relative';
+        }
+        body.contentEditable = editor.getParam('content_editable_state', true);
+      }
+      body.disabled = false;
+      editor.editorUpload = EditorUpload(editor);
+      editor.schema = Schema(settings);
+      editor.dom = DOMUtils$1(doc, {
+        keep_values: true,
+        url_converter: editor.convertURL,
+        url_converter_scope: editor,
+        hex_colors: settings.force_hex_style_colors,
+        update_styles: true,
+        root_element: editor.inline ? editor.getBody() : null,
+        collect: function () {
+          return editor.inline;
+        },
+        schema: editor.schema,
+        contentCssCors: Settings.shouldUseContentCssCors(editor),
+        onSetAttrib: function (e) {
+          editor.fire('SetAttrib', e);
+        }
+      });
+      editor.parser = createParser(editor);
+      editor.serializer = Serializer$1(settings, editor);
+      editor.selection = Selection(editor.dom, editor.getWin(), editor.serializer, editor);
+      editor.annotator = Annotator(editor);
+      editor.formatter = Formatter(editor);
+      editor.undoManager = UndoManager(editor);
+      editor._nodeChangeDispatcher = new NodeChange(editor);
+      editor._selectionOverrides = SelectionOverrides(editor);
+      setup$g(editor);
+      setup$f(editor);
+      KeyboardOverrides.setup(editor);
+      ForceBlocks.setup(editor);
+      editor.fire('PreInit');
+      if (!settings.browser_spellcheck && !settings.gecko_spellcheck) {
+        doc.body.spellcheck = false;
+        DOM$2.setAttrib(body, 'spellcheck', 'false');
+      }
+      editor.quirks = Quirks(editor);
+      editor.fire('PostRender');
+      var directionality = Settings.getDirectionality(editor);
+      if (directionality !== undefined) {
+        body.dir = directionality;
+      }
+      if (settings.protect) {
+        editor.on('BeforeSetContent', function (e) {
+          Tools.each(settings.protect, function (pattern) {
+            e.content = e.content.replace(pattern, function (str) {
+              return '<!--mce:protected ' + escape(str) + '-->';
+            });
+          });
+        });
+      }
+      editor.on('SetContent', function () {
+        editor.addVisual(editor.getBody());
+      });
+      editor.load({
+        initial: true,
+        format: 'html'
+      });
+      editor.startContent = editor.getContent({ format: 'raw' });
+      editor.on('compositionstart compositionend', function (e) {
+        editor.composing = e.type === 'compositionstart';
+      });
+      if (editor.contentStyles.length > 0) {
+        contentCssText = '';
+        Tools.each(editor.contentStyles, function (style) {
+          contentCssText += style + '\r\n';
+        });
+        editor.dom.addStyle(contentCssText);
+      }
+      getStyleSheetLoader(editor).loadAll(editor.contentCSS, function (_) {
+        initEditor(editor);
+      }, function (urls) {
+        initEditor(editor);
+      });
+      if (settings.content_style) {
+        appendStyle(editor, settings.content_style);
+      }
+    };
+    var InitContentBody = { initContentBody: initContentBody };
+
+    var DOM$3 = DOMUtils$1.DOM;
+    var relaxDomain = function (editor, ifr) {
+      if (domGlobals.document.domain !== domGlobals.window.location.hostname && Env.ie && Env.ie < 12) {
+        var bodyUuid = Uuid.uuid('mce');
+        editor[bodyUuid] = function () {
+          InitContentBody.initContentBody(editor);
+        };
+        var domainRelaxUrl = 'javascript:(function(){' + 'document.open();document.domain="' + domGlobals.document.domain + '";' + 'var ed = window.parent.tinymce.get("' + editor.id + '");document.write(ed.iframeHTML);' + 'document.close();ed.' + bodyUuid + '(true);})()';
+        DOM$3.setAttrib(ifr, 'src', domainRelaxUrl);
+        return true;
+      }
+      return false;
+    };
+    var createIframeElement = function (id, title, height, customAttrs) {
+      var iframe = Element.fromTag('iframe');
+      setAll(iframe, customAttrs);
+      setAll(iframe, {
+        id: id + '_ifr',
+        frameBorder: '0',
+        allowTransparency: 'true',
+        title: title
+      });
+      add$3(iframe, 'tox-edit-area__iframe');
+      return iframe;
+    };
+    var getIframeHtml = function (editor) {
+      var bodyId, bodyClass, iframeHTML;
+      iframeHTML = Settings.getDocType(editor) + '<html><head>';
+      if (Settings.getDocumentBaseUrl(editor) !== editor.documentBaseUrl) {
+        iframeHTML += '<base href="' + editor.documentBaseURI.getURI() + '" />';
+      }
+      iframeHTML += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
+      bodyId = Settings.getBodyId(editor);
+      bodyClass = Settings.getBodyClass(editor);
+      if (Settings.getContentSecurityPolicy(editor)) {
+        iframeHTML += '<meta http-equiv="Content-Security-Policy" content="' + Settings.getContentSecurityPolicy(editor) + '" />';
+      }
+      iframeHTML += '</head><body id="' + bodyId + '" class="mce-content-body ' + bodyClass + '" data-id="' + editor.id + '"><br></body></html>';
+      return iframeHTML;
+    };
+    var createIframe = function (editor, o) {
+      var title = editor.editorManager.translate('Rich Text Area. Press ALT-0 for help.');
+      var ifr = createIframeElement(editor.id, title, o.height, Settings.getIframeAttrs(editor)).dom();
+      ifr.onload = function () {
+        ifr.onload = null;
+        editor.fire('load');
+      };
+      var isDomainRelaxed = relaxDomain(editor, ifr);
+      editor.contentAreaContainer = o.iframeContainer;
+      editor.iframeElement = ifr;
+      editor.iframeHTML = getIframeHtml(editor);
+      DOM$3.add(o.iframeContainer, ifr);
+      return isDomainRelaxed;
+    };
+    var init$1 = function (editor, boxInfo) {
+      var isDomainRelaxed = createIframe(editor, boxInfo);
+      if (boxInfo.editorContainer) {
+        DOM$3.get(boxInfo.editorContainer).style.display = editor.orgDisplay;
+        editor.hidden = DOM$3.isHidden(boxInfo.editorContainer);
+      }
+      editor.getElement().style.display = 'none';
+      DOM$3.setAttrib(editor.id, 'aria-hidden', 'true');
+      if (!isDomainRelaxed) {
+        InitContentBody.initContentBody(editor);
+      }
+    };
+    var InitIframe = { init: init$1 };
+
+    var isContentCssSkinName = function (url) {
+      return /^[a-z0-9\-]+$/i.test(url);
+    };
+    var getContentCssUrls = function (editor) {
+      var contentCss = Settings.getContentCss(editor);
+      var skinUrl = editor.editorManager.baseURL + '/skins/content';
+      var suffix = editor.editorManager.suffix;
+      var contentCssFile = 'content' + suffix + '.css';
+      var inline = editor.inline === true;
+      return map(contentCss, function (url) {
+        if (isContentCssSkinName(url) && !inline) {
+          return skinUrl + '/' + url + '/' + contentCssFile;
+        } else {
+          return editor.documentBaseURI.toAbsolute(url);
+        }
+      });
+    };
+    var appendContentCssFromSettings = function (editor) {
+      editor.contentCSS = editor.contentCSS.concat(getContentCssUrls(editor));
+    };
+
+    var DOM$4 = DOMUtils$1.DOM;
+    var initPlugin = function (editor, initializedPlugins, plugin) {
+      var Plugin = PluginManager$1.get(plugin);
+      var pluginUrl = PluginManager$1.urls[plugin] || editor.documentBaseUrl.replace(/\/$/, '');
+      plugin = Tools.trim(plugin);
+      if (Plugin && Tools.inArray(initializedPlugins, plugin) === -1) {
+        Tools.each(PluginManager$1.dependencies(plugin), function (dep) {
+          initPlugin(editor, initializedPlugins, dep);
+        });
+        if (editor.plugins[plugin]) {
+          return;
+        }
+        try {
+          var pluginInstance = new Plugin(editor, pluginUrl, editor.$);
+          editor.plugins[plugin] = pluginInstance;
+          if (pluginInstance.init) {
+            pluginInstance.init(editor, pluginUrl);
+            initializedPlugins.push(plugin);
+          }
+        } catch (e) {
+          ErrorReporter.pluginInitError(editor, plugin, e);
+        }
+      }
+    };
+    var trimLegacyPrefix = function (name) {
+      return name.replace(/^\-/, '');
+    };
+    var initPlugins = function (editor) {
+      var initializedPlugins = [];
+      Tools.each(editor.settings.plugins.split(/[ ,]/), function (name) {
+        initPlugin(editor, initializedPlugins, trimLegacyPrefix(name));
+      });
+    };
+    var initIcons = function (editor) {
+      var iconPackName = Tools.trim(editor.settings.icons);
+      var currentIcons = editor.ui.registry.getAll().icons;
+      var defaultIcons = getAll();
+      var loadIcons = __assign({}, defaultIcons, IconManager.get(iconPackName).icons);
+      each$3(loadIcons, function (svgData, icon) {
+        if (!has(currentIcons, icon)) {
+          editor.ui.registry.addIcon(icon, svgData);
+        }
+      });
+    };
+    var initTheme = function (editor) {
+      var theme = editor.settings.theme;
+      if (isString(theme)) {
+        editor.settings.theme = trimLegacyPrefix(theme);
+        var Theme = ThemeManager.get(theme);
+        editor.theme = new Theme(editor, ThemeManager.urls[theme]);
+        if (editor.theme.init) {
+          editor.theme.init(editor, ThemeManager.urls[theme] || editor.documentBaseUrl.replace(/\/$/, ''), editor.$);
+        }
+      } else {
+        editor.theme = {};
+      }
+    };
+    var renderFromLoadedTheme = function (editor) {
+      return editor.theme.renderUI();
+    };
+    var renderFromThemeFunc = function (editor) {
+      var elm = editor.getElement();
+      var theme = editor.settings.theme;
+      var info = theme(editor, elm);
+      if (info.editorContainer.nodeType) {
+        info.editorContainer.id = info.editorContainer.id || editor.id + '_parent';
+      }
+      if (info.iframeContainer && info.iframeContainer.nodeType) {
+        info.iframeContainer.id = info.iframeContainer.id || editor.id + '_iframecontainer';
+      }
+      info.height = info.iframeHeight ? info.iframeHeight : elm.offsetHeight;
+      return info;
+    };
+    var createThemeFalseResult = function (element) {
+      return {
+        editorContainer: element,
+        iframeContainer: element
+      };
+    };
+    var renderThemeFalseIframe = function (targetElement) {
+      var iframeContainer = DOM$4.create('div');
+      DOM$4.insertAfter(iframeContainer, targetElement);
+      return createThemeFalseResult(iframeContainer);
+    };
+    var renderThemeFalse = function (editor) {
+      var targetElement = editor.getElement();
+      return editor.inline ? createThemeFalseResult(null) : renderThemeFalseIframe(targetElement);
+    };
+    var renderThemeUi = function (editor) {
+      var elm = editor.getElement();
+      editor.orgDisplay = elm.style.display;
+      if (isString(editor.settings.theme)) {
+        return renderFromLoadedTheme(editor);
+      } else if (isFunction(editor.settings.theme)) {
+        return renderFromThemeFunc(editor);
+      } else {
+        return renderThemeFalse(editor);
+      }
+    };
+    var init$2 = function (editor) {
+      editor.fire('ScriptsLoaded');
+      initIcons(editor);
+      initTheme(editor);
+      initPlugins(editor);
+      var boxInfo = renderThemeUi(editor);
+      editor.editorContainer = boxInfo.editorContainer ? boxInfo.editorContainer : null;
+      appendContentCssFromSettings(editor);
+      if (editor.inline) {
+        return InitContentBody.initContentBody(editor);
+      } else {
+        return InitIframe.init(editor, boxInfo);
+      }
+    };
+    var Init = { init: init$2 };
+
+    var DOM$5 = DOMUtils$1.DOM;
+    var hasSkipLoadPrefix = function (name) {
+      return name.charAt(0) === '-';
+    };
+    var loadLanguage = function (scriptLoader, editor) {
+      var languageCode = Settings.getLanguageCode(editor);
+      var languageUrl = Settings.getLanguageUrl(editor);
+      if (I18n.hasCode(languageCode) === false && languageCode !== 'en') {
+        if (languageUrl !== '') {
+          scriptLoader.add(languageUrl);
+        } else {
+          scriptLoader.add(editor.editorManager.baseURL + '/langs/' + languageCode + '.js');
+        }
+      }
+    };
+    var loadTheme = function (scriptLoader, editor, suffix, callback) {
+      var settings = editor.settings, theme = settings.theme;
+      if (isString(theme)) {
+        if (!hasSkipLoadPrefix(theme) && !ThemeManager.urls.hasOwnProperty(theme)) {
+          var themeUrl = settings.theme_url;
+          if (themeUrl) {
+            ThemeManager.load(theme, editor.documentBaseURI.toAbsolute(themeUrl));
+          } else {
+            ThemeManager.load(theme, 'themes/' + theme + '/theme' + suffix + '.js');
+          }
+        }
+        scriptLoader.loadQueue(function () {
+          ThemeManager.waitFor(theme, callback);
+        });
+      } else {
+        callback();
+      }
+    };
+    var loadIcons = function (editor) {
+      var iconPackName = Tools.trim(editor.getParam('icons', '', 'string'));
+      if (iconPackName.length > 0 && !IconManager.has(iconPackName)) {
+        var urlString = editor.editorManager.baseURL + '/icons/' + iconPackName + '/icons.js';
+        ScriptLoader.ScriptLoader.add(urlString);
+      }
+    };
+    var loadPlugins = function (settings, suffix) {
+      if (Tools.isArray(settings.plugins)) {
+        settings.plugins = settings.plugins.join(' ');
+      }
+      Tools.each(settings.external_plugins, function (url, name) {
+        PluginManager$1.load(name, url);
+        settings.plugins += ' ' + name;
+      });
+      Tools.each(settings.plugins.split(/[ ,]/), function (plugin) {
+        plugin = Tools.trim(plugin);
+        if (plugin && !PluginManager$1.urls[plugin]) {
+          if (hasSkipLoadPrefix(plugin)) {
+            plugin = plugin.substr(1, plugin.length);
+            var dependencies = PluginManager$1.dependencies(plugin);
+            Tools.each(dependencies, function (dep) {
+              var defaultSettings = {
+                prefix: 'plugins/',
+                resource: dep,
+                suffix: '/plugin' + suffix + '.js'
+              };
+              dep = PluginManager$1.createUrl(defaultSettings, dep);
+              PluginManager$1.load(dep.resource, dep);
+            });
+          } else {
+            PluginManager$1.load(plugin, {
+              prefix: 'plugins/',
+              resource: plugin,
+              suffix: '/plugin' + suffix + '.js'
+            });
+          }
+        }
+      });
+    };
+    var loadScripts = function (editor, suffix) {
+      var scriptLoader = ScriptLoader.ScriptLoader;
+      loadTheme(scriptLoader, editor, suffix, function () {
+        loadLanguage(scriptLoader, editor);
+        loadIcons(editor);
+        loadPlugins(editor.settings, suffix);
+        scriptLoader.loadQueue(function () {
+          if (!editor.removed) {
+            Init.init(editor);
+          }
+        }, editor, function (urls) {
+          ErrorReporter.pluginLoadError(editor, urls[0]);
+          if (!editor.removed) {
+            Init.init(editor);
+          }
+        });
+      });
+    };
+    var render = function (editor) {
+      var settings = editor.settings, id = editor.id;
+      I18n.setCode(Settings.getLanguageCode(editor));
+      var readyHandler = function () {
+        DOM$5.unbind(domGlobals.window, 'ready', readyHandler);
+        editor.render();
+      };
+      if (!EventUtils.Event.domLoaded) {
+        DOM$5.bind(domGlobals.window, 'ready', readyHandler);
+        return;
+      }
+      if (!editor.getElement()) {
+        return;
+      }
+      if (!Env.contentEditable) {
+        return;
+      }
+      if (!settings.inline) {
+        editor.orgVisibility = editor.getElement().style.visibility;
+        editor.getElement().style.visibility = 'hidden';
+      } else {
+        editor.inline = true;
+      }
+      var form = editor.getElement().form || DOM$5.getParent(id, 'form');
+      if (form) {
+        editor.formElement = form;
+        if (settings.hidden_input && !/TEXTAREA|INPUT/i.test(editor.getElement().nodeName)) {
+          DOM$5.insertAfter(DOM$5.create('input', {
+            type: 'hidden',
+            name: id
+          }), id);
+          editor.hasHiddenInput = true;
+        }
+        editor.formEventDelegate = function (e) {
+          editor.fire(e.type, e);
+        };
+        DOM$5.bind(form, 'submit reset', editor.formEventDelegate);
+        editor.on('reset', function () {
+          editor.resetContent();
+        });
+        if (settings.submit_patch && !form.submit.nodeType && !form.submit.length && !form._mceOldSubmit) {
+          form._mceOldSubmit = form.submit;
+          form.submit = function () {
+            editor.editorManager.triggerSave();
+            editor.setDirty(false);
+            return form._mceOldSubmit(form);
+          };
+        }
+      }
+      editor.windowManager = WindowManager(editor);
+      editor.notificationManager = NotificationManager(editor);
+      if (settings.encoding === 'xml') {
+        editor.on('GetContent', function (e) {
+          if (e.save) {
+            e.content = DOM$5.encode(e.content);
+          }
+        });
+      }
+      if (settings.add_form_submit_trigger) {
+        editor.on('submit', function () {
+          if (editor.initialized) {
+            editor.save();
+          }
+        });
+      }
+      if (settings.add_unload_trigger) {
+        editor._beforeUnload = function () {
+          if (editor.initialized && !editor.destroyed && !editor.isHidden()) {
+            editor.save({
+              format: 'raw',
+              no_events: true,
+              set_dirty: false
+            });
+          }
+        };
+        editor.editorManager.on('BeforeUnload', editor._beforeUnload);
+      }
+      editor.editorManager.add(editor);
+      loadScripts(editor, editor.suffix);
+    };
+    var Render = { render: render };
+
+    var toggleClass = function (elm, cls, state) {
+      if (has$2(elm, cls) && state === false) {
+        remove$4(elm, cls);
+      } else if (state) {
+        add$3(elm, cls);
+      }
+    };
+    var create$3 = function (editor) {
+      var activeMode = 'design';
+      var defaultModes = [
+        'design',
+        'readonly'
+      ];
+      var availableModes = {
+        design: {
+          activate: noop,
+          deactivate: noop,
+          editorReadOnly: false
+        },
+        readonly: {
+          activate: noop,
+          deactivate: noop,
+          editorReadOnly: true
+        }
+      };
+      var setEditorCommandState = function (cmd, state) {
+        try {
+          editor.getDoc().execCommand(cmd, false, state);
+        } catch (ex) {
+        }
+      };
+      var toggleReadOnly = function (state) {
+        toggleClass(Element.fromDom(editor.getBody()), 'mce-content-readonly', state);
+        if (state) {
+          editor.selection.controlSelection.hideResizeRect();
+          editor.readonly = true;
+          editor.getBody().contentEditable = 'false';
+        } else {
+          editor.readonly = false;
+          editor.getBody().contentEditable = 'true';
+          setEditorCommandState('StyleWithCSS', false);
+          setEditorCommandState('enableInlineTableEditing', false);
+          setEditorCommandState('enableObjectResizing', false);
+          editor.focus();
+          editor.nodeChanged();
+        }
+      };
+      var switchToMode = function (mode) {
+        var oldMode = availableModes[activeMode];
+        var newMode = availableModes[mode];
+        try {
+          newMode.activate();
+        } catch (e) {
+          domGlobals.console.error('problem while activating editor mode ' + mode + ':', e);
+          return;
+        }
+        oldMode.deactivate();
+        if (oldMode.editorReadOnly !== newMode.editorReadOnly) {
+          toggleReadOnly(newMode.editorReadOnly);
+        }
+        activeMode = mode;
+        Events.fireSwitchMode(editor, mode);
+      };
+      var set = function (mode) {
+        if (mode === activeMode) {
+          return;
+        } else if (!has(availableModes, mode)) {
+          throw new Error('Editor mode \'' + mode + '\' is invalid');
+        }
+        if (editor.initialized) {
+          switchToMode(mode);
+        } else {
+          editor.on('init', function () {
+            return switchToMode(mode);
+          });
+        }
+      };
+      var get = function () {
+        return activeMode;
+      };
+      var isReadOnly = function () {
+        return editor.readonly === true;
+      };
+      var register = function (mode, api) {
+        if (contains(defaultModes, mode)) {
+          throw new Error('Cannot override default mode ' + mode);
+        }
+        availableModes[mode] = __assign({}, api, {
+          deactivate: function () {
+            try {
+              api.deactivate();
+            } catch (e) {
+              domGlobals.console.error('problem while deactivating editor mode ' + mode + ':');
+              domGlobals.console.error(e);
+            }
+          }
+        });
+      };
+      return {
+        isReadOnly: isReadOnly,
+        set: set,
+        get: get,
+        register: register
+      };
+    };
+
+    var hasOnlyOneChild$1 = function (node) {
+      return node.firstChild && node.firstChild === node.lastChild;
+    };
+    var isPaddingNode = function (node) {
+      return node.name === 'br' || node.value === '\xA0';
+    };
+    var isPaddedEmptyBlock = function (schema, node) {
+      var blockElements = schema.getBlockElements();
+      return blockElements[node.name] && hasOnlyOneChild$1(node) && isPaddingNode(node.firstChild);
+    };
+    var isEmptyFragmentElement = function (schema, node) {
+      var nonEmptyElements = schema.getNonEmptyElements();
+      return node && (node.isEmpty(nonEmptyElements) || isPaddedEmptyBlock(schema, node));
+    };
+    var isListFragment = function (schema, fragment) {
+      var firstChild = fragment.firstChild;
+      var lastChild = fragment.lastChild;
+      if (firstChild && firstChild.name === 'meta') {
+        firstChild = firstChild.next;
+      }
+      if (lastChild && lastChild.attr('id') === 'mce_marker') {
+        lastChild = lastChild.prev;
+      }
+      if (isEmptyFragmentElement(schema, lastChild)) {
+        lastChild = lastChild.prev;
+      }
+      if (!firstChild || firstChild !== lastChild) {
+        return false;
+      }
+      return firstChild.name === 'ul' || firstChild.name === 'ol';
+    };
+    var cleanupDomFragment = function (domFragment) {
+      var firstChild = domFragment.firstChild;
+      var lastChild = domFragment.lastChild;
+      if (firstChild && firstChild.nodeName === 'META') {
+        firstChild.parentNode.removeChild(firstChild);
+      }
+      if (lastChild && lastChild.id === 'mce_marker') {
+        lastChild.parentNode.removeChild(lastChild);
+      }
+      return domFragment;
+    };
+    var toDomFragment = function (dom, serializer, fragment) {
+      var html = serializer.serialize(fragment);
+      var domFragment = dom.createFragment(html);
+      return cleanupDomFragment(domFragment);
+    };
+    var listItems$1 = function (elm) {
+      return Tools.grep(elm.childNodes, function (child) {
+        return child.nodeName === 'LI';
+      });
+    };
+    var isPadding = function (node) {
+      return node.data === '\xA0' || NodeType.isBr(node);
+    };
+    var isListItemPadded = function (node) {
+      return node && node.firstChild && node.firstChild === node.lastChild && isPadding(node.firstChild);
+    };
+    var isEmptyOrPadded = function (elm) {
+      return !elm.firstChild || isListItemPadded(elm);
+    };
+    var trimListItems = function (elms) {
+      return elms.length > 0 && isEmptyOrPadded(elms[elms.length - 1]) ? elms.slice(0, -1) : elms;
+    };
+    var getParentLi = function (dom, node) {
+      var parentBlock = dom.getParent(node, dom.isBlock);
+      return parentBlock && parentBlock.nodeName === 'LI' ? parentBlock : null;
+    };
+    var isParentBlockLi = function (dom, node) {
+      return !!getParentLi(dom, node);
+    };
+    var getSplit = function (parentNode, rng) {
+      var beforeRng = rng.cloneRange();
+      var afterRng = rng.cloneRange();
+      beforeRng.setStartBefore(parentNode);
+      afterRng.setEndAfter(parentNode);
+      return [
+        beforeRng.cloneContents(),
+        afterRng.cloneContents()
+      ];
+    };
+    var findFirstIn = function (node, rootNode) {
+      var caretPos = CaretPosition$1.before(node);
+      var caretWalker = CaretWalker(rootNode);
+      var newCaretPos = caretWalker.next(caretPos);
+      return newCaretPos ? newCaretPos.toRange() : null;
+    };
+    var findLastOf = function (node, rootNode) {
+      var caretPos = CaretPosition$1.after(node);
+      var caretWalker = CaretWalker(rootNode);
+      var newCaretPos = caretWalker.prev(caretPos);
+      return newCaretPos ? newCaretPos.toRange() : null;
+    };
+    var insertMiddle = function (target, elms, rootNode, rng) {
+      var parts = getSplit(target, rng);
+      var parentElm = target.parentNode;
+      parentElm.insertBefore(parts[0], target);
+      Tools.each(elms, function (li) {
+        parentElm.insertBefore(li, target);
+      });
+      parentElm.insertBefore(parts[1], target);
+      parentElm.removeChild(target);
+      return findLastOf(elms[elms.length - 1], rootNode);
+    };
+    var insertBefore$1 = function (target, elms, rootNode) {
+      var parentElm = target.parentNode;
+      Tools.each(elms, function (elm) {
+        parentElm.insertBefore(elm, target);
+      });
+      return findFirstIn(target, rootNode);
+    };
+    var insertAfter$1 = function (target, elms, rootNode, dom) {
+      dom.insertAfter(elms.reverse(), target);
+      return findLastOf(elms[0], rootNode);
+    };
+    var insertAtCaret = function (serializer, dom, rng, fragment) {
+      var domFragment = toDomFragment(dom, serializer, fragment);
+      var liTarget = getParentLi(dom, rng.startContainer);
+      var liElms = trimListItems(listItems$1(domFragment.firstChild));
+      var BEGINNING = 1, END = 2;
+      var rootNode = dom.getRoot();
+      var isAt = function (location) {
+        var caretPos = CaretPosition$1.fromRangeStart(rng);
+        var caretWalker = CaretWalker(dom.getRoot());
+        var newPos = location === BEGINNING ? caretWalker.prev(caretPos) : caretWalker.next(caretPos);
+        return newPos ? getParentLi(dom, newPos.getNode()) !== liTarget : true;
+      };
+      if (isAt(BEGINNING)) {
+        return insertBefore$1(liTarget, liElms, rootNode);
+      } else if (isAt(END)) {
+        return insertAfter$1(liTarget, liElms, rootNode, dom);
+      }
+      return insertMiddle(liTarget, liElms, rootNode, rng);
+    };
+    var InsertList = {
+      isListFragment: isListFragment,
+      insertAtCaret: insertAtCaret,
+      isParentBlockLi: isParentBlockLi,
+      trimListItems: trimListItems,
+      listItems: listItems$1
+    };
+
+    var isAfterNbsp = function (container, offset) {
+      return NodeType.isText(container) && container.nodeValue[offset - 1] === '\xA0';
+    };
+    var trimOrPadLeftRight = function (rng, html) {
+      var container, offset;
+      container = rng.startContainer;
+      offset = rng.startOffset;
+      var hasSiblingText = function (siblingName) {
+        return container[siblingName] && container[siblingName].nodeType === 3;
+      };
+      if (container.nodeType === 3) {
+        if (offset > 0) {
+          html = html.replace(/^&nbsp;/, ' ');
+        } else if (!hasSiblingText('previousSibling')) {
+          html = html.replace(/^ /, '&nbsp;');
+        }
+        if (offset < container.length) {
+          html = html.replace(/&nbsp;(<br>|)$/, ' ');
+        } else if (!hasSiblingText('nextSibling')) {
+          html = html.replace(/(&nbsp;| )(<br>|)$/, '&nbsp;');
+        }
+      }
+      return html;
+    };
+    var trimNbspAfterDeleteAndPadValue = function (rng, value) {
+      var container, offset;
+      container = rng.startContainer;
+      offset = rng.startOffset;
+      if (container.nodeType === 3 && rng.collapsed) {
+        if (container.data[offset] === '\xA0') {
+          container.deleteData(offset, 1);
+          if (!/[\u00a0| ]$/.test(value)) {
+            value += ' ';
+          }
+        } else if (container.data[offset - 1] === '\xA0') {
+          container.deleteData(offset - 1, 1);
+          if (!/[\u00a0| ]$/.test(value)) {
+            value = ' ' + value;
+          }
+        }
+      }
+      return value;
+    };
+
+    var isTableCell$5 = NodeType.matchNodeNames('td th');
+    var selectionSetContent = function (editor, content) {
+      var rng = editor.selection.getRng();
+      var container = rng.startContainer;
+      var offset = rng.startOffset;
+      if (rng.collapsed && isAfterNbsp(container, offset) && NodeType.isText(container)) {
+        container.insertData(offset - 1, ' ');
+        container.deleteData(offset, 1);
+        rng.setStart(container, offset);
+        rng.setEnd(container, offset);
+        editor.selection.setRng(rng);
+      }
+      editor.selection.setContent(content);
+    };
+    var validInsertion = function (editor, value, parentNode) {
+      if (parentNode.getAttribute('data-mce-bogus') === 'all') {
+        parentNode.parentNode.insertBefore(editor.dom.createFragment(value), parentNode);
+      } else {
+        var node = parentNode.firstChild;
+        var node2 = parentNode.lastChild;
+        if (!node || node === node2 && node.nodeName === 'BR') {
+          editor.dom.setHTML(parentNode, value);
+        } else {
+          selectionSetContent(editor, value);
+        }
+      }
+    };
+    var trimBrsFromTableCell = function (dom, elm) {
+      Option.from(dom.getParent(elm, 'td,th')).map(Element.fromDom).each(PaddingBr.trimBlockTrailingBr);
+    };
+    var reduceInlineTextElements = function (editor, merge) {
+      var textInlineElements = editor.schema.getTextInlineElements();
+      var dom = editor.dom;
+      if (merge) {
+        var root_1 = editor.getBody(), elementUtils_1 = new ElementUtils(dom);
+        Tools.each(dom.select('*[data-mce-fragment]'), function (node) {
+          for (var testNode = node.parentNode; testNode && testNode !== root_1; testNode = testNode.parentNode) {
+            if (textInlineElements[node.nodeName.toLowerCase()] && elementUtils_1.compare(testNode, node)) {
+              dom.remove(node, true);
+            }
+          }
+        });
+      }
+    };
+    var markFragmentElements = function (fragment) {
+      var node = fragment;
+      while (node = node.walk()) {
+        if (node.type === 1) {
+          node.attr('data-mce-fragment', '1');
+        }
+      }
+    };
+    var umarkFragmentElements = function (elm) {
+      Tools.each(elm.getElementsByTagName('*'), function (elm) {
+        elm.removeAttribute('data-mce-fragment');
+      });
+    };
+    var isPartOfFragment = function (node) {
+      return !!node.getAttribute('data-mce-fragment');
+    };
+    var canHaveChildren = function (editor, node) {
+      return node && !editor.schema.getShortEndedElements()[node.nodeName];
+    };
+    var moveSelectionToMarker = function (editor, marker) {
+      var parentEditableFalseElm, parentBlock, nextRng;
+      var dom = editor.dom, selection = editor.selection;
+      var node, node2;
+      var getContentEditableFalseParent = function (node) {
+        var root = editor.getBody();
+        for (; node && node !== root; node = node.parentNode) {
+          if (editor.dom.getContentEditable(node) === 'false') {
+            return node;
+          }
+        }
+        return null;
+      };
+      if (!marker) {
+        return;
+      }
+      editor.selection.scrollIntoView(marker);
+      parentEditableFalseElm = getContentEditableFalseParent(marker);
+      if (parentEditableFalseElm) {
+        dom.remove(marker);
+        selection.select(parentEditableFalseElm);
+        return;
+      }
+      var rng = dom.createRng();
+      node = marker.previousSibling;
+      if (node && node.nodeType === 3) {
+        rng.setStart(node, node.nodeValue.length);
+        if (!Env.ie) {
+          node2 = marker.nextSibling;
+          if (node2 && node2.nodeType === 3) {
+            node.appendData(node2.data);
+            node2.parentNode.removeChild(node2);
+          }
+        }
+      } else {
+        rng.setStartBefore(marker);
+        rng.setEndBefore(marker);
+      }
+      var findNextCaretRng = function (rng) {
+        var caretPos = CaretPosition$1.fromRangeStart(rng);
+        var caretWalker = CaretWalker(editor.getBody());
+        caretPos = caretWalker.next(caretPos);
+        if (caretPos) {
+          return caretPos.toRange();
+        }
+      };
+      parentBlock = dom.getParent(marker, dom.isBlock);
+      dom.remove(marker);
+      if (parentBlock && dom.isEmpty(parentBlock)) {
+        editor.$(parentBlock).empty();
+        rng.setStart(parentBlock, 0);
+        rng.setEnd(parentBlock, 0);
+        if (!isTableCell$5(parentBlock) && !isPartOfFragment(parentBlock) && (nextRng = findNextCaretRng(rng))) {
+          rng = nextRng;
+          dom.remove(parentBlock);
+        } else {
+          dom.add(parentBlock, dom.create('br', { 'data-mce-bogus': '1' }));
+        }
+      }
+      selection.setRng(rng);
+    };
+    var insertHtmlAtCaret = function (editor, value, details) {
+      var parser, serializer, parentNode, rootNode, fragment, args;
+      var marker, rng, node, bookmarkHtml, merge;
+      var selection = editor.selection, dom = editor.dom;
+      if (/^ | $/.test(value)) {
+        value = trimOrPadLeftRight(selection.getRng(), value);
+      }
+      parser = editor.parser;
+      merge = details.merge;
+      serializer = Serializer({ validate: editor.settings.validate }, editor.schema);
+      bookmarkHtml = '<span id="mce_marker" data-mce-type="bookmark">&#xFEFF;&#x200B;</span>';
+      args = {
+        content: value,
+        format: 'html',
+        selection: true,
+        paste: details.paste
+      };
+      args = editor.fire('BeforeSetContent', args);
+      if (args.isDefaultPrevented()) {
+        editor.fire('SetContent', {
+          content: args.content,
+          format: 'html',
+          selection: true,
+          paste: details.paste
+        });
+        return;
+      }
+      value = args.content;
+      if (value.indexOf('{$caret}') === -1) {
+        value += '{$caret}';
+      }
+      value = value.replace(/\{\$caret\}/, bookmarkHtml);
+      rng = selection.getRng();
+      var caretElement = rng.startContainer || (rng.parentElement ? rng.parentElement() : null);
+      var body = editor.getBody();
+      if (caretElement === body && selection.isCollapsed()) {
+        if (dom.isBlock(body.firstChild) && canHaveChildren(editor, body.firstChild) && dom.isEmpty(body.firstChild)) {
+          rng = dom.createRng();
+          rng.setStart(body.firstChild, 0);
+          rng.setEnd(body.firstChild, 0);
+          selection.setRng(rng);
+        }
+      }
+      if (!selection.isCollapsed()) {
+        editor.selection.setRng(RangeNormalizer.normalize(editor.selection.getRng()));
+        editor.getDoc().execCommand('Delete', false, null);
+        value = trimNbspAfterDeleteAndPadValue(editor.selection.getRng(), value);
+      }
+      parentNode = selection.getNode();
+      var parserArgs = {
+        context: parentNode.nodeName.toLowerCase(),
+        data: details.data,
+        insert: true
+      };
+      fragment = parser.parse(value, parserArgs);
+      if (details.paste === true && InsertList.isListFragment(editor.schema, fragment) && InsertList.isParentBlockLi(dom, parentNode)) {
+        rng = InsertList.insertAtCaret(serializer, dom, editor.selection.getRng(), fragment);
+        editor.selection.setRng(rng);
+        editor.fire('SetContent', args);
+        return;
+      }
+      markFragmentElements(fragment);
+      node = fragment.lastChild;
+      if (node.attr('id') === 'mce_marker') {
+        marker = node;
+        for (node = node.prev; node; node = node.walk(true)) {
+          if (node.type === 3 || !dom.isBlock(node.name)) {
+            if (editor.schema.isValidChild(node.parent.name, 'span')) {
+              node.parent.insert(marker, node, node.name === 'br');
+            }
+            break;
+          }
+        }
+      }
+      editor._selectionOverrides.showBlockCaretContainer(parentNode);
+      if (!parserArgs.invalid) {
+        value = serializer.serialize(fragment);
+        validInsertion(editor, value, parentNode);
+      } else {
+        selectionSetContent(editor, bookmarkHtml);
+        parentNode = selection.getNode();
+        rootNode = editor.getBody();
+        if (parentNode.nodeType === 9) {
+          parentNode = node = rootNode;
+        } else {
+          node = parentNode;
+        }
+        while (node !== rootNode) {
+          parentNode = node;
+          node = node.parentNode;
+        }
+        value = parentNode === rootNode ? rootNode.innerHTML : dom.getOuterHTML(parentNode);
+        value = serializer.serialize(parser.parse(value.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i, function () {
+          return serializer.serialize(fragment);
+        })));
+        if (parentNode === rootNode) {
+          dom.setHTML(rootNode, value);
+        } else {
+          dom.setOuterHTML(parentNode, value);
+        }
+      }
+      reduceInlineTextElements(editor, merge);
+      moveSelectionToMarker(editor, dom.get('mce_marker'));
+      umarkFragmentElements(editor.getBody());
+      trimBrsFromTableCell(editor.dom, editor.selection.getStart());
+      editor.fire('SetContent', args);
+      editor.addVisual();
+    };
+    var processValue = function (value) {
+      var details;
+      if (typeof value !== 'string') {
+        details = Tools.extend({
+          paste: value.paste,
+          data: { paste: value.paste }
+        }, value);
+        return {
+          content: value.content,
+          details: details
+        };
+      }
+      return {
+        content: value,
+        details: {}
+      };
+    };
+    var insertAtCaret$1 = function (editor, value) {
+      var result = processValue(value);
+      insertHtmlAtCaret(editor, result.content, result.details);
+    };
+    var InsertContent = { insertAtCaret: insertAtCaret$1 };
+
+    var nativeCommand = function (editor, command) {
+      editor.getDoc().execCommand(command, false, null);
+    };
+    var deleteCommand = function (editor) {
+      if (CefDelete.backspaceDelete(editor, false)) {
+        return;
+      } else if (CefBoundaryDelete.backspaceDelete(editor, false)) {
+        return;
+      } else if (BoundaryDelete.backspaceDelete(editor, false)) {
+        return;
+      } else if (BlockBoundaryDelete.backspaceDelete(editor, false)) {
+        return;
+      } else if (TableDelete.backspaceDelete(editor)) {
+        return;
+      } else if (BlockRangeDelete.backspaceDelete(editor, false)) {
+        return;
+      } else if (InlineFormatDelete.backspaceDelete(editor, false)) {
+        return;
+      } else {
+        nativeCommand(editor, 'Delete');
+        DeleteUtils.paddEmptyBody(editor);
+      }
+    };
+    var forwardDeleteCommand = function (editor) {
+      if (CefDelete.backspaceDelete(editor, true)) {
+        return;
+      } else if (CefBoundaryDelete.backspaceDelete(editor, true)) {
+        return;
+      } else if (BoundaryDelete.backspaceDelete(editor, true)) {
+        return;
+      } else if (BlockBoundaryDelete.backspaceDelete(editor, true)) {
+        return;
+      } else if (TableDelete.backspaceDelete(editor)) {
+        return;
+      } else if (BlockRangeDelete.backspaceDelete(editor, true)) {
+        return;
+      } else if (InlineFormatDelete.backspaceDelete(editor, true)) {
+        return;
+      } else {
+        nativeCommand(editor, 'ForwardDelete');
+      }
+    };
+    var DeleteCommands = {
+      deleteCommand: deleteCommand,
+      forwardDeleteCommand: forwardDeleteCommand
+    };
+
+    var getSpecifiedFontProp = function (propName, rootElm, elm) {
+      var getProperty = function (elm) {
+        return getRaw(elm, propName);
+      };
+      var isRoot = function (elm) {
+        return eq(Element.fromDom(rootElm), elm);
+      };
+      return closest(Element.fromDom(elm), function (elm) {
+        return getProperty(elm).isSome();
+      }, isRoot).bind(getProperty);
+    };
+    var round$1 = function (number, precision) {
+      var factor = Math.pow(10, precision);
+      return Math.round(number * factor) / factor;
+    };
+    var toPt = function (fontSize, precision) {
+      if (/[0-9.]+px$/.test(fontSize)) {
+        return round$1(parseInt(fontSize, 10) * 72 / 96, precision || 0) + 'pt';
+      }
+      return fontSize;
+    };
+    var normalizeFontFamily = function (fontFamily) {
+      return fontFamily.replace(/[\'\"\\]/g, '').replace(/,\s+/g, ',');
+    };
+    var getComputedFontProp = function (propName, elm) {
+      return Option.from(DOMUtils$1.DOM.getStyle(elm, propName, true));
+    };
+    var getFontProp = function (propName) {
+      return function (rootElm, elm) {
+        return Option.from(elm).map(Element.fromDom).filter(isElement).bind(function (element) {
+          return getSpecifiedFontProp(propName, rootElm, element.dom()).or(getComputedFontProp(propName, element.dom()));
+        }).getOr('');
+      };
+    };
+    var FontInfo = {
+      getFontSize: getFontProp('font-size'),
+      getFontFamily: compose(normalizeFontFamily, getFontProp('font-family')),
+      toPt: toPt
+    };
+
+    var findFirstCaretElement = function (editor) {
+      return CaretFinder.firstPositionIn(editor.getBody()).map(function (caret) {
+        var container = caret.container();
+        return NodeType.isText(container) ? container.parentNode : container;
+      });
+    };
+    var isRangeAtStartOfNode = function (rng, root) {
+      return rng.startContainer === root && rng.startOffset === 0;
+    };
+    var getCaretElement = function (editor) {
+      return Option.from(editor.selection.getRng()).bind(function (rng) {
+        var root = editor.getBody();
+        return isRangeAtStartOfNode(rng, root) ? Option.none() : Option.from(editor.selection.getStart(true));
+      });
+    };
+    var fromFontSizeNumber = function (editor, value) {
+      if (/^[0-9\.]+$/.test(value)) {
+        var fontSizeNumber = parseInt(value, 10);
+        if (fontSizeNumber >= 1 && fontSizeNumber <= 7) {
+          var fontSizes = Settings.getFontStyleValues(editor);
+          var fontClasses = Settings.getFontSizeClasses(editor);
+          if (fontClasses) {
+            return fontClasses[fontSizeNumber - 1] || value;
+          } else {
+            return fontSizes[fontSizeNumber - 1] || value;
+          }
+        } else {
+          return value;
+        }
+      } else {
+        return value;
+      }
+    };
+    var fontNameAction = function (editor, value) {
+      editor.formatter.toggle('fontname', { value: fromFontSizeNumber(editor, value) });
+      editor.nodeChanged();
+    };
+    var fontNameQuery = function (editor) {
+      return getCaretElement(editor).fold(function () {
+        return findFirstCaretElement(editor).map(function (caretElement) {
+          return FontInfo.getFontFamily(editor.getBody(), caretElement);
+        }).getOr('');
+      }, function (caretElement) {
+        return FontInfo.getFontFamily(editor.getBody(), caretElement);
+      });
+    };
+    var fontSizeAction = function (editor, value) {
+      editor.formatter.toggle('fontsize', { value: fromFontSizeNumber(editor, value) });
+      editor.nodeChanged();
+    };
+    var fontSizeQuery = function (editor) {
+      return getCaretElement(editor).fold(function () {
+        return findFirstCaretElement(editor).map(function (caretElement) {
+          return FontInfo.getFontSize(editor.getBody(), caretElement);
+        }).getOr('');
+      }, function (caretElement) {
+        return FontInfo.getFontSize(editor.getBody(), caretElement);
+      });
+    };
+
+    var isEditable$1 = function (target) {
+      return closest(target, function (elm) {
+        return NodeType.isContentEditableTrue(elm.dom()) || NodeType.isContentEditableFalse(elm.dom());
+      }).exists(function (elm) {
+        return NodeType.isContentEditableTrue(elm.dom());
+      });
+    };
+    var parseIndentValue = function (value) {
+      var number = parseInt(value, 10);
+      return isNaN(number) ? 0 : number;
+    };
+    var getIndentStyleName = function (useMargin, element) {
+      var indentStyleName = useMargin || isTable$1(element) ? 'margin' : 'padding';
+      var suffix = get$2(element, 'direction') === 'rtl' ? '-right' : '-left';
+      return indentStyleName + suffix;
+    };
+    var indentElement = function (dom, command, useMargin, value, unit, element) {
+      var indentStyleName = getIndentStyleName(useMargin, Element.fromDom(element));
+      if (command === 'outdent') {
+        var styleValue = Math.max(0, parseIndentValue(element.style[indentStyleName]) - value);
+        dom.setStyle(element, indentStyleName, styleValue ? styleValue + unit : '');
+      } else {
+        var styleValue = parseIndentValue(element.style[indentStyleName]) + value + unit;
+        dom.setStyle(element, indentStyleName, styleValue);
+      }
+    };
+    var validateBlocks = function (editor, blocks) {
+      return forall(blocks, function (block) {
+        var indentStyleName = getIndentStyleName(Settings.shouldIndentUseMargin(editor), block);
+        var intentValue = getRaw(block, indentStyleName).map(parseIndentValue).getOr(0);
+        var contentEditable = editor.dom.getContentEditable(block.dom());
+        return contentEditable !== 'false' && intentValue > 0;
+      });
+    };
+    var canOutdent = function (editor) {
+      var blocks = getBlocksToIndent(editor);
+      return editor.readonly !== true && (blocks.length > 1 || validateBlocks(editor, blocks));
+    };
+    var isListComponent = function (el) {
+      return isList(el) || isListItem(el);
+    };
+    var parentIsListComponent = function (el) {
+      return parent(el).map(isListComponent).getOr(false);
+    };
+    var getBlocksToIndent = function (editor) {
+      return filter(map(editor.selection.getSelectedBlocks(), Element.fromDom), function (el) {
+        return !isListComponent(el) && !parentIsListComponent(el) && isEditable$1(el);
+      });
+    };
+    var handle = function (editor, command) {
+      var dom = editor.dom, selection = editor.selection, formatter = editor.formatter;
+      var indentation = Settings.getIndentation(editor);
+      var indentUnit = /[a-z%]+$/i.exec(indentation)[0];
+      var indentValue = parseInt(indentation, 10);
+      var useMargin = Settings.shouldIndentUseMargin(editor);
+      var forcedRootBlock = Settings.getForcedRootBlock(editor);
+      if (!editor.queryCommandState('InsertUnorderedList') && !editor.queryCommandState('InsertOrderedList')) {
+        if (forcedRootBlock === '' && !dom.getParent(selection.getNode(), dom.isBlock)) {
+          formatter.apply('div');
+        }
+      }
+      each(getBlocksToIndent(editor), function (block) {
+        indentElement(dom, command, useMargin, indentValue, indentUnit, block.dom());
+      });
+    };
+
+    var each$g = Tools.each;
+    var map$3 = Tools.map, inArray$2 = Tools.inArray;
+    var EditorCommands = function () {
+      function EditorCommands(editor) {
+        this.commands = {
+          state: {},
+          exec: {},
+          value: {}
+        };
+        this.editor = editor;
+        this.setupCommands(editor);
+      }
+      EditorCommands.prototype.execCommand = function (command, ui, value, args) {
+        var func, customCommand, state = false;
+        var self = this;
+        if (self.editor.removed) {
+          return;
+        }
+        if (!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint)$/.test(command) && (!args || !args.skip_focus)) {
+          self.editor.focus();
+        } else {
+          SelectionBookmark.restore(self.editor);
+        }
+        args = self.editor.fire('BeforeExecCommand', {
+          command: command,
+          ui: ui,
+          value: value
+        });
+        if (args.isDefaultPrevented()) {
+          return false;
+        }
+        customCommand = command.toLowerCase();
+        if (func = self.commands.exec[customCommand]) {
+          func(customCommand, ui, value);
+          self.editor.fire('ExecCommand', {
+            command: command,
+            ui: ui,
+            value: value
+          });
+          return true;
+        }
+        each$g(this.editor.plugins, function (p) {
+          if (p.execCommand && p.execCommand(command, ui, value)) {
+            self.editor.fire('ExecCommand', {
+              command: command,
+              ui: ui,
+              value: value
+            });
+            state = true;
+            return false;
+          }
+        });
+        if (state) {
+          return state;
+        }
+        if (self.editor.theme && self.editor.theme.execCommand && self.editor.theme.execCommand(command, ui, value)) {
+          self.editor.fire('ExecCommand', {
+            command: command,
+            ui: ui,
+            value: value
+          });
+          return true;
+        }
+        try {
+          state = self.editor.getDoc().execCommand(command, ui, value);
+        } catch (ex) {
+        }
+        if (state) {
+          self.editor.fire('ExecCommand', {
+            command: command,
+            ui: ui,
+            value: value
+          });
+          return true;
+        }
+        return false;
+      };
+      EditorCommands.prototype.queryCommandState = function (command) {
+        var func;
+        if (this.editor.quirks.isHidden() || this.editor.removed) {
+          return;
+        }
+        command = command.toLowerCase();
+        if (func = this.commands.state[command]) {
+          return func(command);
+        }
+        try {
+          return this.editor.getDoc().queryCommandState(command);
+        } catch (ex) {
+        }
+        return false;
+      };
+      EditorCommands.prototype.queryCommandValue = function (command) {
+        var func;
+        if (this.editor.quirks.isHidden() || this.editor.removed) {
+          return;
+        }
+        command = command.toLowerCase();
+        if (func = this.commands.value[command]) {
+          return func(command);
+        }
+        try {
+          return this.editor.getDoc().queryCommandValue(command);
+        } catch (ex) {
+        }
+      };
+      EditorCommands.prototype.addCommands = function (commandList, type) {
+        var self = this;
+        type = type || 'exec';
+        each$g(commandList, function (callback, command) {
+          each$g(command.toLowerCase().split(','), function (command) {
+            self.commands[type][command] = callback;
+          });
+        });
+      };
+      EditorCommands.prototype.addCommand = function (command, callback, scope) {
+        var _this = this;
+        command = command.toLowerCase();
+        this.commands.exec[command] = function (command, ui, value, args) {
+          return callback.call(scope || _this.editor, ui, value, args);
+        };
+      };
+      EditorCommands.prototype.queryCommandSupported = function (command) {
+        command = command.toLowerCase();
+        if (this.commands.exec[command]) {
+          return true;
+        }
+        try {
+          return this.editor.getDoc().queryCommandSupported(command);
+        } catch (ex) {
+        }
+        return false;
+      };
+      EditorCommands.prototype.addQueryStateHandler = function (command, callback, scope) {
+        var _this = this;
+        command = command.toLowerCase();
+        this.commands.state[command] = function () {
+          return callback.call(scope || _this.editor);
+        };
+      };
+      EditorCommands.prototype.addQueryValueHandler = function (command, callback, scope) {
+        var _this = this;
+        command = command.toLowerCase();
+        this.commands.value[command] = function () {
+          return callback.call(scope || _this.editor);
+        };
+      };
+      EditorCommands.prototype.hasCustomCommand = function (command) {
+        command = command.toLowerCase();
+        return !!this.commands.exec[command];
+      };
+      EditorCommands.prototype.execNativeCommand = function (command, ui, value) {
+        if (ui === undefined) {
+          ui = false;
+        }
+        if (value === undefined) {
+          value = null;
+        }
+        return this.editor.getDoc().execCommand(command, ui, value);
+      };
+      EditorCommands.prototype.isFormatMatch = function (name) {
+        return this.editor.formatter.match(name);
+      };
+      EditorCommands.prototype.toggleFormat = function (name, value) {
+        this.editor.formatter.toggle(name, value ? { value: value } : undefined);
+        this.editor.nodeChanged();
+      };
+      EditorCommands.prototype.storeSelection = function (type) {
+        this.selectionBookmark = this.editor.selection.getBookmark(type);
+      };
+      EditorCommands.prototype.restoreSelection = function () {
+        this.editor.selection.moveToBookmark(this.selectionBookmark);
+      };
+      EditorCommands.prototype.setupCommands = function (editor) {
+        var self = this;
+        this.addCommands({
+          'mceResetDesignMode,mceBeginUndoLevel': function () {
+          },
+          'mceEndUndoLevel,mceAddUndoLevel': function () {
+            editor.undoManager.add();
+          },
+          'Cut,Copy,Paste': function (command) {
+            var doc = editor.getDoc();
+            var failed;
+            try {
+              self.execNativeCommand(command);
+            } catch (ex) {
+              failed = true;
+            }
+            if (command === 'paste' && !doc.queryCommandEnabled(command)) {
+              failed = true;
+            }
+            if (failed || !doc.queryCommandSupported(command)) {
+              var msg = editor.translate('Your browser doesn\'t support direct access to the clipboard. ' + 'Please use the Ctrl+X/C/V keyboard shortcuts instead.');
+              if (Env.mac) {
+                msg = msg.replace(/Ctrl\+/g, '\u2318+');
+              }
+              editor.notificationManager.open({
+                text: msg,
+                type: 'error'
+              });
+            }
+          },
+          'unlink': function () {
+            if (editor.selection.isCollapsed()) {
+              var elm = editor.dom.getParent(editor.selection.getStart(), 'a');
+              if (elm) {
+                editor.dom.remove(elm, true);
+              }
+              return;
+            }
+            editor.formatter.remove('link');
+          },
+          'JustifyLeft,JustifyCenter,JustifyRight,JustifyFull,JustifyNone': function (command) {
+            var align = command.substring(7);
+            if (align === 'full') {
+              align = 'justify';
+            }
+            each$g('left,center,right,justify'.split(','), function (name) {
+              if (align !== name) {
+                editor.formatter.remove('align' + name);
+              }
+            });
+            if (align !== 'none') {
+              self.toggleFormat('align' + align);
+            }
+          },
+          'InsertUnorderedList,InsertOrderedList': function (command) {
+            var listElm, listParent;
+            self.execNativeCommand(command);
+            listElm = editor.dom.getParent(editor.selection.getNode(), 'ol,ul');
+            if (listElm) {
+              listParent = listElm.parentNode;
+              if (/^(H[1-6]|P|ADDRESS|PRE)$/.test(listParent.nodeName)) {
+                self.storeSelection();
+                editor.dom.split(listParent, listElm);
+                self.restoreSelection();
+              }
+            }
+          },
+          'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) {
+            self.toggleFormat(command);
+          },
+          'ForeColor,HiliteColor': function (command, ui, value) {
+            self.toggleFormat(command, value);
+          },
+          'FontName': function (command, ui, value) {
+            fontNameAction(editor, value);
+          },
+          'FontSize': function (command, ui, value) {
+            fontSizeAction(editor, value);
+          },
+          'RemoveFormat': function (command) {
+            editor.formatter.remove(command);
+          },
+          'mceBlockQuote': function () {
+            self.toggleFormat('blockquote');
+          },
+          'FormatBlock': function (command, ui, value) {
+            return self.toggleFormat(value || 'p');
+          },
+          'mceCleanup': function () {
+            var bookmark = editor.selection.getBookmark();
+            editor.setContent(editor.getContent());
+            editor.selection.moveToBookmark(bookmark);
+          },
+          'mceRemoveNode': function (command, ui, value) {
+            var node = value || editor.selection.getNode();
+            if (node !== editor.getBody()) {
+              self.storeSelection();
+              editor.dom.remove(node, true);
+              self.restoreSelection();
+            }
+          },
+          'mceSelectNodeDepth': function (command, ui, value) {
+            var counter = 0;
+            editor.dom.getParent(editor.selection.getNode(), function (node) {
+              if (node.nodeType === 1 && counter++ === value) {
+                editor.selection.select(node);
+                return false;
+              }
+            }, editor.getBody());
+          },
+          'mceSelectNode': function (command, ui, value) {
+            editor.selection.select(value);
+          },
+          'mceInsertContent': function (command, ui, value) {
+            InsertContent.insertAtCaret(editor, value);
+          },
+          'mceInsertRawHTML': function (command, ui, value) {
+            editor.selection.setContent('tiny_mce_marker');
+            var content = editor.getContent();
+            editor.setContent(content.replace(/tiny_mce_marker/g, function () {
+              return value;
+            }));
+          },
+          'mceInsertNewLine': function (command, ui, value) {
+            InsertNewLine.insert(editor, value);
+          },
+          'mceToggleFormat': function (command, ui, value) {
+            self.toggleFormat(value);
+          },
+          'mceSetContent': function (command, ui, value) {
+            editor.setContent(value);
+          },
+          'Indent,Outdent': function (command) {
+            handle(editor, command);
+          },
+          'mceRepaint': function () {
+          },
+          'InsertHorizontalRule': function () {
+            editor.execCommand('mceInsertContent', false, '<hr />');
+          },
+          'mceToggleVisualAid': function () {
+            editor.hasVisual = !editor.hasVisual;
+            editor.addVisual();
+          },
+          'mceReplaceContent': function (command, ui, value) {
+            editor.execCommand('mceInsertContent', false, value.replace(/\{\$selection\}/g, editor.selection.getContent({ format: 'text' })));
+          },
+          'mceInsertLink': function (command, ui, value) {
+            var anchor;
+            if (typeof value === 'string') {
+              value = { href: value };
+            }
+            anchor = editor.dom.getParent(editor.selection.getNode(), 'a');
+            value.href = value.href.replace(' ', '%20');
+            if (!anchor || !value.href) {
+              editor.formatter.remove('link');
+            }
+            if (value.href) {
+              editor.formatter.apply('link', value, anchor);
+            }
+          },
+          'selectAll': function () {
+            var editingHost = editor.dom.getParent(editor.selection.getStart(), NodeType.isContentEditableTrue);
+            if (editingHost) {
+              var rng = editor.dom.createRng();
+              rng.selectNodeContents(editingHost);
+              editor.selection.setRng(rng);
+            }
+          },
+          'delete': function () {
+            DeleteCommands.deleteCommand(editor);
+          },
+          'forwardDelete': function () {
+            DeleteCommands.forwardDeleteCommand(editor);
+          },
+          'mceNewDocument': function () {
+            editor.setContent('');
+          },
+          'InsertLineBreak': function (command, ui, value) {
+            InsertBr.insert(editor, value);
+            return true;
+          }
+        });
+        var alignStates = function (name) {
+          return function () {
+            var nodes = editor.selection.isCollapsed() ? [editor.dom.getParent(editor.selection.getNode(), editor.dom.isBlock)] : editor.selection.getSelectedBlocks();
+            var matches = map$3(nodes, function (node) {
+              return !!editor.formatter.matchNode(node, name);
+            });
+            return inArray$2(matches, true) !== -1;
+          };
+        };
+        self.addCommands({
+          'JustifyLeft': alignStates('alignleft'),
+          'JustifyCenter': alignStates('aligncenter'),
+          'JustifyRight': alignStates('alignright'),
+          'JustifyFull': alignStates('alignjustify'),
+          'Bold,Italic,Underline,Strikethrough,Superscript,Subscript': function (command) {
+            return self.isFormatMatch(command);
+          },
+          'mceBlockQuote': function () {
+            return self.isFormatMatch('blockquote');
+          },
+          'Outdent': function () {
+            return canOutdent(editor);
+          },
+          'InsertUnorderedList,InsertOrderedList': function (command) {
+            var list = editor.dom.getParent(editor.selection.getNode(), 'ul,ol');
+            return list && (command === 'insertunorderedlist' && list.tagName === 'UL' || command === 'insertorderedlist' && list.tagName === 'OL');
+          }
+        }, 'state');
+        self.addCommands({
+          Undo: function () {
+            editor.undoManager.undo();
+          },
+          Redo: function () {
+            editor.undoManager.redo();
+          }
+        });
+        self.addQueryValueHandler('FontName', function () {
+          return fontNameQuery(editor);
+        }, this);
+        self.addQueryValueHandler('FontSize', function () {
+          return fontSizeQuery(editor);
+        }, this);
+      };
+      return EditorCommands;
+    }();
+
+    var nativeEvents = Tools.makeMap('focus blur focusin focusout click dblclick mousedown mouseup mousemove mouseover beforepaste paste cut copy selectionchange ' + 'mouseout mouseenter mouseleave wheel keydown keypress keyup input contextmenu dragstart dragend dragover ' + 'draggesture dragdrop drop drag submit ' + 'compositionstart compositionend compositionupdate touchstart touchmove touchend', ' ');
+    var returnFalse$1 = function () {
+      return false;
+    };
+    var returnTrue$1 = function () {
+      return true;
+    };
+    var EventDispatcher = function () {
+      function EventDispatcher(settings) {
+        this.bindings = {};
+        this.settings = settings || {};
+        this.scope = this.settings.scope || this;
+        this.toggleEvent = this.settings.toggleEvent || returnFalse$1;
+      }
+      EventDispatcher.isNative = function (name) {
+        return !!nativeEvents[name.toLowerCase()];
+      };
+      EventDispatcher.prototype.fire = function (name, args) {
+        var handlers, i, l, callback;
+        name = name.toLowerCase();
+        args = args || {};
+        args.type = name;
+        if (!args.target) {
+          args.target = this.scope;
+        }
+        if (!args.preventDefault) {
+          args.preventDefault = function () {
+            args.isDefaultPrevented = returnTrue$1;
+          };
+          args.stopPropagation = function () {
+            args.isPropagationStopped = returnTrue$1;
+          };
+          args.stopImmediatePropagation = function () {
+            args.isImmediatePropagationStopped = returnTrue$1;
+          };
+          args.isDefaultPrevented = returnFalse$1;
+          args.isPropagationStopped = returnFalse$1;
+          args.isImmediatePropagationStopped = returnFalse$1;
+        }
+        if (this.settings.beforeFire) {
+          this.settings.beforeFire(args);
+        }
+        handlers = this.bindings[name];
+        if (handlers) {
+          for (i = 0, l = handlers.length; i < l; i++) {
+            callback = handlers[i];
+            if (callback.once) {
+              this.off(name, callback.func);
+            }
+            if (args.isImmediatePropagationStopped()) {
+              args.stopPropagation();
+              return args;
+            }
+            if (callback.func.call(this.scope, args) === false) {
+              args.preventDefault();
+              return args;
+            }
+          }
+        }
+        return args;
+      };
+      EventDispatcher.prototype.on = function (name, callback, prepend, extra) {
+        var handlers, names, i;
+        if (callback === false) {
+          callback = returnFalse$1;
+        }
+        if (callback) {
+          var wrappedCallback = { func: callback };
+          if (extra) {
+            Tools.extend(wrappedCallback, extra);
+          }
+          names = name.toLowerCase().split(' ');
+          i = names.length;
+          while (i--) {
+            name = names[i];
+            handlers = this.bindings[name];
+            if (!handlers) {
+              handlers = this.bindings[name] = [];
+              this.toggleEvent(name, true);
+            }
+            if (prepend) {
+              handlers.unshift(wrappedCallback);
+            } else {
+              handlers.push(wrappedCallback);
+            }
+          }
+        }
+        return this;
+      };
+      EventDispatcher.prototype.off = function (name, callback) {
+        var i, handlers, bindingName, names, hi;
+        if (name) {
+          names = name.toLowerCase().split(' ');
+          i = names.length;
+          while (i--) {
+            name = names[i];
+            handlers = this.bindings[name];
+            if (!name) {
+              for (bindingName in this.bindings) {
+                this.toggleEvent(bindingName, false);
+                delete this.bindings[bindingName];
+              }
+              return this;
+            }
+            if (handlers) {
+              if (!callback) {
+                handlers.length = 0;
+              } else {
+                hi = handlers.length;
+                while (hi--) {
+                  if (handlers[hi].func === callback) {
+                    handlers = handlers.slice(0, hi).concat(handlers.slice(hi + 1));
+                    this.bindings[name] = handlers;
+                  }
+                }
+              }
+              if (!handlers.length) {
+                this.toggleEvent(name, false);
+                delete this.bindings[name];
+              }
+            }
+          }
+        } else {
+          for (name in this.bindings) {
+            this.toggleEvent(name, false);
+          }
+          this.bindings = {};
+        }
+        return this;
+      };
+      EventDispatcher.prototype.once = function (name, callback, prepend) {
+        return this.on(name, callback, prepend, { once: true });
+      };
+      EventDispatcher.prototype.has = function (name) {
+        name = name.toLowerCase();
+        return !(!this.bindings[name] || this.bindings[name].length === 0);
+      };
+      return EventDispatcher;
+    }();
+
+    var getEventDispatcher = function (obj) {
+      if (!obj._eventDispatcher) {
+        obj._eventDispatcher = new EventDispatcher({
+          scope: obj,
+          toggleEvent: function (name, state) {
+            if (EventDispatcher.isNative(name) && obj.toggleNativeEvent) {
+              obj.toggleNativeEvent(name, state);
+            }
+          }
+        });
+      }
+      return obj._eventDispatcher;
+    };
+    var Observable = {
+      fire: function (name, args, bubble) {
+        var self = this;
+        if (self.removed && name !== 'remove' && name !== 'detach') {
+          return args;
+        }
+        var dispatcherArgs = getEventDispatcher(self).fire(name, args);
+        if (bubble !== false && self.parent) {
+          var parent = self.parent();
+          while (parent && !dispatcherArgs.isPropagationStopped()) {
+            parent.fire(name, dispatcherArgs, false);
+            parent = parent.parent();
+          }
+        }
+        return dispatcherArgs;
+      },
+      on: function (name, callback, prepend) {
+        return getEventDispatcher(this).on(name, callback, prepend);
+      },
+      off: function (name, callback) {
+        return getEventDispatcher(this).off(name, callback);
+      },
+      once: function (name, callback) {
+        return getEventDispatcher(this).once(name, callback);
+      },
+      hasEventListeners: function (name) {
+        return getEventDispatcher(this).has(name);
+      }
+    };
+
+    var DOM$6 = DOMUtils$1.DOM;
+    var customEventRootDelegates;
+    var getEventTarget = function (editor, eventName) {
+      if (eventName === 'selectionchange') {
+        return editor.getDoc();
+      }
+      if (!editor.inline && /^mouse|touch|click|contextmenu|drop|dragover|dragend/.test(eventName)) {
+        return editor.getDoc().documentElement;
+      }
+      if (editor.settings.event_root) {
+        if (!editor.eventRoot) {
+          editor.eventRoot = DOM$6.select(editor.settings.event_root)[0];
+        }
+        return editor.eventRoot;
+      }
+      return editor.getBody();
+    };
+    var isListening = function (editor) {
+      return !editor.hidden && !editor.readonly;
+    };
+    var fireEvent = function (editor, eventName, e) {
+      if (isListening(editor)) {
+        editor.fire(eventName, e);
+      } else if (editor.readonly) {
+        e.preventDefault();
+      }
+    };
+    var bindEventDelegate = function (editor, eventName) {
+      var eventRootElm, delegate;
+      if (!editor.delegates) {
+        editor.delegates = {};
+      }
+      if (editor.delegates[eventName] || editor.removed) {
+        return;
+      }
+      eventRootElm = getEventTarget(editor, eventName);
+      if (editor.settings.event_root) {
+        if (!customEventRootDelegates) {
+          customEventRootDelegates = {};
+          editor.editorManager.on('removeEditor', function () {
+            var name;
+            if (!editor.editorManager.activeEditor) {
+              if (customEventRootDelegates) {
+                for (name in customEventRootDelegates) {
+                  editor.dom.unbind(getEventTarget(editor, name));
+                }
+                customEventRootDelegates = null;
+              }
+            }
+          });
+        }
+        if (customEventRootDelegates[eventName]) {
+          return;
+        }
+        delegate = function (e) {
+          var target = e.target;
+          var editors = editor.editorManager.get();
+          var i = editors.length;
+          while (i--) {
+            var body = editors[i].getBody();
+            if (body === target || DOM$6.isChildOf(target, body)) {
+              fireEvent(editors[i], eventName, e);
+            }
+          }
+        };
+        customEventRootDelegates[eventName] = delegate;
+        DOM$6.bind(eventRootElm, eventName, delegate);
+      } else {
+        delegate = function (e) {
+          fireEvent(editor, eventName, e);
+        };
+        DOM$6.bind(eventRootElm, eventName, delegate);
+        editor.delegates[eventName] = delegate;
+      }
+    };
+    var EditorObservable = __assign({}, Observable, {
+      bindPendingEventDelegates: function () {
+        var self = this;
+        Tools.each(self._pendingNativeEvents, function (name) {
+          bindEventDelegate(self, name);
+        });
+      },
+      toggleNativeEvent: function (name, state) {
+        var self = this;
+        if (name === 'focus' || name === 'blur') {
+          return;
+        }
+        if (state) {
+          if (self.initialized) {
+            bindEventDelegate(self, name);
+          } else {
+            if (!self._pendingNativeEvents) {
+              self._pendingNativeEvents = [name];
+            } else {
+              self._pendingNativeEvents.push(name);
+            }
+          }
+        } else if (self.initialized) {
+          self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);
+          delete self.delegates[name];
+        }
+      },
+      unbindAllNativeEvents: function () {
+        var self = this;
+        var body = self.getBody();
+        var dom = self.dom;
+        var name;
+        if (self.delegates) {
+          for (name in self.delegates) {
+            self.dom.unbind(getEventTarget(self, name), name, self.delegates[name]);
+          }
+          delete self.delegates;
+        }
+        if (!self.inline && body && dom) {
+          body.onload = null;
+          dom.unbind(self.getWin());
+          dom.unbind(self.getDoc());
+        }
+        if (dom) {
+          dom.unbind(body);
+          dom.unbind(self.getContainer());
+        }
+      }
+    });
+
+    var each$h = Tools.each, explode$3 = Tools.explode;
+    var keyCodeLookup = {
+      f1: 112,
+      f2: 113,
+      f3: 114,
+      f4: 115,
+      f5: 116,
+      f6: 117,
+      f7: 118,
+      f8: 119,
+      f9: 120,
+      f10: 121,
+      f11: 122,
+      f12: 123
+    };
+    var modifierNames = Tools.makeMap('alt,ctrl,shift,meta,access');
+    var Shortcuts = function () {
+      function Shortcuts(editor) {
+        this.shortcuts = {};
+        this.pendingPatterns = [];
+        this.editor = editor;
+        var self = this;
+        editor.on('keyup keypress keydown', function (e) {
+          if ((self.hasModifier(e) || self.isFunctionKey(e)) && !e.isDefaultPrevented()) {
+            each$h(self.shortcuts, function (shortcut) {
+              if (self.matchShortcut(e, shortcut)) {
+                self.pendingPatterns = shortcut.subpatterns.slice(0);
+                if (e.type === 'keydown') {
+                  self.executeShortcutAction(shortcut);
+                }
+                return true;
+              }
+            });
+            if (self.matchShortcut(e, self.pendingPatterns[0])) {
+              if (self.pendingPatterns.length === 1) {
+                if (e.type === 'keydown') {
+                  self.executeShortcutAction(self.pendingPatterns[0]);
+                }
+              }
+              self.pendingPatterns.shift();
+            }
+          }
+        });
+      }
+      Shortcuts.prototype.add = function (pattern, desc, cmdFunc, scope) {
+        var self = this;
+        var cmd;
+        cmd = cmdFunc;
+        if (typeof cmdFunc === 'string') {
+          cmdFunc = function () {
+            self.editor.execCommand(cmd, false, null);
+          };
+        } else if (Tools.isArray(cmd)) {
+          cmdFunc = function () {
+            self.editor.execCommand(cmd[0], cmd[1], cmd[2]);
+          };
+        }
+        each$h(explode$3(Tools.trim(pattern.toLowerCase())), function (pattern) {
+          var shortcut = self.createShortcut(pattern, desc, cmdFunc, scope);
+          self.shortcuts[shortcut.id] = shortcut;
+        });
+        return true;
+      };
+      Shortcuts.prototype.remove = function (pattern) {
+        var shortcut = this.createShortcut(pattern);
+        if (this.shortcuts[shortcut.id]) {
+          delete this.shortcuts[shortcut.id];
+          return true;
+        }
+        return false;
+      };
+      Shortcuts.prototype.parseShortcut = function (pattern) {
+        var id, key;
+        var shortcut = {};
+        each$h(explode$3(pattern, '+'), function (value) {
+          if (value in modifierNames) {
+            shortcut[value] = true;
+          } else {
+            if (/^[0-9]{2,}$/.test(value)) {
+              shortcut.keyCode = parseInt(value, 10);
+            } else {
+              shortcut.charCode = value.charCodeAt(0);
+              shortcut.keyCode = keyCodeLookup[value] || value.toUpperCase().charCodeAt(0);
+            }
+          }
+        });
+        id = [shortcut.keyCode];
+        for (key in modifierNames) {
+          if (shortcut[key]) {
+            id.push(key);
+          } else {
+            shortcut[key] = false;
+          }
+        }
+        shortcut.id = id.join(',');
+        if (shortcut.access) {
+          shortcut.alt = true;
+          if (Env.mac) {
+            shortcut.ctrl = true;
+          } else {
+            shortcut.shift = true;
+          }
+        }
+        if (shortcut.meta) {
+          if (Env.mac) {
+            shortcut.meta = true;
+          } else {
+            shortcut.ctrl = true;
+            shortcut.meta = false;
+          }
+        }
+        return shortcut;
+      };
+      Shortcuts.prototype.createShortcut = function (pattern, desc, cmdFunc, scope) {
+        var shortcuts;
+        shortcuts = Tools.map(explode$3(pattern, '>'), this.parseShortcut);
+        shortcuts[shortcuts.length - 1] = Tools.extend(shortcuts[shortcuts.length - 1], {
+          func: cmdFunc,
+          scope: scope || this.editor
+        });
+        return Tools.extend(shortcuts[0], {
+          desc: this.editor.translate(desc),
+          subpatterns: shortcuts.slice(1)
+        });
+      };
+      Shortcuts.prototype.hasModifier = function (e) {
+        return e.altKey || e.ctrlKey || e.metaKey;
+      };
+      Shortcuts.prototype.isFunctionKey = function (e) {
+        return e.type === 'keydown' && e.keyCode >= 112 && e.keyCode <= 123;
+      };
+      Shortcuts.prototype.matchShortcut = function (e, shortcut) {
+        if (!shortcut) {
+          return false;
+        }
+        if (shortcut.ctrl !== e.ctrlKey || shortcut.meta !== e.metaKey) {
+          return false;
+        }
+        if (shortcut.alt !== e.altKey || shortcut.shift !== e.shiftKey) {
+          return false;
+        }
+        if (e.keyCode === shortcut.keyCode || e.charCode && e.charCode === shortcut.charCode) {
+          e.preventDefault();
+          return true;
+        }
+        return false;
+      };
+      Shortcuts.prototype.executeShortcutAction = function (shortcut) {
+        return shortcut.func ? shortcut.func.call(shortcut.scope) : null;
+      };
+      return Shortcuts;
+    }();
+
+    var each$i = Tools.each, trim$4 = Tools.trim;
+    var queryParts = 'source protocol authority userInfo user password host port relative path directory file query anchor'.split(' ');
+    var DEFAULT_PORTS = {
+      ftp: 21,
+      http: 80,
+      https: 443,
+      mailto: 25
+    };
+    var URI = function () {
+      function URI(url, settings) {
+        url = trim$4(url);
+        this.settings = settings || {};
+        var baseUri = this.settings.base_uri;
+        var self = this;
+        if (/^([\w\-]+):([^\/]{2})/i.test(url) || /^\s*#/.test(url)) {
+          self.source = url;
+          return;
+        }
+        var isProtocolRelative = url.indexOf('//') === 0;
+        if (url.indexOf('/') === 0 && !isProtocolRelative) {
+          url = (baseUri ? baseUri.protocol || 'http' : 'http') + '://mce_host' + url;
+        }
+        if (!/^[\w\-]*:?\/\//.test(url)) {
+          var baseUrl = this.settings.base_uri ? this.settings.base_uri.path : new URI(domGlobals.document.location.href).directory;
+          if (this.settings.base_uri.protocol == '') {
+            url = '//mce_host' + self.toAbsPath(baseUrl, url);
+          } else {
+            var match = /([^#?]*)([#?]?.*)/.exec(url);
+            url = (baseUri && baseUri.protocol || 'http') + '://mce_host' + self.toAbsPath(baseUrl, match[1]) + match[2];
+          }
+        }
+        url = url.replace(/@@/g, '(mce_at)');
+        var urlMatch = /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(url);
+        each$i(queryParts, function (v, i) {
+          var part = urlMatch[i];
+          if (part) {
+            part = part.replace(/\(mce_at\)/g, '@@');
+          }
+          self[v] = part;
+        });
+        if (baseUri) {
+          if (!self.protocol) {
+            self.protocol = baseUri.protocol;
+          }
+          if (!self.userInfo) {
+            self.userInfo = baseUri.userInfo;
+          }
+          if (!self.port && self.host === 'mce_host') {
+            self.port = baseUri.port;
+          }
+          if (!self.host || self.host === 'mce_host') {
+            self.host = baseUri.host;
+          }
+          self.source = '';
+        }
+        if (isProtocolRelative) {
+          self.protocol = '';
+        }
+      }
+      URI.parseDataUri = function (uri) {
+        var type;
+        var uriComponents = decodeURIComponent(uri).split(',');
+        var matches = /data:([^;]+)/.exec(uriComponents[0]);
+        if (matches) {
+          type = matches[1];
+        }
+        return {
+          type: type,
+          data: uriComponents[1]
+        };
+      };
+      URI.getDocumentBaseUrl = function (loc) {
+        var baseUrl;
+        if (loc.protocol.indexOf('http') !== 0 && loc.protocol !== 'file:') {
+          baseUrl = loc.href;
+        } else {
+          baseUrl = loc.protocol + '//' + loc.host + loc.pathname;
+        }
+        if (/^[^:]+:\/\/\/?[^\/]+\//.test(baseUrl)) {
+          baseUrl = baseUrl.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');
+          if (!/[\/\\]$/.test(baseUrl)) {
+            baseUrl += '/';
+          }
+        }
+        return baseUrl;
+      };
+      URI.prototype.setPath = function (path) {
+        var pathMatch = /^(.*?)\/?(\w+)?$/.exec(path);
+        this.path = pathMatch[0];
+        this.directory = pathMatch[1];
+        this.file = pathMatch[2];
+        this.source = '';
+        this.getURI();
+      };
+      URI.prototype.toRelative = function (uri) {
+        var output;
+        if (uri === './') {
+          return uri;
+        }
+        var relativeUri = new URI(uri, { base_uri: this });
+        if (relativeUri.host !== 'mce_host' && this.host !== relativeUri.host && relativeUri.host || this.port !== relativeUri.port || this.protocol !== relativeUri.protocol && relativeUri.protocol !== '') {
+          return relativeUri.getURI();
+        }
+        var tu = this.getURI(), uu = relativeUri.getURI();
+        if (tu === uu || tu.charAt(tu.length - 1) === '/' && tu.substr(0, tu.length - 1) === uu) {
+          return tu;
+        }
+        output = this.toRelPath(this.path, relativeUri.path);
+        if (relativeUri.query) {
+          output += '?' + relativeUri.query;
+        }
+        if (relativeUri.anchor) {
+          output += '#' + relativeUri.anchor;
+        }
+        return output;
+      };
+      URI.prototype.toAbsolute = function (uri, noHost) {
+        var absoluteUri = new URI(uri, { base_uri: this });
+        return absoluteUri.getURI(noHost && this.isSameOrigin(absoluteUri));
+      };
+      URI.prototype.isSameOrigin = function (uri) {
+        if (this.host == uri.host && this.protocol == uri.protocol) {
+          if (this.port == uri.port) {
+            return true;
+          }
+          var defaultPort = DEFAULT_PORTS[this.protocol];
+          if (defaultPort && (this.port || defaultPort) == (uri.port || defaultPort)) {
+            return true;
+          }
+        }
+        return false;
+      };
+      URI.prototype.toRelPath = function (base, path) {
+        var items, breakPoint = 0, out = '', i, l;
+        var normalizedBase = base.substring(0, base.lastIndexOf('/')).split('/');
+        items = path.split('/');
+        if (normalizedBase.length >= items.length) {
+          for (i = 0, l = normalizedBase.length; i < l; i++) {
+            if (i >= items.length || normalizedBase[i] !== items[i]) {
+              breakPoint = i + 1;
+              break;
+            }
+          }
+        }
+        if (normalizedBase.length < items.length) {
+          for (i = 0, l = items.length; i < l; i++) {
+            if (i >= normalizedBase.length || normalizedBase[i] !== items[i]) {
+              breakPoint = i + 1;
+              break;
+            }
+          }
+        }
+        if (breakPoint === 1) {
+          return path;
+        }
+        for (i = 0, l = normalizedBase.length - (breakPoint - 1); i < l; i++) {
+          out += '../';
+        }
+        for (i = breakPoint - 1, l = items.length; i < l; i++) {
+          if (i !== breakPoint - 1) {
+            out += '/' + items[i];
+          } else {
+            out += items[i];
+          }
+        }
+        return out;
+      };
+      URI.prototype.toAbsPath = function (base, path) {
+        var i, nb = 0, o = [], tr, outPath;
+        tr = /\/$/.test(path) ? '/' : '';
+        var normalizedBase = base.split('/');
+        var normalizedPath = path.split('/');
+        each$i(normalizedBase, function (k) {
+          if (k) {
+            o.push(k);
+          }
+        });
+        normalizedBase = o;
+        for (i = normalizedPath.length - 1, o = []; i >= 0; i--) {
+          if (normalizedPath[i].length === 0 || normalizedPath[i] === '.') {
+            continue;
+          }
+          if (normalizedPath[i] === '..') {
+            nb++;
+            continue;
+          }
+          if (nb > 0) {
+            nb--;
+            continue;
+          }
+          o.push(normalizedPath[i]);
+        }
+        i = normalizedBase.length - nb;
+        if (i <= 0) {
+          outPath = o.reverse().join('/');
+        } else {
+          outPath = normalizedBase.slice(0, i).join('/') + '/' + o.reverse().join('/');
+        }
+        if (outPath.indexOf('/') !== 0) {
+          outPath = '/' + outPath;
+        }
+        if (tr && outPath.lastIndexOf('/') !== outPath.length - 1) {
+          outPath += tr;
+        }
+        return outPath;
+      };
+      URI.prototype.getURI = function (noProtoHost) {
+        if (noProtoHost === void 0) {
+          noProtoHost = false;
+        }
+        var s;
+        if (!this.source || noProtoHost) {
+          s = '';
+          if (!noProtoHost) {
+            if (this.protocol) {
+              s += this.protocol + '://';
+            } else {
+              s += '//';
+            }
+            if (this.userInfo) {
+              s += this.userInfo + '@';
+            }
+            if (this.host) {
+              s += this.host;
+            }
+            if (this.port) {
+              s += ':' + this.port;
+            }
+          }
+          if (this.path) {
+            s += this.path;
+          }
+          if (this.query) {
+            s += '?' + this.query;
+          }
+          if (this.anchor) {
+            s += '#' + this.anchor;
+          }
+          this.source = s;
+        }
+        return this.source;
+      };
+      return URI;
+    }();
+
+    var create$4 = function () {
+      var buttons = {};
+      var menuItems = {};
+      var popups = {};
+      var icons = {};
+      var contextMenus = {};
+      var contextToolbars = {};
+      var sidebars = {};
+      var add = function (collection, type) {
+        return function (name, spec) {
+          return collection[name.toLowerCase()] = merge({ type: type }, spec);
+        };
+      };
+      var addIcon = function (name, svgData) {
+        return icons[name.toLowerCase()] = svgData;
+      };
+      return {
+        addButton: add(buttons, 'button'),
+        addToggleButton: add(buttons, 'togglebutton'),
+        addMenuButton: add(buttons, 'menubutton'),
+        addSplitButton: add(buttons, 'splitbutton'),
+        addMenuItem: add(menuItems, 'menuitem'),
+        addNestedMenuItem: add(menuItems, 'nestedmenuitem'),
+        addToggleMenuItem: add(menuItems, 'togglemenuitem'),
+        addAutocompleter: add(popups, 'autocompleter'),
+        addContextMenu: add(contextMenus, 'contextmenu'),
+        addContextToolbar: add(contextToolbars, 'contexttoolbar'),
+        addContextForm: add(contextToolbars, 'contextform'),
+        addSidebar: add(sidebars, 'sidebar'),
+        addIcon: addIcon,
+        getAll: function () {
+          return {
+            buttons: buttons,
+            menuItems: menuItems,
+            icons: icons,
+            popups: popups,
+            contextMenus: contextMenus,
+            contextToolbars: contextToolbars,
+            sidebars: sidebars
+          };
+        }
+      };
+    };
+
+    var registry = function () {
+      var bridge = create$4();
+      return {
+        addAutocompleter: bridge.addAutocompleter,
+        addButton: bridge.addButton,
+        addContextForm: bridge.addContextForm,
+        addContextMenu: bridge.addContextMenu,
+        addContextToolbar: bridge.addContextToolbar,
+        addIcon: bridge.addIcon,
+        addMenuButton: bridge.addMenuButton,
+        addMenuItem: bridge.addMenuItem,
+        addNestedMenuItem: bridge.addNestedMenuItem,
+        addSidebar: bridge.addSidebar,
+        addSplitButton: bridge.addSplitButton,
+        addToggleButton: bridge.addToggleButton,
+        addToggleMenuItem: bridge.addToggleMenuItem,
+        getAll: bridge.getAll
+      };
+    };
+
+    var DOM$7 = DOMUtils$1.DOM;
+    var extend$3 = Tools.extend, each$j = Tools.each;
+    var resolve$4 = Tools.resolve;
+    var ie$2 = Env.ie;
+    var Editor = function () {
+      function Editor(id, settings, editorManager) {
+        var _this = this;
+        this.plugins = {};
+        this.contentCSS = [];
+        this.contentStyles = [];
+        this.loadedCSS = {};
+        this.isNotDirty = false;
+        this.editorManager = editorManager;
+        this.documentBaseUrl = editorManager.documentBaseURL;
+        this.baseUri = editorManager.baseURI;
+        extend$3(this, EditorObservable);
+        this.settings = getEditorSettings(this, id, this.documentBaseUrl, editorManager.defaultSettings, settings);
+        AddOnManager$1.languageLoad = this.settings.language_load;
+        AddOnManager$1.baseURL = editorManager.baseURL;
+        this.id = id;
+        this.setDirty(false);
+        this.documentBaseURI = new URI(this.settings.document_base_url, { base_uri: this.baseUri });
+        this.baseURI = this.baseUri;
+        this.inline = this.settings.inline;
+        this.suffix = editorManager.suffix;
+        this.shortcuts = new Shortcuts(this);
+        this.editorCommands = new EditorCommands(this);
+        if (this.settings.cache_suffix) {
+          Env.cacheSuffix = this.settings.cache_suffix.replace(/^[\?\&]+/, '');
+        }
+        if (this.settings.override_viewport === false) {
+          Env.overrideViewPort = false;
+        }
+        this.ui = { registry: registry() };
+        var self = this;
+        var modeInstance = create$3(self);
+        this.mode = modeInstance;
+        this.setMode = modeInstance.set;
+        editorManager.fire('SetupEditor', { editor: this });
+        this.execCallback('setup', this);
+        this.$ = DomQuery.overrideDefaults(function () {
+          return {
+            context: _this.inline ? _this.getBody() : _this.getDoc(),
+            element: _this.getBody()
+          };
+        });
+      }
+      Editor.prototype.render = function () {
+        Render.render(this);
+      };
+      Editor.prototype.focus = function (skipFocus) {
+        EditorFocus.focus(this, skipFocus);
+      };
+      Editor.prototype.hasFocus = function () {
+        return EditorFocus.hasFocus(this);
+      };
+      Editor.prototype.execCallback = function (name) {
+        var x = [];
+        for (var _i = 1; _i < arguments.length; _i++) {
+          x[_i - 1] = arguments[_i];
+        }
+        var self = this;
+        var callback = self.settings[name], scope;
+        if (!callback) {
+          return;
+        }
+        if (self.callbackLookup && (scope = self.callbackLookup[name])) {
+          callback = scope.func;
+          scope = scope.scope;
+        }
+        if (typeof callback === 'string') {
+          scope = callback.replace(/\.\w+$/, '');
+          scope = scope ? resolve$4(scope) : 0;
+          callback = resolve$4(callback);
+          self.callbackLookup = self.callbackLookup || {};
+          self.callbackLookup[name] = {
+            func: callback,
+            scope: scope
+          };
+        }
+        return callback.apply(scope || self, Array.prototype.slice.call(arguments, 1));
+      };
+      Editor.prototype.translate = function (text) {
+        return I18n.translate(text);
+      };
+      Editor.prototype.getParam = function (name, defaultVal, type) {
+        return getParam(this, name, defaultVal, type);
+      };
+      Editor.prototype.nodeChanged = function (args) {
+        this._nodeChangeDispatcher.nodeChanged(args);
+      };
+      Editor.prototype.addCommand = function (name, callback, scope) {
+        this.editorCommands.addCommand(name, callback, scope);
+      };
+      Editor.prototype.addQueryStateHandler = function (name, callback, scope) {
+        this.editorCommands.addQueryStateHandler(name, callback, scope);
+      };
+      Editor.prototype.addQueryValueHandler = function (name, callback, scope) {
+        this.editorCommands.addQueryValueHandler(name, callback, scope);
+      };
+      Editor.prototype.addShortcut = function (pattern, desc, cmdFunc, scope) {
+        this.shortcuts.add(pattern, desc, cmdFunc, scope);
+      };
+      Editor.prototype.execCommand = function (cmd, ui, value, args) {
+        return this.editorCommands.execCommand(cmd, ui, value, args);
+      };
+      Editor.prototype.queryCommandState = function (cmd) {
+        return this.editorCommands.queryCommandState(cmd);
+      };
+      Editor.prototype.queryCommandValue = function (cmd) {
+        return this.editorCommands.queryCommandValue(cmd);
+      };
+      Editor.prototype.queryCommandSupported = function (cmd) {
+        return this.editorCommands.queryCommandSupported(cmd);
+      };
+      Editor.prototype.show = function () {
+        var self = this;
+        if (self.hidden) {
+          self.hidden = false;
+          if (self.inline) {
+            self.getBody().contentEditable = 'true';
+          } else {
+            DOM$7.show(self.getContainer());
+            DOM$7.hide(self.id);
+          }
+          self.load();
+          self.fire('show');
+        }
+      };
+      Editor.prototype.hide = function () {
+        var self = this, doc = self.getDoc();
+        if (!self.hidden) {
+          if (ie$2 && doc && !self.inline) {
+            doc.execCommand('SelectAll');
+          }
+          self.save();
+          if (self.inline) {
+            self.getBody().contentEditable = 'false';
+            if (self === self.editorManager.focusedEditor) {
+              self.editorManager.focusedEditor = null;
+            }
+          } else {
+            DOM$7.hide(self.getContainer());
+            DOM$7.setStyle(self.id, 'display', self.orgDisplay);
+          }
+          self.hidden = true;
+          self.fire('hide');
+        }
+      };
+      Editor.prototype.isHidden = function () {
+        return !!this.hidden;
+      };
+      Editor.prototype.setProgressState = function (state, time) {
+        this.fire('ProgressState', {
+          state: state,
+          time: time
+        });
+      };
+      Editor.prototype.load = function (args) {
+        var self = this;
+        var elm = self.getElement(), html;
+        if (self.removed) {
+          return '';
+        }
+        if (elm) {
+          args = args || {};
+          args.load = true;
+          var value = elm.value;
+          html = self.setContent(value !== undefined ? value : elm.innerHTML, args);
+          args.element = elm;
+          if (!args.no_events) {
+            self.fire('LoadContent', args);
+          }
+          args.element = elm = null;
+          return html;
+        }
+      };
+      Editor.prototype.save = function (args) {
+        var self = this;
+        var elm = self.getElement(), html, form;
+        if (!elm || !self.initialized || self.removed) {
+          return;
+        }
+        args = args || {};
+        args.save = true;
+        args.element = elm;
+        html = args.content = self.getContent(args);
+        if (!args.no_events) {
+          self.fire('SaveContent', args);
+        }
+        if (args.format === 'raw') {
+          self.fire('RawSaveContent', args);
+        }
+        html = args.content;
+        if (!/TEXTAREA|INPUT/i.test(elm.nodeName)) {
+          if (args.is_removing || !self.inline) {
+            elm.innerHTML = html;
+          }
+          if (form = DOM$7.getParent(self.id, 'form')) {
+            each$j(form.elements, function (elm) {
+              if (elm.name === self.id) {
+                elm.value = html;
+                return false;
+              }
+            });
+          }
+        } else {
+          elm.value = html;
+        }
+        args.element = elm = null;
+        if (args.set_dirty !== false) {
+          self.setDirty(false);
+        }
+        return html;
+      };
+      Editor.prototype.setContent = function (content, args) {
+        return setContent(this, content, args);
+      };
+      Editor.prototype.getContent = function (args) {
+        return getContent(this, args);
+      };
+      Editor.prototype.insertContent = function (content, args) {
+        if (args) {
+          content = extend$3({ content: content }, args);
+        }
+        this.execCommand('mceInsertContent', false, content);
+      };
+      Editor.prototype.resetContent = function (initialContent) {
+        if (initialContent === undefined) {
+          setContent(this, this.startContent, { format: 'raw' });
+        } else {
+          setContent(this, initialContent);
+        }
+        this.undoManager.reset();
+        this.setDirty(false);
+        this.nodeChanged();
+      };
+      Editor.prototype.isDirty = function () {
+        return !this.isNotDirty;
+      };
+      Editor.prototype.setDirty = function (state) {
+        var oldState = !this.isNotDirty;
+        this.isNotDirty = !state;
+        if (state && state !== oldState) {
+          this.fire('dirty');
+        }
+      };
+      Editor.prototype.getContainer = function () {
+        var self = this;
+        if (!self.container) {
+          self.container = DOM$7.get(self.editorContainer || self.id + '_parent');
+        }
+        return self.container;
+      };
+      Editor.prototype.getContentAreaContainer = function () {
+        return this.contentAreaContainer;
+      };
+      Editor.prototype.getElement = function () {
+        if (!this.targetElm) {
+          this.targetElm = DOM$7.get(this.id);
+        }
+        return this.targetElm;
+      };
+      Editor.prototype.getWin = function () {
+        var self = this;
+        var elm;
+        if (!self.contentWindow) {
+          elm = self.iframeElement;
+          if (elm) {
+            self.contentWindow = elm.contentWindow;
+          }
+        }
+        return self.contentWindow;
+      };
+      Editor.prototype.getDoc = function () {
+        var self = this;
+        var win;
+        if (!self.contentDocument) {
+          win = self.getWin();
+          if (win) {
+            self.contentDocument = win.document;
+          }
+        }
+        return self.contentDocument;
+      };
+      Editor.prototype.getBody = function () {
+        var doc = this.getDoc();
+        return this.bodyElement || (doc ? doc.body : null);
+      };
+      Editor.prototype.convertURL = function (url, name, elm) {
+        var self = this, settings = self.settings;
+        if (settings.urlconverter_callback) {
+          return self.execCallback('urlconverter_callback', url, elm, true, name);
+        }
+        if (!settings.convert_urls || elm && elm.nodeName === 'LINK' || url.indexOf('file:') === 0 || url.length === 0) {
+          return url;
+        }
+        if (settings.relative_urls) {
+          return self.documentBaseURI.toRelative(url);
+        }
+        url = self.documentBaseURI.toAbsolute(url, settings.remove_script_host);
+        return url;
+      };
+      Editor.prototype.addVisual = function (elm) {
+        var self = this;
+        var settings = self.settings;
+        var dom = self.dom;
+        var cls;
+        elm = elm || self.getBody();
+        if (self.hasVisual === undefined) {
+          self.hasVisual = settings.visual;
+        }
+        each$j(dom.select('table,a', elm), function (elm) {
+          var value;
+          switch (elm.nodeName) {
+          case 'TABLE':
+            cls = settings.visual_table_class || 'mce-item-table';
+            value = dom.getAttrib(elm, 'border');
+            if ((!value || value === '0') && self.hasVisual) {
+              dom.addClass(elm, cls);
+            } else {
+              dom.removeClass(elm, cls);
+            }
+            return;
+          case 'A':
+            if (!dom.getAttrib(elm, 'href')) {
+              value = dom.getAttrib(elm, 'name') || elm.id;
+              cls = settings.visual_anchor_class || 'mce-item-anchor';
+              if (value && self.hasVisual) {
+                dom.addClass(elm, cls);
+              } else {
+                dom.removeClass(elm, cls);
+              }
+            }
+            return;
+          }
+        });
+        self.fire('VisualAid', {
+          element: elm,
+          hasVisual: self.hasVisual
+        });
+      };
+      Editor.prototype.remove = function () {
+        remove$6(this);
+      };
+      Editor.prototype.destroy = function (automatic) {
+        destroy(this, automatic);
+      };
+      Editor.prototype.uploadImages = function (callback) {
+        return this.editorUpload.uploadImages(callback);
+      };
+      Editor.prototype._scanForImages = function () {
+        return this.editorUpload.scanForImages();
+      };
+      Editor.prototype.addButton = function () {
+        throw new Error('editor.addButton has been removed in tinymce 5x, use editor.ui.registry.addButton or editor.ui.registry.addToggleButton or editor.ui.registry.addSplitButton instead');
+      };
+      Editor.prototype.addSidebar = function () {
+        throw new Error('editor.addSidebar has been removed in tinymce 5x, use editor.ui.registry.addSidebar instead');
+      };
+      Editor.prototype.addMenuItem = function () {
+        throw new Error('editor.addMenuItem has been removed in tinymce 5x, use editor.ui.registry.addMenuItem instead');
+      };
+      Editor.prototype.addContextToolbar = function () {
+        throw new Error('editor.addContextToolbar has been removed in tinymce 5x, use editor.ui.registry.addContextToolbar instead');
+      };
+      return Editor;
+    }();
+
+    var isEditorUIElement = function (elm) {
+      return elm.className.toString().indexOf('tox-') !== -1 || elm.className.toString().indexOf('mce-') !== -1;
+    };
+    var FocusManager = { isEditorUIElement: isEditorUIElement };
+
+    var isManualNodeChange = function (e) {
+      return e.type === 'nodechange' && e.selectionChange;
+    };
+    var registerPageMouseUp = function (editor, throttledStore) {
+      var mouseUpPage = function () {
+        throttledStore.throttle();
+      };
+      DOMUtils$1.DOM.bind(domGlobals.document, 'mouseup', mouseUpPage);
+      editor.on('remove', function () {
+        DOMUtils$1.DOM.unbind(domGlobals.document, 'mouseup', mouseUpPage);
+      });
+    };
+    var registerFocusOut = function (editor) {
+      editor.on('focusout', function () {
+        SelectionBookmark.store(editor);
+      });
+    };
+    var registerMouseUp = function (editor, throttledStore) {
+      editor.on('mouseup touchend', function (e) {
+        throttledStore.throttle();
+      });
+    };
+    var registerEditorEvents = function (editor, throttledStore) {
+      var browser = PlatformDetection$1.detect().browser;
+      if (browser.isIE()) {
+        registerFocusOut(editor);
+      } else {
+        registerMouseUp(editor, throttledStore);
+      }
+      editor.on('keyup NodeChange', function (e) {
+        if (!isManualNodeChange(e)) {
+          SelectionBookmark.store(editor);
+        }
+      });
+    };
+    var register$3 = function (editor) {
+      var throttledStore = first(function () {
+        SelectionBookmark.store(editor);
+      }, 0);
+      if (editor.inline) {
+        registerPageMouseUp(editor, throttledStore);
+      }
+      editor.on('init', function () {
+        registerEditorEvents(editor, throttledStore);
+      });
+      editor.on('remove', function () {
+        throttledStore.cancel();
+      });
+    };
+    var SelectionRestore = { register: register$3 };
+
+    var documentFocusInHandler;
+    var DOM$8 = DOMUtils$1.DOM;
+    var isEditorUIElement$1 = function (elm) {
+      return FocusManager.isEditorUIElement(elm);
+    };
+    var isUIElement = function (editor, elm) {
+      var customSelector = editor ? editor.settings.custom_ui_selector : '';
+      var parent = DOM$8.getParent(elm, function (elm) {
+        return isEditorUIElement$1(elm) || (customSelector ? editor.dom.is(elm, customSelector) : false);
+      });
+      return parent !== null;
+    };
+    var getActiveElement = function () {
+      try {
+        return domGlobals.document.activeElement;
+      } catch (ex) {
+        return domGlobals.document.body;
+      }
+    };
+    var registerEvents = function (editorManager, e) {
+      var editor = e.editor;
+      SelectionRestore.register(editor);
+      editor.on('focusin', function () {
+        var self = this;
+        var focusedEditor = editorManager.focusedEditor;
+        if (focusedEditor !== self) {
+          if (focusedEditor) {
+            focusedEditor.fire('blur', { focusedEditor: self });
+          }
+          editorManager.setActive(self);
+          editorManager.focusedEditor = self;
+          self.fire('focus', { blurredEditor: focusedEditor });
+          self.focus(true);
+        }
+      });
+      editor.on('focusout', function () {
+        var self = this;
+        Delay.setEditorTimeout(self, function () {
+          var focusedEditor = editorManager.focusedEditor;
+          if (!isUIElement(self, getActiveElement()) && focusedEditor === self) {
+            self.fire('blur', { focusedEditor: null });
+            editorManager.focusedEditor = null;
+          }
+        });
+      });
+      if (!documentFocusInHandler) {
+        documentFocusInHandler = function (e) {
+          var activeEditor = editorManager.activeEditor;
+          var target;
+          target = e.target;
+          if (activeEditor && target.ownerDocument === domGlobals.document) {
+            if (target !== domGlobals.document.body && !isUIElement(activeEditor, target) && editorManager.focusedEditor === activeEditor) {
+              activeEditor.fire('blur', { focusedEditor: null });
+              editorManager.focusedEditor = null;
+            }
+          }
+        };
+        DOM$8.bind(domGlobals.document, 'focusin', documentFocusInHandler);
+      }
+    };
+    var unregisterDocumentEvents = function (editorManager, e) {
+      if (editorManager.focusedEditor === e.editor) {
+        editorManager.focusedEditor = null;
+      }
+      if (!editorManager.activeEditor) {
+        DOM$8.unbind(domGlobals.document, 'focusin', documentFocusInHandler);
+        documentFocusInHandler = null;
+      }
+    };
+    var setup$h = function (editorManager) {
+      editorManager.on('AddEditor', curry(registerEvents, editorManager));
+      editorManager.on('RemoveEditor', curry(unregisterDocumentEvents, editorManager));
+    };
+    var FocusController = {
+      setup: setup$h,
+      isEditorUIElement: isEditorUIElement$1,
+      isUIElement: isUIElement
+    };
+
+    var DOM$9 = DOMUtils$1.DOM;
+    var explode$4 = Tools.explode, each$k = Tools.each, extend$4 = Tools.extend;
+    var instanceCounter = 0, beforeUnloadDelegate, boundGlobalEvents = false;
+    var legacyEditors = [];
+    var editors = [];
+    var isValidLegacyKey = function (id) {
+      return id !== 'length';
+    };
+    var globalEventDelegate = function (e) {
+      var type = e.type;
+      each$k(EditorManager.get(), function (editor) {
+        switch (type) {
+        case 'scroll':
+          editor.fire('ScrollWindow', e);
+          break;
+        case 'resize':
+          editor.fire('ResizeWindow', e);
+          break;
+        }
+      });
+    };
+    var toggleGlobalEvents = function (state) {
+      if (state !== boundGlobalEvents) {
+        if (state) {
+          DomQuery(window).on('resize scroll', globalEventDelegate);
+        } else {
+          DomQuery(window).off('resize scroll', globalEventDelegate);
+        }
+        boundGlobalEvents = state;
+      }
+    };
+    var removeEditorFromList = function (targetEditor) {
+      var oldEditors = editors;
+      delete legacyEditors[targetEditor.id];
+      for (var i = 0; i < legacyEditors.length; i++) {
+        if (legacyEditors[i] === targetEditor) {
+          legacyEditors.splice(i, 1);
+          break;
+        }
+      }
+      editors = filter(editors, function (editor) {
+        return targetEditor !== editor;
+      });
+      if (EditorManager.activeEditor === targetEditor) {
+        EditorManager.activeEditor = editors.length > 0 ? editors[0] : null;
+      }
+      if (EditorManager.focusedEditor === targetEditor) {
+        EditorManager.focusedEditor = null;
+      }
+      return oldEditors.length !== editors.length;
+    };
+    var purgeDestroyedEditor = function (editor) {
+      if (editor && editor.initialized && !(editor.getContainer() || editor.getBody()).parentNode) {
+        removeEditorFromList(editor);
+        editor.unbindAllNativeEvents();
+        editor.destroy(true);
+        editor.removed = true;
+        editor = null;
+      }
+      return editor;
+    };
+    var EditorManager = __assign({}, Observable, {
+      _beforeUnloadHandler: null,
+      baseURI: null,
+      baseURL: null,
+      defaultSettings: {},
+      documentBaseURL: null,
+      suffix: null,
+      $: DomQuery,
+      majorVersion: '5',
+      minorVersion: '0.5',
+      releaseDate: '2019-05-09',
+      editors: legacyEditors,
+      i18n: I18n,
+      activeEditor: null,
+      focusedEditor: null,
+      settings: {},
+      setup: function () {
+        var self = this;
+        var baseURL, documentBaseURL, suffix = '', preInit, src;
+        documentBaseURL = URI.getDocumentBaseUrl(domGlobals.document.location);
+        if (/^[^:]+:\/\/\/?[^\/]+\//.test(documentBaseURL)) {
+          documentBaseURL = documentBaseURL.replace(/[\?#].*$/, '').replace(/[\/\\][^\/]+$/, '');
+          if (!/[\/\\]$/.test(documentBaseURL)) {
+            documentBaseURL += '/';
+          }
+        }
+        preInit = window.tinymce || window.tinyMCEPreInit;
+        if (preInit) {
+          baseURL = preInit.base || preInit.baseURL;
+          suffix = preInit.suffix;
+        } else {
+          var scripts = domGlobals.document.getElementsByTagName('script');
+          for (var i = 0; i < scripts.length; i++) {
+            src = scripts[i].src;
+            var srcScript = src.substring(src.lastIndexOf('/'));
+            if (/tinymce(\.full|\.jquery|)(\.min|\.dev|)\.js/.test(src)) {
+              if (srcScript.indexOf('.min') !== -1) {
+                suffix = '.min';
+              }
+              baseURL = src.substring(0, src.lastIndexOf('/'));
+              break;
+            }
+          }
+          if (!baseURL && domGlobals.document.currentScript) {
+            src = domGlobals.document.currentScript.src;
+            if (src.indexOf('.min') !== -1) {
+              suffix = '.min';
+            }
+            baseURL = src.substring(0, src.lastIndexOf('/'));
+          }
+        }
+        self.baseURL = new URI(documentBaseURL).toAbsolute(baseURL);
+        self.documentBaseURL = documentBaseURL;
+        self.baseURI = new URI(self.baseURL);
+        self.suffix = suffix;
+        FocusController.setup(self);
+      },
+      overrideDefaults: function (defaultSettings) {
+        var baseUrl, suffix;
+        baseUrl = defaultSettings.base_url;
+        if (baseUrl) {
+          this.baseURL = new URI(this.documentBaseURL).toAbsolute(baseUrl.replace(/\/+$/, ''));
+          this.baseURI = new URI(this.baseURL);
+        }
+        suffix = defaultSettings.suffix;
+        if (defaultSettings.suffix) {
+          this.suffix = suffix;
+        }
+        this.defaultSettings = defaultSettings;
+        var pluginBaseUrls = defaultSettings.plugin_base_urls;
+        for (var name in pluginBaseUrls) {
+          AddOnManager$1.PluginManager.urls[name] = pluginBaseUrls[name];
+        }
+      },
+      init: function (settings) {
+        var self = this;
+        var result, invalidInlineTargets;
+        invalidInlineTargets = Tools.makeMap('area base basefont br col frame hr img input isindex link meta param embed source wbr track ' + 'colgroup option table tbody tfoot thead tr th td script noscript style textarea video audio iframe object menu', ' ');
+        var isInvalidInlineTarget = function (settings, elm) {
+          return settings.inline && elm.tagName.toLowerCase() in invalidInlineTargets;
+        };
+        var createId = function (elm) {
+          var id = elm.id;
+          if (!id) {
+            id = elm.name;
+            if (id && !DOM$9.get(id)) {
+              id = elm.name;
+            } else {
+              id = DOM$9.uniqueId();
+            }
+            elm.setAttribute('id', id);
+          }
+          return id;
+        };
+        var execCallback = function (name) {
+          var callback = settings[name];
+          if (!callback) {
+            return;
+          }
+          return callback.apply(self, Array.prototype.slice.call(arguments, 2));
+        };
+        var hasClass = function (elm, className) {
+          return className.constructor === RegExp ? className.test(elm.className) : DOM$9.hasClass(elm, className);
+        };
+        var findTargets = function (settings) {
+          var l, targets = [];
+          if (Env.ie && Env.ie < 11) {
+            ErrorReporter.initError('TinyMCE does not support the browser you are using. For a list of supported' + ' browsers please see: https://www.tinymce.com/docs/get-started/system-requirements/');
+            return [];
+          }
+          if (settings.types) {
+            each$k(settings.types, function (type) {
+              targets = targets.concat(DOM$9.select(type.selector));
+            });
+            return targets;
+          } else if (settings.selector) {
+            return DOM$9.select(settings.selector);
+          } else if (settings.target) {
+            return [settings.target];
+          }
+          switch (settings.mode) {
+          case 'exact':
+            l = settings.elements || '';
+            if (l.length > 0) {
+              each$k(explode$4(l), function (id) {
+                var elm;
+                if (elm = DOM$9.get(id)) {
+                  targets.push(elm);
+                } else {
+                  each$k(domGlobals.document.forms, function (f) {
+                    each$k(f.elements, function (e) {
+                      if (e.name === id) {
+                        id = 'mce_editor_' + instanceCounter++;
+                        DOM$9.setAttrib(e, 'id', id);
+                        targets.push(e);
+                      }
+                    });
+                  });
+                }
+              });
+            }
+            break;
+          case 'textareas':
+          case 'specific_textareas':
+            each$k(DOM$9.select('textarea'), function (elm) {
+              if (settings.editor_deselector && hasClass(elm, settings.editor_deselector)) {
+                return;
+              }
+              if (!settings.editor_selector || hasClass(elm, settings.editor_selector)) {
+                targets.push(elm);
+              }
+            });
+            break;
+          }
+          return targets;
+        };
+        var provideResults = function (editors) {
+          result = editors;
+        };
+        var initEditors = function () {
+          var initCount = 0;
+          var editors = [];
+          var targets;
+          var createEditor = function (id, settings, targetElm) {
+            var editor = new Editor(id, settings, self);
+            editors.push(editor);
+            editor.on('init', function () {
+              if (++initCount === targets.length) {
+                provideResults(editors);
+              }
+            });
+            editor.targetElm = editor.targetElm || targetElm;
+            editor.render();
+          };
+          DOM$9.unbind(window, 'ready', initEditors);
+          execCallback('onpageload');
+          targets = DomQuery.unique(findTargets(settings));
+          if (settings.types) {
+            each$k(settings.types, function (type) {
+              Tools.each(targets, function (elm) {
+                if (DOM$9.is(elm, type.selector)) {
+                  createEditor(createId(elm), extend$4({}, settings, type), elm);
+                  return false;
+                }
+                return true;
+              });
+            });
+            return;
+          }
+          Tools.each(targets, function (elm) {
+            purgeDestroyedEditor(self.get(elm.id));
+          });
+          targets = Tools.grep(targets, function (elm) {
+            return !self.get(elm.id);
+          });
+          if (targets.length === 0) {
+            provideResults([]);
+          } else {
+            each$k(targets, function (elm) {
+              if (isInvalidInlineTarget(settings, elm)) {
+                ErrorReporter.initError('Could not initialize inline editor on invalid inline target element', elm);
+              } else {
+                createEditor(createId(elm), settings, elm);
+              }
+            });
+          }
+        };
+        self.settings = settings;
+        DOM$9.bind(window, 'ready', initEditors);
+        return new promiseObj(function (resolve) {
+          if (result) {
+            resolve(result);
+          } else {
+            provideResults = function (editors) {
+              resolve(editors);
+            };
+          }
+        });
+      },
+      get: function (id) {
+        if (arguments.length === 0) {
+          return editors.slice(0);
+        } else if (isString(id)) {
+          return find(editors, function (editor) {
+            return editor.id === id;
+          }).getOr(null);
+        } else if (isNumber(id)) {
+          return editors[id] ? editors[id] : null;
+        } else {
+          return null;
+        }
+      },
+      add: function (editor) {
+        var self = this;
+        var existingEditor;
+        existingEditor = legacyEditors[editor.id];
+        if (existingEditor === editor) {
+          return editor;
+        }
+        if (self.get(editor.id) === null) {
+          if (isValidLegacyKey(editor.id)) {
+            legacyEditors[editor.id] = editor;
+          }
+          legacyEditors.push(editor);
+          editors.push(editor);
+        }
+        toggleGlobalEvents(true);
+        self.activeEditor = editor;
+        self.fire('AddEditor', { editor: editor });
+        if (!beforeUnloadDelegate) {
+          beforeUnloadDelegate = function () {
+            self.fire('BeforeUnload');
+          };
+          DOM$9.bind(window, 'beforeunload', beforeUnloadDelegate);
+        }
+        return editor;
+      },
+      createEditor: function (id, settings) {
+        return this.add(new Editor(id, settings, this));
+      },
+      remove: function (selector) {
+        var self = this;
+        var i, editor;
+        if (!selector) {
+          for (i = editors.length - 1; i >= 0; i--) {
+            self.remove(editors[i]);
+          }
+          return;
+        }
+        if (isString(selector)) {
+          each$k(DOM$9.select(selector), function (elm) {
+            editor = self.get(elm.id);
+            if (editor) {
+              self.remove(editor);
+            }
+          });
+          return;
+        }
+        editor = selector;
+        if (isNull(self.get(editor.id))) {
+          return null;
+        }
+        if (removeEditorFromList(editor)) {
+          self.fire('RemoveEditor', { editor: editor });
+        }
+        if (editors.length === 0) {
+          DOM$9.unbind(window, 'beforeunload', beforeUnloadDelegate);
+        }
+        editor.remove();
+        toggleGlobalEvents(editors.length > 0);
+        return editor;
+      },
+      execCommand: function (cmd, ui, value) {
+        var self = this, editor = self.get(value);
+        switch (cmd) {
+        case 'mceAddEditor':
+          if (!self.get(value)) {
+            new Editor(value, self.settings, self).render();
+          }
+          return true;
+        case 'mceRemoveEditor':
+          if (editor) {
+            editor.remove();
+          }
+          return true;
+        case 'mceToggleEditor':
+          if (!editor) {
+            self.execCommand('mceAddEditor', 0, value);
+            return true;
+          }
+          if (editor.isHidden()) {
+            editor.show();
+          } else {
+            editor.hide();
+          }
+          return true;
+        }
+        if (self.activeEditor) {
+          return self.activeEditor.execCommand(cmd, ui, value);
+        }
+        return false;
+      },
+      triggerSave: function () {
+        each$k(editors, function (editor) {
+          editor.save();
+        });
+      },
+      addI18n: function (code, items) {
+        I18n.add(code, items);
+      },
+      translate: function (text) {
+        return I18n.translate(text);
+      },
+      setActive: function (editor) {
+        var activeEditor = this.activeEditor;
+        if (this.activeEditor !== editor) {
+          if (activeEditor) {
+            activeEditor.fire('deactivate', { relatedTarget: editor });
+          }
+          editor.fire('activate', { relatedTarget: activeEditor });
+        }
+        this.activeEditor = editor;
+      }
+    });
+    EditorManager.setup();
+
+    function RangeUtils(dom) {
+      var walk = function (rng, callback) {
+        return RangeWalk.walk(dom, rng, callback);
+      };
+      var split = split$1;
+      var normalize = function (rng) {
+        return NormalizeRange.normalize(dom, rng).fold(constant(false), function (normalizedRng) {
+          rng.setStart(normalizedRng.startContainer, normalizedRng.startOffset);
+          rng.setEnd(normalizedRng.endContainer, normalizedRng.endOffset);
+          return true;
+        });
+      };
+      return {
+        walk: walk,
+        split: split,
+        normalize: normalize
+      };
+    }
+    (function (RangeUtils) {
+      RangeUtils.compareRanges = RangeCompare.isEq;
+      RangeUtils.getCaretRangeFromPoint = CaretRangeFromPoint.fromPoint;
+      RangeUtils.getSelectedNode = getSelectedNode;
+      RangeUtils.getNode = getNode;
+    }(RangeUtils || (RangeUtils = {})));
+    var RangeUtils$1 = RangeUtils;
+
+    var min = Math.min, max = Math.max, round$2 = Math.round;
+    var relativePosition = function (rect, targetRect, rel) {
+      var x, y, w, h, targetW, targetH;
+      x = targetRect.x;
+      y = targetRect.y;
+      w = rect.w;
+      h = rect.h;
+      targetW = targetRect.w;
+      targetH = targetRect.h;
+      rel = (rel || '').split('');
+      if (rel[0] === 'b') {
+        y += targetH;
+      }
+      if (rel[1] === 'r') {
+        x += targetW;
+      }
+      if (rel[0] === 'c') {
+        y += round$2(targetH / 2);
+      }
+      if (rel[1] === 'c') {
+        x += round$2(targetW / 2);
+      }
+      if (rel[3] === 'b') {
+        y -= h;
+      }
+      if (rel[4] === 'r') {
+        x -= w;
+      }
+      if (rel[3] === 'c') {
+        y -= round$2(h / 2);
+      }
+      if (rel[4] === 'c') {
+        x -= round$2(w / 2);
+      }
+      return create$5(x, y, w, h);
+    };
+    var findBestRelativePosition = function (rect, targetRect, constrainRect, rels) {
+      var pos, i;
+      for (i = 0; i < rels.length; i++) {
+        pos = relativePosition(rect, targetRect, rels[i]);
+        if (pos.x >= constrainRect.x && pos.x + pos.w <= constrainRect.w + constrainRect.x && pos.y >= constrainRect.y && pos.y + pos.h <= constrainRect.h + constrainRect.y) {
+          return rels[i];
+        }
+      }
+      return null;
+    };
+    var inflate = function (rect, w, h) {
+      return create$5(rect.x - w, rect.y - h, rect.w + w * 2, rect.h + h * 2);
+    };
+    var intersect = function (rect, cropRect) {
+      var x1, y1, x2, y2;
+      x1 = max(rect.x, cropRect.x);
+      y1 = max(rect.y, cropRect.y);
+      x2 = min(rect.x + rect.w, cropRect.x + cropRect.w);
+      y2 = min(rect.y + rect.h, cropRect.y + cropRect.h);
+      if (x2 - x1 < 0 || y2 - y1 < 0) {
+        return null;
+      }
+      return create$5(x1, y1, x2 - x1, y2 - y1);
+    };
+    var clamp$1 = function (rect, clampRect, fixedSize) {
+      var underflowX1, underflowY1, overflowX2, overflowY2, x1, y1, x2, y2, cx2, cy2;
+      x1 = rect.x;
+      y1 = rect.y;
+      x2 = rect.x + rect.w;
+      y2 = rect.y + rect.h;
+      cx2 = clampRect.x + clampRect.w;
+      cy2 = clampRect.y + clampRect.h;
+      underflowX1 = max(0, clampRect.x - x1);
+      underflowY1 = max(0, clampRect.y - y1);
+      overflowX2 = max(0, x2 - cx2);
+      overflowY2 = max(0, y2 - cy2);
+      x1 += underflowX1;
+      y1 += underflowY1;
+      if (fixedSize) {
+        x2 += underflowX1;
+        y2 += underflowY1;
+        x1 -= overflowX2;
+        y1 -= overflowY2;
+      }
+      x2 -= overflowX2;
+      y2 -= overflowY2;
+      return create$5(x1, y1, x2 - x1, y2 - y1);
+    };
+    var create$5 = function (x, y, w, h) {
+      return {
+        x: x,
+        y: y,
+        w: w,
+        h: h
+      };
+    };
+    var fromClientRect = function (clientRect) {
+      return create$5(clientRect.left, clientRect.top, clientRect.width, clientRect.height);
+    };
+    var Rect = {
+      inflate: inflate,
+      relativePosition: relativePosition,
+      findBestRelativePosition: findBestRelativePosition,
+      intersect: intersect,
+      clamp: clamp$1,
+      create: create$5,
+      fromClientRect: fromClientRect
+    };
+
+    var each$l = Tools.each, extend$5 = Tools.extend;
+    var extendClass, initializing;
+    var Class = function () {
+    };
+    Class.extend = extendClass = function (prop) {
+      var self = this;
+      var _super = self.prototype;
+      var prototype, name, member;
+      var Class = function () {
+        var i, mixins, mixin;
+        var self = this;
+        if (!initializing) {
+          if (self.init) {
+            self.init.apply(self, arguments);
+          }
+          mixins = self.Mixins;
+          if (mixins) {
+            i = mixins.length;
+            while (i--) {
+              mixin = mixins[i];
+              if (mixin.init) {
+                mixin.init.apply(self, arguments);
+              }
+            }
+          }
+        }
+      };
+      var dummy = function () {
+        return this;
+      };
+      var createMethod = function (name, fn) {
+        return function () {
+          var self = this;
+          var tmp = self._super;
+          var ret;
+          self._super = _super[name];
+          ret = fn.apply(self, arguments);
+          self._super = tmp;
+          return ret;
+        };
+      };
+      initializing = true;
+      prototype = new self();
+      initializing = false;
+      if (prop.Mixins) {
+        each$l(prop.Mixins, function (mixin) {
+          for (var name_1 in mixin) {
+            if (name_1 !== 'init') {
+              prop[name_1] = mixin[name_1];
+            }
+          }
+        });
+        if (_super.Mixins) {
+          prop.Mixins = _super.Mixins.concat(prop.Mixins);
+        }
+      }
+      if (prop.Methods) {
+        each$l(prop.Methods.split(','), function (name) {
+          prop[name] = dummy;
+        });
+      }
+      if (prop.Properties) {
+        each$l(prop.Properties.split(','), function (name) {
+          var fieldName = '_' + name;
+          prop[name] = function (value) {
+            var self = this;
+            if (value !== undefined) {
+              self[fieldName] = value;
+              return self;
+            }
+            return self[fieldName];
+          };
+        });
+      }
+      if (prop.Statics) {
+        each$l(prop.Statics, function (func, name) {
+          Class[name] = func;
+        });
+      }
+      if (prop.Defaults && _super.Defaults) {
+        prop.Defaults = extend$5({}, _super.Defaults, prop.Defaults);
+      }
+      for (name in prop) {
+        member = prop[name];
+        if (typeof member === 'function' && _super[name]) {
+          prototype[name] = createMethod(name, member);
+        } else {
+          prototype[name] = member;
+        }
+      }
+      Class.prototype = prototype;
+      Class.constructor = Class;
+      Class.extend = extendClass;
+      return Class;
+    };
+
+    var min$1 = Math.min, max$1 = Math.max, round$3 = Math.round;
+    var Color = function (value) {
+      var self = {};
+      var r = 0, g = 0, b = 0;
+      var rgb2hsv = function (r, g, b) {
+        var h, s, v, d, minRGB, maxRGB;
+        h = 0;
+        s = 0;
+        v = 0;
+        r = r / 255;
+        g = g / 255;
+        b = b / 255;
+        minRGB = min$1(r, min$1(g, b));
+        maxRGB = max$1(r, max$1(g, b));
+        if (minRGB === maxRGB) {
+          v = minRGB;
+          return {
+            h: 0,
+            s: 0,
+            v: v * 100
+          };
+        }
+        d = r === minRGB ? g - b : b === minRGB ? r - g : b - r;
+        h = r === minRGB ? 3 : b === minRGB ? 1 : 5;
+        h = 60 * (h - d / (maxRGB - minRGB));
+        s = (maxRGB - minRGB) / maxRGB;
+        v = maxRGB;
+        return {
+          h: round$3(h),
+          s: round$3(s * 100),
+          v: round$3(v * 100)
+        };
+      };
+      var hsvToRgb = function (hue, saturation, brightness) {
+        var side, chroma, x, match;
+        hue = (parseInt(hue, 10) || 0) % 360;
+        saturation = parseInt(saturation, 10) / 100;
+        brightness = parseInt(brightness, 10) / 100;
+        saturation = max$1(0, min$1(saturation, 1));
+        brightness = max$1(0, min$1(brightness, 1));
+        if (saturation === 0) {
+          r = g = b = round$3(255 * brightness);
+          return;
+        }
+        side = hue / 60;
+        chroma = brightness * saturation;
+        x = chroma * (1 - Math.abs(side % 2 - 1));
+        match = brightness - chroma;
+        switch (Math.floor(side)) {
+        case 0:
+          r = chroma;
+          g = x;
+          b = 0;
+          break;
+        case 1:
+          r = x;
+          g = chroma;
+          b = 0;
+          break;
+        case 2:
+          r = 0;
+          g = chroma;
+          b = x;
+          break;
+        case 3:
+          r = 0;
+          g = x;
+          b = chroma;
+          break;
+        case 4:
+          r = x;
+          g = 0;
+          b = chroma;
+          break;
+        case 5:
+          r = chroma;
+          g = 0;
+          b = x;
+          break;
+        default:
+          r = g = b = 0;
+        }
+        r = round$3(255 * (r + match));
+        g = round$3(255 * (g + match));
+        b = round$3(255 * (b + match));
+      };
+      var toHex = function () {
+        var hex = function (val) {
+          val = parseInt(val, 10).toString(16);
+          return val.length > 1 ? val : '0' + val;
+        };
+        return '#' + hex(r) + hex(g) + hex(b);
+      };
+      var toRgb = function () {
+        return {
+          r: r,
+          g: g,
+          b: b
+        };
+      };
+      var toHsv = function () {
+        return rgb2hsv(r, g, b);
+      };
+      var parse = function (value) {
+        var matches;
+        if (typeof value === 'object') {
+          if ('r' in value) {
+            r = value.r;
+            g = value.g;
+            b = value.b;
+          } else if ('v' in value) {
+            hsvToRgb(value.h, value.s, value.v);
+          }
+        } else {
+          if (matches = /rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)[^\)]*\)/gi.exec(value)) {
+            r = parseInt(matches[1], 10);
+            g = parseInt(matches[2], 10);
+            b = parseInt(matches[3], 10);
+          } else if (matches = /#([0-F]{2})([0-F]{2})([0-F]{2})/gi.exec(value)) {
+            r = parseInt(matches[1], 16);
+            g = parseInt(matches[2], 16);
+            b = parseInt(matches[3], 16);
+          } else if (matches = /#([0-F])([0-F])([0-F])/gi.exec(value)) {
+            r = parseInt(matches[1] + matches[1], 16);
+            g = parseInt(matches[2] + matches[2], 16);
+            b = parseInt(matches[3] + matches[3], 16);
+          }
+        }
+        r = r < 0 ? 0 : r > 255 ? 255 : r;
+        g = g < 0 ? 0 : g > 255 ? 255 : g;
+        b = b < 0 ? 0 : b > 255 ? 255 : b;
+        return self;
+      };
+      if (value) {
+        parse(value);
+      }
+      self.toRgb = toRgb;
+      self.toHsv = toHsv;
+      self.toHex = toHex;
+      self.parse = parse;
+      return self;
+    };
+
+    var serialize = function (obj) {
+      var data = JSON.stringify(obj);
+      if (!isString(data)) {
+        return data;
+      }
+      return data.replace(/[\u0080-\uFFFF]/g, function (match) {
+        var hexCode = match.charCodeAt(0).toString(16);
+        return '\\u' + '0000'.substring(hexCode.length) + hexCode;
+      });
+    };
+    var JSONUtils = {
+      serialize: serialize,
+      parse: function (text) {
+        try {
+          return JSON.parse(text);
+        } catch (ex) {
+        }
+      }
+    };
+
+    var JSONP = {
+      callbacks: {},
+      count: 0,
+      send: function (settings) {
+        var self = this, dom = DOMUtils$1.DOM, count = settings.count !== undefined ? settings.count : self.count;
+        var id = 'tinymce_jsonp_' + count;
+        self.callbacks[count] = function (json) {
+          dom.remove(id);
+          delete self.callbacks[count];
+          settings.callback(json);
+        };
+        dom.add(dom.doc.body, 'script', {
+          id: id,
+          src: settings.url,
+          type: 'text/javascript'
+        });
+        self.count++;
+      }
+    };
+
+    var XHR = __assign({}, Observable, {
+      send: function (settings) {
+        var xhr, count = 0;
+        var ready = function () {
+          if (!settings.async || xhr.readyState === 4 || count++ > 10000) {
+            if (settings.success && count < 10000 && xhr.status === 200) {
+              settings.success.call(settings.success_scope, '' + xhr.responseText, xhr, settings);
+            } else if (settings.error) {
+              settings.error.call(settings.error_scope, count > 10000 ? 'TIMED_OUT' : 'GENERAL', xhr, settings);
+            }
+            xhr = null;
+          } else {
+            Delay.setTimeout(ready, 10);
+          }
+        };
+        settings.scope = settings.scope || this;
+        settings.success_scope = settings.success_scope || settings.scope;
+        settings.error_scope = settings.error_scope || settings.scope;
+        settings.async = settings.async !== false;
+        settings.data = settings.data || '';
+        XHR.fire('beforeInitialize', { settings: settings });
+        xhr = XMLHttpRequest();
+        if (xhr) {
+          if (xhr.overrideMimeType) {
+            xhr.overrideMimeType(settings.content_type);
+          }
+          xhr.open(settings.type || (settings.data ? 'POST' : 'GET'), settings.url, settings.async);
+          if (settings.crossDomain) {
+            xhr.withCredentials = true;
+          }
+          if (settings.content_type) {
+            xhr.setRequestHeader('Content-Type', settings.content_type);
+          }
+          if (settings.requestheaders) {
+            Tools.each(settings.requestheaders, function (header) {
+              xhr.setRequestHeader(header.key, header.value);
+            });
+          }
+          xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
+          xhr = XHR.fire('beforeSend', {
+            xhr: xhr,
+            settings: settings
+          }).xhr;
+          xhr.send(settings.data);
+          if (!settings.async) {
+            return ready();
+          }
+          Delay.setTimeout(ready, 10);
+        }
+      }
+    });
+
+    var extend$6 = Tools.extend;
+    var JSONRequest = function () {
+      function JSONRequest(settings) {
+        this.settings = extend$6({}, settings);
+        this.count = 0;
+      }
+      JSONRequest.sendRPC = function (o) {
+        return new JSONRequest().send(o);
+      };
+      JSONRequest.prototype.send = function (args) {
+        var ecb = args.error, scb = args.success;
+        var xhrArgs = extend$6(this.settings, args);
+        xhrArgs.success = function (c, x) {
+          c = JSONUtils.parse(c);
+          if (typeof c === 'undefined') {
+            c = { error: 'JSON Parse error.' };
+          }
+          if (c.error) {
+            ecb.call(xhrArgs.error_scope || xhrArgs.scope, c.error, x);
+          } else {
+            scb.call(xhrArgs.success_scope || xhrArgs.scope, c.result);
+          }
+        };
+        xhrArgs.error = function (ty, x) {
+          if (ecb) {
+            ecb.call(xhrArgs.error_scope || xhrArgs.scope, ty, x);
+          }
+        };
+        xhrArgs.data = JSONUtils.serialize({
+          id: args.id || 'c' + this.count++,
+          method: args.method,
+          params: args.params
+        });
+        xhrArgs.content_type = 'application/json';
+        XHR.send(xhrArgs);
+      };
+      return JSONRequest;
+    }();
+
+    var create$6 = function () {
+      return function () {
+        var data = {};
+        var keys = [];
+        var storage = {
+          getItem: function (key) {
+            var item = data[key];
+            return item ? item : null;
+          },
+          setItem: function (key, value) {
+            keys.push(key);
+            data[key] = String(value);
+          },
+          key: function (index) {
+            return keys[index];
+          },
+          removeItem: function (key) {
+            keys = keys.filter(function (k) {
+              return k === key;
+            });
+            delete data[key];
+          },
+          clear: function () {
+            keys = [];
+            data = {};
+          },
+          length: 0
+        };
+        Object.defineProperty(storage, 'length', {
+          get: function () {
+            return keys.length;
+          },
+          configurable: false,
+          enumerable: false
+        });
+        return storage;
+      }();
+    };
+
+    var localStorage;
+    try {
+      localStorage = domGlobals.window.localStorage;
+    } catch (e) {
+      localStorage = create$6();
+    }
+    var LocalStorage = localStorage;
+
+    var publicApi = {
+      geom: { Rect: Rect },
+      util: {
+        Promise: promiseObj,
+        Delay: Delay,
+        Tools: Tools,
+        VK: VK,
+        URI: URI,
+        Class: Class,
+        EventDispatcher: EventDispatcher,
+        Observable: Observable,
+        I18n: I18n,
+        XHR: XHR,
+        JSON: JSONUtils,
+        JSONRequest: JSONRequest,
+        JSONP: JSONP,
+        LocalStorage: LocalStorage,
+        Color: Color
+      },
+      dom: {
+        EventUtils: EventUtils,
+        Sizzle: Sizzle,
+        DomQuery: DomQuery,
+        TreeWalker: TreeWalker,
+        DOMUtils: DOMUtils$1,
+        ScriptLoader: ScriptLoader,
+        RangeUtils: RangeUtils$1,
+        Serializer: Serializer$1,
+        ControlSelection: ControlSelection,
+        BookmarkManager: BookmarkManager$1,
+        Selection: Selection,
+        Event: EventUtils.Event
+      },
+      html: {
+        Styles: Styles,
+        Entities: Entities,
+        Node: Node$1,
+        Schema: Schema,
+        SaxParser: SaxParser$1,
+        DomParser: DomParser,
+        Writer: Writer,
+        Serializer: Serializer
+      },
+      Env: Env,
+      AddOnManager: AddOnManager$1,
+      Annotator: Annotator,
+      Formatter: Formatter,
+      UndoManager: UndoManager,
+      EditorCommands: EditorCommands,
+      WindowManager: WindowManager,
+      NotificationManager: NotificationManager,
+      EditorObservable: EditorObservable,
+      Shortcuts: Shortcuts,
+      Editor: Editor,
+      FocusManager: FocusManager,
+      EditorManager: EditorManager,
+      DOM: DOMUtils$1.DOM,
+      ScriptLoader: ScriptLoader.ScriptLoader,
+      PluginManager: AddOnManager$1.PluginManager,
+      ThemeManager: AddOnManager$1.ThemeManager,
+      IconManager: IconManager,
+      trim: Tools.trim,
+      isArray: Tools.isArray,
+      is: Tools.is,
+      toArray: Tools.toArray,
+      makeMap: Tools.makeMap,
+      each: Tools.each,
+      map: Tools.map,
+      grep: Tools.grep,
+      inArray: Tools.inArray,
+      extend: Tools.extend,
+      create: Tools.create,
+      walk: Tools.walk,
+      createNS: Tools.createNS,
+      resolve: Tools.resolve,
+      explode: Tools.explode,
+      _addCacheSuffix: Tools._addCacheSuffix,
+      isOpera: Env.opera,
+      isWebKit: Env.webkit,
+      isIE: Env.ie,
+      isGecko: Env.gecko,
+      isMac: Env.mac
+    };
+    var tinymce = Tools.extend(EditorManager, publicApi);
+
+    var exportToModuleLoaders = function (tinymce) {
+      if (typeof module === 'object') {
+        try {
+          module.exports = tinymce;
+        } catch (_) {
+        }
+      }
+    };
+    var exportToWindowGlobal = function (tinymce) {
+      window.tinymce = tinymce;
+      window.tinyMCE = tinymce;
+    };
+    exportToWindowGlobal(tinymce);
+    exportToModuleLoaders(tinymce);
+
+}(window));
+})();
+
+
+
+/**
+ * Copyright (c) Tiny Technologies, Inc. All rights reserved.
+ * Licensed under the LGPL or a commercial license.
+ * For LGPL see License.txt in the project root for license information.
+ * For commercial licenses see https://www.tiny.cloud/
+ */
+/**
+ * Jquery integration plugin.
+ *
+ * @class tinymce.core.JqueryIntegration
+ * @private
+ */
+
+!function(){var f,c,u,p,d,s=[];d="undefined"!=typeof global?global:window,p=d.jQuery;var v=function(){
+// Reference to tinymce needs to be lazily evaluated since tinymce
+// might be loaded through the compressor or other means
+return d.tinymce};p.fn.tinymce=function(o){var e,t,i,l=this,r="";
+// No match then just ignore the call
+if(!l.length)return l;
+// Get editor instance
+if(!o)return v()?v().get(l[0].id):null;l.css("visibility","hidden");// Hide textarea to avoid flicker
+var n=function(){var a=[],c=0;
+// Apply patches to the jQuery object, only once
+u||(m(),u=!0),
+// Create an editor instance for each matched node
+l.each(function(e,t){var n,i=t.id,r=o.oninit;
+// Generate unique id for target element if needed
+i||(t.id=i=v().DOM.uniqueId()),
+// Only init the editor once
+v().get(i)||(
+// Create editor instance and render it
+n=v().createEditor(i,o),a.push(n),n.on("init",function(){var e,t=r;l.css("visibility",""),
+// Run this if the oninit setting is defined
+// this logic will fire the oninit callback ones each
+// matched editor instance is initialized
+r&&++c==a.length&&("string"==typeof t&&(e=-1===t.indexOf(".")?null:v().resolve(t.replace(/\.\w+$/,"")),t=v().resolve(t)),
+// Call the oninit function with the object
+t.apply(e||v(),a))}))}),
+// Render the editor instances in a separate loop since we
+// need to have the full editors array used in the onInit calls
+p.each(a,function(e,t){t.render()})};
+// Load TinyMCE on demand, if we need to
+if(d.tinymce||c||!(e=o.script_url))
+// Delay the init call until tinymce is loaded
+1===c?s.push(n):n();else{c=1,t=e.substring(0,e.lastIndexOf("/")),
+// Check if it's a dev/src version they want to load then
+// make sure that all plugins, themes etc are loaded in source mode as well
+-1!=e.indexOf(".min")&&(r=".min"),
+// Setup tinyMCEPreInit object this will later be used by the TinyMCE
+// core script to locate other resources like CSS files, dialogs etc
+// You can also predefined a tinyMCEPreInit object and then it will use that instead
+d.tinymce=d.tinyMCEPreInit||{base:t,suffix:r},
+// url contains gzip then we assume it's a compressor
+-1!=e.indexOf("gzip")&&(i=o.language||"en",e=e+(/\?/.test(e)?"&":"?")+"js=true&core=true&suffix="+escape(r)+"&themes="+escape(o.theme||"modern")+"&plugins="+escape(o.plugins||"")+"&languages="+(i||""),
+// Check if compressor script is already loaded otherwise setup a basic one
+d.tinyMCE_GZ||(d.tinyMCE_GZ={start:function(){var n=function(e){v().ScriptLoader.markDone(v().baseURI.toAbsolute(e))};
+// Add core languages
+n("langs/"+i+".js"),
+// Add themes with languages
+n("themes/"+o.theme+"/theme"+r+".js"),n("themes/"+o.theme+"/langs/"+i+".js"),
+// Add plugins with languages
+p.each(o.plugins.split(","),function(e,t){t&&(n("plugins/"+t+"/plugin"+r+".js"),n("plugins/"+t+"/langs/"+i+".js"))})},end:function(){}}));var a=document.createElement("script");a.type="text/javascript",a.onload=a.onreadystatechange=function(e){e=e||window.event,2===c||"load"!=e.type&&!/complete|loaded/.test(a.readyState)||(v().dom.Event.domLoaded=1,c=2,
+// Execute callback after mainscript has been loaded and before the initialization occurs
+o.script_loaded&&o.script_loaded(),n(),p.each(s,function(e,t){t()}))},a.src=e,document.body.appendChild(a)}return l},
+// Add :tinymce pseudo selector this will select elements that has been converted into editor instances
+// it's now possible to use things like $('*:tinymce') to get all TinyMCE bound elements.
+p.extend(p.expr[":"],{tinymce:function(e){var t;return!!(e.id&&"tinymce"in d&&(t=v().get(e.id))&&t.editorManager===v())}});
+// This function patches internal jQuery functions so that if
+// you for example remove an div element containing an editor it's
+// automatically destroyed by the TinyMCE API
+var m=function(){
+// Removes any child editor instances by looking for editor wrapper elements
+var r=function(e){
+// If the function is remove
+"remove"===e&&this.each(function(e,t){var n=l(t);n&&n.remove()}),this.find("span.mceEditor,div.mceEditor").each(function(e,t){var n=v().get(t.id.replace(/_parent$/,""));n&&n.remove()})},o=function(i){var e,t=this;
+// Handle set value
+/*jshint eqnull:true */if(null!=i)r.call(t),
+// Saves the contents before get/set value of textarea/div
+t.each(function(e,t){var n;(n=v().get(t.id))&&n.setContent(i)});else if(0<t.length&&(e=v().get(t[0].id)))return e.getContent()},l=function(e){var t=null;return e&&e.id&&d.tinymce&&(t=v().get(e.id)),t},u=function(e){return!!(e&&e.length&&d.tinymce&&e.is(":tinymce"))},s={};
+// Loads or saves contents from/to textarea if the value
+// argument is defined it will set the TinyMCE internal contents
+// Patch some setter/getter functions these will
+// now be able to set/get the contents of editor instances for
+// example $('#editorid').html('Content'); will update the TinyMCE iframe instance
+p.each(["text","html","val"],function(e,t){var a=s[t]=p.fn[t],c="text"===t;p.fn[t]=function(e){var t=this;if(!u(t))return a.apply(t,arguments);if(e!==f)return o.call(t.filter(":tinymce"),e),a.apply(t.not(":tinymce"),arguments),t;// return original set for chaining
+var i="",r=arguments;return(c?t:t.eq(0)).each(function(e,t){var n=l(t);i+=n?c?n.getContent().replace(/<(?:"[^"]*"|'[^']*'|[^'">])*>/g,""):n.getContent({save:!0}):a.apply(p(t),r)}),i}}),
+// Makes it possible to use $('#id').append("content"); to append contents to the TinyMCE editor iframe
+p.each(["append","prepend"],function(e,t){var n=s[t]=p.fn[t],r="prepend"===t;p.fn[t]=function(i){var e=this;return u(e)?i!==f?("string"==typeof i&&e.filter(":tinymce").each(function(e,t){var n=l(t);n&&n.setContent(r?i+n.getContent():n.getContent()+i)}),n.apply(e.not(":tinymce"),arguments),e):void 0:n.apply(e,arguments)}}),
+// Makes sure that the editor instance gets properly destroyed when the parent element is removed
+p.each(["remove","replaceWith","replaceAll","empty"],function(e,t){var n=s[t]=p.fn[t];p.fn[t]=function(){return r.call(this,t),n.apply(this,arguments)}}),s.attr=p.fn.attr,
+// Makes sure that $('#tinymce_id').attr('value') gets the editors current HTML contents
+p.fn.attr=function(e,t){var n=this,i=arguments;if(!e||"value"!==e||!u(n))return s.attr.apply(n,i);if(t!==f)return o.call(n.filter(":tinymce"),t),s.attr.apply(n.not(":tinymce"),i),n;// return original set for chaining
+var r=n[0],a=l(r);return a?a.getContent({save:!0}):s.attr.apply(p(r),i)}}}();
+
+
+/*!
+ * Modernizr v2.7.1
+ * www.modernizr.com
+ *
+ * Copyright (c) Faruk Ates, Paul Irish, Alex Sexton
+ * Available under the BSD and MIT licenses: www.modernizr.com/license/
+ */
+
+/*
+ * Modernizr tests which native CSS3 and HTML5 features are available in
+ * the current UA and makes the results available to you in two ways:
+ * as properties on a global Modernizr object, and as classes on the
+ * <html> element. This information allows you to progressively enhance
+ * your pages with a granular level of control over the experience.
+ *
+ * Modernizr has an optional (not included) conditional resource loader
+ * called Modernizr.load(), based on Yepnope.js (yepnopejs.com).
+ * To get a build that includes Modernizr.load(), as well as choosing
+ * which tests to include, go to www.modernizr.com/download/
+ *
+ * Authors        Faruk Ates, Paul Irish, Alex Sexton
+ * Contributors   Ryan Seddon, Ben Alman
+ */
+
+
+window.Modernizr = (function( window, document, undefined ) {
+
+    var version = '2.7.1',
+
+    Modernizr = {},
+
+    /*>>cssclasses*/
+    // option for enabling the HTML classes to be added
+    enableClasses = true,
+    /*>>cssclasses*/
+
+    docElement = document.documentElement,
+
+    /**
+     * Create our "modernizr" element that we do most feature tests on.
+     */
+    mod = 'modernizr',
+    modElem = document.createElement(mod),
+    mStyle = modElem.style,
+
+    /**
+     * Create the input element for various Web Forms feature tests.
+     */
+    inputElem /*>>inputelem*/ = document.createElement('input') /*>>inputelem*/ ,
+
+    /*>>smile*/
+    smile = ':)',
+    /*>>smile*/
+
+    toString = {}.toString,
+
+    // TODO :: make the prefixes more granular
+    /*>>prefixes*/
+    // List of property values to set for css tests. See ticket #21
+    prefixes = ' -webkit- -moz- -o- -ms- '.split(' '),
+    /*>>prefixes*/
+
+    /*>>domprefixes*/
+    // Following spec is to expose vendor-specific style properties as:
+    //   elem.style.WebkitBorderRadius
+    // and the following would be incorrect:
+    //   elem.style.webkitBorderRadius
+
+    // Webkit ghosts their properties in lowercase but Opera & Moz do not.
+    // Microsoft uses a lowercase `ms` instead of the correct `Ms` in IE8+
+    //   erik.eae.net/archives/2008/03/10/21.48.10/
+
+    // More here: github.com/Modernizr/Modernizr/issues/issue/21
+    omPrefixes = 'Webkit Moz O ms',
+
+    cssomPrefixes = omPrefixes.split(' '),
+
+    domPrefixes = omPrefixes.toLowerCase().split(' '),
+    /*>>domprefixes*/
+
+    /*>>ns*/
+    ns = {'svg': 'http://www.w3.org/2000/svg'},
+    /*>>ns*/
+
+    tests = {},
+    inputs = {},
+    attrs = {},
+
+    classes = [],
+
+    slice = classes.slice,
+
+    featureName, // used in testing loop
+
+
+    /*>>teststyles*/
+    // Inject element with style element and some CSS rules
+    injectElementWithStyles = function( rule, callback, nodes, testnames ) {
+
+      var style, ret, node, docOverflow,
+          div = document.createElement('div'),
+          // After page load injecting a fake body doesn't work so check if body exists
+          body = document.body,
+          // IE6 and 7 won't return offsetWidth or offsetHeight unless it's in the body element, so we fake it.
+          fakeBody = body || document.createElement('body');
+
+      if ( parseInt(nodes, 10) ) {
+          // In order not to give false positives we create a node for each test
+          // This also allows the method to scale for unspecified uses
+          while ( nodes-- ) {
+              node = document.createElement('div');
+              node.id = testnames ? testnames[nodes] : mod + (nodes + 1);
+              div.appendChild(node);
+          }
+      }
+
+      // <style> elements in IE6-9 are considered 'NoScope' elements and therefore will be removed
+      // when injected with innerHTML. To get around this you need to prepend the 'NoScope' element
+      // with a 'scoped' element, in our case the soft-hyphen entity as it won't mess with our measurements.
+      // msdn.microsoft.com/en-us/library/ms533897%28VS.85%29.aspx
+      // Documents served as xml will throw if using &shy; so use xml friendly encoded version. See issue #277
+      style = ['&#173;','<style id="s', mod, '">', rule, '</style>'].join('');
+      div.id = mod;
+      // IE6 will false positive on some tests due to the style element inside the test div somehow interfering offsetHeight, so insert it into body or fakebody.
+      // Opera will act all quirky when injecting elements in documentElement when page is served as xml, needs fakebody too. #270
+      (body ? div : fakeBody).innerHTML += style;
+      fakeBody.appendChild(div);
+      if ( !body ) {
+          //avoid crashing IE8, if background image is used
+          fakeBody.style.background = '';
+          //Safari 5.13/5.1.4 OSX stops loading if ::-webkit-scrollbar is used and scrollbars are visible
+          fakeBody.style.overflow = 'hidden';
+          docOverflow = docElement.style.overflow;
+          docElement.style.overflow = 'hidden';
+          docElement.appendChild(fakeBody);
+      }
+
+      ret = callback(div, rule);
+      // If this is done after page load we don't want to remove the body so check if body exists
+      if ( !body ) {
+          fakeBody.parentNode.removeChild(fakeBody);
+          docElement.style.overflow = docOverflow;
+      } else {
+          div.parentNode.removeChild(div);
+      }
+
+      return !!ret;
+
+    },
+    /*>>teststyles*/
+
+    /*>>mq*/
+    // adapted from matchMedia polyfill
+    // by Scott Jehl and Paul Irish
+    // gist.github.com/786768
+    testMediaQuery = function( mq ) {
+
+      var matchMedia = window.matchMedia || window.msMatchMedia;
+      if ( matchMedia ) {
+        return matchMedia(mq).matches;
+      }
+
+      var bool;
+
+      injectElementWithStyles('@media ' + mq + ' { #' + mod + ' { position: absolute; } }', function( node ) {
+        bool = (window.getComputedStyle ?
+                  getComputedStyle(node, null) :
+                  node.currentStyle)['position'] == 'absolute';
+      });
+
+      return bool;
+
+     },
+     /*>>mq*/
+
+
+    /*>>hasevent*/
+    //
+    // isEventSupported determines if a given element supports the given event
+    // kangax.github.com/iseventsupported/
+    //
+    // The following results are known incorrects:
+    //   Modernizr.hasEvent("webkitTransitionEnd", elem) // false negative
+    //   Modernizr.hasEvent("textInput") // in Webkit. github.com/Modernizr/Modernizr/issues/333
+    //   ...
+    isEventSupported = (function() {
+
+      var TAGNAMES = {
+        'select': 'input', 'change': 'input',
+        'submit': 'form', 'reset': 'form',
+        'error': 'img', 'load': 'img', 'abort': 'img'
+      };
+
+      function isEventSupported( eventName, element ) {
+
+        element = element || document.createElement(TAGNAMES[eventName] || 'div');
+        eventName = 'on' + eventName;
+
+        // When using `setAttribute`, IE skips "unload", WebKit skips "unload" and "resize", whereas `in` "catches" those
+        var isSupported = eventName in element;
+
+        if ( !isSupported ) {
+          // If it has no `setAttribute` (i.e. doesn't implement Node interface), try generic element
+          if ( !element.setAttribute ) {
+            element = document.createElement('div');
+          }
+          if ( element.setAttribute && element.removeAttribute ) {
+            element.setAttribute(eventName, '');
+            isSupported = is(element[eventName], 'function');
+
+            // If property was created, "remove it" (by setting value to `undefined`)
+            if ( !is(element[eventName], 'undefined') ) {
+              element[eventName] = undefined;
+            }
+            element.removeAttribute(eventName);
+          }
+        }
+
+        element = null;
+        return isSupported;
+      }
+      return isEventSupported;
+    })(),
+    /*>>hasevent*/
+
+    // TODO :: Add flag for hasownprop ? didn't last time
+
+    // hasOwnProperty shim by kangax needed for Safari 2.0 support
+    _hasOwnProperty = ({}).hasOwnProperty, hasOwnProp;
+
+    if ( !is(_hasOwnProperty, 'undefined') && !is(_hasOwnProperty.call, 'undefined') ) {
+      hasOwnProp = function (object, property) {
+        return _hasOwnProperty.call(object, property);
+      };
+    }
+    else {
+      hasOwnProp = function (object, property) { /* yes, this can give false positives/negatives, but most of the time we don't care about those */
+        return ((property in object) && is(object.constructor.prototype[property], 'undefined'));
+      };
+    }
+
+    // Adapted from ES5-shim https://github.com/kriskowal/es5-shim/blob/master/es5-shim.js
+    // es5.github.com/#x15.3.4.5
+
+    if (!Function.prototype.bind) {
+      Function.prototype.bind = function bind(that) {
+
+        var target = this;
+
+        if (typeof target != "function") {
+            throw new TypeError();
+        }
+
+        var args = slice.call(arguments, 1),
+            bound = function () {
+
+            if (this instanceof bound) {
+
+              var F = function(){};
+              F.prototype = target.prototype;
+              var self = new F();
+
+              var result = target.apply(
+                  self,
+                  args.concat(slice.call(arguments))
+              );
+              if (Object(result) === result) {
+                  return result;
+              }
+              return self;
+
+            } else {
+
+              return target.apply(
+                  that,
+                  args.concat(slice.call(arguments))
+              );
+
+            }
+
+        };
+
+        return bound;
+      };
+    }
+
+    /**
+     * setCss applies given styles to the Modernizr DOM node.
+     */
+    function setCss( str ) {
+        mStyle.cssText = str;
+    }
+
+    /**
+     * setCssAll extrapolates all vendor-specific css strings.
+     */
+    function setCssAll( str1, str2 ) {
+        return setCss(prefixes.join(str1 + ';') + ( str2 || '' ));
+    }
+
+    /**
+     * is returns a boolean for if typeof obj is exactly type.
+     */
+    function is( obj, type ) {
+        return typeof obj === type;
+    }
+
+    /**
+     * contains returns a boolean for if substr is found within str.
+     */
+    function contains( str, substr ) {
+        return !!~('' + str).indexOf(substr);
+    }
+
+    /*>>testprop*/
+
+    // testProps is a generic CSS / DOM property test.
+
+    // In testing support for a given CSS property, it's legit to test:
+    //    `elem.style[styleName] !== undefined`
+    // If the property is supported it will return an empty string,
+    // if unsupported it will return undefined.
+
+    // We'll take advantage of this quick test and skip setting a style
+    // on our modernizr element, but instead just testing undefined vs
+    // empty string.
+
+    // Because the testing of the CSS property names (with "-", as
+    // opposed to the camelCase DOM properties) is non-portable and
+    // non-standard but works in WebKit and IE (but not Gecko or Opera),
+    // we explicitly reject properties with dashes so that authors
+    // developing in WebKit or IE first don't end up with
+    // browser-specific content by accident.
+
+    function testProps( props, prefixed ) {
+        for ( var i in props ) {
+            var prop = props[i];
+            if ( !contains(prop, "-") && mStyle[prop] !== undefined ) {
+                return prefixed == 'pfx' ? prop : true;
+            }
+        }
+        return false;
+    }
+    /*>>testprop*/
+
+    // TODO :: add testDOMProps
+    /**
+     * testDOMProps is a generic DOM property test; if a browser supports
+     *   a certain property, it won't return undefined for it.
+     */
+    function testDOMProps( props, obj, elem ) {
+        for ( var i in props ) {
+            var item = obj[props[i]];
+            if ( item !== undefined) {
+
+                // return the property name as a string
+                if (elem === false) return props[i];
+
+                // let's bind a function
+                if (is(item, 'function')){
+                  // default to autobind unless override
+                  return item.bind(elem || obj);
+                }
+
+                // return the unbound function or obj or value
+                return item;
+            }
+        }
+        return false;
+    }
+
+    /*>>testallprops*/
+    /**
+     * testPropsAll tests a list of DOM properties we want to check against.
+     *   We specify literally ALL possible (known and/or likely) properties on
+     *   the element including the non-vendor prefixed one, for forward-
+     *   compatibility.
+     */
+    function testPropsAll( prop, prefixed, elem ) {
+
+        var ucProp  = prop.charAt(0).toUpperCase() + prop.slice(1),
+            props   = (prop + ' ' + cssomPrefixes.join(ucProp + ' ') + ucProp).split(' ');
+
+        // did they call .prefixed('boxSizing') or are we just testing a prop?
+        if(is(prefixed, "string") || is(prefixed, "undefined")) {
+          return testProps(props, prefixed);
+
+        // otherwise, they called .prefixed('requestAnimationFrame', window[, elem])
+        } else {
+          props = (prop + ' ' + (domPrefixes).join(ucProp + ' ') + ucProp).split(' ');
+          return testDOMProps(props, prefixed, elem);
+        }
+    }
+    /*>>testallprops*/
+
+
+    /**
+     * Tests
+     * -----
+     */
+
+    // The *new* flexbox
+    // dev.w3.org/csswg/css3-flexbox
+
+    tests['flexbox'] = function() {
+      return testPropsAll('flexWrap');
+    };
+
+    // The *old* flexbox
+    // www.w3.org/TR/2009/WD-css3-flexbox-20090723/
+
+    tests['flexboxlegacy'] = function() {
+        return testPropsAll('boxDirection');
+    };
+
+    // On the S60 and BB Storm, getContext exists, but always returns undefined
+    // so we actually have to call getContext() to verify
+    // github.com/Modernizr/Modernizr/issues/issue/97/
+
+    tests['canvas'] = function() {
+        var elem = document.createElement('canvas');
+        return !!(elem.getContext && elem.getContext('2d'));
+    };
+
+    tests['canvastext'] = function() {
+        return !!(Modernizr['canvas'] && is(document.createElement('canvas').getContext('2d').fillText, 'function'));
+    };
+
+    // webk.it/70117 is tracking a legit WebGL feature detect proposal
+
+    // We do a soft detect which may false positive in order to avoid
+    // an expensive context creation: bugzil.la/732441
+
+    tests['webgl'] = function() {
+        return !!window.WebGLRenderingContext;
+    };
+
+    /*
+     * The Modernizr.touch test only indicates if the browser supports
+     *    touch events, which does not necessarily reflect a touchscreen
+     *    device, as evidenced by tablets running Windows 7 or, alas,
+     *    the Palm Pre / WebOS (touch) phones.
+     *
+     * Additionally, Chrome (desktop) used to lie about its support on this,
+     *    but that has since been rectified: crbug.com/36415
+     *
+     * We also test for Firefox 4 Multitouch Support.
+     *
+     * For more info, see: modernizr.github.com/Modernizr/touch.html
+     */
+
+    tests['touch'] = function() {
+        var bool;
+
+        if(('ontouchstart' in window) || window.DocumentTouch && document instanceof DocumentTouch) {
+          bool = true;
+        } else {
+          injectElementWithStyles(['@media (',prefixes.join('touch-enabled),('),mod,')','{#modernizr{top:9px;position:absolute}}'].join(''), function( node ) {
+            bool = node.offsetTop === 9;
+          });
+        }
+
+        return bool;
+    };
+
+
+    // geolocation is often considered a trivial feature detect...
+    // Turns out, it's quite tricky to get right:
+    //
+    // Using !!navigator.geolocation does two things we don't want. It:
+    //   1. Leaks memory in IE9: github.com/Modernizr/Modernizr/issues/513
+    //   2. Disables page caching in WebKit: webk.it/43956
+    //
+    // Meanwhile, in Firefox < 8, an about:config setting could expose
+    // a false positive that would throw an exception: bugzil.la/688158
+
+    tests['geolocation'] = function() {
+        return 'geolocation' in navigator;
+    };
+
+
+    tests['postmessage'] = function() {
+      return !!window.postMessage;
+    };
+
+
+    // Chrome incognito mode used to throw an exception when using openDatabase
+    // It doesn't anymore.
+    tests['websqldatabase'] = function() {
+      return !!window.openDatabase;
+    };
+
+    // Vendors had inconsistent prefixing with the experimental Indexed DB:
+    // - Webkit's implementation is accessible through webkitIndexedDB
+    // - Firefox shipped moz_indexedDB before FF4b9, but since then has been mozIndexedDB
+    // For speed, we don't test the legacy (and beta-only) indexedDB
+    tests['indexedDB'] = function() {
+      return !!testPropsAll("indexedDB", window);
+    };
+
+    // documentMode logic from YUI to filter out IE8 Compat Mode
+    //   which false positives.
+    tests['hashchange'] = function() {
+      return isEventSupported('hashchange', window) && (document.documentMode === undefined || document.documentMode > 7);
+    };
+
+    // Per 1.6:
+    // This used to be Modernizr.historymanagement but the longer
+    // name has been deprecated in favor of a shorter and property-matching one.
+    // The old API is still available in 1.6, but as of 2.0 will throw a warning,
+    // and in the first release thereafter disappear entirely.
+    tests['history'] = function() {
+      return !!(window.history && history.pushState);
+    };
+
+    tests['draganddrop'] = function() {
+        var div = document.createElement('div');
+        return ('draggable' in div) || ('ondragstart' in div && 'ondrop' in div);
+    };
+
+    // FF3.6 was EOL'ed on 4/24/12, but the ESR version of FF10
+    // will be supported until FF19 (2/12/13), at which time, ESR becomes FF17.
+    // FF10 still uses prefixes, so check for it until then.
+    // for more ESR info, see: mozilla.org/en-US/firefox/organizations/faq/
+    tests['websockets'] = function() {
+        return 'WebSocket' in window || 'MozWebSocket' in window;
+    };
+
+
+    // css-tricks.com/rgba-browser-support/
+    tests['rgba'] = function() {
+        // Set an rgba() color and check the returned value
+
+        setCss('background-color:rgba(150,255,150,.5)');
+
+        return contains(mStyle.backgroundColor, 'rgba');
+    };
+
+    tests['hsla'] = function() {
+        // Same as rgba(), in fact, browsers re-map hsla() to rgba() internally,
+        //   except IE9 who retains it as hsla
+
+        setCss('background-color:hsla(120,40%,100%,.5)');
+
+        return contains(mStyle.backgroundColor, 'rgba') || contains(mStyle.backgroundColor, 'hsla');
+    };
+
+    tests['multiplebgs'] = function() {
+        // Setting multiple images AND a color on the background shorthand property
+        //  and then querying the style.background property value for the number of
+        //  occurrences of "url(" is a reliable method for detecting ACTUAL support for this!
+
+        setCss('background:url(https://),url(https://),red url(https://)');
+
+        // If the UA supports multiple backgrounds, there should be three occurrences
+        //   of the string "url(" in the return value for elemStyle.background
+
+        return (/(url\s*\(.*?){3}/).test(mStyle.background);
+    };
+
+
+
+    // this will false positive in Opera Mini
+    //   github.com/Modernizr/Modernizr/issues/396
+
+    tests['backgroundsize'] = function() {
+        return testPropsAll('backgroundSize');
+    };
+
+    tests['borderimage'] = function() {
+        return testPropsAll('borderImage');
+    };
+
+
+    // Super comprehensive table about all the unique implementations of
+    // border-radius: muddledramblings.com/table-of-css3-border-radius-compliance
+
+    tests['borderradius'] = function() {
+        return testPropsAll('borderRadius');
+    };
+
+    // WebOS unfortunately false positives on this test.
+    tests['boxshadow'] = function() {
+        return testPropsAll('boxShadow');
+    };
+
+    // FF3.0 will false positive on this test
+    tests['textshadow'] = function() {
+        return document.createElement('div').style.textShadow === '';
+    };
+
+
+    tests['opacity'] = function() {
+        // Browsers that actually have CSS Opacity implemented have done so
+        //  according to spec, which means their return values are within the
+        //  range of [0.0,1.0] - including the leading zero.
+
+        setCssAll('opacity:.55');
+
+        // The non-literal . in this regex is intentional:
+        //   German Chrome returns this value as 0,55
+        // github.com/Modernizr/Modernizr/issues/#issue/59/comment/516632
+        return (/^0.55$/).test(mStyle.opacity);
+    };
+
+
+    // Note, Android < 4 will pass this test, but can only animate
+    //   a single property at a time
+    //   daneden.me/2011/12/putting-up-with-androids-bullshit/
+    tests['cssanimations'] = function() {
+        return testPropsAll('animationName');
+    };
+
+
+    tests['csscolumns'] = function() {
+        return testPropsAll('columnCount');
+    };
+
+
+    tests['cssgradients'] = function() {
+        /**
+         * For CSS Gradients syntax, please see:
+         * webkit.org/blog/175/introducing-css-gradients/
+         * developer.mozilla.org/en/CSS/-moz-linear-gradient
+         * developer.mozilla.org/en/CSS/-moz-radial-gradient
+         * dev.w3.org/csswg/css3-images/#gradients-
+         */
+
+        var str1 = 'background-image:',
+            str2 = 'gradient(linear,left top,right bottom,from(#9f9),to(white));',
+            str3 = 'linear-gradient(left top,#9f9, white);';
+
+        setCss(
+             // legacy webkit syntax (FIXME: remove when syntax not in use anymore)
+              (str1 + '-webkit- '.split(' ').join(str2 + str1) +
+             // standard syntax             // trailing 'background-image:'
+              prefixes.join(str3 + str1)).slice(0, -str1.length)
+        );
+
+        return contains(mStyle.backgroundImage, 'gradient');
+    };
+
+
+    tests['cssreflections'] = function() {
+        return testPropsAll('boxReflect');
+    };
+
+
+    tests['csstransforms'] = function() {
+        return !!testPropsAll('transform');
+    };
+
+
+    tests['csstransforms3d'] = function() {
+
+        var ret = !!testPropsAll('perspective');
+
+        // Webkit's 3D transforms are passed off to the browser's own graphics renderer.
+        //   It works fine in Safari on Leopard and Snow Leopard, but not in Chrome in
+        //   some conditions. As a result, Webkit typically recognizes the syntax but
+        //   will sometimes throw a false positive, thus we must do a more thorough check:
+        if ( ret && 'webkitPerspective' in docElement.style ) {
+
+          // Webkit allows this media query to succeed only if the feature is enabled.
+          // `@media (transform-3d),(-webkit-transform-3d){ ... }`
+          injectElementWithStyles('@media (transform-3d),(-webkit-transform-3d){#modernizr{left:9px;position:absolute;height:3px;}}', function( node, rule ) {
+            ret = node.offsetLeft === 9 && node.offsetHeight === 3;
+          });
+        }
+        return ret;
+    };
+
+
+    tests['csstransitions'] = function() {
+        return testPropsAll('transition');
+    };
+
+
+    /*>>fontface*/
+    // @font-face detection routine by Diego Perini
+    // javascript.nwbox.com/CSSSupport/
+
+    // false positives:
+    //   WebOS github.com/Modernizr/Modernizr/issues/342
+    //   WP7   github.com/Modernizr/Modernizr/issues/538
+    tests['fontface'] = function() {
+        var bool;
+
+        injectElementWithStyles('@font-face {font-family:"font";src:url("https://")}', function( node, rule ) {
+          var style = document.getElementById('smodernizr'),
+              sheet = style.sheet || style.styleSheet,
+              cssText = sheet ? (sheet.cssRules && sheet.cssRules[0] ? sheet.cssRules[0].cssText : sheet.cssText || '') : '';
+
+          bool = /src/i.test(cssText) && cssText.indexOf(rule.split(' ')[0]) === 0;
+        });
+
+        return bool;
+    };
+    /*>>fontface*/
+
+    // CSS generated content detection
+    tests['generatedcontent'] = function() {
+        var bool;
+
+        injectElementWithStyles(['#',mod,'{font:0/0 a}#',mod,':after{content:"',smile,'";visibility:hidden;font:3px/1 a}'].join(''), function( node ) {
+          bool = node.offsetHeight >= 3;
+        });
+
+        return bool;
+    };
+
+
+
+    // These tests evaluate support of the video/audio elements, as well as
+    // testing what types of content they support.
+    //
+    // We're using the Boolean constructor here, so that we can extend the value
+    // e.g.  Modernizr.video     // true
+    //       Modernizr.video.ogg // 'probably'
+    //
+    // Codec values from : github.com/NielsLeenheer/html5test/blob/9106a8/index.html#L845
+    //                     thx to NielsLeenheer and zcorpan
+
+    // Note: in some older browsers, "no" was a return value instead of empty string.
+    //   It was live in FF3.5.0 and 3.5.1, but fixed in 3.5.2
+    //   It was also live in Safari 4.0.0 - 4.0.4, but fixed in 4.0.5
+
+    tests['video'] = function() {
+        var elem = document.createElement('video'),
+            bool = false;
+
+        // IE9 Running on Windows Server SKU can cause an exception to be thrown, bug #224
+        try {
+            if ( bool = !!elem.canPlayType ) {
+                bool      = new Boolean(bool);
+                bool.ogg  = elem.canPlayType('video/ogg; codecs="theora"')      .replace(/^no$/,'');
+
+                // Without QuickTime, this value will be `undefined`. github.com/Modernizr/Modernizr/issues/546
+                bool.h264 = elem.canPlayType('video/mp4; codecs="avc1.42E01E"') .replace(/^no$/,'');
+
+                bool.webm = elem.canPlayType('video/webm; codecs="vp8, vorbis"').replace(/^no$/,'');
+            }
+
+        } catch(e) { }
+
+        return bool;
+    };
+
+    tests['audio'] = function() {
+        var elem = document.createElement('audio'),
+            bool = false;
+
+        try {
+            if ( bool = !!elem.canPlayType ) {
+                bool      = new Boolean(bool);
+                bool.ogg  = elem.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,'');
+                bool.mp3  = elem.canPlayType('audio/mpeg;')               .replace(/^no$/,'');
+
+                // Mimetypes accepted:
+                //   developer.mozilla.org/En/Media_formats_supported_by_the_audio_and_video_elements
+                //   bit.ly/iphoneoscodecs
+                bool.wav  = elem.canPlayType('audio/wav; codecs="1"')     .replace(/^no$/,'');
+                bool.m4a  = ( elem.canPlayType('audio/x-m4a;')            ||
+                              elem.canPlayType('audio/aac;'))             .replace(/^no$/,'');
+            }
+        } catch(e) { }
+
+        return bool;
+    };
+
+
+    // In FF4, if disabled, window.localStorage should === null.
+
+    // Normally, we could not test that directly and need to do a
+    //   `('localStorage' in window) && ` test first because otherwise Firefox will
+    //   throw bugzil.la/365772 if cookies are disabled
+
+    // Also in iOS5 Private Browsing mode, attempting to use localStorage.setItem
+    // will throw the exception:
+    //   QUOTA_EXCEEDED_ERRROR DOM Exception 22.
+    // Peculiarly, getItem and removeItem calls do not throw.
+
+    // Because we are forced to try/catch this, we'll go aggressive.
+
+    // Just FWIW: IE8 Compat mode supports these features completely:
+    //   www.quirksmode.org/dom/html5.html
+    // But IE8 doesn't support either with local files
+
+    tests['localstorage'] = function() {
+        try {
+            localStorage.setItem(mod, mod);
+            localStorage.removeItem(mod);
+            return true;
+        } catch(e) {
+            return false;
+        }
+    };
+
+    tests['sessionstorage'] = function() {
+        try {
+            sessionStorage.setItem(mod, mod);
+            sessionStorage.removeItem(mod);
+            return true;
+        } catch(e) {
+            return false;
+        }
+    };
+
+
+    tests['webworkers'] = function() {
+        return !!window.Worker;
+    };
+
+
+    tests['applicationcache'] = function() {
+        return !!window.applicationCache;
+    };
+
+
+    // Thanks to Erik Dahlstrom
+    tests['svg'] = function() {
+        return !!document.createElementNS && !!document.createElementNS(ns.svg, 'svg').createSVGRect;
+    };
+
+    // specifically for SVG inline in HTML, not within XHTML
+    // test page: paulirish.com/demo/inline-svg
+    tests['inlinesvg'] = function() {
+      var div = document.createElement('div');
+      div.innerHTML = '<svg/>';
+      return (div.firstChild && div.firstChild.namespaceURI) == ns.svg;
+    };
+
+    // SVG SMIL animation
+    tests['smil'] = function() {
+        return !!document.createElementNS && /SVGAnimate/.test(toString.call(document.createElementNS(ns.svg, 'animate')));
+    };
+
+    // This test is only for clip paths in SVG proper, not clip paths on HTML content
+    // demo: srufaculty.sru.edu/david.dailey/svg/newstuff/clipPath4.svg
+
+    // However read the comments to dig into applying SVG clippaths to HTML content here:
+    //   github.com/Modernizr/Modernizr/issues/213#issuecomment-1149491
+    tests['svgclippaths'] = function() {
+        return !!document.createElementNS && /SVGClipPath/.test(toString.call(document.createElementNS(ns.svg, 'clipPath')));
+    };
+
+    /*>>webforms*/
+    // input features and input types go directly onto the ret object, bypassing the tests loop.
+    // Hold this guy to execute in a moment.
+    function webforms() {
+        /*>>input*/
+        // Run through HTML5's new input attributes to see if the UA understands any.
+        // We're using f which is the <input> element created early on
+        // Mike Taylr has created a comprehensive resource for testing these attributes
+        //   when applied to all input types:
+        //   miketaylr.com/code/input-type-attr.html
+        // spec: www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
+
+        // Only input placeholder is tested while textarea's placeholder is not.
+        // Currently Safari 4 and Opera 11 have support only for the input placeholder
+        // Both tests are available in feature-detects/forms-placeholder.js
+        Modernizr['input'] = (function( props ) {
+            for ( var i = 0, len = props.length; i < len; i++ ) {
+                attrs[ props[i] ] = !!(props[i] in inputElem);
+            }
+            if (attrs.list){
+              // safari false positive's on datalist: webk.it/74252
+              // see also github.com/Modernizr/Modernizr/issues/146
+              attrs.list = !!(document.createElement('datalist') && window.HTMLDataListElement);
+            }
+            return attrs;
+        })('autocomplete autofocus list placeholder max min multiple pattern required step'.split(' '));
+        /*>>input*/
+
+        /*>>inputtypes*/
+        // Run through HTML5's new input types to see if the UA understands any.
+        //   This is put behind the tests runloop because it doesn't return a
+        //   true/false like all the other tests; instead, it returns an object
+        //   containing each input type with its corresponding true/false value
+
+        // Big thanks to @miketaylr for the html5 forms expertise. miketaylr.com/
+        Modernizr['inputtypes'] = (function(props) {
+
+            for ( var i = 0, bool, inputElemType, defaultView, len = props.length; i < len; i++ ) {
+
+                inputElem.setAttribute('type', inputElemType = props[i]);
+                bool = inputElem.type !== 'text';
+
+                // We first check to see if the type we give it sticks..
+                // If the type does, we feed it a textual value, which shouldn't be valid.
+                // If the value doesn't stick, we know there's input sanitization which infers a custom UI
+                if ( bool ) {
+
+                    inputElem.value         = smile;
+                    inputElem.style.cssText = 'position:absolute;visibility:hidden;';
+
+                    if ( /^range$/.test(inputElemType) && inputElem.style.WebkitAppearance !== undefined ) {
+
+                      docElement.appendChild(inputElem);
+                      defaultView = document.defaultView;
+
+                      // Safari 2-4 allows the smiley as a value, despite making a slider
+                      bool =  defaultView.getComputedStyle &&
+                              defaultView.getComputedStyle(inputElem, null).WebkitAppearance !== 'textfield' &&
+                              // Mobile android web browser has false positive, so must
+                              // check the height to see if the widget is actually there.
+                              (inputElem.offsetHeight !== 0);
+
+                      docElement.removeChild(inputElem);
+
+                    } else if ( /^(search|tel)$/.test(inputElemType) ){
+                      // Spec doesn't define any special parsing or detectable UI
+                      //   behaviors so we pass these through as true
+
+                      // Interestingly, opera fails the earlier test, so it doesn't
+                      //  even make it here.
+
+                    } else if ( /^(url|email)$/.test(inputElemType) ) {
+                      // Real url and email support comes with prebaked validation.
+                      bool = inputElem.checkValidity && inputElem.checkValidity() === false;
+
+                    } else {
+                      // If the upgraded input compontent rejects the :) text, we got a winner
+                      bool = inputElem.value != smile;
+                    }
+                }
+
+                inputs[ props[i] ] = !!bool;
+            }
+            return inputs;
+        })('search tel url email datetime date month week time datetime-local number range color'.split(' '));
+        /*>>inputtypes*/
+    }
+    /*>>webforms*/
+
+
+    // End of test definitions
+    // -----------------------
+
+
+
+    // Run through all tests and detect their support in the current UA.
+    // todo: hypothetically we could be doing an array of tests and use a basic loop here.
+    for ( var feature in tests ) {
+        if ( hasOwnProp(tests, feature) ) {
+            // run the test, throw the return value into the Modernizr,
+            //   then based on that boolean, define an appropriate className
+            //   and push it into an array of classes we'll join later.
+            featureName  = feature.toLowerCase();
+            Modernizr[featureName] = tests[feature]();
+
+            classes.push((Modernizr[featureName] ? '' : 'no-') + featureName);
+        }
+    }
+
+    /*>>webforms*/
+    // input tests need to run.
+    Modernizr.input || webforms();
+    /*>>webforms*/
+
+
+    /**
+     * addTest allows the user to define their own feature tests
+     * the result will be added onto the Modernizr object,
+     * as well as an appropriate className set on the html element
+     *
+     * @param feature - String naming the feature
+     * @param test - Function returning true if feature is supported, false if not
+     */
+     Modernizr.addTest = function ( feature, test ) {
+       if ( typeof feature == 'object' ) {
+         for ( var key in feature ) {
+           if ( hasOwnProp( feature, key ) ) {
+             Modernizr.addTest( key, feature[ key ] );
+           }
+         }
+       } else {
+
+         feature = feature.toLowerCase();
+
+         if ( Modernizr[feature] !== undefined ) {
+           // we're going to quit if you're trying to overwrite an existing test
+           // if we were to allow it, we'd do this:
+           //   var re = new RegExp("\\b(no-)?" + feature + "\\b");
+           //   docElement.className = docElement.className.replace( re, '' );
+           // but, no rly, stuff 'em.
+           return Modernizr;
+         }
+
+         test = typeof test == 'function' ? test() : test;
+
+         if (typeof enableClasses !== "undefined" && enableClasses) {
+           docElement.className += ' ' + (test ? '' : 'no-') + feature;
+         }
+         Modernizr[feature] = test;
+
+       }
+
+       return Modernizr; // allow chaining.
+     };
+
+
+    // Reset modElem.cssText to nothing to reduce memory footprint.
+    setCss('');
+    modElem = inputElem = null;
+
+    /*>>shiv*/
+    /**
+     * @preserve HTML5 Shiv prev3.7.1 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
+     */
+    ;(function(window, document) {
+        /*jshint evil:true */
+        /** version */
+        var version = '3.7.0';
+
+        /** Preset options */
+        var options = window.html5 || {};
+
+        /** Used to skip problem elements */
+        var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
+
+        /** Not all elements can be cloned in IE **/
+        var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
+
+        /** Detect whether the browser supports default html5 styles */
+        var supportsHtml5Styles;
+
+        /** Name of the expando, to work with multiple documents or to re-shiv one document */
+        var expando = '_html5shiv';
+
+        /** The id for the the documents expando */
+        var expanID = 0;
+
+        /** Cached data for each document */
+        var expandoData = {};
+
+        /** Detect whether the browser supports unknown elements */
+        var supportsUnknownElements;
+
+        (function() {
+          try {
+            var a = document.createElement('a');
+            a.innerHTML = '<xyz></xyz>';
+            //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
+            supportsHtml5Styles = ('hidden' in a);
+
+            supportsUnknownElements = a.childNodes.length == 1 || (function() {
+              // assign a false positive if unable to shiv
+              (document.createElement)('a');
+              var frag = document.createDocumentFragment();
+              return (
+                typeof frag.cloneNode == 'undefined' ||
+                typeof frag.createDocumentFragment == 'undefined' ||
+                typeof frag.createElement == 'undefined'
+              );
+            }());
+          } catch(e) {
+            // assign a false positive if detection fails => unable to shiv
+            supportsHtml5Styles = true;
+            supportsUnknownElements = true;
+          }
+
+        }());
+
+        /*--------------------------------------------------------------------------*/
+
+        /**
+         * Creates a style sheet with the given CSS text and adds it to the document.
+         * @private
+         * @param {Document} ownerDocument The document.
+         * @param {String} cssText The CSS text.
+         * @returns {StyleSheet} The style element.
+         */
+        function addStyleSheet(ownerDocument, cssText) {
+          var p = ownerDocument.createElement('p'),
+          parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
+
+          p.innerHTML = 'x<style>' + cssText + '</style>';
+          return parent.insertBefore(p.lastChild, parent.firstChild);
+        }
+
+        /**
+         * Returns the value of `html5.elements` as an array.
+         * @private
+         * @returns {Array} An array of shived element node names.
+         */
+        function getElements() {
+          var elements = html5.elements;
+          return typeof elements == 'string' ? elements.split(' ') : elements;
+        }
+
+        /**
+         * Returns the data associated to the given document
+         * @private
+         * @param {Document} ownerDocument The document.
+         * @returns {Object} An object of data.
+         */
+        function getExpandoData(ownerDocument) {
+          var data = expandoData[ownerDocument[expando]];
+          if (!data) {
+            data = {};
+            expanID++;
+            ownerDocument[expando] = expanID;
+            expandoData[expanID] = data;
+          }
+          return data;
+        }
+
+        /**
+         * returns a shived element for the given nodeName and document
+         * @memberOf html5
+         * @param {String} nodeName name of the element
+         * @param {Document} ownerDocument The context document.
+         * @returns {Object} The shived element.
+         */
+        function createElement(nodeName, ownerDocument, data){
+          if (!ownerDocument) {
+            ownerDocument = document;
+          }
+          if(supportsUnknownElements){
+            return ownerDocument.createElement(nodeName);
+          }
+          if (!data) {
+            data = getExpandoData(ownerDocument);
+          }
+          var node;
+
+          if (data.cache[nodeName]) {
+            node = data.cache[nodeName].cloneNode();
+          } else if (saveClones.test(nodeName)) {
+            node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
+          } else {
+            node = data.createElem(nodeName);
+          }
+
+          // Avoid adding some elements to fragments in IE < 9 because
+          // * Attributes like `name` or `type` cannot be set/changed once an element
+          //   is inserted into a document/fragment
+          // * Link elements with `src` attributes that are inaccessible, as with
+          //   a 403 response, will cause the tab/window to crash
+          // * Script elements appended to fragments will execute when their `src`
+          //   or `text` property is set
+          return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
+        }
+
+        /**
+         * returns a shived DocumentFragment for the given document
+         * @memberOf html5
+         * @param {Document} ownerDocument The context document.
+         * @returns {Object} The shived DocumentFragment.
+         */
+        function createDocumentFragment(ownerDocument, data){
+          if (!ownerDocument) {
+            ownerDocument = document;
+          }
+          if(supportsUnknownElements){
+            return ownerDocument.createDocumentFragment();
+          }
+          data = data || getExpandoData(ownerDocument);
+          var clone = data.frag.cloneNode(),
+          i = 0,
+          elems = getElements(),
+          l = elems.length;
+          for(;i<l;i++){
+            clone.createElement(elems[i]);
+          }
+          return clone;
+        }
+
+        /**
+         * Shivs the `createElement` and `createDocumentFragment` methods of the document.
+         * @private
+         * @param {Document|DocumentFragment} ownerDocument The document.
+         * @param {Object} data of the document.
+         */
+        function shivMethods(ownerDocument, data) {
+          if (!data.cache) {
+            data.cache = {};
+            data.createElem = ownerDocument.createElement;
+            data.createFrag = ownerDocument.createDocumentFragment;
+            data.frag = data.createFrag();
+          }
+
+
+          ownerDocument.createElement = function(nodeName) {
+            //abort shiv
+            if (!html5.shivMethods) {
+              return data.createElem(nodeName);
+            }
+            return createElement(nodeName, ownerDocument, data);
+          };
+
+          ownerDocument.createDocumentFragment = Function('h,f', 'return function(){' +
+                                                          'var n=f.cloneNode(),c=n.createElement;' +
+                                                          'h.shivMethods&&(' +
+                                                          // unroll the `createElement` calls
+                                                          getElements().join().replace(/[\w\-]+/g, function(nodeName) {
+            data.createElem(nodeName);
+            data.frag.createElement(nodeName);
+            return 'c("' + nodeName + '")';
+          }) +
+            ');return n}'
+                                                         )(html5, data.frag);
+        }
+
+        /*--------------------------------------------------------------------------*/
+
+        /**
+         * Shivs the given document.
+         * @memberOf html5
+         * @param {Document} ownerDocument The document to shiv.
+         * @returns {Document} The shived document.
+         */
+        function shivDocument(ownerDocument) {
+          if (!ownerDocument) {
+            ownerDocument = document;
+          }
+          var data = getExpandoData(ownerDocument);
+
+          if (html5.shivCSS && !supportsHtml5Styles && !data.hasCSS) {
+            data.hasCSS = !!addStyleSheet(ownerDocument,
+                                          // corrects block display not defined in IE6/7/8/9
+                                          'article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}' +
+                                            // adds styling not present in IE6/7/8/9
+                                            'mark{background:#FF0;color:#000}' +
+                                            // hides non-rendered elements
+                                            'template{display:none}'
+                                         );
+          }
+          if (!supportsUnknownElements) {
+            shivMethods(ownerDocument, data);
+          }
+          return ownerDocument;
+        }
+
+        /*--------------------------------------------------------------------------*/
+
+        /**
+         * The `html5` object is exposed so that more elements can be shived and
+         * existing shiving can be detected on iframes.
+         * @type Object
+         * @example
+         *
+         * // options can be changed before the script is included
+         * html5 = { 'elements': 'mark section', 'shivCSS': false, 'shivMethods': false };
+         */
+        var html5 = {
+
+          /**
+           * An array or space separated string of node names of the elements to shiv.
+           * @memberOf html5
+           * @type Array|String
+           */
+          'elements': options.elements || 'abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output progress section summary template time video',
+
+          /**
+           * current version of html5shiv
+           */
+          'version': version,
+
+          /**
+           * A flag to indicate that the HTML5 style sheet should be inserted.
+           * @memberOf html5
+           * @type Boolean
+           */
+          'shivCSS': (options.shivCSS !== false),
+
+          /**
+           * Is equal to true if a browser supports creating unknown/HTML5 elements
+           * @memberOf html5
+           * @type boolean
+           */
+          'supportsUnknownElements': supportsUnknownElements,
+
+          /**
+           * A flag to indicate that the document's `createElement` and `createDocumentFragment`
+           * methods should be overwritten.
+           * @memberOf html5
+           * @type Boolean
+           */
+          'shivMethods': (options.shivMethods !== false),
+
+          /**
+           * A string to describe the type of `html5` object ("default" or "default print").
+           * @memberOf html5
+           * @type String
+           */
+          'type': 'default',
+
+          // shivs the document according to the specified `html5` object options
+          'shivDocument': shivDocument,
+
+          //creates a shived element
+          createElement: createElement,
+
+          //creates a shived documentFragment
+          createDocumentFragment: createDocumentFragment
+        };
+
+        /*--------------------------------------------------------------------------*/
+
+        // expose html5
+        window.html5 = html5;
+
+        // shiv the document
+        shivDocument(document);
+
+    }(this, document));
+    /*>>shiv*/
+
+    // Assign private properties to the return object with prefix
+    Modernizr._version      = version;
+
+    // expose these for the plugin API. Look in the source for how to join() them against your input
+    /*>>prefixes*/
+    Modernizr._prefixes     = prefixes;
+    /*>>prefixes*/
+    /*>>domprefixes*/
+    Modernizr._domPrefixes  = domPrefixes;
+    Modernizr._cssomPrefixes  = cssomPrefixes;
+    /*>>domprefixes*/
+
+    /*>>mq*/
+    // Modernizr.mq tests a given media query, live against the current state of the window
+    // A few important notes:
+    //   * If a browser does not support media queries at all (eg. oldIE) the mq() will always return false
+    //   * A max-width or orientation query will be evaluated against the current state, which may change later.
+    //   * You must specify values. Eg. If you are testing support for the min-width media query use:
+    //       Modernizr.mq('(min-width:0)')
+    // usage:
+    // Modernizr.mq('only screen and (max-width:768)')
+    Modernizr.mq            = testMediaQuery;
+    /*>>mq*/
+
+    /*>>hasevent*/
+    // Modernizr.hasEvent() detects support for a given event, with an optional element to test on
+    // Modernizr.hasEvent('gesturestart', elem)
+    Modernizr.hasEvent      = isEventSupported;
+    /*>>hasevent*/
+
+    /*>>testprop*/
+    // Modernizr.testProp() investigates whether a given style property is recognized
+    // Note that the property names must be provided in the camelCase variant.
+    // Modernizr.testProp('pointerEvents')
+    Modernizr.testProp      = function(prop){
+        return testProps([prop]);
+    };
+    /*>>testprop*/
+
+    /*>>testallprops*/
+    // Modernizr.testAllProps() investigates whether a given style property,
+    //   or any of its vendor-prefixed variants, is recognized
+    // Note that the property names must be provided in the camelCase variant.
+    // Modernizr.testAllProps('boxSizing')
+    Modernizr.testAllProps  = testPropsAll;
+    /*>>testallprops*/
+
+
+    /*>>teststyles*/
+    // Modernizr.testStyles() allows you to add custom styles to the document and test an element afterwards
+    // Modernizr.testStyles('#modernizr { position:absolute }', function(elem, rule){ ... })
+    Modernizr.testStyles    = injectElementWithStyles;
+    /*>>teststyles*/
+
+
+    /*>>prefixed*/
+    // Modernizr.prefixed() returns the prefixed or nonprefixed property name variant of your input
+    // Modernizr.prefixed('boxSizing') // 'MozBoxSizing'
+
+    // Properties must be passed as dom-style camelcase, rather than `box-sizing` hypentated style.
+    // Return values will also be the camelCase variant, if you need to translate that to hypenated style use:
+    //
+    //     str.replace(/([A-Z])/g, function(str,m1){ return '-' + m1.toLowerCase(); }).replace(/^ms-/,'-ms-');
+
+    // If you're trying to ascertain which transition end event to bind to, you might do something like...
+    //
+    //     var transEndEventNames = {
+    //       'WebkitTransition' : 'webkitTransitionEnd',
+    //       'MozTransition'    : 'transitionend',
+    //       'OTransition'      : 'oTransitionEnd',
+    //       'msTransition'     : 'MSTransitionEnd',
+    //       'transition'       : 'transitionend'
+    //     },
+    //     transEndEventName = transEndEventNames[ Modernizr.prefixed('transition') ];
+
+    Modernizr.prefixed      = function(prop, obj, elem){
+      if(!obj) {
+        return testPropsAll(prop, 'pfx');
+      } else {
+        // Testing DOM property e.g. Modernizr.prefixed('requestAnimationFrame', window) // 'mozRequestAnimationFrame'
+        return testPropsAll(prop, obj, elem);
+      }
+    };
+    /*>>prefixed*/
+
+
+    /*>>cssclasses*/
+    // Remove "no-js" class from <html> element, if it exists:
+    docElement.className = docElement.className.replace(/(^|\s)no-js(\s|$)/, '$1$2') +
+
+                            // Add the new classes to the <html> element.
+                            (enableClasses ? ' js ' + classes.join(' ') : '');
+    /*>>cssclasses*/
+
+    return Modernizr;
+
+})(this, this.document);
+/* @preserve
+ * Leaflet 1.5.1, a JS library for interactive maps. http://leafletjs.com
+ * (c) 2010-2018 Vladimir Agafonkin, (c) 2010-2011 CloudMade
+ */
+
+!function(t,i){"object"==typeof exports&&"undefined"!=typeof module?i(exports):"function"==typeof define&&define.amd?define(["exports"],i):i(t.L={})}(this,function(t){"use strict";var i=Object.freeze;function h(t){var i,e,n,o;for(e=1,n=arguments.length;e<n;e++)for(i in o=arguments[e])t[i]=o[i];return t}Object.freeze=function(t){return t};var s=Object.create||function(t){return e.prototype=t,new e};function e(){}function a(t,i){var e=Array.prototype.slice;if(t.bind)return t.bind.apply(t,e.call(arguments,1));var n=e.call(arguments,2);return function(){return t.apply(i,n.length?n.concat(e.call(arguments)):arguments)}}var n=0;function u(t){return t._leaflet_id=t._leaflet_id||++n,t._leaflet_id}function o(t,i,e){var n,o,s,r;return r=function(){n=!1,o&&(s.apply(e,o),o=!1)},s=function(){n?o=arguments:(t.apply(e,arguments),setTimeout(r,i),n=!0)}}function r(t,i,e){var n=i[1],o=i[0],s=n-o;return t===n&&e?t:((t-o)%s+s)%s+o}function l(){return!1}function c(t,i){return i=void 0===i?6:i,+(Math.round(t+"e+"+i)+"e-"+i)}function _(t){return t.trim?t.trim():t.replace(/^\s+|\s+$/g,"")}function d(t){return _(t).split(/\s+/)}function p(t,i){for(var e in t.hasOwnProperty("options")||(t.options=t.options?s(t.options):{}),i)t.options[e]=i[e];return t.options}function m(t,i,e){var n=[];for(var o in t)n.push(encodeURIComponent(e?o.toUpperCase():o)+"="+encodeURIComponent(t[o]));return(i&&-1!==i.indexOf("?")?"&":"?")+n.join("&")}var f=/\{ *([\w_-]+) *\}/g;function g(t,n){return t.replace(f,function(t,i){var e=n[i];if(void 0===e)throw new Error("No value provided for variable "+t);return"function"==typeof e&&(e=e(n)),e})}var v=Array.isArray||function(t){return"[object Array]"===Object.prototype.toString.call(t)};function y(t,i){for(var e=0;e<t.length;e++)if(t[e]===i)return e;return-1}var x="data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs=";function w(t){return window["webkit"+t]||window["moz"+t]||window["ms"+t]}var P=0;function b(t){var i=+new Date,e=Math.max(0,16-(i-P));return P=i+e,window.setTimeout(t,e)}var T=window.requestAnimationFrame||w("RequestAnimationFrame")||b,z=window.cancelAnimationFrame||w("CancelAnimationFrame")||w("CancelRequestAnimationFrame")||function(t){window.clearTimeout(t)};function M(t,i,e){if(!e||T!==b)return T.call(window,a(t,i));t.call(i)}function C(t){t&&z.call(window,t)}var S=(Object.freeze||Object)({freeze:i,extend:h,create:s,bind:a,lastId:n,stamp:u,throttle:o,wrapNum:r,falseFn:l,formatNum:c,trim:_,splitWords:d,setOptions:p,getParamString:m,template:g,isArray:v,indexOf:y,emptyImageUrl:x,requestFn:T,cancelFn:z,requestAnimFrame:M,cancelAnimFrame:C});function Z(){}Z.extend=function(t){function i(){this.initialize&&this.initialize.apply(this,arguments),this.callInitHooks()}var e=i.__super__=this.prototype,n=s(e);for(var o in(n.constructor=i).prototype=n,this)this.hasOwnProperty(o)&&"prototype"!==o&&"__super__"!==o&&(i[o]=this[o]);return t.statics&&(h(i,t.statics),delete t.statics),t.includes&&(function(t){if("undefined"==typeof L||!L||!L.Mixin)return;t=v(t)?t:[t];for(var i=0;i<t.length;i++)t[i]===L.Mixin.Events&&console.warn("Deprecated include of L.Mixin.Events: this property will be removed in future releases, please inherit from L.Evented instead.",(new Error).stack)}(t.includes),h.apply(null,[n].concat(t.includes)),delete t.includes),n.options&&(t.options=h(s(n.options),t.options)),h(n,t),n._initHooks=[],n.callInitHooks=function(){if(!this._initHooksCalled){e.callInitHooks&&e.callInitHooks.call(this),this._initHooksCalled=!0;for(var t=0,i=n._initHooks.length;t<i;t++)n._initHooks[t].call(this)}},i},Z.include=function(t){return h(this.prototype,t),this},Z.mergeOptions=function(t){return h(this.prototype.options,t),this},Z.addInitHook=function(t){var i=Array.prototype.slice.call(arguments,1),e="function"==typeof t?t:function(){this[t].apply(this,i)};return this.prototype._initHooks=this.prototype._initHooks||[],this.prototype._initHooks.push(e),this};var E={on:function(t,i,e){if("object"==typeof t)for(var n in t)this._on(n,t[n],i);else for(var o=0,s=(t=d(t)).length;o<s;o++)this._on(t[o],i,e);return this},off:function(t,i,e){if(t)if("object"==typeof t)for(var n in t)this._off(n,t[n],i);else for(var o=0,s=(t=d(t)).length;o<s;o++)this._off(t[o],i,e);else delete this._events;return this},_on:function(t,i,e){this._events=this._events||{};var n=this._events[t];n||(n=[],this._events[t]=n),e===this&&(e=void 0);for(var o={fn:i,ctx:e},s=n,r=0,a=s.length;r<a;r++)if(s[r].fn===i&&s[r].ctx===e)return;s.push(o)},_off:function(t,i,e){var n,o,s;if(this._events&&(n=this._events[t]))if(i){if(e===this&&(e=void 0),n)for(o=0,s=n.length;o<s;o++){var r=n[o];if(r.ctx===e&&r.fn===i)return r.fn=l,this._firingCount&&(this._events[t]=n=n.slice()),void n.splice(o,1)}}else{for(o=0,s=n.length;o<s;o++)n[o].fn=l;delete this._events[t]}},fire:function(t,i,e){if(!this.listens(t,e))return this;var n=h({},i,{type:t,target:this,sourceTarget:i&&i.sourceTarget||this});if(this._events){var o=this._events[t];if(o){this._firingCount=this._firingCount+1||1;for(var s=0,r=o.length;s<r;s++){var a=o[s];a.fn.call(a.ctx||this,n)}this._firingCount--}}return e&&this._propagateEvent(n),this},listens:function(t,i){var e=this._events&&this._events[t];if(e&&e.length)return!0;if(i)for(var n in this._eventParents)if(this._eventParents[n].listens(t,i))return!0;return!1},once:function(t,i,e){if("object"==typeof t){for(var n in t)this.once(n,t[n],i);return this}var o=a(function(){this.off(t,i,e).off(t,o,e)},this);return this.on(t,i,e).on(t,o,e)},addEventParent:function(t){return this._eventParents=this._eventParents||{},this._eventParents[u(t)]=t,this},removeEventParent:function(t){return this._eventParents&&delete this._eventParents[u(t)],this},_propagateEvent:function(t){for(var i in this._eventParents)this._eventParents[i].fire(t.type,h({layer:t.target,propagatedFrom:t.target},t),!0)}};E.addEventListener=E.on,E.removeEventListener=E.clearAllEventListeners=E.off,E.addOneTimeEventListener=E.once,E.fireEvent=E.fire,E.hasEventListeners=E.listens;var k=Z.extend(E);function B(t,i,e){this.x=e?Math.round(t):t,this.y=e?Math.round(i):i}var A=Math.trunc||function(t){return 0<t?Math.floor(t):Math.ceil(t)};function I(t,i,e){return t instanceof B?t:v(t)?new B(t[0],t[1]):null==t?t:"object"==typeof t&&"x"in t&&"y"in t?new B(t.x,t.y):new B(t,i,e)}function O(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function R(t,i){return!t||t instanceof O?t:new O(t,i)}function N(t,i){if(t)for(var e=i?[t,i]:t,n=0,o=e.length;n<o;n++)this.extend(e[n])}function D(t,i){return t instanceof N?t:new N(t,i)}function j(t,i,e){if(isNaN(t)||isNaN(i))throw new Error("Invalid LatLng object: ("+t+", "+i+")");this.lat=+t,this.lng=+i,void 0!==e&&(this.alt=+e)}function W(t,i,e){return t instanceof j?t:v(t)&&"object"!=typeof t[0]?3===t.length?new j(t[0],t[1],t[2]):2===t.length?new j(t[0],t[1]):null:null==t?t:"object"==typeof t&&"lat"in t?new j(t.lat,"lng"in t?t.lng:t.lon,t.alt):void 0===i?null:new j(t,i,e)}B.prototype={clone:function(){return new B(this.x,this.y)},add:function(t){return this.clone()._add(I(t))},_add:function(t){return this.x+=t.x,this.y+=t.y,this},subtract:function(t){return this.clone()._subtract(I(t))},_subtract:function(t){return this.x-=t.x,this.y-=t.y,this},divideBy:function(t){return this.clone()._divideBy(t)},_divideBy:function(t){return this.x/=t,this.y/=t,this},multiplyBy:function(t){return this.clone()._multiplyBy(t)},_multiplyBy:function(t){return this.x*=t,this.y*=t,this},scaleBy:function(t){return new B(this.x*t.x,this.y*t.y)},unscaleBy:function(t){return new B(this.x/t.x,this.y/t.y)},round:function(){return this.clone()._round()},_round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},floor:function(){return this.clone()._floor()},_floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.clone()._ceil()},_ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},trunc:function(){return this.clone()._trunc()},_trunc:function(){return this.x=A(this.x),this.y=A(this.y),this},distanceTo:function(t){var i=(t=I(t)).x-this.x,e=t.y-this.y;return Math.sqrt(i*i+e*e)},equals:function(t){return(t=I(t)).x===this.x&&t.y===this.y},contains:function(t){return t=I(t),Math.abs(t.x)<=Math.abs(this.x)&&Math.abs(t.y)<=Math.abs(this.y)},toString:function(){return"Point("+c(this.x)+", "+c(this.y)+")"}},O.prototype={extend:function(t){return t=I(t),this.min||this.max?(this.min.x=Math.min(t.x,this.min.x),this.max.x=Math.max(t.x,this.max.x),this.min.y=Math.min(t.y,this.min.y),this.max.y=Math.max(t.y,this.max.y)):(this.min=t.clone(),this.max=t.clone()),this},getCenter:function(t){return new B((this.min.x+this.max.x)/2,(this.min.y+this.max.y)/2,t)},getBottomLeft:function(){return new B(this.min.x,this.max.y)},getTopRight:function(){return new B(this.max.x,this.min.y)},getTopLeft:function(){return this.min},getBottomRight:function(){return this.max},getSize:function(){return this.max.subtract(this.min)},contains:function(t){var i,e;return(t="number"==typeof t[0]||t instanceof B?I(t):R(t))instanceof O?(i=t.min,e=t.max):i=e=t,i.x>=this.min.x&&e.x<=this.max.x&&i.y>=this.min.y&&e.y<=this.max.y},intersects:function(t){t=R(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>=i.x&&n.x<=e.x,r=o.y>=i.y&&n.y<=e.y;return s&&r},overlaps:function(t){t=R(t);var i=this.min,e=this.max,n=t.min,o=t.max,s=o.x>i.x&&n.x<e.x,r=o.y>i.y&&n.y<e.y;return s&&r},isValid:function(){return!(!this.min||!this.max)}},N.prototype={extend:function(t){var i,e,n=this._southWest,o=this._northEast;if(t instanceof j)e=i=t;else{if(!(t instanceof N))return t?this.extend(W(t)||D(t)):this;if(i=t._southWest,e=t._northEast,!i||!e)return this}return n||o?(n.lat=Math.min(i.lat,n.lat),n.lng=Math.min(i.lng,n.lng),o.lat=Math.max(e.lat,o.lat),o.lng=Math.max(e.lng,o.lng)):(this._southWest=new j(i.lat,i.lng),this._northEast=new j(e.lat,e.lng)),this},pad:function(t){var i=this._southWest,e=this._northEast,n=Math.abs(i.lat-e.lat)*t,o=Math.abs(i.lng-e.lng)*t;return new N(new j(i.lat-n,i.lng-o),new j(e.lat+n,e.lng+o))},getCenter:function(){return new j((this._southWest.lat+this._northEast.lat)/2,(this._southWest.lng+this._northEast.lng)/2)},getSouthWest:function(){return this._southWest},getNorthEast:function(){return this._northEast},getNorthWest:function(){return new j(this.getNorth(),this.getWest())},getSouthEast:function(){return new j(this.getSouth(),this.getEast())},getWest:function(){return this._southWest.lng},getSouth:function(){return this._southWest.lat},getEast:function(){return this._northEast.lng},getNorth:function(){return this._northEast.lat},contains:function(t){t="number"==typeof t[0]||t instanceof j||"lat"in t?W(t):D(t);var i,e,n=this._southWest,o=this._northEast;return t instanceof N?(i=t.getSouthWest(),e=t.getNorthEast()):i=e=t,i.lat>=n.lat&&e.lat<=o.lat&&i.lng>=n.lng&&e.lng<=o.lng},intersects:function(t){t=D(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>=i.lat&&n.lat<=e.lat,r=o.lng>=i.lng&&n.lng<=e.lng;return s&&r},overlaps:function(t){t=D(t);var i=this._southWest,e=this._northEast,n=t.getSouthWest(),o=t.getNorthEast(),s=o.lat>i.lat&&n.lat<e.lat,r=o.lng>i.lng&&n.lng<e.lng;return s&&r},toBBoxString:function(){return[this.getWest(),this.getSouth(),this.getEast(),this.getNorth()].join(",")},equals:function(t,i){return!!t&&(t=D(t),this._southWest.equals(t.getSouthWest(),i)&&this._northEast.equals(t.getNorthEast(),i))},isValid:function(){return!(!this._southWest||!this._northEast)}};var H,F={latLngToPoint:function(t,i){var e=this.projection.project(t),n=this.scale(i);return this.transformation._transform(e,n)},pointToLatLng:function(t,i){var e=this.scale(i),n=this.transformation.untransform(t,e);return this.projection.unproject(n)},project:function(t){return this.projection.project(t)},unproject:function(t){return this.projection.unproject(t)},scale:function(t){return 256*Math.pow(2,t)},zoom:function(t){return Math.log(t/256)/Math.LN2},getProjectedBounds:function(t){if(this.infinite)return null;var i=this.projection.bounds,e=this.scale(t);return new O(this.transformation.transform(i.min,e),this.transformation.transform(i.max,e))},infinite:!(j.prototype={equals:function(t,i){return!!t&&(t=W(t),Math.max(Math.abs(this.lat-t.lat),Math.abs(this.lng-t.lng))<=(void 0===i?1e-9:i))},toString:function(t){return"LatLng("+c(this.lat,t)+", "+c(this.lng,t)+")"},distanceTo:function(t){return U.distance(this,W(t))},wrap:function(){return U.wrapLatLng(this)},toBounds:function(t){var i=180*t/40075017,e=i/Math.cos(Math.PI/180*this.lat);return D([this.lat-i,this.lng-e],[this.lat+i,this.lng+e])},clone:function(){return new j(this.lat,this.lng,this.alt)}}),wrapLatLng:function(t){var i=this.wrapLng?r(t.lng,this.wrapLng,!0):t.lng;return new j(this.wrapLat?r(t.lat,this.wrapLat,!0):t.lat,i,t.alt)},wrapLatLngBounds:function(t){var i=t.getCenter(),e=this.wrapLatLng(i),n=i.lat-e.lat,o=i.lng-e.lng;if(0==n&&0==o)return t;var s=t.getSouthWest(),r=t.getNorthEast();return new N(new j(s.lat-n,s.lng-o),new j(r.lat-n,r.lng-o))}},U=h({},F,{wrapLng:[-180,180],R:6371e3,distance:function(t,i){var e=Math.PI/180,n=t.lat*e,o=i.lat*e,s=Math.sin((i.lat-t.lat)*e/2),r=Math.sin((i.lng-t.lng)*e/2),a=s*s+Math.cos(n)*Math.cos(o)*r*r,h=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));return this.R*h}}),V=6378137,q={R:V,MAX_LATITUDE:85.0511287798,project:function(t){var i=Math.PI/180,e=this.MAX_LATITUDE,n=Math.max(Math.min(e,t.lat),-e),o=Math.sin(n*i);return new B(this.R*t.lng*i,this.R*Math.log((1+o)/(1-o))/2)},unproject:function(t){var i=180/Math.PI;return new j((2*Math.atan(Math.exp(t.y/this.R))-Math.PI/2)*i,t.x*i/this.R)},bounds:(H=V*Math.PI,new O([-H,-H],[H,H]))};function G(t,i,e,n){if(v(t))return this._a=t[0],this._b=t[1],this._c=t[2],void(this._d=t[3]);this._a=t,this._b=i,this._c=e,this._d=n}function K(t,i,e,n){return new G(t,i,e,n)}G.prototype={transform:function(t,i){return this._transform(t.clone(),i)},_transform:function(t,i){return i=i||1,t.x=i*(this._a*t.x+this._b),t.y=i*(this._c*t.y+this._d),t},untransform:function(t,i){return i=i||1,new B((t.x/i-this._b)/this._a,(t.y/i-this._d)/this._c)}};var Y,X=h({},U,{code:"EPSG:3857",projection:q,transformation:(Y=.5/(Math.PI*q.R),K(Y,.5,-Y,.5))}),J=h({},X,{code:"EPSG:900913"});function $(t){return document.createElementNS("http://www.w3.org/2000/svg",t)}function Q(t,i){var e,n,o,s,r,a,h="";for(e=0,o=t.length;e<o;e++){for(n=0,s=(r=t[e]).length;n<s;n++)h+=(n?"L":"M")+(a=r[n]).x+" "+a.y;h+=i?Zt?"z":"x":""}return h||"M0 0"}var tt=document.documentElement.style,it="ActiveXObject"in window,et=it&&!document.addEventListener,nt="msLaunchUri"in navigator&&!("documentMode"in document),ot=kt("webkit"),st=kt("android"),rt=kt("android 2")||kt("android 3"),at=parseInt(/WebKit\/([0-9]+)|$/.exec(navigator.userAgent)[1],10),ht=st&&kt("Google")&&at<537&&!("AudioNode"in window),ut=!!window.opera,lt=kt("chrome"),ct=kt("gecko")&&!ot&&!ut&&!it,_t=!lt&&kt("safari"),dt=kt("phantom"),pt="OTransition"in tt,mt=0===navigator.platform.indexOf("Win"),ft=it&&"transition"in tt,gt="WebKitCSSMatrix"in window&&"m11"in new window.WebKitCSSMatrix&&!rt,vt="MozPerspective"in tt,yt=!window.L_DISABLE_3D&&(ft||gt||vt)&&!pt&&!dt,xt="undefined"!=typeof orientation||kt("mobile"),wt=xt&&ot,Pt=xt&&gt,Lt=!window.PointerEvent&&window.MSPointerEvent,bt=!(!window.PointerEvent&&!Lt),Tt=!window.L_NO_TOUCH&&(bt||"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch),zt=xt&&ut,Mt=xt&&ct,Ct=1<(window.devicePixelRatio||window.screen.deviceXDPI/window.screen.logicalXDPI),St=!!document.createElement("canvas").getContext,Zt=!(!document.createElementNS||!$("svg").createSVGRect),Et=!Zt&&function(){try{var t=document.createElement("div");t.innerHTML='<v:shape adj="1"/>';var i=t.firstChild;return i.style.behavior="url(#default#VML)",i&&"object"==typeof i.adj}catch(t){return!1}}();function kt(t){return 0<=navigator.userAgent.toLowerCase().indexOf(t)}var Bt=(Object.freeze||Object)({ie:it,ielt9:et,edge:nt,webkit:ot,android:st,android23:rt,androidStock:ht,opera:ut,chrome:lt,gecko:ct,safari:_t,phantom:dt,opera12:pt,win:mt,ie3d:ft,webkit3d:gt,gecko3d:vt,any3d:yt,mobile:xt,mobileWebkit:wt,mobileWebkit3d:Pt,msPointer:Lt,pointer:bt,touch:Tt,mobileOpera:zt,mobileGecko:Mt,retina:Ct,canvas:St,svg:Zt,vml:Et}),At=Lt?"MSPointerDown":"pointerdown",It=Lt?"MSPointerMove":"pointermove",Ot=Lt?"MSPointerUp":"pointerup",Rt=Lt?"MSPointerCancel":"pointercancel",Nt=["INPUT","SELECT","OPTION"],Dt={},jt=!1,Wt=0;function Ht(t,i,e,n){return"touchstart"===i?function(t,i,e){var n=a(function(t){if("mouse"!==t.pointerType&&t.MSPOINTER_TYPE_MOUSE&&t.pointerType!==t.MSPOINTER_TYPE_MOUSE){if(!(Nt.indexOf(t.target.tagName)<0))return;Di(t)}qt(t,i)});t["_leaflet_touchstart"+e]=n,t.addEventListener(At,n,!1),jt||(document.documentElement.addEventListener(At,Ft,!0),document.documentElement.addEventListener(It,Ut,!0),document.documentElement.addEventListener(Ot,Vt,!0),document.documentElement.addEventListener(Rt,Vt,!0),jt=!0)}(t,e,n):"touchmove"===i?function(t,i,e){var n=function(t){(t.pointerType!==t.MSPOINTER_TYPE_MOUSE&&"mouse"!==t.pointerType||0!==t.buttons)&&qt(t,i)};t["_leaflet_touchmove"+e]=n,t.addEventListener(It,n,!1)}(t,e,n):"touchend"===i&&function(t,i,e){var n=function(t){qt(t,i)};t["_leaflet_touchend"+e]=n,t.addEventListener(Ot,n,!1),t.addEventListener(Rt,n,!1)}(t,e,n),this}function Ft(t){Dt[t.pointerId]=t,Wt++}function Ut(t){Dt[t.pointerId]&&(Dt[t.pointerId]=t)}function Vt(t){delete Dt[t.pointerId],Wt--}function qt(t,i){for(var e in t.touches=[],Dt)t.touches.push(Dt[e]);t.changedTouches=[t],i(t)}var Gt=Lt?"MSPointerDown":bt?"pointerdown":"touchstart",Kt=Lt?"MSPointerUp":bt?"pointerup":"touchend",Yt="_leaflet_";function Xt(t,o,i){var s,r,a=!1;function e(t){var i;if(bt){if(!nt||"mouse"===t.pointerType)return;i=Wt}else i=t.touches.length;if(!(1<i)){var e=Date.now(),n=e-(s||e);r=t.touches?t.touches[0]:t,a=0<n&&n<=250,s=e}}function n(t){if(a&&!r.cancelBubble){if(bt){if(!nt||"mouse"===t.pointerType)return;var i,e,n={};for(e in r)i=r[e],n[e]=i&&i.bind?i.bind(r):i;r=n}r.type="dblclick",r.button=0,o(r),s=null}}return t[Yt+Gt+i]=e,t[Yt+Kt+i]=n,t[Yt+"dblclick"+i]=o,t.addEventListener(Gt,e,!1),t.addEventListener(Kt,n,!1),t.addEventListener("dblclick",o,!1),this}function Jt(t,i){var e=t[Yt+Gt+i],n=t[Yt+Kt+i],o=t[Yt+"dblclick"+i];return t.removeEventListener(Gt,e,!1),t.removeEventListener(Kt,n,!1),nt||t.removeEventListener("dblclick",o,!1),this}var $t,Qt,ti,ii,ei,ni=yi(["transform","webkitTransform","OTransform","MozTransform","msTransform"]),oi=yi(["webkitTransition","transition","OTransition","MozTransition","msTransition"]),si="webkitTransition"===oi||"OTransition"===oi?oi+"End":"transitionend";function ri(t){return"string"==typeof t?document.getElementById(t):t}function ai(t,i){var e=t.style[i]||t.currentStyle&&t.currentStyle[i];if((!e||"auto"===e)&&document.defaultView){var n=document.defaultView.getComputedStyle(t,null);e=n?n[i]:null}return"auto"===e?null:e}function hi(t,i,e){var n=document.createElement(t);return n.className=i||"",e&&e.appendChild(n),n}function ui(t){var i=t.parentNode;i&&i.removeChild(t)}function li(t){for(;t.firstChild;)t.removeChild(t.firstChild)}function ci(t){var i=t.parentNode;i&&i.lastChild!==t&&i.appendChild(t)}function _i(t){var i=t.parentNode;i&&i.firstChild!==t&&i.insertBefore(t,i.firstChild)}function di(t,i){if(void 0!==t.classList)return t.classList.contains(i);var e=gi(t);return 0<e.length&&new RegExp("(^|\\s)"+i+"(\\s|$)").test(e)}function pi(t,i){if(void 0!==t.classList)for(var e=d(i),n=0,o=e.length;n<o;n++)t.classList.add(e[n]);else if(!di(t,i)){var s=gi(t);fi(t,(s?s+" ":"")+i)}}function mi(t,i){void 0!==t.classList?t.classList.remove(i):fi(t,_((" "+gi(t)+" ").replace(" "+i+" "," ")))}function fi(t,i){void 0===t.className.baseVal?t.className=i:t.className.baseVal=i}function gi(t){return t.correspondingElement&&(t=t.correspondingElement),void 0===t.className.baseVal?t.className:t.className.baseVal}function vi(t,i){"opacity"in t.style?t.style.opacity=i:"filter"in t.style&&function(t,i){var e=!1,n="DXImageTransform.Microsoft.Alpha";try{e=t.filters.item(n)}catch(t){if(1===i)return}i=Math.round(100*i),e?(e.Enabled=100!==i,e.Opacity=i):t.style.filter+=" progid:"+n+"(opacity="+i+")"}(t,i)}function yi(t){for(var i=document.documentElement.style,e=0;e<t.length;e++)if(t[e]in i)return t[e];return!1}function xi(t,i,e){var n=i||new B(0,0);t.style[ni]=(ft?"translate("+n.x+"px,"+n.y+"px)":"translate3d("+n.x+"px,"+n.y+"px,0)")+(e?" scale("+e+")":"")}function wi(t,i){t._leaflet_pos=i,yt?xi(t,i):(t.style.left=i.x+"px",t.style.top=i.y+"px")}function Pi(t){return t._leaflet_pos||new B(0,0)}if("onselectstart"in document)$t=function(){Ei(window,"selectstart",Di)},Qt=function(){Bi(window,"selectstart",Di)};else{var Li=yi(["userSelect","WebkitUserSelect","OUserSelect","MozUserSelect","msUserSelect"]);$t=function(){if(Li){var t=document.documentElement.style;ti=t[Li],t[Li]="none"}},Qt=function(){Li&&(document.documentElement.style[Li]=ti,ti=void 0)}}function bi(){Ei(window,"dragstart",Di)}function Ti(){Bi(window,"dragstart",Di)}function zi(t){for(;-1===t.tabIndex;)t=t.parentNode;t.style&&(Mi(),ei=(ii=t).style.outline,t.style.outline="none",Ei(window,"keydown",Mi))}function Mi(){ii&&(ii.style.outline=ei,ei=ii=void 0,Bi(window,"keydown",Mi))}function Ci(t){for(;!((t=t.parentNode).offsetWidth&&t.offsetHeight||t===document.body););return t}function Si(t){var i=t.getBoundingClientRect();return{x:i.width/t.offsetWidth||1,y:i.height/t.offsetHeight||1,boundingClientRect:i}}var Zi=(Object.freeze||Object)({TRANSFORM:ni,TRANSITION:oi,TRANSITION_END:si,get:ri,getStyle:ai,create:hi,remove:ui,empty:li,toFront:ci,toBack:_i,hasClass:di,addClass:pi,removeClass:mi,setClass:fi,getClass:gi,setOpacity:vi,testProp:yi,setTransform:xi,setPosition:wi,getPosition:Pi,disableTextSelection:$t,enableTextSelection:Qt,disableImageDrag:bi,enableImageDrag:Ti,preventOutline:zi,restoreOutline:Mi,getSizedParentNode:Ci,getScale:Si});function Ei(t,i,e,n){if("object"==typeof i)for(var o in i)Ai(t,o,i[o],e);else for(var s=0,r=(i=d(i)).length;s<r;s++)Ai(t,i[s],e,n);return this}var ki="_leaflet_events";function Bi(t,i,e,n){if("object"==typeof i)for(var o in i)Ii(t,o,i[o],e);else if(i)for(var s=0,r=(i=d(i)).length;s<r;s++)Ii(t,i[s],e,n);else{for(var a in t[ki])Ii(t,a,t[ki][a]);delete t[ki]}return this}function Ai(i,t,e,n){var o=t+u(e)+(n?"_"+u(n):"");if(i[ki]&&i[ki][o])return this;var s=function(t){return e.call(n||i,t||window.event)},r=s;bt&&0===t.indexOf("touch")?Ht(i,t,s,o):!Tt||"dblclick"!==t||bt&&lt?"addEventListener"in i?"mousewheel"===t?i.addEventListener("onwheel"in i?"wheel":"mousewheel",s,!1):"mouseenter"===t||"mouseleave"===t?(s=function(t){t=t||window.event,Ki(i,t)&&r(t)},i.addEventListener("mouseenter"===t?"mouseover":"mouseout",s,!1)):("click"===t&&st&&(s=function(t){!function(t,i){var e=t.timeStamp||t.originalEvent&&t.originalEvent.timeStamp,n=Ui&&e-Ui;if(n&&100<n&&n<500||t.target._simulatedClick&&!t._simulated)return ji(t);Ui=e,i(t)}(t,r)}),i.addEventListener(t,s,!1)):"attachEvent"in i&&i.attachEvent("on"+t,s):Xt(i,s,o),i[ki]=i[ki]||{},i[ki][o]=s}function Ii(t,i,e,n){var o=i+u(e)+(n?"_"+u(n):""),s=t[ki]&&t[ki][o];if(!s)return this;bt&&0===i.indexOf("touch")?function(t,i,e){var n=t["_leaflet_"+i+e];"touchstart"===i?t.removeEventListener(At,n,!1):"touchmove"===i?t.removeEventListener(It,n,!1):"touchend"===i&&(t.removeEventListener(Ot,n,!1),t.removeEventListener(Rt,n,!1))}(t,i,o):!Tt||"dblclick"!==i||bt&&lt?"removeEventListener"in t?"mousewheel"===i?t.removeEventListener("onwheel"in t?"wheel":"mousewheel",s,!1):t.removeEventListener("mouseenter"===i?"mouseover":"mouseleave"===i?"mouseout":i,s,!1):"detachEvent"in t&&t.detachEvent("on"+i,s):Jt(t,o),t[ki][o]=null}function Oi(t){return t.stopPropagation?t.stopPropagation():t.originalEvent?t.originalEvent._stopped=!0:t.cancelBubble=!0,Gi(t),this}function Ri(t){return Ai(t,"mousewheel",Oi),this}function Ni(t){return Ei(t,"mousedown touchstart dblclick",Oi),Ai(t,"click",qi),this}function Di(t){return t.preventDefault?t.preventDefault():t.returnValue=!1,this}function ji(t){return Di(t),Oi(t),this}function Wi(t,i){if(!i)return new B(t.clientX,t.clientY);var e=Si(i),n=e.boundingClientRect;return new B((t.clientX-n.left)/e.x-i.clientLeft,(t.clientY-n.top)/e.y-i.clientTop)}var Hi=mt&&lt?2*window.devicePixelRatio:ct?window.devicePixelRatio:1;function Fi(t){return nt?t.wheelDeltaY/2:t.deltaY&&0===t.deltaMode?-t.deltaY/Hi:t.deltaY&&1===t.deltaMode?20*-t.deltaY:t.deltaY&&2===t.deltaMode?60*-t.deltaY:t.deltaX||t.deltaZ?0:t.wheelDelta?(t.wheelDeltaY||t.wheelDelta)/2:t.detail&&Math.abs(t.detail)<32765?20*-t.detail:t.detail?t.detail/-32765*60:0}var Ui,Vi={};function qi(t){Vi[t.type]=!0}function Gi(t){var i=Vi[t.type];return Vi[t.type]=!1,i}function Ki(t,i){var e=i.relatedTarget;if(!e)return!0;try{for(;e&&e!==t;)e=e.parentNode}catch(t){return!1}return e!==t}var Yi=(Object.freeze||Object)({on:Ei,off:Bi,stopPropagation:Oi,disableScrollPropagation:Ri,disableClickPropagation:Ni,preventDefault:Di,stop:ji,getMousePosition:Wi,getWheelDelta:Fi,fakeStop:qi,skipped:Gi,isExternalTarget:Ki,addListener:Ei,removeListener:Bi}),Xi=k.extend({run:function(t,i,e,n){this.stop(),this._el=t,this._inProgress=!0,this._duration=e||.25,this._easeOutPower=1/Math.max(n||.5,.2),this._startPos=Pi(t),this._offset=i.subtract(this._startPos),this._startTime=+new Date,this.fire("start"),this._animate()},stop:function(){this._inProgress&&(this._step(!0),this._complete())},_animate:function(){this._animId=M(this._animate,this),this._step()},_step:function(t){var i=+new Date-this._startTime,e=1e3*this._duration;i<e?this._runFrame(this._easeOut(i/e),t):(this._runFrame(1),this._complete())},_runFrame:function(t,i){var e=this._startPos.add(this._offset.multiplyBy(t));i&&e._round(),wi(this._el,e),this.fire("step")},_complete:function(){C(this._animId),this._inProgress=!1,this.fire("end")},_easeOut:function(t){return 1-Math.pow(1-t,this._easeOutPower)}}),Ji=k.extend({options:{crs:X,center:void 0,zoom:void 0,minZoom:void 0,maxZoom:void 0,layers:[],maxBounds:void 0,renderer:void 0,zoomAnimation:!0,zoomAnimationThreshold:4,fadeAnimation:!0,markerZoomAnimation:!0,transform3DLimit:8388608,zoomSnap:1,zoomDelta:1,trackResize:!0},initialize:function(t,i){i=p(this,i),this._handlers=[],this._layers={},this._zoomBoundLayers={},this._sizeChanged=!0,this._initContainer(t),this._initLayout(),this._onResize=a(this._onResize,this),this._initEvents(),i.maxBounds&&this.setMaxBounds(i.maxBounds),void 0!==i.zoom&&(this._zoom=this._limitZoom(i.zoom)),i.center&&void 0!==i.zoom&&this.setView(W(i.center),i.zoom,{reset:!0}),this.callInitHooks(),this._zoomAnimated=oi&&yt&&!zt&&this.options.zoomAnimation,this._zoomAnimated&&(this._createAnimProxy(),Ei(this._proxy,si,this._catchTransitionEnd,this)),this._addLayers(this.options.layers)},setView:function(t,i,e){if((i=void 0===i?this._zoom:this._limitZoom(i),t=this._limitCenter(W(t),i,this.options.maxBounds),e=e||{},this._stop(),this._loaded&&!e.reset&&!0!==e)&&(void 0!==e.animate&&(e.zoom=h({animate:e.animate},e.zoom),e.pan=h({animate:e.animate,duration:e.duration},e.pan)),this._zoom!==i?this._tryAnimatedZoom&&this._tryAnimatedZoom(t,i,e.zoom):this._tryAnimatedPan(t,e.pan)))return clearTimeout(this._sizeTimer),this;return this._resetView(t,i),this},setZoom:function(t,i){return this._loaded?this.setView(this.getCenter(),t,{zoom:i}):(this._zoom=t,this)},zoomIn:function(t,i){return t=t||(yt?this.options.zoomDelta:1),this.setZoom(this._zoom+t,i)},zoomOut:function(t,i){return t=t||(yt?this.options.zoomDelta:1),this.setZoom(this._zoom-t,i)},setZoomAround:function(t,i,e){var n=this.getZoomScale(i),o=this.getSize().divideBy(2),s=(t instanceof B?t:this.latLngToContainerPoint(t)).subtract(o).multiplyBy(1-1/n),r=this.containerPointToLatLng(o.add(s));return this.setView(r,i,{zoom:e})},_getBoundsCenterZoom:function(t,i){i=i||{},t=t.getBounds?t.getBounds():D(t);var e=I(i.paddingTopLeft||i.padding||[0,0]),n=I(i.paddingBottomRight||i.padding||[0,0]),o=this.getBoundsZoom(t,!1,e.add(n));if((o="number"==typeof i.maxZoom?Math.min(i.maxZoom,o):o)===1/0)return{center:t.getCenter(),zoom:o};var s=n.subtract(e).divideBy(2),r=this.project(t.getSouthWest(),o),a=this.project(t.getNorthEast(),o);return{center:this.unproject(r.add(a).divideBy(2).add(s),o),zoom:o}},fitBounds:function(t,i){if(!(t=D(t)).isValid())throw new Error("Bounds are not valid.");var e=this._getBoundsCenterZoom(t,i);return this.setView(e.center,e.zoom,i)},fitWorld:function(t){return this.fitBounds([[-90,-180],[90,180]],t)},panTo:function(t,i){return this.setView(t,this._zoom,{pan:i})},panBy:function(t,i){if(i=i||{},!(t=I(t).round()).x&&!t.y)return this.fire("moveend");if(!0!==i.animate&&!this.getSize().contains(t))return this._resetView(this.unproject(this.project(this.getCenter()).add(t)),this.getZoom()),this;if(this._panAnim||(this._panAnim=new Xi,this._panAnim.on({step:this._onPanTransitionStep,end:this._onPanTransitionEnd},this)),i.noMoveStart||this.fire("movestart"),!1!==i.animate){pi(this._mapPane,"leaflet-pan-anim");var e=this._getMapPanePos().subtract(t).round();this._panAnim.run(this._mapPane,e,i.duration||.25,i.easeLinearity)}else this._rawPanBy(t),this.fire("move").fire("moveend");return this},flyTo:function(n,o,t){if(!1===(t=t||{}).animate||!yt)return this.setView(n,o,t);this._stop();var s=this.project(this.getCenter()),r=this.project(n),i=this.getSize(),a=this._zoom;n=W(n),o=void 0===o?a:o;var h=Math.max(i.x,i.y),u=h*this.getZoomScale(a,o),l=r.distanceTo(s)||1,c=1.42,_=c*c;function e(t){var i=(u*u-h*h+(t?-1:1)*_*_*l*l)/(2*(t?u:h)*_*l),e=Math.sqrt(i*i+1)-i;return e<1e-9?-18:Math.log(e)}function d(t){return(Math.exp(t)-Math.exp(-t))/2}function p(t){return(Math.exp(t)+Math.exp(-t))/2}var m=e(0);function f(t){return h*(p(m)*function(t){return d(t)/p(t)}(m+c*t)-d(m))/_}var g=Date.now(),v=(e(1)-m)/c,y=t.duration?1e3*t.duration:1e3*v*.8;return this._moveStart(!0,t.noMoveStart),function t(){var i=(Date.now()-g)/y,e=function(t){return 1-Math.pow(1-t,1.5)}(i)*v;i<=1?(this._flyToFrame=M(t,this),this._move(this.unproject(s.add(r.subtract(s).multiplyBy(f(e)/l)),a),this.getScaleZoom(h/function(t){return h*(p(m)/p(m+c*t))}(e),a),{flyTo:!0})):this._move(n,o)._moveEnd(!0)}.call(this),this},flyToBounds:function(t,i){var e=this._getBoundsCenterZoom(t,i);return this.flyTo(e.center,e.zoom,i)},setMaxBounds:function(t){return(t=D(t)).isValid()?(this.options.maxBounds&&this.off("moveend",this._panInsideMaxBounds),this.options.maxBounds=t,this._loaded&&this._panInsideMaxBounds(),this.on("moveend",this._panInsideMaxBounds)):(this.options.maxBounds=null,this.off("moveend",this._panInsideMaxBounds))},setMinZoom:function(t){var i=this.options.minZoom;return this.options.minZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()<this.options.minZoom)?this.setZoom(t):this},setMaxZoom:function(t){var i=this.options.maxZoom;return this.options.maxZoom=t,this._loaded&&i!==t&&(this.fire("zoomlevelschange"),this.getZoom()>this.options.maxZoom)?this.setZoom(t):this},panInsideBounds:function(t,i){this._enforcingBounds=!0;var e=this.getCenter(),n=this._limitCenter(e,this._zoom,D(t));return e.equals(n)||this.panTo(n,i),this._enforcingBounds=!1,this},panInside:function(t,i){var e=I((i=i||{}).paddingTopLeft||i.padding||[0,0]),n=I(i.paddingBottomRight||i.padding||[0,0]),o=this.getCenter(),s=this.project(o),r=this.project(t),a=this.getPixelBounds(),h=a.getSize().divideBy(2),u=R([a.min.add(e),a.max.subtract(n)]);if(!u.contains(r)){this._enforcingBounds=!0;var l=s.subtract(r),c=I(r.x+l.x,r.y+l.y);(r.x<u.min.x||r.x>u.max.x)&&(c.x=s.x-l.x,0<l.x?c.x+=h.x-e.x:c.x-=h.x-n.x),(r.y<u.min.y||r.y>u.max.y)&&(c.y=s.y-l.y,0<l.y?c.y+=h.y-e.y:c.y-=h.y-n.y),this.panTo(this.unproject(c),i),this._enforcingBounds=!1}return this},invalidateSize:function(t){if(!this._loaded)return this;t=h({animate:!1,pan:!0},!0===t?{animate:!0}:t);var i=this.getSize();this._sizeChanged=!0,this._lastCenter=null;var e=this.getSize(),n=i.divideBy(2).round(),o=e.divideBy(2).round(),s=n.subtract(o);return s.x||s.y?(t.animate&&t.pan?this.panBy(s):(t.pan&&this._rawPanBy(s),this.fire("move"),t.debounceMoveend?(clearTimeout(this._sizeTimer),this._sizeTimer=setTimeout(a(this.fire,this,"moveend"),200)):this.fire("moveend")),this.fire("resize",{oldSize:i,newSize:e})):this},stop:function(){return this.setZoom(this._limitZoom(this._zoom)),this.options.zoomSnap||this.fire("viewreset"),this._stop()},locate:function(t){if(t=this._locateOptions=h({timeout:1e4,watch:!1},t),!("geolocation"in navigator))return this._handleGeolocationError({code:0,message:"Geolocation not supported."}),this;var i=a(this._handleGeolocationResponse,this),e=a(this._handleGeolocationError,this);return t.watch?this._locationWatchId=navigator.geolocation.watchPosition(i,e,t):navigator.geolocation.getCurrentPosition(i,e,t),this},stopLocate:function(){return navigator.geolocation&&navigator.geolocation.clearWatch&&navigator.geolocation.clearWatch(this._locationWatchId),this._locateOptions&&(this._locateOptions.setView=!1),this},_handleGeolocationError:function(t){var i=t.code,e=t.message||(1===i?"permission denied":2===i?"position unavailable":"timeout");this._locateOptions.setView&&!this._loaded&&this.fitWorld(),this.fire("locationerror",{code:i,message:"Geolocation error: "+e+"."})},_handleGeolocationResponse:function(t){var i=new j(t.coords.latitude,t.coords.longitude),e=i.toBounds(2*t.coords.accuracy),n=this._locateOptions;if(n.setView){var o=this.getBoundsZoom(e);this.setView(i,n.maxZoom?Math.min(o,n.maxZoom):o)}var s={latlng:i,bounds:e,timestamp:t.timestamp};for(var r in t.coords)"number"==typeof t.coords[r]&&(s[r]=t.coords[r]);this.fire("locationfound",s)},addHandler:function(t,i){if(!i)return this;var e=this[t]=new i(this);return this._handlers.push(e),this.options[t]&&e.enable(),this},remove:function(){if(this._initEvents(!0),this._containerId!==this._container._leaflet_id)throw new Error("Map container is being reused by another instance");try{delete this._container._leaflet_id,delete this._containerId}catch(t){this._container._leaflet_id=void 0,this._containerId=void 0}var t;for(t in void 0!==this._locationWatchId&&this.stopLocate(),this._stop(),ui(this._mapPane),this._clearControlPos&&this._clearControlPos(),this._resizeRequest&&(C(this._resizeRequest),this._resizeRequest=null),this._clearHandlers(),this._loaded&&this.fire("unload"),this._layers)this._layers[t].remove();for(t in this._panes)ui(this._panes[t]);return this._layers=[],this._panes=[],delete this._mapPane,delete this._renderer,this},createPane:function(t,i){var e=hi("div","leaflet-pane"+(t?" leaflet-"+t.replace("Pane","")+"-pane":""),i||this._mapPane);return t&&(this._panes[t]=e),e},getCenter:function(){return this._checkIfLoaded(),this._lastCenter&&!this._moved()?this._lastCenter:this.layerPointToLatLng(this._getCenterLayerPoint())},getZoom:function(){return this._zoom},getBounds:function(){var t=this.getPixelBounds();return new N(this.unproject(t.getBottomLeft()),this.unproject(t.getTopRight()))},getMinZoom:function(){return void 0===this.options.minZoom?this._layersMinZoom||0:this.options.minZoom},getMaxZoom:function(){return void 0===this.options.maxZoom?void 0===this._layersMaxZoom?1/0:this._layersMaxZoom:this.options.maxZoom},getBoundsZoom:function(t,i,e){t=D(t),e=I(e||[0,0]);var n=this.getZoom()||0,o=this.getMinZoom(),s=this.getMaxZoom(),r=t.getNorthWest(),a=t.getSouthEast(),h=this.getSize().subtract(e),u=R(this.project(a,n),this.project(r,n)).getSize(),l=yt?this.options.zoomSnap:1,c=h.x/u.x,_=h.y/u.y,d=i?Math.max(c,_):Math.min(c,_);return n=this.getScaleZoom(d,n),l&&(n=Math.round(n/(l/100))*(l/100),n=i?Math.ceil(n/l)*l:Math.floor(n/l)*l),Math.max(o,Math.min(s,n))},getSize:function(){return this._size&&!this._sizeChanged||(this._size=new B(this._container.clientWidth||0,this._container.clientHeight||0),this._sizeChanged=!1),this._size.clone()},getPixelBounds:function(t,i){var e=this._getTopLeftPoint(t,i);return new O(e,e.add(this.getSize()))},getPixelOrigin:function(){return this._checkIfLoaded(),this._pixelOrigin},getPixelWorldBounds:function(t){return this.options.crs.getProjectedBounds(void 0===t?this.getZoom():t)},getPane:function(t){return"string"==typeof t?this._panes[t]:t},getPanes:function(){return this._panes},getContainer:function(){return this._container},getZoomScale:function(t,i){var e=this.options.crs;return i=void 0===i?this._zoom:i,e.scale(t)/e.scale(i)},getScaleZoom:function(t,i){var e=this.options.crs;i=void 0===i?this._zoom:i;var n=e.zoom(t*e.scale(i));return isNaN(n)?1/0:n},project:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.latLngToPoint(W(t),i)},unproject:function(t,i){return i=void 0===i?this._zoom:i,this.options.crs.pointToLatLng(I(t),i)},layerPointToLatLng:function(t){var i=I(t).add(this.getPixelOrigin());return this.unproject(i)},latLngToLayerPoint:function(t){return this.project(W(t))._round()._subtract(this.getPixelOrigin())},wrapLatLng:function(t){return this.options.crs.wrapLatLng(W(t))},wrapLatLngBounds:function(t){return this.options.crs.wrapLatLngBounds(D(t))},distance:function(t,i){return this.options.crs.distance(W(t),W(i))},containerPointToLayerPoint:function(t){return I(t).subtract(this._getMapPanePos())},layerPointToContainerPoint:function(t){return I(t).add(this._getMapPanePos())},containerPointToLatLng:function(t){var i=this.containerPointToLayerPoint(I(t));return this.layerPointToLatLng(i)},latLngToContainerPoint:function(t){return this.layerPointToContainerPoint(this.latLngToLayerPoint(W(t)))},mouseEventToContainerPoint:function(t){return Wi(t,this._container)},mouseEventToLayerPoint:function(t){return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))},mouseEventToLatLng:function(t){return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))},_initContainer:function(t){var i=this._container=ri(t);if(!i)throw new Error("Map container not found.");if(i._leaflet_id)throw new Error("Map container is already initialized.");Ei(i,"scroll",this._onScroll,this),this._containerId=u(i)},_initLayout:function(){var t=this._container;this._fadeAnimated=this.options.fadeAnimation&&yt,pi(t,"leaflet-container"+(Tt?" leaflet-touch":"")+(Ct?" leaflet-retina":"")+(et?" leaflet-oldie":"")+(_t?" leaflet-safari":"")+(this._fadeAnimated?" leaflet-fade-anim":""));var i=ai(t,"position");"absolute"!==i&&"relative"!==i&&"fixed"!==i&&(t.style.position="relative"),this._initPanes(),this._initControlPos&&this._initControlPos()},_initPanes:function(){var t=this._panes={};this._paneRenderers={},this._mapPane=this.createPane("mapPane",this._container),wi(this._mapPane,new B(0,0)),this.createPane("tilePane"),this.createPane("shadowPane"),this.createPane("overlayPane"),this.createPane("markerPane"),this.createPane("tooltipPane"),this.createPane("popupPane"),this.options.markerZoomAnimation||(pi(t.markerPane,"leaflet-zoom-hide"),pi(t.shadowPane,"leaflet-zoom-hide"))},_resetView:function(t,i){wi(this._mapPane,new B(0,0));var e=!this._loaded;this._loaded=!0,i=this._limitZoom(i),this.fire("viewprereset");var n=this._zoom!==i;this._moveStart(n,!1)._move(t,i)._moveEnd(n),this.fire("viewreset"),e&&this.fire("load")},_moveStart:function(t,i){return t&&this.fire("zoomstart"),i||this.fire("movestart"),this},_move:function(t,i,e){void 0===i&&(i=this._zoom);var n=this._zoom!==i;return this._zoom=i,this._lastCenter=t,this._pixelOrigin=this._getNewPixelOrigin(t),(n||e&&e.pinch)&&this.fire("zoom",e),this.fire("move",e)},_moveEnd:function(t){return t&&this.fire("zoomend"),this.fire("moveend")},_stop:function(){return C(this._flyToFrame),this._panAnim&&this._panAnim.stop(),this},_rawPanBy:function(t){wi(this._mapPane,this._getMapPanePos().subtract(t))},_getZoomSpan:function(){return this.getMaxZoom()-this.getMinZoom()},_panInsideMaxBounds:function(){this._enforcingBounds||this.panInsideBounds(this.options.maxBounds)},_checkIfLoaded:function(){if(!this._loaded)throw new Error("Set map center and zoom first.")},_initEvents:function(t){this._targets={};var i=t?Bi:Ei;i((this._targets[u(this._container)]=this)._container,"click dblclick mousedown mouseup mouseover mouseout mousemove contextmenu keypress keydown keyup",this._handleDOMEvent,this),this.options.trackResize&&i(window,"resize",this._onResize,this),yt&&this.options.transform3DLimit&&(t?this.off:this.on).call(this,"moveend",this._onMoveEnd)},_onResize:function(){C(this._resizeRequest),this._resizeRequest=M(function(){this.invalidateSize({debounceMoveend:!0})},this)},_onScroll:function(){this._container.scrollTop=0,this._container.scrollLeft=0},_onMoveEnd:function(){var t=this._getMapPanePos();Math.max(Math.abs(t.x),Math.abs(t.y))>=this.options.transform3DLimit&&this._resetView(this.getCenter(),this.getZoom())},_findEventTargets:function(t,i){for(var e,n=[],o="mouseout"===i||"mouseover"===i,s=t.target||t.srcElement,r=!1;s;){if((e=this._targets[u(s)])&&("click"===i||"preclick"===i)&&!t._simulated&&this._draggableMoved(e)){r=!0;break}if(e&&e.listens(i,!0)){if(o&&!Ki(s,t))break;if(n.push(e),o)break}if(s===this._container)break;s=s.parentNode}return n.length||r||o||!Ki(s,t)||(n=[this]),n},_handleDOMEvent:function(t){if(this._loaded&&!Gi(t)){var i=t.type;"mousedown"!==i&&"keypress"!==i&&"keyup"!==i&&"keydown"!==i||zi(t.target||t.srcElement),this._fireDOMEvent(t,i)}},_mouseEvents:["click","dblclick","mouseover","mouseout","contextmenu"],_fireDOMEvent:function(t,i,e){if("click"===t.type){var n=h({},t);n.type="preclick",this._fireDOMEvent(n,n.type,e)}if(!t._stopped&&(e=(e||[]).concat(this._findEventTargets(t,i))).length){var o=e[0];"contextmenu"===i&&o.listens(i,!0)&&Di(t);var s={originalEvent:t};if("keypress"!==t.type&&"keydown"!==t.type&&"keyup"!==t.type){var r=o.getLatLng&&(!o._radius||o._radius<=10);s.containerPoint=r?this.latLngToContainerPoint(o.getLatLng()):this.mouseEventToContainerPoint(t),s.layerPoint=this.containerPointToLayerPoint(s.containerPoint),s.latlng=r?o.getLatLng():this.layerPointToLatLng(s.layerPoint)}for(var a=0;a<e.length;a++)if(e[a].fire(i,s,!0),s.originalEvent._stopped||!1===e[a].options.bubblingMouseEvents&&-1!==y(this._mouseEvents,i))return}},_draggableMoved:function(t){return(t=t.dragging&&t.dragging.enabled()?t:this).dragging&&t.dragging.moved()||this.boxZoom&&this.boxZoom.moved()},_clearHandlers:function(){for(var t=0,i=this._handlers.length;t<i;t++)this._handlers[t].disable()},whenReady:function(t,i){return this._loaded?t.call(i||this,{target:this}):this.on("load",t,i),this},_getMapPanePos:function(){return Pi(this._mapPane)||new B(0,0)},_moved:function(){var t=this._getMapPanePos();return t&&!t.equals([0,0])},_getTopLeftPoint:function(t,i){return(t&&void 0!==i?this._getNewPixelOrigin(t,i):this.getPixelOrigin()).subtract(this._getMapPanePos())},_getNewPixelOrigin:function(t,i){var e=this.getSize()._divideBy(2);return this.project(t,i)._subtract(e)._add(this._getMapPanePos())._round()},_latLngToNewLayerPoint:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return this.project(t,i)._subtract(n)},_latLngBoundsToNewLayerBounds:function(t,i,e){var n=this._getNewPixelOrigin(e,i);return R([this.project(t.getSouthWest(),i)._subtract(n),this.project(t.getNorthWest(),i)._subtract(n),this.project(t.getSouthEast(),i)._subtract(n),this.project(t.getNorthEast(),i)._subtract(n)])},_getCenterLayerPoint:function(){return this.containerPointToLayerPoint(this.getSize()._divideBy(2))},_getCenterOffset:function(t){return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())},_limitCenter:function(t,i,e){if(!e)return t;var n=this.project(t,i),o=this.getSize().divideBy(2),s=new O(n.subtract(o),n.add(o)),r=this._getBoundsOffset(s,e,i);return r.round().equals([0,0])?t:this.unproject(n.add(r),i)},_limitOffset:function(t,i){if(!i)return t;var e=this.getPixelBounds(),n=new O(e.min.add(t),e.max.add(t));return t.add(this._getBoundsOffset(n,i))},_getBoundsOffset:function(t,i,e){var n=R(this.project(i.getNorthEast(),e),this.project(i.getSouthWest(),e)),o=n.min.subtract(t.min),s=n.max.subtract(t.max);return new B(this._rebound(o.x,-s.x),this._rebound(o.y,-s.y))},_rebound:function(t,i){return 0<t+i?Math.round(t-i)/2:Math.max(0,Math.ceil(t))-Math.max(0,Math.floor(i))},_limitZoom:function(t){var i=this.getMinZoom(),e=this.getMaxZoom(),n=yt?this.options.zoomSnap:1;return n&&(t=Math.round(t/n)*n),Math.max(i,Math.min(e,t))},_onPanTransitionStep:function(){this.fire("move")},_onPanTransitionEnd:function(){mi(this._mapPane,"leaflet-pan-anim"),this.fire("moveend")},_tryAnimatedPan:function(t,i){var e=this._getCenterOffset(t)._trunc();return!(!0!==(i&&i.animate)&&!this.getSize().contains(e))&&(this.panBy(e,i),!0)},_createAnimProxy:function(){var t=this._proxy=hi("div","leaflet-proxy leaflet-zoom-animated");this._panes.mapPane.appendChild(t),this.on("zoomanim",function(t){var i=ni,e=this._proxy.style[i];xi(this._proxy,this.project(t.center,t.zoom),this.getZoomScale(t.zoom,1)),e===this._proxy.style[i]&&this._animatingZoom&&this._onZoomTransitionEnd()},this),this.on("load moveend",function(){var t=this.getCenter(),i=this.getZoom();xi(this._proxy,this.project(t,i),this.getZoomScale(i,1))},this),this._on("unload",this._destroyAnimProxy,this)},_destroyAnimProxy:function(){ui(this._proxy),delete this._proxy},_catchTransitionEnd:function(t){this._animatingZoom&&0<=t.propertyName.indexOf("transform")&&this._onZoomTransitionEnd()},_nothingToAnimate:function(){return!this._container.getElementsByClassName("leaflet-zoom-animated").length},_tryAnimatedZoom:function(t,i,e){if(this._animatingZoom)return!0;if(e=e||{},!this._zoomAnimated||!1===e.animate||this._nothingToAnimate()||Math.abs(i-this._zoom)>this.options.zoomAnimationThreshold)return!1;var n=this.getZoomScale(i),o=this._getCenterOffset(t)._divideBy(1-1/n);return!(!0!==e.animate&&!this.getSize().contains(o))&&(M(function(){this._moveStart(!0,!1)._animateZoom(t,i,!0)},this),!0)},_animateZoom:function(t,i,e,n){this._mapPane&&(e&&(this._animatingZoom=!0,this._animateToCenter=t,this._animateToZoom=i,pi(this._mapPane,"leaflet-zoom-anim")),this.fire("zoomanim",{center:t,zoom:i,noUpdate:n}),setTimeout(a(this._onZoomTransitionEnd,this),250))},_onZoomTransitionEnd:function(){this._animatingZoom&&(this._mapPane&&mi(this._mapPane,"leaflet-zoom-anim"),this._animatingZoom=!1,this._move(this._animateToCenter,this._animateToZoom),M(function(){this._moveEnd(!0)},this))}});function $i(t){return new Qi(t)}var Qi=Z.extend({options:{position:"topright"},initialize:function(t){p(this,t)},getPosition:function(){return this.options.position},setPosition:function(t){var i=this._map;return i&&i.removeControl(this),this.options.position=t,i&&i.addControl(this),this},getContainer:function(){return this._container},addTo:function(t){this.remove(),this._map=t;var i=this._container=this.onAdd(t),e=this.getPosition(),n=t._controlCorners[e];return pi(i,"leaflet-control"),-1!==e.indexOf("bottom")?n.insertBefore(i,n.firstChild):n.appendChild(i),this._map.on("unload",this.remove,this),this},remove:function(){return this._map&&(ui(this._container),this.onRemove&&this.onRemove(this._map),this._map.off("unload",this.remove,this),this._map=null),this},_refocusOnMap:function(t){this._map&&t&&0<t.screenX&&0<t.screenY&&this._map.getContainer().focus()}});Ji.include({addControl:function(t){return t.addTo(this),this},removeControl:function(t){return t.remove(),this},_initControlPos:function(){var n=this._controlCorners={},o="leaflet-",s=this._controlContainer=hi("div",o+"control-container",this._container);function t(t,i){var e=o+t+" "+o+i;n[t+i]=hi("div",e,s)}t("top","left"),t("top","right"),t("bottom","left"),t("bottom","right")},_clearControlPos:function(){for(var t in this._controlCorners)ui(this._controlCorners[t]);ui(this._controlContainer),delete this._controlCorners,delete this._controlContainer}});var te=Qi.extend({options:{collapsed:!0,position:"topright",autoZIndex:!0,hideSingleBase:!1,sortLayers:!1,sortFunction:function(t,i,e,n){return e<n?-1:n<e?1:0}},initialize:function(t,i,e){for(var n in p(this,e),this._layerControlInputs=[],this._layers=[],this._lastZIndex=0,this._handlingClick=!1,t)this._addLayer(t[n],n);for(n in i)this._addLayer(i[n],n,!0)},onAdd:function(t){this._initLayout(),this._update(),(this._map=t).on("zoomend",this._checkDisabledLayers,this);for(var i=0;i<this._layers.length;i++)this._layers[i].layer.on("add remove",this._onLayerChange,this);return this._container},addTo:function(t){return Qi.prototype.addTo.call(this,t),this._expandIfNotCollapsed()},onRemove:function(){this._map.off("zoomend",this._checkDisabledLayers,this);for(var t=0;t<this._layers.length;t++)this._layers[t].layer.off("add remove",this._onLayerChange,this)},addBaseLayer:function(t,i){return this._addLayer(t,i),this._map?this._update():this},addOverlay:function(t,i){return this._addLayer(t,i,!0),this._map?this._update():this},removeLayer:function(t){t.off("add remove",this._onLayerChange,this);var i=this._getLayer(u(t));return i&&this._layers.splice(this._layers.indexOf(i),1),this._map?this._update():this},expand:function(){pi(this._container,"leaflet-control-layers-expanded"),this._section.style.height=null;var t=this._map.getSize().y-(this._container.offsetTop+50);return t<this._section.clientHeight?(pi(this._section,"leaflet-control-layers-scrollbar"),this._section.style.height=t+"px"):mi(this._section,"leaflet-control-layers-scrollbar"),this._checkDisabledLayers(),this},collapse:function(){return mi(this._container,"leaflet-control-layers-expanded"),this},_initLayout:function(){var t="leaflet-control-layers",i=this._container=hi("div",t),e=this.options.collapsed;i.setAttribute("aria-haspopup",!0),Ni(i),Ri(i);var n=this._section=hi("section",t+"-list");e&&(this._map.on("click",this.collapse,this),st||Ei(i,{mouseenter:this.expand,mouseleave:this.collapse},this));var o=this._layersLink=hi("a",t+"-toggle",i);o.href="#",o.title="Layers",Tt?(Ei(o,"click",ji),Ei(o,"click",this.expand,this)):Ei(o,"focus",this.expand,this),e||this.expand(),this._baseLayersList=hi("div",t+"-base",n),this._separator=hi("div",t+"-separator",n),this._overlaysList=hi("div",t+"-overlays",n),i.appendChild(n)},_getLayer:function(t){for(var i=0;i<this._layers.length;i++)if(this._layers[i]&&u(this._layers[i].layer)===t)return this._layers[i]},_addLayer:function(t,i,e){this._map&&t.on("add remove",this._onLayerChange,this),this._layers.push({layer:t,name:i,overlay:e}),this.options.sortLayers&&this._layers.sort(a(function(t,i){return this.options.sortFunction(t.layer,i.layer,t.name,i.name)},this)),this.options.autoZIndex&&t.setZIndex&&(this._lastZIndex++,t.setZIndex(this._lastZIndex)),this._expandIfNotCollapsed()},_update:function(){if(!this._container)return this;li(this._baseLayersList),li(this._overlaysList),this._layerControlInputs=[];var t,i,e,n,o=0;for(e=0;e<this._layers.length;e++)n=this._layers[e],this._addItem(n),i=i||n.overlay,t=t||!n.overlay,o+=n.overlay?0:1;return this.options.hideSingleBase&&(t=t&&1<o,this._baseLayersList.style.display=t?"":"none"),this._separator.style.display=i&&t?"":"none",this},_onLayerChange:function(t){this._handlingClick||this._update();var i=this._getLayer(u(t.target)),e=i.overlay?"add"===t.type?"overlayadd":"overlayremove":"add"===t.type?"baselayerchange":null;e&&this._map.fire(e,i)},_createRadioElement:function(t,i){var e='<input type="radio" class="leaflet-control-layers-selector" name="'+t+'"'+(i?' checked="checked"':"")+"/>",n=document.createElement("div");return n.innerHTML=e,n.firstChild},_addItem:function(t){var i,e=document.createElement("label"),n=this._map.hasLayer(t.layer);t.overlay?((i=document.createElement("input")).type="checkbox",i.className="leaflet-control-layers-selector",i.defaultChecked=n):i=this._createRadioElement("leaflet-base-layers_"+u(this),n),this._layerControlInputs.push(i),i.layerId=u(t.layer),Ei(i,"click",this._onInputClick,this);var o=document.createElement("span");o.innerHTML=" "+t.name;var s=document.createElement("div");return e.appendChild(s),s.appendChild(i),s.appendChild(o),(t.overlay?this._overlaysList:this._baseLayersList).appendChild(e),this._checkDisabledLayers(),e},_onInputClick:function(){var t,i,e=this._layerControlInputs,n=[],o=[];this._handlingClick=!0;for(var s=e.length-1;0<=s;s--)t=e[s],i=this._getLayer(t.layerId).layer,t.checked?n.push(i):t.checked||o.push(i);for(s=0;s<o.length;s++)this._map.hasLayer(o[s])&&this._map.removeLayer(o[s]);for(s=0;s<n.length;s++)this._map.hasLayer(n[s])||this._map.addLayer(n[s]);this._handlingClick=!1,this._refocusOnMap()},_checkDisabledLayers:function(){for(var t,i,e=this._layerControlInputs,n=this._map.getZoom(),o=e.length-1;0<=o;o--)t=e[o],i=this._getLayer(t.layerId).layer,t.disabled=void 0!==i.options.minZoom&&n<i.options.minZoom||void 0!==i.options.maxZoom&&n>i.options.maxZoom},_expandIfNotCollapsed:function(){return this._map&&!this.options.collapsed&&this.expand(),this},_expand:function(){return this.expand()},_collapse:function(){return this.collapse()}}),ie=Qi.extend({options:{position:"topleft",zoomInText:"+",zoomInTitle:"Zoom in",zoomOutText:"&#x2212;",zoomOutTitle:"Zoom out"},onAdd:function(t){var i="leaflet-control-zoom",e=hi("div",i+" leaflet-bar"),n=this.options;return this._zoomInButton=this._createButton(n.zoomInText,n.zoomInTitle,i+"-in",e,this._zoomIn),this._zoomOutButton=this._createButton(n.zoomOutText,n.zoomOutTitle,i+"-out",e,this._zoomOut),this._updateDisabled(),t.on("zoomend zoomlevelschange",this._updateDisabled,this),e},onRemove:function(t){t.off("zoomend zoomlevelschange",this._updateDisabled,this)},disable:function(){return this._disabled=!0,this._updateDisabled(),this},enable:function(){return this._disabled=!1,this._updateDisabled(),this},_zoomIn:function(t){!this._disabled&&this._map._zoom<this._map.getMaxZoom()&&this._map.zoomIn(this._map.options.zoomDelta*(t.shiftKey?3:1))},_zoomOut:function(t){!this._disabled&&this._map._zoom>this._map.getMinZoom()&&this._map.zoomOut(this._map.options.zoomDelta*(t.shiftKey?3:1))},_createButton:function(t,i,e,n,o){var s=hi("a",e,n);return s.innerHTML=t,s.href="#",s.title=i,s.setAttribute("role","button"),s.setAttribute("aria-label",i),Ni(s),Ei(s,"click",ji),Ei(s,"click",o,this),Ei(s,"click",this._refocusOnMap,this),s},_updateDisabled:function(){var t=this._map,i="leaflet-disabled";mi(this._zoomInButton,i),mi(this._zoomOutButton,i),!this._disabled&&t._zoom!==t.getMinZoom()||pi(this._zoomOutButton,i),!this._disabled&&t._zoom!==t.getMaxZoom()||pi(this._zoomInButton,i)}});Ji.mergeOptions({zoomControl:!0}),Ji.addInitHook(function(){this.options.zoomControl&&(this.zoomControl=new ie,this.addControl(this.zoomControl))});var ee=Qi.extend({options:{position:"bottomleft",maxWidth:100,metric:!0,imperial:!0},onAdd:function(t){var i="leaflet-control-scale",e=hi("div",i),n=this.options;return this._addScales(n,i+"-line",e),t.on(n.updateWhenIdle?"moveend":"move",this._update,this),t.whenReady(this._update,this),e},onRemove:function(t){t.off(this.options.updateWhenIdle?"moveend":"move",this._update,this)},_addScales:function(t,i,e){t.metric&&(this._mScale=hi("div",i,e)),t.imperial&&(this._iScale=hi("div",i,e))},_update:function(){var t=this._map,i=t.getSize().y/2,e=t.distance(t.containerPointToLatLng([0,i]),t.containerPointToLatLng([this.options.maxWidth,i]));this._updateScales(e)},_updateScales:function(t){this.options.metric&&t&&this._updateMetric(t),this.options.imperial&&t&&this._updateImperial(t)},_updateMetric:function(t){var i=this._getRoundNum(t),e=i<1e3?i+" m":i/1e3+" km";this._updateScale(this._mScale,e,i/t)},_updateImperial:function(t){var i,e,n,o=3.2808399*t;5280<o?(i=o/5280,e=this._getRoundNum(i),this._updateScale(this._iScale,e+" mi",e/i)):(n=this._getRoundNum(o),this._updateScale(this._iScale,n+" ft",n/o))},_updateScale:function(t,i,e){t.style.width=Math.round(this.options.maxWidth*e)+"px",t.innerHTML=i},_getRoundNum:function(t){var i=Math.pow(10,(Math.floor(t)+"").length-1),e=t/i;return i*(e=10<=e?10:5<=e?5:3<=e?3:2<=e?2:1)}}),ne=Qi.extend({options:{position:"bottomright",prefix:'<a href="https://leafletjs.com" title="A JS library for interactive maps">Leaflet</a>'},initialize:function(t){p(this,t),this._attributions={}},onAdd:function(t){for(var i in(t.attributionControl=this)._container=hi("div","leaflet-control-attribution"),Ni(this._container),t._layers)t._layers[i].getAttribution&&this.addAttribution(t._layers[i].getAttribution());return this._update(),this._container},setPrefix:function(t){return this.options.prefix=t,this._update(),this},addAttribution:function(t){return t&&(this._attributions[t]||(this._attributions[t]=0),this._attributions[t]++,this._update()),this},removeAttribution:function(t){return t&&this._attributions[t]&&(this._attributions[t]--,this._update()),this},_update:function(){if(this._map){var t=[];for(var i in this._attributions)this._attributions[i]&&t.push(i);var e=[];this.options.prefix&&e.push(this.options.prefix),t.length&&e.push(t.join(", ")),this._container.innerHTML=e.join(" | ")}}});Ji.mergeOptions({attributionControl:!0}),Ji.addInitHook(function(){this.options.attributionControl&&(new ne).addTo(this)});Qi.Layers=te,Qi.Zoom=ie,Qi.Scale=ee,Qi.Attribution=ne,$i.layers=function(t,i,e){return new te(t,i,e)},$i.zoom=function(t){return new ie(t)},$i.scale=function(t){return new ee(t)},$i.attribution=function(t){return new ne(t)};var oe=Z.extend({initialize:function(t){this._map=t},enable:function(){return this._enabled||(this._enabled=!0,this.addHooks()),this},disable:function(){return this._enabled&&(this._enabled=!1,this.removeHooks()),this},enabled:function(){return!!this._enabled}});oe.addTo=function(t,i){return t.addHandler(i,this),this};var se,re={Events:E},ae=Tt?"touchstart mousedown":"mousedown",he={mousedown:"mouseup",touchstart:"touchend",pointerdown:"touchend",MSPointerDown:"touchend"},ue={mousedown:"mousemove",touchstart:"touchmove",pointerdown:"touchmove",MSPointerDown:"touchmove"},le=k.extend({options:{clickTolerance:3},initialize:function(t,i,e,n){p(this,n),this._element=t,this._dragStartTarget=i||t,this._preventOutline=e},enable:function(){this._enabled||(Ei(this._dragStartTarget,ae,this._onDown,this),this._enabled=!0)},disable:function(){this._enabled&&(le._dragging===this&&this.finishDrag(),Bi(this._dragStartTarget,ae,this._onDown,this),this._enabled=!1,this._moved=!1)},_onDown:function(t){if(!t._simulated&&this._enabled&&(this._moved=!1,!di(this._element,"leaflet-zoom-anim")&&!(le._dragging||t.shiftKey||1!==t.which&&1!==t.button&&!t.touches||((le._dragging=this)._preventOutline&&zi(this._element),bi(),$t(),this._moving)))){this.fire("down");var i=t.touches?t.touches[0]:t,e=Ci(this._element);this._startPoint=new B(i.clientX,i.clientY),this._parentScale=Si(e),Ei(document,ue[t.type],this._onMove,this),Ei(document,he[t.type],this._onUp,this)}},_onMove:function(t){if(!t._simulated&&this._enabled)if(t.touches&&1<t.touches.length)this._moved=!0;else{var i=t.touches&&1===t.touches.length?t.touches[0]:t,e=new B(i.clientX,i.clientY)._subtract(this._startPoint);(e.x||e.y)&&(Math.abs(e.x)+Math.abs(e.y)<this.options.clickTolerance||(e.x/=this._parentScale.x,e.y/=this._parentScale.y,Di(t),this._moved||(this.fire("dragstart"),this._moved=!0,this._startPos=Pi(this._element).subtract(e),pi(document.body,"leaflet-dragging"),this._lastTarget=t.target||t.srcElement,window.SVGElementInstance&&this._lastTarget instanceof SVGElementInstance&&(this._lastTarget=this._lastTarget.correspondingUseElement),pi(this._lastTarget,"leaflet-drag-target")),this._newPos=this._startPos.add(e),this._moving=!0,C(this._animRequest),this._lastEvent=t,this._animRequest=M(this._updatePosition,this,!0)))}},_updatePosition:function(){var t={originalEvent:this._lastEvent};this.fire("predrag",t),wi(this._element,this._newPos),this.fire("drag",t)},_onUp:function(t){!t._simulated&&this._enabled&&this.finishDrag()},finishDrag:function(){for(var t in mi(document.body,"leaflet-dragging"),this._lastTarget&&(mi(this._lastTarget,"leaflet-drag-target"),this._lastTarget=null),ue)Bi(document,ue[t],this._onMove,this),Bi(document,he[t],this._onUp,this);Ti(),Qt(),this._moved&&this._moving&&(C(this._animRequest),this.fire("dragend",{distance:this._newPos.distanceTo(this._startPos)})),this._moving=!1,le._dragging=!1}});function ce(t,i){if(!i||!t.length)return t.slice();var e=i*i;return t=function(t,i){var e=t.length,n=new(typeof Uint8Array!=void 0+""?Uint8Array:Array)(e);n[0]=n[e-1]=1,function t(i,e,n,o,s){var r,a,h,u=0;for(a=o+1;a<=s-1;a++)h=fe(i[a],i[o],i[s],!0),u<h&&(r=a,u=h);n<u&&(e[r]=1,t(i,e,n,o,r),t(i,e,n,r,s))}(t,n,i,0,e-1);var o,s=[];for(o=0;o<e;o++)n[o]&&s.push(t[o]);return s}(t=function(t,i){for(var e=[t[0]],n=1,o=0,s=t.length;n<s;n++)r=t[n],a=t[o],void 0,h=a.x-r.x,u=a.y-r.y,i<h*h+u*u&&(e.push(t[n]),o=n);var r,a,h,u;o<s-1&&e.push(t[s-1]);return e}(t,e),e)}function _e(t,i,e){return Math.sqrt(fe(t,i,e,!0))}function de(t,i,e,n,o){var s,r,a,h=n?se:me(t,e),u=me(i,e);for(se=u;;){if(!(h|u))return[t,i];if(h&u)return!1;a=me(r=pe(t,i,s=h||u,e,o),e),s===h?(t=r,h=a):(i=r,u=a)}}function pe(t,i,e,n,o){var s,r,a=i.x-t.x,h=i.y-t.y,u=n.min,l=n.max;return 8&e?(s=t.x+a*(l.y-t.y)/h,r=l.y):4&e?(s=t.x+a*(u.y-t.y)/h,r=u.y):2&e?(s=l.x,r=t.y+h*(l.x-t.x)/a):1&e&&(s=u.x,r=t.y+h*(u.x-t.x)/a),new B(s,r,o)}function me(t,i){var e=0;return t.x<i.min.x?e|=1:t.x>i.max.x&&(e|=2),t.y<i.min.y?e|=4:t.y>i.max.y&&(e|=8),e}function fe(t,i,e,n){var o,s=i.x,r=i.y,a=e.x-s,h=e.y-r,u=a*a+h*h;return 0<u&&(1<(o=((t.x-s)*a+(t.y-r)*h)/u)?(s=e.x,r=e.y):0<o&&(s+=a*o,r+=h*o)),a=t.x-s,h=t.y-r,n?a*a+h*h:new B(s,r)}function ge(t){return!v(t[0])||"object"!=typeof t[0][0]&&void 0!==t[0][0]}function ve(t){return console.warn("Deprecated use of _flat, please use L.LineUtil.isFlat instead."),ge(t)}var ye=(Object.freeze||Object)({simplify:ce,pointToSegmentDistance:_e,closestPointOnSegment:function(t,i,e){return fe(t,i,e)},clipSegment:de,_getEdgeIntersection:pe,_getBitCode:me,_sqClosestPointOnSegment:fe,isFlat:ge,_flat:ve});function xe(t,i,e){var n,o,s,r,a,h,u,l,c,_=[1,4,2,8];for(o=0,u=t.length;o<u;o++)t[o]._code=me(t[o],i);for(r=0;r<4;r++){for(l=_[r],n=[],o=0,s=(u=t.length)-1;o<u;s=o++)a=t[o],h=t[s],a._code&l?h._code&l||((c=pe(h,a,l,i,e))._code=me(c,i),n.push(c)):(h._code&l&&((c=pe(h,a,l,i,e))._code=me(c,i),n.push(c)),n.push(a));t=n}return t}var we,Pe=(Object.freeze||Object)({clipPolygon:xe}),Le={project:function(t){return new B(t.lng,t.lat)},unproject:function(t){return new j(t.y,t.x)},bounds:new O([-180,-90],[180,90])},be={R:6378137,R_MINOR:6356752.314245179,bounds:new O([-20037508.34279,-15496570.73972],[20037508.34279,18764656.23138]),project:function(t){var i=Math.PI/180,e=this.R,n=t.lat*i,o=this.R_MINOR/e,s=Math.sqrt(1-o*o),r=s*Math.sin(n),a=Math.tan(Math.PI/4-n/2)/Math.pow((1-r)/(1+r),s/2);return n=-e*Math.log(Math.max(a,1e-10)),new B(t.lng*i*e,n)},unproject:function(t){for(var i,e=180/Math.PI,n=this.R,o=this.R_MINOR/n,s=Math.sqrt(1-o*o),r=Math.exp(-t.y/n),a=Math.PI/2-2*Math.atan(r),h=0,u=.1;h<15&&1e-7<Math.abs(u);h++)i=s*Math.sin(a),i=Math.pow((1-i)/(1+i),s/2),a+=u=Math.PI/2-2*Math.atan(r*i)-a;return new j(a*e,t.x*e/n)}},Te=(Object.freeze||Object)({LonLat:Le,Mercator:be,SphericalMercator:q}),ze=h({},U,{code:"EPSG:3395",projection:be,transformation:(we=.5/(Math.PI*be.R),K(we,.5,-we,.5))}),Me=h({},U,{code:"EPSG:4326",projection:Le,transformation:K(1/180,1,-1/180,.5)}),Ce=h({},F,{projection:Le,transformation:K(1,0,-1,0),scale:function(t){return Math.pow(2,t)},zoom:function(t){return Math.log(t)/Math.LN2},distance:function(t,i){var e=i.lng-t.lng,n=i.lat-t.lat;return Math.sqrt(e*e+n*n)},infinite:!0});F.Earth=U,F.EPSG3395=ze,F.EPSG3857=X,F.EPSG900913=J,F.EPSG4326=Me,F.Simple=Ce;var Se=k.extend({options:{pane:"overlayPane",attribution:null,bubblingMouseEvents:!0},addTo:function(t){return t.addLayer(this),this},remove:function(){return this.removeFrom(this._map||this._mapToAdd)},removeFrom:function(t){return t&&t.removeLayer(this),this},getPane:function(t){return this._map.getPane(t?this.options[t]||t:this.options.pane)},addInteractiveTarget:function(t){return this._map._targets[u(t)]=this},removeInteractiveTarget:function(t){return delete this._map._targets[u(t)],this},getAttribution:function(){return this.options.attribution},_layerAdd:function(t){var i=t.target;if(i.hasLayer(this)){if(this._map=i,this._zoomAnimated=i._zoomAnimated,this.getEvents){var e=this.getEvents();i.on(e,this),this.once("remove",function(){i.off(e,this)},this)}this.onAdd(i),this.getAttribution&&i.attributionControl&&i.attributionControl.addAttribution(this.getAttribution()),this.fire("add"),i.fire("layeradd",{layer:this})}}});Ji.include({addLayer:function(t){if(!t._layerAdd)throw new Error("The provided object is not a Layer.");var i=u(t);return this._layers[i]||((this._layers[i]=t)._mapToAdd=this,t.beforeAdd&&t.beforeAdd(this),this.whenReady(t._layerAdd,t)),this},removeLayer:function(t){var i=u(t);return this._layers[i]&&(this._loaded&&t.onRemove(this),t.getAttribution&&this.attributionControl&&this.attributionControl.removeAttribution(t.getAttribution()),delete this._layers[i],this._loaded&&(this.fire("layerremove",{layer:t}),t.fire("remove")),t._map=t._mapToAdd=null),this},hasLayer:function(t){return!!t&&u(t)in this._layers},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},_addLayers:function(t){for(var i=0,e=(t=t?v(t)?t:[t]:[]).length;i<e;i++)this.addLayer(t[i])},_addZoomLimit:function(t){!isNaN(t.options.maxZoom)&&isNaN(t.options.minZoom)||(this._zoomBoundLayers[u(t)]=t,this._updateZoomLevels())},_removeZoomLimit:function(t){var i=u(t);this._zoomBoundLayers[i]&&(delete this._zoomBoundLayers[i],this._updateZoomLevels())},_updateZoomLevels:function(){var t=1/0,i=-1/0,e=this._getZoomSpan();for(var n in this._zoomBoundLayers){var o=this._zoomBoundLayers[n].options;t=void 0===o.minZoom?t:Math.min(t,o.minZoom),i=void 0===o.maxZoom?i:Math.max(i,o.maxZoom)}this._layersMaxZoom=i===-1/0?void 0:i,this._layersMinZoom=t===1/0?void 0:t,e!==this._getZoomSpan()&&this.fire("zoomlevelschange"),void 0===this.options.maxZoom&&this._layersMaxZoom&&this.getZoom()>this._layersMaxZoom&&this.setZoom(this._layersMaxZoom),void 0===this.options.minZoom&&this._layersMinZoom&&this.getZoom()<this._layersMinZoom&&this.setZoom(this._layersMinZoom)}});var Ze=Se.extend({initialize:function(t,i){var e,n;if(p(this,i),this._layers={},t)for(e=0,n=t.length;e<n;e++)this.addLayer(t[e])},addLayer:function(t){var i=this.getLayerId(t);return this._layers[i]=t,this._map&&this._map.addLayer(t),this},removeLayer:function(t){var i=t in this._layers?t:this.getLayerId(t);return this._map&&this._layers[i]&&this._map.removeLayer(this._layers[i]),delete this._layers[i],this},hasLayer:function(t){return!!t&&(t in this._layers||this.getLayerId(t)in this._layers)},clearLayers:function(){return this.eachLayer(this.removeLayer,this)},invoke:function(t){var i,e,n=Array.prototype.slice.call(arguments,1);for(i in this._layers)(e=this._layers[i])[t]&&e[t].apply(e,n);return this},onAdd:function(t){this.eachLayer(t.addLayer,t)},onRemove:function(t){this.eachLayer(t.removeLayer,t)},eachLayer:function(t,i){for(var e in this._layers)t.call(i,this._layers[e]);return this},getLayer:function(t){return this._layers[t]},getLayers:function(){var t=[];return this.eachLayer(t.push,t),t},setZIndex:function(t){return this.invoke("setZIndex",t)},getLayerId:function(t){return u(t)}}),Ee=Ze.extend({addLayer:function(t){return this.hasLayer(t)?this:(t.addEventParent(this),Ze.prototype.addLayer.call(this,t),this.fire("layeradd",{layer:t}))},removeLayer:function(t){return this.hasLayer(t)?(t in this._layers&&(t=this._layers[t]),t.removeEventParent(this),Ze.prototype.removeLayer.call(this,t),this.fire("layerremove",{layer:t})):this},setStyle:function(t){return this.invoke("setStyle",t)},bringToFront:function(){return this.invoke("bringToFront")},bringToBack:function(){return this.invoke("bringToBack")},getBounds:function(){var t=new N;for(var i in this._layers){var e=this._layers[i];t.extend(e.getBounds?e.getBounds():e.getLatLng())}return t}}),ke=Z.extend({options:{popupAnchor:[0,0],tooltipAnchor:[0,0]},initialize:function(t){p(this,t)},createIcon:function(t){return this._createIcon("icon",t)},createShadow:function(t){return this._createIcon("shadow",t)},_createIcon:function(t,i){var e=this._getIconUrl(t);if(!e){if("icon"===t)throw new Error("iconUrl not set in Icon options (see the docs).");return null}var n=this._createImg(e,i&&"IMG"===i.tagName?i:null);return this._setIconStyles(n,t),n},_setIconStyles:function(t,i){var e=this.options,n=e[i+"Size"];"number"==typeof n&&(n=[n,n]);var o=I(n),s=I("shadow"===i&&e.shadowAnchor||e.iconAnchor||o&&o.divideBy(2,!0));t.className="leaflet-marker-"+i+" "+(e.className||""),s&&(t.style.marginLeft=-s.x+"px",t.style.marginTop=-s.y+"px"),o&&(t.style.width=o.x+"px",t.style.height=o.y+"px")},_createImg:function(t,i){return(i=i||document.createElement("img")).src=t,i},_getIconUrl:function(t){return Ct&&this.options[t+"RetinaUrl"]||this.options[t+"Url"]}});var Be=ke.extend({options:{iconUrl:"marker-icon.png",iconRetinaUrl:"marker-icon-2x.png",shadowUrl:"marker-shadow.png",iconSize:[25,41],iconAnchor:[12,41],popupAnchor:[1,-34],tooltipAnchor:[16,-28],shadowSize:[41,41]},_getIconUrl:function(t){return Be.imagePath||(Be.imagePath=this._detectIconPath()),(this.options.imagePath||Be.imagePath)+ke.prototype._getIconUrl.call(this,t)},_detectIconPath:function(){var t=hi("div","leaflet-default-icon-path",document.body),i=ai(t,"background-image")||ai(t,"backgroundImage");return document.body.removeChild(t),i=null===i||0!==i.indexOf("url")?"":i.replace(/^url\(["']?/,"").replace(/marker-icon\.png["']?\)$/,"")}}),Ae=oe.extend({initialize:function(t){this._marker=t},addHooks:function(){var t=this._marker._icon;this._draggable||(this._draggable=new le(t,t,!0)),this._draggable.on({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).enable(),pi(t,"leaflet-marker-draggable")},removeHooks:function(){this._draggable.off({dragstart:this._onDragStart,predrag:this._onPreDrag,drag:this._onDrag,dragend:this._onDragEnd},this).disable(),this._marker._icon&&mi(this._marker._icon,"leaflet-marker-draggable")},moved:function(){return this._draggable&&this._draggable._moved},_adjustPan:function(t){var i=this._marker,e=i._map,n=this._marker.options.autoPanSpeed,o=this._marker.options.autoPanPadding,s=Pi(i._icon),r=e.getPixelBounds(),a=e.getPixelOrigin(),h=R(r.min._subtract(a).add(o),r.max._subtract(a).subtract(o));if(!h.contains(s)){var u=I((Math.max(h.max.x,s.x)-h.max.x)/(r.max.x-h.max.x)-(Math.min(h.min.x,s.x)-h.min.x)/(r.min.x-h.min.x),(Math.max(h.max.y,s.y)-h.max.y)/(r.max.y-h.max.y)-(Math.min(h.min.y,s.y)-h.min.y)/(r.min.y-h.min.y)).multiplyBy(n);e.panBy(u,{animate:!1}),this._draggable._newPos._add(u),this._draggable._startPos._add(u),wi(i._icon,this._draggable._newPos),this._onDrag(t),this._panRequest=M(this._adjustPan.bind(this,t))}},_onDragStart:function(){this._oldLatLng=this._marker.getLatLng(),this._marker.closePopup().fire("movestart").fire("dragstart")},_onPreDrag:function(t){this._marker.options.autoPan&&(C(this._panRequest),this._panRequest=M(this._adjustPan.bind(this,t)))},_onDrag:function(t){var i=this._marker,e=i._shadow,n=Pi(i._icon),o=i._map.layerPointToLatLng(n);e&&wi(e,n),i._latlng=o,t.latlng=o,t.oldLatLng=this._oldLatLng,i.fire("move",t).fire("drag",t)},_onDragEnd:function(t){C(this._panRequest),delete this._oldLatLng,this._marker.fire("moveend").fire("dragend",t)}}),Ie=Se.extend({options:{icon:new Be,interactive:!0,keyboard:!0,title:"",alt:"",zIndexOffset:0,opacity:1,riseOnHover:!1,riseOffset:250,pane:"markerPane",shadowPane:"shadowPane",bubblingMouseEvents:!1,draggable:!1,autoPan:!1,autoPanPadding:[50,50],autoPanSpeed:10},initialize:function(t,i){p(this,i),this._latlng=W(t)},onAdd:function(t){this._zoomAnimated=this._zoomAnimated&&t.options.markerZoomAnimation,this._zoomAnimated&&t.on("zoomanim",this._animateZoom,this),this._initIcon(),this.update()},onRemove:function(t){this.dragging&&this.dragging.enabled()&&(this.options.draggable=!0,this.dragging.removeHooks()),delete this.dragging,this._zoomAnimated&&t.off("zoomanim",this._animateZoom,this),this._removeIcon(),this._removeShadow()},getEvents:function(){return{zoom:this.update,viewreset:this.update}},getLatLng:function(){return this._latlng},setLatLng:function(t){var i=this._latlng;return this._latlng=W(t),this.update(),this.fire("move",{oldLatLng:i,latlng:this._latlng})},setZIndexOffset:function(t){return this.options.zIndexOffset=t,this.update()},getIcon:function(){return this.options.icon},setIcon:function(t){return this.options.icon=t,this._map&&(this._initIcon(),this.update()),this._popup&&this.bindPopup(this._popup,this._popup.options),this},getElement:function(){return this._icon},update:function(){if(this._icon&&this._map){var t=this._map.latLngToLayerPoint(this._latlng).round();this._setPos(t)}return this},_initIcon:function(){var t=this.options,i="leaflet-zoom-"+(this._zoomAnimated?"animated":"hide"),e=t.icon.createIcon(this._icon),n=!1;e!==this._icon&&(this._icon&&this._removeIcon(),n=!0,t.title&&(e.title=t.title),"IMG"===e.tagName&&(e.alt=t.alt||"")),pi(e,i),t.keyboard&&(e.tabIndex="0"),this._icon=e,t.riseOnHover&&this.on({mouseover:this._bringToFront,mouseout:this._resetZIndex});var o=t.icon.createShadow(this._shadow),s=!1;o!==this._shadow&&(this._removeShadow(),s=!0),o&&(pi(o,i),o.alt=""),this._shadow=o,t.opacity<1&&this._updateOpacity(),n&&this.getPane().appendChild(this._icon),this._initInteraction(),o&&s&&this.getPane(t.shadowPane).appendChild(this._shadow)},_removeIcon:function(){this.options.riseOnHover&&this.off({mouseover:this._bringToFront,mouseout:this._resetZIndex}),ui(this._icon),this.removeInteractiveTarget(this._icon),this._icon=null},_removeShadow:function(){this._shadow&&ui(this._shadow),this._shadow=null},_setPos:function(t){wi(this._icon,t),this._shadow&&wi(this._shadow,t),this._zIndex=t.y+this.options.zIndexOffset,this._resetZIndex()},_updateZIndex:function(t){this._icon.style.zIndex=this._zIndex+t},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center).round();this._setPos(i)},_initInteraction:function(){if(this.options.interactive&&(pi(this._icon,"leaflet-interactive"),this.addInteractiveTarget(this._icon),Ae)){var t=this.options.draggable;this.dragging&&(t=this.dragging.enabled(),this.dragging.disable()),this.dragging=new Ae(this),t&&this.dragging.enable()}},setOpacity:function(t){return this.options.opacity=t,this._map&&this._updateOpacity(),this},_updateOpacity:function(){var t=this.options.opacity;this._icon&&vi(this._icon,t),this._shadow&&vi(this._shadow,t)},_bringToFront:function(){this._updateZIndex(this.options.riseOffset)},_resetZIndex:function(){this._updateZIndex(0)},_getPopupAnchor:function(){return this.options.icon.options.popupAnchor},_getTooltipAnchor:function(){return this.options.icon.options.tooltipAnchor}});var Oe=Se.extend({options:{stroke:!0,color:"#3388ff",weight:3,opacity:1,lineCap:"round",lineJoin:"round",dashArray:null,dashOffset:null,fill:!1,fillColor:null,fillOpacity:.2,fillRule:"evenodd",interactive:!0,bubblingMouseEvents:!0},beforeAdd:function(t){this._renderer=t.getRenderer(this)},onAdd:function(){this._renderer._initPath(this),this._reset(),this._renderer._addPath(this)},onRemove:function(){this._renderer._removePath(this)},redraw:function(){return this._map&&this._renderer._updatePath(this),this},setStyle:function(t){return p(this,t),this._renderer&&(this._renderer._updateStyle(this),this.options.stroke&&t.hasOwnProperty("weight")&&this._updateBounds()),this},bringToFront:function(){return this._renderer&&this._renderer._bringToFront(this),this},bringToBack:function(){return this._renderer&&this._renderer._bringToBack(this),this},getElement:function(){return this._path},_reset:function(){this._project(),this._update()},_clickTolerance:function(){return(this.options.stroke?this.options.weight/2:0)+this._renderer.options.tolerance}}),Re=Oe.extend({options:{fill:!0,radius:10},initialize:function(t,i){p(this,i),this._latlng=W(t),this._radius=this.options.radius},setLatLng:function(t){return this._latlng=W(t),this.redraw(),this.fire("move",{latlng:this._latlng})},getLatLng:function(){return this._latlng},setRadius:function(t){return this.options.radius=this._radius=t,this.redraw()},getRadius:function(){return this._radius},setStyle:function(t){var i=t&&t.radius||this._radius;return Oe.prototype.setStyle.call(this,t),this.setRadius(i),this},_project:function(){this._point=this._map.latLngToLayerPoint(this._latlng),this._updateBounds()},_updateBounds:function(){var t=this._radius,i=this._radiusY||t,e=this._clickTolerance(),n=[t+e,i+e];this._pxBounds=new O(this._point.subtract(n),this._point.add(n))},_update:function(){this._map&&this._updatePath()},_updatePath:function(){this._renderer._updateCircle(this)},_empty:function(){return this._radius&&!this._renderer._bounds.intersects(this._pxBounds)},_containsPoint:function(t){return t.distanceTo(this._point)<=this._radius+this._clickTolerance()}});var Ne=Re.extend({initialize:function(t,i,e){if("number"==typeof i&&(i=h({},e,{radius:i})),p(this,i),this._latlng=W(t),isNaN(this.options.radius))throw new Error("Circle radius cannot be NaN");this._mRadius=this.options.radius},setRadius:function(t){return this._mRadius=t,this.redraw()},getRadius:function(){return this._mRadius},getBounds:function(){var t=[this._radius,this._radiusY||this._radius];return new N(this._map.layerPointToLatLng(this._point.subtract(t)),this._map.layerPointToLatLng(this._point.add(t)))},setStyle:Oe.prototype.setStyle,_project:function(){var t=this._latlng.lng,i=this._latlng.lat,e=this._map,n=e.options.crs;if(n.distance===U.distance){var o=Math.PI/180,s=this._mRadius/U.R/o,r=e.project([i+s,t]),a=e.project([i-s,t]),h=r.add(a).divideBy(2),u=e.unproject(h).lat,l=Math.acos((Math.cos(s*o)-Math.sin(i*o)*Math.sin(u*o))/(Math.cos(i*o)*Math.cos(u*o)))/o;!isNaN(l)&&0!==l||(l=s/Math.cos(Math.PI/180*i)),this._point=h.subtract(e.getPixelOrigin()),this._radius=isNaN(l)?0:h.x-e.project([u,t-l]).x,this._radiusY=h.y-r.y}else{var c=n.unproject(n.project(this._latlng).subtract([this._mRadius,0]));this._point=e.latLngToLayerPoint(this._latlng),this._radius=this._point.x-e.latLngToLayerPoint(c).x}this._updateBounds()}});var De=Oe.extend({options:{smoothFactor:1,noClip:!1},initialize:function(t,i){p(this,i),this._setLatLngs(t)},getLatLngs:function(){return this._latlngs},setLatLngs:function(t){return this._setLatLngs(t),this.redraw()},isEmpty:function(){return!this._latlngs.length},closestLayerPoint:function(t){for(var i,e,n=1/0,o=null,s=fe,r=0,a=this._parts.length;r<a;r++)for(var h=this._parts[r],u=1,l=h.length;u<l;u++){var c=s(t,i=h[u-1],e=h[u],!0);c<n&&(n=c,o=s(t,i,e))}return o&&(o.distance=Math.sqrt(n)),o},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a=this._rings[0],h=a.length;if(!h)return null;for(i=t=0;t<h-1;t++)i+=a[t].distanceTo(a[t+1])/2;if(0===i)return this._map.layerPointToLatLng(a[0]);for(n=t=0;t<h-1;t++)if(o=a[t],s=a[t+1],i<(n+=e=o.distanceTo(s)))return r=(n-i)/e,this._map.layerPointToLatLng([s.x-r*(s.x-o.x),s.y-r*(s.y-o.y)])},getBounds:function(){return this._bounds},addLatLng:function(t,i){return i=i||this._defaultShape(),t=W(t),i.push(t),this._bounds.extend(t),this.redraw()},_setLatLngs:function(t){this._bounds=new N,this._latlngs=this._convertLatLngs(t)},_defaultShape:function(){return ge(this._latlngs)?this._latlngs:this._latlngs[0]},_convertLatLngs:function(t){for(var i=[],e=ge(t),n=0,o=t.length;n<o;n++)e?(i[n]=W(t[n]),this._bounds.extend(i[n])):i[n]=this._convertLatLngs(t[n]);return i},_project:function(){var t=new O;this._rings=[],this._projectLatlngs(this._latlngs,this._rings,t),this._bounds.isValid()&&t.isValid()&&(this._rawPxBounds=t,this._updateBounds())},_updateBounds:function(){var t=this._clickTolerance(),i=new B(t,t);this._pxBounds=new O([this._rawPxBounds.min.subtract(i),this._rawPxBounds.max.add(i)])},_projectLatlngs:function(t,i,e){var n,o,s=t[0]instanceof j,r=t.length;if(s){for(o=[],n=0;n<r;n++)o[n]=this._map.latLngToLayerPoint(t[n]),e.extend(o[n]);i.push(o)}else for(n=0;n<r;n++)this._projectLatlngs(t[n],i,e)},_clipPoints:function(){var t=this._renderer._bounds;if(this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else{var i,e,n,o,s,r,a,h=this._parts;for(n=i=0,o=this._rings.length;i<o;i++)for(e=0,s=(a=this._rings[i]).length;e<s-1;e++)(r=de(a[e],a[e+1],t,e,!0))&&(h[n]=h[n]||[],h[n].push(r[0]),r[1]===a[e+1]&&e!==s-2||(h[n].push(r[1]),n++))}},_simplifyPoints:function(){for(var t=this._parts,i=this.options.smoothFactor,e=0,n=t.length;e<n;e++)t[e]=ce(t[e],i)},_update:function(){this._map&&(this._clipPoints(),this._simplifyPoints(),this._updatePath())},_updatePath:function(){this._renderer._updatePoly(this)},_containsPoint:function(t,i){var e,n,o,s,r,a,h=this._clickTolerance();if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(e=0,s=this._parts.length;e<s;e++)for(n=0,o=(r=(a=this._parts[e]).length)-1;n<r;o=n++)if((i||0!==n)&&_e(t,a[o],a[n])<=h)return!0;return!1}});De._flat=ve;var je=De.extend({options:{fill:!0},isEmpty:function(){return!this._latlngs.length||!this._latlngs[0].length},getCenter:function(){if(!this._map)throw new Error("Must add layer to map before using getCenter()");var t,i,e,n,o,s,r,a,h,u=this._rings[0],l=u.length;if(!l)return null;for(s=r=a=0,t=0,i=l-1;t<l;i=t++)e=u[t],n=u[i],o=e.y*n.x-n.y*e.x,r+=(e.x+n.x)*o,a+=(e.y+n.y)*o,s+=3*o;return h=0===s?u[0]:[r/s,a/s],this._map.layerPointToLatLng(h)},_convertLatLngs:function(t){var i=De.prototype._convertLatLngs.call(this,t),e=i.length;return 2<=e&&i[0]instanceof j&&i[0].equals(i[e-1])&&i.pop(),i},_setLatLngs:function(t){De.prototype._setLatLngs.call(this,t),ge(this._latlngs)&&(this._latlngs=[this._latlngs])},_defaultShape:function(){return ge(this._latlngs[0])?this._latlngs[0]:this._latlngs[0][0]},_clipPoints:function(){var t=this._renderer._bounds,i=this.options.weight,e=new B(i,i);if(t=new O(t.min.subtract(e),t.max.add(e)),this._parts=[],this._pxBounds&&this._pxBounds.intersects(t))if(this.options.noClip)this._parts=this._rings;else for(var n,o=0,s=this._rings.length;o<s;o++)(n=xe(this._rings[o],t,!0)).length&&this._parts.push(n)},_updatePath:function(){this._renderer._updatePoly(this,!0)},_containsPoint:function(t){var i,e,n,o,s,r,a,h,u=!1;if(!this._pxBounds||!this._pxBounds.contains(t))return!1;for(o=0,a=this._parts.length;o<a;o++)for(s=0,r=(h=(i=this._parts[o]).length)-1;s<h;r=s++)e=i[s],n=i[r],e.y>t.y!=n.y>t.y&&t.x<(n.x-e.x)*(t.y-e.y)/(n.y-e.y)+e.x&&(u=!u);return u||De.prototype._containsPoint.call(this,t,!0)}});var We=Ee.extend({initialize:function(t,i){p(this,i),this._layers={},t&&this.addData(t)},addData:function(t){var i,e,n,o=v(t)?t:t.features;if(o){for(i=0,e=o.length;i<e;i++)((n=o[i]).geometries||n.geometry||n.features||n.coordinates)&&this.addData(n);return this}var s=this.options;if(s.filter&&!s.filter(t))return this;var r=He(t,s);return r?(r.feature=Ke(t),r.defaultOptions=r.options,this.resetStyle(r),s.onEachFeature&&s.onEachFeature(t,r),this.addLayer(r)):this},resetStyle:function(t){return t.options=h({},t.defaultOptions),this._setLayerStyle(t,this.options.style),this},setStyle:function(i){return this.eachLayer(function(t){this._setLayerStyle(t,i)},this)},_setLayerStyle:function(t,i){t.setStyle&&("function"==typeof i&&(i=i(t.feature)),t.setStyle(i))}});function He(t,i){var e,n,o,s,r="Feature"===t.type?t.geometry:t,a=r?r.coordinates:null,h=[],u=i&&i.pointToLayer,l=i&&i.coordsToLatLng||Fe;if(!a&&!r)return null;switch(r.type){case"Point":return e=l(a),u?u(t,e):new Ie(e);case"MultiPoint":for(o=0,s=a.length;o<s;o++)e=l(a[o]),h.push(u?u(t,e):new Ie(e));return new Ee(h);case"LineString":case"MultiLineString":return n=Ue(a,"LineString"===r.type?0:1,l),new De(n,i);case"Polygon":case"MultiPolygon":return n=Ue(a,"Polygon"===r.type?1:2,l),new je(n,i);case"GeometryCollection":for(o=0,s=r.geometries.length;o<s;o++){var c=He({geometry:r.geometries[o],type:"Feature",properties:t.properties},i);c&&h.push(c)}return new Ee(h);default:throw new Error("Invalid GeoJSON object.")}}function Fe(t){return new j(t[1],t[0],t[2])}function Ue(t,i,e){for(var n,o=[],s=0,r=t.length;s<r;s++)n=i?Ue(t[s],i-1,e):(e||Fe)(t[s]),o.push(n);return o}function Ve(t,i){return i="number"==typeof i?i:6,void 0!==t.alt?[c(t.lng,i),c(t.lat,i),c(t.alt,i)]:[c(t.lng,i),c(t.lat,i)]}function qe(t,i,e,n){for(var o=[],s=0,r=t.length;s<r;s++)o.push(i?qe(t[s],i-1,e,n):Ve(t[s],n));return!i&&e&&o.push(o[0]),o}function Ge(t,i){return t.feature?h({},t.feature,{geometry:i}):Ke(i)}function Ke(t){return"Feature"===t.type||"FeatureCollection"===t.type?t:{type:"Feature",properties:{},geometry:t}}var Ye={toGeoJSON:function(t){return Ge(this,{type:"Point",coordinates:Ve(this.getLatLng(),t)})}};function Xe(t,i){return new We(t,i)}Ie.include(Ye),Ne.include(Ye),Re.include(Ye),De.include({toGeoJSON:function(t){var i=!ge(this._latlngs);return Ge(this,{type:(i?"Multi":"")+"LineString",coordinates:qe(this._latlngs,i?1:0,!1,t)})}}),je.include({toGeoJSON:function(t){var i=!ge(this._latlngs),e=i&&!ge(this._latlngs[0]),n=qe(this._latlngs,e?2:i?1:0,!0,t);return i||(n=[n]),Ge(this,{type:(e?"Multi":"")+"Polygon",coordinates:n})}}),Ze.include({toMultiPoint:function(i){var e=[];return this.eachLayer(function(t){e.push(t.toGeoJSON(i).geometry.coordinates)}),Ge(this,{type:"MultiPoint",coordinates:e})},toGeoJSON:function(n){var t=this.feature&&this.feature.geometry&&this.feature.geometry.type;if("MultiPoint"===t)return this.toMultiPoint(n);var o="GeometryCollection"===t,s=[];return this.eachLayer(function(t){if(t.toGeoJSON){var i=t.toGeoJSON(n);if(o)s.push(i.geometry);else{var e=Ke(i);"FeatureCollection"===e.type?s.push.apply(s,e.features):s.push(e)}}}),o?Ge(this,{geometries:s,type:"GeometryCollection"}):{type:"FeatureCollection",features:s}}});var Je=Xe,$e=Se.extend({options:{opacity:1,alt:"",interactive:!1,crossOrigin:!1,errorOverlayUrl:"",zIndex:1,className:""},initialize:function(t,i,e){this._url=t,this._bounds=D(i),p(this,e)},onAdd:function(){this._image||(this._initImage(),this.options.opacity<1&&this._updateOpacity()),this.options.interactive&&(pi(this._image,"leaflet-interactive"),this.addInteractiveTarget(this._image)),this.getPane().appendChild(this._image),this._reset()},onRemove:function(){ui(this._image),this.options.interactive&&this.removeInteractiveTarget(this._image)},setOpacity:function(t){return this.options.opacity=t,this._image&&this._updateOpacity(),this},setStyle:function(t){return t.opacity&&this.setOpacity(t.opacity),this},bringToFront:function(){return this._map&&ci(this._image),this},bringToBack:function(){return this._map&&_i(this._image),this},setUrl:function(t){return this._url=t,this._image&&(this._image.src=t),this},setBounds:function(t){return this._bounds=D(t),this._map&&this._reset(),this},getEvents:function(){var t={zoom:this._reset,viewreset:this._reset};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},getBounds:function(){return this._bounds},getElement:function(){return this._image},_initImage:function(){var t="IMG"===this._url.tagName,i=this._image=t?this._url:hi("img");pi(i,"leaflet-image-layer"),this._zoomAnimated&&pi(i,"leaflet-zoom-animated"),this.options.className&&pi(i,this.options.className),i.onselectstart=l,i.onmousemove=l,i.onload=a(this.fire,this,"load"),i.onerror=a(this._overlayOnError,this,"error"),!this.options.crossOrigin&&""!==this.options.crossOrigin||(i.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),this.options.zIndex&&this._updateZIndex(),t?this._url=i.src:(i.src=this._url,i.alt=this.options.alt)},_animateZoom:function(t){var i=this._map.getZoomScale(t.zoom),e=this._map._latLngBoundsToNewLayerBounds(this._bounds,t.zoom,t.center).min;xi(this._image,e,i)},_reset:function(){var t=this._image,i=new O(this._map.latLngToLayerPoint(this._bounds.getNorthWest()),this._map.latLngToLayerPoint(this._bounds.getSouthEast())),e=i.getSize();wi(t,i.min),t.style.width=e.x+"px",t.style.height=e.y+"px"},_updateOpacity:function(){vi(this._image,this.options.opacity)},_updateZIndex:function(){this._image&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._image.style.zIndex=this.options.zIndex)},_overlayOnError:function(){this.fire("error");var t=this.options.errorOverlayUrl;t&&this._url!==t&&(this._url=t,this._image.src=t)}}),Qe=$e.extend({options:{autoplay:!0,loop:!0,keepAspectRatio:!0},_initImage:function(){var t="VIDEO"===this._url.tagName,i=this._image=t?this._url:hi("video");if(pi(i,"leaflet-image-layer"),this._zoomAnimated&&pi(i,"leaflet-zoom-animated"),i.onselectstart=l,i.onmousemove=l,i.onloadeddata=a(this.fire,this,"load"),t){for(var e=i.getElementsByTagName("source"),n=[],o=0;o<e.length;o++)n.push(e[o].src);this._url=0<e.length?n:[i.src]}else{v(this._url)||(this._url=[this._url]),!this.options.keepAspectRatio&&i.style.hasOwnProperty("objectFit")&&(i.style.objectFit="fill"),i.autoplay=!!this.options.autoplay,i.loop=!!this.options.loop;for(var s=0;s<this._url.length;s++){var r=hi("source");r.src=this._url[s],i.appendChild(r)}}}});var tn=$e.extend({_initImage:function(){var t=this._image=this._url;pi(t,"leaflet-image-layer"),this._zoomAnimated&&pi(t,"leaflet-zoom-animated"),t.onselectstart=l,t.onmousemove=l}});var en=Se.extend({options:{offset:[0,7],className:"",pane:"popupPane"},initialize:function(t,i){p(this,t),this._source=i},onAdd:function(t){this._zoomAnimated=t._zoomAnimated,this._container||this._initLayout(),t._fadeAnimated&&vi(this._container,0),clearTimeout(this._removeTimeout),this.getPane().appendChild(this._container),this.update(),t._fadeAnimated&&vi(this._container,1),this.bringToFront()},onRemove:function(t){t._fadeAnimated?(vi(this._container,0),this._removeTimeout=setTimeout(a(ui,void 0,this._container),200)):ui(this._container)},getLatLng:function(){return this._latlng},setLatLng:function(t){return this._latlng=W(t),this._map&&(this._updatePosition(),this._adjustPan()),this},getContent:function(){return this._content},setContent:function(t){return this._content=t,this.update(),this},getElement:function(){return this._container},update:function(){this._map&&(this._container.style.visibility="hidden",this._updateContent(),this._updateLayout(),this._updatePosition(),this._container.style.visibility="",this._adjustPan())},getEvents:function(){var t={zoom:this._updatePosition,viewreset:this._updatePosition};return this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},isOpen:function(){return!!this._map&&this._map.hasLayer(this)},bringToFront:function(){return this._map&&ci(this._container),this},bringToBack:function(){return this._map&&_i(this._container),this},_prepareOpen:function(t,i,e){if(i instanceof Se||(e=i,i=t),i instanceof Ee)for(var n in t._layers){i=t._layers[n];break}if(!e)if(i.getCenter)e=i.getCenter();else{if(!i.getLatLng)throw new Error("Unable to get source layer LatLng.");e=i.getLatLng()}return this._source=i,this.update(),e},_updateContent:function(){if(this._content){var t=this._contentNode,i="function"==typeof this._content?this._content(this._source||this):this._content;if("string"==typeof i)t.innerHTML=i;else{for(;t.hasChildNodes();)t.removeChild(t.firstChild);t.appendChild(i)}this.fire("contentupdate")}},_updatePosition:function(){if(this._map){var t=this._map.latLngToLayerPoint(this._latlng),i=I(this.options.offset),e=this._getAnchor();this._zoomAnimated?wi(this._container,t.add(e)):i=i.add(t).add(e);var n=this._containerBottom=-i.y,o=this._containerLeft=-Math.round(this._containerWidth/2)+i.x;this._container.style.bottom=n+"px",this._container.style.left=o+"px"}},_getAnchor:function(){return[0,0]}}),nn=en.extend({options:{maxWidth:300,minWidth:50,maxHeight:null,autoPan:!0,autoPanPaddingTopLeft:null,autoPanPaddingBottomRight:null,autoPanPadding:[5,5],keepInView:!1,closeButton:!0,autoClose:!0,closeOnEscapeKey:!0,className:""},openOn:function(t){return t.openPopup(this),this},onAdd:function(t){en.prototype.onAdd.call(this,t),t.fire("popupopen",{popup:this}),this._source&&(this._source.fire("popupopen",{popup:this},!0),this._source instanceof Oe||this._source.on("preclick",Oi))},onRemove:function(t){en.prototype.onRemove.call(this,t),t.fire("popupclose",{popup:this}),this._source&&(this._source.fire("popupclose",{popup:this},!0),this._source instanceof Oe||this._source.off("preclick",Oi))},getEvents:function(){var t=en.prototype.getEvents.call(this);return(void 0!==this.options.closeOnClick?this.options.closeOnClick:this._map.options.closePopupOnClick)&&(t.preclick=this._close),this.options.keepInView&&(t.moveend=this._adjustPan),t},_close:function(){this._map&&this._map.closePopup(this)},_initLayout:function(){var t="leaflet-popup",i=this._container=hi("div",t+" "+(this.options.className||"")+" leaflet-zoom-animated"),e=this._wrapper=hi("div",t+"-content-wrapper",i);if(this._contentNode=hi("div",t+"-content",e),Ni(e),Ri(this._contentNode),Ei(e,"contextmenu",Oi),this._tipContainer=hi("div",t+"-tip-container",i),this._tip=hi("div",t+"-tip",this._tipContainer),this.options.closeButton){var n=this._closeButton=hi("a",t+"-close-button",i);n.href="#close",n.innerHTML="&#215;",Ei(n,"click",this._onCloseButtonClick,this)}},_updateLayout:function(){var t=this._contentNode,i=t.style;i.width="",i.whiteSpace="nowrap";var e=t.offsetWidth;e=Math.min(e,this.options.maxWidth),e=Math.max(e,this.options.minWidth),i.width=e+1+"px",i.whiteSpace="",i.height="";var n=t.offsetHeight,o=this.options.maxHeight,s="leaflet-popup-scrolled";o&&o<n?(i.height=o+"px",pi(t,s)):mi(t,s),this._containerWidth=this._container.offsetWidth},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center),e=this._getAnchor();wi(this._container,i.add(e))},_adjustPan:function(){if(this.options.autoPan){this._map._panAnim&&this._map._panAnim.stop();var t=this._map,i=parseInt(ai(this._container,"marginBottom"),10)||0,e=this._container.offsetHeight+i,n=this._containerWidth,o=new B(this._containerLeft,-e-this._containerBottom);o._add(Pi(this._container));var s=t.layerPointToContainerPoint(o),r=I(this.options.autoPanPadding),a=I(this.options.autoPanPaddingTopLeft||r),h=I(this.options.autoPanPaddingBottomRight||r),u=t.getSize(),l=0,c=0;s.x+n+h.x>u.x&&(l=s.x+n-u.x+h.x),s.x-l-a.x<0&&(l=s.x-a.x),s.y+e+h.y>u.y&&(c=s.y+e-u.y+h.y),s.y-c-a.y<0&&(c=s.y-a.y),(l||c)&&t.fire("autopanstart").panBy([l,c])}},_onCloseButtonClick:function(t){this._close(),ji(t)},_getAnchor:function(){return I(this._source&&this._source._getPopupAnchor?this._source._getPopupAnchor():[0,0])}});Ji.mergeOptions({closePopupOnClick:!0}),Ji.include({openPopup:function(t,i,e){return t instanceof nn||(t=new nn(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:(this._popup&&this._popup.options.autoClose&&this.closePopup(),this._popup=t,this.addLayer(t))},closePopup:function(t){return t&&t!==this._popup||(t=this._popup,this._popup=null),t&&this.removeLayer(t),this}}),Se.include({bindPopup:function(t,i){return t instanceof nn?(p(t,i),(this._popup=t)._source=this):(this._popup&&!i||(this._popup=new nn(i,this)),this._popup.setContent(t)),this._popupHandlersAdded||(this.on({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!0),this},unbindPopup:function(){return this._popup&&(this.off({click:this._openPopup,keypress:this._onKeyPress,remove:this.closePopup,move:this._movePopup}),this._popupHandlersAdded=!1,this._popup=null),this},openPopup:function(t,i){return this._popup&&this._map&&(i=this._popup._prepareOpen(this,t,i),this._map.openPopup(this._popup,i)),this},closePopup:function(){return this._popup&&this._popup._close(),this},togglePopup:function(t){return this._popup&&(this._popup._map?this.closePopup():this.openPopup(t)),this},isPopupOpen:function(){return!!this._popup&&this._popup.isOpen()},setPopupContent:function(t){return this._popup&&this._popup.setContent(t),this},getPopup:function(){return this._popup},_openPopup:function(t){var i=t.layer||t.target;this._popup&&this._map&&(ji(t),i instanceof Oe?this.openPopup(t.layer||t.target,t.latlng):this._map.hasLayer(this._popup)&&this._popup._source===i?this.closePopup():this.openPopup(i,t.latlng))},_movePopup:function(t){this._popup.setLatLng(t.latlng)},_onKeyPress:function(t){13===t.originalEvent.keyCode&&this._openPopup(t)}});var on=en.extend({options:{pane:"tooltipPane",offset:[0,0],direction:"auto",permanent:!1,sticky:!1,interactive:!1,opacity:.9},onAdd:function(t){en.prototype.onAdd.call(this,t),this.setOpacity(this.options.opacity),t.fire("tooltipopen",{tooltip:this}),this._source&&this._source.fire("tooltipopen",{tooltip:this},!0)},onRemove:function(t){en.prototype.onRemove.call(this,t),t.fire("tooltipclose",{tooltip:this}),this._source&&this._source.fire("tooltipclose",{tooltip:this},!0)},getEvents:function(){var t=en.prototype.getEvents.call(this);return Tt&&!this.options.permanent&&(t.preclick=this._close),t},_close:function(){this._map&&this._map.closeTooltip(this)},_initLayout:function(){var t="leaflet-tooltip "+(this.options.className||"")+" leaflet-zoom-"+(this._zoomAnimated?"animated":"hide");this._contentNode=this._container=hi("div",t)},_updateLayout:function(){},_adjustPan:function(){},_setPosition:function(t){var i=this._map,e=this._container,n=i.latLngToContainerPoint(i.getCenter()),o=i.layerPointToContainerPoint(t),s=this.options.direction,r=e.offsetWidth,a=e.offsetHeight,h=I(this.options.offset),u=this._getAnchor();t="top"===s?t.add(I(-r/2+h.x,-a+h.y+u.y,!0)):"bottom"===s?t.subtract(I(r/2-h.x,-h.y,!0)):"center"===s?t.subtract(I(r/2+h.x,a/2-u.y+h.y,!0)):"right"===s||"auto"===s&&o.x<n.x?(s="right",t.add(I(h.x+u.x,u.y-a/2+h.y,!0))):(s="left",t.subtract(I(r+u.x-h.x,a/2-u.y-h.y,!0))),mi(e,"leaflet-tooltip-right"),mi(e,"leaflet-tooltip-left"),mi(e,"leaflet-tooltip-top"),mi(e,"leaflet-tooltip-bottom"),pi(e,"leaflet-tooltip-"+s),wi(e,t)},_updatePosition:function(){var t=this._map.latLngToLayerPoint(this._latlng);this._setPosition(t)},setOpacity:function(t){this.options.opacity=t,this._container&&vi(this._container,t)},_animateZoom:function(t){var i=this._map._latLngToNewLayerPoint(this._latlng,t.zoom,t.center);this._setPosition(i)},_getAnchor:function(){return I(this._source&&this._source._getTooltipAnchor&&!this.options.sticky?this._source._getTooltipAnchor():[0,0])}});Ji.include({openTooltip:function(t,i,e){return t instanceof on||(t=new on(e).setContent(t)),i&&t.setLatLng(i),this.hasLayer(t)?this:this.addLayer(t)},closeTooltip:function(t){return t&&this.removeLayer(t),this}}),Se.include({bindTooltip:function(t,i){return t instanceof on?(p(t,i),(this._tooltip=t)._source=this):(this._tooltip&&!i||(this._tooltip=new on(i,this)),this._tooltip.setContent(t)),this._initTooltipInteractions(),this._tooltip.options.permanent&&this._map&&this._map.hasLayer(this)&&this.openTooltip(),this},unbindTooltip:function(){return this._tooltip&&(this._initTooltipInteractions(!0),this.closeTooltip(),this._tooltip=null),this},_initTooltipInteractions:function(t){if(t||!this._tooltipHandlersAdded){var i=t?"off":"on",e={remove:this.closeTooltip,move:this._moveTooltip};this._tooltip.options.permanent?e.add=this._openTooltip:(e.mouseover=this._openTooltip,e.mouseout=this.closeTooltip,this._tooltip.options.sticky&&(e.mousemove=this._moveTooltip),Tt&&(e.click=this._openTooltip)),this[i](e),this._tooltipHandlersAdded=!t}},openTooltip:function(t,i){return this._tooltip&&this._map&&(i=this._tooltip._prepareOpen(this,t,i),this._map.openTooltip(this._tooltip,i),this._tooltip.options.interactive&&this._tooltip._container&&(pi(this._tooltip._container,"leaflet-clickable"),this.addInteractiveTarget(this._tooltip._container))),this},closeTooltip:function(){return this._tooltip&&(this._tooltip._close(),this._tooltip.options.interactive&&this._tooltip._container&&(mi(this._tooltip._container,"leaflet-clickable"),this.removeInteractiveTarget(this._tooltip._container))),this},toggleTooltip:function(t){return this._tooltip&&(this._tooltip._map?this.closeTooltip():this.openTooltip(t)),this},isTooltipOpen:function(){return this._tooltip.isOpen()},setTooltipContent:function(t){return this._tooltip&&this._tooltip.setContent(t),this},getTooltip:function(){return this._tooltip},_openTooltip:function(t){var i=t.layer||t.target;this._tooltip&&this._map&&this.openTooltip(i,this._tooltip.options.sticky?t.latlng:void 0)},_moveTooltip:function(t){var i,e,n=t.latlng;this._tooltip.options.sticky&&t.originalEvent&&(i=this._map.mouseEventToContainerPoint(t.originalEvent),e=this._map.containerPointToLayerPoint(i),n=this._map.layerPointToLatLng(e)),this._tooltip.setLatLng(n)}});var sn=ke.extend({options:{iconSize:[12,12],html:!1,bgPos:null,className:"leaflet-div-icon"},createIcon:function(t){var i=t&&"DIV"===t.tagName?t:document.createElement("div"),e=this.options;if(e.html instanceof Element?(li(i),i.appendChild(e.html)):i.innerHTML=!1!==e.html?e.html:"",e.bgPos){var n=I(e.bgPos);i.style.backgroundPosition=-n.x+"px "+-n.y+"px"}return this._setIconStyles(i,"icon"),i},createShadow:function(){return null}});ke.Default=Be;var rn=Se.extend({options:{tileSize:256,opacity:1,updateWhenIdle:xt,updateWhenZooming:!0,updateInterval:200,zIndex:1,bounds:null,minZoom:0,maxZoom:void 0,maxNativeZoom:void 0,minNativeZoom:void 0,noWrap:!1,pane:"tilePane",className:"",keepBuffer:2},initialize:function(t){p(this,t)},onAdd:function(){this._initContainer(),this._levels={},this._tiles={},this._resetView(),this._update()},beforeAdd:function(t){t._addZoomLimit(this)},onRemove:function(t){this._removeAllTiles(),ui(this._container),t._removeZoomLimit(this),this._container=null,this._tileZoom=void 0},bringToFront:function(){return this._map&&(ci(this._container),this._setAutoZIndex(Math.max)),this},bringToBack:function(){return this._map&&(_i(this._container),this._setAutoZIndex(Math.min)),this},getContainer:function(){return this._container},setOpacity:function(t){return this.options.opacity=t,this._updateOpacity(),this},setZIndex:function(t){return this.options.zIndex=t,this._updateZIndex(),this},isLoading:function(){return this._loading},redraw:function(){return this._map&&(this._removeAllTiles(),this._update()),this},getEvents:function(){var t={viewprereset:this._invalidateAll,viewreset:this._resetView,zoom:this._resetView,moveend:this._onMoveEnd};return this.options.updateWhenIdle||(this._onMove||(this._onMove=o(this._onMoveEnd,this.options.updateInterval,this)),t.move=this._onMove),this._zoomAnimated&&(t.zoomanim=this._animateZoom),t},createTile:function(){return document.createElement("div")},getTileSize:function(){var t=this.options.tileSize;return t instanceof B?t:new B(t,t)},_updateZIndex:function(){this._container&&void 0!==this.options.zIndex&&null!==this.options.zIndex&&(this._container.style.zIndex=this.options.zIndex)},_setAutoZIndex:function(t){for(var i,e=this.getPane().children,n=-t(-1/0,1/0),o=0,s=e.length;o<s;o++)i=e[o].style.zIndex,e[o]!==this._container&&i&&(n=t(n,+i));isFinite(n)&&(this.options.zIndex=n+t(-1,1),this._updateZIndex())},_updateOpacity:function(){if(this._map&&!et){vi(this._container,this.options.opacity);var t=+new Date,i=!1,e=!1;for(var n in this._tiles){var o=this._tiles[n];if(o.current&&o.loaded){var s=Math.min(1,(t-o.loaded)/200);vi(o.el,s),s<1?i=!0:(o.active?e=!0:this._onOpaqueTile(o),o.active=!0)}}e&&!this._noPrune&&this._pruneTiles(),i&&(C(this._fadeFrame),this._fadeFrame=M(this._updateOpacity,this))}},_onOpaqueTile:l,_initContainer:function(){this._container||(this._container=hi("div","leaflet-layer "+(this.options.className||"")),this._updateZIndex(),this.options.opacity<1&&this._updateOpacity(),this.getPane().appendChild(this._container))},_updateLevels:function(){var t=this._tileZoom,i=this.options.maxZoom;if(void 0!==t){for(var e in this._levels)this._levels[e].el.children.length||e===t?(this._levels[e].el.style.zIndex=i-Math.abs(t-e),this._onUpdateLevel(e)):(ui(this._levels[e].el),this._removeTilesAtZoom(e),this._onRemoveLevel(e),delete this._levels[e]);var n=this._levels[t],o=this._map;return n||((n=this._levels[t]={}).el=hi("div","leaflet-tile-container leaflet-zoom-animated",this._container),n.el.style.zIndex=i,n.origin=o.project(o.unproject(o.getPixelOrigin()),t).round(),n.zoom=t,this._setZoomTransform(n,o.getCenter(),o.getZoom()),n.el.offsetWidth,this._onCreateLevel(n)),this._level=n}},_onUpdateLevel:l,_onRemoveLevel:l,_onCreateLevel:l,_pruneTiles:function(){if(this._map){var t,i,e=this._map.getZoom();if(e>this.options.maxZoom||e<this.options.minZoom)this._removeAllTiles();else{for(t in this._tiles)(i=this._tiles[t]).retain=i.current;for(t in this._tiles)if((i=this._tiles[t]).current&&!i.active){var n=i.coords;this._retainParent(n.x,n.y,n.z,n.z-5)||this._retainChildren(n.x,n.y,n.z,n.z+2)}for(t in this._tiles)this._tiles[t].retain||this._removeTile(t)}}},_removeTilesAtZoom:function(t){for(var i in this._tiles)this._tiles[i].coords.z===t&&this._removeTile(i)},_removeAllTiles:function(){for(var t in this._tiles)this._removeTile(t)},_invalidateAll:function(){for(var t in this._levels)ui(this._levels[t].el),this._onRemoveLevel(t),delete this._levels[t];this._removeAllTiles(),this._tileZoom=void 0},_retainParent:function(t,i,e,n){var o=Math.floor(t/2),s=Math.floor(i/2),r=e-1,a=new B(+o,+s);a.z=+r;var h=this._tileCoordsToKey(a),u=this._tiles[h];return u&&u.active?u.retain=!0:(u&&u.loaded&&(u.retain=!0),n<r&&this._retainParent(o,s,r,n))},_retainChildren:function(t,i,e,n){for(var o=2*t;o<2*t+2;o++)for(var s=2*i;s<2*i+2;s++){var r=new B(o,s);r.z=e+1;var a=this._tileCoordsToKey(r),h=this._tiles[a];h&&h.active?h.retain=!0:(h&&h.loaded&&(h.retain=!0),e+1<n&&this._retainChildren(o,s,e+1,n))}},_resetView:function(t){var i=t&&(t.pinch||t.flyTo);this._setView(this._map.getCenter(),this._map.getZoom(),i,i)},_animateZoom:function(t){this._setView(t.center,t.zoom,!0,t.noUpdate)},_clampZoom:function(t){var i=this.options;return void 0!==i.minNativeZoom&&t<i.minNativeZoom?i.minNativeZoom:void 0!==i.maxNativeZoom&&i.maxNativeZoom<t?i.maxNativeZoom:t},_setView:function(t,i,e,n){var o=this._clampZoom(Math.round(i));(void 0!==this.options.maxZoom&&o>this.options.maxZoom||void 0!==this.options.minZoom&&o<this.options.minZoom)&&(o=void 0);var s=this.options.updateWhenZooming&&o!==this._tileZoom;n&&!s||(this._tileZoom=o,this._abortLoading&&this._abortLoading(),this._updateLevels(),this._resetGrid(),void 0!==o&&this._update(t),e||this._pruneTiles(),this._noPrune=!!e),this._setZoomTransforms(t,i)},_setZoomTransforms:function(t,i){for(var e in this._levels)this._setZoomTransform(this._levels[e],t,i)},_setZoomTransform:function(t,i,e){var n=this._map.getZoomScale(e,t.zoom),o=t.origin.multiplyBy(n).subtract(this._map._getNewPixelOrigin(i,e)).round();yt?xi(t.el,o,n):wi(t.el,o)},_resetGrid:function(){var t=this._map,i=t.options.crs,e=this._tileSize=this.getTileSize(),n=this._tileZoom,o=this._map.getPixelWorldBounds(this._tileZoom);o&&(this._globalTileRange=this._pxBoundsToTileRange(o)),this._wrapX=i.wrapLng&&!this.options.noWrap&&[Math.floor(t.project([0,i.wrapLng[0]],n).x/e.x),Math.ceil(t.project([0,i.wrapLng[1]],n).x/e.y)],this._wrapY=i.wrapLat&&!this.options.noWrap&&[Math.floor(t.project([i.wrapLat[0],0],n).y/e.x),Math.ceil(t.project([i.wrapLat[1],0],n).y/e.y)]},_onMoveEnd:function(){this._map&&!this._map._animatingZoom&&this._update()},_getTiledPixelBounds:function(t){var i=this._map,e=i._animatingZoom?Math.max(i._animateToZoom,i.getZoom()):i.getZoom(),n=i.getZoomScale(e,this._tileZoom),o=i.project(t,this._tileZoom).floor(),s=i.getSize().divideBy(2*n);return new O(o.subtract(s),o.add(s))},_update:function(t){var i=this._map;if(i){var e=this._clampZoom(i.getZoom());if(void 0===t&&(t=i.getCenter()),void 0!==this._tileZoom){var n=this._getTiledPixelBounds(t),o=this._pxBoundsToTileRange(n),s=o.getCenter(),r=[],a=this.options.keepBuffer,h=new O(o.getBottomLeft().subtract([a,-a]),o.getTopRight().add([a,-a]));if(!(isFinite(o.min.x)&&isFinite(o.min.y)&&isFinite(o.max.x)&&isFinite(o.max.y)))throw new Error("Attempted to load an infinite number of tiles");for(var u in this._tiles){var l=this._tiles[u].coords;l.z===this._tileZoom&&h.contains(new B(l.x,l.y))||(this._tiles[u].current=!1)}if(1<Math.abs(e-this._tileZoom))this._setView(t,e);else{for(var c=o.min.y;c<=o.max.y;c++)for(var _=o.min.x;_<=o.max.x;_++){var d=new B(_,c);if(d.z=this._tileZoom,this._isValidTile(d)){var p=this._tiles[this._tileCoordsToKey(d)];p?p.current=!0:r.push(d)}}if(r.sort(function(t,i){return t.distanceTo(s)-i.distanceTo(s)}),0!==r.length){this._loading||(this._loading=!0,this.fire("loading"));var m=document.createDocumentFragment();for(_=0;_<r.length;_++)this._addTile(r[_],m);this._level.el.appendChild(m)}}}}},_isValidTile:function(t){var i=this._map.options.crs;if(!i.infinite){var e=this._globalTileRange;if(!i.wrapLng&&(t.x<e.min.x||t.x>e.max.x)||!i.wrapLat&&(t.y<e.min.y||t.y>e.max.y))return!1}if(!this.options.bounds)return!0;var n=this._tileCoordsToBounds(t);return D(this.options.bounds).overlaps(n)},_keyToBounds:function(t){return this._tileCoordsToBounds(this._keyToTileCoords(t))},_tileCoordsToNwSe:function(t){var i=this._map,e=this.getTileSize(),n=t.scaleBy(e),o=n.add(e);return[i.unproject(n,t.z),i.unproject(o,t.z)]},_tileCoordsToBounds:function(t){var i=this._tileCoordsToNwSe(t),e=new N(i[0],i[1]);return this.options.noWrap||(e=this._map.wrapLatLngBounds(e)),e},_tileCoordsToKey:function(t){return t.x+":"+t.y+":"+t.z},_keyToTileCoords:function(t){var i=t.split(":"),e=new B(+i[0],+i[1]);return e.z=+i[2],e},_removeTile:function(t){var i=this._tiles[t];i&&(ui(i.el),delete this._tiles[t],this.fire("tileunload",{tile:i.el,coords:this._keyToTileCoords(t)}))},_initTile:function(t){pi(t,"leaflet-tile");var i=this.getTileSize();t.style.width=i.x+"px",t.style.height=i.y+"px",t.onselectstart=l,t.onmousemove=l,et&&this.options.opacity<1&&vi(t,this.options.opacity),st&&!rt&&(t.style.WebkitBackfaceVisibility="hidden")},_addTile:function(t,i){var e=this._getTilePos(t),n=this._tileCoordsToKey(t),o=this.createTile(this._wrapCoords(t),a(this._tileReady,this,t));this._initTile(o),this.createTile.length<2&&M(a(this._tileReady,this,t,null,o)),wi(o,e),this._tiles[n]={el:o,coords:t,current:!0},i.appendChild(o),this.fire("tileloadstart",{tile:o,coords:t})},_tileReady:function(t,i,e){i&&this.fire("tileerror",{error:i,tile:e,coords:t});var n=this._tileCoordsToKey(t);(e=this._tiles[n])&&(e.loaded=+new Date,this._map._fadeAnimated?(vi(e.el,0),C(this._fadeFrame),this._fadeFrame=M(this._updateOpacity,this)):(e.active=!0,this._pruneTiles()),i||(pi(e.el,"leaflet-tile-loaded"),this.fire("tileload",{tile:e.el,coords:t})),this._noTilesToLoad()&&(this._loading=!1,this.fire("load"),et||!this._map._fadeAnimated?M(this._pruneTiles,this):setTimeout(a(this._pruneTiles,this),250)))},_getTilePos:function(t){return t.scaleBy(this.getTileSize()).subtract(this._level.origin)},_wrapCoords:function(t){var i=new B(this._wrapX?r(t.x,this._wrapX):t.x,this._wrapY?r(t.y,this._wrapY):t.y);return i.z=t.z,i},_pxBoundsToTileRange:function(t){var i=this.getTileSize();return new O(t.min.unscaleBy(i).floor(),t.max.unscaleBy(i).ceil().subtract([1,1]))},_noTilesToLoad:function(){for(var t in this._tiles)if(!this._tiles[t].loaded)return!1;return!0}});var an=rn.extend({options:{minZoom:0,maxZoom:18,subdomains:"abc",errorTileUrl:"",zoomOffset:0,tms:!1,zoomReverse:!1,detectRetina:!1,crossOrigin:!1},initialize:function(t,i){this._url=t,(i=p(this,i)).detectRetina&&Ct&&0<i.maxZoom&&(i.tileSize=Math.floor(i.tileSize/2),i.zoomReverse?(i.zoomOffset--,i.minZoom++):(i.zoomOffset++,i.maxZoom--),i.minZoom=Math.max(0,i.minZoom)),"string"==typeof i.subdomains&&(i.subdomains=i.subdomains.split("")),st||this.on("tileunload",this._onTileRemove)},setUrl:function(t,i){return this._url===t&&void 0===i&&(i=!0),this._url=t,i||this.redraw(),this},createTile:function(t,i){var e=document.createElement("img");return Ei(e,"load",a(this._tileOnLoad,this,i,e)),Ei(e,"error",a(this._tileOnError,this,i,e)),!this.options.crossOrigin&&""!==this.options.crossOrigin||(e.crossOrigin=!0===this.options.crossOrigin?"":this.options.crossOrigin),e.alt="",e.setAttribute("role","presentation"),e.src=this.getTileUrl(t),e},getTileUrl:function(t){var i={r:Ct?"@2x":"",s:this._getSubdomain(t),x:t.x,y:t.y,z:this._getZoomForUrl()};if(this._map&&!this._map.options.crs.infinite){var e=this._globalTileRange.max.y-t.y;this.options.tms&&(i.y=e),i["-y"]=e}return g(this._url,h(i,this.options))},_tileOnLoad:function(t,i){et?setTimeout(a(t,this,null,i),0):t(null,i)},_tileOnError:function(t,i,e){var n=this.options.errorTileUrl;n&&i.getAttribute("src")!==n&&(i.src=n),t(e,i)},_onTileRemove:function(t){t.tile.onload=null},_getZoomForUrl:function(){var t=this._tileZoom,i=this.options.maxZoom;return this.options.zoomReverse&&(t=i-t),t+this.options.zoomOffset},_getSubdomain:function(t){var i=Math.abs(t.x+t.y)%this.options.subdomains.length;return this.options.subdomains[i]},_abortLoading:function(){var t,i;for(t in this._tiles)this._tiles[t].coords.z!==this._tileZoom&&((i=this._tiles[t].el).onload=l,i.onerror=l,i.complete||(i.src=x,ui(i),delete this._tiles[t]))},_removeTile:function(t){var i=this._tiles[t];if(i)return ht||i.el.setAttribute("src",x),rn.prototype._removeTile.call(this,t)},_tileReady:function(t,i,e){if(this._map&&(!e||e.getAttribute("src")!==x))return rn.prototype._tileReady.call(this,t,i,e)}});function hn(t,i){return new an(t,i)}var un=an.extend({defaultWmsParams:{service:"WMS",request:"GetMap",layers:"",styles:"",format:"image/jpeg",transparent:!1,version:"1.1.1"},options:{crs:null,uppercase:!1},initialize:function(t,i){this._url=t;var e=h({},this.defaultWmsParams);for(var n in i)n in this.options||(e[n]=i[n]);var o=(i=p(this,i)).detectRetina&&Ct?2:1,s=this.getTileSize();e.width=s.x*o,e.height=s.y*o,this.wmsParams=e},onAdd:function(t){this._crs=this.options.crs||t.options.crs,this._wmsVersion=parseFloat(this.wmsParams.version);var i=1.3<=this._wmsVersion?"crs":"srs";this.wmsParams[i]=this._crs.code,an.prototype.onAdd.call(this,t)},getTileUrl:function(t){var i=this._tileCoordsToNwSe(t),e=this._crs,n=R(e.project(i[0]),e.project(i[1])),o=n.min,s=n.max,r=(1.3<=this._wmsVersion&&this._crs===Me?[o.y,o.x,s.y,s.x]:[o.x,o.y,s.x,s.y]).join(","),a=an.prototype.getTileUrl.call(this,t);return a+m(this.wmsParams,a,this.options.uppercase)+(this.options.uppercase?"&BBOX=":"&bbox=")+r},setParams:function(t,i){return h(this.wmsParams,t),i||this.redraw(),this}});an.WMS=un,hn.wms=function(t,i){return new un(t,i)};var ln=Se.extend({options:{padding:.1,tolerance:0},initialize:function(t){p(this,t),u(this),this._layers=this._layers||{}},onAdd:function(){this._container||(this._initContainer(),this._zoomAnimated&&pi(this._container,"leaflet-zoom-animated")),this.getPane().appendChild(this._container),this._update(),this.on("update",this._updatePaths,this)},onRemove:function(){this.off("update",this._updatePaths,this),this._destroyContainer()},getEvents:function(){var t={viewreset:this._reset,zoom:this._onZoom,moveend:this._update,zoomend:this._onZoomEnd};return this._zoomAnimated&&(t.zoomanim=this._onAnimZoom),t},_onAnimZoom:function(t){this._updateTransform(t.center,t.zoom)},_onZoom:function(){this._updateTransform(this._map.getCenter(),this._map.getZoom())},_updateTransform:function(t,i){var e=this._map.getZoomScale(i,this._zoom),n=Pi(this._container),o=this._map.getSize().multiplyBy(.5+this.options.padding),s=this._map.project(this._center,i),r=this._map.project(t,i).subtract(s),a=o.multiplyBy(-e).add(n).add(o).subtract(r);yt?xi(this._container,a,e):wi(this._container,a)},_reset:function(){for(var t in this._update(),this._updateTransform(this._center,this._zoom),this._layers)this._layers[t]._reset()},_onZoomEnd:function(){for(var t in this._layers)this._layers[t]._project()},_updatePaths:function(){for(var t in this._layers)this._layers[t]._update()},_update:function(){var t=this.options.padding,i=this._map.getSize(),e=this._map.containerPointToLayerPoint(i.multiplyBy(-t)).round();this._bounds=new O(e,e.add(i.multiplyBy(1+2*t)).round()),this._center=this._map.getCenter(),this._zoom=this._map.getZoom()}}),cn=ln.extend({getEvents:function(){var t=ln.prototype.getEvents.call(this);return t.viewprereset=this._onViewPreReset,t},_onViewPreReset:function(){this._postponeUpdatePaths=!0},onAdd:function(){ln.prototype.onAdd.call(this),this._draw()},_initContainer:function(){var t=this._container=document.createElement("canvas");Ei(t,"mousemove",o(this._onMouseMove,32,this),this),Ei(t,"click dblclick mousedown mouseup contextmenu",this._onClick,this),Ei(t,"mouseout",this._handleMouseOut,this),this._ctx=t.getContext("2d")},_destroyContainer:function(){C(this._redrawRequest),delete this._ctx,ui(this._container),Bi(this._container),delete this._container},_updatePaths:function(){if(!this._postponeUpdatePaths){for(var t in this._redrawBounds=null,this._layers)this._layers[t]._update();this._redraw()}},_update:function(){if(!this._map._animatingZoom||!this._bounds){ln.prototype._update.call(this);var t=this._bounds,i=this._container,e=t.getSize(),n=Ct?2:1;wi(i,t.min),i.width=n*e.x,i.height=n*e.y,i.style.width=e.x+"px",i.style.height=e.y+"px",Ct&&this._ctx.scale(2,2),this._ctx.translate(-t.min.x,-t.min.y),this.fire("update")}},_reset:function(){ln.prototype._reset.call(this),this._postponeUpdatePaths&&(this._postponeUpdatePaths=!1,this._updatePaths())},_initPath:function(t){this._updateDashArray(t);var i=(this._layers[u(t)]=t)._order={layer:t,prev:this._drawLast,next:null};this._drawLast&&(this._drawLast.next=i),this._drawLast=i,this._drawFirst=this._drawFirst||this._drawLast},_addPath:function(t){this._requestRedraw(t)},_removePath:function(t){var i=t._order,e=i.next,n=i.prev;e?e.prev=n:this._drawLast=n,n?n.next=e:this._drawFirst=e,delete t._order,delete this._layers[u(t)],this._requestRedraw(t)},_updatePath:function(t){this._extendRedrawBounds(t),t._project(),t._update(),this._requestRedraw(t)},_updateStyle:function(t){this._updateDashArray(t),this._requestRedraw(t)},_updateDashArray:function(t){if("string"==typeof t.options.dashArray){var i,e,n=t.options.dashArray.split(/[, ]+/),o=[];for(e=0;e<n.length;e++){if(i=Number(n[e]),isNaN(i))return;o.push(i)}t.options._dashArray=o}else t.options._dashArray=t.options.dashArray},_requestRedraw:function(t){this._map&&(this._extendRedrawBounds(t),this._redrawRequest=this._redrawRequest||M(this._redraw,this))},_extendRedrawBounds:function(t){if(t._pxBounds){var i=(t.options.weight||0)+1;this._redrawBounds=this._redrawBounds||new O,this._redrawBounds.extend(t._pxBounds.min.subtract([i,i])),this._redrawBounds.extend(t._pxBounds.max.add([i,i]))}},_redraw:function(){this._redrawRequest=null,this._redrawBounds&&(this._redrawBounds.min._floor(),this._redrawBounds.max._ceil()),this._clear(),this._draw(),this._redrawBounds=null},_clear:function(){var t=this._redrawBounds;if(t){var i=t.getSize();this._ctx.clearRect(t.min.x,t.min.y,i.x,i.y)}else this._ctx.clearRect(0,0,this._container.width,this._container.height)},_draw:function(){var t,i=this._redrawBounds;if(this._ctx.save(),i){var e=i.getSize();this._ctx.beginPath(),this._ctx.rect(i.min.x,i.min.y,e.x,e.y),this._ctx.clip()}this._drawing=!0;for(var n=this._drawFirst;n;n=n.next)t=n.layer,(!i||t._pxBounds&&t._pxBounds.intersects(i))&&t._updatePath();this._drawing=!1,this._ctx.restore()},_updatePoly:function(t,i){if(this._drawing){var e,n,o,s,r=t._parts,a=r.length,h=this._ctx;if(a){for(h.beginPath(),e=0;e<a;e++){for(n=0,o=r[e].length;n<o;n++)s=r[e][n],h[n?"lineTo":"moveTo"](s.x,s.y);i&&h.closePath()}this._fillStroke(h,t)}}},_updateCircle:function(t){if(this._drawing&&!t._empty()){var i=t._point,e=this._ctx,n=Math.max(Math.round(t._radius),1),o=(Math.max(Math.round(t._radiusY),1)||n)/n;1!=o&&(e.save(),e.scale(1,o)),e.beginPath(),e.arc(i.x,i.y/o,n,0,2*Math.PI,!1),1!=o&&e.restore(),this._fillStroke(e,t)}},_fillStroke:function(t,i){var e=i.options;e.fill&&(t.globalAlpha=e.fillOpacity,t.fillStyle=e.fillColor||e.color,t.fill(e.fillRule||"evenodd")),e.stroke&&0!==e.weight&&(t.setLineDash&&t.setLineDash(i.options&&i.options._dashArray||[]),t.globalAlpha=e.opacity,t.lineWidth=e.weight,t.strokeStyle=e.color,t.lineCap=e.lineCap,t.lineJoin=e.lineJoin,t.stroke())},_onClick:function(t){for(var i,e,n=this._map.mouseEventToLayerPoint(t),o=this._drawFirst;o;o=o.next)(i=o.layer).options.interactive&&i._containsPoint(n)&&!this._map._draggableMoved(i)&&(e=i);e&&(qi(t),this._fireEvent([e],t))},_onMouseMove:function(t){if(this._map&&!this._map.dragging.moving()&&!this._map._animatingZoom){var i=this._map.mouseEventToLayerPoint(t);this._handleMouseHover(t,i)}},_handleMouseOut:function(t){var i=this._hoveredLayer;i&&(mi(this._container,"leaflet-interactive"),this._fireEvent([i],t,"mouseout"),this._hoveredLayer=null)},_handleMouseHover:function(t,i){for(var e,n,o=this._drawFirst;o;o=o.next)(e=o.layer).options.interactive&&e._containsPoint(i)&&(n=e);n!==this._hoveredLayer&&(this._handleMouseOut(t),n&&(pi(this._container,"leaflet-interactive"),this._fireEvent([n],t,"mouseover"),this._hoveredLayer=n)),this._hoveredLayer&&this._fireEvent([this._hoveredLayer],t)},_fireEvent:function(t,i,e){this._map._fireDOMEvent(i,e||i.type,t)},_bringToFront:function(t){var i=t._order;if(i){var e=i.next,n=i.prev;e&&((e.prev=n)?n.next=e:e&&(this._drawFirst=e),i.prev=this._drawLast,(this._drawLast.next=i).next=null,this._drawLast=i,this._requestRedraw(t))}},_bringToBack:function(t){var i=t._order;if(i){var e=i.next,n=i.prev;n&&((n.next=e)?e.prev=n:n&&(this._drawLast=n),i.prev=null,i.next=this._drawFirst,this._drawFirst.prev=i,this._drawFirst=i,this._requestRedraw(t))}}});function _n(t){return St?new cn(t):null}var dn=function(){try{return document.namespaces.add("lvml","urn:schemas-microsoft-com:vml"),function(t){return document.createElement("<lvml:"+t+' class="lvml">')}}catch(t){return function(t){return document.createElement("<"+t+' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')}}}(),pn={_initContainer:function(){this._container=hi("div","leaflet-vml-container")},_update:function(){this._map._animatingZoom||(ln.prototype._update.call(this),this.fire("update"))},_initPath:function(t){var i=t._container=dn("shape");pi(i,"leaflet-vml-shape "+(this.options.className||"")),i.coordsize="1 1",t._path=dn("path"),i.appendChild(t._path),this._updateStyle(t),this._layers[u(t)]=t},_addPath:function(t){var i=t._container;this._container.appendChild(i),t.options.interactive&&t.addInteractiveTarget(i)},_removePath:function(t){var i=t._container;ui(i),t.removeInteractiveTarget(i),delete this._layers[u(t)]},_updateStyle:function(t){var i=t._stroke,e=t._fill,n=t.options,o=t._container;o.stroked=!!n.stroke,o.filled=!!n.fill,n.stroke?(i||(i=t._stroke=dn("stroke")),o.appendChild(i),i.weight=n.weight+"px",i.color=n.color,i.opacity=n.opacity,n.dashArray?i.dashStyle=v(n.dashArray)?n.dashArray.join(" "):n.dashArray.replace(/( *, *)/g," "):i.dashStyle="",i.endcap=n.lineCap.replace("butt","flat"),i.joinstyle=n.lineJoin):i&&(o.removeChild(i),t._stroke=null),n.fill?(e||(e=t._fill=dn("fill")),o.appendChild(e),e.color=n.fillColor||n.color,e.opacity=n.fillOpacity):e&&(o.removeChild(e),t._fill=null)},_updateCircle:function(t){var i=t._point.round(),e=Math.round(t._radius),n=Math.round(t._radiusY||e);this._setPath(t,t._empty()?"M0 0":"AL "+i.x+","+i.y+" "+e+","+n+" 0,23592600")},_setPath:function(t,i){t._path.v=i},_bringToFront:function(t){ci(t._container)},_bringToBack:function(t){_i(t._container)}},mn=Et?dn:$,fn=ln.extend({getEvents:function(){var t=ln.prototype.getEvents.call(this);return t.zoomstart=this._onZoomStart,t},_initContainer:function(){this._container=mn("svg"),this._container.setAttribute("pointer-events","none"),this._rootGroup=mn("g"),this._container.appendChild(this._rootGroup)},_destroyContainer:function(){ui(this._container),Bi(this._container),delete this._container,delete this._rootGroup,delete this._svgSize},_onZoomStart:function(){this._update()},_update:function(){if(!this._map._animatingZoom||!this._bounds){ln.prototype._update.call(this);var t=this._bounds,i=t.getSize(),e=this._container;this._svgSize&&this._svgSize.equals(i)||(this._svgSize=i,e.setAttribute("width",i.x),e.setAttribute("height",i.y)),wi(e,t.min),e.setAttribute("viewBox",[t.min.x,t.min.y,i.x,i.y].join(" ")),this.fire("update")}},_initPath:function(t){var i=t._path=mn("path");t.options.className&&pi(i,t.options.className),t.options.interactive&&pi(i,"leaflet-interactive"),this._updateStyle(t),this._layers[u(t)]=t},_addPath:function(t){this._rootGroup||this._initContainer(),this._rootGroup.appendChild(t._path),t.addInteractiveTarget(t._path)},_removePath:function(t){ui(t._path),t.removeInteractiveTarget(t._path),delete this._layers[u(t)]},_updatePath:function(t){t._project(),t._update()},_updateStyle:function(t){var i=t._path,e=t.options;i&&(e.stroke?(i.setAttribute("stroke",e.color),i.setAttribute("stroke-opacity",e.opacity),i.setAttribute("stroke-width",e.weight),i.setAttribute("stroke-linecap",e.lineCap),i.setAttribute("stroke-linejoin",e.lineJoin),e.dashArray?i.setAttribute("stroke-dasharray",e.dashArray):i.removeAttribute("stroke-dasharray"),e.dashOffset?i.setAttribute("stroke-dashoffset",e.dashOffset):i.removeAttribute("stroke-dashoffset")):i.setAttribute("stroke","none"),e.fill?(i.setAttribute("fill",e.fillColor||e.color),i.setAttribute("fill-opacity",e.fillOpacity),i.setAttribute("fill-rule",e.fillRule||"evenodd")):i.setAttribute("fill","none"))},_updatePoly:function(t,i){this._setPath(t,Q(t._parts,i))},_updateCircle:function(t){var i=t._point,e=Math.max(Math.round(t._radius),1),n="a"+e+","+(Math.max(Math.round(t._radiusY),1)||e)+" 0 1,0 ",o=t._empty()?"M0 0":"M"+(i.x-e)+","+i.y+n+2*e+",0 "+n+2*-e+",0 ";this._setPath(t,o)},_setPath:function(t,i){t._path.setAttribute("d",i)},_bringToFront:function(t){ci(t._path)},_bringToBack:function(t){_i(t._path)}});function gn(t){return Zt||Et?new fn(t):null}Et&&fn.include(pn),Ji.include({getRenderer:function(t){var i=t.options.renderer||this._getPaneRenderer(t.options.pane)||this.options.renderer||this._renderer;return i||(i=this._renderer=this._createRenderer()),this.hasLayer(i)||this.addLayer(i),i},_getPaneRenderer:function(t){if("overlayPane"===t||void 0===t)return!1;var i=this._paneRenderers[t];return void 0===i&&(i=this._createRenderer({pane:t}),this._paneRenderers[t]=i),i},_createRenderer:function(t){return this.options.preferCanvas&&_n(t)||gn(t)}});var vn=je.extend({initialize:function(t,i){je.prototype.initialize.call(this,this._boundsToLatLngs(t),i)},setBounds:function(t){return this.setLatLngs(this._boundsToLatLngs(t))},_boundsToLatLngs:function(t){return[(t=D(t)).getSouthWest(),t.getNorthWest(),t.getNorthEast(),t.getSouthEast()]}});fn.create=mn,fn.pointsToPath=Q,We.geometryToLayer=He,We.coordsToLatLng=Fe,We.coordsToLatLngs=Ue,We.latLngToCoords=Ve,We.latLngsToCoords=qe,We.getFeature=Ge,We.asFeature=Ke,Ji.mergeOptions({boxZoom:!0});var yn=oe.extend({initialize:function(t){this._map=t,this._container=t._container,this._pane=t._panes.overlayPane,this._resetStateTimeout=0,t.on("unload",this._destroy,this)},addHooks:function(){Ei(this._container,"mousedown",this._onMouseDown,this)},removeHooks:function(){Bi(this._container,"mousedown",this._onMouseDown,this)},moved:function(){return this._moved},_destroy:function(){ui(this._pane),delete this._pane},_resetState:function(){this._resetStateTimeout=0,this._moved=!1},_clearDeferredResetState:function(){0!==this._resetStateTimeout&&(clearTimeout(this._resetStateTimeout),this._resetStateTimeout=0)},_onMouseDown:function(t){if(!t.shiftKey||1!==t.which&&1!==t.button)return!1;this._clearDeferredResetState(),this._resetState(),$t(),bi(),this._startPoint=this._map.mouseEventToContainerPoint(t),Ei(document,{contextmenu:ji,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseMove:function(t){this._moved||(this._moved=!0,this._box=hi("div","leaflet-zoom-box",this._container),pi(this._container,"leaflet-crosshair"),this._map.fire("boxzoomstart")),this._point=this._map.mouseEventToContainerPoint(t);var i=new O(this._point,this._startPoint),e=i.getSize();wi(this._box,i.min),this._box.style.width=e.x+"px",this._box.style.height=e.y+"px"},_finish:function(){this._moved&&(ui(this._box),mi(this._container,"leaflet-crosshair")),Qt(),Ti(),Bi(document,{contextmenu:ji,mousemove:this._onMouseMove,mouseup:this._onMouseUp,keydown:this._onKeyDown},this)},_onMouseUp:function(t){if((1===t.which||1===t.button)&&(this._finish(),this._moved)){this._clearDeferredResetState(),this._resetStateTimeout=setTimeout(a(this._resetState,this),0);var i=new N(this._map.containerPointToLatLng(this._startPoint),this._map.containerPointToLatLng(this._point));this._map.fitBounds(i).fire("boxzoomend",{boxZoomBounds:i})}},_onKeyDown:function(t){27===t.keyCode&&this._finish()}});Ji.addInitHook("addHandler","boxZoom",yn),Ji.mergeOptions({doubleClickZoom:!0});var xn=oe.extend({addHooks:function(){this._map.on("dblclick",this._onDoubleClick,this)},removeHooks:function(){this._map.off("dblclick",this._onDoubleClick,this)},_onDoubleClick:function(t){var i=this._map,e=i.getZoom(),n=i.options.zoomDelta,o=t.originalEvent.shiftKey?e-n:e+n;"center"===i.options.doubleClickZoom?i.setZoom(o):i.setZoomAround(t.containerPoint,o)}});Ji.addInitHook("addHandler","doubleClickZoom",xn),Ji.mergeOptions({dragging:!0,inertia:!rt,inertiaDeceleration:3400,inertiaMaxSpeed:1/0,easeLinearity:.2,worldCopyJump:!1,maxBoundsViscosity:0});var wn=oe.extend({addHooks:function(){if(!this._draggable){var t=this._map;this._draggable=new le(t._mapPane,t._container),this._draggable.on({dragstart:this._onDragStart,drag:this._onDrag,dragend:this._onDragEnd},this),this._draggable.on("predrag",this._onPreDragLimit,this),t.options.worldCopyJump&&(this._draggable.on("predrag",this._onPreDragWrap,this),t.on("zoomend",this._onZoomEnd,this),t.whenReady(this._onZoomEnd,this))}pi(this._map._container,"leaflet-grab leaflet-touch-drag"),this._draggable.enable(),this._positions=[],this._times=[]},removeHooks:function(){mi(this._map._container,"leaflet-grab"),mi(this._map._container,"leaflet-touch-drag"),this._draggable.disable()},moved:function(){return this._draggable&&this._draggable._moved},moving:function(){return this._draggable&&this._draggable._moving},_onDragStart:function(){var t=this._map;if(t._stop(),this._map.options.maxBounds&&this._map.options.maxBoundsViscosity){var i=D(this._map.options.maxBounds);this._offsetLimit=R(this._map.latLngToContainerPoint(i.getNorthWest()).multiplyBy(-1),this._map.latLngToContainerPoint(i.getSouthEast()).multiplyBy(-1).add(this._map.getSize())),this._viscosity=Math.min(1,Math.max(0,this._map.options.maxBoundsViscosity))}else this._offsetLimit=null;t.fire("movestart").fire("dragstart"),t.options.inertia&&(this._positions=[],this._times=[])},_onDrag:function(t){if(this._map.options.inertia){var i=this._lastTime=+new Date,e=this._lastPos=this._draggable._absPos||this._draggable._newPos;this._positions.push(e),this._times.push(i),this._prunePositions(i)}this._map.fire("move",t).fire("drag",t)},_prunePositions:function(t){for(;1<this._positions.length&&50<t-this._times[0];)this._positions.shift(),this._times.shift()},_onZoomEnd:function(){var t=this._map.getSize().divideBy(2),i=this._map.latLngToLayerPoint([0,0]);this._initialWorldOffset=i.subtract(t).x,this._worldWidth=this._map.getPixelWorldBounds().getSize().x},_viscousLimit:function(t,i){return t-(t-i)*this._viscosity},_onPreDragLimit:function(){if(this._viscosity&&this._offsetLimit){var t=this._draggable._newPos.subtract(this._draggable._startPos),i=this._offsetLimit;t.x<i.min.x&&(t.x=this._viscousLimit(t.x,i.min.x)),t.y<i.min.y&&(t.y=this._viscousLimit(t.y,i.min.y)),t.x>i.max.x&&(t.x=this._viscousLimit(t.x,i.max.x)),t.y>i.max.y&&(t.y=this._viscousLimit(t.y,i.max.y)),this._draggable._newPos=this._draggable._startPos.add(t)}},_onPreDragWrap:function(){var t=this._worldWidth,i=Math.round(t/2),e=this._initialWorldOffset,n=this._draggable._newPos.x,o=(n-i+e)%t+i-e,s=(n+i+e)%t-i-e,r=Math.abs(o+e)<Math.abs(s+e)?o:s;this._draggable._absPos=this._draggable._newPos.clone(),this._draggable._newPos.x=r},_onDragEnd:function(t){var i=this._map,e=i.options,n=!e.inertia||this._times.length<2;if(i.fire("dragend",t),n)i.fire("moveend");else{this._prunePositions(+new Date);var o=this._lastPos.subtract(this._positions[0]),s=(this._lastTime-this._times[0])/1e3,r=e.easeLinearity,a=o.multiplyBy(r/s),h=a.distanceTo([0,0]),u=Math.min(e.inertiaMaxSpeed,h),l=a.multiplyBy(u/h),c=u/(e.inertiaDeceleration*r),_=l.multiplyBy(-c/2).round();_.x||_.y?(_=i._limitOffset(_,i.options.maxBounds),M(function(){i.panBy(_,{duration:c,easeLinearity:r,noMoveStart:!0,animate:!0})})):i.fire("moveend")}}});Ji.addInitHook("addHandler","dragging",wn),Ji.mergeOptions({keyboard:!0,keyboardPanDelta:80});var Pn=oe.extend({keyCodes:{left:[37],right:[39],down:[40],up:[38],zoomIn:[187,107,61,171],zoomOut:[189,109,54,173]},initialize:function(t){this._map=t,this._setPanDelta(t.options.keyboardPanDelta),this._setZoomDelta(t.options.zoomDelta)},addHooks:function(){var t=this._map._container;t.tabIndex<=0&&(t.tabIndex="0"),Ei(t,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.on({focus:this._addHooks,blur:this._removeHooks},this)},removeHooks:function(){this._removeHooks(),Bi(this._map._container,{focus:this._onFocus,blur:this._onBlur,mousedown:this._onMouseDown},this),this._map.off({focus:this._addHooks,blur:this._removeHooks},this)},_onMouseDown:function(){if(!this._focused){var t=document.body,i=document.documentElement,e=t.scrollTop||i.scrollTop,n=t.scrollLeft||i.scrollLeft;this._map._container.focus(),window.scrollTo(n,e)}},_onFocus:function(){this._focused=!0,this._map.fire("focus")},_onBlur:function(){this._focused=!1,this._map.fire("blur")},_setPanDelta:function(t){var i,e,n=this._panKeys={},o=this.keyCodes;for(i=0,e=o.left.length;i<e;i++)n[o.left[i]]=[-1*t,0];for(i=0,e=o.right.length;i<e;i++)n[o.right[i]]=[t,0];for(i=0,e=o.down.length;i<e;i++)n[o.down[i]]=[0,t];for(i=0,e=o.up.length;i<e;i++)n[o.up[i]]=[0,-1*t]},_setZoomDelta:function(t){var i,e,n=this._zoomKeys={},o=this.keyCodes;for(i=0,e=o.zoomIn.length;i<e;i++)n[o.zoomIn[i]]=t;for(i=0,e=o.zoomOut.length;i<e;i++)n[o.zoomOut[i]]=-t},_addHooks:function(){Ei(document,"keydown",this._onKeyDown,this)},_removeHooks:function(){Bi(document,"keydown",this._onKeyDown,this)},_onKeyDown:function(t){if(!(t.altKey||t.ctrlKey||t.metaKey)){var i,e=t.keyCode,n=this._map;if(e in this._panKeys)n._panAnim&&n._panAnim._inProgress||(i=this._panKeys[e],t.shiftKey&&(i=I(i).multiplyBy(3)),n.panBy(i),n.options.maxBounds&&n.panInsideBounds(n.options.maxBounds));else if(e in this._zoomKeys)n.setZoom(n.getZoom()+(t.shiftKey?3:1)*this._zoomKeys[e]);else{if(27!==e||!n._popup||!n._popup.options.closeOnEscapeKey)return;n.closePopup()}ji(t)}}});Ji.addInitHook("addHandler","keyboard",Pn),Ji.mergeOptions({scrollWheelZoom:!0,wheelDebounceTime:40,wheelPxPerZoomLevel:60});var Ln=oe.extend({addHooks:function(){Ei(this._map._container,"mousewheel",this._onWheelScroll,this),this._delta=0},removeHooks:function(){Bi(this._map._container,"mousewheel",this._onWheelScroll,this)},_onWheelScroll:function(t){var i=Fi(t),e=this._map.options.wheelDebounceTime;this._delta+=i,this._lastMousePos=this._map.mouseEventToContainerPoint(t),this._startTime||(this._startTime=+new Date);var n=Math.max(e-(+new Date-this._startTime),0);clearTimeout(this._timer),this._timer=setTimeout(a(this._performZoom,this),n),ji(t)},_performZoom:function(){var t=this._map,i=t.getZoom(),e=this._map.options.zoomSnap||0;t._stop();var n=this._delta/(4*this._map.options.wheelPxPerZoomLevel),o=4*Math.log(2/(1+Math.exp(-Math.abs(n))))/Math.LN2,s=e?Math.ceil(o/e)*e:o,r=t._limitZoom(i+(0<this._delta?s:-s))-i;this._delta=0,this._startTime=null,r&&("center"===t.options.scrollWheelZoom?t.setZoom(i+r):t.setZoomAround(this._lastMousePos,i+r))}});Ji.addInitHook("addHandler","scrollWheelZoom",Ln),Ji.mergeOptions({tap:!0,tapTolerance:15});var bn=oe.extend({addHooks:function(){Ei(this._map._container,"touchstart",this._onDown,this)},removeHooks:function(){Bi(this._map._container,"touchstart",this._onDown,this)},_onDown:function(t){if(t.touches){if(Di(t),this._fireClick=!0,1<t.touches.length)return this._fireClick=!1,void clearTimeout(this._holdTimeout);var i=t.touches[0],e=i.target;this._startPos=this._newPos=new B(i.clientX,i.clientY),e.tagName&&"a"===e.tagName.toLowerCase()&&pi(e,"leaflet-active"),this._holdTimeout=setTimeout(a(function(){this._isTapValid()&&(this._fireClick=!1,this._onUp(),this._simulateEvent("contextmenu",i))},this),1e3),this._simulateEvent("mousedown",i),Ei(document,{touchmove:this._onMove,touchend:this._onUp},this)}},_onUp:function(t){if(clearTimeout(this._holdTimeout),Bi(document,{touchmove:this._onMove,touchend:this._onUp},this),this._fireClick&&t&&t.changedTouches){var i=t.changedTouches[0],e=i.target;e&&e.tagName&&"a"===e.tagName.toLowerCase()&&mi(e,"leaflet-active"),this._simulateEvent("mouseup",i),this._isTapValid()&&this._simulateEvent("click",i)}},_isTapValid:function(){return this._newPos.distanceTo(this._startPos)<=this._map.options.tapTolerance},_onMove:function(t){var i=t.touches[0];this._newPos=new B(i.clientX,i.clientY),this._simulateEvent("mousemove",i)},_simulateEvent:function(t,i){var e=document.createEvent("MouseEvents");e._simulated=!0,i.target._simulatedClick=!0,e.initMouseEvent(t,!0,!0,window,1,i.screenX,i.screenY,i.clientX,i.clientY,!1,!1,!1,!1,0,null),i.target.dispatchEvent(e)}});Tt&&!bt&&Ji.addInitHook("addHandler","tap",bn),Ji.mergeOptions({touchZoom:Tt&&!rt,bounceAtZoomLimits:!0});var Tn=oe.extend({addHooks:function(){pi(this._map._container,"leaflet-touch-zoom"),Ei(this._map._container,"touchstart",this._onTouchStart,this)},removeHooks:function(){mi(this._map._container,"leaflet-touch-zoom"),Bi(this._map._container,"touchstart",this._onTouchStart,this)},_onTouchStart:function(t){var i=this._map;if(t.touches&&2===t.touches.length&&!i._animatingZoom&&!this._zooming){var e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]);this._centerPoint=i.getSize()._divideBy(2),this._startLatLng=i.containerPointToLatLng(this._centerPoint),"center"!==i.options.touchZoom&&(this._pinchStartLatLng=i.containerPointToLatLng(e.add(n)._divideBy(2))),this._startDist=e.distanceTo(n),this._startZoom=i.getZoom(),this._moved=!1,this._zooming=!0,i._stop(),Ei(document,"touchmove",this._onTouchMove,this),Ei(document,"touchend",this._onTouchEnd,this),Di(t)}},_onTouchMove:function(t){if(t.touches&&2===t.touches.length&&this._zooming){var i=this._map,e=i.mouseEventToContainerPoint(t.touches[0]),n=i.mouseEventToContainerPoint(t.touches[1]),o=e.distanceTo(n)/this._startDist;if(this._zoom=i.getScaleZoom(o,this._startZoom),!i.options.bounceAtZoomLimits&&(this._zoom<i.getMinZoom()&&o<1||this._zoom>i.getMaxZoom()&&1<o)&&(this._zoom=i._limitZoom(this._zoom)),"center"===i.options.touchZoom){if(this._center=this._startLatLng,1==o)return}else{var s=e._add(n)._divideBy(2)._subtract(this._centerPoint);if(1==o&&0===s.x&&0===s.y)return;this._center=i.unproject(i.project(this._pinchStartLatLng,this._zoom).subtract(s),this._zoom)}this._moved||(i._moveStart(!0,!1),this._moved=!0),C(this._animRequest);var r=a(i._move,i,this._center,this._zoom,{pinch:!0,round:!1});this._animRequest=M(r,this,!0),Di(t)}},_onTouchEnd:function(){this._moved&&this._zooming?(this._zooming=!1,C(this._animRequest),Bi(document,"touchmove",this._onTouchMove),Bi(document,"touchend",this._onTouchEnd),this._map.options.zoomAnimation?this._map._animateZoom(this._center,this._map._limitZoom(this._zoom),!0,this._map.options.zoomSnap):this._map._resetView(this._center,this._map._limitZoom(this._zoom))):this._zooming=!1}});Ji.addInitHook("addHandler","touchZoom",Tn),Ji.BoxZoom=yn,Ji.DoubleClickZoom=xn,Ji.Drag=wn,Ji.Keyboard=Pn,Ji.ScrollWheelZoom=Ln,Ji.Tap=bn,Ji.TouchZoom=Tn,Object.freeze=i,t.version="1.5.1",t.Control=Qi,t.control=$i,t.Browser=Bt,t.Evented=k,t.Mixin=re,t.Util=S,t.Class=Z,t.Handler=oe,t.extend=h,t.bind=a,t.stamp=u,t.setOptions=p,t.DomEvent=Yi,t.DomUtil=Zi,t.PosAnimation=Xi,t.Draggable=le,t.LineUtil=ye,t.PolyUtil=Pe,t.Point=B,t.point=I,t.Bounds=O,t.bounds=R,t.Transformation=G,t.transformation=K,t.Projection=Te,t.LatLng=j,t.latLng=W,t.LatLngBounds=N,t.latLngBounds=D,t.CRS=F,t.GeoJSON=We,t.geoJSON=Xe,t.geoJson=Je,t.Layer=Se,t.LayerGroup=Ze,t.layerGroup=function(t,i){return new Ze(t,i)},t.FeatureGroup=Ee,t.featureGroup=function(t){return new Ee(t)},t.ImageOverlay=$e,t.imageOverlay=function(t,i,e){return new $e(t,i,e)},t.VideoOverlay=Qe,t.videoOverlay=function(t,i,e){return new Qe(t,i,e)},t.SVGOverlay=tn,t.svgOverlay=function(t,i,e){return new tn(t,i,e)},t.DivOverlay=en,t.Popup=nn,t.popup=function(t,i){return new nn(t,i)},t.Tooltip=on,t.tooltip=function(t,i){return new on(t,i)},t.Icon=ke,t.icon=function(t){return new ke(t)},t.DivIcon=sn,t.divIcon=function(t){return new sn(t)},t.Marker=Ie,t.marker=function(t,i){return new Ie(t,i)},t.TileLayer=an,t.tileLayer=hn,t.GridLayer=rn,t.gridLayer=function(t){return new rn(t)},t.SVG=fn,t.svg=gn,t.Renderer=ln,t.Canvas=cn,t.canvas=_n,t.Path=Oe,t.CircleMarker=Re,t.circleMarker=function(t,i){return new Re(t,i)},t.Circle=Ne,t.circle=function(t,i,e){return new Ne(t,i,e)},t.Polyline=De,t.polyline=function(t,i){return new De(t,i)},t.Polygon=je,t.polygon=function(t,i){return new je(t,i)},t.Rectangle=vn,t.rectangle=function(t,i){return new vn(t,i)},t.Map=Ji,t.map=function(t,i){return new Ji(t,i)};var zn=window.L;t.noConflict=function(){return window.L=zn,this},window.L=t});
+/*
+ * Leaflet.markercluster 1.4.1+master.37ab9a2,
+ * Provides Beautiful Animated Marker Clustering functionality for Leaflet, a JS library for interactive maps.
+ * https://github.com/Leaflet/Leaflet.markercluster
+ * (c) 2012-2017, Dave Leaver, smartrak
+ */
+
+(function (global, factory) {
+	typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+	typeof define === 'function' && define.amd ? define(['exports'], factory) :
+	(factory((global.Leaflet = global.Leaflet || {}, global.Leaflet.markercluster = global.Leaflet.markercluster || {})));
+}(this, (function (exports) { 'use strict';
+
+/*
+ * L.MarkerClusterGroup extends L.FeatureGroup by clustering the markers contained within
+ */
+
+var MarkerClusterGroup = L.MarkerClusterGroup = L.FeatureGroup.extend({
+
+	options: {
+		maxClusterRadius: 80, //A cluster will cover at most this many pixels from its center
+		iconCreateFunction: null,
+		clusterPane: L.Marker.prototype.options.pane,
+
+		spiderfyOnMaxZoom: true,
+		showCoverageOnHover: true,
+		zoomToBoundsOnClick: true,
+		singleMarkerMode: false,
+
+		disableClusteringAtZoom: null,
+
+		// Setting this to false prevents the removal of any clusters outside of the viewpoint, which
+		// is the default behaviour for performance reasons.
+		removeOutsideVisibleBounds: true,
+
+		// Set to false to disable all animations (zoom and spiderfy).
+		// If false, option animateAddingMarkers below has no effect.
+		// If L.DomUtil.TRANSITION is falsy, this option has no effect.
+		animate: true,
+
+		//Whether to animate adding markers after adding the MarkerClusterGroup to the map
+		// If you are adding individual markers set to true, if adding bulk markers leave false for massive performance gains.
+		animateAddingMarkers: false,
+
+		//Increase to increase the distance away that spiderfied markers appear from the center
+		spiderfyDistanceMultiplier: 1,
+
+		// Make it possible to specify a polyline options on a spider leg
+		spiderLegPolylineOptions: { weight: 1.5, color: '#222', opacity: 0.5 },
+
+		// When bulk adding layers, adds markers in chunks. Means addLayers may not add all the layers in the call, others will be loaded during setTimeouts
+		chunkedLoading: false,
+		chunkInterval: 200, // process markers for a maximum of ~ n milliseconds (then trigger the chunkProgress callback)
+		chunkDelay: 50, // at the end of each interval, give n milliseconds back to system/browser
+		chunkProgress: null, // progress callback: function(processed, total, elapsed) (e.g. for a progress indicator)
+
+		//Options to pass to the L.Polygon constructor
+		polygonOptions: {}
+	},
+
+	initialize: function (options) {
+		L.Util.setOptions(this, options);
+		if (!this.options.iconCreateFunction) {
+			this.options.iconCreateFunction = this._defaultIconCreateFunction;
+		}
+
+		this._featureGroup = L.featureGroup();
+		this._featureGroup.addEventParent(this);
+
+		this._nonPointGroup = L.featureGroup();
+		this._nonPointGroup.addEventParent(this);
+
+		this._inZoomAnimation = 0;
+		this._needsClustering = [];
+		this._needsRemoving = []; //Markers removed while we aren't on the map need to be kept track of
+		//The bounds of the currently shown area (from _getExpandedVisibleBounds) Updated on zoom/move
+		this._currentShownBounds = null;
+
+		this._queue = [];
+
+		this._childMarkerEventHandlers = {
+			'dragstart': this._childMarkerDragStart,
+			'move': this._childMarkerMoved,
+			'dragend': this._childMarkerDragEnd,
+		};
+
+		// Hook the appropriate animation methods.
+		var animate = L.DomUtil.TRANSITION && this.options.animate;
+		L.extend(this, animate ? this._withAnimation : this._noAnimation);
+		// Remember which MarkerCluster class to instantiate (animated or not).
+		this._markerCluster = animate ? L.MarkerCluster : L.MarkerClusterNonAnimated;
+	},
+
+	addLayer: function (layer) {
+
+		if (layer instanceof L.LayerGroup) {
+			return this.addLayers([layer]);
+		}
+
+		//Don't cluster non point data
+		if (!layer.getLatLng) {
+			this._nonPointGroup.addLayer(layer);
+			this.fire('layeradd', { layer: layer });
+			return this;
+		}
+
+		if (!this._map) {
+			this._needsClustering.push(layer);
+			this.fire('layeradd', { layer: layer });
+			return this;
+		}
+
+		if (this.hasLayer(layer)) {
+			return this;
+		}
+
+
+		//If we have already clustered we'll need to add this one to a cluster
+
+		if (this._unspiderfy) {
+			this._unspiderfy();
+		}
+
+		this._addLayer(layer, this._maxZoom);
+		this.fire('layeradd', { layer: layer });
+
+		// Refresh bounds and weighted positions.
+		this._topClusterLevel._recalculateBounds();
+
+		this._refreshClustersIcons();
+
+		//Work out what is visible
+		var visibleLayer = layer,
+		    currentZoom = this._zoom;
+		if (layer.__parent) {
+			while (visibleLayer.__parent._zoom >= currentZoom) {
+				visibleLayer = visibleLayer.__parent;
+			}
+		}
+
+		if (this._currentShownBounds.contains(visibleLayer.getLatLng())) {
+			if (this.options.animateAddingMarkers) {
+				this._animationAddLayer(layer, visibleLayer);
+			} else {
+				this._animationAddLayerNonAnimated(layer, visibleLayer);
+			}
+		}
+		return this;
+	},
+
+	removeLayer: function (layer) {
+
+		if (layer instanceof L.LayerGroup) {
+			return this.removeLayers([layer]);
+		}
+
+		//Non point layers
+		if (!layer.getLatLng) {
+			this._nonPointGroup.removeLayer(layer);
+			this.fire('layerremove', { layer: layer });
+			return this;
+		}
+
+		if (!this._map) {
+			if (!this._arraySplice(this._needsClustering, layer) && this.hasLayer(layer)) {
+				this._needsRemoving.push({ layer: layer, latlng: layer._latlng });
+			}
+			this.fire('layerremove', { layer: layer });
+			return this;
+		}
+
+		if (!layer.__parent) {
+			return this;
+		}
+
+		if (this._unspiderfy) {
+			this._unspiderfy();
+			this._unspiderfyLayer(layer);
+		}
+
+		//Remove the marker from clusters
+		this._removeLayer(layer, true);
+		this.fire('layerremove', { layer: layer });
+
+		// Refresh bounds and weighted positions.
+		this._topClusterLevel._recalculateBounds();
+
+		this._refreshClustersIcons();
+
+		layer.off(this._childMarkerEventHandlers, this);
+
+		if (this._featureGroup.hasLayer(layer)) {
+			this._featureGroup.removeLayer(layer);
+			if (layer.clusterShow) {
+				layer.clusterShow();
+			}
+		}
+
+		return this;
+	},
+
+	//Takes an array of markers and adds them in bulk
+	addLayers: function (layersArray, skipLayerAddEvent) {
+		if (!L.Util.isArray(layersArray)) {
+			return this.addLayer(layersArray);
+		}
+
+		var fg = this._featureGroup,
+		    npg = this._nonPointGroup,
+		    chunked = this.options.chunkedLoading,
+		    chunkInterval = this.options.chunkInterval,
+		    chunkProgress = this.options.chunkProgress,
+		    l = layersArray.length,
+		    offset = 0,
+		    originalArray = true,
+		    m;
+
+		if (this._map) {
+			var started = (new Date()).getTime();
+			var process = L.bind(function () {
+				var start = (new Date()).getTime();
+				for (; offset < l; offset++) {
+					if (chunked && offset % 200 === 0) {
+						// every couple hundred markers, instrument the time elapsed since processing started:
+						var elapsed = (new Date()).getTime() - start;
+						if (elapsed > chunkInterval) {
+							break; // been working too hard, time to take a break :-)
+						}
+					}
+
+					m = layersArray[offset];
+
+					// Group of layers, append children to layersArray and skip.
+					// Side effects:
+					// - Total increases, so chunkProgress ratio jumps backward.
+					// - Groups are not included in this group, only their non-group child layers (hasLayer).
+					// Changing array length while looping does not affect performance in current browsers:
+					// http://jsperf.com/for-loop-changing-length/6
+					if (m instanceof L.LayerGroup) {
+						if (originalArray) {
+							layersArray = layersArray.slice();
+							originalArray = false;
+						}
+						this._extractNonGroupLayers(m, layersArray);
+						l = layersArray.length;
+						continue;
+					}
+
+					//Not point data, can't be clustered
+					if (!m.getLatLng) {
+						npg.addLayer(m);
+						if (!skipLayerAddEvent) {
+							this.fire('layeradd', { layer: m });
+						}
+						continue;
+					}
+
+					if (this.hasLayer(m)) {
+						continue;
+					}
+
+					this._addLayer(m, this._maxZoom);
+					if (!skipLayerAddEvent) {
+						this.fire('layeradd', { layer: m });
+					}
+
+					//If we just made a cluster of size 2 then we need to remove the other marker from the map (if it is) or we never will
+					if (m.__parent) {
+						if (m.__parent.getChildCount() === 2) {
+							var markers = m.__parent.getAllChildMarkers(),
+							    otherMarker = markers[0] === m ? markers[1] : markers[0];
+							fg.removeLayer(otherMarker);
+						}
+					}
+				}
+
+				if (chunkProgress) {
+					// report progress and time elapsed:
+					chunkProgress(offset, l, (new Date()).getTime() - started);
+				}
+
+				// Completed processing all markers.
+				if (offset === l) {
+
+					// Refresh bounds and weighted positions.
+					this._topClusterLevel._recalculateBounds();
+
+					this._refreshClustersIcons();
+
+					this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);
+				} else {
+					setTimeout(process, this.options.chunkDelay);
+				}
+			}, this);
+
+			process();
+		} else {
+			var needsClustering = this._needsClustering;
+
+			for (; offset < l; offset++) {
+				m = layersArray[offset];
+
+				// Group of layers, append children to layersArray and skip.
+				if (m instanceof L.LayerGroup) {
+					if (originalArray) {
+						layersArray = layersArray.slice();
+						originalArray = false;
+					}
+					this._extractNonGroupLayers(m, layersArray);
+					l = layersArray.length;
+					continue;
+				}
+
+				//Not point data, can't be clustered
+				if (!m.getLatLng) {
+					npg.addLayer(m);
+					continue;
+				}
+
+				if (this.hasLayer(m)) {
+					continue;
+				}
+
+				needsClustering.push(m);
+			}
+		}
+		return this;
+	},
+
+	//Takes an array of markers and removes them in bulk
+	removeLayers: function (layersArray) {
+		var i, m,
+		    l = layersArray.length,
+		    fg = this._featureGroup,
+		    npg = this._nonPointGroup,
+		    originalArray = true;
+
+		if (!this._map) {
+			for (i = 0; i < l; i++) {
+				m = layersArray[i];
+
+				// Group of layers, append children to layersArray and skip.
+				if (m instanceof L.LayerGroup) {
+					if (originalArray) {
+						layersArray = layersArray.slice();
+						originalArray = false;
+					}
+					this._extractNonGroupLayers(m, layersArray);
+					l = layersArray.length;
+					continue;
+				}
+
+				this._arraySplice(this._needsClustering, m);
+				npg.removeLayer(m);
+				if (this.hasLayer(m)) {
+					this._needsRemoving.push({ layer: m, latlng: m._latlng });
+				}
+				this.fire('layerremove', { layer: m });
+			}
+			return this;
+		}
+
+		if (this._unspiderfy) {
+			this._unspiderfy();
+
+			// Work on a copy of the array, so that next loop is not affected.
+			var layersArray2 = layersArray.slice(),
+			    l2 = l;
+			for (i = 0; i < l2; i++) {
+				m = layersArray2[i];
+
+				// Group of layers, append children to layersArray and skip.
+				if (m instanceof L.LayerGroup) {
+					this._extractNonGroupLayers(m, layersArray2);
+					l2 = layersArray2.length;
+					continue;
+				}
+
+				this._unspiderfyLayer(m);
+			}
+		}
+
+		for (i = 0; i < l; i++) {
+			m = layersArray[i];
+
+			// Group of layers, append children to layersArray and skip.
+			if (m instanceof L.LayerGroup) {
+				if (originalArray) {
+					layersArray = layersArray.slice();
+					originalArray = false;
+				}
+				this._extractNonGroupLayers(m, layersArray);
+				l = layersArray.length;
+				continue;
+			}
+
+			if (!m.__parent) {
+				npg.removeLayer(m);
+				this.fire('layerremove', { layer: m });
+				continue;
+			}
+
+			this._removeLayer(m, true, true);
+			this.fire('layerremove', { layer: m });
+
+			if (fg.hasLayer(m)) {
+				fg.removeLayer(m);
+				if (m.clusterShow) {
+					m.clusterShow();
+				}
+			}
+		}
+
+		// Refresh bounds and weighted positions.
+		this._topClusterLevel._recalculateBounds();
+
+		this._refreshClustersIcons();
+
+		//Fix up the clusters and markers on the map
+		this._topClusterLevel._recursivelyAddChildrenToMap(null, this._zoom, this._currentShownBounds);
+
+		return this;
+	},
+
+	//Removes all layers from the MarkerClusterGroup
+	clearLayers: function () {
+		//Need our own special implementation as the LayerGroup one doesn't work for us
+
+		//If we aren't on the map (yet), blow away the markers we know of
+		if (!this._map) {
+			this._needsClustering = [];
+			this._needsRemoving = [];
+			delete this._gridClusters;
+			delete this._gridUnclustered;
+		}
+
+		if (this._noanimationUnspiderfy) {
+			this._noanimationUnspiderfy();
+		}
+
+		//Remove all the visible layers
+		this._featureGroup.clearLayers();
+		this._nonPointGroup.clearLayers();
+
+		this.eachLayer(function (marker) {
+			marker.off(this._childMarkerEventHandlers, this);
+			delete marker.__parent;
+		}, this);
+
+		if (this._map) {
+			//Reset _topClusterLevel and the DistanceGrids
+			this._generateInitialClusters();
+		}
+
+		return this;
+	},
+
+	//Override FeatureGroup.getBounds as it doesn't work
+	getBounds: function () {
+		var bounds = new L.LatLngBounds();
+
+		if (this._topClusterLevel) {
+			bounds.extend(this._topClusterLevel._bounds);
+		}
+
+		for (var i = this._needsClustering.length - 1; i >= 0; i--) {
+			bounds.extend(this._needsClustering[i].getLatLng());
+		}
+
+		bounds.extend(this._nonPointGroup.getBounds());
+
+		return bounds;
+	},
+
+	//Overrides LayerGroup.eachLayer
+	eachLayer: function (method, context) {
+		var markers = this._needsClustering.slice(),
+			needsRemoving = this._needsRemoving,
+			thisNeedsRemoving, i, j;
+
+		if (this._topClusterLevel) {
+			this._topClusterLevel.getAllChildMarkers(markers);
+		}
+
+		for (i = markers.length - 1; i >= 0; i--) {
+			thisNeedsRemoving = true;
+
+			for (j = needsRemoving.length - 1; j >= 0; j--) {
+				if (needsRemoving[j].layer === markers[i]) {
+					thisNeedsRemoving = false;
+					break;
+				}
+			}
+
+			if (thisNeedsRemoving) {
+				method.call(context, markers[i]);
+			}
+		}
+
+		this._nonPointGroup.eachLayer(method, context);
+	},
+
+	//Overrides LayerGroup.getLayers
+	getLayers: function () {
+		var layers = [];
+		this.eachLayer(function (l) {
+			layers.push(l);
+		});
+		return layers;
+	},
+
+	//Overrides LayerGroup.getLayer, WARNING: Really bad performance
+	getLayer: function (id) {
+		var result = null;
+
+		id = parseInt(id, 10);
+
+		this.eachLayer(function (l) {
+			if (L.stamp(l) === id) {
+				result = l;
+			}
+		});
+
+		return result;
+	},
+
+	//Returns true if the given layer is in this MarkerClusterGroup
+	hasLayer: function (layer) {
+		if (!layer) {
+			return false;
+		}
+
+		var i, anArray = this._needsClustering;
+
+		for (i = anArray.length - 1; i >= 0; i--) {
+			if (anArray[i] === layer) {
+				return true;
+			}
+		}
+
+		anArray = this._needsRemoving;
+		for (i = anArray.length - 1; i >= 0; i--) {
+			if (anArray[i].layer === layer) {
+				return false;
+			}
+		}
+
+		return !!(layer.__parent && layer.__parent._group === this) || this._nonPointGroup.hasLayer(layer);
+	},
+
+	//Zoom down to show the given layer (spiderfying if necessary) then calls the callback
+	zoomToShowLayer: function (layer, callback) {
+
+		if (typeof callback !== 'function') {
+			callback = function () {};
+		}
+
+		var showMarker = function () {
+			if ((layer._icon || layer.__parent._icon) && !this._inZoomAnimation) {
+				this._map.off('moveend', showMarker, this);
+				this.off('animationend', showMarker, this);
+
+				if (layer._icon) {
+					callback();
+				} else if (layer.__parent._icon) {
+					this.once('spiderfied', callback, this);
+					layer.__parent.spiderfy();
+				}
+			}
+		};
+
+		if (layer._icon && this._map.getBounds().contains(layer.getLatLng())) {
+			//Layer is visible ond on screen, immediate return
+			callback();
+		} else if (layer.__parent._zoom < Math.round(this._map._zoom)) {
+			//Layer should be visible at this zoom level. It must not be on screen so just pan over to it
+			this._map.on('moveend', showMarker, this);
+			this._map.panTo(layer.getLatLng());
+		} else {
+			this._map.on('moveend', showMarker, this);
+			this.on('animationend', showMarker, this);
+			layer.__parent.zoomToBounds();
+		}
+	},
+
+	//Overrides FeatureGroup.onAdd
+	onAdd: function (map) {
+		this._map = map;
+		var i, l, layer;
+
+		if (!isFinite(this._map.getMaxZoom())) {
+			throw "Map has no maxZoom specified";
+		}
+
+		this._featureGroup.addTo(map);
+		this._nonPointGroup.addTo(map);
+
+		if (!this._gridClusters) {
+			this._generateInitialClusters();
+		}
+
+		this._maxLat = map.options.crs.projection.MAX_LATITUDE;
+
+		//Restore all the positions as they are in the MCG before removing them
+		for (i = 0, l = this._needsRemoving.length; i < l; i++) {
+			layer = this._needsRemoving[i];
+			layer.newlatlng = layer.layer._latlng;
+			layer.layer._latlng = layer.latlng;
+		}
+		//Remove them, then restore their new positions
+		for (i = 0, l = this._needsRemoving.length; i < l; i++) {
+			layer = this._needsRemoving[i];
+			this._removeLayer(layer.layer, true);
+			layer.layer._latlng = layer.newlatlng;
+		}
+		this._needsRemoving = [];
+
+		//Remember the current zoom level and bounds
+		this._zoom = Math.round(this._map._zoom);
+		this._currentShownBounds = this._getExpandedVisibleBounds();
+
+		this._map.on('zoomend', this._zoomEnd, this);
+		this._map.on('moveend', this._moveEnd, this);
+
+		if (this._spiderfierOnAdd) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely
+			this._spiderfierOnAdd();
+		}
+
+		this._bindEvents();
+
+		//Actually add our markers to the map:
+		l = this._needsClustering;
+		this._needsClustering = [];
+		this.addLayers(l, true);
+	},
+
+	//Overrides FeatureGroup.onRemove
+	onRemove: function (map) {
+		map.off('zoomend', this._zoomEnd, this);
+		map.off('moveend', this._moveEnd, this);
+
+		this._unbindEvents();
+
+		//In case we are in a cluster animation
+		this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');
+
+		if (this._spiderfierOnRemove) { //TODO FIXME: Not sure how to have spiderfier add something on here nicely
+			this._spiderfierOnRemove();
+		}
+
+		delete this._maxLat;
+
+		//Clean up all the layers we added to the map
+		this._hideCoverage();
+		this._featureGroup.remove();
+		this._nonPointGroup.remove();
+
+		this._featureGroup.clearLayers();
+
+		this._map = null;
+	},
+
+	getVisibleParent: function (marker) {
+		var vMarker = marker;
+		while (vMarker && !vMarker._icon) {
+			vMarker = vMarker.__parent;
+		}
+		return vMarker || null;
+	},
+
+	//Remove the given object from the given array
+	_arraySplice: function (anArray, obj) {
+		for (var i = anArray.length - 1; i >= 0; i--) {
+			if (anArray[i] === obj) {
+				anArray.splice(i, 1);
+				return true;
+			}
+		}
+	},
+
+	/**
+	 * Removes a marker from all _gridUnclustered zoom levels, starting at the supplied zoom.
+	 * @param marker to be removed from _gridUnclustered.
+	 * @param z integer bottom start zoom level (included)
+	 * @private
+	 */
+	_removeFromGridUnclustered: function (marker, z) {
+		var map = this._map,
+		    gridUnclustered = this._gridUnclustered,
+			minZoom = Math.floor(this._map.getMinZoom());
+
+		for (; z >= minZoom; z--) {
+			if (!gridUnclustered[z].removeObject(marker, map.project(marker.getLatLng(), z))) {
+				break;
+			}
+		}
+	},
+
+	_childMarkerDragStart: function (e) {
+		e.target.__dragStart = e.target._latlng;
+	},
+
+	_childMarkerMoved: function (e) {
+		if (!this._ignoreMove && !e.target.__dragStart) {
+			var isPopupOpen = e.target._popup && e.target._popup.isOpen();
+
+			this._moveChild(e.target, e.oldLatLng, e.latlng);
+
+			if (isPopupOpen) {
+				e.target.openPopup();
+			}
+		}
+	},
+
+	_moveChild: function (layer, from, to) {
+		layer._latlng = from;
+		this.removeLayer(layer);
+
+		layer._latlng = to;
+		this.addLayer(layer);
+	},
+
+	_childMarkerDragEnd: function (e) {
+		var dragStart = e.target.__dragStart;
+		delete e.target.__dragStart;
+		if (dragStart) {
+			this._moveChild(e.target, dragStart, e.target._latlng);
+		}		
+	},
+
+
+	//Internal function for removing a marker from everything.
+	//dontUpdateMap: set to true if you will handle updating the map manually (for bulk functions)
+	_removeLayer: function (marker, removeFromDistanceGrid, dontUpdateMap) {
+		var gridClusters = this._gridClusters,
+			gridUnclustered = this._gridUnclustered,
+			fg = this._featureGroup,
+			map = this._map,
+			minZoom = Math.floor(this._map.getMinZoom());
+
+		//Remove the marker from distance clusters it might be in
+		if (removeFromDistanceGrid) {
+			this._removeFromGridUnclustered(marker, this._maxZoom);
+		}
+
+		//Work our way up the clusters removing them as we go if required
+		var cluster = marker.__parent,
+			markers = cluster._markers,
+			otherMarker;
+
+		//Remove the marker from the immediate parents marker list
+		this._arraySplice(markers, marker);
+
+		while (cluster) {
+			cluster._childCount--;
+			cluster._boundsNeedUpdate = true;
+
+			if (cluster._zoom < minZoom) {
+				//Top level, do nothing
+				break;
+			} else if (removeFromDistanceGrid && cluster._childCount <= 1) { //Cluster no longer required
+				//We need to push the other marker up to the parent
+				otherMarker = cluster._markers[0] === marker ? cluster._markers[1] : cluster._markers[0];
+
+				//Update distance grid
+				gridClusters[cluster._zoom].removeObject(cluster, map.project(cluster._cLatLng, cluster._zoom));
+				gridUnclustered[cluster._zoom].addObject(otherMarker, map.project(otherMarker.getLatLng(), cluster._zoom));
+
+				//Move otherMarker up to parent
+				this._arraySplice(cluster.__parent._childClusters, cluster);
+				cluster.__parent._markers.push(otherMarker);
+				otherMarker.__parent = cluster.__parent;
+
+				if (cluster._icon) {
+					//Cluster is currently on the map, need to put the marker on the map instead
+					fg.removeLayer(cluster);
+					if (!dontUpdateMap) {
+						fg.addLayer(otherMarker);
+					}
+				}
+			} else {
+				cluster._iconNeedsUpdate = true;
+			}
+
+			cluster = cluster.__parent;
+		}
+
+		delete marker.__parent;
+	},
+
+	_isOrIsParent: function (el, oel) {
+		while (oel) {
+			if (el === oel) {
+				return true;
+			}
+			oel = oel.parentNode;
+		}
+		return false;
+	},
+
+	//Override L.Evented.fire
+	fire: function (type, data, propagate) {
+		if (data && data.layer instanceof L.MarkerCluster) {
+			//Prevent multiple clustermouseover/off events if the icon is made up of stacked divs (Doesn't work in ie <= 8, no relatedTarget)
+			if (data.originalEvent && this._isOrIsParent(data.layer._icon, data.originalEvent.relatedTarget)) {
+				return;
+			}
+			type = 'cluster' + type;
+		}
+
+		L.FeatureGroup.prototype.fire.call(this, type, data, propagate);
+	},
+
+	//Override L.Evented.listens
+	listens: function (type, propagate) {
+		return L.FeatureGroup.prototype.listens.call(this, type, propagate) || L.FeatureGroup.prototype.listens.call(this, 'cluster' + type, propagate);
+	},
+
+	//Default functionality
+	_defaultIconCreateFunction: function (cluster) {
+		var childCount = cluster.getChildCount();
+
+		var c = ' marker-cluster-';
+		if (childCount < 10) {
+			c += 'small';
+		} else if (childCount < 100) {
+			c += 'medium';
+		} else {
+			c += 'large';
+		}
+
+		return new L.DivIcon({ html: '<div><span>' + childCount + '</span></div>', className: 'marker-cluster' + c, iconSize: new L.Point(40, 40) });
+	},
+
+	_bindEvents: function () {
+		var map = this._map,
+		    spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,
+		    showCoverageOnHover = this.options.showCoverageOnHover,
+		    zoomToBoundsOnClick = this.options.zoomToBoundsOnClick;
+
+		//Zoom on cluster click or spiderfy if we are at the lowest level
+		if (spiderfyOnMaxZoom || zoomToBoundsOnClick) {
+			this.on('clusterclick', this._zoomOrSpiderfy, this);
+		}
+
+		//Show convex hull (boundary) polygon on mouse over
+		if (showCoverageOnHover) {
+			this.on('clustermouseover', this._showCoverage, this);
+			this.on('clustermouseout', this._hideCoverage, this);
+			map.on('zoomend', this._hideCoverage, this);
+		}
+	},
+
+	_zoomOrSpiderfy: function (e) {
+		var cluster = e.layer,
+		    bottomCluster = cluster;
+
+		while (bottomCluster._childClusters.length === 1) {
+			bottomCluster = bottomCluster._childClusters[0];
+		}
+
+		if (bottomCluster._zoom === this._maxZoom &&
+			bottomCluster._childCount === cluster._childCount &&
+			this.options.spiderfyOnMaxZoom) {
+
+			// All child markers are contained in a single cluster from this._maxZoom to this cluster.
+			cluster.spiderfy();
+		} else if (this.options.zoomToBoundsOnClick) {
+			cluster.zoomToBounds();
+		}
+
+		// Focus the map again for keyboard users.
+		if (e.originalEvent && e.originalEvent.keyCode === 13) {
+			this._map._container.focus();
+		}
+	},
+
+	_showCoverage: function (e) {
+		var map = this._map;
+		if (this._inZoomAnimation) {
+			return;
+		}
+		if (this._shownPolygon) {
+			map.removeLayer(this._shownPolygon);
+		}
+		if (e.layer.getChildCount() > 2 && e.layer !== this._spiderfied) {
+			this._shownPolygon = new L.Polygon(e.layer.getConvexHull(), this.options.polygonOptions);
+			map.addLayer(this._shownPolygon);
+		}
+	},
+
+	_hideCoverage: function () {
+		if (this._shownPolygon) {
+			this._map.removeLayer(this._shownPolygon);
+			this._shownPolygon = null;
+		}
+	},
+
+	_unbindEvents: function () {
+		var spiderfyOnMaxZoom = this.options.spiderfyOnMaxZoom,
+			showCoverageOnHover = this.options.showCoverageOnHover,
+			zoomToBoundsOnClick = this.options.zoomToBoundsOnClick,
+			map = this._map;
+
+		if (spiderfyOnMaxZoom || zoomToBoundsOnClick) {
+			this.off('clusterclick', this._zoomOrSpiderfy, this);
+		}
+		if (showCoverageOnHover) {
+			this.off('clustermouseover', this._showCoverage, this);
+			this.off('clustermouseout', this._hideCoverage, this);
+			map.off('zoomend', this._hideCoverage, this);
+		}
+	},
+
+	_zoomEnd: function () {
+		if (!this._map) { //May have been removed from the map by a zoomEnd handler
+			return;
+		}
+		this._mergeSplitClusters();
+
+		this._zoom = Math.round(this._map._zoom);
+		this._currentShownBounds = this._getExpandedVisibleBounds();
+	},
+
+	_moveEnd: function () {
+		if (this._inZoomAnimation) {
+			return;
+		}
+
+		var newBounds = this._getExpandedVisibleBounds();
+
+		this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, newBounds);
+		this._topClusterLevel._recursivelyAddChildrenToMap(null, Math.round(this._map._zoom), newBounds);
+
+		this._currentShownBounds = newBounds;
+		return;
+	},
+
+	_generateInitialClusters: function () {
+		var maxZoom = Math.ceil(this._map.getMaxZoom()),
+			minZoom = Math.floor(this._map.getMinZoom()),
+			radius = this.options.maxClusterRadius,
+			radiusFn = radius;
+
+		//If we just set maxClusterRadius to a single number, we need to create
+		//a simple function to return that number. Otherwise, we just have to
+		//use the function we've passed in.
+		if (typeof radius !== "function") {
+			radiusFn = function () { return radius; };
+		}
+
+		if (this.options.disableClusteringAtZoom !== null) {
+			maxZoom = this.options.disableClusteringAtZoom - 1;
+		}
+		this._maxZoom = maxZoom;
+		this._gridClusters = {};
+		this._gridUnclustered = {};
+
+		//Set up DistanceGrids for each zoom
+		for (var zoom = maxZoom; zoom >= minZoom; zoom--) {
+			this._gridClusters[zoom] = new L.DistanceGrid(radiusFn(zoom));
+			this._gridUnclustered[zoom] = new L.DistanceGrid(radiusFn(zoom));
+		}
+
+		// Instantiate the appropriate L.MarkerCluster class (animated or not).
+		this._topClusterLevel = new this._markerCluster(this, minZoom - 1);
+	},
+
+	//Zoom: Zoom to start adding at (Pass this._maxZoom to start at the bottom)
+	_addLayer: function (layer, zoom) {
+		var gridClusters = this._gridClusters,
+		    gridUnclustered = this._gridUnclustered,
+			minZoom = Math.floor(this._map.getMinZoom()),
+		    markerPoint, z;
+
+		if (this.options.singleMarkerMode) {
+			this._overrideMarkerIcon(layer);
+		}
+
+		layer.on(this._childMarkerEventHandlers, this);
+
+		//Find the lowest zoom level to slot this one in
+		for (; zoom >= minZoom; zoom--) {
+			markerPoint = this._map.project(layer.getLatLng(), zoom); // calculate pixel position
+
+			//Try find a cluster close by
+			var closest = gridClusters[zoom].getNearObject(markerPoint);
+			if (closest) {
+				closest._addChild(layer);
+				layer.__parent = closest;
+				return;
+			}
+
+			//Try find a marker close by to form a new cluster with
+			closest = gridUnclustered[zoom].getNearObject(markerPoint);
+			if (closest) {
+				var parent = closest.__parent;
+				if (parent) {
+					this._removeLayer(closest, false);
+				}
+
+				//Create new cluster with these 2 in it
+
+				var newCluster = new this._markerCluster(this, zoom, closest, layer);
+				gridClusters[zoom].addObject(newCluster, this._map.project(newCluster._cLatLng, zoom));
+				closest.__parent = newCluster;
+				layer.__parent = newCluster;
+
+				//First create any new intermediate parent clusters that don't exist
+				var lastParent = newCluster;
+				for (z = zoom - 1; z > parent._zoom; z--) {
+					lastParent = new this._markerCluster(this, z, lastParent);
+					gridClusters[z].addObject(lastParent, this._map.project(closest.getLatLng(), z));
+				}
+				parent._addChild(lastParent);
+
+				//Remove closest from this zoom level and any above that it is in, replace with newCluster
+				this._removeFromGridUnclustered(closest, zoom);
+
+				return;
+			}
+
+			//Didn't manage to cluster in at this zoom, record us as a marker here and continue upwards
+			gridUnclustered[zoom].addObject(layer, markerPoint);
+		}
+
+		//Didn't get in anything, add us to the top
+		this._topClusterLevel._addChild(layer);
+		layer.__parent = this._topClusterLevel;
+		return;
+	},
+
+	/**
+	 * Refreshes the icon of all "dirty" visible clusters.
+	 * Non-visible "dirty" clusters will be updated when they are added to the map.
+	 * @private
+	 */
+	_refreshClustersIcons: function () {
+		this._featureGroup.eachLayer(function (c) {
+			if (c instanceof L.MarkerCluster && c._iconNeedsUpdate) {
+				c._updateIcon();
+			}
+		});
+	},
+
+	//Enqueue code to fire after the marker expand/contract has happened
+	_enqueue: function (fn) {
+		this._queue.push(fn);
+		if (!this._queueTimeout) {
+			this._queueTimeout = setTimeout(L.bind(this._processQueue, this), 300);
+		}
+	},
+	_processQueue: function () {
+		for (var i = 0; i < this._queue.length; i++) {
+			this._queue[i].call(this);
+		}
+		this._queue.length = 0;
+		clearTimeout(this._queueTimeout);
+		this._queueTimeout = null;
+	},
+
+	//Merge and split any existing clusters that are too big or small
+	_mergeSplitClusters: function () {
+		var mapZoom = Math.round(this._map._zoom);
+
+		//In case we are starting to split before the animation finished
+		this._processQueue();
+
+		if (this._zoom < mapZoom && this._currentShownBounds.intersects(this._getExpandedVisibleBounds())) { //Zoom in, split
+			this._animationStart();
+			//Remove clusters now off screen
+			this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), this._zoom, this._getExpandedVisibleBounds());
+
+			this._animationZoomIn(this._zoom, mapZoom);
+
+		} else if (this._zoom > mapZoom) { //Zoom out, merge
+			this._animationStart();
+
+			this._animationZoomOut(this._zoom, mapZoom);
+		} else {
+			this._moveEnd();
+		}
+	},
+
+	//Gets the maps visible bounds expanded in each direction by the size of the screen (so the user cannot see an area we do not cover in one pan)
+	_getExpandedVisibleBounds: function () {
+		if (!this.options.removeOutsideVisibleBounds) {
+			return this._mapBoundsInfinite;
+		} else if (L.Browser.mobile) {
+			return this._checkBoundsMaxLat(this._map.getBounds());
+		}
+
+		return this._checkBoundsMaxLat(this._map.getBounds().pad(1)); // Padding expands the bounds by its own dimensions but scaled with the given factor.
+	},
+
+	/**
+	 * Expands the latitude to Infinity (or -Infinity) if the input bounds reach the map projection maximum defined latitude
+	 * (in the case of Web/Spherical Mercator, it is 85.0511287798 / see https://en.wikipedia.org/wiki/Web_Mercator#Formulas).
+	 * Otherwise, the removeOutsideVisibleBounds option will remove markers beyond that limit, whereas the same markers without
+	 * this option (or outside MCG) will have their position floored (ceiled) by the projection and rendered at that limit,
+	 * making the user think that MCG "eats" them and never displays them again.
+	 * @param bounds L.LatLngBounds
+	 * @returns {L.LatLngBounds}
+	 * @private
+	 */
+	_checkBoundsMaxLat: function (bounds) {
+		var maxLat = this._maxLat;
+
+		if (maxLat !== undefined) {
+			if (bounds.getNorth() >= maxLat) {
+				bounds._northEast.lat = Infinity;
+			}
+			if (bounds.getSouth() <= -maxLat) {
+				bounds._southWest.lat = -Infinity;
+			}
+		}
+
+		return bounds;
+	},
+
+	//Shared animation code
+	_animationAddLayerNonAnimated: function (layer, newCluster) {
+		if (newCluster === layer) {
+			this._featureGroup.addLayer(layer);
+		} else if (newCluster._childCount === 2) {
+			newCluster._addToMap();
+
+			var markers = newCluster.getAllChildMarkers();
+			this._featureGroup.removeLayer(markers[0]);
+			this._featureGroup.removeLayer(markers[1]);
+		} else {
+			newCluster._updateIcon();
+		}
+	},
+
+	/**
+	 * Extracts individual (i.e. non-group) layers from a Layer Group.
+	 * @param group to extract layers from.
+	 * @param output {Array} in which to store the extracted layers.
+	 * @returns {*|Array}
+	 * @private
+	 */
+	_extractNonGroupLayers: function (group, output) {
+		var layers = group.getLayers(),
+		    i = 0,
+		    layer;
+
+		output = output || [];
+
+		for (; i < layers.length; i++) {
+			layer = layers[i];
+
+			if (layer instanceof L.LayerGroup) {
+				this._extractNonGroupLayers(layer, output);
+				continue;
+			}
+
+			output.push(layer);
+		}
+
+		return output;
+	},
+
+	/**
+	 * Implements the singleMarkerMode option.
+	 * @param layer Marker to re-style using the Clusters iconCreateFunction.
+	 * @returns {L.Icon} The newly created icon.
+	 * @private
+	 */
+	_overrideMarkerIcon: function (layer) {
+		var icon = layer.options.icon = this.options.iconCreateFunction({
+			getChildCount: function () {
+				return 1;
+			},
+			getAllChildMarkers: function () {
+				return [layer];
+			}
+		});
+
+		return icon;
+	}
+});
+
+// Constant bounds used in case option "removeOutsideVisibleBounds" is set to false.
+L.MarkerClusterGroup.include({
+	_mapBoundsInfinite: new L.LatLngBounds(new L.LatLng(-Infinity, -Infinity), new L.LatLng(Infinity, Infinity))
+});
+
+L.MarkerClusterGroup.include({
+	_noAnimation: {
+		//Non Animated versions of everything
+		_animationStart: function () {
+			//Do nothing...
+		},
+		_animationZoomIn: function (previousZoomLevel, newZoomLevel) {
+			this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);
+			this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
+
+			//We didn't actually animate, but we use this event to mean "clustering animations have finished"
+			this.fire('animationend');
+		},
+		_animationZoomOut: function (previousZoomLevel, newZoomLevel) {
+			this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel);
+			this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
+
+			//We didn't actually animate, but we use this event to mean "clustering animations have finished"
+			this.fire('animationend');
+		},
+		_animationAddLayer: function (layer, newCluster) {
+			this._animationAddLayerNonAnimated(layer, newCluster);
+		}
+	},
+
+	_withAnimation: {
+		//Animated versions here
+		_animationStart: function () {
+			this._map._mapPane.className += ' leaflet-cluster-anim';
+			this._inZoomAnimation++;
+		},
+
+		_animationZoomIn: function (previousZoomLevel, newZoomLevel) {
+			var bounds = this._getExpandedVisibleBounds(),
+			    fg = this._featureGroup,
+				minZoom = Math.floor(this._map.getMinZoom()),
+			    i;
+
+			this._ignoreMove = true;
+
+			//Add all children of current clusters to map and remove those clusters from map
+			this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {
+				var startPos = c._latlng,
+				    markers  = c._markers,
+				    m;
+
+				if (!bounds.contains(startPos)) {
+					startPos = null;
+				}
+
+				if (c._isSingleParent() && previousZoomLevel + 1 === newZoomLevel) { //Immediately add the new child and remove us
+					fg.removeLayer(c);
+					c._recursivelyAddChildrenToMap(null, newZoomLevel, bounds);
+				} else {
+					//Fade out old cluster
+					c.clusterHide();
+					c._recursivelyAddChildrenToMap(startPos, newZoomLevel, bounds);
+				}
+
+				//Remove all markers that aren't visible any more
+				//TODO: Do we actually need to do this on the higher levels too?
+				for (i = markers.length - 1; i >= 0; i--) {
+					m = markers[i];
+					if (!bounds.contains(m._latlng)) {
+						fg.removeLayer(m);
+					}
+				}
+
+			});
+
+			this._forceLayout();
+
+			//Update opacities
+			this._topClusterLevel._recursivelyBecomeVisible(bounds, newZoomLevel);
+			//TODO Maybe? Update markers in _recursivelyBecomeVisible
+			fg.eachLayer(function (n) {
+				if (!(n instanceof L.MarkerCluster) && n._icon) {
+					n.clusterShow();
+				}
+			});
+
+			//update the positions of the just added clusters/markers
+			this._topClusterLevel._recursively(bounds, previousZoomLevel, newZoomLevel, function (c) {
+				c._recursivelyRestoreChildPositions(newZoomLevel);
+			});
+
+			this._ignoreMove = false;
+
+			//Remove the old clusters and close the zoom animation
+			this._enqueue(function () {
+				//update the positions of the just added clusters/markers
+				this._topClusterLevel._recursively(bounds, previousZoomLevel, minZoom, function (c) {
+					fg.removeLayer(c);
+					c.clusterShow();
+				});
+
+				this._animationEnd();
+			});
+		},
+
+		_animationZoomOut: function (previousZoomLevel, newZoomLevel) {
+			this._animationZoomOutSingle(this._topClusterLevel, previousZoomLevel - 1, newZoomLevel);
+
+			//Need to add markers for those that weren't on the map before but are now
+			this._topClusterLevel._recursivelyAddChildrenToMap(null, newZoomLevel, this._getExpandedVisibleBounds());
+			//Remove markers that were on the map before but won't be now
+			this._topClusterLevel._recursivelyRemoveChildrenFromMap(this._currentShownBounds, Math.floor(this._map.getMinZoom()), previousZoomLevel, this._getExpandedVisibleBounds());
+		},
+
+		_animationAddLayer: function (layer, newCluster) {
+			var me = this,
+			    fg = this._featureGroup;
+
+			fg.addLayer(layer);
+			if (newCluster !== layer) {
+				if (newCluster._childCount > 2) { //Was already a cluster
+
+					newCluster._updateIcon();
+					this._forceLayout();
+					this._animationStart();
+
+					layer._setPos(this._map.latLngToLayerPoint(newCluster.getLatLng()));
+					layer.clusterHide();
+
+					this._enqueue(function () {
+						fg.removeLayer(layer);
+						layer.clusterShow();
+
+						me._animationEnd();
+					});
+
+				} else { //Just became a cluster
+					this._forceLayout();
+
+					me._animationStart();
+					me._animationZoomOutSingle(newCluster, this._map.getMaxZoom(), this._zoom);
+				}
+			}
+		}
+	},
+
+	// Private methods for animated versions.
+	_animationZoomOutSingle: function (cluster, previousZoomLevel, newZoomLevel) {
+		var bounds = this._getExpandedVisibleBounds(),
+			minZoom = Math.floor(this._map.getMinZoom());
+
+		//Animate all of the markers in the clusters to move to their cluster center point
+		cluster._recursivelyAnimateChildrenInAndAddSelfToMap(bounds, minZoom, previousZoomLevel + 1, newZoomLevel);
+
+		var me = this;
+
+		//Update the opacity (If we immediately set it they won't animate)
+		this._forceLayout();
+		cluster._recursivelyBecomeVisible(bounds, newZoomLevel);
+
+		//TODO: Maybe use the transition timing stuff to make this more reliable
+		//When the animations are done, tidy up
+		this._enqueue(function () {
+
+			//This cluster stopped being a cluster before the timeout fired
+			if (cluster._childCount === 1) {
+				var m = cluster._markers[0];
+				//If we were in a cluster animation at the time then the opacity and position of our child could be wrong now, so fix it
+				this._ignoreMove = true;
+				m.setLatLng(m.getLatLng());
+				this._ignoreMove = false;
+				if (m.clusterShow) {
+					m.clusterShow();
+				}
+			} else {
+				cluster._recursively(bounds, newZoomLevel, minZoom, function (c) {
+					c._recursivelyRemoveChildrenFromMap(bounds, minZoom, previousZoomLevel + 1);
+				});
+			}
+			me._animationEnd();
+		});
+	},
+
+	_animationEnd: function () {
+		if (this._map) {
+			this._map._mapPane.className = this._map._mapPane.className.replace(' leaflet-cluster-anim', '');
+		}
+		this._inZoomAnimation--;
+		this.fire('animationend');
+	},
+
+	//Force a browser layout of stuff in the map
+	// Should apply the current opacity and location to all elements so we can update them again for an animation
+	_forceLayout: function () {
+		//In my testing this works, infact offsetWidth of any element seems to work.
+		//Could loop all this._layers and do this for each _icon if it stops working
+
+		L.Util.falseFn(document.body.offsetWidth);
+	}
+});
+
+L.markerClusterGroup = function (options) {
+	return new L.MarkerClusterGroup(options);
+};
+
+var MarkerCluster = L.MarkerCluster = L.Marker.extend({
+	options: L.Icon.prototype.options,
+
+	initialize: function (group, zoom, a, b) {
+
+		L.Marker.prototype.initialize.call(this, a ? (a._cLatLng || a.getLatLng()) : new L.LatLng(0, 0),
+            { icon: this, pane: group.options.clusterPane });
+
+		this._group = group;
+		this._zoom = zoom;
+
+		this._markers = [];
+		this._childClusters = [];
+		this._childCount = 0;
+		this._iconNeedsUpdate = true;
+		this._boundsNeedUpdate = true;
+
+		this._bounds = new L.LatLngBounds();
+
+		if (a) {
+			this._addChild(a);
+		}
+		if (b) {
+			this._addChild(b);
+		}
+	},
+
+	//Recursively retrieve all child markers of this cluster
+	getAllChildMarkers: function (storageArray, ignoreDraggedMarker) {
+		storageArray = storageArray || [];
+
+		for (var i = this._childClusters.length - 1; i >= 0; i--) {
+			this._childClusters[i].getAllChildMarkers(storageArray);
+		}
+
+		for (var j = this._markers.length - 1; j >= 0; j--) {
+			if (ignoreDraggedMarker && this._markers[j].__dragStart) {
+				continue;
+			}
+			storageArray.push(this._markers[j]);
+		}
+
+		return storageArray;
+	},
+
+	//Returns the count of how many child markers we have
+	getChildCount: function () {
+		return this._childCount;
+	},
+
+	//Zoom to the minimum of showing all of the child markers, or the extents of this cluster
+	zoomToBounds: function (fitBoundsOptions) {
+		var childClusters = this._childClusters.slice(),
+			map = this._group._map,
+			boundsZoom = map.getBoundsZoom(this._bounds),
+			zoom = this._zoom + 1,
+			mapZoom = map.getZoom(),
+			i;
+
+		//calculate how far we need to zoom down to see all of the markers
+		while (childClusters.length > 0 && boundsZoom > zoom) {
+			zoom++;
+			var newClusters = [];
+			for (i = 0; i < childClusters.length; i++) {
+				newClusters = newClusters.concat(childClusters[i]._childClusters);
+			}
+			childClusters = newClusters;
+		}
+
+		if (boundsZoom > zoom) {
+			this._group._map.setView(this._latlng, zoom);
+		} else if (boundsZoom <= mapZoom) { //If fitBounds wouldn't zoom us down, zoom us down instead
+			this._group._map.setView(this._latlng, mapZoom + 1);
+		} else {
+			this._group._map.fitBounds(this._bounds, fitBoundsOptions);
+		}
+	},
+
+	getBounds: function () {
+		var bounds = new L.LatLngBounds();
+		bounds.extend(this._bounds);
+		return bounds;
+	},
+
+	_updateIcon: function () {
+		this._iconNeedsUpdate = true;
+		if (this._icon) {
+			this.setIcon(this);
+		}
+	},
+
+	//Cludge for Icon, we pretend to be an icon for performance
+	createIcon: function () {
+		if (this._iconNeedsUpdate) {
+			this._iconObj = this._group.options.iconCreateFunction(this);
+			this._iconNeedsUpdate = false;
+		}
+		return this._iconObj.createIcon();
+	},
+	createShadow: function () {
+		return this._iconObj.createShadow();
+	},
+
+
+	_addChild: function (new1, isNotificationFromChild) {
+
+		this._iconNeedsUpdate = true;
+
+		this._boundsNeedUpdate = true;
+		this._setClusterCenter(new1);
+
+		if (new1 instanceof L.MarkerCluster) {
+			if (!isNotificationFromChild) {
+				this._childClusters.push(new1);
+				new1.__parent = this;
+			}
+			this._childCount += new1._childCount;
+		} else {
+			if (!isNotificationFromChild) {
+				this._markers.push(new1);
+			}
+			this._childCount++;
+		}
+
+		if (this.__parent) {
+			this.__parent._addChild(new1, true);
+		}
+	},
+
+	/**
+	 * Makes sure the cluster center is set. If not, uses the child center if it is a cluster, or the marker position.
+	 * @param child L.MarkerCluster|L.Marker that will be used as cluster center if not defined yet.
+	 * @private
+	 */
+	_setClusterCenter: function (child) {
+		if (!this._cLatLng) {
+			// when clustering, take position of the first point as the cluster center
+			this._cLatLng = child._cLatLng || child._latlng;
+		}
+	},
+
+	/**
+	 * Assigns impossible bounding values so that the next extend entirely determines the new bounds.
+	 * This method avoids having to trash the previous L.LatLngBounds object and to create a new one, which is much slower for this class.
+	 * As long as the bounds are not extended, most other methods would probably fail, as they would with bounds initialized but not extended.
+	 * @private
+	 */
+	_resetBounds: function () {
+		var bounds = this._bounds;
+
+		if (bounds._southWest) {
+			bounds._southWest.lat = Infinity;
+			bounds._southWest.lng = Infinity;
+		}
+		if (bounds._northEast) {
+			bounds._northEast.lat = -Infinity;
+			bounds._northEast.lng = -Infinity;
+		}
+	},
+
+	_recalculateBounds: function () {
+		var markers = this._markers,
+		    childClusters = this._childClusters,
+		    latSum = 0,
+		    lngSum = 0,
+		    totalCount = this._childCount,
+		    i, child, childLatLng, childCount;
+
+		// Case where all markers are removed from the map and we are left with just an empty _topClusterLevel.
+		if (totalCount === 0) {
+			return;
+		}
+
+		// Reset rather than creating a new object, for performance.
+		this._resetBounds();
+
+		// Child markers.
+		for (i = 0; i < markers.length; i++) {
+			childLatLng = markers[i]._latlng;
+
+			this._bounds.extend(childLatLng);
+
+			latSum += childLatLng.lat;
+			lngSum += childLatLng.lng;
+		}
+
+		// Child clusters.
+		for (i = 0; i < childClusters.length; i++) {
+			child = childClusters[i];
+
+			// Re-compute child bounds and weighted position first if necessary.
+			if (child._boundsNeedUpdate) {
+				child._recalculateBounds();
+			}
+
+			this._bounds.extend(child._bounds);
+
+			childLatLng = child._wLatLng;
+			childCount = child._childCount;
+
+			latSum += childLatLng.lat * childCount;
+			lngSum += childLatLng.lng * childCount;
+		}
+
+		this._latlng = this._wLatLng = new L.LatLng(latSum / totalCount, lngSum / totalCount);
+
+		// Reset dirty flag.
+		this._boundsNeedUpdate = false;
+	},
+
+	//Set our markers position as given and add it to the map
+	_addToMap: function (startPos) {
+		if (startPos) {
+			this._backupLatlng = this._latlng;
+			this.setLatLng(startPos);
+		}
+		this._group._featureGroup.addLayer(this);
+	},
+
+	_recursivelyAnimateChildrenIn: function (bounds, center, maxZoom) {
+		this._recursively(bounds, this._group._map.getMinZoom(), maxZoom - 1,
+			function (c) {
+				var markers = c._markers,
+					i, m;
+				for (i = markers.length - 1; i >= 0; i--) {
+					m = markers[i];
+
+					//Only do it if the icon is still on the map
+					if (m._icon) {
+						m._setPos(center);
+						m.clusterHide();
+					}
+				}
+			},
+			function (c) {
+				var childClusters = c._childClusters,
+					j, cm;
+				for (j = childClusters.length - 1; j >= 0; j--) {
+					cm = childClusters[j];
+					if (cm._icon) {
+						cm._setPos(center);
+						cm.clusterHide();
+					}
+				}
+			}
+		);
+	},
+
+	_recursivelyAnimateChildrenInAndAddSelfToMap: function (bounds, mapMinZoom, previousZoomLevel, newZoomLevel) {
+		this._recursively(bounds, newZoomLevel, mapMinZoom,
+			function (c) {
+				c._recursivelyAnimateChildrenIn(bounds, c._group._map.latLngToLayerPoint(c.getLatLng()).round(), previousZoomLevel);
+
+				//TODO: depthToAnimateIn affects _isSingleParent, if there is a multizoom we may/may not be.
+				//As a hack we only do a animation free zoom on a single level zoom, if someone does multiple levels then we always animate
+				if (c._isSingleParent() && previousZoomLevel - 1 === newZoomLevel) {
+					c.clusterShow();
+					c._recursivelyRemoveChildrenFromMap(bounds, mapMinZoom, previousZoomLevel); //Immediately remove our children as we are replacing them. TODO previousBounds not bounds
+				} else {
+					c.clusterHide();
+				}
+
+				c._addToMap();
+			}
+		);
+	},
+
+	_recursivelyBecomeVisible: function (bounds, zoomLevel) {
+		this._recursively(bounds, this._group._map.getMinZoom(), zoomLevel, null, function (c) {
+			c.clusterShow();
+		});
+	},
+
+	_recursivelyAddChildrenToMap: function (startPos, zoomLevel, bounds) {
+		this._recursively(bounds, this._group._map.getMinZoom() - 1, zoomLevel,
+			function (c) {
+				if (zoomLevel === c._zoom) {
+					return;
+				}
+
+				//Add our child markers at startPos (so they can be animated out)
+				for (var i = c._markers.length - 1; i >= 0; i--) {
+					var nm = c._markers[i];
+
+					if (!bounds.contains(nm._latlng)) {
+						continue;
+					}
+
+					if (startPos) {
+						nm._backupLatlng = nm.getLatLng();
+
+						nm.setLatLng(startPos);
+						if (nm.clusterHide) {
+							nm.clusterHide();
+						}
+					}
+
+					c._group._featureGroup.addLayer(nm);
+				}
+			},
+			function (c) {
+				c._addToMap(startPos);
+			}
+		);
+	},
+
+	_recursivelyRestoreChildPositions: function (zoomLevel) {
+		//Fix positions of child markers
+		for (var i = this._markers.length - 1; i >= 0; i--) {
+			var nm = this._markers[i];
+			if (nm._backupLatlng) {
+				nm.setLatLng(nm._backupLatlng);
+				delete nm._backupLatlng;
+			}
+		}
+
+		if (zoomLevel - 1 === this._zoom) {
+			//Reposition child clusters
+			for (var j = this._childClusters.length - 1; j >= 0; j--) {
+				this._childClusters[j]._restorePosition();
+			}
+		} else {
+			for (var k = this._childClusters.length - 1; k >= 0; k--) {
+				this._childClusters[k]._recursivelyRestoreChildPositions(zoomLevel);
+			}
+		}
+	},
+
+	_restorePosition: function () {
+		if (this._backupLatlng) {
+			this.setLatLng(this._backupLatlng);
+			delete this._backupLatlng;
+		}
+	},
+
+	//exceptBounds: If set, don't remove any markers/clusters in it
+	_recursivelyRemoveChildrenFromMap: function (previousBounds, mapMinZoom, zoomLevel, exceptBounds) {
+		var m, i;
+		this._recursively(previousBounds, mapMinZoom - 1, zoomLevel - 1,
+			function (c) {
+				//Remove markers at every level
+				for (i = c._markers.length - 1; i >= 0; i--) {
+					m = c._markers[i];
+					if (!exceptBounds || !exceptBounds.contains(m._latlng)) {
+						c._group._featureGroup.removeLayer(m);
+						if (m.clusterShow) {
+							m.clusterShow();
+						}
+					}
+				}
+			},
+			function (c) {
+				//Remove child clusters at just the bottom level
+				for (i = c._childClusters.length - 1; i >= 0; i--) {
+					m = c._childClusters[i];
+					if (!exceptBounds || !exceptBounds.contains(m._latlng)) {
+						c._group._featureGroup.removeLayer(m);
+						if (m.clusterShow) {
+							m.clusterShow();
+						}
+					}
+				}
+			}
+		);
+	},
+
+	//Run the given functions recursively to this and child clusters
+	// boundsToApplyTo: a L.LatLngBounds representing the bounds of what clusters to recurse in to
+	// zoomLevelToStart: zoom level to start running functions (inclusive)
+	// zoomLevelToStop: zoom level to stop running functions (inclusive)
+	// runAtEveryLevel: function that takes an L.MarkerCluster as an argument that should be applied on every level
+	// runAtBottomLevel: function that takes an L.MarkerCluster as an argument that should be applied at only the bottom level
+	_recursively: function (boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel) {
+		var childClusters = this._childClusters,
+		    zoom = this._zoom,
+		    i, c;
+
+		if (zoomLevelToStart <= zoom) {
+			if (runAtEveryLevel) {
+				runAtEveryLevel(this);
+			}
+			if (runAtBottomLevel && zoom === zoomLevelToStop) {
+				runAtBottomLevel(this);
+			}
+		}
+
+		if (zoom < zoomLevelToStart || zoom < zoomLevelToStop) {
+			for (i = childClusters.length - 1; i >= 0; i--) {
+				c = childClusters[i];
+				if (c._boundsNeedUpdate) {
+					c._recalculateBounds();
+				}
+				if (boundsToApplyTo.intersects(c._bounds)) {
+					c._recursively(boundsToApplyTo, zoomLevelToStart, zoomLevelToStop, runAtEveryLevel, runAtBottomLevel);
+				}
+			}
+		}
+	},
+
+	//Returns true if we are the parent of only one cluster and that cluster is the same as us
+	_isSingleParent: function () {
+		//Don't need to check this._markers as the rest won't work if there are any
+		return this._childClusters.length > 0 && this._childClusters[0]._childCount === this._childCount;
+	}
+});
+
+/*
+* Extends L.Marker to include two extra methods: clusterHide and clusterShow.
+* 
+* They work as setOpacity(0) and setOpacity(1) respectively, but
+* don't overwrite the options.opacity
+* 
+*/
+
+L.Marker.include({
+	clusterHide: function () {
+		var backup = this.options.opacity;
+		this.setOpacity(0);
+		this.options.opacity = backup;
+		return this;
+	},
+	
+	clusterShow: function () {
+		return this.setOpacity(this.options.opacity);
+	}
+});
+
+L.DistanceGrid = function (cellSize) {
+	this._cellSize = cellSize;
+	this._sqCellSize = cellSize * cellSize;
+	this._grid = {};
+	this._objectPoint = { };
+};
+
+L.DistanceGrid.prototype = {
+
+	addObject: function (obj, point) {
+		var x = this._getCoord(point.x),
+		    y = this._getCoord(point.y),
+		    grid = this._grid,
+		    row = grid[y] = grid[y] || {},
+		    cell = row[x] = row[x] || [],
+		    stamp = L.Util.stamp(obj);
+
+		this._objectPoint[stamp] = point;
+
+		cell.push(obj);
+	},
+
+	updateObject: function (obj, point) {
+		this.removeObject(obj);
+		this.addObject(obj, point);
+	},
+
+	//Returns true if the object was found
+	removeObject: function (obj, point) {
+		var x = this._getCoord(point.x),
+		    y = this._getCoord(point.y),
+		    grid = this._grid,
+		    row = grid[y] = grid[y] || {},
+		    cell = row[x] = row[x] || [],
+		    i, len;
+
+		delete this._objectPoint[L.Util.stamp(obj)];
+
+		for (i = 0, len = cell.length; i < len; i++) {
+			if (cell[i] === obj) {
+
+				cell.splice(i, 1);
+
+				if (len === 1) {
+					delete row[x];
+				}
+
+				return true;
+			}
+		}
+
+	},
+
+	eachObject: function (fn, context) {
+		var i, j, k, len, row, cell, removed,
+		    grid = this._grid;
+
+		for (i in grid) {
+			row = grid[i];
+
+			for (j in row) {
+				cell = row[j];
+
+				for (k = 0, len = cell.length; k < len; k++) {
+					removed = fn.call(context, cell[k]);
+					if (removed) {
+						k--;
+						len--;
+					}
+				}
+			}
+		}
+	},
+
+	getNearObject: function (point) {
+		var x = this._getCoord(point.x),
+		    y = this._getCoord(point.y),
+		    i, j, k, row, cell, len, obj, dist,
+		    objectPoint = this._objectPoint,
+		    closestDistSq = this._sqCellSize,
+		    closest = null;
+
+		for (i = y - 1; i <= y + 1; i++) {
+			row = this._grid[i];
+			if (row) {
+
+				for (j = x - 1; j <= x + 1; j++) {
+					cell = row[j];
+					if (cell) {
+
+						for (k = 0, len = cell.length; k < len; k++) {
+							obj = cell[k];
+							dist = this._sqDist(objectPoint[L.Util.stamp(obj)], point);
+							if (dist < closestDistSq ||
+								dist <= closestDistSq && closest === null) {
+								closestDistSq = dist;
+								closest = obj;
+							}
+						}
+					}
+				}
+			}
+		}
+		return closest;
+	},
+
+	_getCoord: function (x) {
+		var coord = Math.floor(x / this._cellSize);
+		return isFinite(coord) ? coord : x;
+	},
+
+	_sqDist: function (p, p2) {
+		var dx = p2.x - p.x,
+		    dy = p2.y - p.y;
+		return dx * dx + dy * dy;
+	}
+};
+
+/* Copyright (c) 2012 the authors listed at the following URL, and/or
+the authors of referenced articles or incorporated external code:
+http://en.literateprograms.org/Quickhull_(Javascript)?action=history&offset=20120410175256
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+Retrieved from: http://en.literateprograms.org/Quickhull_(Javascript)?oldid=18434
+*/
+
+(function () {
+	L.QuickHull = {
+
+		/*
+		 * @param {Object} cpt a point to be measured from the baseline
+		 * @param {Array} bl the baseline, as represented by a two-element
+		 *   array of latlng objects.
+		 * @returns {Number} an approximate distance measure
+		 */
+		getDistant: function (cpt, bl) {
+			var vY = bl[1].lat - bl[0].lat,
+				vX = bl[0].lng - bl[1].lng;
+			return (vX * (cpt.lat - bl[0].lat) + vY * (cpt.lng - bl[0].lng));
+		},
+
+		/*
+		 * @param {Array} baseLine a two-element array of latlng objects
+		 *   representing the baseline to project from
+		 * @param {Array} latLngs an array of latlng objects
+		 * @returns {Object} the maximum point and all new points to stay
+		 *   in consideration for the hull.
+		 */
+		findMostDistantPointFromBaseLine: function (baseLine, latLngs) {
+			var maxD = 0,
+				maxPt = null,
+				newPoints = [],
+				i, pt, d;
+
+			for (i = latLngs.length - 1; i >= 0; i--) {
+				pt = latLngs[i];
+				d = this.getDistant(pt, baseLine);
+
+				if (d > 0) {
+					newPoints.push(pt);
+				} else {
+					continue;
+				}
+
+				if (d > maxD) {
+					maxD = d;
+					maxPt = pt;
+				}
+			}
+
+			return { maxPoint: maxPt, newPoints: newPoints };
+		},
+
+
+		/*
+		 * Given a baseline, compute the convex hull of latLngs as an array
+		 * of latLngs.
+		 *
+		 * @param {Array} latLngs
+		 * @returns {Array}
+		 */
+		buildConvexHull: function (baseLine, latLngs) {
+			var convexHullBaseLines = [],
+				t = this.findMostDistantPointFromBaseLine(baseLine, latLngs);
+
+			if (t.maxPoint) { // if there is still a point "outside" the base line
+				convexHullBaseLines =
+					convexHullBaseLines.concat(
+						this.buildConvexHull([baseLine[0], t.maxPoint], t.newPoints)
+					);
+				convexHullBaseLines =
+					convexHullBaseLines.concat(
+						this.buildConvexHull([t.maxPoint, baseLine[1]], t.newPoints)
+					);
+				return convexHullBaseLines;
+			} else {  // if there is no more point "outside" the base line, the current base line is part of the convex hull
+				return [baseLine[0]];
+			}
+		},
+
+		/*
+		 * Given an array of latlngs, compute a convex hull as an array
+		 * of latlngs
+		 *
+		 * @param {Array} latLngs
+		 * @returns {Array}
+		 */
+		getConvexHull: function (latLngs) {
+			// find first baseline
+			var maxLat = false, minLat = false,
+				maxLng = false, minLng = false,
+				maxLatPt = null, minLatPt = null,
+				maxLngPt = null, minLngPt = null,
+				maxPt = null, minPt = null,
+				i;
+
+			for (i = latLngs.length - 1; i >= 0; i--) {
+				var pt = latLngs[i];
+				if (maxLat === false || pt.lat > maxLat) {
+					maxLatPt = pt;
+					maxLat = pt.lat;
+				}
+				if (minLat === false || pt.lat < minLat) {
+					minLatPt = pt;
+					minLat = pt.lat;
+				}
+				if (maxLng === false || pt.lng > maxLng) {
+					maxLngPt = pt;
+					maxLng = pt.lng;
+				}
+				if (minLng === false || pt.lng < minLng) {
+					minLngPt = pt;
+					minLng = pt.lng;
+				}
+			}
+			
+			if (minLat !== maxLat) {
+				minPt = minLatPt;
+				maxPt = maxLatPt;
+			} else {
+				minPt = minLngPt;
+				maxPt = maxLngPt;
+			}
+
+			var ch = [].concat(this.buildConvexHull([minPt, maxPt], latLngs),
+								this.buildConvexHull([maxPt, minPt], latLngs));
+			return ch;
+		}
+	};
+}());
+
+L.MarkerCluster.include({
+	getConvexHull: function () {
+		var childMarkers = this.getAllChildMarkers(),
+			points = [],
+			p, i;
+
+		for (i = childMarkers.length - 1; i >= 0; i--) {
+			p = childMarkers[i].getLatLng();
+			points.push(p);
+		}
+
+		return L.QuickHull.getConvexHull(points);
+	}
+});
+
+//This code is 100% based on https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet
+//Huge thanks to jawj for implementing it first to make my job easy :-)
+
+L.MarkerCluster.include({
+
+	_2PI: Math.PI * 2,
+	_circleFootSeparation: 25, //related to circumference of circle
+	_circleStartAngle: 0,
+
+	_spiralFootSeparation:  28, //related to size of spiral (experiment!)
+	_spiralLengthStart: 11,
+	_spiralLengthFactor: 5,
+
+	_circleSpiralSwitchover: 9, //show spiral instead of circle from this marker count upwards.
+								// 0 -> always spiral; Infinity -> always circle
+
+	spiderfy: function () {
+		if (this._group._spiderfied === this || this._group._inZoomAnimation) {
+			return;
+		}
+
+		var childMarkers = this.getAllChildMarkers(null, true),
+			group = this._group,
+			map = group._map,
+			center = map.latLngToLayerPoint(this._latlng),
+			positions;
+
+		this._group._unspiderfy();
+		this._group._spiderfied = this;
+
+		//TODO Maybe: childMarkers order by distance to center
+
+		if (childMarkers.length >= this._circleSpiralSwitchover) {
+			positions = this._generatePointsSpiral(childMarkers.length, center);
+		} else {
+			center.y += 10; // Otherwise circles look wrong => hack for standard blue icon, renders differently for other icons.
+			positions = this._generatePointsCircle(childMarkers.length, center);
+		}
+
+		this._animationSpiderfy(childMarkers, positions);
+	},
+
+	unspiderfy: function (zoomDetails) {
+		/// <param Name="zoomDetails">Argument from zoomanim if being called in a zoom animation or null otherwise</param>
+		if (this._group._inZoomAnimation) {
+			return;
+		}
+		this._animationUnspiderfy(zoomDetails);
+
+		this._group._spiderfied = null;
+	},
+
+	_generatePointsCircle: function (count, centerPt) {
+		var circumference = this._group.options.spiderfyDistanceMultiplier * this._circleFootSeparation * (2 + count),
+			legLength = circumference / this._2PI,  //radius from circumference
+			angleStep = this._2PI / count,
+			res = [],
+			i, angle;
+
+		legLength = Math.max(legLength, 35); // Minimum distance to get outside the cluster icon.
+
+		res.length = count;
+
+		for (i = 0; i < count; i++) { // Clockwise, like spiral.
+			angle = this._circleStartAngle + i * angleStep;
+			res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();
+		}
+
+		return res;
+	},
+
+	_generatePointsSpiral: function (count, centerPt) {
+		var spiderfyDistanceMultiplier = this._group.options.spiderfyDistanceMultiplier,
+			legLength = spiderfyDistanceMultiplier * this._spiralLengthStart,
+			separation = spiderfyDistanceMultiplier * this._spiralFootSeparation,
+			lengthFactor = spiderfyDistanceMultiplier * this._spiralLengthFactor * this._2PI,
+			angle = 0,
+			res = [],
+			i;
+
+		res.length = count;
+
+		// Higher index, closer position to cluster center.
+		for (i = count; i >= 0; i--) {
+			// Skip the first position, so that we are already farther from center and we avoid
+			// being under the default cluster icon (especially important for Circle Markers).
+			if (i < count) {
+				res[i] = new L.Point(centerPt.x + legLength * Math.cos(angle), centerPt.y + legLength * Math.sin(angle))._round();
+			}
+			angle += separation / legLength + i * 0.0005;
+			legLength += lengthFactor / angle;
+		}
+		return res;
+	},
+
+	_noanimationUnspiderfy: function () {
+		var group = this._group,
+			map = group._map,
+			fg = group._featureGroup,
+			childMarkers = this.getAllChildMarkers(null, true),
+			m, i;
+
+		group._ignoreMove = true;
+
+		this.setOpacity(1);
+		for (i = childMarkers.length - 1; i >= 0; i--) {
+			m = childMarkers[i];
+
+			fg.removeLayer(m);
+
+			if (m._preSpiderfyLatlng) {
+				m.setLatLng(m._preSpiderfyLatlng);
+				delete m._preSpiderfyLatlng;
+			}
+			if (m.setZIndexOffset) {
+				m.setZIndexOffset(0);
+			}
+
+			if (m._spiderLeg) {
+				map.removeLayer(m._spiderLeg);
+				delete m._spiderLeg;
+			}
+		}
+
+		group.fire('unspiderfied', {
+			cluster: this,
+			markers: childMarkers
+		});
+		group._ignoreMove = false;
+		group._spiderfied = null;
+	}
+});
+
+//Non Animated versions of everything
+L.MarkerClusterNonAnimated = L.MarkerCluster.extend({
+	_animationSpiderfy: function (childMarkers, positions) {
+		var group = this._group,
+			map = group._map,
+			fg = group._featureGroup,
+			legOptions = this._group.options.spiderLegPolylineOptions,
+			i, m, leg, newPos;
+
+		group._ignoreMove = true;
+
+		// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.
+		// The reverse order trick no longer improves performance on modern browsers.
+		for (i = 0; i < childMarkers.length; i++) {
+			newPos = map.layerPointToLatLng(positions[i]);
+			m = childMarkers[i];
+
+			// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.
+			leg = new L.Polyline([this._latlng, newPos], legOptions);
+			map.addLayer(leg);
+			m._spiderLeg = leg;
+
+			// Now add the marker.
+			m._preSpiderfyLatlng = m._latlng;
+			m.setLatLng(newPos);
+			if (m.setZIndexOffset) {
+				m.setZIndexOffset(1000000); //Make these appear on top of EVERYTHING
+			}
+
+			fg.addLayer(m);
+		}
+		this.setOpacity(0.3);
+
+		group._ignoreMove = false;
+		group.fire('spiderfied', {
+			cluster: this,
+			markers: childMarkers
+		});
+	},
+
+	_animationUnspiderfy: function () {
+		this._noanimationUnspiderfy();
+	}
+});
+
+//Animated versions here
+L.MarkerCluster.include({
+
+	_animationSpiderfy: function (childMarkers, positions) {
+		var me = this,
+			group = this._group,
+			map = group._map,
+			fg = group._featureGroup,
+			thisLayerLatLng = this._latlng,
+			thisLayerPos = map.latLngToLayerPoint(thisLayerLatLng),
+			svg = L.Path.SVG,
+			legOptions = L.extend({}, this._group.options.spiderLegPolylineOptions), // Copy the options so that we can modify them for animation.
+			finalLegOpacity = legOptions.opacity,
+			i, m, leg, legPath, legLength, newPos;
+
+		if (finalLegOpacity === undefined) {
+			finalLegOpacity = L.MarkerClusterGroup.prototype.options.spiderLegPolylineOptions.opacity;
+		}
+
+		if (svg) {
+			// If the initial opacity of the spider leg is not 0 then it appears before the animation starts.
+			legOptions.opacity = 0;
+
+			// Add the class for CSS transitions.
+			legOptions.className = (legOptions.className || '') + ' leaflet-cluster-spider-leg';
+		} else {
+			// Make sure we have a defined opacity.
+			legOptions.opacity = finalLegOpacity;
+		}
+
+		group._ignoreMove = true;
+
+		// Add markers and spider legs to map, hidden at our center point.
+		// Traverse in ascending order to make sure that inner circleMarkers are on top of further legs. Normal markers are re-ordered by newPosition.
+		// The reverse order trick no longer improves performance on modern browsers.
+		for (i = 0; i < childMarkers.length; i++) {
+			m = childMarkers[i];
+
+			newPos = map.layerPointToLatLng(positions[i]);
+
+			// Add the leg before the marker, so that in case the latter is a circleMarker, the leg is behind it.
+			leg = new L.Polyline([thisLayerLatLng, newPos], legOptions);
+			map.addLayer(leg);
+			m._spiderLeg = leg;
+
+			// Explanations: https://jakearchibald.com/2013/animated-line-drawing-svg/
+			// In our case the transition property is declared in the CSS file.
+			if (svg) {
+				legPath = leg._path;
+				legLength = legPath.getTotalLength() + 0.1; // Need a small extra length to avoid remaining dot in Firefox.
+				legPath.style.strokeDasharray = legLength; // Just 1 length is enough, it will be duplicated.
+				legPath.style.strokeDashoffset = legLength;
+			}
+
+			// If it is a marker, add it now and we'll animate it out
+			if (m.setZIndexOffset) {
+				m.setZIndexOffset(1000000); // Make normal markers appear on top of EVERYTHING
+			}
+			if (m.clusterHide) {
+				m.clusterHide();
+			}
+			
+			// Vectors just get immediately added
+			fg.addLayer(m);
+
+			if (m._setPos) {
+				m._setPos(thisLayerPos);
+			}
+		}
+
+		group._forceLayout();
+		group._animationStart();
+
+		// Reveal markers and spider legs.
+		for (i = childMarkers.length - 1; i >= 0; i--) {
+			newPos = map.layerPointToLatLng(positions[i]);
+			m = childMarkers[i];
+
+			//Move marker to new position
+			m._preSpiderfyLatlng = m._latlng;
+			m.setLatLng(newPos);
+			
+			if (m.clusterShow) {
+				m.clusterShow();
+			}
+
+			// Animate leg (animation is actually delegated to CSS transition).
+			if (svg) {
+				leg = m._spiderLeg;
+				legPath = leg._path;
+				legPath.style.strokeDashoffset = 0;
+				//legPath.style.strokeOpacity = finalLegOpacity;
+				leg.setStyle({opacity: finalLegOpacity});
+			}
+		}
+		this.setOpacity(0.3);
+
+		group._ignoreMove = false;
+
+		setTimeout(function () {
+			group._animationEnd();
+			group.fire('spiderfied', {
+				cluster: me,
+				markers: childMarkers
+			});
+		}, 200);
+	},
+
+	_animationUnspiderfy: function (zoomDetails) {
+		var me = this,
+			group = this._group,
+			map = group._map,
+			fg = group._featureGroup,
+			thisLayerPos = zoomDetails ? map._latLngToNewLayerPoint(this._latlng, zoomDetails.zoom, zoomDetails.center) : map.latLngToLayerPoint(this._latlng),
+			childMarkers = this.getAllChildMarkers(null, true),
+			svg = L.Path.SVG,
+			m, i, leg, legPath, legLength, nonAnimatable;
+
+		group._ignoreMove = true;
+		group._animationStart();
+
+		//Make us visible and bring the child markers back in
+		this.setOpacity(1);
+		for (i = childMarkers.length - 1; i >= 0; i--) {
+			m = childMarkers[i];
+
+			//Marker was added to us after we were spiderfied
+			if (!m._preSpiderfyLatlng) {
+				continue;
+			}
+
+			//Close any popup on the marker first, otherwise setting the location of the marker will make the map scroll
+			m.closePopup();
+
+			//Fix up the location to the real one
+			m.setLatLng(m._preSpiderfyLatlng);
+			delete m._preSpiderfyLatlng;
+
+			//Hack override the location to be our center
+			nonAnimatable = true;
+			if (m._setPos) {
+				m._setPos(thisLayerPos);
+				nonAnimatable = false;
+			}
+			if (m.clusterHide) {
+				m.clusterHide();
+				nonAnimatable = false;
+			}
+			if (nonAnimatable) {
+				fg.removeLayer(m);
+			}
+
+			// Animate the spider leg back in (animation is actually delegated to CSS transition).
+			if (svg) {
+				leg = m._spiderLeg;
+				legPath = leg._path;
+				legLength = legPath.getTotalLength() + 0.1;
+				legPath.style.strokeDashoffset = legLength;
+				leg.setStyle({opacity: 0});
+			}
+		}
+
+		group._ignoreMove = false;
+
+		setTimeout(function () {
+			//If we have only <= one child left then that marker will be shown on the map so don't remove it!
+			var stillThereChildCount = 0;
+			for (i = childMarkers.length - 1; i >= 0; i--) {
+				m = childMarkers[i];
+				if (m._spiderLeg) {
+					stillThereChildCount++;
+				}
+			}
+
+
+			for (i = childMarkers.length - 1; i >= 0; i--) {
+				m = childMarkers[i];
+
+				if (!m._spiderLeg) { //Has already been unspiderfied
+					continue;
+				}
+
+				if (m.clusterShow) {
+					m.clusterShow();
+				}
+				if (m.setZIndexOffset) {
+					m.setZIndexOffset(0);
+				}
+
+				if (stillThereChildCount > 1) {
+					fg.removeLayer(m);
+				}
+
+				map.removeLayer(m._spiderLeg);
+				delete m._spiderLeg;
+			}
+			group._animationEnd();
+			group.fire('unspiderfied', {
+				cluster: me,
+				markers: childMarkers
+			});
+		}, 200);
+	}
+});
+
+
+L.MarkerClusterGroup.include({
+	//The MarkerCluster currently spiderfied (if any)
+	_spiderfied: null,
+
+	unspiderfy: function () {
+		this._unspiderfy.apply(this, arguments);
+	},
+
+	_spiderfierOnAdd: function () {
+		this._map.on('click', this._unspiderfyWrapper, this);
+
+		if (this._map.options.zoomAnimation) {
+			this._map.on('zoomstart', this._unspiderfyZoomStart, this);
+		}
+		//Browsers without zoomAnimation or a big zoom don't fire zoomstart
+		this._map.on('zoomend', this._noanimationUnspiderfy, this);
+
+		if (!L.Browser.touch) {
+			this._map.getRenderer(this);
+			//Needs to happen in the pageload, not after, or animations don't work in webkit
+			//  http://stackoverflow.com/questions/8455200/svg-animate-with-dynamically-added-elements
+			//Disable on touch browsers as the animation messes up on a touch zoom and isn't very noticable
+		}
+	},
+
+	_spiderfierOnRemove: function () {
+		this._map.off('click', this._unspiderfyWrapper, this);
+		this._map.off('zoomstart', this._unspiderfyZoomStart, this);
+		this._map.off('zoomanim', this._unspiderfyZoomAnim, this);
+		this._map.off('zoomend', this._noanimationUnspiderfy, this);
+
+		//Ensure that markers are back where they should be
+		// Use no animation to avoid a sticky leaflet-cluster-anim class on mapPane
+		this._noanimationUnspiderfy();
+	},
+
+	//On zoom start we add a zoomanim handler so that we are guaranteed to be last (after markers are animated)
+	//This means we can define the animation they do rather than Markers doing an animation to their actual location
+	_unspiderfyZoomStart: function () {
+		if (!this._map) { //May have been removed from the map by a zoomEnd handler
+			return;
+		}
+
+		this._map.on('zoomanim', this._unspiderfyZoomAnim, this);
+	},
+
+	_unspiderfyZoomAnim: function (zoomDetails) {
+		//Wait until the first zoomanim after the user has finished touch-zooming before running the animation
+		if (L.DomUtil.hasClass(this._map._mapPane, 'leaflet-touching')) {
+			return;
+		}
+
+		this._map.off('zoomanim', this._unspiderfyZoomAnim, this);
+		this._unspiderfy(zoomDetails);
+	},
+
+	_unspiderfyWrapper: function () {
+		/// <summary>_unspiderfy but passes no arguments</summary>
+		this._unspiderfy();
+	},
+
+	_unspiderfy: function (zoomDetails) {
+		if (this._spiderfied) {
+			this._spiderfied.unspiderfy(zoomDetails);
+		}
+	},
+
+	_noanimationUnspiderfy: function () {
+		if (this._spiderfied) {
+			this._spiderfied._noanimationUnspiderfy();
+		}
+	},
+
+	//If the given layer is currently being spiderfied then we unspiderfy it so it isn't on the map anymore etc
+	_unspiderfyLayer: function (layer) {
+		if (layer._spiderLeg) {
+			this._featureGroup.removeLayer(layer);
+
+			if (layer.clusterShow) {
+				layer.clusterShow();
+			}
+				//Position will be fixed up immediately in _animationUnspiderfy
+			if (layer.setZIndexOffset) {
+				layer.setZIndexOffset(0);
+			}
+
+			this._map.removeLayer(layer._spiderLeg);
+			delete layer._spiderLeg;
+		}
+	}
+});
+
+/**
+ * Adds 1 public method to MCG and 1 to L.Marker to facilitate changing
+ * markers' icon options and refreshing their icon and their parent clusters
+ * accordingly (case where their iconCreateFunction uses data of childMarkers
+ * to make up the cluster icon).
+ */
+
+
+L.MarkerClusterGroup.include({
+	/**
+	 * Updates the icon of all clusters which are parents of the given marker(s).
+	 * In singleMarkerMode, also updates the given marker(s) icon.
+	 * @param layers L.MarkerClusterGroup|L.LayerGroup|Array(L.Marker)|Map(L.Marker)|
+	 * L.MarkerCluster|L.Marker (optional) list of markers (or single marker) whose parent
+	 * clusters need to be updated. If not provided, retrieves all child markers of this.
+	 * @returns {L.MarkerClusterGroup}
+	 */
+	refreshClusters: function (layers) {
+		if (!layers) {
+			layers = this._topClusterLevel.getAllChildMarkers();
+		} else if (layers instanceof L.MarkerClusterGroup) {
+			layers = layers._topClusterLevel.getAllChildMarkers();
+		} else if (layers instanceof L.LayerGroup) {
+			layers = layers._layers;
+		} else if (layers instanceof L.MarkerCluster) {
+			layers = layers.getAllChildMarkers();
+		} else if (layers instanceof L.Marker) {
+			layers = [layers];
+		} // else: must be an Array(L.Marker)|Map(L.Marker)
+		this._flagParentsIconsNeedUpdate(layers);
+		this._refreshClustersIcons();
+
+		// In case of singleMarkerMode, also re-draw the markers.
+		if (this.options.singleMarkerMode) {
+			this._refreshSingleMarkerModeMarkers(layers);
+		}
+
+		return this;
+	},
+
+	/**
+	 * Simply flags all parent clusters of the given markers as having a "dirty" icon.
+	 * @param layers Array(L.Marker)|Map(L.Marker) list of markers.
+	 * @private
+	 */
+	_flagParentsIconsNeedUpdate: function (layers) {
+		var id, parent;
+
+		// Assumes layers is an Array or an Object whose prototype is non-enumerable.
+		for (id in layers) {
+			// Flag parent clusters' icon as "dirty", all the way up.
+			// Dumb process that flags multiple times upper parents, but still
+			// much more efficient than trying to be smart and make short lists,
+			// at least in the case of a hierarchy following a power law:
+			// http://jsperf.com/flag-nodes-in-power-hierarchy/2
+			parent = layers[id].__parent;
+			while (parent) {
+				parent._iconNeedsUpdate = true;
+				parent = parent.__parent;
+			}
+		}
+	},
+
+	/**
+	 * Re-draws the icon of the supplied markers.
+	 * To be used in singleMarkerMode only.
+	 * @param layers Array(L.Marker)|Map(L.Marker) list of markers.
+	 * @private
+	 */
+	_refreshSingleMarkerModeMarkers: function (layers) {
+		var id, layer;
+
+		for (id in layers) {
+			layer = layers[id];
+
+			// Make sure we do not override markers that do not belong to THIS group.
+			if (this.hasLayer(layer)) {
+				// Need to re-create the icon first, then re-draw the marker.
+				layer.setIcon(this._overrideMarkerIcon(layer));
+			}
+		}
+	}
+});
+
+L.Marker.include({
+	/**
+	 * Updates the given options in the marker's icon and refreshes the marker.
+	 * @param options map object of icon options.
+	 * @param directlyRefreshClusters boolean (optional) true to trigger
+	 * MCG.refreshClustersOf() right away with this single marker.
+	 * @returns {L.Marker}
+	 */
+	refreshIconOptions: function (options, directlyRefreshClusters) {
+		var icon = this.options.icon;
+
+		L.setOptions(icon, options);
+
+		this.setIcon(icon);
+
+		// Shortcut to refresh the associated MCG clusters right away.
+		// To be used when refreshing a single marker.
+		// Otherwise, better use MCG.refreshClusters() once at the end with
+		// the list of modified markers.
+		if (directlyRefreshClusters && this.__parent) {
+			this.__parent._group.refreshClusters(this);
+		}
+
+		return this;
+	}
+});
+
+exports.MarkerClusterGroup = MarkerClusterGroup;
+exports.MarkerCluster = MarkerCluster;
+
+})));
+/*
+  Leaflet.AwesomeMarkers, a plugin that adds colorful iconic markers for Leaflet, based on the Font Awesome icons
+  (c) 2012-2013, Lennard Voogdt
+
+  http://leafletjs.com
+  https://github.com/lvoogdt
+*/
+
+/*global L*/
+
+
+(function (window, document, undefined) {
+    "use strict";
+    /*
+     * Leaflet.AwesomeMarkers assumes that you have already included the Leaflet library.
+     */
+
+    L.AwesomeMarkers = {};
+
+    L.AwesomeMarkers.version = '2.0.1';
+
+    L.AwesomeMarkers.Icon = L.Icon.extend({
+        options: {
+            iconSize: [35, 45],
+            iconAnchor:   [17, 42],
+            popupAnchor: [1, -32],
+            shadowAnchor: [10, 12],
+            shadowSize: [36, 16],
+            className: 'awesome-marker',
+            prefix: 'glyphicon',
+            spinClass: 'fa-spin',
+            extraClasses: '',
+            icon: 'home',
+            markerColor: 'blue',
+            iconColor: 'white'
+        },
+
+        initialize: function (options) {
+            options = L.Util.setOptions(this, options);
+        },
+
+        createIcon: function () {
+            var div = document.createElement('div'),
+                options = this.options;
+
+            if (options.icon) {
+                div.innerHTML = this._createInner();
+            }
+
+            if (options.bgPos) {
+                div.style.backgroundPosition =
+                    (-options.bgPos.x) + 'px ' + (-options.bgPos.y) + 'px';
+            }
+
+            this._setIconStyles(div, 'icon-' + options.markerColor);
+            return div;
+        },
+
+        _createInner: function() {
+            var iconClass, iconSpinClass = "", iconColorClass = "", iconColorStyle = "", options = this.options;
+
+            if(options.icon.slice(0,options.prefix.length+1) === options.prefix + "-") {
+                iconClass = options.icon;
+            } else {
+                iconClass = options.prefix + "-" + options.icon;
+            }
+
+            if(options.spin && typeof options.spinClass === "string") {
+                iconSpinClass = options.spinClass;
+            }
+
+            if(options.iconColor) {
+                if(options.iconColor === 'white' || options.iconColor === 'black') {
+                    iconColorClass = "icon-" + options.iconColor;
+                } else {
+                    iconColorStyle = "style='color: " + options.iconColor + "' ";
+                }
+            }
+
+            return "<i " + iconColorStyle + "class='" + options.extraClasses + " " + options.prefix + " " + iconClass + " " + iconSpinClass + " " + iconColorClass + "'></i>";
+        },
+
+        _setIconStyles: function (img, name) {
+            var options = this.options,
+                size = L.point(options[name === 'shadow' ? 'shadowSize' : 'iconSize']),
+                anchor;
+
+            if (name === 'shadow') {
+                anchor = L.point(options.shadowAnchor || options.iconAnchor);
+            } else {
+                anchor = L.point(options.iconAnchor);
+            }
+
+            if (!anchor && size) {
+                anchor = size.divideBy(2, true);
+            }
+
+            img.className = 'awesome-marker-' + name + ' ' + options.className;
+
+            if (anchor) {
+                img.style.marginLeft = (-anchor.x) + 'px';
+                img.style.marginTop  = (-anchor.y) + 'px';
+            }
+
+            if (size) {
+                img.style.width  = size.x + 'px';
+                img.style.height = size.y + 'px';
+            }
+        },
+
+        createShadow: function () {
+            var div = document.createElement('div');
+
+            this._setIconStyles(div, 'shadow');
+            return div;
+      }
+    });
+        
+    L.AwesomeMarkers.icon = function (options) {
+        return new L.AwesomeMarkers.Icon(options);
+    };
+
+}(this, document));
+
+
+
+(function() {
+  $(document).on('turbolinks:load', function() {
+    $('#event_start_time').change(function() {
+      if ($('#event_start_time').val() >= $('#event_end_time').val()) {
+        return $('#event_end_time').val($('#event_start_time').val());
+      }
+    });
+    $('#event_end_time').change(function() {
+      if ($('#event_start_time').val() >= $('#event_end_time').val()) {
+        return $('#event_start_time').val($('#event_end_time').val());
+      }
+    });
+    $('#event_repeat').each(function() {
+      if ($(this).val() === '0') {
+        $('.field.rule').hide();
+      }
+      return $(this).change(function() {
+        if ($(this).val() > 0) {
+          $('.field.rule').show();
+          return $('.field.rule input').attr('required', 'required');
+        } else {
+          $('.field.rule').hide();
+          return $('.field.rule input').removeAttr('required');
+        }
+      });
+    });
+    return $('#event_tags').each(function() {
+      var elt;
+      elt = $(this);
+      return $.ajax({
+        url: '/tags.json'
+      }).done(function(data) {
+        var tags;
+        return tags = jQuery.map(data, function(n) {
+          return n[0];
+        });
+      });
+    });
+  });
+
+}).call(this);
+(function() {
+  $(document).on('turbolinks:load', function() {
+    $('body.pages form :input').prop('disabled', false);
+    return $('form').submit(function() {
+      $('input[name=utf8]').prop('disabled', true);
+      return $('button').prop('disabled', true);
+    });
+  });
+
+}).call(this);
+(function() {
+  $(document).on('turbolinks:load', function() {});
+
+}).call(this);
+
+/*
+  @licstart  The following is the entire license notice for the JavaScript code in this page.
+
+  frTypo, la typographie française simplifiée
+
+      Copyright (C) 2013  acoeuro
+
+  This program is free software: you can redistribute it and/or modify
+  it under the terms of the GNU Affero General Public License as
+  published by the Free Software Foundation, either version 3 of the
+  License, or (at your option) any later version.
+
+  This program is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU Affero General Public License for more details.
+
+  You should have received a copy of the GNU Affero General Public License
+  along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+  @licend  The above is the entire license notice for the JavaScript code in this page.
+ */
+
+(function() {
+  var regexp, regexpPost;
+
+  regexp = /(^|[\wàéèêç])\s*([!?:;»%€¢]+)(\s|[^\w\/]|$)/g;
+
+  regexpPost = /([«])\s*([\w])/g;
+
+  $(document).on('turbolinks:load', function() {
+    if ($('html').attr('lang') === 'fr') {
+      return $('body *').contents().filter(function() {
+        return this.nodeType === Node.TEXT_NODE;
+      }).filter(function() {
+        return 0 > ['CODE', 'PRE', 'STYLE'].indexOf(this.parentNode.tagName);
+      }).filter(function() {
+        return !$(this).parent().hasClass('finePre') && !$(this).parent().hasClass('start_time') && !$(this).parent().hasClass('end_time');
+      }).filter(function() {
+        return (this.nodeValue.match(regexp) != null) || (this.nodeValue.match(regexpPost) != null);
+      }).each(function() {
+        return $(this).replaceWith(function() {
+          return this.nodeValue.replace(regexp, '$1<span class="finePre">$2</span>$3').replace(regexpPost, '<span class="finePost">$1</span>$2');
+        });
+      });
+    }
+  });
+
+}).call(this);
+(function() {
+  $(document).on('turbolinks:load', function() {});
+
+}).call(this);
+(function() {
+  var modulo = function(a, b) { return (+a % (b = +b) + b) % b; };
+
+  $(document).on('turbolinks:load', function() {
+    var idx, markerColors;
+    markerColors = ['blue', 'red', 'darkred', 'orange', 'green', 'darkgreen', 'purple', 'darkpuple', 'cadetblue'];
+    idx = 0;
+    $('#map.list').each(function() {
+      var controls, map;
+      map = L.map('map');
+      map.fitBounds([[60, -20], [30, 30]]);
+      L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
+        attribution: '&copy; <a href="https://osm.org/copyright">OpenStreetMap</a>'
+      }).addTo(map);
+      controls = L.control.layers(null, null, {
+        collapsed: false
+      }).addTo(map);
+      return $('li a', this).each(function() {
+        var markerColor, text, url;
+        url = $(this).attr('href');
+        text = $(this).html();
+        markerColor = markerColors[modulo(idx++, markerColors.length)];
+        if (location.search && url.indexOf('?') >= 0) {
+          url += '&' + location.search.substr(1);
+        } else {
+          url += location.search;
+        }
+        return $.getJSON(url, function(json) {
+          var layer;
+          if (!(json != null ? json.length : void 0)) {
+            return;
+          }
+          layer = L.markerClusterGroup({
+            maxClusterRadius: 30
+          }).addLayer(L.geoJson(json, {
+            pointToLayer: function(feature, latlng) {
+              var marker;
+              marker = L.AwesomeMarkers.icon({
+                prefix: 'fa',
+                icon: feature.properties.icon || 'calendar',
+                markerColor: markerColor
+              });
+              return L.marker(latlng, {
+                icon: marker
+              });
+            },
+            onEachFeature: function(feature, layer) {
+              if (feature.properties && feature.properties.popupContent) {
+                return layer.bindPopup(feature.properties.popupContent);
+              }
+            }
+          }));
+          map.addLayer(layer);
+          controls.addOverlay(layer, text + ' - ' + json.length);
+          if ((/maps\//.test(location.href) || /maps.json/.test(url)) && layer.getBounds()._northEast && layer.getBounds()._southWest) {
+            return map.fitBounds(layer.getBounds());
+          }
+        });
+      });
+    });
+    return $('#map.event, #map.orga').each(function() {
+      var coord, map, marker, markerColor, url;
+      coord = [$(this).data('latitude'), $(this).data('longitude')];
+      map = L.map('map').setView([coord[0], coord[1]], 16);
+      L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
+        attribution: '&copy; <a href="https://osm.org/copyright">OpenStreetMap</a>'
+      }).addTo(map);
+      url = $(this).data('url');
+      markerColor = markerColors[modulo(idx++, markerColors.length)];
+      if (location.search && url.indexOf('?') >= 0) {
+        url += '&' + location.search.substr(1);
+      } else {
+        url += location.search;
+      }
+      marker = L.AwesomeMarkers.icon({
+        prefix: 'fa',
+        icon: 'calendar'
+      });
+      L.marker([coord[0], coord[1]], {
+        icon: marker
+      }).addTo(map);
+      return $.getJSON(url, function(json) {
+        var layer;
+        layer = L.markerClusterGroup({
+          maxClusterRadius: 30
+        }).addLayer(L.geoJson(json, {
+          pointToLayer: function(feature, latlng) {
+            marker = L.AwesomeMarkers.icon({
+              prefix: 'fa',
+              icon: feature.properties.icon || 'calendar',
+              markerColor: markerColor
+            });
+            return L.marker(latlng, {
+              icon: marker
+            });
+          },
+          onEachFeature: function(feature, layer) {
+            if (feature.properties && feature.properties.popupContent) {
+              return layer.bindPopup(feature.properties.popupContent);
+            }
+          }
+        }));
+        return map.addLayer(layer);
+      });
+    });
+  });
+
+}).call(this);
+(function() {
+  $(document).on('turbolinks:load', function() {
+    $('body.moderations .radios label').click(function() {
+      return $('body.moderations #event_reason').parent().slideUp();
+    });
+    return $('body.moderations .radios label:last-child').click(function() {
+      return $('body.moderations #event_reason').parent().slideDown();
+    });
+  });
+
+}).call(this);
+(function() {
+
+
+}).call(this);
+(function() {
+
+
+}).call(this);
+(function() {
+  var showPosition;
+
+  $(document).on('turbolinks:load', function() {
+    if (!navigator.geolocation) {
+      return;
+    }
+    return $('.digest .filter:first-child').each(function() {
+      $(this).before('<a id="nearMe" href="#" title="⯐"> <em class="fa fa-2x fa-street-view"></em> </a>');
+      return $('#nearMe').click(function(event) {
+        event.preventDefault();
+        return navigator.geolocation.getCurrentPosition(showPosition, function(error) {
+          switch (error.code) {
+            case error.PERMISSION_DENIED:
+              return $('#nearMe').remove();
+          }
+        });
+      });
+    });
+  });
+
+  showPosition = function(position) {
+    var coords, url;
+    coords = "[" + position.coords.latitude + ", " + position.coords.longitude + "]";
+    url = location.href;
+    if (location.search) {
+      url = url.replace('near=', '');
+      url += '&';
+    } else {
+      url += '?';
+    }
+    url += "near[location]=" + coords + "&near[distance]=20";
+    return location.replace(url);
+  };
+
+}).call(this);
+(function() {
+  $(document).on('turbolinks:load', function() {
+    return $('.pagination .next a').attr('data-remote', true).each(function() {
+      return $(document).scroll((function(_this) {
+        return function() {
+          if ($(_this).visible(true, true)) {
+            return $(_this).click().parents('.pagination').hide();
+          }
+        };
+      })(this));
+    });
+  });
+
+  $(document).on('ajax:success', '.pagination .next a', function(event, data) {
+    var next;
+    $(this).parents('tfoot').prev().append($('tbody tr', data));
+    next = $('.pagination .next a', data).attr('href');
+    if (next != null) {
+      return $(this).attr('href', next).parents('.pagination').show();
+    }
+  });
+
+}).call(this);
+(function() {
+  $(document).on('turbolinks:load', function() {
+    return tinyMCE.init({
+      width: '100%',
+      height: '40em',
+      menubar: false,
+      branding: false,
+      language: 'fr_FR',
+      selector: 'input.description',
+      content_css: '/assets/application-d3eba8d4a824164102e32919820a084700da079ea05453cd44d3a26d6899e7da.css',
+      entity_encoding: 'raw',
+      add_unload_trigger: true,
+      browser_spellcheck: true,
+      style_formats_autohide: true,
+      toolbar: [' cut copy paste | undo redo | link image media charmap table | code visualblocks searchreplace', ' removeformat bold italic strikethrough superscript subscript | bullist numlist outdent indent | alignleft aligncenter alignright alignjustify alignnone'],
+      plugins: 'lists advlist autolink link image charmap paste print preview table fullscreen searchreplace media insertdatetime visualblocks wordcount code'
+    });
+  });
+
+  $(document).on('turbolinks:before-cache', function() {
+    return tinymce.remove();
+  });
+
+}).call(this);
+(function() {
+  $(document).on('turbolinks:load', function() {
+    $('table.list.dates tbody tr').each(function() {
+      var vals;
+      vals = $(this).find('td.quantity').map(function() {
+        var val;
+        val = $(this).find('a').html().replace(' ', '').trim();
+        if (val && val !== '') {
+          return parseInt(val);
+        } else {
+          return 0;
+        }
+      });
+      return $(this).find('.sparkline').sparkline(vals, {
+        width: '5em'
+      });
+    });
+    return $('table.list.dates tfoot').each(function() {
+      var vals;
+      vals = $(this).find('th.quantity').map(function() {
+        return parseInt($(this).html().replace(' ', ''));
+      });
+      return $(this).find('.sparkline').sparkline(vals, {
+        type: 'bar',
+        height: '3em',
+        barWidth: '100%',
+        barColor: '#9CC5EE',
+        barSpacing: 2
+      });
+    });
+  });
+
+}).call(this);
+tinymce.addI18n('fr_FR',{
+"Redo": "R\u00e9tablir",
+"Undo": "Annuler",
+"Cut": "Couper",
+"Copy": "Copier",
+"Paste": "Coller",
+"Select all": "Tout s\u00e9lectionner",
+"New document": "Nouveau document",
+"Ok": "Ok",
+"Cancel": "Annuler",
+"Visual aids": "Aides visuelle",
+"Bold": "Gras",
+"Italic": "Italique",
+"Underline": "Soulign\u00e9",
+"Strikethrough": "Barr\u00e9",
+"Superscript": "Exposant",
+"Subscript": "Indice",
+"Clear formatting": "Effacer la mise en forme",
+"Align left": "Aligner \u00e0 gauche",
+"Align center": "Centrer",
+"Align right": "Aligner \u00e0 droite",
+"Justify": "Justifier",
+"Bullet list": "Puces",
+"Numbered list": "Num\u00e9rotation",
+"Decrease indent": "Diminuer le retrait",
+"Increase indent": "Augmenter le retrait",
+"Close": "Fermer",
+"Formats": "Formats",
+"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "Votre navigateur ne supporte pas la copie directe. Merci d'utiliser les touches Ctrl+X\/C\/V.",
+"Headers": "Titres",
+"Header 1": "Titre 1",
+"Header 2": "Titre 2",
+"Header 3": "Titre 3",
+"Header 4": "Titre 4",
+"Header 5": "Titre 5",
+"Header 6": "Titre 6",
+"Headings": "En-t\u00eates",
+"Heading 1": "En-t\u00eate 1",
+"Heading 2": "En-t\u00eate 2",
+"Heading 3": "En-t\u00eate 3",
+"Heading 4": "En-t\u00eate 4",
+"Heading 5": "En-t\u00eate 5",
+"Heading 6": "En-t\u00eate 6",
+"Preformatted": "Pr\u00e9-formatt\u00e9",
+"Div": "Div",
+"Pre": "Pre",
+"Code": "Code",
+"Paragraph": "Paragraphe",
+"Blockquote": "Citation",
+"Inline": "En ligne",
+"Blocks": "Blocs",
+"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "Le presse-papiers est maintenant en mode \"texte plein\". Les contenus seront coll\u00e9s sans retenir les formatages jusqu'\u00e0 ce que vous d\u00e9sactiviez cette option.",
+"Fonts": "Polices",
+"Font Sizes": "Taille de police",
+"Class": "Classe",
+"Browse for an image": "Parcourir pour s\u00e9lectionner une image",
+"OR": "OU",
+"Drop an image here": "Glisser une image ici",
+"Upload": "D\u00e9poser",
+"Block": "Bloquer",
+"Align": "Aligner",
+"Default": "Par d\u00e9faut",
+"Circle": "Cercle",
+"Disc": "Disque",
+"Square": "Carr\u00e9",
+"Lower Alpha": "Alpha minuscule",
+"Lower Greek": "Grec minuscule",
+"Lower Roman": "Romain minuscule",
+"Upper Alpha": "Alpha majuscule",
+"Upper Roman": "Romain majuscule",
+"Anchor...": "Ancre...",
+"Name": "Nom",
+"Id": "Id",
+"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "L'Id doit commencer par une lettre suivi par des lettres, nombres, tirets, points, deux-points ou underscores",
+"You have unsaved changes are you sure you want to navigate away?": "Vous avez des modifications non enregistr\u00e9es, \u00eates-vous s\u00fbr de quitter la page?",
+"Restore last draft": "Restaurer le dernier brouillon",
+"Special characters...": "Caract\u00e8res sp\u00e9ciaux...",
+"Source code": "Code source",
+"Insert\/Edit code sample": "Ins\u00e9rer \/ modifier une exemple de code",
+"Language": "Langue",
+"Code sample...": "Extrait de code...",
+"Color Picker": "S\u00e9lecteur de couleur",
+"R": "R",
+"G": "V",
+"B": "B",
+"Left to right": "Gauche \u00e0 droite",
+"Right to left": "Droite \u00e0 gauche",
+"Emoticons...": "\u00c9motic\u00f4nes...",
+"Metadata and Document Properties": "M\u00e9tadonn\u00e9es et propri\u00e9t\u00e9s du document",
+"Title": "Titre",
+"Keywords": "Mots-cl\u00e9s",
+"Description": "Description",
+"Robots": "Robots",
+"Author": "Auteur",
+"Encoding": "Encodage",
+"Fullscreen": "Plein \u00e9cran",
+"Action": "Action",
+"Shortcut": "Raccourci",
+"Help": "Aide",
+"Address": "Adresse",
+"Focus to menubar": "Cibler la barre de menu",
+"Focus to toolbar": "Cibler la barre d'outils",
+"Focus to element path": "Cibler le chemin vers l'\u00e9l\u00e9ment",
+"Focus to contextual toolbar": "Cibler la barre d'outils contextuelle",
+"Insert link (if link plugin activated)": "Ins\u00e9rer un lien (si le module link est activ\u00e9)",
+"Save (if save plugin activated)": "Enregistrer (si le module save est activ\u00e9)",
+"Find (if searchreplace plugin activated)": "Rechercher (si le module searchreplace est activ\u00e9)",
+"Plugins installed ({0}):": "Modules install\u00e9s ({0}) : ",
+"Premium plugins:": "Modules premium :",
+"Learn more...": "En savoir plus...",
+"You are using {0}": "Vous utilisez {0}",
+"Plugins": "Plugins",
+"Handy Shortcuts": "Raccourcis utiles",
+"Horizontal line": "Ligne horizontale",
+"Insert\/edit image": "Ins\u00e9rer\/modifier une image",
+"Image description": "Description de l'image",
+"Source": "Source",
+"Dimensions": "Dimensions",
+"Constrain proportions": "Conserver les proportions",
+"General": "G\u00e9n\u00e9ral",
+"Advanced": "Avanc\u00e9",
+"Style": "Style",
+"Vertical space": "Espacement vertical",
+"Horizontal space": "Espacement horizontal",
+"Border": "Bordure",
+"Insert image": "Ins\u00e9rer une image",
+"Image...": "Image...",
+"Image list": "Liste d'images",
+"Rotate counterclockwise": "Rotation anti-horaire",
+"Rotate clockwise": "Rotation horaire",
+"Flip vertically": "Retournement vertical",
+"Flip horizontally": "Retournement horizontal",
+"Edit image": "Modifier l'image",
+"Image options": "Options de l'image",
+"Zoom in": "Zoomer",
+"Zoom out": "D\u00e9zoomer",
+"Crop": "Rogner",
+"Resize": "Redimensionner",
+"Orientation": "Orientation",
+"Brightness": "Luminosit\u00e9",
+"Sharpen": "Affiner",
+"Contrast": "Contraste",
+"Color levels": "Niveaux de couleur",
+"Gamma": "Gamma",
+"Invert": "Inverser",
+"Apply": "Appliquer",
+"Back": "Retour",
+"Insert date\/time": "Ins\u00e9rer date\/heure",
+"Date\/time": "Date\/heure",
+"Insert\/Edit Link": "Ins\u00e9rer\/Modifier un lien",
+"Insert\/edit link": "Ins\u00e9rer\/modifier un lien",
+"Text to display": "Texte \u00e0 afficher",
+"Url": "Url",
+"Open link in...": "Ouvrir le lien dans...",
+"Current window": "Fen\u00eatre courante",
+"None": "n\/a",
+"New window": "Nouvelle fen\u00eatre",
+"Remove link": "Enlever le lien",
+"Anchors": "Ancres",
+"Link...": "Lien...",
+"Paste or type a link": "Coller ou taper un lien",
+"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre une adresse e-mail. Voulez-vous ajouter le pr\u00e9fixe mailto: n\u00e9cessaire?",
+"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "L'URL que vous avez entr\u00e9e semble \u00eatre un lien externe. Voulez-vous ajouter le pr\u00e9fixe http:\/\/ n\u00e9cessaire?",
+"Link list": "Liste de liens",
+"Insert video": "Ins\u00e9rer une vid\u00e9o",
+"Insert\/edit video": "Ins\u00e9rer\/modifier une vid\u00e9o",
+"Insert\/edit media": "Ins\u00e9rer\/modifier un m\u00e9dia",
+"Alternative source": "Source alternative",
+"Alternative source URL": "Source alternative",
+"Media poster (Image URL)": "Affiche de m\u00e9dia (URL d'image)",
+"Paste your embed code below:": "Collez votre code d'int\u00e9gration ci-dessous :",
+"Embed": "Int\u00e9grer",
+"Media...": "M\u00e9dia...",
+"Nonbreaking space": "Espace ins\u00e9cable",
+"Page break": "Saut de page",
+"Paste as text": "Coller comme texte",
+"Preview": "Pr\u00e9visualiser",
+"Print...": "Imprimer...",
+"Save": "Enregistrer",
+"Find": "Chercher",
+"Replace with": "Remplacer par",
+"Replace": "Remplacer",
+"Replace all": "Tout remplacer",
+"Previous": "Pr\u00e9c\u00e9dent",
+"Next": "Suiv",
+"Find and replace...": "Chercher et remplacer...",
+"Could not find the specified string.": "Impossible de trouver la cha\u00eene sp\u00e9cifi\u00e9e.",
+"Match case": "Respecter la casse",
+"Find whole words only": "Chercher uniquement les mots entiers",
+"Spell check": "Lancer la correction orthographique",
+"Ignore": "Ignorer",
+"Ignore all": "Tout ignorer",
+"Finish": "Finie",
+"Add to Dictionary": "Ajouter au dictionnaire",
+"Insert table": "Ins\u00e9rer un tableau",
+"Table properties": "Propri\u00e9t\u00e9s du tableau",
+"Delete table": "Supprimer le tableau",
+"Cell": "Cellule",
+"Row": "Ligne",
+"Column": "Colonne",
+"Cell properties": "Propri\u00e9t\u00e9s de la cellule",
+"Merge cells": "Fusionner les cellules",
+"Split cell": "Diviser la cellule",
+"Insert row before": "Ins\u00e9rer une ligne avant",
+"Insert row after": "Ins\u00e9rer une ligne apr\u00e8s",
+"Delete row": "Effacer la ligne",
+"Row properties": "Propri\u00e9t\u00e9s de la ligne",
+"Cut row": "Couper la ligne",
+"Copy row": "Copier la ligne",
+"Paste row before": "Coller la ligne avant",
+"Paste row after": "Coller la ligne apr\u00e8s",
+"Insert column before": "Ins\u00e9rer une colonne avant",
+"Insert column after": "Ins\u00e9rer une colonne apr\u00e8s",
+"Delete column": "Effacer la colonne",
+"Cols": "Colonnes",
+"Rows": "Lignes",
+"Width": "Largeur",
+"Height": "Hauteur",
+"Cell spacing": "Espacement inter-cellulles",
+"Cell padding": "Espacement interne cellule",
+"Show caption": "Afficher le sous-titre",
+"Left": "Gauche",
+"Center": "Centr\u00e9",
+"Right": "Droite",
+"Cell type": "Type de cellule",
+"Scope": "Etendue",
+"Alignment": "Alignement",
+"H Align": "Alignement H",
+"V Align": "Alignement V",
+"Top": "Haut",
+"Middle": "Milieu",
+"Bottom": "Bas",
+"Header cell": "Cellule d'en-t\u00eate",
+"Row group": "Groupe de lignes",
+"Column group": "Groupe de colonnes",
+"Row type": "Type de ligne",
+"Header": "En-t\u00eate",
+"Body": "Corps",
+"Footer": "Pied",
+"Border color": "Couleur de la bordure",
+"Insert template...": "Ins\u00e9rer un mod\u00e8le...",
+"Templates": "Th\u00e8mes",
+"Template": "Mod\u00e8le",
+"Text color": "Couleur du texte",
+"Background color": "Couleur d'arri\u00e8re-plan",
+"Custom...": "Personnalis\u00e9...",
+"Custom color": "Couleur personnalis\u00e9e",
+"No color": "Aucune couleur",
+"Remove color": "Supprimer la couleur",
+"Table of Contents": "Table des mati\u00e8res",
+"Show blocks": "Afficher les blocs",
+"Show invisible characters": "Afficher les caract\u00e8res invisibles",
+"Word count": "Nombre de mots",
+"Words: {0}": "Mots : {0}",
+"{0} words": "{0} mots",
+"File": "Fichier",
+"Edit": "Editer",
+"Insert": "Ins\u00e9rer",
+"View": "Voir",
+"Format": "Format",
+"Table": "Tableau",
+"Tools": "Outils",
+"Powered by {0}": "Propuls\u00e9 par {0}",
+"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "Zone Texte Riche. Appuyer sur ALT-F9 pour le menu. Appuyer sur ALT-F10 pour la barre d'outils. Appuyer sur ALT-0 pour de l'aide.",
+"Image title": "Titre d'image",
+"Border width": "\u00c9paisseur de la bordure",
+"Border style": "Style de la bordure",
+"Error": "\u00c9rreur",
+"Warn": "Avertissement",
+"Valid": "Valide",
+"To open the popup, press Shift+Enter": "Pour ouvrir la popup, presser Shift+Entr\u00e9e",
+"Rich Text Area. Press ALT-0 for help.": "Zone de texte riche. Presser ALT-0 pour l'aide.",
+"System Font": "Police syst\u00e8me",
+"Failed to upload image: {0}": "\u00c9chec d'envoi de l'image : {0}",
+"Failed to load plugin: {0} from url {1}": "\u00c9chec de chargement du module : {0} \u00e0 partir de l'URL {1}",
+"Failed to load plugin url: {0}": "\u00c9chec de chargement de l'URL de module : {0}",
+"Failed to initialize plugin: {0}": "\u00c9chec d'initialisation du module : {0}",
+"example": "exemple",
+"Search": "Rechercher",
+"All": "Tous",
+"Currency": "Mon\u00e9taire",
+"Text": "Texte",
+"Quotations": "Citations",
+"Mathematical": "Math\u00e9matique",
+"Extended Latin": "Latin \u00e9tendu",
+"Symbols": "Symboles",
+"Arrows": "Fl\u00e8ches",
+"User Defined": "D\u00e9fini par l'utilisateur",
+"dollar sign": "Symbole dollar",
+"currency sign": "Symbole devise",
+"euro-currency sign": "Symbole euro",
+"colon sign": "Symbole col\u00f3n",
+"cruzeiro sign": "Symbole cruzeiro",
+"french franc sign": "Symbole franc fran\u00e7ais",
+"lira sign": "Symbole lire",
+"mill sign": "Symbole milli\u00e8me",
+"naira sign": "Symbole naira",
+"peseta sign": "Symbole peseta",
+"rupee sign": "Symbole roupie",
+"won sign": "Symbole won",
+"new sheqel sign": "Symbole nouveau ch\u00e9kel",
+"dong sign": "Symbole dong",
+"kip sign": "Symbole kip",
+"tugrik sign": "Symbole tougrik",
+"drachma sign": "Symbole drachme",
+"german penny symbol": "Symbole pfennig",
+"peso sign": "Symbole peso",
+"guarani sign": "Symbole guarani",
+"austral sign": "Symbole austral",
+"hryvnia sign": "Symbole hryvnia",
+"cedi sign": "Symbole cedi",
+"livre tournois sign": "Symbole livre tournois",
+"spesmilo sign": "Symbole spesmilo",
+"tenge sign": "Symbole tenge",
+"indian rupee sign": "Symbole roupie indienne",
+"turkish lira sign": "Symbole lire turque",
+"nordic mark sign": "Symbole du mark nordique",
+"manat sign": "Symbole manat",
+"ruble sign": "Symbole rouble",
+"yen character": "Sinogramme Yen",
+"yuan character": "Sinogramme Yuan",
+"yuan character, in hong kong and taiwan": "Sinogramme Yuan, Hong Kong et Taiwan",
+"yen\/yuan character variant one": "Symbole Yen\/Yuan",
+"Loading emoticons...": "Chargement des \u00e9motic\u00f4nes...",
+"Could not load emoticons": "\u00c9chec de chargement des \u00e9motic\u00f4nes",
+"People": "Smileys et personnes",
+"Animals and Nature": "Animaux & nature",
+"Food and Drink": "Nourriture & boisson",
+"Activity": "Activit\u00e9",
+"Travel and Places": "Voyages & lieux",
+"Objects": "Objets",
+"Flags": "Drapeaux",
+"Characters": "Caract\u00e8res",
+"Characters (no spaces)": "Caract\u00e8res (espaces non compris)",
+"Error: Form submit field collision.": "Erreur : conflit de champ lors de la soumission du formulaire",
+"Error: No form element found.": "Erreur : aucun \u00e9l\u00e9ment de formulaire trouv\u00e9.",
+"Update": "Mettre \u00e0 jour",
+"Color swatch": "Palette de couleurs",
+"Turquoise": "Turquoise",
+"Green": "Vert",
+"Blue": "Bleu",
+"Purple": "Violet",
+"Navy Blue": "Bleu oc\u00e9an",
+"Dark Turquoise": "Turquoise fonc\u00e9",
+"Dark Green": "Vert fonc\u00e9",
+"Medium Blue": "Bleu moyen",
+"Medium Purple": "Violet moyen",
+"Midnight Blue": "Bleu nuit",
+"Yellow": "Jaune",
+"Orange": "Orange",
+"Red": "Rouge",
+"Light Gray": "Gris clair",
+"Gray": "Gris",
+"Dark Yellow": "Jaune fonc\u00e9",
+"Dark Orange": "Orange fonc\u00e9",
+"Dark Red": "Rouge fonc\u00e9",
+"Medium Gray": "Gris moyen",
+"Dark Gray": "Gris fonc\u00e9",
+"Black": "Noir",
+"White": "Blanc",
+"Switch to or from fullscreen mode": "Activer ou quitter le mode plein \u00e9cran",
+"Open help dialog": "Ouvrir l'aide",
+"history": "historique",
+"styles": "styles",
+"formatting": "mise en forme",
+"alignment": "alignement",
+"indentation": "indentation",
+"permanent pen": "crayon ind\u00e9l\u00e9bile",
+"comments": "commentaires",
+"Anchor": "Ancre",
+"Special character": "Caract\u00e8res sp\u00e9ciaux",
+"Code sample": "Extrait de code",
+"Color": "Couleur",
+"Emoticons": "Emotic\u00f4nes",
+"Document properties": "Propri\u00e9t\u00e9 du document",
+"Image": "Image",
+"Insert link": "Ins\u00e9rer un lien",
+"Target": "Cible",
+"Link": "Lien",
+"Poster": "Publier",
+"Media": "M\u00e9dia",
+"Print": "Imprimer",
+"Prev": "Pr\u00e9c ",
+"Find and replace": "Trouver et remplacer",
+"Whole words": "Mots entiers",
+"Spellcheck": "V\u00e9rification orthographique",
+"Caption": "Titre",
+"Insert template": "Ajouter un th\u00e8me"
+});
+(function() {
+  $(document).on('turbolinks:load', function() {
+    if (!Modernizr.testAllProps('forceBrokenImageIcon')) {
+      $('img.favicon').one('error', function() {
+        return $(this).css({
+          visibility: 'hidden'
+        });
+      });
+    }
+    return $('.field.tags input').tagsInput({
+      delimiter: ' ',
+      defaultText: '',
+      autocomplete_url: '/tags.json',
+      onChange: function() {
+        var value;
+        value = $(this).val();
+        if (value.indexOf(',') >= 0) {
+          return $(this).val(value.replace(/,/, ''));
+        }
+      }
+    });
+  });
+
+}).call(this);
diff --git a/public/assets/application-624ae947c8848388100e86fec4ac512e8e9403f71d7379bce24cf09d1d30d045.js.gz b/public/assets/application-624ae947c8848388100e86fec4ac512e8e9403f71d7379bce24cf09d1d30d045.js.gz
new file mode 100644
index 0000000000000000000000000000000000000000..32506e2abb1d982f5ca9f8fac3d7d9917df54aa7
GIT binary patch
literal 454170
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

literal 0
HcmV?d00001

diff --git a/public/assets/application-d3eba8d4a824164102e32919820a084700da079ea05453cd44d3a26d6899e7da.css b/public/assets/application-d3eba8d4a824164102e32919820a084700da079ea05453cd44d3a26d6899e7da.css
new file mode 100644
index 000000000..f27b1162c
--- /dev/null
+++ b/public/assets/application-d3eba8d4a824164102e32919820a084700da079ea05453cd44d3a26d6899e7da.css
@@ -0,0 +1,31 @@
+/*!
+ * jQuery UI CSS Framework 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/category/theming/
+ */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default !important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}/*!
+ * jQuery UI Autocomplete 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/autocomplete/#theming
+ */.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}/*!
+ * jQuery UI Menu 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/menu/#theming
+ */.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}div.tagsinput{border:1px solid #CCC;background:#FFF;padding:5px;width:300px;height:100px;overflow-y:auto}div.tagsinput span.tag{border:1px solid #a5d24a;-moz-border-radius:2px;-webkit-border-radius:2px;display:block;float:left;padding:5px;text-decoration:none;background:#cde69c;color:#638421;margin-right:5px;margin-bottom:5px;font-family:helvetica;font-size:13px}div.tagsinput span.tag a{font-weight:bold;color:#82ad2b;text-decoration:none;font-size:11px}div.tagsinput input{width:80px;margin:0px;font-family:helvetica;font-size:13px;border:1px solid transparent;padding:5px;background:transparent;color:#000;outline:0px;margin-right:5px;margin-bottom:5px}div.tagsinput div{display:block;float:left}.tags_clear{clear:both;width:100%;height:0px}.not_valid{background:#FBD8DB !important;color:#90111A !important}/*!
+ * Font Awesome Free 5.8.1 by @fontawesome - https://fontawesome.com
+ * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
+ */@font-face{font-family:'Font Awesome 5 Free';font-style:normal;font-weight:900;src:url("/assets/font-awesome/fa-solid-900-e153efe317e731e59eb8d6d1a568a811b8f7dd5df3823c327103be8e4a0047e4.eot");src:url("/assets/font-awesome/fa-solid-900-e153efe317e731e59eb8d6d1a568a811b8f7dd5df3823c327103be8e4a0047e4.eot#iefix") format("embedded-opentype"),url("/assets/font-awesome/fa-solid-900-f18c486a80175cf02fee0e05c2b4acd86c04cdbaecec61c1ef91f920509b5efe.woff2") format("woff2"),url("/assets/font-awesome/fa-solid-900-20464aebbff54cc17776497ce4112c3374a54b38f7ba5f58eec12174149d6742.woff") format("woff"),url("/assets/font-awesome/fa-solid-900-7a58f741ff539af94798ff561c918e5841d7e6164e90cbe57befdec4a16f6a4e.ttf") format("truetype"),url("/assets/font-awesome/fa-solid-900-d5b212510d72b66bdb7feb22c611456621c3dd1a2e88cc42983d7d4c9ab79563.svg#fontawesome") format("svg")}@font-face{font-family:'Font Awesome 5 Free';font-style:normal;font-weight:400;src:url("/assets/font-awesome/fa-regular-400-4aa44a07b71f47067872c8f177f31babc0c609af2b384511353c89b1ca804458.eot");src:url("/assets/font-awesome/fa-regular-400-4aa44a07b71f47067872c8f177f31babc0c609af2b384511353c89b1ca804458.eot#iefix") format("embedded-opentype"),url("/assets/font-awesome/fa-regular-400-ccf4db1eeb68c96e05e74f8ebfa75cc60c3a0fed862dae6b0ad85d4e1b5b4e4f.woff2") format("woff2"),url("/assets/font-awesome/fa-regular-400-2835b63ffc892d01aac2cc346969b501c845d9184f738589779ec176937e1f33.woff") format("woff"),url("/assets/font-awesome/fa-regular-400-112491dccca97bf50ec7adff8d430dcba6d0b71e0a0b20386f814f3bf5bb94b5.ttf") format("truetype"),url("/assets/font-awesome/fa-regular-400-934530d864b6f03fad8e87b66daf829d17f0e7afbd74baead32a6a4157d584c2.svg#fontawesome") format("svg")}@font-face{font-family:'Font Awesome 5 Brands';font-style:normal;font-weight:normal;src:url("/assets/font-awesome/fa-brands-400-bd4e21d8e25a889e979ac2367770c36863443b8e0f99feeaee09a62625b9cb13.eot");src:url("/assets/font-awesome/fa-brands-400-bd4e21d8e25a889e979ac2367770c36863443b8e0f99feeaee09a62625b9cb13.eot#iefix") format("embedded-opentype"),url("/assets/font-awesome/fa-brands-400-dc64d7192f84497cacad5c10aef682562c24aa6124270f85fe247e223607f3ed.woff2") format("woff2"),url("/assets/font-awesome/fa-brands-400-17ce8b9d612897d1fefd5cd2096dbd83b82d05dd5d1f60421aca15c4ce2445ac.woff") format("woff"),url("/assets/font-awesome/fa-brands-400-70726f98e0d98f543d5fde05a3a74bb131c5c67f5fbffcf4d41b7f68bca2b56b.ttf") format("truetype"),url("/assets/font-awesome/fa-brands-400-e281f2a25598bf8b40a77f3c5228b51900788224e91dade3f4a0f8c383505f43.svg#fontawesome") format("svg")}.fa,.field>label:before,.field .field_with_errors>label:before,.field th:before,.field th a:before,.list>label:before,.list .field_with_errors>label:before,.list th:before,.list th a:before,dl>label:before,dl .field_with_errors>label:before,dl th:before,dl th a:before,.fas{font-family:'Font Awesome 5 Free';font-weight:900}.far{font-family:'Font Awesome 5 Free';font-weight:400}.fab{font-family:'Font Awesome 5 Brands'}.fa,.field>label:before,.field .field_with_errors>label:before,.field th:before,.field th a:before,.list>label:before,.list .field_with_errors>label:before,.list th:before,.list th a:before,dl>label:before,dl .field_with_errors>label:before,dl th:before,dl th a:before,.fas,.far,.fal,.fab{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:0.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-left:2.5em;padding-left:0}.fa-ul>li{position:relative}.fa-li{left:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:solid 0.08em #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left,.field>label.fa-pull-left:before,.field .field_with_errors>label.fa-pull-left:before,.field th.fa-pull-left:before,.field th a.fa-pull-left:before,.list>label.fa-pull-left:before,.list .field_with_errors>label.fa-pull-left:before,.list th.fa-pull-left:before,.list th a.fa-pull-left:before,dl>label.fa-pull-left:before,dl .field_with_errors>label.fa-pull-left:before,dl th.fa-pull-left:before,dl th a.fa-pull-left:before,.fas.fa-pull-left,.far.fa-pull-left,.fal.fa-pull-left,.fab.fa-pull-left{margin-right:.3em}.fa.fa-pull-right,.field>label.fa-pull-right:before,.field .field_with_errors>label.fa-pull-right:before,.field th.fa-pull-right:before,.field th a.fa-pull-right:before,.list>label.fa-pull-right:before,.list .field_with_errors>label.fa-pull-right:before,.list th.fa-pull-right:before,.list th a.fa-pull-right:before,dl>label.fa-pull-right:before,dl .field_with_errors>label.fa-pull-right:before,dl th.fa-pull-right:before,dl th a.fa-pull-right:before,.fas.fa-pull-right,.far.fa-pull-right,.fal.fa-pull-right,.fab.fa-pull-right{margin-left:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(1, -1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";transform:scale(-1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-flip-both{filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{left:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adobe:before{content:"\f778"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-airbnb:before{content:"\f834"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-artstation:before{content:"\f77a"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atlassian:before{content:"\f77b"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-baby:before{content:"\f77c"}.fa-baby-carriage:before{content:"\f77d"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-bacon:before{content:"\f7e5"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-battle-net:before{content:"\f835"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-biohazard:before{content:"\f780"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blog:before{content:"\f781"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-medical:before{content:"\f7e6"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bootstrap:before{content:"\f836"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-bread-slice:before{content:"\f7ec"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-buffer:before{content:"\f837"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-day:before{content:"\f783"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-calendar-week:before{content:"\f784"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-canadian-maple-leaf:before{content:"\f785"}.fa-candy-cane:before{content:"\f786"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-carrot:before{content:"\f787"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cash-register:before{content:"\f788"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-centos:before{content:"\f789"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-cheese:before{content:"\f7ef"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-chromecast:before{content:"\f838"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clinic-medical:before{content:"\f7f2"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-medical:before{content:"\f7f5"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-compress-arrows-alt:before{content:"\f78c"}.fa-concierge-bell:before{content:"\f562"}.fa-confluence:before{content:"\f78d"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-crutch:before{content:"\f7f7"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-dhl:before{content:"\f790"}.fa-diagnoses:before{content:"\f470"}.fa-diaspora:before{content:"\f791"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dumpster:before{content:"\f793"}.fa-dumpster-fire:before{content:"\f794"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-egg:before{content:"\f7fb"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-ethernet:before{content:"\f796"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-evernote:before{content:"\f839"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-fedex:before{content:"\f797"}.fa-fedora:before{content:"\f798"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-figma:before{content:"\f799"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-alt:before{content:"\f7e4"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-gifts:before{content:"\f79c"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-cheers:before{content:"\f79f"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glass-whiskey:before{content:"\f7a0"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-globe-europe:before{content:"\f7a2"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-lines:before{content:"\f7a4"}.fa-grip-lines-vertical:before{content:"\f7a5"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-guitar:before{content:"\f7a6"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hamburger:before{content:"\f805"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-middle-finger:before{content:"\f806"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hard-hat:before{content:"\f807"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heart-broken:before{content:"\f7a9"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-holly-berry:before{content:"\f7aa"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-horse-head:before{content:"\f7ab"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotdog:before{content:"\f80f"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-ice-cream:before{content:"\f810"}.fa-icicles:before{content:"\f7ad"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-igloo:before{content:"\f7ae"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-intercom:before{content:"\f7af"}.fa-internet-explorer:before{content:"\f26b"}.fa-invision:before{content:"\f7b0"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itch-io:before{content:"\f83a"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-jira:before{content:"\f7b1"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laptop-medical:before{content:"\f812"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-mendeley:before{content:"\f7b3"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mitten:before{content:"\f7b5"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-mug-hot:before{content:"\f7b6"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-pager:before{content:"\f815"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-pepper-hot:before{content:"\f816"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-pizza-slice:before{content:"\f818"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-radiation:before{content:"\f7b9"}.fa-radiation-alt:before{content:"\f7ba"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-raspberry-pi:before{content:"\f7bb"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redhat:before{content:"\f7bc"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-restroom:before{content:"\f7bd"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-salesforce:before{content:"\f83b"}.fa-sass:before{content:"\f41e"}.fa-satellite:before{content:"\f7bf"}.fa-satellite-dish:before{content:"\f7c0"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-sd-card:before{content:"\f7c2"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-sim-card:before{content:"\f7c4"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skating:before{content:"\f7c5"}.fa-sketch:before{content:"\f7c6"}.fa-skiing:before{content:"\f7c9"}.fa-skiing-nordic:before{content:"\f7ca"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sleigh:before{content:"\f7cc"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-sms:before{content:"\f7cd"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowboarding:before{content:"\f7ce"}.fa-snowflake:before{content:"\f2dc"}.fa-snowman:before{content:"\f7d0"}.fa-snowplow:before{content:"\f7d2"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-sourcetree:before{content:"\f7d3"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-speaker-deck:before{content:"\f83c"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-suse:before{content:"\f7d6"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-symfony:before{content:"\f83d"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-tenge:before{content:"\f7d7"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet:before{content:"\f7d8"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tools:before{content:"\f7d9"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-tram:before{content:"\f7da"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-trash-restore:before{content:"\f829"}.fa-trash-restore-alt:before{content:"\f82a"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-ubuntu:before{content:"\f7df"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-ups:before{content:"\f7e0"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-nurse:before{content:"\f82f"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-usps:before{content:"\f7e1"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-wave-square:before{content:"\f83e"}.fa-waze:before{content:"\f83f"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yammer:before{content:"\f840"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yarn:before{content:"\f7e3"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0, 0, 0, 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}.flag-icon-background,.flag-icon{background-size:contain;background-position:50%;background-repeat:no-repeat}.flag-icon{position:relative;display:inline-block;width:1.33333em;line-height:1em}.flag-icon:before{content:'\00a0'}.flag-icon.flag-icon-squared{width:1em}.flag-icon-ad{background-image:url(/assets/flags/4x3/ad-f67c4e5a3f709ead53c04d9ff35614e6c67517c3d3289170f7a317390f661497.svg)}.flag-icon-ad.flag-icon-squared{background-image:url(/assets/flags/1x1/ad-a315836ec2c9dcc11ef9bfd8b18aa7ccfc2d31435cbf46a2c31930836076e09c.svg)}.flag-icon-ae{background-image:url(/assets/flags/4x3/ae-7a3b3dc0f50b5310014cfbcc8200a5f1ce568127bf43452e40e8158e0cff2d2e.svg)}.flag-icon-ae.flag-icon-squared{background-image:url(/assets/flags/1x1/ae-bcdd9a4da09598785f3e31db4ff431e22687b2ead18209a3e615600655068cd5.svg)}.flag-icon-af{background-image:url(/assets/flags/4x3/af-01601b521fa86582e32c39eed8c88480afec1f801b6de929b52ed7e49da47260.svg)}.flag-icon-af.flag-icon-squared{background-image:url(/assets/flags/1x1/af-6332cf754a5e2866db631923e1f7cfc52a0a554d32b97bcf19f8263819e4ca7d.svg)}.flag-icon-ag{background-image:url(/assets/flags/4x3/ag-cb6952d821bac7855231c2cb4d1c44f7c730f6b3621518ab20f30d2b9afe604b.svg)}.flag-icon-ag.flag-icon-squared{background-image:url(/assets/flags/1x1/ag-14f7d9978487aaf4446b55167e85a711c48a13ff07edac175c172969a38650c4.svg)}.flag-icon-ai{background-image:url(/assets/flags/4x3/ai-f07c6cc0646fdfa441b9a506e1d46e8dce0d97b37222292e9c6733c995dc89bc.svg)}.flag-icon-ai.flag-icon-squared{background-image:url(/assets/flags/1x1/ai-95099e544de29bcea3ba735de535823f2e19aeb4043e82dbc1d9862f9262b810.svg)}.flag-icon-al{background-image:url(/assets/flags/4x3/al-9b997f2720de861e1b0ccec8ddf42a2890795ebf50817f9223e1ceba712c9b03.svg)}.flag-icon-al.flag-icon-squared{background-image:url(/assets/flags/1x1/al-94852d2711fc23abf3423534b9edb950a0c6aabf1d2d98bf2643f3c7dadfac09.svg)}.flag-icon-am{background-image:url(/assets/flags/4x3/am-85a199ec21d1af74a256335ead0c1e38592bb603d8da81feda4678945e9e00e6.svg)}.flag-icon-am.flag-icon-squared{background-image:url(/assets/flags/1x1/am-869391b014ac299924d30777d72a4aba430752177290a90a1fc3255a7ad79ee7.svg)}.flag-icon-ao{background-image:url(/assets/flags/4x3/ao-29224a61bf632826d530cda55d87c2615884bd2c2c3a322036ed468e34d85c75.svg)}.flag-icon-ao.flag-icon-squared{background-image:url(/assets/flags/1x1/ao-048eacbc862fe1868cf0ec73457b70a8b49a598c80dea049856f0e1fd6fec83e.svg)}.flag-icon-aq{background-image:url(/assets/flags/4x3/aq-b401a776d2f1a7944170114f0aeeceab5e1d962df3de7ed1eff47d96824b73fd.svg)}.flag-icon-aq.flag-icon-squared{background-image:url(/assets/flags/1x1/aq-a8d7ce9bfb860b6e2b58608b50bf2cafc5220c77f6d049ab7770891f64334531.svg)}.flag-icon-ar{background-image:url(/assets/flags/4x3/ar-bf73475bb707100874dec538ce4b7e1b5afc4ed67dc50a8a800ee519e51cc826.svg)}.flag-icon-ar.flag-icon-squared{background-image:url(/assets/flags/1x1/ar-fc6582cc6d3ef0782805d8497ee77ab2d836c53422e91007e48f81a4a9fa2e60.svg)}.flag-icon-as{background-image:url(/assets/flags/4x3/as-79d395190345206ea03475b67b44638e1111562411504b60646483c9c0b0f7d1.svg)}.flag-icon-as.flag-icon-squared{background-image:url(/assets/flags/1x1/as-04f0db77c5d8610a55c69508b226a7c338924f8cf7d6577d5d6590e85ee57183.svg)}.flag-icon-at{background-image:url(/assets/flags/4x3/at-3d197de8f1f0096a2b0d440b6fc7d80821585a6637e646c05487a87718bf6b5f.svg)}.flag-icon-at.flag-icon-squared{background-image:url(/assets/flags/1x1/at-ec4db9aeac793827ac7c8e40c072a76f7675010058cc8c8dfd3a86bb5acfa6b8.svg)}.flag-icon-au{background-image:url(/assets/flags/4x3/au-126fa2500a315287a5f847f4d958bb929f11da9b39f35912cc440c0fcffb8b12.svg)}.flag-icon-au.flag-icon-squared{background-image:url(/assets/flags/1x1/au-bf990dcc957c9f74eb908e8ffa733f1731277bf6ec8b7301a6ea1ed92b59cc4b.svg)}.flag-icon-aw{background-image:url(/assets/flags/4x3/aw-4524643452423e95f3b0dbe6216b059a9e52126b34c73ae4b3c17b682f893aa6.svg)}.flag-icon-aw.flag-icon-squared{background-image:url(/assets/flags/1x1/aw-f7002bceef55486a442bf6bf433be0c60d0b15b2aa548b81c524c67ccf0565a8.svg)}.flag-icon-ax{background-image:url(/assets/flags/4x3/ax-c297e0eb654ca62e58f5eb3abb70df9f245e4919490f29bd0f1d49c4fe052d90.svg)}.flag-icon-ax.flag-icon-squared{background-image:url(/assets/flags/1x1/ax-a1245689ecbf321c0a9e556bba17f3c9f2aeb8b1f63d14fcb591d76a87f12880.svg)}.flag-icon-az{background-image:url(/assets/flags/4x3/az-132e68d5e0386d3b9fa05b4288a0fd66f1414e2bc7af6b9d437b6935a7dfa00c.svg)}.flag-icon-az.flag-icon-squared{background-image:url(/assets/flags/1x1/az-3990c0526b933bd650285d821f2b93e432a73ba709869549b8ef75b051d3bd2d.svg)}.flag-icon-ba{background-image:url(/assets/flags/4x3/ba-89dd0c1600d94741de7d667a487310193a0c48c4cf1a5159c3bf9dd37d65d2b5.svg)}.flag-icon-ba.flag-icon-squared{background-image:url(/assets/flags/1x1/ba-2dbe90eb12b937f4a9ae8db95760930a3e318f4ce5829ac05e292ead698bae5a.svg)}.flag-icon-bb{background-image:url(/assets/flags/4x3/bb-16f8249ff958bfbc18fb1f23a5282000347bffdb5769ac620966185b1dcb57f6.svg)}.flag-icon-bb.flag-icon-squared{background-image:url(/assets/flags/1x1/bb-fae92d8426196ae24ffa561aca72613fae651a5e9c0bcda63ecc877add05b060.svg)}.flag-icon-bd{background-image:url(/assets/flags/4x3/bd-8dac0547e73ee25a04148a3f0fd026a90e56c23b7e92921565d4263050ba77a6.svg)}.flag-icon-bd.flag-icon-squared{background-image:url(/assets/flags/1x1/bd-ecc3c3e87d4cc59c8350f2b4d7dca8f5cf46bdb26319db0ee80b744482af50c1.svg)}.flag-icon-be{background-image:url(/assets/flags/4x3/be-a180ca68521188017bb5367f19e503d9599d6cbecd61bf054e59a57f58e648ae.svg)}.flag-icon-be.flag-icon-squared{background-image:url(/assets/flags/1x1/be-c8d4194137bd01955285b329dfdf996490d16c3116a92ce2f322e354b6d7494e.svg)}.flag-icon-bf{background-image:url(/assets/flags/4x3/bf-6b214936ef89f19133d4a84e99cdf0cfdb99d6409f2f373f6d18694423013313.svg)}.flag-icon-bf.flag-icon-squared{background-image:url(/assets/flags/1x1/bf-04c7d61aa314adab5a41bd79d77aa780c10136bb6b8f4c62423e61e23e3851ee.svg)}.flag-icon-bg{background-image:url(/assets/flags/4x3/bg-dd3985ba746942b0e65bc52a280cc4d28fb24fd2c7d9e22ac9afd2d75ee7bfc4.svg)}.flag-icon-bg.flag-icon-squared{background-image:url(/assets/flags/1x1/bg-f59294a736d5bdc0f102b58d70dbe45d02bd92df822820bf95336840f75a0746.svg)}.flag-icon-bh{background-image:url(/assets/flags/4x3/bh-7c82c4a6ba963172c6c1b4423f39a0ebe9c999449cc7dd87018917943db4735c.svg)}.flag-icon-bh.flag-icon-squared{background-image:url(/assets/flags/1x1/bh-6893aac3e55c6480e9dac0c023ec2179f6c12a0da82a0bc2717134384c097e88.svg)}.flag-icon-bi{background-image:url(/assets/flags/4x3/bi-4fcd0116f7f93c0564c6955806f3c3563d0ea7334ae406f29a897255845c923c.svg)}.flag-icon-bi.flag-icon-squared{background-image:url(/assets/flags/1x1/bi-91c34eb431b26be67852782a0b93e1d7d577a925454d6c8cea00a0d872d2de8a.svg)}.flag-icon-bj{background-image:url(/assets/flags/4x3/bj-63bddb4268f5f8c2ed867041bcf058fb18fcd9d1e0799e01286fca2d5e961c7f.svg)}.flag-icon-bj.flag-icon-squared{background-image:url(/assets/flags/1x1/bj-e2606c5a8498c474a6b6708626b88108fcb73840344766566dc56f804279cdfc.svg)}.flag-icon-bl{background-image:url(/assets/flags/4x3/bl-824a7265f48789d5e1ad5c5b0042a13a7d2d4357210e5bd8124fca19931e8c74.svg)}.flag-icon-bl.flag-icon-squared{background-image:url(/assets/flags/1x1/bl-ba6a7881b0ca72ac57aee4d823ae611ab4ad24a938ee9e01a7a4d5ae04cfccf6.svg)}.flag-icon-bm{background-image:url(/assets/flags/4x3/bm-2e2f09e5a4edf4b18afff581656f50b0b4c37783db29591ff00ca768f7f755bc.svg)}.flag-icon-bm.flag-icon-squared{background-image:url(/assets/flags/1x1/bm-f553f953f8784ea4d67a5197f5d808a67747eb8a1cb56990d6838e690090d2d6.svg)}.flag-icon-bn{background-image:url(/assets/flags/4x3/bn-bcf9967c12eb6397346cb5b960ae92efa41f314f780d09a3d7c81f5dacac4180.svg)}.flag-icon-bn.flag-icon-squared{background-image:url(/assets/flags/1x1/bn-1d1aad3fe9fd33ce922eba33c9ae6047a5646349239c20d1bc7307ec6d19a043.svg)}.flag-icon-bo{background-image:url(/assets/flags/4x3/bo-fa423f2bb4ab6e8e9dd399ad73781ea8d9cbafd30f1b7ee0bcecfb9e7b75581e.svg)}.flag-icon-bo.flag-icon-squared{background-image:url(/assets/flags/1x1/bo-f5faa29e40191e0c76070ac1a1d2a1f2b18e9cd358b8a77cefaed8efc49a265e.svg)}.flag-icon-bq{background-image:url(/assets/flags/4x3/bq-493c92ab19204c3ad319e6caba021df050132b99bd57a8f9b74131b78229c29e.svg)}.flag-icon-bq.flag-icon-squared{background-image:url(/assets/flags/1x1/bq-6e30bbeabc2aa097f657a411984b3c23278a8fcce2fc016b1cd6d2262f672d33.svg)}.flag-icon-br{background-image:url(/assets/flags/4x3/br-cf3ba80ec2c9fd4d3c845c3a3c43a2b9d81cf90707a2918789e8b1f596833e01.svg)}.flag-icon-br.flag-icon-squared{background-image:url(/assets/flags/1x1/br-7bf4e4b31650ac25f0bc6c86eb87491a7e5a8eac13acccfcbde44346c88728f6.svg)}.flag-icon-bs{background-image:url(/assets/flags/4x3/bs-69f60b5fea96b67dd939e597099994921bb3dc3bcf31b8dee7cc45be2885c836.svg)}.flag-icon-bs.flag-icon-squared{background-image:url(/assets/flags/1x1/bs-f5d6acf7ef7a240dc09ac88710fd77fd3494501104392db74d5c540d482f2262.svg)}.flag-icon-bt{background-image:url(/assets/flags/4x3/bt-6c20b0c00e12d5898be0239a0c66ce775debd0bd536de56a271859a0285a039e.svg)}.flag-icon-bt.flag-icon-squared{background-image:url(/assets/flags/1x1/bt-58de3ca9438811ef1920e2f84c4ba4ce32d01069f4d197ab5d577de6acbe0c85.svg)}.flag-icon-bv{background-image:url(/assets/flags/4x3/bv-ff173190fc339b3cb8b6e8235bc5e373853d7127fd94cbc32ac737e839aeb586.svg)}.flag-icon-bv.flag-icon-squared{background-image:url(/assets/flags/1x1/bv-59616ff1a722959064c83927ca2e49c1fce42a9b18e91b9ecbb74f62527aff43.svg)}.flag-icon-bw{background-image:url(/assets/flags/4x3/bw-4bb1d3131b88c65b5decc67f7b44903e931bca2fcac841942591c599f0cbb850.svg)}.flag-icon-bw.flag-icon-squared{background-image:url(/assets/flags/1x1/bw-e08f50c0836ca5858aed7b0526aed6fb630da8dc6b6b96bd9a476af599dc89d6.svg)}.flag-icon-by{background-image:url(/assets/flags/4x3/by-324ac96bfbe075781c664be3b9e2ac6b4d2a46dd2b418ca0920284f64394c7d4.svg)}.flag-icon-by.flag-icon-squared{background-image:url(/assets/flags/1x1/by-37b80e8bf7e51fef99a8307d6dffb04ee164790ceeafef606d516ca333e9488a.svg)}.flag-icon-bz{background-image:url(/assets/flags/4x3/bz-156fdc45f8c15c9520a1ea9fc0f395f294f02077408ea1938c222a37cfbb7f1d.svg)}.flag-icon-bz.flag-icon-squared{background-image:url(/assets/flags/1x1/bz-24577d4e7b29b33ab3b1d37914c8479889baa7e8c8399c6d1c99faed31ab053a.svg)}.flag-icon-ca{background-image:url(/assets/flags/4x3/ca-0d57cab46d5dbb0012a5e4ae0a9efee3baee90d5d157950a6c5d67edf2daa58f.svg)}.flag-icon-ca.flag-icon-squared{background-image:url(/assets/flags/1x1/ca-192a6fb0544e5a6f33a32149d62f1e7ac0a1d61c5c5afa57f3a42346ca8e8c90.svg)}.flag-icon-cc{background-image:url(/assets/flags/4x3/cc-a35f2a9e10a28d6918ced65e0623b03bb2fbf1f20670b581bc0a409d33b4e843.svg)}.flag-icon-cc.flag-icon-squared{background-image:url(/assets/flags/1x1/cc-d2025eefc9d30f724f3fcd95c0fd9f7938930ecb01af7e0cd6ee6553d7358eb6.svg)}.flag-icon-cd{background-image:url(/assets/flags/4x3/cd-5d2127c991b30522ae0a29d05facbc88728c050d7e333a60d614af1545459c5c.svg)}.flag-icon-cd.flag-icon-squared{background-image:url(/assets/flags/1x1/cd-59dacf424d1c8c779db66c5b7f2a93a3c8f14976c2975ccfb07639676a1602e3.svg)}.flag-icon-cf{background-image:url(/assets/flags/4x3/cf-ac0aaffba354d848eba2501a402ee81dc96a56ad0acd3741ec9905e76c372e1e.svg)}.flag-icon-cf.flag-icon-squared{background-image:url(/assets/flags/1x1/cf-e637674faf7edcdad37182192d038448c157421ab0c69377d9b8e56ab2c0249d.svg)}.flag-icon-cg{background-image:url(/assets/flags/4x3/cg-3729f717c83c9df7d0543a1a5d4a506efe184bdfeb39f9260b4b63edf19d2538.svg)}.flag-icon-cg.flag-icon-squared{background-image:url(/assets/flags/1x1/cg-8353ff1f251714b1b8905eec1722378426719955d0637d206d35d1dcfa68ddcf.svg)}.flag-icon-ch{background-image:url(/assets/flags/4x3/ch-6739edee6d1ef72c4ed97cfe723d3bb7f17e4df5390f3a4ae234f1ffdeece0cf.svg)}.flag-icon-ch.flag-icon-squared{background-image:url(/assets/flags/1x1/ch-7c3dec465228981c57a90a3a7b3a6c42dd3e699230663e770b55008ce6d14208.svg)}.flag-icon-ci{background-image:url(/assets/flags/4x3/ci-3e076d13c9524149508c442f8f727424660124e3591280d8ae9bddf9d8272a1e.svg)}.flag-icon-ci.flag-icon-squared{background-image:url(/assets/flags/1x1/ci-691a0a8577b7d555fc90dc7170adc9ec7571191cb3507c46c0e8516fd1778a91.svg)}.flag-icon-ck{background-image:url(/assets/flags/4x3/ck-9cff098e505afde9bf5166cb7b0c409178575633b913ce08c1c700d08c477db6.svg)}.flag-icon-ck.flag-icon-squared{background-image:url(/assets/flags/1x1/ck-9c8dffa3bd5953d8a121780831f25b58738e67f3be71961894c56dfd25848c88.svg)}.flag-icon-cl{background-image:url(/assets/flags/4x3/cl-a4c57ec2bb9adcb67e1850256e5165227b764187d6941a38d95d0def5144699b.svg)}.flag-icon-cl.flag-icon-squared{background-image:url(/assets/flags/1x1/cl-5a3e95cf63358e3911c97404818c2cddfd46414d8445e47d6976ee166c48926c.svg)}.flag-icon-cm{background-image:url(/assets/flags/4x3/cm-5dce9f36d92a61bdc0c482141bdb4f55bfcec0a2ecc745db643a7953e2e5a722.svg)}.flag-icon-cm.flag-icon-squared{background-image:url(/assets/flags/1x1/cm-d8d21f54c44df5df9edef227691384a4ad37c15ff57c8aa0dead684d19eac8cd.svg)}.flag-icon-cn{background-image:url(/assets/flags/4x3/cn-48ce1c2837bb806a6aaf8b7a9878b6d040c0d069a0ffca9a8a49e7a31aa30e7f.svg)}.flag-icon-cn.flag-icon-squared{background-image:url(/assets/flags/1x1/cn-e6be64c6c4a976e64d39bfe8a6ae4a5b1d38a6aa1b138ddcacf34a942dff50bc.svg)}.flag-icon-co{background-image:url(/assets/flags/4x3/co-648d3ff596a0ecf3e85ac17c53abe1d7ca4759688e10a7a3a8b56f096ba6b6f7.svg)}.flag-icon-co.flag-icon-squared{background-image:url(/assets/flags/1x1/co-d3c16180c6bce630f762aff789104d10e9dbc949e740535a61396cd0ec34c1a1.svg)}.flag-icon-cr{background-image:url(/assets/flags/4x3/cr-84aec60f19bd33e1ac1a209155fec8d372e17cb59dc1346bb9124e5cc867375d.svg)}.flag-icon-cr.flag-icon-squared{background-image:url(/assets/flags/1x1/cr-5371cf8bc5ad1a805155c1b3065e420a0a418c8d63b472bc545890289a365b35.svg)}.flag-icon-cu{background-image:url(/assets/flags/4x3/cu-bb3f857e02aeab606120d9f164283f07a44b227f12aad7d6d344c7579f7b3ff0.svg)}.flag-icon-cu.flag-icon-squared{background-image:url(/assets/flags/1x1/cu-02c0054169b874a8d231de1f45b2d0884de48848157734e0ddcd0f684c05c18d.svg)}.flag-icon-cv{background-image:url(/assets/flags/4x3/cv-90ee90ab59713454a218d8c300c71139e62655de80bfbea81df93142a529b81f.svg)}.flag-icon-cv.flag-icon-squared{background-image:url(/assets/flags/1x1/cv-2cf3eede97a468d28459ccc2271c28bb5b6029af2388b0301f6203be55e49308.svg)}.flag-icon-cw{background-image:url(/assets/flags/4x3/cw-d46beb7b10b40fa82cfd40eb86a3b3879f59f5da2a2f5ef91d121ab9b16c0aad.svg)}.flag-icon-cw.flag-icon-squared{background-image:url(/assets/flags/1x1/cw-ba78c834e61b24a8a2b6bc7c80ab9f14e42c3c69415941ddb7c8c1f652ccd8b5.svg)}.flag-icon-cx{background-image:url(/assets/flags/4x3/cx-28187fb9d91bedc6f239b107d26eb6ec1cc2a0c7730810306c5a6b313c14f2b2.svg)}.flag-icon-cx.flag-icon-squared{background-image:url(/assets/flags/1x1/cx-8ebe073d997f93d092a493300ea1d234c91aef80c6e8f431e88aa7f8e724f9a6.svg)}.flag-icon-cy{background-image:url(/assets/flags/4x3/cy-8d633ecabc7968bb8a869c62545f122aacbbc3e108c25ceb421bb8bc8734b9be.svg)}.flag-icon-cy.flag-icon-squared{background-image:url(/assets/flags/1x1/cy-6ef37fdd7518f18727bec1ed9741bb4d1f854dde7ef1a7e9fd2f4ba6291a7790.svg)}.flag-icon-cz{background-image:url(/assets/flags/4x3/cz-6c94e3d53fc1ae5982d8eb058b76d86f07d3fb4cd325698fea3291fa35504c56.svg)}.flag-icon-cz.flag-icon-squared{background-image:url(/assets/flags/1x1/cz-af9898ebd32559cdbea2fd17b351e5eedafccada6fbc6a2b7952cad78369817e.svg)}.flag-icon-de{background-image:url(/assets/flags/4x3/de-e7323083675d25107c85f0cea6534bd21d21e77e6d524d92e1b2d0a4e21117a1.svg)}.flag-icon-de.flag-icon-squared{background-image:url(/assets/flags/1x1/de-fdb60146952d3b2d104310b28882a0ecde44d808240c3bab2cd6c302a538b266.svg)}.flag-icon-dj{background-image:url(/assets/flags/4x3/dj-546da4a0dae9b1ab74dc6ac6076d0c706f37ef2a0d799342dd0345e11f770f03.svg)}.flag-icon-dj.flag-icon-squared{background-image:url(/assets/flags/1x1/dj-c0481b667f003d9d5a3c93861023a97a98224227ac19aa7e07b5b6edd35fe900.svg)}.flag-icon-dk{background-image:url(/assets/flags/4x3/dk-a13735c0337ab4679cd8679508bf5e8067637ab611ca5c54172c621d740420e5.svg)}.flag-icon-dk.flag-icon-squared{background-image:url(/assets/flags/1x1/dk-822a3b8b6948f49aa81fe7620bd173453d9a45406a9680f24bad7e714e58cb7c.svg)}.flag-icon-dm{background-image:url(/assets/flags/4x3/dm-7713fabd3cf341694b4c1ef5d1379820773722b61c190234ac7416f2872e3940.svg)}.flag-icon-dm.flag-icon-squared{background-image:url(/assets/flags/1x1/dm-33d984fc9897bb2a3bd16c6672b876effc1a8adc0c57ad122a16db54061e4e46.svg)}.flag-icon-do{background-image:url(/assets/flags/4x3/do-714b6f307ea3a9c3d30348684b8574e8b7f5078f51649dfa97ae2a69a7108b4a.svg)}.flag-icon-do.flag-icon-squared{background-image:url(/assets/flags/1x1/do-d37306c4b346f89ea14739144374caad69652be31e8ce8e2504c9a0d422a4857.svg)}.flag-icon-dz{background-image:url(/assets/flags/4x3/dz-a96e943c830558fe9823044aac2bfb3f6a4caf3bd3c57943352280a7f6b68cb1.svg)}.flag-icon-dz.flag-icon-squared{background-image:url(/assets/flags/1x1/dz-09400d3b2c58e641a1641a687b81476761d05f9d0ff65861aeaa33c7f508cda4.svg)}.flag-icon-ec{background-image:url(/assets/flags/4x3/ec-6762ba85ea0f7bb289b0aa6219c797e5243103d281b1462c61b61030fa329d5e.svg)}.flag-icon-ec.flag-icon-squared{background-image:url(/assets/flags/1x1/ec-7410a75a013738fbb8cbd756d967380e02ae54ca74e9ef9a41c4b583c2c2794f.svg)}.flag-icon-ee{background-image:url(/assets/flags/4x3/ee-ce3b622214bd9eefb43373cae2811ea8cf6ef6a16bb6afbaa5bcaaea34024da0.svg)}.flag-icon-ee.flag-icon-squared{background-image:url(/assets/flags/1x1/ee-a207a8363b4dde44f59951501c2cb539419e92b0814b25d6448710ced52226f8.svg)}.flag-icon-eg{background-image:url(/assets/flags/4x3/eg-16a11fa93856ddc5fd46f8811adfc93660175724b20eaab55ff046855a352d2c.svg)}.flag-icon-eg.flag-icon-squared{background-image:url(/assets/flags/1x1/eg-9f4d098c604326bbc3692f9e2f335dbc9b34bdf2706565bf448380f0a889d1e2.svg)}.flag-icon-eh{background-image:url(/assets/flags/4x3/eh-9cf4a74d29c1a1afc4137deeb5b678d55c8fbdf8d181217267f3a5cce6a76a97.svg)}.flag-icon-eh.flag-icon-squared{background-image:url(/assets/flags/1x1/eh-16c3327dbcf3483e634b3536b056324b5478212dae6d060f2ffb2ec961cd382f.svg)}.flag-icon-er{background-image:url(/assets/flags/4x3/er-69a1e1e45289d1282df4b1e5ce5e712d69fbe314abd0c922353fce90814c543e.svg)}.flag-icon-er.flag-icon-squared{background-image:url(/assets/flags/1x1/er-90d49408e58955cf1cf3185b0193e03c4a107042d47ef5e975dbbe10c6ef7f4a.svg)}.flag-icon-es{background-image:url(/assets/flags/4x3/es-50e59681c6b6412498bd9cbfc473abedc713db75c54c538b839db3c394d64499.svg)}.flag-icon-es.flag-icon-squared{background-image:url(/assets/flags/1x1/es-29c68fa3c9c8c2adacdc2eb0162e9c2fa998faa408836900ec6285000476800d.svg)}.flag-icon-et{background-image:url(/assets/flags/4x3/et-14263ba7ea890fd0a4d89a2791343ecb7acc89aab1fc2593e00a6093b22251df.svg)}.flag-icon-et.flag-icon-squared{background-image:url(/assets/flags/1x1/et-086eefb70e9adad537cc1c640a72cc0fa843ec7a9b06b2778aa98b2db055bfe6.svg)}.flag-icon-fi{background-image:url(/assets/flags/4x3/fi-a4c41caa02a4f6803ea0d6c36de4beebf20d150e3df742b1369a4099c2ff648e.svg)}.flag-icon-fi.flag-icon-squared{background-image:url(/assets/flags/1x1/fi-c5fdf318fac5fdfc94fe54268618e58a2bc5933617ead09992900f90cc25de9a.svg)}.flag-icon-fj{background-image:url(/assets/flags/4x3/fj-cb0cc4b3b5c202f07487ee519f48b3eadb47035f5f2d5d3f99d20f81e48d6b79.svg)}.flag-icon-fj.flag-icon-squared{background-image:url(/assets/flags/1x1/fj-c2c7fd536841925e7647b2d510d6a0c58700e2a8ded0e42008fb93ffacde101f.svg)}.flag-icon-fk{background-image:url(/assets/flags/4x3/fk-cb61eaa0d7221823f7d17de59ea88ed16b506f9585ab0c7291cf839449d82968.svg)}.flag-icon-fk.flag-icon-squared{background-image:url(/assets/flags/1x1/fk-a871742380ae157d1211a63cc35cd3621b1bf6de6d67e4a8e3565ad200b1d8cf.svg)}.flag-icon-fm{background-image:url(/assets/flags/4x3/fm-079b937562a9a412aae8fb762b571ddb49bf23627943c97247b6a9bbdb768153.svg)}.flag-icon-fm.flag-icon-squared{background-image:url(/assets/flags/1x1/fm-dbec73633ecd8a6c50f56d54df36bbe6a2f8fb534ac7658477c82cad14a806a8.svg)}.flag-icon-fo{background-image:url(/assets/flags/4x3/fo-27279c2481bb1cb3e44850a948987d6a8411acffa770c3aecd1b76d4c5853413.svg)}.flag-icon-fo.flag-icon-squared{background-image:url(/assets/flags/1x1/fo-7cb4fdbba1c7223702d843cb0709ddc799f89f909dfe101e3e36d6bf36c3e67f.svg)}.flag-icon-fr{background-image:url(/assets/flags/4x3/fr-30ed2f68dc9a17927643640f48f3d2a858bd041770547035349c6e79713cd84e.svg)}.flag-icon-fr.flag-icon-squared{background-image:url(/assets/flags/1x1/fr-6b849151204c66fa661c30b34e62919a13b9e66b7cd37a4fc8962e8e0baf9bdc.svg)}.flag-icon-ga{background-image:url(/assets/flags/4x3/ga-e3840f9d5bd6ee08db748d37a534500b837bee0f8ce65987b2f099a6afd2cc63.svg)}.flag-icon-ga.flag-icon-squared{background-image:url(/assets/flags/1x1/ga-9eafd5388042b3d2258ac6223075b726426210136b9851b637973105721b64d9.svg)}.flag-icon-gb{background-image:url(/assets/flags/4x3/gb-ce93c8a6b974d63998e263f6d25f898fc20580a28464457f2f4463b687e4fe8d.svg)}.flag-icon-gb.flag-icon-squared{background-image:url(/assets/flags/1x1/gb-1d93e1ce2e2e10c1709e4dc50ac956c007b2c1a63a4bc22ddfd64354f79ad457.svg)}.flag-icon-gd{background-image:url(/assets/flags/4x3/gd-7c3a6b6068bbd9a6abc98c2297dd4acd5e31022e5a4210fc0e1205ec28498fa2.svg)}.flag-icon-gd.flag-icon-squared{background-image:url(/assets/flags/1x1/gd-2310bc03d9e8ddc8599b40891bfb10b812b07023881599a7e02e3028d1bc9ca8.svg)}.flag-icon-ge{background-image:url(/assets/flags/4x3/ge-501c0135fb8c377dbd2859ff6290b47ef4907a8e2ab2ae1e39116b716db6795f.svg)}.flag-icon-ge.flag-icon-squared{background-image:url(/assets/flags/1x1/ge-ca9ee36883ec12048fbb7fbbfaf231c0d4848ae0b07dab74a46d53b7b34d8114.svg)}.flag-icon-gf{background-image:url(/assets/flags/4x3/gf-7c165f90bfe6ac3674903632182221a992f017ff706354b1761002382e89c2c2.svg)}.flag-icon-gf.flag-icon-squared{background-image:url(/assets/flags/1x1/gf-8838337b15cdcf143fac16c714e8dbf2d893d2ea8f1c8ef06dadcb652dfec41c.svg)}.flag-icon-gg{background-image:url(/assets/flags/4x3/gg-2c7bfc50d5bcd374b5f6107974d06af24e70edba31ad71a225e0c2ecc2d6e778.svg)}.flag-icon-gg.flag-icon-squared{background-image:url(/assets/flags/1x1/gg-509489b1792831bb27d6975c76aa0a2ac2fa2c3906bcf844f616de5e0fbbc359.svg)}.flag-icon-gh{background-image:url(/assets/flags/4x3/gh-79c187756e93df22fae571ad9419629c5247c016e32a74471e0d461048fdf5cf.svg)}.flag-icon-gh.flag-icon-squared{background-image:url(/assets/flags/1x1/gh-e7bf18e6337982ee31e3673ab93e722b3410b7a4c202656a4bc3887d8656286b.svg)}.flag-icon-gi{background-image:url(/assets/flags/4x3/gi-ed99b369c8c77e64abd59fab1f28155d71b4378b49625c66ab0ab6dff4f88087.svg)}.flag-icon-gi.flag-icon-squared{background-image:url(/assets/flags/1x1/gi-2e563e96e766e13c0a9c5a3a372059a44739bb696e853d71a6f6b08c491dfb9a.svg)}.flag-icon-gl{background-image:url(/assets/flags/4x3/gl-612e560dbad68d540be672b80e22c54db43d6e2070523e81c156ccd6b3fc4260.svg)}.flag-icon-gl.flag-icon-squared{background-image:url(/assets/flags/1x1/gl-a9bb35d2b9ff27638658d9ad6b9e2c4f452072b9a80b508d32e76d37bf62cf6e.svg)}.flag-icon-gm{background-image:url(/assets/flags/4x3/gm-4a6f9670a41548cceaced2b728e4bc56acbc4a3ba5544e7a097f7dae7a8bb045.svg)}.flag-icon-gm.flag-icon-squared{background-image:url(/assets/flags/1x1/gm-b67f9f6bce2f8c8700c198de8bfafac72d01b8a1e55b77f71e8cafdc58f8af5c.svg)}.flag-icon-gn{background-image:url(/assets/flags/4x3/gn-873b4eb52f34c7558bef93cfd1b82117b5c32c9fbc0610f8821ccd22f28abe28.svg)}.flag-icon-gn.flag-icon-squared{background-image:url(/assets/flags/1x1/gn-72f51dc30cf0ed5459ad0f239cf3043eac05ece75945bcaf4ea6653af868c504.svg)}.flag-icon-gp{background-image:url(/assets/flags/4x3/gp-4559cad3eb2d173214161d16b0237c68f5c817749a39c862fa7b23dfb4aee923.svg)}.flag-icon-gp.flag-icon-squared{background-image:url(/assets/flags/1x1/gp-d6669532054db5b7e441f4858c28920246a65ca3e8a15518c64c7bbb4f9c6416.svg)}.flag-icon-gq{background-image:url(/assets/flags/4x3/gq-0c8dfe7f9543307056bbe6d6e44a16c17201228e5344d5afec1ccf1b9a5eb2f9.svg)}.flag-icon-gq.flag-icon-squared{background-image:url(/assets/flags/1x1/gq-ecb761e6db59b9bf8ba37533eaf0c60b7fcc7c0dfa2fcf281ee84c970dcb10f8.svg)}.flag-icon-gr{background-image:url(/assets/flags/4x3/gr-4a4086310397bffa682d439be8650a9e28d94e32963b6411b61435292ac4cf80.svg)}.flag-icon-gr.flag-icon-squared{background-image:url(/assets/flags/1x1/gr-0cbd171892c0568b055d3b6585d58ac13dd60dfbcfad16eda1f4f9ead11dd16f.svg)}.flag-icon-gs{background-image:url(/assets/flags/4x3/gs-e45169a93a9e94c15f5cb765a6c863319171fb9b4dce56094411829cd688d486.svg)}.flag-icon-gs.flag-icon-squared{background-image:url(/assets/flags/1x1/gs-3efc9e1b32961f9aa9d7faa2626e596282b63d049f6717c2378b28e3f508e79a.svg)}.flag-icon-gt{background-image:url(/assets/flags/4x3/gt-64a7345cf66facf7f323d2142aebb4172191108a78ac7493b1a6077b78ac8ec5.svg)}.flag-icon-gt.flag-icon-squared{background-image:url(/assets/flags/1x1/gt-436a2af3d95cf3cb13ded897f319cfd6e2c087d678ad0e971c198b0d2c029911.svg)}.flag-icon-gu{background-image:url(/assets/flags/4x3/gu-f560822ee237e5277829e63613a615a2ee3d8cc6196dffffe0f0d56a49b11c53.svg)}.flag-icon-gu.flag-icon-squared{background-image:url(/assets/flags/1x1/gu-a71c9d290c66c1a0929b05436dc6a8229b1147d7cc62336e04c9adf697030450.svg)}.flag-icon-gw{background-image:url(/assets/flags/4x3/gw-0dc9ec17735ed605b68672947ce55c49a4ec1551491ccd121f482c1875cdf219.svg)}.flag-icon-gw.flag-icon-squared{background-image:url(/assets/flags/1x1/gw-7868c305e4a64b0d8ebfd3f7cb8c881841d71a7e0c3ead2683fe503c80de0674.svg)}.flag-icon-gy{background-image:url(/assets/flags/4x3/gy-c9126e544c62508abfb898f0af0bd79c46f4c767c9ed6f928418a24b0f246d85.svg)}.flag-icon-gy.flag-icon-squared{background-image:url(/assets/flags/1x1/gy-0e3b849ce460f8ab1ec7cf66a25be1ba91e89b72d8b0aa679a0553464f37a972.svg)}.flag-icon-hk{background-image:url(/assets/flags/4x3/hk-cece9126ccbf9151feadfed75791ebf32d4a16beab12f182404519d0cc24eec7.svg)}.flag-icon-hk.flag-icon-squared{background-image:url(/assets/flags/1x1/hk-9fad00e06f9034877149394914baa2bc3292223b0e32df2b1f9399d4de6e167d.svg)}.flag-icon-hm{background-image:url(/assets/flags/4x3/hm-4b4923b81da24d62ebf31a9bc0addf76beef84593374b1cbd03ba19f3b12e3e9.svg)}.flag-icon-hm.flag-icon-squared{background-image:url(/assets/flags/1x1/hm-776c822113a22e83581234d05f40bfc0ed38b60648d87f513f3da3fff96ffb61.svg)}.flag-icon-hn{background-image:url(/assets/flags/4x3/hn-855c830786283862a5f399e0d69dffe52b6223b91b32e31b55d55c82f2fa32c9.svg)}.flag-icon-hn.flag-icon-squared{background-image:url(/assets/flags/1x1/hn-64c38bac9403417c4e276bf5536d284fc5410fc04b80acd39a961d298f430dbd.svg)}.flag-icon-hr{background-image:url(/assets/flags/4x3/hr-c8cad861f7398a22b9d27ea682d2778df0dde8e146d30142b5294daf988854af.svg)}.flag-icon-hr.flag-icon-squared{background-image:url(/assets/flags/1x1/hr-60c093df6760e4cc6abe26c37a52be3b51458f02712f18e11f08b07dc623b489.svg)}.flag-icon-ht{background-image:url(/assets/flags/4x3/ht-fe81da06228fa36e7f211bec0d9f0c020f5b9c7f81534b4cb2251848aa276b16.svg)}.flag-icon-ht.flag-icon-squared{background-image:url(/assets/flags/1x1/ht-dd0197c078859c5a66ff3a51d3a3f92809768e36bfabdec0fc0ab60d068afcd9.svg)}.flag-icon-hu{background-image:url(/assets/flags/4x3/hu-9aa998e636687aede491e307f3d068dbe58f2d90bfdfaec0e7ad03baa5b36344.svg)}.flag-icon-hu.flag-icon-squared{background-image:url(/assets/flags/1x1/hu-06858d0fbd4320496e849010e35c8fe82eb618188cf6ec329aef93f5e7af1c23.svg)}.flag-icon-id{background-image:url(/assets/flags/4x3/id-775dbfedd6533afdf5bd017ccc1ad4f8f4238cbe87393d9c837a669196f17293.svg)}.flag-icon-id.flag-icon-squared{background-image:url(/assets/flags/1x1/id-3920ce662a7ea937b2c11707d8e1f53db52611dd004edf753b0389ed490d9d29.svg)}.flag-icon-ie{background-image:url(/assets/flags/4x3/ie-6368a1c92440fcf80d3c35607543bcaa2d4662d6e0bc7acf6749ddbc418a72c0.svg)}.flag-icon-ie.flag-icon-squared{background-image:url(/assets/flags/1x1/ie-1997e9de640fa764677aa8f5d52f7888bb24a029160e8f67b06dbd043b4f11b3.svg)}.flag-icon-il{background-image:url(/assets/flags/4x3/il-d76883a2330f9a05a4a64990ba955fc1be90bb46bcb19ae548c21816e7e74178.svg)}.flag-icon-il.flag-icon-squared{background-image:url(/assets/flags/1x1/il-f5e643d0e10169a438119dc441ea3100b52a2ff569bbb3a3ad6d1131b47602d8.svg)}.flag-icon-im{background-image:url(/assets/flags/4x3/im-bbae8aa9dd129f8446556afe4904194ad43377d882f9a705fcf1da2bdbfabccf.svg)}.flag-icon-im.flag-icon-squared{background-image:url(/assets/flags/1x1/im-767d72c2e72d732d65c9b016adad983778dfbbb2b5b52e71830f4e41297728d3.svg)}.flag-icon-in{background-image:url(/assets/flags/4x3/in-519e33321b8b2ba70a0b7557d66c62d7efdc9723896c49f82528b107028ffe29.svg)}.flag-icon-in.flag-icon-squared{background-image:url(/assets/flags/1x1/in-27831f76dc6a218a529b6e5d0eafc4c19c999461327b7c013f59226c0601a361.svg)}.flag-icon-io{background-image:url(/assets/flags/4x3/io-8d25a8e98f682199b413adfbcb6898c37058c9bae085e427fbab03d56e8c0de6.svg)}.flag-icon-io.flag-icon-squared{background-image:url(/assets/flags/1x1/io-627f3b0cef72fd91ff426d74a007dc32d74c9fe677cf2c8355cba84359e16fde.svg)}.flag-icon-iq{background-image:url(/assets/flags/4x3/iq-96b24d1439184d0a4c35ca7cea65e5f20469a0e8c8438963aad016e59c399cc6.svg)}.flag-icon-iq.flag-icon-squared{background-image:url(/assets/flags/1x1/iq-af04db139f8c44cfe0c612e2c05e848ccfad88fbbfcb58e88cdb7c80db365669.svg)}.flag-icon-ir{background-image:url(/assets/flags/4x3/ir-db2c230d355ade2b1ac235ec647bb1535e4703c639a44f9ce112473272ee1019.svg)}.flag-icon-ir.flag-icon-squared{background-image:url(/assets/flags/1x1/ir-c648cbf56fc8f324fda477ea816783c9df8a7d398f45f5f94acc1c16c8877b63.svg)}.flag-icon-is{background-image:url(/assets/flags/4x3/is-29508693138977229758b0f322ba34e90dbcd7a8a74e8820729933d24051d9a7.svg)}.flag-icon-is.flag-icon-squared{background-image:url(/assets/flags/1x1/is-b1c5db1d4b4853b8144f1d88ababbf14fc88752340457ba3e2c94ab5d54c9c01.svg)}.flag-icon-it{background-image:url(/assets/flags/4x3/it-d2c168050fc509adac1163b097b0ed409217560735b27802ae9259587c146562.svg)}.flag-icon-it.flag-icon-squared{background-image:url(/assets/flags/1x1/it-592d34fb666430fa00f98d333623d5efa3c8e0e65ac4eee06bbc4c1de7ce4bea.svg)}.flag-icon-je{background-image:url(/assets/flags/4x3/je-b363a4e3a21630f10791c2ebeb7f918320816ef87c155d4fd29ce37982f4df35.svg)}.flag-icon-je.flag-icon-squared{background-image:url(/assets/flags/1x1/je-6d43f74e30e099bc056da925ec34c0200708f0a6e90da34db1e59d54ce10cfd9.svg)}.flag-icon-jm{background-image:url(/assets/flags/4x3/jm-3d133fbc2564f29e036855e8be224d1579fe66fe49e0f5a2ba0bdcf3cb272823.svg)}.flag-icon-jm.flag-icon-squared{background-image:url(/assets/flags/1x1/jm-1aea8ea5d8cbc717fa3ef331d8caa9a1421c88a7bd076e40f8276a5b6f8d0467.svg)}.flag-icon-jo{background-image:url(/assets/flags/4x3/jo-eee432339f8ea6750987e1121187eb4b53ec537dd7ccb240c018de63f7a92db6.svg)}.flag-icon-jo.flag-icon-squared{background-image:url(/assets/flags/1x1/jo-7969b2083c535c85b7e714b755459a6606940e0b5ddb1b71e24daf0a180d14aa.svg)}.flag-icon-jp{background-image:url(/assets/flags/4x3/jp-2eadcfc67ba8cd50c1da86e08e6778e0102c3072865dab8c312cc88006da0abe.svg)}.flag-icon-jp.flag-icon-squared{background-image:url(/assets/flags/1x1/jp-551281a75e6c6fd64eb65b39f56102b52c182f6c38ee045c9422f6592f0f65c5.svg)}.flag-icon-ke{background-image:url(/assets/flags/4x3/ke-45790bc3ec1ed8ed0124777a7c9e09163353b5af4ff70ae6604a61b53712df4b.svg)}.flag-icon-ke.flag-icon-squared{background-image:url(/assets/flags/1x1/ke-2cca24ecf024b801543c0572efc9969ffdaf25cec313e2149c64961839bc301b.svg)}.flag-icon-kg{background-image:url(/assets/flags/4x3/kg-3879f8931d74cc9c5927261f4095b2bb786f3d62c803b2a96ec550a23fae9f49.svg)}.flag-icon-kg.flag-icon-squared{background-image:url(/assets/flags/1x1/kg-74318932808f85b72df308358f2f2699ab0cb7ab4f7ad3c84c4be4024f0fb140.svg)}.flag-icon-kh{background-image:url(/assets/flags/4x3/kh-7409fab4ba4e676db7b5c61020b97893b1735fe0b8e39e9b4f96108400be704e.svg)}.flag-icon-kh.flag-icon-squared{background-image:url(/assets/flags/1x1/kh-2603f6a61b400cb12b87397eeba60ae1707511467d5e0c430c05809bf89e5042.svg)}.flag-icon-ki{background-image:url(/assets/flags/4x3/ki-617c1b52f3d9aee99d094edbd1775cae77aade266a1318eb4671b2bb1620ded5.svg)}.flag-icon-ki.flag-icon-squared{background-image:url(/assets/flags/1x1/ki-74615266b440a24f09abdeae3853d7e1111f0eba77df71ccd176d83fbd1fd9ad.svg)}.flag-icon-km{background-image:url(/assets/flags/4x3/km-0c9bcbf7e677a541fc8dff6f848c9d92b6982ac2934ae75faa56a2b846bb5698.svg)}.flag-icon-km.flag-icon-squared{background-image:url(/assets/flags/1x1/km-81b0fbe53d09194270e8ed4cbe9be8eb1ae727e77957005369ad8bdc651dd1c8.svg)}.flag-icon-kn{background-image:url(/assets/flags/4x3/kn-0442f55f81cd3b1057c609301f0af2b503d89a895a954af8c970df997e92bd03.svg)}.flag-icon-kn.flag-icon-squared{background-image:url(/assets/flags/1x1/kn-897c34ef54bee486f0d24d2191e2400f49a19d98efb19f8c3f1a27fb0b97131a.svg)}.flag-icon-kp{background-image:url(/assets/flags/4x3/kp-a54f7201982b29530381b71a5e2a11c1153860f22c04c0a2d91bb0d20fedf78e.svg)}.flag-icon-kp.flag-icon-squared{background-image:url(/assets/flags/1x1/kp-758eccd89ef3707808fb68d931f086e49333904f4cc67c88468f3c96fb43b7b6.svg)}.flag-icon-kr{background-image:url(/assets/flags/4x3/kr-c0b9b2c854133410c0ad9cadbc10b1e0bacf0305519883126d55bfa3214f9d06.svg)}.flag-icon-kr.flag-icon-squared{background-image:url(/assets/flags/1x1/kr-7c0457ac5d284b28b742ea2e061a1aa2a35f63171e464b3a7eb501a48756ce7b.svg)}.flag-icon-kw{background-image:url(/assets/flags/4x3/kw-81c3d5d25c7b840ef14783b51d18c6b7cfc61f94932c664bbc9e5879fef020eb.svg)}.flag-icon-kw.flag-icon-squared{background-image:url(/assets/flags/1x1/kw-66670211a67a4e61d4652a19d821dc5195f01a28a3a9b28b7e4c6048cd86b19c.svg)}.flag-icon-ky{background-image:url(/assets/flags/4x3/ky-0f4ab66d951ae33f800d680aaa5704804ba9c8844d4d80e5bee2e3fa0e100af3.svg)}.flag-icon-ky.flag-icon-squared{background-image:url(/assets/flags/1x1/ky-fb5f57bb58b74d23377bad9954a75ab88d1587af68546ce137a6ae7a88a7701e.svg)}.flag-icon-kz{background-image:url(/assets/flags/4x3/kz-39edc952c598c71be2c9510944a8faf708d8e4b367b5ad78a688d1cd37f522eb.svg)}.flag-icon-kz.flag-icon-squared{background-image:url(/assets/flags/1x1/kz-924c04dc19267b049f35213af0e2b0c540933c06389433cb4aacd8dda33b286c.svg)}.flag-icon-la{background-image:url(/assets/flags/4x3/la-e3a36a3bd0003442c3a21d3a192995fa6fb3b3c08a2daadc8f38f62736b5b1e3.svg)}.flag-icon-la.flag-icon-squared{background-image:url(/assets/flags/1x1/la-c9d4223a897e5e2938a4892bbc593d3828093b9439fc3f6de21520e4013ddbc5.svg)}.flag-icon-lb{background-image:url(/assets/flags/4x3/lb-508c2a5a9b50d604895675b9f1c1e5914c394a7f468f5d823eb0476acaacbc7f.svg)}.flag-icon-lb.flag-icon-squared{background-image:url(/assets/flags/1x1/lb-10c9ba8ea7aa3189f16a7273c837982a887fc4ddfc9d514d8f5a660d72356f7f.svg)}.flag-icon-lc{background-image:url(/assets/flags/4x3/lc-04ccd92fb1578654181febaea30ebd6b6620f56115730b2a2d673c712307bf5c.svg)}.flag-icon-lc.flag-icon-squared{background-image:url(/assets/flags/1x1/lc-4ffb53afb8bd296d526ac26fd8007afc74855e92833a893d3c934a5d12eb152a.svg)}.flag-icon-li{background-image:url(/assets/flags/4x3/li-3058dc4aeaf2bd2da8cb910892137d732b56e5e9d342e565a4059de1a8e40e40.svg)}.flag-icon-li.flag-icon-squared{background-image:url(/assets/flags/1x1/li-0780a4f218b9ee466e33d14274b8a01575a86b3787b347e3269a3b301c220d5f.svg)}.flag-icon-lk{background-image:url(/assets/flags/4x3/lk-a13d6ab1da51be3b1d2c5b80f4d866c923d42b017e197469e1bfc0dd021c4bfe.svg)}.flag-icon-lk.flag-icon-squared{background-image:url(/assets/flags/1x1/lk-99759363f0df6b868fd1398bf05666c680bafe1eeec8b859b64d450930213e02.svg)}.flag-icon-lr{background-image:url(/assets/flags/4x3/lr-b06a1d70899826b305ce387fa31e1fa0bdb3bcb17c1392f15f995ce1dba723cf.svg)}.flag-icon-lr.flag-icon-squared{background-image:url(/assets/flags/1x1/lr-820a9d023e5b1e68ed640bfaba8f84ad4379c42a6c5c982cb76b0390dd2bcbdd.svg)}.flag-icon-ls{background-image:url(/assets/flags/4x3/ls-d02bcefe7c298c153665f35c33eedb08e2e2b345350e4bf1714a87abf86b2d0e.svg)}.flag-icon-ls.flag-icon-squared{background-image:url(/assets/flags/1x1/ls-85c731c313a46db12bdb27fe229e9f7d052b447c624663b73ffa1dbab97f03fb.svg)}.flag-icon-lt{background-image:url(/assets/flags/4x3/lt-c08eb18a15d2003cb544432b11c5081d3d5741370669b4df306d1c6bce14cb51.svg)}.flag-icon-lt.flag-icon-squared{background-image:url(/assets/flags/1x1/lt-c1bd7e3d289ac9b0df06d47237780eaf4d30f01281ed50a7df9a22bc3a2489c5.svg)}.flag-icon-lu{background-image:url(/assets/flags/4x3/lu-99e7b6adb3a9e0f867b17eb3b1f0f33db92fd27cfd7b651f62453f359bace22f.svg)}.flag-icon-lu.flag-icon-squared{background-image:url(/assets/flags/1x1/lu-ab544445f16afa450549288ac86c2cc9a458a9d7747b3a89d5ecef7db9c83ce7.svg)}.flag-icon-lv{background-image:url(/assets/flags/4x3/lv-f8844d50b89f0369f73d580d3676553e7e55dd8ab2460e592a29a530d9bed886.svg)}.flag-icon-lv.flag-icon-squared{background-image:url(/assets/flags/1x1/lv-baeced49dd4249e36a25b0f23a5c601a69e9dee3137627cd4450194b85a99dd4.svg)}.flag-icon-ly{background-image:url(/assets/flags/4x3/ly-03209121483967f9d74849fb9261de23e9ff2e02c4e40b29f1cda0631b8a5fae.svg)}.flag-icon-ly.flag-icon-squared{background-image:url(/assets/flags/1x1/ly-1e6e070aaa4bfc97a5a446a39bf746ab3c4c81d9f62c975cab164e16de3a3ffe.svg)}.flag-icon-ma{background-image:url(/assets/flags/4x3/ma-9a25cc7c2868fa45b251dd1b99a0be3b583df69732146142020fe9c6c0c95b63.svg)}.flag-icon-ma.flag-icon-squared{background-image:url(/assets/flags/1x1/ma-4f18b9c355b8b8bf0db69badb235a183dbd558deb6439bf03b4f18e56837a7f3.svg)}.flag-icon-mc{background-image:url(/assets/flags/4x3/mc-b0c50599ea2a550680a6a867579930e0b47d3e05193a7294a26b7849a7ad35e2.svg)}.flag-icon-mc.flag-icon-squared{background-image:url(/assets/flags/1x1/mc-8f1fe6210338399d8791d91f39234b1a09acf2aa5e0387696048dc7068534a28.svg)}.flag-icon-md{background-image:url(/assets/flags/4x3/md-8849eef7bdf916e962f7bb31af87c8d47aef33f9f4a2017b2ce55c4166e79643.svg)}.flag-icon-md.flag-icon-squared{background-image:url(/assets/flags/1x1/md-43f1bb4157545abe6e79215459efb548d913bbe7922078cd40cb722a4e19d9b4.svg)}.flag-icon-me{background-image:url(/assets/flags/4x3/me-983d452d43cfb8d628bfc5c0cf4991c2ba3cf0e39e70aa5353cfd4e9ec3da62d.svg)}.flag-icon-me.flag-icon-squared{background-image:url(/assets/flags/1x1/me-104d6a96038ef06d3d8b89c9221996f3649b5b821139b11b2e07695b0f6fda2f.svg)}.flag-icon-mf{background-image:url(/assets/flags/4x3/mf-31fb851bfcc2340d2fa43e86a099cc7becfc8e7f996a4d2ca56bd050e6537086.svg)}.flag-icon-mf.flag-icon-squared{background-image:url(/assets/flags/1x1/mf-fe20ce9bf911631d6e79edf21c8cff0716f2dc1ffded39515735444d9a66fa55.svg)}.flag-icon-mg{background-image:url(/assets/flags/4x3/mg-5effe963e29f804a26f95dbbc9519add454a0fd9eb918ddfeb55e1e99a1a2701.svg)}.flag-icon-mg.flag-icon-squared{background-image:url(/assets/flags/1x1/mg-9e546cfb78810d9b25c814a84aadd6907880b8e0cdd2e4e30738b519e7c1ac91.svg)}.flag-icon-mh{background-image:url(/assets/flags/4x3/mh-d8cfd123007dbb99aa700c335957926a6d5e877ab49680c79629a32716d7a782.svg)}.flag-icon-mh.flag-icon-squared{background-image:url(/assets/flags/1x1/mh-3fe03d4d063a4729fc8b68fd5e9d7d2eef6e65c4e82954c83f76b138cea2eb45.svg)}.flag-icon-mk{background-image:url(/assets/flags/4x3/mk-6e8071d15f2ff125d30bf89d000dcb47db9545cf9b7ff04f1474650ec2f4d25c.svg)}.flag-icon-mk.flag-icon-squared{background-image:url(/assets/flags/1x1/mk-fdc9212f9f311cbface56b6587468a2e845111b697edc11b7edda9fcf100c1d5.svg)}.flag-icon-ml{background-image:url(/assets/flags/4x3/ml-a730102e0c6f6362de9c10ef8da6cf7b123465d01a297e7a89808b01fa4771cd.svg)}.flag-icon-ml.flag-icon-squared{background-image:url(/assets/flags/1x1/ml-a661355da206b0cb7ac4c84b6cdf7e411fbca8fcb271ae999fa60d5c67578192.svg)}.flag-icon-mm{background-image:url(/assets/flags/4x3/mm-6d0d207d662477110f2b863488088818d8400386358dcbc669a2d8c54d1bae16.svg)}.flag-icon-mm.flag-icon-squared{background-image:url(/assets/flags/1x1/mm-de7d46b6543343af61ba997045cb41a707bd0db1e7a5879971ca8fddcbdf9e99.svg)}.flag-icon-mn{background-image:url(/assets/flags/4x3/mn-656eb51e88bfce82401e4080eb791ddf16d571cbba102cdd4316c5de4711ac65.svg)}.flag-icon-mn.flag-icon-squared{background-image:url(/assets/flags/1x1/mn-ad22cb2c195a7d8ca8e4174db011d5f58238ee25039b5b2da2649d8ca8b00123.svg)}.flag-icon-mo{background-image:url(/assets/flags/4x3/mo-37a1088aa687af13951bc93886e3e51cb246eccfde1b56528f189327ea291792.svg)}.flag-icon-mo.flag-icon-squared{background-image:url(/assets/flags/1x1/mo-b463a1c37b69131d662e3fb2ae937583458824a09bcf68fc7ed2d7fd729138d1.svg)}.flag-icon-mp{background-image:url(/assets/flags/4x3/mp-ecd12cadc358fdf293e856c0a3ffc09409123cabd3c7201225b2d21b59551e14.svg)}.flag-icon-mp.flag-icon-squared{background-image:url(/assets/flags/1x1/mp-d1f4ba10c1409e713253f1fbb107eeccbd4ec1a8f9036663f1ac1991aee53835.svg)}.flag-icon-mq{background-image:url(/assets/flags/4x3/mq-b4e1b08a93c1364c79e6d61f95b16fca5b884da6e77835bc0e0adfff8ecc2d7f.svg)}.flag-icon-mq.flag-icon-squared{background-image:url(/assets/flags/1x1/mq-19cb6f7cb7354c3fd40e987c93a2d76329d34b2ed3873c3f25fe56802f251ea8.svg)}.flag-icon-mr{background-image:url(/assets/flags/4x3/mr-9f64af3ed5c6d8d1f68b5cb09fd1aa9d28c3c95107e063f64a0ef95f0cb9429a.svg)}.flag-icon-mr.flag-icon-squared{background-image:url(/assets/flags/1x1/mr-0e79b7bcc669bb871d94021db2b78b162b9867c7eaf934d8f7a3025fd5903576.svg)}.flag-icon-ms{background-image:url(/assets/flags/4x3/ms-32620dd70353777b2ee62951556976f398cd38ae359b5a8c97311a1dc61eb8bc.svg)}.flag-icon-ms.flag-icon-squared{background-image:url(/assets/flags/1x1/ms-4104d4f36cb5cf1c6de78e52e90bc3c5b8bfa262617b16a737673feb8c30a00c.svg)}.flag-icon-mt{background-image:url(/assets/flags/4x3/mt-0c9819aa69b34b84c1ee43620922737122eb38f107be9864a0690ac66ef8aa64.svg)}.flag-icon-mt.flag-icon-squared{background-image:url(/assets/flags/1x1/mt-3c3fe71f2a2bf0d961fd145ad7e48ca1e9d3a05cce514354714ba4568503d106.svg)}.flag-icon-mu{background-image:url(/assets/flags/4x3/mu-c78c23f1499756b9db762ae434ca354d1481447fa94c66bc10aca9443b399059.svg)}.flag-icon-mu.flag-icon-squared{background-image:url(/assets/flags/1x1/mu-91ebc79d0fa306127ea8b7a33f77d5b28f35c516ea91ff0468c7344dc838db69.svg)}.flag-icon-mv{background-image:url(/assets/flags/4x3/mv-a17c947e17adae6aacef01a3e131c4150aa094911b53fbaead41783683e008eb.svg)}.flag-icon-mv.flag-icon-squared{background-image:url(/assets/flags/1x1/mv-d138e94d9d2ed093ef1425c1164493b780202f9a7f7937241a7b081b79ff8b01.svg)}.flag-icon-mw{background-image:url(/assets/flags/4x3/mw-21f116afdf71df80e3c59084c6ba640814fa5389430328ff55c9403b5c239632.svg)}.flag-icon-mw.flag-icon-squared{background-image:url(/assets/flags/1x1/mw-5c2228d3f1cf1f9cf8cb158e813202981828c11e8caf117836fc57fa6bc1c788.svg)}.flag-icon-mx{background-image:url(/assets/flags/4x3/mx-a235f9b16921590b7e78caa6f76339361356946eaf0046badd10732b4647c0b6.svg)}.flag-icon-mx.flag-icon-squared{background-image:url(/assets/flags/1x1/mx-cdab01ebcdccc020ca16e1355ef1fd18ca0043b501f399ca8edc48adfa8c7292.svg)}.flag-icon-my{background-image:url(/assets/flags/4x3/my-0ed63574cf5f20c0663ab8cd1f700e150fb641fd0b93602ba013abbfaae5ee59.svg)}.flag-icon-my.flag-icon-squared{background-image:url(/assets/flags/1x1/my-5e8d31ef06ffc8af33a5616d760592ecd022c52afc8ba33c721f1e4989da0628.svg)}.flag-icon-mz{background-image:url(/assets/flags/4x3/mz-752e2293917b1d2ece3f097104caeadf6a679054a779e9d3be8e49dc324bb88a.svg)}.flag-icon-mz.flag-icon-squared{background-image:url(/assets/flags/1x1/mz-300cba975ad43c962ceca0d266ded1fe3d21d6b4d701d657fb42b27268ea2964.svg)}.flag-icon-na{background-image:url(/assets/flags/4x3/na-a0655a2e70751278e6a60d31e818f672864a6e68e8b3d3361b2fbb70fa9bfef8.svg)}.flag-icon-na.flag-icon-squared{background-image:url(/assets/flags/1x1/na-1ce089a189db5be15eb05df8155f9bd017b61fc1a497e5b3021ff2ca664e122d.svg)}.flag-icon-nc{background-image:url(/assets/flags/4x3/nc-0c7171d91c44414ed69808611db588f1283ee7e34ea8a74a9a5101ba4b1cb305.svg)}.flag-icon-nc.flag-icon-squared{background-image:url(/assets/flags/1x1/nc-d3a1629f06dc3200af7669f2d895fce1908d2c1ca02d71e530bdfa6646a9516c.svg)}.flag-icon-ne{background-image:url(/assets/flags/4x3/ne-2b61d30a6cb4554535538e3b753926853e8c629a494a347286b9731c803548e4.svg)}.flag-icon-ne.flag-icon-squared{background-image:url(/assets/flags/1x1/ne-9c5f798ccd7d3dd3771ae628b4a39dfb2a4578fefd2e006f3ce89c3e494d0cb1.svg)}.flag-icon-nf{background-image:url(/assets/flags/4x3/nf-4e615baa83a8b4db3e39fe1d251ab913943d64e0cd320f251d619ab54e7512d3.svg)}.flag-icon-nf.flag-icon-squared{background-image:url(/assets/flags/1x1/nf-45403247c90050484813acf23c50f543779528e346317274373c3c24fd830103.svg)}.flag-icon-ng{background-image:url(/assets/flags/4x3/ng-d52fd188be973f31dd34e5a0b3fed0de68fe736c8a41c6028d9c248c038c8641.svg)}.flag-icon-ng.flag-icon-squared{background-image:url(/assets/flags/1x1/ng-f22edcc5867554d69ecbe15add0fbbb1389631f3ced07a4f820065c7770c65f5.svg)}.flag-icon-ni{background-image:url(/assets/flags/4x3/ni-2fbb883e46fbe3b2ecfed9dac004ceb546f25c77a84a5966eea224674aebc610.svg)}.flag-icon-ni.flag-icon-squared{background-image:url(/assets/flags/1x1/ni-214aed148b615c4846f842b47f99cf178ac62a96cf18c5dd6b23467184b56680.svg)}.flag-icon-nl{background-image:url(/assets/flags/4x3/nl-4f0ecea529dd4c0099dd41a7801fa5ac44aa04cd872ca31e11efd58b5a813774.svg)}.flag-icon-nl.flag-icon-squared{background-image:url(/assets/flags/1x1/nl-9c8f60e638879d642487818975e58c61cd3102f0e68c360708243c076436ff68.svg)}.flag-icon-no{background-image:url(/assets/flags/4x3/no-270f7ee9d1d2efa6abf16f693faba8586adae842d79d8aad9e3f37e96c27cbce.svg)}.flag-icon-no.flag-icon-squared{background-image:url(/assets/flags/1x1/no-7d377325e8c5ec4de0376e9f4c13463f183af637e6c443716f22020c7a313979.svg)}.flag-icon-np{background-image:url(/assets/flags/4x3/np-69637ddb3a173c4522a71598278aa32462e1762e34dd99c9dc99a515433a6cf8.svg)}.flag-icon-np.flag-icon-squared{background-image:url(/assets/flags/1x1/np-44ead118cce3a1fcbb720cc8d6eab6ecb6b62292315f61ae5963a40262ee11d2.svg)}.flag-icon-nr{background-image:url(/assets/flags/4x3/nr-0bd3c0ba7bbac4bd5985b838096eeebd67711d39065619ef092fa4bb55b22a6d.svg)}.flag-icon-nr.flag-icon-squared{background-image:url(/assets/flags/1x1/nr-63b9c44e5dd66a59895f52707dc24db5bd1eab6e535298d24e414c0f2dafcb3c.svg)}.flag-icon-nu{background-image:url(/assets/flags/4x3/nu-259989e1eea0cbf6b41a33176a4c9c1eaa2e7ae6571ad80a324c6309bd5aa5fc.svg)}.flag-icon-nu.flag-icon-squared{background-image:url(/assets/flags/1x1/nu-1cb535708f64ed8b386a245e571e677e935009af92f2b214760a2832c1ee1b53.svg)}.flag-icon-nz{background-image:url(/assets/flags/4x3/nz-90ceca2a683fbec395a91b77b0880cea99c3b2cbdb24caa5474925cbdcc3675e.svg)}.flag-icon-nz.flag-icon-squared{background-image:url(/assets/flags/1x1/nz-b0d78f165a72edd46599222a2ea5f6a91a8252975cb03e33c4ca08e389859aac.svg)}.flag-icon-om{background-image:url(/assets/flags/4x3/om-aadcca7bc7ad318400097b84849dd64c4744306cd9b4f152fba34f2e84116965.svg)}.flag-icon-om.flag-icon-squared{background-image:url(/assets/flags/1x1/om-705e2bd2b2fc7d13c152aa06bfb9e6ee4ad8b299f8c06ca16adad0b18b2b18ed.svg)}.flag-icon-pa{background-image:url(/assets/flags/4x3/pa-027e679bd65dcaa2c53145a14669c1e674a467a889ef702cbe2a260f7ca8ad38.svg)}.flag-icon-pa.flag-icon-squared{background-image:url(/assets/flags/1x1/pa-edeb4faeadaa286de7fdc667e25d38ad0cdbccaec5023182fed6a3c74e8b09eb.svg)}.flag-icon-pe{background-image:url(/assets/flags/4x3/pe-7ec59842737c90d6ff543f1831fd69b51e1e7ee1b068c3ac6259cbf2c214d611.svg)}.flag-icon-pe.flag-icon-squared{background-image:url(/assets/flags/1x1/pe-97d1b8ed1d4ed5e5f0348a731ca4a3a4b9abc7d440447dc87a521f229f375ed3.svg)}.flag-icon-pf{background-image:url(/assets/flags/4x3/pf-27955c73c5be4043c5b7ddf64c8f46d11c6648e3b1fc0efe028b8afea21a40e1.svg)}.flag-icon-pf.flag-icon-squared{background-image:url(/assets/flags/1x1/pf-83e3e1d36fba45e015c62f938e6d182029edc05ebfdc50bcb33860f36f96d73a.svg)}.flag-icon-pg{background-image:url(/assets/flags/4x3/pg-c2fdd2551f9044c461eccfae2d7ba0a347a99143f6002b71a429942af0217897.svg)}.flag-icon-pg.flag-icon-squared{background-image:url(/assets/flags/1x1/pg-cf60257fa85f9270b1e9980e703435186110167f76c153bc460c10ee8b2d4b09.svg)}.flag-icon-ph{background-image:url(/assets/flags/4x3/ph-bf3394850a6cec6a535420eabce263e7f8193413e4af1fb317c76da025388c1b.svg)}.flag-icon-ph.flag-icon-squared{background-image:url(/assets/flags/1x1/ph-006c3218effe4269252cb9638de82ea339eb2894951705c630533ceffa842169.svg)}.flag-icon-pk{background-image:url(/assets/flags/4x3/pk-b64f6a32e5bb598f57cfe49c4899c2021f2d153653f3d92101e6e11b2158e500.svg)}.flag-icon-pk.flag-icon-squared{background-image:url(/assets/flags/1x1/pk-d2d58def913c9081c5eeeda5f0b6895068ec13c955694e359531e23422145e60.svg)}.flag-icon-pl{background-image:url(/assets/flags/4x3/pl-f55a710991a94c2e6c2f9f1a7a4a36ebb84b24b7c9d9df4e1ffe86d61321fa6f.svg)}.flag-icon-pl.flag-icon-squared{background-image:url(/assets/flags/1x1/pl-fafb539259385f2b99df910cff085710a9b4d9706b74e4e0f8a6ef627615c4e7.svg)}.flag-icon-pm{background-image:url(/assets/flags/4x3/pm-8f6338d2ae3e0e42adc9754720ca21ad4979095cf6d7467a8db5a5a1c3e0b2a5.svg)}.flag-icon-pm.flag-icon-squared{background-image:url(/assets/flags/1x1/pm-63029c6198dc42c404ec39807a99528b1d198eeeea6f9a1e309548242480140b.svg)}.flag-icon-pn{background-image:url(/assets/flags/4x3/pn-4006c11ca83011c0dd60a13ac30b27da0578b9f1368bd8c6de5aab423f6662d8.svg)}.flag-icon-pn.flag-icon-squared{background-image:url(/assets/flags/1x1/pn-6c433f7f9cb79c6d5ed7bbeade8a495e3b26ca2604f4fd3995096109684ac5dd.svg)}.flag-icon-pr{background-image:url(/assets/flags/4x3/pr-6287e1515fa80e2d05133ed93f14ca03a1be6909a9ef6c736fd60f9c9fe73132.svg)}.flag-icon-pr.flag-icon-squared{background-image:url(/assets/flags/1x1/pr-526985b3a6d2d6de577ed0ed92d0b49ce854667e3ff630304813fd5af15527cd.svg)}.flag-icon-ps{background-image:url(/assets/flags/4x3/ps-31f50e1fcb44b9aa6e9ce4473c3085f744e70ea0fa1fd8d85787f4e7b0c4a69b.svg)}.flag-icon-ps.flag-icon-squared{background-image:url(/assets/flags/1x1/ps-c43918bc71bef71b24dd46e8cacc53e0df53e02dcce6199d06d11a4637f08a04.svg)}.flag-icon-pt{background-image:url(/assets/flags/4x3/pt-9aab20caed714ee47fc408f017037aea94a649b3ba4d87e2da37870ee31e4f92.svg)}.flag-icon-pt.flag-icon-squared{background-image:url(/assets/flags/1x1/pt-a309869e5018c9690a65ebdf8a2d69d61f82772068a7920f9680ed0581ae5966.svg)}.flag-icon-pw{background-image:url(/assets/flags/4x3/pw-9262037d114d0f61571c74f9a5455809709b43e6565443ae2667981eecb5f12a.svg)}.flag-icon-pw.flag-icon-squared{background-image:url(/assets/flags/1x1/pw-a6f42019653ae26d43c6e9b7bef83fc98cff8ec5e8d0c50ad7cb0a17d5e565a6.svg)}.flag-icon-py{background-image:url(/assets/flags/4x3/py-5bc9e9f0dee94ae3d9bd80ae6fb1aac297dc81a1c592d0a73bc3383bce73af74.svg)}.flag-icon-py.flag-icon-squared{background-image:url(/assets/flags/1x1/py-182eff300f4507fd9399fb6310d1cd3b45adadd7924ad2814003c7111ec5c0de.svg)}.flag-icon-qa{background-image:url(/assets/flags/4x3/qa-32c93970f8e521850eddfaf2a89dfff987f0ae3b0b73a253c301b61cf547cf9e.svg)}.flag-icon-qa.flag-icon-squared{background-image:url(/assets/flags/1x1/qa-182e4d8ace2607d0c02d3c29d65eb084af71092357006bc41cd601981ec3b81c.svg)}.flag-icon-re{background-image:url(/assets/flags/4x3/re-8b2ea1f2727c266a2b80cb12a9b7195f6b656f521552b67893b6761a07f9bc92.svg)}.flag-icon-re.flag-icon-squared{background-image:url(/assets/flags/1x1/re-07eb7d855022bc678b47b0ce5fd05da5044d6dde86ad3697d4ae55c68ff447c1.svg)}.flag-icon-ro{background-image:url(/assets/flags/4x3/ro-4ab797571e1d9eb326486f75654a4590fd33f20444f85b77ba0997eb6138c21f.svg)}.flag-icon-ro.flag-icon-squared{background-image:url(/assets/flags/1x1/ro-ddfcbaec04d11bf7f95abebd1d3a42b2862b1af8fca9b02764a6ed0e409a1d75.svg)}.flag-icon-rs{background-image:url(/assets/flags/4x3/rs-dd8a52473ea40e23b393b5f4a30d1edd91865aab167f0c1835ae84b15dcce585.svg)}.flag-icon-rs.flag-icon-squared{background-image:url(/assets/flags/1x1/rs-42bf40209c92e4e7169daf29fbcb7253b2804eee7a463051529327f38851f865.svg)}.flag-icon-ru{background-image:url(/assets/flags/4x3/ru-13f4525a4caad6e31afa523d2bc4a0c1e6377c0bef1bfd872682130d3f199d1d.svg)}.flag-icon-ru.flag-icon-squared{background-image:url(/assets/flags/1x1/ru-b9792a963faf667447e0456dba5be80a3b37c197a4284d1539a3433721d9e2fe.svg)}.flag-icon-rw{background-image:url(/assets/flags/4x3/rw-bc38bcd6e19d2941839b253af6e863b13338cde1174874f9674471026c15e422.svg)}.flag-icon-rw.flag-icon-squared{background-image:url(/assets/flags/1x1/rw-456698123775b83d2b0fa1b9fe073f9ccdba0b6bf39a703b8979dcce158eb32c.svg)}.flag-icon-sa{background-image:url(/assets/flags/4x3/sa-2b2fd6abb48415d5407c576c24a24fbd80af5877ef06cf2d026452f6c67f5f4d.svg)}.flag-icon-sa.flag-icon-squared{background-image:url(/assets/flags/1x1/sa-d9ebc73e7957f86604164dd5054fb32601ad14d7dfd4bfe73da5bdd10bb2f8ae.svg)}.flag-icon-sb{background-image:url(/assets/flags/4x3/sb-37761927039d0a37ba0995c59fd31bbe36c8a0ca161e5b72b8131e3659f8dddf.svg)}.flag-icon-sb.flag-icon-squared{background-image:url(/assets/flags/1x1/sb-bedbf8464cd82f391bfe6178c63055b650d0cf3aee60c37fa79a586f95783b79.svg)}.flag-icon-sc{background-image:url(/assets/flags/4x3/sc-f6a2f8f37be93f07600b491b52cb58d80d74b92d8ace0af313f4ce081b0d1345.svg)}.flag-icon-sc.flag-icon-squared{background-image:url(/assets/flags/1x1/sc-5dcd01b98c34460c9624280fb5047811fbae7d976620cd0a70ad4263a9085b60.svg)}.flag-icon-sd{background-image:url(/assets/flags/4x3/sd-cc9cf97e8a37622b9e1bad28811d46c4471595afa448dc055e0e3aae7687fe4b.svg)}.flag-icon-sd.flag-icon-squared{background-image:url(/assets/flags/1x1/sd-1f5d13f9780085acbaad13d959b1918c796ba7b0450954b15d145e87cebe045c.svg)}.flag-icon-se{background-image:url(/assets/flags/4x3/se-84b06bcd5bd90ea8dd6d1c3c8d2799a843c47b0256ce098aef75414964618286.svg)}.flag-icon-se.flag-icon-squared{background-image:url(/assets/flags/1x1/se-39f128686652cf914f8601110fcc9ac879bca204407013b93aff4ca4fb2ed9bc.svg)}.flag-icon-sg{background-image:url(/assets/flags/4x3/sg-a82acd90077e76318ddb0be96999d9695b9a9f4627e8a0f341d3987a62747dcc.svg)}.flag-icon-sg.flag-icon-squared{background-image:url(/assets/flags/1x1/sg-c22e093634568aae249bf35f9ddcaa6796b5f27d76c39ff5336abf7f1b8a47d4.svg)}.flag-icon-sh{background-image:url(/assets/flags/4x3/sh-57470d9a75955f0fac605a94e853bab524c7461a4c025e809fb09db762ebe46f.svg)}.flag-icon-sh.flag-icon-squared{background-image:url(/assets/flags/1x1/sh-8d06a0fff61e51eb65357d138e00736545835b8649aa2694152f4cdc9f941c16.svg)}.flag-icon-si{background-image:url(/assets/flags/4x3/si-289d6417f154323e7922df09ffc0f49ded31548c7ee8020c39cb85724ffbcea8.svg)}.flag-icon-si.flag-icon-squared{background-image:url(/assets/flags/1x1/si-ca40a5f4f38119d6f52ffd3ddb36af95951a2aa1fadcd897f5bc1641bb2e0051.svg)}.flag-icon-sj{background-image:url(/assets/flags/4x3/sj-67d4cdd268d0c0cd93fc561b506cb5646cb508385c93ed350d11f94aa1c83833.svg)}.flag-icon-sj.flag-icon-squared{background-image:url(/assets/flags/1x1/sj-f7c489607033138039612d6abe7f4b0b4b6dada5cac75d78204f404a0d292b1c.svg)}.flag-icon-sk{background-image:url(/assets/flags/4x3/sk-a0bdbb7f5d6998ffe9fcbc80bbdf0e6cff3629740d2ce1b8d61025e0a8b322b5.svg)}.flag-icon-sk.flag-icon-squared{background-image:url(/assets/flags/1x1/sk-a82a813b2d81af9be1aa775f22b2c2457d11e870e072d7e23957a11d0878faed.svg)}.flag-icon-sl{background-image:url(/assets/flags/4x3/sl-be265bed24cfe0b25778201f251e52e4e721e3d319795875913805d1aea84ebb.svg)}.flag-icon-sl.flag-icon-squared{background-image:url(/assets/flags/1x1/sl-cb8bccbaa21957f006ed4ae0144da81c999e93bd8014023b16b500fdcdc397d3.svg)}.flag-icon-sm{background-image:url(/assets/flags/4x3/sm-d7818df3f8f2d5dbed27dc5a0a80b1e41cdcd6130eeff221da58f0321e925f27.svg)}.flag-icon-sm.flag-icon-squared{background-image:url(/assets/flags/1x1/sm-6f87660dcac925bbdb036c79a0e20d3b208215d327be4c4764ae1069d6464efd.svg)}.flag-icon-sn{background-image:url(/assets/flags/4x3/sn-b131b17a374bcfbd00d442d282fa52f0e4e0e448cda1cdfaac25a95ff56443c0.svg)}.flag-icon-sn.flag-icon-squared{background-image:url(/assets/flags/1x1/sn-d180d3ce9846966dee6a3d9433ede7d24801dc4311636aabd470ec5b8765d772.svg)}.flag-icon-so{background-image:url(/assets/flags/4x3/so-3b5b77b371299478144a94b60c99524fb6b99bfedb3dcc976ab70185e07f399e.svg)}.flag-icon-so.flag-icon-squared{background-image:url(/assets/flags/1x1/so-50aa941f2d2954285ef9e5ac260cdd264a73cf2e4b0c627677f04141fff2afd3.svg)}.flag-icon-sr{background-image:url(/assets/flags/4x3/sr-94d0f0aefcbdea8d7ba35648eda5037e99bf4126723ce36416582ea43b08d3e2.svg)}.flag-icon-sr.flag-icon-squared{background-image:url(/assets/flags/1x1/sr-3944d683068d437471725d22fd71ccbe6a63ae307ff9775690417d3bf262cf82.svg)}.flag-icon-ss{background-image:url(/assets/flags/4x3/ss-f391e5002cbce83f97f7d1a11c284fa2e36a7d6dc734757d733656801ab17d0a.svg)}.flag-icon-ss.flag-icon-squared{background-image:url(/assets/flags/1x1/ss-853bd9f713d2f6b1fe540a82e8bf4754912da21575b3fe756b8741767f318f7a.svg)}.flag-icon-st{background-image:url(/assets/flags/4x3/st-b52bb48a2c0800f5cb4b07bdd93c3908f77bcb6800be883ebf943bbd3d99d42c.svg)}.flag-icon-st.flag-icon-squared{background-image:url(/assets/flags/1x1/st-d8b5b1c8b9fe947086a4d277d2ac5d6b9cff188dfd37bda66c8bf5e02c5facc8.svg)}.flag-icon-sv{background-image:url(/assets/flags/4x3/sv-6d02d63c7f04c9388e98f892cc43d8daa2110fc84242758d5627fcd247bfd09b.svg)}.flag-icon-sv.flag-icon-squared{background-image:url(/assets/flags/1x1/sv-fb4c8d7eb98396a93c5b9c37195d70e809e0d71d8b8f9316e842121f95bb82ea.svg)}.flag-icon-sx{background-image:url(/assets/flags/4x3/sx-fb6a7b1cbc5b29eeeb39a5aec64ef7aad432c37bbe848d29955a3786b9763224.svg)}.flag-icon-sx.flag-icon-squared{background-image:url(/assets/flags/1x1/sx-a37b124212f8530b921aef7657cfb35c2895a731c7a06f333faee4c93f32806a.svg)}.flag-icon-sy{background-image:url(/assets/flags/4x3/sy-e35f8d88c864ed4f38edb2f9f96d5bd69f6df078b50515b8c5467bf6b1689f50.svg)}.flag-icon-sy.flag-icon-squared{background-image:url(/assets/flags/1x1/sy-5d537bd5b42b58f6e8a7e33fbe5942a16126abb639edf9cb58b88938c57ebaa9.svg)}.flag-icon-sz{background-image:url(/assets/flags/4x3/sz-c65ae592e943217787848364bdb4c57335869f4626ce705adabdc2620669c1c6.svg)}.flag-icon-sz.flag-icon-squared{background-image:url(/assets/flags/1x1/sz-dd3d1c65bdf09317553f205e588e3dc7336acec1cb9315bfbe0f5bd8ca5bba3f.svg)}.flag-icon-tc{background-image:url(/assets/flags/4x3/tc-594b6cc87040836c6d6777afb5833d565d3e5e75f404350a51443ec4588a1ccb.svg)}.flag-icon-tc.flag-icon-squared{background-image:url(/assets/flags/1x1/tc-34a37006252eea340488220585c31d047b57e3e7934c77180d930972aaceadc3.svg)}.flag-icon-td{background-image:url(/assets/flags/4x3/td-b67a1978e3badb895ff640c80bb6c0e33eac354220c08cf3fc93d62bf5d685a3.svg)}.flag-icon-td.flag-icon-squared{background-image:url(/assets/flags/1x1/td-556b3a7991c17010cb7e1ff23c4edcc2dcdb8c406a128d407fd165ea8a19d311.svg)}.flag-icon-tf{background-image:url(/assets/flags/4x3/tf-35cd83351521f3022a43e01f0c40f34663a66ac1e92045979f31d3fd65c16d02.svg)}.flag-icon-tf.flag-icon-squared{background-image:url(/assets/flags/1x1/tf-485e71f61ff577735dbc4ba1025515c22a83c48ee7f3a2ed49804766c35f6ea5.svg)}.flag-icon-tg{background-image:url(/assets/flags/4x3/tg-24b25f4c2213fe35e5f5586d7ab23abf0c25ad2049708cd52ba72e1ec7b754ff.svg)}.flag-icon-tg.flag-icon-squared{background-image:url(/assets/flags/1x1/tg-05f3d98392a5ec3e4aecf8f629d3d03f05ac55abb7d9d84187d599acfe271374.svg)}.flag-icon-th{background-image:url(/assets/flags/4x3/th-cc936bacd84dddd15454ef06bc64e357f83854af34692fc37363272d61f637d4.svg)}.flag-icon-th.flag-icon-squared{background-image:url(/assets/flags/1x1/th-de82cbd770db2be53a8e3d59d86e2b748a5d3f96eb8584f7b9364cefbd06a172.svg)}.flag-icon-tj{background-image:url(/assets/flags/4x3/tj-b90bf3e2dd63265d55b67962b160df65f021c42b6ea304e2943c10b9e2a8749d.svg)}.flag-icon-tj.flag-icon-squared{background-image:url(/assets/flags/1x1/tj-5f6571e74b1f8720f9ecc2d3aa2098ca45d2e7ad6602b2a57c206384719b9f36.svg)}.flag-icon-tk{background-image:url(/assets/flags/4x3/tk-602520b29b909c96baea17a38eb654d6c6fbc7088f46a0cb8d8fe34ff92e3cb8.svg)}.flag-icon-tk.flag-icon-squared{background-image:url(/assets/flags/1x1/tk-fe1dc8aaa0643a45a74ecec8aec09f0fe2207d104bb3c28c0b84405f1275aeba.svg)}.flag-icon-tl{background-image:url(/assets/flags/4x3/tl-ebdb862aa5ae5de1a72242571deaa70bfb222f488a93b70e304f2075b474d54b.svg)}.flag-icon-tl.flag-icon-squared{background-image:url(/assets/flags/1x1/tl-485f02183bdb192ba3ce6e5f076e184112739f883ae0a8fde33c454377b848d6.svg)}.flag-icon-tm{background-image:url(/assets/flags/4x3/tm-5ddb4128bf0becd7c60413d5418027f5f01ca4bc72561d54b94febfee7a5a24b.svg)}.flag-icon-tm.flag-icon-squared{background-image:url(/assets/flags/1x1/tm-3521ad569a4095aa8d4166d5d9094fccfdbb3ea411207ad685b6dd5814ef3392.svg)}.flag-icon-tn{background-image:url(/assets/flags/4x3/tn-ca27eb50d88b11d20b5b09e2bbecb7753267222489920c526608e5d2acd22d79.svg)}.flag-icon-tn.flag-icon-squared{background-image:url(/assets/flags/1x1/tn-222c6cd4742c558f48ebcacb47ea334057642fffa3456a1c75e0fad9e728d09b.svg)}.flag-icon-to{background-image:url(/assets/flags/4x3/to-c9c509fc24f591fbe52bbf732c44291384c787796e1fc9c703a973587c3f8ad1.svg)}.flag-icon-to.flag-icon-squared{background-image:url(/assets/flags/1x1/to-cf26dfb44b56b915b2f11896355cb778b938ed54423311d69d7cda9626887dda.svg)}.flag-icon-tr{background-image:url(/assets/flags/4x3/tr-c40f697070cf8d8358785b9203d1c8f438976e3cd644a87d9ee16fa9960deaa4.svg)}.flag-icon-tr.flag-icon-squared{background-image:url(/assets/flags/1x1/tr-627dcf91a1e5153c045e33a3459b5d56002530fddd3fc53927f4d0fb7ea004a5.svg)}.flag-icon-tt{background-image:url(/assets/flags/4x3/tt-04786ffedbde2c96a30ad1cbf4db000848f14bd700324651fc88364e5f3c2fd0.svg)}.flag-icon-tt.flag-icon-squared{background-image:url(/assets/flags/1x1/tt-6a3c73bfa7782366d95e673d847ef8f84c0475b364d359def1efd264297bac30.svg)}.flag-icon-tv{background-image:url(/assets/flags/4x3/tv-20b56e7c0a2fbaa2a0b7b1bd87afc6368440f175fb3a0589de5e34e99d163fd7.svg)}.flag-icon-tv.flag-icon-squared{background-image:url(/assets/flags/1x1/tv-8bce1d7bde2e20dcc473ed3a33c66e4bedcf1acf2d2fff6d54353a480b8cafbc.svg)}.flag-icon-tw{background-image:url(/assets/flags/4x3/tw-36070ac0a15ab1f4811478da62e7678756a9aa266b141ed0549aba1c0e04333a.svg)}.flag-icon-tw.flag-icon-squared{background-image:url(/assets/flags/1x1/tw-fd7a0db2f3808842ca99176f097356fe9e6f3c120d6aa9e8c4a9c2dd4c3943ba.svg)}.flag-icon-tz{background-image:url(/assets/flags/4x3/tz-51ad7d69f059075df61b9226468af0d78642af4ad34a7540f64c5bea82e803d7.svg)}.flag-icon-tz.flag-icon-squared{background-image:url(/assets/flags/1x1/tz-0703f29a7ae02a9a1753cb1726dd2934d75ed3a12e8d63faa9fa866e1fe61440.svg)}.flag-icon-ua{background-image:url(/assets/flags/4x3/ua-7f7db03c3b492aaacd11b0abac70d543a7c0ec5265a36d529bbb80a7c432d81a.svg)}.flag-icon-ua.flag-icon-squared{background-image:url(/assets/flags/1x1/ua-25192fa80f120edb1dd1c4757fd7b79ef38f5e1729238f4135003e6a1501bf28.svg)}.flag-icon-ug{background-image:url(/assets/flags/4x3/ug-7635df53eafdf411be0809df835bfbcffd61badd6c4df3db0909c8b3188015a0.svg)}.flag-icon-ug.flag-icon-squared{background-image:url(/assets/flags/1x1/ug-537f34f64e723fbe7cb7902ea0e61303f1ada79214197efc39ebe2c52ce24186.svg)}.flag-icon-um{background-image:url(/assets/flags/4x3/um-a0ae80e34bbf94677dd6052ea87cc0090aba747dab5440e5ca6e231f7f07c96d.svg)}.flag-icon-um.flag-icon-squared{background-image:url(/assets/flags/1x1/um-3f1bc09babe7fdcf32518bb49d1aac3a66d0204f955eacca291c58d4f4ef895a.svg)}.flag-icon-us{background-image:url(/assets/flags/4x3/us-aefd8f7e57d11f7b0416d01d9c665ab3848b10af849f35a4d772d58d24d83329.svg)}.flag-icon-us.flag-icon-squared{background-image:url(/assets/flags/1x1/us-87af45be9346e8c820312976abe332ee11f8931e29fa361328d28660a711b1e2.svg)}.flag-icon-uy{background-image:url(/assets/flags/4x3/uy-9f636c8283abf56cc930746fd427c1d1644dcf8736c537629df13f760da96ebc.svg)}.flag-icon-uy.flag-icon-squared{background-image:url(/assets/flags/1x1/uy-e216b762a93ec55bf9b4ae3d35b7febe0b192a12246fd66c45139ce77fb2095e.svg)}.flag-icon-uz{background-image:url(/assets/flags/4x3/uz-697d596705372323beddccb3626d1ce405b36249315c6b006ff1529e24909ceb.svg)}.flag-icon-uz.flag-icon-squared{background-image:url(/assets/flags/1x1/uz-aa34cbe4f6f0e4b5d890975578d28cc9b1e88ebd503d3bdca693748eb29b3353.svg)}.flag-icon-va{background-image:url(/assets/flags/4x3/va-d24d3c5bee108c396997c3d5b2bd2273433752d8c222eb531650e51551a4afd0.svg)}.flag-icon-va.flag-icon-squared{background-image:url(/assets/flags/1x1/va-01160c1bffda12f0b94554ba0c50162a88da807943617334bd4c57a030985e95.svg)}.flag-icon-vc{background-image:url(/assets/flags/4x3/vc-ddf979bee2889414e5a05ac55f39a9c93f34e0aff0d35f007605049a2d8b5afb.svg)}.flag-icon-vc.flag-icon-squared{background-image:url(/assets/flags/1x1/vc-ac776e16dec19ff2e2d9238f541dae5d977282b451a83ab3d4122efed2392be9.svg)}.flag-icon-ve{background-image:url(/assets/flags/4x3/ve-e23abd006cc75a8c4f9ec1cb122b46f9b52e26c5606532d2c868277d4ccd523b.svg)}.flag-icon-ve.flag-icon-squared{background-image:url(/assets/flags/1x1/ve-1480713f28719e0a83da2c5f1333407dbfa5bcc0de8c9ba718fcf47273ee95ef.svg)}.flag-icon-vg{background-image:url(/assets/flags/4x3/vg-7f8f24a4d6995e4dd39e3d9098dad5e14649821fa12ffc200edf0a586285ee15.svg)}.flag-icon-vg.flag-icon-squared{background-image:url(/assets/flags/1x1/vg-b464b6a78e46c29df9e4bdadc2646208f11c59168706456075f970552a24efa8.svg)}.flag-icon-vi{background-image:url(/assets/flags/4x3/vi-58311325a293b046044976d899f288ce0fbe9bfd705a23947a9b38d7991983d7.svg)}.flag-icon-vi.flag-icon-squared{background-image:url(/assets/flags/1x1/vi-1c132d2cff66cdbdb7b6acf504bb0cd9d7579595d80c3fa6604ff24ca7a0184d.svg)}.flag-icon-vn{background-image:url(/assets/flags/4x3/vn-a918d3c9cdc368b1d2ff9614d58cbcd1d43b725889b0ba18f5d4e693071e389a.svg)}.flag-icon-vn.flag-icon-squared{background-image:url(/assets/flags/1x1/vn-895e428ae3d98c99dbb02088cf8ef040bfb031df6f16c3c8fc3678505d869791.svg)}.flag-icon-vu{background-image:url(/assets/flags/4x3/vu-2c286c778a7bed03cb603ab24b68dc91868f4f054cf4f851bdd17aa16731571c.svg)}.flag-icon-vu.flag-icon-squared{background-image:url(/assets/flags/1x1/vu-51ef23121e2641ebeeac50d31c4e52b7d00d3ab1bc9fc0ad95ea86fd3631975a.svg)}.flag-icon-wf{background-image:url(/assets/flags/4x3/wf-f7e9ac5edac196ac32d7bafa04b5c0d924b89e9d7e4f3535a6a26c6c1523639c.svg)}.flag-icon-wf.flag-icon-squared{background-image:url(/assets/flags/1x1/wf-95a920a79aa32d92f8a362321aae4230e17025ac04d976593f4423d0c37c1aee.svg)}.flag-icon-ws{background-image:url(/assets/flags/4x3/ws-efc6505a802a3fa2018bc102fc2e11db8c738464c619381b6edc32d0a89341a3.svg)}.flag-icon-ws.flag-icon-squared{background-image:url(/assets/flags/1x1/ws-e3afb81c037c814620027bf61ac5e266683cab7ba5796ecf10b64c110cfcb932.svg)}.flag-icon-ye{background-image:url(/assets/flags/4x3/ye-fd88856e70d66b01b4f0f608936a61cf3b1d9dad40a2932fc5da4d01f72a447b.svg)}.flag-icon-ye.flag-icon-squared{background-image:url(/assets/flags/1x1/ye-0c0e32330871e6d83af54affb7dadbbe736f9799068508211fbae54db9bbdcc6.svg)}.flag-icon-yt{background-image:url(/assets/flags/4x3/yt-2eef17b543424082d9f9b42a67e84c20b52e7f7eae8c4326d60711158da51d5b.svg)}.flag-icon-yt.flag-icon-squared{background-image:url(/assets/flags/1x1/yt-911da8075337fd8f75ecc8a338c294cb771c6b9a08576f96c9de1437888cd2a7.svg)}.flag-icon-za{background-image:url(/assets/flags/4x3/za-45991a2aee307198510e56bf92523070aac4241cafe6c3ddb8f89b20a61d6371.svg)}.flag-icon-za.flag-icon-squared{background-image:url(/assets/flags/1x1/za-bc09a89b29311ea7e582ef60bf4e18aff7c29de6fbefe309463ca765723a0ce8.svg)}.flag-icon-zm{background-image:url(/assets/flags/4x3/zm-07c0f30d86e66d0cad9d66cd9c9384d9cce1844f159d245deff6717101fe49c2.svg)}.flag-icon-zm.flag-icon-squared{background-image:url(/assets/flags/1x1/zm-fc5bce3834c71fe36617ea5f57f0bd1dcf3880a7c6aa515dcf92ae067f796241.svg)}.flag-icon-zw{background-image:url(/assets/flags/4x3/zw-5217c74f14d9fdda244b69c5982bbabee052ac0f1cc0704926e8b1e621e50f9a.svg)}.flag-icon-zw.flag-icon-squared{background-image:url(/assets/flags/1x1/zw-a33b191c631709b9e1d85e06f5b15535fb544d4668c8bef865ede2a0b6a88ed9.svg)}.flag-icon-es-ct{background-image:url(/assets/flags/4x3/es-ct-bcbb454a50c9a647efd43dcf041445f15e8dd70654bde530bf62401d4fb7738d.svg)}.flag-icon-es-ct.flag-icon-squared{background-image:url(/assets/flags/1x1/es-ct-7f13eb2b2f5c11dccd7043286bed7540d4dad4b1a8367b0aca1b8405a351b2ef.svg)}.flag-icon-eu{background-image:url(/assets/flags/4x3/eu-5f129db64306353251b78f998d531d2f1019404cfa890ae63ed70dc316c7f240.svg)}.flag-icon-eu.flag-icon-squared{background-image:url(/assets/flags/1x1/eu-ec59ac8daf2a63ea8e299ad63a208445d68a96affe6a10a7328acb6799d44127.svg)}.flag-icon-gb-eng{background-image:url(/assets/flags/4x3/gb-eng-1895f4e35ae299f5d869da2462ffcf98df4b08dcddc531c8f175e49720001a14.svg)}.flag-icon-gb-eng.flag-icon-squared{background-image:url(/assets/flags/1x1/gb-eng-d11afb87f40f35acda435a886ea044bd5e0b6f363ba0c7319f1d0181551fecf3.svg)}.flag-icon-gb-nir{background-image:url(/assets/flags/4x3/gb-nir-b280f09c787f495c1074376cd67537b40216f672917e7d204bb12b8e7c72afaf.svg)}.flag-icon-gb-nir.flag-icon-squared{background-image:url(/assets/flags/1x1/gb-nir-2e516e72e0e8e244ef430e6608322f8c4fb276807ab033279b2a6570dd68fd41.svg)}.flag-icon-gb-sct{background-image:url(/assets/flags/4x3/gb-sct-1b9e407802ae901cf8da740c382ec2b19821837d76271a73346e0c63c2244506.svg)}.flag-icon-gb-sct.flag-icon-squared{background-image:url(/assets/flags/1x1/gb-sct-d01e8a06a340e30ce52e8a3aba7ca6207afb96fdb238a815cc6cb92df8fa5df3.svg)}.flag-icon-gb-wls{background-image:url(/assets/flags/4x3/gb-wls-5232b3e376a19866cddec8225cba242783b2a48063811957f1ce5a2c347c5bc9.svg)}.flag-icon-gb-wls.flag-icon-squared{background-image:url(/assets/flags/1x1/gb-wls-126615bc3597fda1ca4ee931ef24f6c2cf2547998c06db9c1ded69fe66c479e9.svg)}.flag-icon-un{background-image:url(/assets/flags/4x3/un-31dece22ae18c3e01e86648ef3ef45f2f5b3d9d28a1e2bbbcdb1d87c37af55af.svg)}.flag-icon-un.flag-icon-squared{background-image:url(/assets/flags/1x1/un-455b5f3173ca9ac64f2135fac4ead7217d7fbe07551d0d2cc60216f83208f798.svg)}.leaflet-pane,.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-tile-container,.leaflet-pane>svg,.leaflet-pane>canvas,.leaflet-zoom-box,.leaflet-image-layer,.leaflet-layer{position:absolute;left:0;top:0}.leaflet-container{overflow:hidden}.leaflet-tile,.leaflet-marker-icon,.leaflet-marker-shadow{-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-user-drag:none}.leaflet-tile::selection{background:transparent}.leaflet-safari .leaflet-tile{image-rendering:-webkit-optimize-contrast}.leaflet-safari .leaflet-tile-container{width:1600px;height:1600px;-webkit-transform-origin:0 0}.leaflet-marker-icon,.leaflet-marker-shadow{display:block}.leaflet-container .leaflet-overlay-pane svg,.leaflet-container .leaflet-marker-pane img,.leaflet-container .leaflet-shadow-pane img,.leaflet-container .leaflet-tile-pane img,.leaflet-container img.leaflet-image-layer,.leaflet-container .leaflet-tile{max-width:none !important;max-height:none !important}.leaflet-container.leaflet-touch-zoom{-ms-touch-action:pan-x pan-y;touch-action:pan-x pan-y}.leaflet-container.leaflet-touch-drag{-ms-touch-action:pinch-zoom;touch-action:none;touch-action:pinch-zoom}.leaflet-container.leaflet-touch-drag.leaflet-touch-zoom{-ms-touch-action:none;touch-action:none}.leaflet-container{-webkit-tap-highlight-color:transparent}.leaflet-container a{-webkit-tap-highlight-color:rgba(51,181,229,0.4)}.leaflet-tile{filter:inherit;visibility:hidden}.leaflet-tile-loaded{visibility:inherit}.leaflet-zoom-box{width:0;height:0;-moz-box-sizing:border-box;box-sizing:border-box;z-index:800}.leaflet-overlay-pane svg{-moz-user-select:none}.leaflet-pane{z-index:400}.leaflet-tile-pane{z-index:200}.leaflet-overlay-pane{z-index:400}.leaflet-shadow-pane{z-index:500}.leaflet-marker-pane{z-index:600}.leaflet-tooltip-pane{z-index:650}.leaflet-popup-pane{z-index:700}.leaflet-map-pane canvas{z-index:100}.leaflet-map-pane svg{z-index:200}.leaflet-vml-shape{width:1px;height:1px}.lvml{behavior:url(#default#VML);display:inline-block;position:absolute}.leaflet-control{position:relative;z-index:800;pointer-events:visiblePainted;pointer-events:auto}.leaflet-top,.leaflet-bottom{position:absolute;z-index:1000;pointer-events:none}.leaflet-top{top:0}.leaflet-right{right:0}.leaflet-bottom{bottom:0}.leaflet-left{left:0}.leaflet-control{float:left;clear:both}.leaflet-right .leaflet-control{float:right}.leaflet-top .leaflet-control{margin-top:10px}.leaflet-bottom .leaflet-control{margin-bottom:10px}.leaflet-left .leaflet-control{margin-left:10px}.leaflet-right .leaflet-control{margin-right:10px}.leaflet-fade-anim .leaflet-tile{will-change:opacity}.leaflet-fade-anim .leaflet-popup{opacity:0;-webkit-transition:opacity 0.2s linear;-moz-transition:opacity 0.2s linear;transition:opacity 0.2s linear}.leaflet-fade-anim .leaflet-map-pane .leaflet-popup{opacity:1}.leaflet-zoom-animated{-webkit-transform-origin:0 0;-ms-transform-origin:0 0;transform-origin:0 0}.leaflet-zoom-anim .leaflet-zoom-animated{will-change:transform}.leaflet-zoom-anim .leaflet-zoom-animated{-webkit-transition:-webkit-transform 0.25s cubic-bezier(0, 0, 0.25, 1);-moz-transition:-moz-transform 0.25s cubic-bezier(0, 0, 0.25, 1);transition:transform 0.25s cubic-bezier(0, 0, 0.25, 1)}.leaflet-zoom-anim .leaflet-tile,.leaflet-pan-anim .leaflet-tile{-webkit-transition:none;-moz-transition:none;transition:none}.leaflet-zoom-anim .leaflet-zoom-hide{visibility:hidden}.leaflet-interactive{cursor:pointer}.leaflet-grab{cursor:-webkit-grab;cursor:-moz-grab;cursor:grab}.leaflet-crosshair,.leaflet-crosshair .leaflet-interactive{cursor:crosshair}.leaflet-popup-pane,.leaflet-control{cursor:auto}.leaflet-dragging .leaflet-grab,.leaflet-dragging .leaflet-grab .leaflet-interactive,.leaflet-dragging .leaflet-marker-draggable{cursor:move;cursor:-webkit-grabbing;cursor:-moz-grabbing;cursor:grabbing}.leaflet-marker-icon,.leaflet-marker-shadow,.leaflet-image-layer,.leaflet-pane>svg path,.leaflet-tile-container{pointer-events:none}.leaflet-marker-icon.leaflet-interactive,.leaflet-image-layer.leaflet-interactive,.leaflet-pane>svg path.leaflet-interactive,svg.leaflet-image-layer.leaflet-interactive path{pointer-events:visiblePainted;pointer-events:auto}.leaflet-container{background:#ddd;outline:0}.leaflet-container a{color:#0078A8}.leaflet-container a.leaflet-active{outline:2px solid orange}.leaflet-zoom-box{border:2px dotted #38f;background:rgba(255,255,255,0.5)}.leaflet-container{font:12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif}.leaflet-bar{box-shadow:0 1px 5px rgba(0,0,0,0.65);border-radius:4px}.leaflet-bar a,.leaflet-bar a:hover{background-color:#fff;border-bottom:1px solid #ccc;width:26px;height:26px;line-height:26px;display:block;text-align:center;text-decoration:none;color:black}.leaflet-bar a,.leaflet-control-layers-toggle{background-position:50% 50%;background-repeat:no-repeat;display:block}.leaflet-bar a:hover{background-color:#f4f4f4}.leaflet-bar a:first-child{border-top-left-radius:4px;border-top-right-radius:4px}.leaflet-bar a:last-child{border-bottom-left-radius:4px;border-bottom-right-radius:4px;border-bottom:none}.leaflet-bar a.leaflet-disabled{cursor:default;background-color:#f4f4f4;color:#bbb}.leaflet-touch .leaflet-bar a{width:30px;height:30px;line-height:30px}.leaflet-touch .leaflet-bar a:first-child{border-top-left-radius:2px;border-top-right-radius:2px}.leaflet-touch .leaflet-bar a:last-child{border-bottom-left-radius:2px;border-bottom-right-radius:2px}.leaflet-control-zoom-in,.leaflet-control-zoom-out{font:bold 18px 'Lucida Console', Monaco, monospace;text-indent:1px}.leaflet-touch .leaflet-control-zoom-in,.leaflet-touch .leaflet-control-zoom-out{font-size:22px}.leaflet-control-layers{box-shadow:0 1px 5px rgba(0,0,0,0.4);background:#fff;border-radius:5px}.leaflet-control-layers-toggle{background-image:url(/assets/leaflet/dist/images/layers-1dbbe9d028e292f36fcba8f8b3a28d5e8932754fc2215b9ac69e4cdecf5107c6.png);width:36px;height:36px}.leaflet-retina .leaflet-control-layers-toggle{background-image:url(/assets/leaflet/dist/images/layers-2x-066daca850d8ffbef007af00b06eac0015728dee279c51f3cb6c716df7c42edf.png);background-size:26px 26px}.leaflet-touch .leaflet-control-layers-toggle{width:44px;height:44px}.leaflet-control-layers .leaflet-control-layers-list,.leaflet-control-layers-expanded .leaflet-control-layers-toggle{display:none}.leaflet-control-layers-expanded .leaflet-control-layers-list{display:block;position:relative}.leaflet-control-layers-expanded{padding:6px 10px 6px 6px;color:#333;background:#fff}.leaflet-control-layers-scrollbar{overflow-y:scroll;overflow-x:hidden;padding-right:5px}.leaflet-control-layers-selector{margin-top:2px;position:relative;top:1px}.leaflet-control-layers label{display:block}.leaflet-control-layers-separator{height:0;border-top:1px solid #ddd;margin:5px -10px 5px -6px}.leaflet-default-icon-path{background-image:url(/assets/leaflet/dist/images/marker-icon-574c3a5cca85f4114085b6841596d62f00d7c892c7b03f28cbfa301deb1dc437.png)}.leaflet-container .leaflet-control-attribution{background:#fff;background:rgba(255,255,255,0.7);margin:0}.leaflet-control-attribution,.leaflet-control-scale-line{padding:0 5px;color:#333}.leaflet-control-attribution a{text-decoration:none}.leaflet-control-attribution a:hover{text-decoration:underline}.leaflet-container .leaflet-control-attribution,.leaflet-container .leaflet-control-scale{font-size:11px}.leaflet-left .leaflet-control-scale{margin-left:5px}.leaflet-bottom .leaflet-control-scale{margin-bottom:5px}.leaflet-control-scale-line{border:2px solid #777;border-top:none;line-height:1.1;padding:2px 5px 1px;font-size:11px;white-space:nowrap;overflow:hidden;-moz-box-sizing:border-box;box-sizing:border-box;background:#fff;background:rgba(255,255,255,0.5)}.leaflet-control-scale-line:not(:first-child){border-top:2px solid #777;border-bottom:none;margin-top:-2px}.leaflet-control-scale-line:not(:first-child):not(:last-child){border-bottom:2px solid #777}.leaflet-touch .leaflet-control-attribution,.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{box-shadow:none}.leaflet-touch .leaflet-control-layers,.leaflet-touch .leaflet-bar{border:2px solid rgba(0,0,0,0.2);background-clip:padding-box}.leaflet-popup{position:absolute;text-align:center;margin-bottom:20px}.leaflet-popup-content-wrapper{padding:1px;text-align:left;border-radius:12px}.leaflet-popup-content{margin:13px 19px;line-height:1.4}.leaflet-popup-content p{margin:18px 0}.leaflet-popup-tip-container{width:40px;height:20px;position:absolute;left:50%;margin-left:-20px;overflow:hidden;pointer-events:none}.leaflet-popup-tip{width:17px;height:17px;padding:1px;margin:-10px auto 0;-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);transform:rotate(45deg)}.leaflet-popup-content-wrapper,.leaflet-popup-tip{background:white;color:#333;box-shadow:0 3px 14px rgba(0,0,0,0.4)}.leaflet-container a.leaflet-popup-close-button{position:absolute;top:0;right:0;padding:4px 4px 0 0;border:none;text-align:center;width:18px;height:14px;font:16px/14px Tahoma, Verdana, sans-serif;color:#c3c3c3;text-decoration:none;font-weight:bold;background:transparent}.leaflet-container a.leaflet-popup-close-button:hover{color:#999}.leaflet-popup-scrolled{overflow:auto;border-bottom:1px solid #ddd;border-top:1px solid #ddd}.leaflet-oldie .leaflet-popup-content-wrapper{zoom:1}.leaflet-oldie .leaflet-popup-tip{width:24px;margin:0 auto;-ms-filter:"progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";filter:progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)}.leaflet-oldie .leaflet-popup-tip-container{margin-top:-1px}.leaflet-oldie .leaflet-control-zoom,.leaflet-oldie .leaflet-control-layers,.leaflet-oldie .leaflet-popup-content-wrapper,.leaflet-oldie .leaflet-popup-tip{border:1px solid #999}.leaflet-div-icon{background:#fff;border:1px solid #666}.leaflet-tooltip{position:absolute;padding:6px;background-color:#fff;border:1px solid #fff;border-radius:3px;color:#222;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;pointer-events:none;box-shadow:0 1px 3px rgba(0,0,0,0.4)}.leaflet-tooltip.leaflet-clickable{cursor:pointer;pointer-events:auto}.leaflet-tooltip-top:before,.leaflet-tooltip-bottom:before,.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{position:absolute;pointer-events:none;border:6px solid transparent;background:transparent;content:""}.leaflet-tooltip-bottom{margin-top:6px}.leaflet-tooltip-top{margin-top:-6px}.leaflet-tooltip-bottom:before,.leaflet-tooltip-top:before{left:50%;margin-left:-6px}.leaflet-tooltip-top:before{bottom:0;margin-bottom:-12px;border-top-color:#fff}.leaflet-tooltip-bottom:before{top:0;margin-top:-12px;margin-left:-6px;border-bottom-color:#fff}.leaflet-tooltip-left{margin-left:-6px}.leaflet-tooltip-right{margin-left:6px}.leaflet-tooltip-left:before,.leaflet-tooltip-right:before{top:50%;margin-top:-6px}.leaflet-tooltip-left:before{right:0;margin-right:-12px;border-left-color:#fff}.leaflet-tooltip-right:before{left:0;margin-left:-12px;border-right-color:#fff}.leaflet-cluster-anim .leaflet-marker-icon,.leaflet-cluster-anim .leaflet-marker-shadow{-webkit-transition:-webkit-transform 0.3s ease-out, opacity 0.3s ease-in;-moz-transition:-moz-transform 0.3s ease-out, opacity 0.3s ease-in;-o-transition:-o-transform 0.3s ease-out, opacity 0.3s ease-in;transition:transform 0.3s ease-out, opacity 0.3s ease-in}.leaflet-cluster-spider-leg{-webkit-transition:-webkit-stroke-dashoffset 0.3s ease-out, -webkit-stroke-opacity 0.3s ease-in;-moz-transition:-moz-stroke-dashoffset 0.3s ease-out, -moz-stroke-opacity 0.3s ease-in;-o-transition:-o-stroke-dashoffset 0.3s ease-out, -o-stroke-opacity 0.3s ease-in;transition:stroke-dashoffset 0.3s ease-out, stroke-opacity 0.3s ease-in}.marker-cluster-small{background-color:rgba(181,226,140,0.6)}.marker-cluster-small div{background-color:rgba(110,204,57,0.6)}.marker-cluster-medium{background-color:rgba(241,211,87,0.6)}.marker-cluster-medium div{background-color:rgba(240,194,12,0.6)}.marker-cluster-large{background-color:rgba(253,156,115,0.6)}.marker-cluster-large div{background-color:rgba(241,128,23,0.6)}.leaflet-oldie .marker-cluster-small{background-color:#b5e28c}.leaflet-oldie .marker-cluster-small div{background-color:#6ecc39}.leaflet-oldie .marker-cluster-medium{background-color:#f1d357}.leaflet-oldie .marker-cluster-medium div{background-color:#f0c20c}.leaflet-oldie .marker-cluster-large{background-color:#fd9c73}.leaflet-oldie .marker-cluster-large div{background-color:#f18017}.marker-cluster{background-clip:padding-box;border-radius:20px}.marker-cluster div{width:30px;height:30px;margin-left:5px;margin-top:5px;text-align:center;border-radius:15px;font:12px "Helvetica Neue", Arial, Helvetica, sans-serif}.marker-cluster span{line-height:30px}.awesome-marker{background:url(/assets/markers-soft-e78784e4ed70aaffddd73c315fab590233cc4e7b72388d7dd47a14796fc7c739.png) no-repeat 0 0;width:35px;height:46px;position:absolute;left:0;top:0;display:block;text-align:center}.awesome-marker-shadow{background:url(/assets/markers-shadow-8703a2262710f5e3d29e65d2acdf90d6512e159e119d27b8234731d8a6208a20.png) no-repeat 0 0;width:36px;height:16px}@media (min--moz-device-pixel-ratio: 1.5), (-o-min-device-pixel-ratio: 3 / 2), (-webkit-min-device-pixel-ratio: 1.5), (min-device-pixel-ratio: 1.5), (min-resolution: 1.5dppx){.awesome-marker{background-image:url(/assets/markers-soft@2x-c1e77253a8bfbe30cec24885d7046f443b76ebb66f4c961f77083b03f4a5cbaf.png);background-size:720px 46px}.awesome-marker-shadow{background-image:url(/assets/markers-shadow@2x-b21a536be27313fb504f69f5899ff0b1245b276571769ac08d6c32c35676e47a.png);background-size:35px 16px}}.awesome-marker i{color:#333;margin-top:10px;display:inline-block;font-size:14px}.awesome-marker .icon-white{color:#fff}.awesome-marker-icon-red{background-position:0 0}.awesome-marker-icon-darkred{background-position:-180px 0}.awesome-marker-icon-lightred{background-position:-360px 0}.awesome-marker-icon-orange{background-position:-36px 0}.awesome-marker-icon-beige{background-position:-396px 0}.awesome-marker-icon-green{background-position:-72px 0}.awesome-marker-icon-darkgreen{background-position:-252px 0}.awesome-marker-icon-lightgreen{background-position:-432px 0}.awesome-marker-icon-blue{background-position:-108px 0}.awesome-marker-icon-darkblue{background-position:-216px 0}.awesome-marker-icon-lightblue{background-position:-468px 0}.awesome-marker-icon-purple{background-position:-144px 0}.awesome-marker-icon-darkpurple{background-position:-288px 0}.awesome-marker-icon-pink{background-position:-504px 0}.awesome-marker-icon-cadetblue{background-position:-324px 0}.awesome-marker-icon-white{background-position:-574px 0}.awesome-marker-icon-gray{background-position:-648px 0}.awesome-marker-icon-lightgray{background-position:-612px 0}.awesome-marker-icon-black{background-position:-682px 0}body.agendadescommuns{font-family:georgia, serif}body.agendadescommuns header.top{padding-left:120px;padding-right:120px;background-image:url(agendadescommuns.png);background-repeat:no-repeat;background-position:20px top}body.agendadescommuns header.top img.logo{display:none}body.agendadescommuns ul.countries,body.agendadescommuns form#orga_search,body.agendadescommuns a#banner{display:none}body.agendadescommuns .city{text-transform:uppercase}body.agendadescommuns.events.index table tr .day_number{color:#727070}body.agendadescommuns.events.index table tr td.current-month.past,body.agendadescommuns.events.index table tr td.current-month.past .day_number{color:#FFFAEB;background-color:#7494B5}body.agendadescommuns.events.index table tr td.current-month.today{border-color:#FFFAEB;background-color:#DBEDFF}body.agendadescommuns.events.index table tr td.current-month.future{color:#444;border-color:#EAE4D3;background-color:#F0E8D1}*{height:auto;padding:0;max-width:100%;box-sizing:border-box;margin-left:auto;margin-right:auto}html{height:100%;background-color:#9CC5EE}html.iframe{background-color:transparent}html.iframe body{border:none;margin:0;padding:0;background-color:transparent}html.iframe body>header,html.iframe body>footer,html.iframe body h2,html.iframe body nav,html.iframe body .orga_search,html.iframe body #banner{display:none}body{border:1px solid #68A6E5;margin:0.2%;padding:1%;font-size:calc(6px + 0.8vw);min-height:99.1%;text-align:center;font-family:sans-serif;background-color:white}body header *,body main *,body footer *{transition-duration:0.5s}img:-moz-broken{opacity:0}a:link,a:visited{color:#258;text-decoration:none}a:hover,a:active,a:focus{color:#2E97FF}#flash-messages .flash{color:white;border:solid 1px #007ba0;margin:1em auto;padding:0.5em 1.1em;max-width:50em;font-size:larger;text-align:justify;box-shadow:0 0 0.3em gray;border-radius:3px;background-color:#008cba}#flash-messages .flash.notice{border-color:#3a945b;background-color:#43ac6a}#flash-messages .flash.alert{border-color:#de2b0f;background-color:#f04124}h3.warning{color:white;margin:0;padding:1em;display:inline-block;text-align:center;box-shadow:0 0 0.3em gray;border-radius:1em;background-color:orange}header.top{position:relative;text-align:left}header.top img.logo{float:left;max-width:12vw;margin-right:1%}header.top h1{margin:0;padding:0}header.top h2{font-size:inherit;font-style:italic;font-weight:normal;margin-top:0.2em}header.top ul.regions{top:-3.3em;right:0;position:absolute;font-size:smaller}header.top:hover ul.regions{top:-0.8em}main,body.mce-content-body{clear:both;position:relative}main h3,body.mce-content-body h3{text-align:left}main ul,main ol,body.mce-content-body ul,body.mce-content-body ol{text-align:left;padding-left:1em;list-style-position:inside}main p,body.mce-content-body p{text-align:left}main p.label,body.mce-content-body p.label{text-align:center}main p span.label:after,body.mce-content-body p span.label:after{content:':'}main hr,body.mce-content-body hr{margin:10px 20px}aside{float:right;border:1px solid #96CFFF;margin:0 1.2em;z-index:10;padding:5px;position:relative;max-width:20em;box-shadow:4px 4px 1em gray;margin-right:-4em;border-radius:1em;background-color:#D6ECFF}aside h2{border-bottom:1px black solid;padding-bottom:0.3em}aside ul a{padding:0.5em 1em 0.5em 0;display:block}main{width:60em}body.index main{width:initial}fieldset{border:none;margin:1em auto;padding:2%;box-shadow:1px 1px 5px gray;border-radius:0.4em}fieldset legend{color:#666;padding:0 1em;font-size:larger;background-color:white}fieldset h2{margin-top:0}footer.bottom nav{clear:both}footer.bottom nav a{padding:1.8%;display:inline-block;font-weight:bolder}footer.bottom nav a:hover{text-shadow:0 0 1em lightgray}#loading{top:45%;left:45%;color:gray;display:none;position:fixed;font-size:10vw;text-shadow:0 0 4px gray;vertical-align:baseline}.pagination span{display:none}.pagination span.next{display:block}body.digests main{padding:1em;max-width:60em;box-shadow:1px 1px 5px gray;border-radius:0.4em}body.digests main h2{margin:0;padding:0;font-size:larger;text-align:left}body.digests main .description p,body.digests main .second_part p{white-space:pre-line}body.digests main textarea{width:40em;height:20em}header.calendar-header{font-size:larger}header.calendar-header a:first-child,header.calendar-header a:last-child{padding:0 0.3em}em.locality.fa{color:gray}strong.city:after,em.city:after{content:':';margin-left:0.25em}p.full_address span:after{content:','}p.full_address span:last-child:after{content:''}.calendar-header,.month{text-transform:capitalize}body.events.index table{width:100%;table-layout:fixed}body.events.index table tr th{text-transform:capitalize}body.events.index table tr td{height:4.8em;border:1px solid #89B7E5;padding:1px;position:relative;vertical-align:top;background-color:#A1C3E7}body.events.index table tr td.past .event{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}body.events.index table tr td.today{border:1px solid #FFB578;background-color:#FFE0C7}body.events.index table tr td.today .day_number{color:#531}body.events.index table tr td.today .event a:link,body.events.index table tr td.today .event a:visited{color:#730}body.events.index table tr td.future{border-color:#96cfff;background-color:#C6E5FF}body.events.index table tr td.prev-month,body.events.index table tr td.next-month{border:none;background-color:#ededed}body.events.index table tr td.prev-month li,body.events.index table tr td.next-month li{color:#555}body.events.index table tr td.prev-month .event a:link,body.events.index table tr td.prev-month .event a:visited,body.events.index table tr td.next-month .event a:link,body.events.index table tr td.next-month .event a:visited{color:#444}body.events.index table tr td .day_number{float:left;color:#111;font-size:0.6em;font-weight:bolder;letter-spacing:2px}body.events.index table tr td:hover .day_number{color:black}body.events.index table tr td ul{clear:left;margin:0;padding:0}body.events.index table tr td ul li{color:#444;margin:0;padding:0}body.events.index table tr td ul li em.fa.fa-globe{color:red;font-size:smaller}body.events.index table tr td ul .event{padding-left:0.2em}body.events.index table tr td ul .event img{vertical-align:middle}body.events.index table tr td ul .event a:link,body.events.index table tr td ul .event a:visited{color:#111;font-size:smaller}body.events.index table tr td ul .event a:link:hover,body.events.index table tr td ul .event a:visited:hover{color:black;text-decoration:underline}.links{float:right}.fa-rss{color:darkorange}a#banner{float:left}body.events.show main,body.orgas.show main,body.tags.show main,body.pages main{padding:1em;max-width:60em;box-shadow:1px 1px 5px gray;border-radius:0.4em}body.events.show main h2,body.orgas.show main h2,body.tags.show main h2,body.pages main h2{margin-top:1em}html.iframe main{box-shadow:none !important}#advises{border:1px solid #FFB578;max-width:60em;border-radius:0.2em;padding-left:10px;padding-right:10px;background-color:#ffe0c7}#advises>*:first-child{font-size:1.9em;font-weight:normal}#advises>*:first-child:before{content:'🛈 '}#advises a{color:#8F4900}.description img,body.mce-content-body img{margin-left:1%;margin-right:1%}article.event{box-shadow:-1em 1em 1em -1em gray;margin-left:1em;padding-left:1em;padding-bottom:0.4em;border-bottom-left-radius:1em}body.mce-content-body{margin:0;border:none;padding:1px 1%;font-size:inherit;min-height:100%}.tox-tinymce{border:none !important}.helper p{color:gray;text-align:right;margin-top:0;margin-bottom:0}legend{margin-left:0}.field{color:#666;border:none;display:flex;flex-wrap:wrap;box-shadow:0 0 2px darkgray;align-items:center;border-radius:4px}.field>label,.field .field_with_errors>label{width:10em;margin:0;padding:0.8em;text-align:right;padding-left:0}.field .helper{color:#888;padding:0.8em;font-style:italic;margin-left:0}.field input,.field textarea,.field div.tagsinput,.field .field_with_errors:last-child,.field>div{flex-grow:1}.field input[type=number],.field input[type=checkbox],.field textarea[type=number],.field textarea[type=checkbox],.field div.tagsinput[type=number],.field div.tagsinput[type=checkbox],.field .field_with_errors:last-child[type=number],.field .field_with_errors:last-child[type=checkbox],.field>div[type=number],.field>div[type=checkbox]{flex-grow:unset;margin-left:0;margin-right:0}.field select{margin-left:0;margin-right:0}.field .field_with_errors:first-child{width:10em}.field .field_with_errors>*{width:100%;display:block}input,textarea,select,a.button,.actions>button,div.tagsinput,.ui-autocomplete-input{color:black;border:solid 0.25em transparent;outline:none;padding:0.25em;font-size:inherit;font-family:inherit;background-color:transparent}input:focus,textarea:focus,select:focus,a.button:focus,.actions>button:focus,div.tagsinput:focus,.ui-autocomplete-input:focus{border-color:#F0F8FF}input[type=radio],textarea[type=radio],select[type=radio],a.button[type=radio],.actions>button[type=radio],div.tagsinput[type=radio],.ui-autocomplete-input[type=radio]{box-shadow:none}input[type=radio]+label,textarea[type=radio]+label,select[type=radio]+label,a.button[type=radio]+label,.actions>button[type=radio]+label,div.tagsinput[type=radio]+label,.ui-autocomplete-input[type=radio]+label{border:none}input[type=submit],input.button,textarea[type=submit],textarea.button,select[type=submit],select.button,a.button[type=submit],a.button.button,.actions>button[type=submit],.actions>button.button,div.tagsinput[type=submit],div.tagsinput.button,.ui-autocomplete-input[type=submit],.ui-autocomplete-input.button{cursor:pointer;margin:3px 0.4em;font-size:larger;box-shadow:0 0 2px darkgray;font-weight:bolder;letter-spacing:2px;background-color:#9CC5EE}.field_with_errors{display:inline}.field_with_errors input,.field_with_errors textarea,.field_with_errors select,.field_with_errors a.button{background-color:pink}.radios{margin-left:0}.radios [type=radio]{display:none}.radios label{color:#258;cursor:pointer;padding:0.5em;display:inline-block}.radios label:hover{color:#222;box-shadow:0 0 0 4px lightgray}.radios [type=radio]:checked+label{color:black;box-shadow:0 0 0 6px lightgray}.radios [type=radio]:invalid+label{box-shadow:0 0 1px tomato}.actions{text-align:center}.actions input{font-size:x-large}.field.required>label:after,.field.required .field_with_errors>label:after,.list.required>label:after,.list.required .field_with_errors>label:after,dl.required>label:after,dl.required .field_with_errors>label:after{color:darkred;content:'*';font-size:smaller;margin-left:0.4em}.field>label:before,.field .field_with_errors>label:before,.field th:before,.field th a:before,.list>label:before,.list .field_with_errors>label:before,.list th:before,.list th a:before,dl>label:before,dl .field_with_errors>label:before,dl th:before,dl th a:before{margin-right:0.4em}.field.login label:before,.list.login label:before,dl.login label:before{content:"\f2f6"}.field.password label:before,.list.password label:before,dl.password label:before{content:"\f09c"}.field.title label:before,.list.title label:before,dl.title label:before{content:"\f1ea"}.field.start_time label:before,.list.start_time label:before,dl.start_time label:before{content:"\f205"}.field.end_time label:before,.list.end_time label:before,dl.end_time label:before{content:"\f204"}.field.repeat label:before,.list.repeat label:before,dl.repeat label:before{content:"\f01e"}.field.rule>label:before,.list.rule>label:before,dl.rule>label:before{content:"\f1ec"}.field.description label:before,.list.description label:before,dl.description label:before{content:"\f044"}.field.place_name label:before,.list.place_name label:before,dl.place_name label:before{content:"\f276"}.field.address label:before,.list.address label:before,dl.address label:before{content:"\f041"}.field.city label:before,.field th.city a:before,.list.city label:before,.list th.city a:before,dl.city label:before,dl th.city a:before{content:"\f1ad"}.field.department label:before,.field th.department a:before,.list.department label:before,.list th.department a:before,dl.department label:before,dl th.department a:before{content:"\f12e"}.field.region>label:before,.field th.region a:before,.list.region>label:before,.list th.region a:before,dl.region>label:before,dl th.region a:before{content:"\f3ed"}.field.locality>label:before,.list.locality>label:before,dl.locality>label:before{content:"\f065"}.field.contact label:before,.list.contact label:before,dl.contact label:before{content:"\f0e0"}.field.submitter label:before,.list.submitter label:before,dl.submitter label:before{content:"\f0e0"}.field.url label:before,.field th.url:before,.list.url label:before,.list th.url:before,dl.url label:before,dl th.url:before{content:"\f35d"}.field.diaspora label:after,.field td.diaspora em:before,.field dt.diaspora em:before,.list.diaspora label:after,.list td.diaspora em:before,.list dt.diaspora em:before,dl.diaspora label:after,dl td.diaspora em:before,dl dt.diaspora em:before{content:"*";font-size:24px;font-family:'Roboto', 'Helvetica', 'Arial', sans-serif;line-height:0}.field.tag label:before,.field th.tag a:before,.list.tag label:before,.list th.tag a:before,dl.tag label:before,dl th.tag a:before{content:"\f02b"}.field.tags label:before,.field th.tags a:before,.list.tags label:before,.list th.tags a:before,dl.tags label:before,dl th.tags a:before{content:"\f02c"}.field.active label:before,.list.active label:before,dl.active label:before{content:"\f21e"}.field.reason label:before,.list.reason label:before,dl.reason label:before{content:"\f075"}.field.kind>label:before,.field th.kind:before,.list.kind>label:before,.list th.kind:before,dl.kind>label:before,dl th.kind:before{content:"\f1b3"}.field.feed label:before,.field th.feed:before,.list.feed label:before,.list th.feed:before,dl.feed label:before,dl th.feed:before{content:"\f09e"}.field.future label:before,.list.future label:before,dl.future label:before{content:"\f04a"}.field.period_year label:before,.list.period_year label:before,dl.period_year label:before{content:"\f049"}.field.period_week label:before,.list.period_week label:before,dl.period_week label:before{content:"\f048"}.field.near_location label:before,.list.near_location label:before,dl.near_location label:before{content:"\f276"}.field.near_distance label:before,.list.near_distance label:before,dl.near_distance label:before{content:"\f337"}.field.iframe label:before,.list.iframe label:before,dl.iframe label:before{content:"\f0b2"}.finePre,span.label:after{margin-left:0.25em}.finePost{margin-right:0.25em}.quantity{text-align:right !important;white-space:nowrap}table{clear:both;border-spacing:2px}table th{font-weight:normal}table th a:link,table th a:visited{color:#003;padding:0 0.6em}table.list tbody tr:nth-child(odd){background-color:#def}table.list tbody tr:nth-child(even){background-color:#eee}table.list td{padding:0.2em;text-align:left}table.list td.kind,table.list td.updated_at{text-align:center}dl{width:40em;margin:1em auto}dl dt{clear:left;float:left;padding:0.2em 1em;min-width:50%;text-align:right}dl dd{padding:0.2em 1em;text-align:left}dl dd.quantity{padding-right:16em}dl dd h3{display:inline}dl dt+dd+dt+dd{border-top:1px solid #999}ul.counters{text-align:center}ul.counters li{display:inline}ul.counters li a:link,ul.counters li a:visited{color:white;padding:0.4em 1em;display:inline-block;box-shadow:0 0 2px black;border-radius:0.4em;background-color:#258}.edit_link:link,.delete_link:link{display:none}#map{height:60em;box-shadow:0 0 1em SteelBlue;transition:none;padding-left:4em;list-style-type:none}#map *{max-width:initial}#map.event,#map.orga{height:20em}#map li a{display:inline-block}#map li .awesome-marker{display:inline-block !important;position:relative !important}section.leaflet-control-layers-list label .awesome-marker{height:auto !important;display:inline-block !important;position:relative !important}html.iframe,html.iframe body.maps,html.iframe body.maps main,html.iframe body.maps #map{width:100%;height:100%;margin:0}@media all and (max-width: 1024px){.links,a#banner{margin:0.6em auto}table,table.list,table.dates,table.list.dates{border-spacing:1px}table tbody th,table.list tbody th,table.dates tbody th,table.list.dates tbody th{overflow:hidden;max-width:3em}}@media all and (max-width: 900px){body{border:none;margin:0;padding:1%}body main ul{margin-left:0}table.list.dates th,table.list.dates th a,table.list.dates td,table.list.dates td a{padding:0 !important;font-size:inherit}}@media all and (max-width: 34em){body{padding:0}p{padding-left:0.4em;padding-right:0.4em}header.top nav{display:none}body.index table thead{display:none}body.index.events table tr td{clear:both;width:auto;height:auto;margin:1px;display:block;min-height:1em;border-width:1px !important}body.index.events table tr td.prev-month,body.index.events table tr td.next-month,body.index.events table tr td.current-month.past{display:none}body.index.events table tr td .event a{padding:0.4em 1em}body.index header:active+table tr td.current-month.past,body.index header:hover+table tr td.current-month.past{display:block}body.index.versions table tbody tr td,body.index.orgas table tbody tr td{width:auto;padding:0 0.2em;display:block}body.index.versions table tbody tr td:first-child,body.index.orgas table tbody tr td:first-child{float:left}body.index.versions table tbody td+td+td,body.index.orgas table tbody td+td+td{display:inline-block}body.index.versions table tbody td:first-child+td,body.index.orgas table tbody td:first-child+td{width:100%;display:block}dl dt{min-width:auto;text-align:left}dl dd,dl dd.quantity{padding-right:1em}#advises>*{display:none}#advises>:first-child:after{content:'... ↴'}#advises>:first-child,#advises:hover>*{display:block}aside{display:none}.links,a#banner{float:none;padding:0.4em 0}fieldset{padding-left:0;padding-right:0}.field>label{width:100%;display:block;text-align:left;margin-left:1%}.field.region label,.field.locality label,.field.repeat label,.field.active label{width:auto}.field input{width:100%;display:block}.field input#event_repeat,.field input#orga_active{width:auto}.field .radios{margin-left:auto}#map section input,#map section .awesome-marker{display:none !important}body.mce-content-body{padding:1px 0}.mce-btn-group .mce-btn{margin-left:0 !important}}h2.warning{color:red}.moderations table.list,.notes table.list{min-width:90%;margin-top:15px}.moderations table.list td,.notes table.list td{padding-top:0.5em;padding-bottom:0.5em}.moderations table.list td.empty,.notes table.list td.empty{background-color:white}.moderations table.list td.note,.notes table.list td.note{text-align:left}.moderations table.list td pre,.notes table.list td pre{width:70%;margin:auto;padding:5px;overflow:auto;text-align:left;background-color:#eee}.moderations table.list td em.author,.notes table.list td em.author{display:block;font-size:smaller;text-align:right;font-style:italic;margin-top:15px}.moderations table.list th.actions,.notes table.list th.actions{padding:0}.moderations table.list th.actions a,.notes table.list th.actions a{padding:0.2em;display:inline-block;font-weight:normal}.fa.fa-check,.field>label.fa-check:before,.field .field_with_errors>label.fa-check:before,.field th.fa-check:before,.field th a.fa-check:before,.list>label.fa-check:before,.list .field_with_errors>label.fa-check:before,.list th.fa-check:before,.list th a.fa-check:before,dl>label.fa-check:before,dl .field_with_errors>label.fa-check:before,dl th.fa-check:before,dl th a.fa-check:before,.fa.fa-thumbs-up,.field>label.fa-thumbs-up:before,.field .field_with_errors>label.fa-thumbs-up:before,.field th.fa-thumbs-up:before,.field th a.fa-thumbs-up:before,.list>label.fa-thumbs-up:before,.list .field_with_errors>label.fa-thumbs-up:before,.list th.fa-thumbs-up:before,.list th a.fa-thumbs-up:before,dl>label.fa-thumbs-up:before,dl .field_with_errors>label.fa-thumbs-up:before,dl th.fa-thumbs-up:before,dl th a.fa-thumbs-up:before{color:green}.fa.fa-thumbs-down,.field>label.fa-thumbs-down:before,.field .field_with_errors>label.fa-thumbs-down:before,.field th.fa-thumbs-down:before,.field th a.fa-thumbs-down:before,.list>label.fa-thumbs-down:before,.list .field_with_errors>label.fa-thumbs-down:before,.list th.fa-thumbs-down:before,.list th a.fa-thumbs-down:before,dl>label.fa-thumbs-down:before,dl .field_with_errors>label.fa-thumbs-down:before,dl th.fa-thumbs-down:before,dl th a.fa-thumbs-down:before{color:red}.notes form label:after{content:':'}img.favicon{max-height:2em;border-radius:3px;vertical-align:middle}form#orga_search{font-size:larger;margin-top:1em;margin-bottom:1em}form#orga_search label{display:none}form#orga_search em.fa{color:#258}form#orga_search input{width:14em;border:solid thin #258;padding:0;margin-left:-1.7em;margin-right:-1.3em;padding-left:1.5em;padding-right:1.2em;border-radius:0.4em}form#orga_search button.search{color:#258;border:none;padding:0;font-size:large;box-shadow:none;margin-top:-0.1em;margin-left:0;vertical-align:middle;background-color:transparent}form#orga_search button.search:hover em.fa{color:#2E97FF}form#orga_search button.search span.label{display:none}table tr.inactive{color:gray}body.pages main h3,body.pages main h4{text-align:left}.digest{float:right;margin-top:1em}header.top ul.regions{margin:0;list-style:none}header.top ul.regions>li{display:inline-block}header.top ul.regions li{margin:0;box-shadow:0 0 1em white;background-color:white}header.top ul.regions li.selected{box-shadow:0 0 0 6px lightgray}header.top ul.regions li a{padding:0.3em;display:block;white-space:nowrap}header.top ul.regions li:hover ul{box-shadow:0 4px 4px gray}header.top ul.regions li.selected{display:inline-block}header.top ul.regions li:hover li,header.top ul.regions li li.selected{display:block}header.top ul.regions ul{z-index:1500;position:absolute;text-align:left}header.top ul.regions ul li{display:none;border-top:solid thin #eee}.field.region .radios{z-index:100;flex-grow:0;text-align:left;background-color:white}.field.region .radios .radios{display:inline;min-width:12em}.field.region .radios label{display:none;min-width:100%}.field.region:hover>.radios,.field.region label:hover+.radios,.field.region .radios:hover{z-index:1000;position:absolute;box-shadow:0 0 0.1em black}.field.region:hover>.radios>.region>label,.field.region:hover>.radios>label,.field.region label:hover+.radios>.region>label,.field.region label:hover+.radios>label,.field.region .radios:hover>.region>label,.field.region .radios:hover>label{display:inline-block}.field.region:hover>.radios .radios,.field.region label:hover+.radios .radios,.field.region .radios:hover .radios{position:absolute}.field.region:hover>.radios,.field.region>label:hover+.radios,.field.region>.radios:hover{margin-left:10em;transition-duration:unset}.field.region input:checked+label{display:inline-block}.flag-icon-ca-qc{background-image:url(/assets/regions/CA-QC-70699e6a6e25c69040a3f1548b0afd829c4903ccca2760b6c10f49cc87d5d174.png)}body.stats h3{text-align:center}table.list.dates th,table.list.dates td{padding:0 0.6em}table.list.dates .sparkline{padding:0}div.field,div.actions{margin-bottom:10px}#notice{color:green}#error_explanation{width:450px;border:2px solid red;padding-bottom:0;margin-bottom:20px;background-color:#f0f0f0}#error_explanation h2{text-align:left;font-weight:bold;padding:15px;font-size:12px;background-color:#c00;color:#fff}#error_explanation p,#error_explanation ul{padding:0 1em}#error_explanation p li,#error_explanation ul li{font-size:12px;list-style:square}table.list.dates{width:100%}table.list.dates thead th{height:3em;padding:0 !important;font-size:initial;transform:rotate(-45deg)}table.list.dates tbody th:first-child{font-size:large;text-align:right}table.list.dates tbody td{padding:0}table.list.dates tbody td a{padding:0 1em;display:block}table.list.dates tfoot td canvas{width:100% !important;background-color:white}p.tags a:after{color:black;content:','}p.tags a:last-child:after{content:''}.css1{font-size:0.8em}.css2{font-size:1.0em}.css3{font-size:1.4em}.css4{font-size:1.8em}div.tagsinput{height:auto !important;border:none;margin:0;padding:0;display:inline-block;min-height:auto !important;vertical-align:middle}div.tagsinput span.tag{margin:0;padding:0.75em;font-size:inherit;font-family:inherit}div.tagsinput #event_tag_list_addTag,div.tagsinput #tag_addTag{float:none;text-align:left}div.tagsinput #event_tag_list_addTag:first-child #event_tag_list_tag,div.tagsinput #event_tag_list_addTag:first-child #tag_tag,div.tagsinput #tag_addTag:first-child #event_tag_list_tag,div.tagsinput #tag_addTag:first-child #tag_tag{width:100% !important}div.tagsinput input,div.tagsinput .ui-autocomplete-input{width:8em !important;border:solid 0.25em transparent !important;padding:0.6em;font-size:inherit;margin-right:0;margin-bottom:0}div.tagsinput input:focus,div.tagsinput .ui-autocomplete-input:focus{border-color:#F0F8FF !important}ul.ui-autocomplete li{text-align:left;box-shadow:0 0 2px #a5d24a;background-color:white}ul.ui-autocomplete li .ui-state-active{margin:0;background-color:#F0F8FF}body.tags .event[class*='libre-en-fete-'] em.city:before{content:url(/assets/lef-small-93285d531af463f877951d63fe844a6e9600b782c2c81f78723b730072fa942e.png);margin-right:0.5em}body.tags .info{float:right;margin-right:10%}body.versions td.changes{white-space:pre-wrap}
diff --git a/public/assets/application-d3eba8d4a824164102e32919820a084700da079ea05453cd44d3a26d6899e7da.css.gz b/public/assets/application-d3eba8d4a824164102e32919820a084700da079ea05453cd44d3a26d6899e7da.css.gz
new file mode 100644
index 0000000000000000000000000000000000000000..9a0f5fd507134396057256eaa69c4eb15848b957
GIT binary patch
literal 48132
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%0Dquw9@Cz5et@(
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
Q)jNW`Re}pZCJxsB0UxGiSpWb4

literal 0
HcmV?d00001

-- 
GitLab