Compare commits
5845 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 7aaf60d05f | |||
| 97b2c053eb | |||
| 47957f3407 | |||
| 2e7149c9d7 | |||
| 5ae5fd8d81 | |||
| 872054da00 | |||
| fa80197df0 | |||
| b4c78f9c38 | |||
| 1f4425df74 | |||
| 4e9f5b61ac | |||
| 4638b32be4 | |||
| 400dd42780 | |||
| 1a22e7da2b | |||
| 40a86d43cd | |||
| 68d20c6ccc | |||
| fe491bf92c | |||
| 7b432b34bb | |||
| 6983cd0de2 | |||
| fe8177077c | |||
| 5f339f4ed6 | |||
| 3c0b52c637 | |||
| 877fc5b42c | |||
| e28785e399 | |||
| 2c4a54ce05 | |||
| a8afc74590 | |||
| d195eee7c4 | |||
| 9b737230d6 | |||
| ecbd709535 | |||
| 060ec99678 | |||
| 3601d1d262 | |||
| 41ba20ca9a | |||
| 57e3f173d3 | |||
| 92c298c7cf | |||
| b25011ee60 | |||
| 0e017a6ce5 | |||
| 2431e15ffa | |||
| 396add1e9d | |||
| 86241a2793 | |||
| ee47afbe17 | |||
| 8831ca2f32 | |||
| abde215bc3 | |||
| 130d5298fc | |||
| 50cbba1620 | |||
| 2cc293ad16 | |||
| 6ac65a922f | |||
| 3d80f989d0 | |||
| 4fcb5d28a4 | |||
| 3ebdacf369 | |||
| 2ddc00c21e | |||
| e76e39a398 | |||
| 04667f1ed8 | |||
| 2091c3443b | |||
| 2b466b2fb2 | |||
| e17b306265 | |||
| b00b15ab98 | |||
| f4db79fe9b | |||
| 0e4061f858 | |||
| 043a1446e1 | |||
| 49221995e8 | |||
| 247a7488b8 | |||
| 1806198971 | |||
| 375331b80c | |||
| 8fdbe965cc | |||
| dc77d02e8a | |||
| 6265b8fa77 | |||
| 311b348d09 | |||
| ec02cdc4cc | |||
| 5905708111 | |||
| 5d91b759d1 | |||
| ec0a1a4ab1 | |||
| efa29edf09 | |||
| 2a05b70dfc | |||
| 8693e68271 | |||
| d21a9a514d | |||
| e03d132823 | |||
| 61ba985bc9 | |||
| 4629a20fe4 | |||
| a28125ee9a | |||
| df877aca1b | |||
| 05dc415aba | |||
| 6dedd9cb72 | |||
| 256d39b572 | |||
| d186ae1863 | |||
| fddc19e98d | |||
| 2592cd2e58 | |||
| 93b6438cea | |||
| f6746d88b7 | |||
| 34ace4dd4b | |||
| 41d0f42ddf | |||
| 2868f702a5 | |||
| ec4dcee8bd | |||
| 8c378191df | |||
| b98431e8e6 | |||
| 3c8781855e | |||
| 27a94f3ca6 | |||
| 04e334e3e2 | |||
| 12d4832037 | |||
| 6e4f6fec91 | |||
| 57c9525e5c | |||
| 543e4fb57d | |||
| 3881ead8e5 | |||
| 911d1e81b6 | |||
| ae06300c17 | |||
| 26879ca91a | |||
| 306744e5cb | |||
| 3ca32898a1 | |||
| 532fda267f | |||
| 494845b160 | |||
| 0fc823041e | |||
| 71eae4137d | |||
| 47b19f209b | |||
| 2b5355edca | |||
| e9a0beb4e8 | |||
| 6bdfe68897 | |||
| cf2d2b6763 | |||
| 95cd44f34f | |||
| d330e60d40 | |||
| 99004bbec8 | |||
| bbcc728a07 | |||
| 033dc0a72d | |||
| 1c140a112a | |||
| 312e86eb58 | |||
| 1dfdb38d4a | |||
| dfafe7dc5f | |||
| 6ecc123d15 | |||
| 6f322d2140 | |||
| dfa762bccc | |||
| 87f00d2c4c | |||
| 6f94e0dfb8 | |||
| ad70759f91 | |||
| 27c4e8ddd0 | |||
| 805d74b6ae | |||
| 4ad78309e2 | |||
| b78207ddd8 | |||
| b6834da9a4 | |||
| 801cc72691 | |||
| e198709643 | |||
| ed8d5e0b0a | |||
| e8fb312703 | |||
| 058b8c3b31 | |||
| ae3ccb009e | |||
| 0c60a2aef8 | |||
| 44fdf86702 | |||
| 1659bbf7b1 | |||
| 46b58fba83 | |||
| 84da86ba4a | |||
| 6777127497 | |||
| a4ac07866a | |||
| 448f8377fb | |||
| c490752ca7 | |||
| 6edc565c01 | |||
| bb0c2754d3 | |||
| 58d6e8f4d0 | |||
| bdc66049a5 | |||
| 0a53775fb3 | |||
| 9cdc9008aa | |||
| bd707b0cfc | |||
| a85f39c140 | |||
| ef7b36da32 | |||
| 14fdf861ca | |||
| 7641b12b08 | |||
| e7159adf59 | |||
| 51f08f2994 | |||
| a03eac8e48 | |||
| 503137221d | |||
| fb9205bf81 | |||
| bfbb313088 | |||
| 25d3c4b843 | |||
| 371c06d66d | |||
| 3e5c978719 | |||
| 843f1a6356 | |||
| a5c5faa21d | |||
| 6a1e17c6fa | |||
| cd30f370b8 | |||
| 4ae8abe6a3 | |||
| 82bfd4ee40 | |||
| e08c4cff13 | |||
| 6e16eab6ec | |||
| 21c47514da | |||
| d6de2ca71c | |||
| 451a0d9090 | |||
| 262354f733 | |||
| 498370330d | |||
| 6865853776 | |||
| 1418c0dbbc | |||
| bbc79dd49f | |||
| 8036320d94 | |||
| c30f69d6e9 | |||
| 2e2f34f241 | |||
| cbbeef5c46 | |||
| 823ee54f22 | |||
| 3d03797e53 | |||
| 089e60fa1e | |||
| baf8e4784b | |||
| d53350b263 | |||
| 824afdceca | |||
| a8230e976f | |||
| 6af7e6866c | |||
| aaa27333ba | |||
| 797f2a196b | |||
| 51066ff18f | |||
| 4de64a92cb | |||
| a21fd2ea18 | |||
| 0df0b4305d | |||
| a5ed53e7aa | |||
| 0587c5f5c4 | |||
| 57dbb18c4c | |||
| 4d92f08424 | |||
| 254ee07942 | |||
| 0bf8bd2230 | |||
| b5225f07cb | |||
| abed7690d0 | |||
| f96174ddbe | |||
| e5b713841a | |||
| 3b1b12069f | |||
| 1635f7351d | |||
| ce5ae411c1 | |||
| d1bc32fb31 | |||
| f9f87f25d4 | |||
| 89aa6b7881 | |||
| edf9e0c1ed | |||
| c2e520ad9d | |||
| 7649187095 | |||
| fe39d0fd10 | |||
| 98b83b7208 | |||
| 57321979ae | |||
| e3ce0c5887 | |||
| 95af72c70c | |||
| 3b37769624 | |||
| d150df1c5c | |||
| a322e27e05 | |||
| 98fe0badbe | |||
| 44b841a25d | |||
| 9c8bf820de | |||
| 4d9aa65e78 | |||
| 0f3942558f | |||
| ba074b0116 | |||
| 6aa97048df | |||
| d9a5c79ea6 | |||
| 9d7714c714 | |||
| 8291be375a | |||
| 0a73737f69 | |||
| 2fd1b6c913 | |||
| ea38a1d880 | |||
| f576e13c51 | |||
| ee7bb8731a | |||
| da0c3ff394 | |||
| 6ae559b42b | |||
| 95ca6ebdaa | |||
| 0d6964d9c8 | |||
| ba386d4b2c | |||
| b5ffb51e18 | |||
| a9f674497a | |||
| 1e8a92ccb4 | |||
| b9178bb8c7 | |||
| 520b29d0d5 | |||
| fe397e6953 | |||
| dcb741d827 | |||
| 508c205d35 | |||
| d5294bb5d0 | |||
| 6ed9be31ca | |||
| 3bbd3a8a65 | |||
| 73a608895a | |||
| 96c73baeb3 | |||
| 73113f5eb8 | |||
| 7b74b86891 | |||
| 0903b8227f | |||
| fa525ad610 | |||
| 0f2bb5dde5 | |||
| 84dc1b6845 | |||
| 4ce1a37772 | |||
| 8dd4cc5c40 | |||
| 6aed145dae | |||
| d15cc77b0b | |||
| 24a75d37fb | |||
| 7e80dae59b | |||
| 7316c48e9f | |||
| c520c7a24a | |||
| 7564633045 | |||
| 7174c5d036 | |||
| ddd128ce0e | |||
| f5aa5c0769 | |||
| 2acde49f0f | |||
| 8849015bbf | |||
| 70cd7a94ec | |||
| 3984dea34b | |||
| b11b471aa4 | |||
| 63754df4d4 | |||
| e644424508 | |||
| 4f6eef3d16 | |||
| e2e8104864 | |||
| 96127c289c | |||
| cfed65f7ea | |||
| c2263fec9b | |||
| 497720d060 | |||
| 238366e71f | |||
| 2c8cf26e74 | |||
| c87ae5612a | |||
| a2d83753bc | |||
| eedf75d951 | |||
| 3f51a1ae2e | |||
| a000f80705 | |||
| 7030bff7f7 | |||
| bb0b7fd2d1 | |||
| 71e1f3679e | |||
| b33517b099 | |||
| f3d5336892 | |||
| d81f25d54e | |||
| 44ebdfeb2d | |||
| a5a7a03fa0 | |||
| 363d2145bd | |||
| c7e19396a4 | |||
| 445e5bed49 | |||
| 4cf94319df | |||
| 1bb88b374e | |||
| 35fac07581 | |||
| 9287475b2a | |||
| b4976f89f2 | |||
| 93c8674a40 | |||
| d5f21fd13a | |||
| 04eef0463a | |||
| 82c3bc7b0e | |||
| 1d33cb96f5 | |||
| 648646068c | |||
| f251f93a11 | |||
| aab1aad8f4 | |||
| 65a6dc704e | |||
| 6018fcf490 | |||
| 1e6888c0d3 | |||
| c7303be33b | |||
| d8acf76f2d | |||
| 08248e3853 | |||
| 78acc6f215 | |||
| a4f1dc536d | |||
| 57a30dd375 | |||
| 5517ee334f | |||
| 30af544919 | |||
| f0069d3dcc | |||
| 206bdff9e7 | |||
| c32270b2b8 | |||
| cc03402570 | |||
| 21a76f1867 | |||
| 212ad94c90 | |||
| 378d9f4112 | |||
| e341d367d8 | |||
| 98937b187f | |||
| 59168e21b4 | |||
| d12a95b4ef | |||
| 83482afa02 | |||
| e470d1ae1c | |||
| e504128587 | |||
| 1ab6c07bad | |||
| 5ce465ce23 | |||
| a8b730576f | |||
| b796033473 | |||
| d078ed67ca | |||
| 346146d834 | |||
| 64307ea882 | |||
| 578eda7d28 | |||
| 505f4cb4a2 | |||
| bac6b729bf | |||
| d3a5cadb6c | |||
| 65351faf83 | |||
| 3aa1c5f13c | |||
| 8f3fe410b8 | |||
| ff3bf32b11 | |||
| 38cb01a30e | |||
| b8f7569e93 | |||
| cf17bd38eb | |||
| 930f6df2cb | |||
| e88106e990 | |||
| 21f64c75eb | |||
| 5186b9490d | |||
| e9e935303c | |||
| a154d71841 | |||
| fddb035539 | |||
| 1544a08ea2 | |||
| 8d68d4c050 | |||
| 62a1290043 | |||
| c5e1742150 | |||
| 754bc2d274 | |||
| 3ac061c546 | |||
| e59a7926a2 | |||
| be5b49e391 | |||
| 7b32d3184c | |||
| d770c35245 | |||
| e04baef3bb | |||
| 9d3ad22bc7 | |||
| cc35d15b2d | |||
| 15e3928906 | |||
| 4363fd64c4 | |||
| dac2f93383 | |||
| 82372bb2ab | |||
| b0c67c9019 | |||
| d83a34f72b | |||
| a16f156203 | |||
| 807aa71a7c | |||
| 14d9b67b58 | |||
| 82df0ca766 | |||
| a6c7529a4e | |||
| 202bb6d3e2 | |||
| bc514926bf | |||
| 9fc16b6a83 | |||
| 2125e0175d | |||
| 6b5982d389 | |||
| a4a8aa63d4 | |||
| bedf451952 | |||
| 93b8f1993c | |||
| c693f4806b | |||
| b07275694a | |||
| 82177c101b | |||
| da6dbd2159 | |||
| b3957d87b4 | |||
| 5f9ccadd6c | |||
| 6e04da9f8f | |||
| 58c13d2c07 | |||
| bca8593eef | |||
| 3e2e10a4c3 | |||
| 6979763292 | |||
| 324f1739e4 | |||
| 1489662f57 | |||
| 1c1f407f67 | |||
| 8fb631417b | |||
| ae45ad1ad2 | |||
| 6b89803534 | |||
| d01b34f501 | |||
| fcad2fa471 | |||
| 589767fe6d | |||
| d6407e5095 | |||
| 8ff8dc7200 | |||
| 2f7b02c96f | |||
| 669e2a767a | |||
| 2b4f9feeab | |||
| 1554916639 | |||
| 32a3651231 | |||
| dbd4ecf89b | |||
| 7416653874 | |||
| 621ed970da | |||
| 457ba9ac62 | |||
| f9da5f2c80 | |||
| b6a793a1e2 | |||
| bf2ab3d8af | |||
| 02f75236cb | |||
| 5dff83c6e9 | |||
| 43725bae89 | |||
| 59c12506cf | |||
| be15a3b739 | |||
| 9f515dad09 | |||
| 5052c4ae3a | |||
| 9a617f5d41 | |||
| 4886d46d91 | |||
| 67834def5f | |||
| c51ffeb65a | |||
| 68ee4eab61 | |||
| fa6d4ac0bc | |||
| 3fa533d91e | |||
| c0db144906 | |||
| ea2ec168b0 | |||
| cb18c1a54d | |||
| 45bcb22270 | |||
| 2539fd53dc | |||
| 8a2bd09fd0 | |||
| def89ac079 | |||
| fe08726387 | |||
| 9bb4a68599 | |||
| 996a27dbd1 | |||
| 58ebadd7b3 | |||
| cae06ba2c1 | |||
| 0274afa0f7 | |||
| 221f70ac7b | |||
| d3dbca374d | |||
| 6f0b6a8158 | |||
| b25cd6aaf2 | |||
| d27025003a | |||
| 66eb90d9d0 | |||
| 6a81a9d191 | |||
| 64cb134113 | |||
| 891ff7dd80 | |||
| 6643e7f499 | |||
| fcbf527ba5 | |||
| dfd180a292 | |||
| fa0a5040e5 | |||
| 56ba2cb251 | |||
| dea12779cf | |||
| 6033c05ff0 | |||
| 407da8bd15 | |||
| 43413ff980 | |||
| 4d864b8267 | |||
| a516245c94 | |||
| b1ed268d0e | |||
| 83b86bf092 | |||
| 954caa6804 | |||
| 8b6da4d2fe | |||
| f2d70d972d | |||
| b20de76037 | |||
| a33bd9dfe6 | |||
| f2443c64db | |||
| 278ec04f5e | |||
| 95787255a1 | |||
| eaf9993dd9 | |||
| 470d7600b8 | |||
| 849baea544 | |||
| 4f1ca20dda | |||
| 97401ad99a | |||
| 59f5e364c1 | |||
| 29c2a117c0 | |||
| c209e31ce1 | |||
| 12608889e2 | |||
| 3343882876 | |||
| 6e50b5fc60 | |||
| c540c85cf8 | |||
| b17491ebe5 | |||
| 76b410b2ca | |||
| 069388eae0 | |||
| c6c25e609b | |||
| 9b52dd8bf7 | |||
| 2cf19010e3 | |||
| 89d56e1cd1 | |||
| ef1fb08723 | |||
| e60ebee3f2 | |||
| 4c88fe0fb1 | |||
| 13338414db | |||
| 96f49f3b53 | |||
| 75979d7e1c | |||
| 29a2447906 | |||
| 2f702f61a4 | |||
| 5a71acbe3c | |||
| ca3e8ef09e | |||
| 8c44084af1 | |||
| d829a390fd | |||
| 6b6597e453 | |||
| 97c550d5f6 | |||
| acfd6ab141 | |||
| 7e790c1aa6 | |||
| d1e2aa57a8 | |||
| 2e6e3bf0b0 | |||
| e5025665fc | |||
| 1a8097f810 | |||
| f45daad6ca | |||
| e4e85e6f7e | |||
| 5beaf695ed | |||
| d09827b501 | |||
| 97722adbfa | |||
| 006a8833d3 | |||
| 8111baa8f9 | |||
| d6e4dc0aa2 | |||
| 497da1d29b | |||
| cbc8b64854 | |||
| c06f2a50f1 | |||
| 825a422721 | |||
| 2c4ba90abb | |||
| 6dda899a60 | |||
| 8725e2f40d | |||
| 35c501c203 | |||
| 30a9bc3179 | |||
| f9350a276c | |||
| cd9addf0e2 | |||
| 2219b6507c | |||
| 09931d7ad8 | |||
| 7ce0c0ef9a | |||
| 49e2cb6c36 | |||
| 4b60fc4747 | |||
| 164fb09f2c | |||
| 5647e6c199 | |||
| a4d6544764 | |||
| e942f6e420 | |||
| 7174baa91e | |||
| 5c8b7542d0 | |||
| e8035ced5a | |||
| 70a086a9e1 | |||
| 08cb6d1f63 | |||
| c7f3645fe2 | |||
| 4b6a85aae0 | |||
| c8a8859d2f | |||
| 8c0f47f06c | |||
| 926290dd9c | |||
| 6ae3315bb9 | |||
| 8621b1890e | |||
| c726001a0e | |||
| eba5f7d275 | |||
| 2f793473cc | |||
| 91567cad9e | |||
| d48ee84ae7 | |||
| fd000cad86 | |||
| 6244063073 | |||
| f34de8422e | |||
| a33edd15b4 | |||
| 6a65261765 | |||
| 07f3e2d457 | |||
| 958199ffef | |||
| e5ebf74d76 | |||
| 126d2f85ac | |||
| 908e3a2af6 | |||
| 25e40d723a | |||
| 7a764ce78b | |||
| 8947c789a9 | |||
| 8ac403abb9 | |||
| 9752cb8e4d | |||
| e9be9dd8d0 | |||
| 5e6d638c6f | |||
| c47f6e2ca5 | |||
| cc09df1961 | |||
| db26d2b2d7 | |||
| 5b33efeecc | |||
| fda4656630 | |||
| 5829bbe22d | |||
| f4cfde719d | |||
| 1fd66f55c1 | |||
| a964bec0f8 | |||
| b65ba5c394 | |||
| d51eefa1c4 | |||
| 4025cbd555 | |||
| 3da27c06c3 | |||
| bc7824812b | |||
| baf7822340 | |||
| 82ee08fcaf | |||
| 51d153a5f7 | |||
| df608e8b43 | |||
| 8e477437a6 | |||
| e70f0eea02 | |||
| 8be93a0202 | |||
| d4f7f19a22 | |||
| 4441381042 | |||
| 61c9c69718 | |||
| 5beaab97da | |||
| 843a4b8eae | |||
| 9ec46222e3 | |||
| 210da11fbb | |||
| ee61ae360d | |||
| 890e0f4995 | |||
| 224c66e0dc | |||
| 88052cd194 | |||
| c22453f24a | |||
| 099a805260 | |||
| 7ed474af8d | |||
| 9d893d6d4d | |||
| e55af0c274 | |||
| 803fbf2541 | |||
| 061b2b63e9 | |||
| 1486098065 | |||
| 0f0db4c823 | |||
| c3e7e96dce | |||
| 3c5f6bd8ac | |||
| b6b59e5c08 | |||
| a7aa27c87c | |||
| 735b325d74 | |||
| f948380fa2 | |||
| 79cf1880fc | |||
| ca130e1dc4 | |||
| d67ce81438 | |||
| ec1a84c57a | |||
| 59163cb2fc | |||
| 419cf9e2b0 | |||
| 95c78eac9c | |||
| 51a4cf5e46 | |||
| 2472c5d6a1 | |||
| 59fbb289b9 | |||
| e82bc20422 | |||
| 1e753e98ce | |||
| 39b3cab1da | |||
| 87fbfc6475 | |||
| cb8bfa027e | |||
| 1b1274fd56 | |||
| 38db495879 | |||
| a781c36876 | |||
| 71c336d9dd | |||
| e10e8910f3 | |||
| 253496c7ee | |||
| 30a3ab68c0 | |||
| 663a7c52c7 | |||
| 4e8ccd6f7d | |||
| 879ccfc8c2 | |||
| a77574b3d7 | |||
| 50738f8ce0 | |||
| 5c01878542 | |||
| ea93f6f560 | |||
| 7bab34eeda | |||
| 0cc23dec6f | |||
| 71c0d5253d | |||
| a674028c37 | |||
| 29fff4f51b | |||
| 4309ccfa02 | |||
| 4e8fe89faa | |||
| 8218d5a47e | |||
| 4bbb587280 | |||
| 0f04fe75bd | |||
| 11b356e55f | |||
| 80f008684d | |||
| c9c2d8133c | |||
| ac9a4d1e0d | |||
| d7dd6acd9d | |||
| b5739cb3d8 | |||
| ea93d56ca8 | |||
| 10097a946f | |||
| c439594403 | |||
| 29cf9e05db | |||
| 298f68c966 | |||
| 0b3289ea37 | |||
| 5f457bff12 | |||
| 6c00ccca9a | |||
| 7e679ab252 | |||
| 0ca21dbc91 | |||
| d2590f1078 | |||
| eb3f550e26 | |||
| 06aa6dedab | |||
| f769478abe | |||
| ba5f0af5a4 | |||
| 5e5f72ae57 | |||
| f36037ebf2 | |||
| 0c276ac71e | |||
| 9e95d1f1fd | |||
| e00bda37a5 | |||
| e7ea5f500d | |||
| a8fc95d4e4 | |||
| 3f598a5121 | |||
| 81c5ec0777 | |||
| 32bb58b272 | |||
| aa4b786ab3 | |||
| 3f5968b60c | |||
| 251eeb534a | |||
| 90add9f840 | |||
| 770624d492 | |||
| c59758ef65 | |||
| 15752335f4 | |||
| 3e4b48e206 | |||
| 25c685527a | |||
| fbabd137c2 | |||
| 6e7cf68164 | |||
| b47a532eb4 | |||
| 7c30ea32bf | |||
| bb06e044f5 | |||
| 01318a08b4 | |||
| 119487f1aa | |||
| 911427a361 | |||
| 58628a4bfc | |||
| b08b360f38 | |||
| adb8d0e845 | |||
| e0f009b3b9 | |||
| f1aa03c360 | |||
| 2ba417cf9f | |||
| d8af074ff6 | |||
| daf2bbf991 | |||
| 6605f293b4 | |||
| 482e18ccdb | |||
| ef1e0e14ec | |||
| 33f083b213 | |||
| bcfbc0cf6c | |||
| 00d75ece64 | |||
| dc1b5d3424 | |||
| 58fb633df3 | |||
| 36f9366f3f | |||
| 712f1ca02a | |||
| 285b238f26 | |||
| 70fb12b10e | |||
| 6380a6be05 | |||
| 548fd92c15 | |||
| 86de53eb9a | |||
| e1616953db | |||
| c1dbab50fe | |||
| b6bb6a92a9 | |||
| 0ab80ad0a7 | |||
| 61744764da | |||
| 8eb98982f3 | |||
| 1090339331 | |||
| 804816f014 | |||
| 51e8318224 | |||
| 0d38a50dba | |||
| 72094acf74 | |||
| 1bd67943bb | |||
| 30101e129f | |||
| 9bb31678a6 | |||
| 5e5c52ff0a | |||
| d9d4742130 | |||
| 0fab6b7cab | |||
| f10286de8c | |||
| a0e0465704 | |||
| c8457a2619 | |||
| 14c36bc405 | |||
| 81319228bd | |||
| fcd7b05900 | |||
| 8378d95588 | |||
| b34f9b1795 | |||
| 35b098e656 | |||
| e05a45b080 | |||
| 715ee66b03 | |||
| 3d6e9da115 | |||
| 54410988eb | |||
| dded2c2463 | |||
| fcf5838019 | |||
| beafa18708 | |||
| bd371a11ad | |||
| 1895fee1c9 | |||
| 2200d0b678 | |||
| f3c4a7dd16 | |||
| 25834b89dd | |||
| 4d20dea271 | |||
| c59647ad2f | |||
| e466cbe0ce | |||
| a24de2d22a | |||
| f452a3025d | |||
| 3c58eaf49f | |||
| c75b497b2e | |||
| d572d77b48 | |||
| a4074332cc | |||
| c31ceb6a5b | |||
| b0863d8628 | |||
| c38a6d74dd | |||
| 7bec75b709 | |||
| 56ea24b03b | |||
| 277829c280 | |||
| c127aaae6b | |||
| c895848061 | |||
| 64e5ebb55f | |||
| 83addd6bba | |||
| d87a19b2f9 | |||
| b58edc980c | |||
| f3e72623e9 | |||
| 54ee76bcef | |||
| efe6faabfd | |||
| 3ee8b655ea | |||
| c70d138eb9 | |||
| af2a327310 | |||
| b27e0e2807 | |||
| 8267ed53f0 | |||
| aa90d7b4b7 | |||
| 6b69946b9e | |||
| a1b87b5236 | |||
| 3044c5ea52 | |||
| d0636a9f6d | |||
| 0d291cb68e | |||
| c8bb50497b | |||
| ea027a7cc1 | |||
| 62e8601919 | |||
| be2cc7aed9 | |||
| 17babb22e2 | |||
| 21245273b4 | |||
| 8d7821c84e | |||
| c78dff9a15 | |||
| 25fea558ba | |||
| b1c84b598f | |||
| a6aa0a4cb0 | |||
| 8640129835 | |||
| 655dd2277c | |||
| 40f95191a0 | |||
| a013da860e | |||
| 4150c804df | |||
| 0446847278 | |||
| 2cf8309987 | |||
| 5b30f92677 | |||
| 88fac0ad2b | |||
| 45a9a6c4df | |||
| af554e7ed0 | |||
| 8912928581 | |||
| c2e49bd152 | |||
| ac0279aa83 | |||
| ae4161b780 | |||
| adc3bacea9 | |||
| e125f3a897 | |||
| f86b5a44bc | |||
| 0c5899b2a2 | |||
| a7d83b701f | |||
| d0b591307a | |||
| 13378a4b55 | |||
| ac6218eef2 | |||
| a98cc51ac2 | |||
| 92a06c9a28 | |||
| e595bdb20a | |||
| 9bd2446901 | |||
| 27babfec3d | |||
| 017ff53702 | |||
| 49441fe204 | |||
| 03d360b7bf | |||
| 53542abbb7 | |||
| fc908d4687 | |||
| e90b1bbead | |||
| ce1ca1b625 | |||
| 0eaa393065 | |||
| 6d749777fc | |||
| 6c20a4a874 | |||
| 79e8d1aac3 | |||
| becae46296 | |||
| 2ce553d661 | |||
| 66cadac6b6 | |||
| c237c5353b | |||
| c27a7e087f | |||
| 0894590a96 | |||
| 2efef91f1c | |||
| 3feba9a581 | |||
| afae896d05 | |||
| bcbaa21739 | |||
| d60bc61d13 | |||
| aeee565115 | |||
| 8126793b18 | |||
| 6a2592421c | |||
| 36adeec220 | |||
| 22bf0ead18 | |||
| b9dd6369d4 | |||
| 3d6c0ac512 | |||
| 95bf81f528 | |||
| 56e35e8ef2 | |||
| ae802a8a83 | |||
| ee71d2fe5f | |||
| 8dd2447cc5 | |||
| 3869ab6345 | |||
| 26453af1b9 | |||
| 5dc7b79bb6 | |||
| 33403efc8e | |||
| a0b4fcc05a | |||
| 82f7ab2ba5 | |||
| 505833a534 | |||
| 2557fb4f4d | |||
| 8511256779 | |||
| ae85d86d8f | |||
| 042740877c | |||
| b787b993b6 | |||
| 51ae14ec23 | |||
| 152f739527 | |||
| da88cb6a43 | |||
| 52a8bb414c | |||
| a27902205b | |||
| 7fb5b9886e | |||
| 8feb300d15 | |||
| 085bab749f | |||
| 96a5e594b3 | |||
| 04765d82ba | |||
| 47a9981571 | |||
| 0b45678ccc | |||
| 19ac465fa4 | |||
| 69bc8a8b22 | |||
| d0644bace9 | |||
| aae02cd1be | |||
| 47d56676f1 | |||
| efbaaf2f84 | |||
| d38575a011 | |||
| 908a9e9fa1 | |||
| 0ebabfad73 | |||
| 6ac3d902c9 | |||
| 3beb8c825b | |||
| b80e96547e | |||
| 2679c1cf0a | |||
| 65183e94c6 | |||
| 6b0fe683c9 | |||
| f14352f494 | |||
| ab9426e260 | |||
| 27fe85ac8b | |||
| eb6f01e65a | |||
| a6d406d2c3 | |||
| 4b8c0ac143 | |||
| c9f0158fdb | |||
| aac21f932b | |||
| ec01c2a119 | |||
| fbef77a942 | |||
| f207d988f4 | |||
| 60fc486cea | |||
| 978b70c998 | |||
| ef171f3acd | |||
| 64b36807d3 | |||
| 5de8f1803c | |||
| d1c4a26791 | |||
| a647cb9836 | |||
| 7398bed974 | |||
| 6077708831 | |||
| 6eebb1c089 | |||
| 6cd55e535c | |||
| 7d0955c0f4 | |||
| 8c9d24bd9f | |||
| c40375a424 | |||
| 2949a52a11 | |||
| 2e762d05f9 | |||
| bb06bfbbd7 | |||
| b8d20dfe99 | |||
| fa8529949b | |||
| 7b37c847bd | |||
| 3075f6cea7 | |||
| ff966490bb | |||
| 46993b43fe | |||
| 5e15bceaae | |||
| fefe5e241a | |||
| 8804330d83 | |||
| f5c12ec433 | |||
| 262cdd7bc0 | |||
| efee07e20b | |||
| 603b83e1c3 | |||
| a48f02e0da | |||
| d189339495 | |||
| 0802804677 | |||
| d9c281cd7c | |||
| 46185fe9e8 | |||
| 38e8a90f4e | |||
| 7a115e93c0 | |||
| d391df52ba | |||
| 46fc6f8da4 | |||
| 0fcca04150 | |||
| 54a9173107 | |||
| bf455c8d20 | |||
| c05d23a586 | |||
| 2a882aa58d | |||
| 04e26ba6b8 | |||
| 2211731c80 | |||
| 0fbdd57835 | |||
| 312b414d8f | |||
| a6e7954128 | |||
| 1417d43430 | |||
| 60ef6070b0 | |||
| 2f42196fca | |||
| f8b5e7e2c9 | |||
| 2c0547bb0e | |||
| 0f9eec887f | |||
| 234cf2d847 | |||
| 9304ad125c | |||
| 752c15c230 | |||
| 4f792c40b7 | |||
| 0245184c18 | |||
| 7ddf0226c6 | |||
| 17c3c1d66a | |||
| 40a3008318 | |||
| b48022be22 | |||
| 502aedb33e | |||
| 17f8e65808 | |||
| 439eb9da3d | |||
| f6116db957 | |||
| b36145e3c4 | |||
| 1c1bfd7541 | |||
| c824429458 | |||
| 238e77d959 | |||
| 23b2154d98 | |||
| 25c8711aad | |||
| cf30628d4e | |||
| e21eaa4b9e | |||
| 80b897d8cf | |||
| 1ed7bcfb2c | |||
| e20f92bbbb | |||
| 6e717bfd30 | |||
| 5d743bb0a3 | |||
| 7675c730b6 | |||
| 42942bb1e0 | |||
| 9d12de9bce | |||
| 790520e335 | |||
| 4b0e1a4b19 | |||
| a877f8abf0 | |||
| 491b1d9c96 | |||
| 2ce74c05e1 | |||
| 88e6558da3 | |||
| f1140ec903 | |||
| 8a745ecdfd | |||
| b8e29f5ae3 | |||
| 22e83013e3 | |||
| cc4713d878 | |||
| 490e838c60 | |||
| 6b15f29d7c | |||
| e7d9e42a16 | |||
| bd91727f49 | |||
| 328faf3744 | |||
| 1157cb9b95 | |||
| 7c8626d144 | |||
| 03faf2665b | |||
| 9959fd26bb | |||
| 43dcdb21ec | |||
| 3727637145 | |||
| 466251287f | |||
| f46706843b | |||
| c93ca02fb8 | |||
| 4813488f84 | |||
| fc292cc2d8 | |||
| f875e26fbf | |||
| 05658aeb3b | |||
| a14cb1fc06 | |||
| f68247673a | |||
| f65dd63210 | |||
| 03f64a6c20 | |||
| 0627c3443d | |||
| c65dd16460 | |||
| c590596dbe | |||
| 23cd4d5ed2 | |||
| 4dc6ff9fb8 | |||
| 8638cbf8b2 | |||
| a2555983e6 | |||
| 21804aecdb | |||
| 6991a38703 | |||
| 6b18e4f7e9 | |||
| efc9007cbf | |||
| efd33b295a | |||
| fa4ba42f15 | |||
| d3ef520915 | |||
| 811e29ff1b | |||
| 95d1efb7f8 | |||
| 5341cb5ff9 | |||
| cb37c0d135 | |||
| 73d40ce02a | |||
| c1709da6bf | |||
| dcfa81f983 | |||
| 42b1eaa240 | |||
| 1da1fa5a31 | |||
| 707931125e | |||
| f4e82a879b | |||
| 4f7369ed02 | |||
| 4312013552 | |||
| e8bc69aa01 | |||
| befb667759 | |||
| b35254ec78 | |||
| 9956988938 | |||
| 5b0e2e487a | |||
| ccd3872bf1 | |||
| b209952ce0 | |||
| 3568de2c6c | |||
| a8957d75b9 | |||
| 028ca5c9d9 | |||
| d516e1c736 | |||
| afdf8e7b21 | |||
| 9852b147f8 | |||
| 552cdbfe20 | |||
| 4ca29dd18e | |||
| 0d971a70cc | |||
| 0dda98384b | |||
| 685d330ee2 | |||
| 2d455018ae | |||
| fce486735b | |||
| 45073ce9eb | |||
| 4ba732c886 | |||
| a6cb786718 | |||
| 93a2e66704 | |||
| facbe2c012 | |||
| 02a49c8a68 | |||
| 97585bb26a | |||
| b618a1241f | |||
| d936009ea1 | |||
| 078f71c144 | |||
| bfc6c9b89d | |||
| 758d402305 | |||
| e6789fab6c | |||
| a2e114e852 | |||
| 0baf90a218 | |||
| f9f3d43152 | |||
| 326f2d2743 | |||
| 57f257dce5 | |||
| c27fc4e4d8 | |||
| a37192c102 | |||
| 68bd6a29b6 | |||
| da11113bf1 | |||
| 70f4cdd0ca | |||
| 78ac3cffde | |||
| 7eb2af6cd3 | |||
| 0b1c9d33a5 | |||
| 648a62112e | |||
| ff7cb91d9c | |||
| fd5881670d | |||
| fc8768b79b | |||
| 914570b053 | |||
| 1a8783cfa0 | |||
| 28bfefcac6 | |||
| bec56522e3 | |||
| 0ddd473477 | |||
| 2defc8e826 | |||
| c3756f6b58 | |||
| 66af3d260c | |||
| 5c3398c280 | |||
| 63a59325f5 | |||
| f1091f97fc | |||
| fe9bdfef79 | |||
| a8f11981e3 | |||
| 94651744af | |||
| 24e7d00af5 | |||
| f85a35b5fc | |||
| a27aad0061 | |||
| 9a332d2f86 | |||
| 1264983688 | |||
| 4d4a3d02ed | |||
| 53cee90933 | |||
| 6daa3290d4 | |||
| 5a9bee0527 | |||
| 6914d26187 | |||
| 68c01d09bb | |||
| 4bf1ad2566 | |||
| 00ed526fb0 | |||
| 9bdc58069b | |||
| 4ddbd2efb6 | |||
| f3f153cb38 | |||
| 9414a8085d | |||
| 33b18df1a0 | |||
| da91d342f7 | |||
| 4950e044ba | |||
| b41af5f580 | |||
| 24090d4642 | |||
| cdb1918973 | |||
| a8e8f04fa3 | |||
| 4ec3102df2 | |||
| 7e722db3ee | |||
| 20c45be3b3 | |||
| f2ee0aad20 | |||
| 478d4a571a | |||
| 4253ebf243 | |||
| 5b782a783a | |||
| c38183423f | |||
| 019e26dd8e | |||
| 6d2a65b4ea | |||
| 4206d98b55 | |||
| 9005fe2f61 | |||
| f87f18a291 | |||
| c0fdcb381a | |||
| aeaf0e7ba8 | |||
| 6dada4e347 | |||
| 61f015eef6 | |||
| d843521839 | |||
| 420369fe13 | |||
| 71bf1edc5e | |||
| d06ac519ab | |||
| 50512b52e1 | |||
| 543e77b9be | |||
| 783d455bd7 | |||
| 6c35272fe2 | |||
| 6955978a62 | |||
| 27d87dff79 | |||
| d8ca58a04e | |||
| ce34798685 | |||
| 16fd5249dd | |||
| b9a4c322a7 | |||
| 673bf356e4 | |||
| 6228412e61 | |||
| 578d947e2d | |||
| 72629d0081 | |||
| d7989f19cf | |||
| 8b11cdbf61 | |||
| 5c1f76e3cf | |||
| 63ba6018f3 | |||
| 8f3482561b | |||
| 13ceeb191c | |||
| 1536d1c044 | |||
| 16b6c26d6e | |||
| c7e30e2266 | |||
| d5e4495f89 | |||
| 963960a44c | |||
| a62c10321c | |||
| bb49e03435 | |||
| 38e7b1a262 | |||
| a00d3dfc00 | |||
| cd458e7a44 | |||
| 3f82570469 | |||
| a8642bd208 | |||
| b404c79ca4 | |||
| 29c75337f2 | |||
| fca4aeb50b | |||
| 1dfa2d6e91 | |||
| 79650ca3fd | |||
| fd84827e51 | |||
| 78283a0e0e | |||
| 993321e971 | |||
| f7a1e2f652 | |||
| e75be68466 | |||
| 74ac283c52 | |||
| 9ef1f8cba3 | |||
| e45656e5bf | |||
| cdc4fb45f2 | |||
| 5379a555db | |||
| d07c0bde80 | |||
| 7015ed203a | |||
| 1ead4cbb14 | |||
| 84ebca0dd2 | |||
| cf45b2cddb | |||
| 8f8bd05f83 | |||
| b1155a202c | |||
| d4aaaf16f8 | |||
| 119fb63576 | |||
| 3f7afd47d2 | |||
| ca0f8ed653 | |||
| 809bdb7c1f | |||
| 0424ff0818 | |||
| 9b952ff48c | |||
| c5064710a8 | |||
| 57e522065a | |||
| 7143daf500 | |||
| 71a00fc01b | |||
| 941483c14d | |||
| 17d8e65c64 | |||
| 72c0feb048 | |||
| 9e20dbe226 | |||
| 06f2738c03 | |||
| 5a257416ca | |||
| f9f0ffb64d | |||
| 31cf8a8813 | |||
| 98b7e0a407 | |||
| 7ed63d2ab5 | |||
| 6e6b38e8e9 | |||
| 829b9d96e4 | |||
| 85cef7e37c | |||
| c526bec798 | |||
| 9231335eef | |||
| dfac34beac | |||
| 82dd5d8ccf | |||
| be506f7121 | |||
| 2470494009 | |||
| f95a4b9b46 | |||
| 6b444a0877 | |||
| 5c4a845b55 | |||
| 468c01056f | |||
| 397078758e | |||
| c9af06c9e0 | |||
| 5a7e663b1d | |||
| e0550cd20b | |||
| 5844231a37 | |||
| 8d435638e1 | |||
| 55cad1b3ac | |||
| 9deadc1371 | |||
| 998abf05ba | |||
| aab5092da3 | |||
| 65ee5c4bbb | |||
| 42ab938a19 | |||
| 2891de2fcd | |||
| ed3758874d | |||
| 895d8179a2 | |||
| 8f6fc0146b | |||
| e1ac1c4fdc | |||
| a6b44a1470 | |||
| e8834a68f3 | |||
| 6ad1cd3fb5 | |||
| 3279cbac24 | |||
| 5094bad838 | |||
| 94af9b7f13 | |||
| 8e02263084 | |||
| fe0fe1873a | |||
| de29574314 | |||
| 5ac024788e | |||
| a1e273e983 | |||
| a95bf64ccf | |||
| 4fa9022932 | |||
| f10fb77a81 | |||
| db092c828e | |||
| bed0598530 | |||
| b734d4bbc1 | |||
| d2080808db | |||
| 345d5e8d9e | |||
| bcc41bf3d1 | |||
| b2d444d782 | |||
| bac6703f8e | |||
| 6cbbd1e5a1 | |||
| b6ef558c86 | |||
| 70bb082973 | |||
| 8b8a19c75d | |||
| 0b53242564 | |||
| f11bd509b0 | |||
| 57608628a4 | |||
| f167c3e12e | |||
| 262b380280 | |||
| ee0c20ae44 | |||
| c30c144120 | |||
| a5ee82b0d1 | |||
| a4f558181d | |||
| 120303e6e3 | |||
| b3822d5802 | |||
| 980e4ee89a | |||
| bb1428eeb1 | |||
| f6a90e9b42 | |||
| a71159667d | |||
| 74e00cf652 | |||
| e773a80b06 | |||
| e6eea67eeb | |||
| 8429a1e792 | |||
| 47fbd2a2b5 | |||
| 93835b9b94 | |||
| 2de3fc9f6f | |||
| 78a8cf6982 | |||
| 99cf3219d4 | |||
| 7587e97d46 | |||
| 3061c8b854 | |||
| 77e9e95067 | |||
| 6191b6bee2 | |||
| b15f8f68e4 | |||
| 84c12793e8 | |||
| 6eeadddd4d | |||
| a40b3a98dc | |||
| f0d66ff0fb | |||
| d3ebd360b2 | |||
| ebbe1692c8 | |||
| ca7d406787 | |||
| a2dc8378f5 | |||
| b570e89dbd | |||
| 108f87678a | |||
| 00146ae87c | |||
| e3757fbbfa | |||
| ac64e8b15e | |||
| c39ca7189b | |||
| 03c8fdd30a | |||
| 788bc67faa | |||
| 048be2da2c | |||
| 8e1f70865e | |||
| 6143f1ff5b | |||
| db30836b53 | |||
| 3e8ef5e462 | |||
| 0a53dccd4c | |||
| 2b5aa142fb | |||
| 40443d1e25 | |||
| cb4e7614ee | |||
| 3d84dbc73f | |||
| beb2ab9ad5 | |||
| 9a0877379c | |||
| bbd0239ece | |||
| 92956f2b45 | |||
| 48d1a5ec5d | |||
| 2ff2ce460c | |||
| 7cc875b8db | |||
| 9387f583fa | |||
| 707dd700b0 | |||
| ddff9b612f | |||
| 338ac5d4a3 | |||
| ca7abd727a | |||
| 62b20769ee | |||
| 4ec323c5cc | |||
| 84e72ede72 | |||
| bd37c48596 | |||
| e30f0e8e11 | |||
| c43a2513a8 | |||
| 4b4bc0dde2 | |||
| 49adf2192a | |||
| a7eabeb73f | |||
| f838f3427b | |||
| 1cc75ca636 | |||
| d4356b0453 | |||
| 35542e5823 | |||
| c80c2233c5 | |||
| c2f0e4f683 | |||
| 2621f4a2fa | |||
| 3c055642d5 | |||
| 43b881d0cd | |||
| 8b7b32e225 | |||
| 00b0ff50f3 | |||
| 1acde593b5 | |||
| c43c043521 | |||
| b526cadebd | |||
| 94f44e1d5d | |||
| 0352d9c99e | |||
| 0cd3f37e1b | |||
| 486d7b6d62 | |||
| 8f4e332409 | |||
| f0389c0b2f | |||
| 922e8a4912 | |||
| 021a1c7a39 | |||
| 4a7451682b | |||
| faa880d60a | |||
| fd30e82836 | |||
| 3ef34fbb56 | |||
| 7345dc6861 | |||
| 9958937fd1 | |||
| f19c57200d | |||
| 8a2652f53d | |||
| dddde4ddab | |||
| 300d901618 | |||
| 1cb72acd27 | |||
| a17776cb5f | |||
| 94b749ab00 | |||
| 5fc0d284cb | |||
| bbe1211451 | |||
| ce152b205f | |||
| a5fd7cf4e9 | |||
| da38a1367a | |||
| 1445f11c19 | |||
| 86df55f5cc | |||
| cf294c938e | |||
| ebff45f803 | |||
| 7b8021a36e | |||
| 5c77bb7c67 | |||
| 8ade26b4a4 | |||
| bdbc60b4f7 | |||
| 373fa7a7d9 | |||
| eec4f173a7 | |||
| d726ce6340 | |||
| b406844c96 | |||
| 153d38f10c | |||
| dce917eb74 | |||
| eb711787ae | |||
| 9967dbbaa9 | |||
| 71dc10ebea | |||
| 782fba2ce7 | |||
| 4d73f98050 | |||
| 79d2083a00 | |||
| ee3b296a99 | |||
| 8b62d04453 | |||
| 9b0d3dfaeb | |||
| b1ef4cfee9 | |||
| f12f6a56ba | |||
| 2777d53a12 | |||
| aba3ec692f | |||
| b7c8fcd062 | |||
| 3065de63dd | |||
| a57fb4f1ab | |||
| c493a22765 | |||
| d85e5def5d | |||
| 0aba499c8e | |||
| 4146695f34 | |||
| 4e57e10ba8 | |||
| daa6d02887 | |||
| a87d89302f | |||
| 2a9b1311d3 | |||
| 7d73501b87 | |||
| 039d6acd3e | |||
| 405fcdc483 | |||
| f52abc1a62 | |||
| e763953562 | |||
| 4cab617c25 | |||
| 0190b5e5af | |||
| abc0952247 | |||
| 6ce2726a87 | |||
| 17a4463f59 | |||
| e76d8df246 | |||
| a46bcf45d5 | |||
| 1f985d04a2 | |||
| d64e6e6c1f | |||
| 1164a65df8 | |||
| d57f07d57e | |||
| 5c0a964321 | |||
| cf3b8d09d9 | |||
| 1c7397fb21 | |||
| 6a08d93e2c | |||
| 4c03ace9eb | |||
| 2cd616dd30 | |||
| eab87c0827 | |||
| 8b8188710e | |||
| fd9bb3ac43 | |||
| 6d9c3bca33 | |||
| dd33a45644 | |||
| 074c7a9c40 | |||
| de2f06970d | |||
| 6166d946f7 | |||
| c778ab9622 | |||
| aad846b968 | |||
| f04a3e3d2e | |||
| 7ad52de2b1 | |||
| 0706ba9bec | |||
| ed53888fce | |||
| fd76fba235 | |||
| 95088a785a | |||
| f46b600ec0 | |||
| 566ab993df | |||
| 407036e215 | |||
| 7b1a5566fb | |||
| 1b0d8739c1 | |||
| 266feea397 | |||
| c4c6ab2494 | |||
| 079eea3f2b | |||
| a457d69034 | |||
| d0175798bf | |||
| 80e07943ee | |||
| e2954211ec | |||
| 337bed8176 | |||
| 71197e1c89 | |||
| e1a13f5ce8 | |||
| 1ed2c16a51 | |||
| 12e1bd80b3 | |||
| fd6daa580a | |||
| d2a19ec8ec | |||
| 8f3feac916 | |||
| c0e066440c | |||
| fbb4e9078a | |||
| d96e90c6f4 | |||
| 3b435d8956 | |||
| 345dd2481b | |||
| 006bcc0fc8 | |||
| c25d14e454 | |||
| 5ff95dc32d | |||
| 34031aab1b | |||
| 3035219212 | |||
| 8a608eb930 | |||
| c2fc47df34 | |||
| d4065774ce | |||
| 6d43d9f2b6 | |||
| 94d7fd9112 | |||
| 04b5833e98 | |||
| 52592b84fd | |||
| f2cd68e3ec | |||
| aff590a44d | |||
| 0d432f6377 | |||
| 59bceee258 | |||
| 4a0a0bac1d | |||
| c7bd96ea8b | |||
| 0eb2106067 | |||
| c03aec364c | |||
| f2cdb97867 | |||
| 727e284ed0 | |||
| 3248977e02 | |||
| 7ee8776165 | |||
| f89f4bd20b | |||
| a372ade7ce | |||
| 61dca4a35e | |||
| c0402345f7 | |||
| 9cc68b26e2 | |||
| 27c9230a82 | |||
| e985c9714b | |||
| 6c5015811e | |||
| 86e7de4d62 | |||
| 147d35e40d | |||
| b76fc724fd | |||
| 1bfab4e279 | |||
| 11bdfba37e | |||
| 405f08b807 | |||
| 592211cecd | |||
| a4f31001e8 | |||
| c2deedac8b | |||
| 9a61f8b894 | |||
| 3a291f5c8e | |||
| 559a2dcec7 | |||
| b7f003c4aa | |||
| d11c0bbd5c | |||
| c2f775fcaa | |||
| 19ac831c2e | |||
| 23b413a398 | |||
| 098de196e2 | |||
| 27d2c31f28 | |||
| c9c9edeb23 | |||
| 5adf792fad | |||
| 81af7d73a6 | |||
| 23e4e0786d | |||
| 0640ce9632 | |||
| 3e49bf4f42 | |||
| 66b038a010 | |||
| 9bbbebf31d | |||
| 19765cfa14 | |||
| d6badca610 | |||
| 6933804aa4 | |||
| 5bed7f292f | |||
| f553896e2d | |||
| 60663b5433 | |||
| 1851a31e66 | |||
| d853310bee | |||
| 11c671354b | |||
| b15599f01e | |||
| 4b957abc0c | |||
| 8ee82d1e03 | |||
| 5565662d87 | |||
| 78735fae6b | |||
| d3b9911445 | |||
| 7813dafc96 | |||
| 02b561edd2 | |||
| 272a1fda54 | |||
| bc8666df83 | |||
| 028fad94af | |||
| 0c735953c9 | |||
| 736bc87480 | |||
| dd94a64048 | |||
| cf9f88f8ce | |||
| 5694aeda5f | |||
| 7829e3c132 | |||
| 2ce0d60db1 | |||
| 68e66dad06 | |||
| 80db907857 | |||
| 76674a3594 | |||
| 98dba11c5e | |||
| de261d28ef | |||
| d43716612b | |||
| cfaacf7cb2 | |||
| b9922bc90b | |||
| 31cae8f05f | |||
| 133e382aae | |||
| e02c721c2b | |||
| 5af0ceb2d2 | |||
| 6460fdc62b | |||
| 402ca780bf | |||
| 643ab92cd2 | |||
| a9c3b343fc | |||
| 592bebaf29 | |||
| 4df215e674 | |||
| 91792f45ea | |||
| 20091e94c8 | |||
| 76aa494be4 | |||
| 6fb8fdc2bd | |||
| 0d879ed290 | |||
| d8d46e0f3e | |||
| e5830b0116 | |||
| d89b171f49 | |||
| a760aec791 | |||
| 34d5d353af | |||
| e8e637c4f2 | |||
| adbca39fef | |||
| a2c88b607f | |||
| 2115a67d24 | |||
| dec73b02e9 | |||
| 0e6ed53cee | |||
| fd6c70afe1 | |||
| c4f193b13e | |||
| 70703c39f3 | |||
| d429485f0c | |||
| 89460dd39c | |||
| f46b259384 | |||
| fb0ce48f2f | |||
| cb4a81008c | |||
| d620da365e | |||
| 0c3102721c | |||
| b3fa03043d | |||
| 38d7db49c8 | |||
| 1a8c832039 | |||
| 6e54f8cfa6 | |||
| 4838ffb82d | |||
| 1bcf41d382 | |||
| e381566494 | |||
| 66d7a073d3 | |||
| 0637215b85 | |||
| dc1405ffa8 | |||
| 0fce20c503 | |||
| 1b16dd126b | |||
| fe07f9208c | |||
| f092fc3fc6 | |||
| b5228dcda0 | |||
| a5db3ea25b | |||
| 173fad2362 | |||
| 496338d84d | |||
| 59727a6967 | |||
| 3a5e41ed91 | |||
| 2259bce05f | |||
| 7e00a86bb4 | |||
| 73a2a938b4 | |||
| c2098938f5 | |||
| 773ff182ee | |||
| 878c49e4e1 | |||
| 023dd3e880 | |||
| 6b88856c16 | |||
| dd5f926077 | |||
| 845020b0e2 | |||
| 7cf363eb06 | |||
| f67e670621 | |||
| 645e3ccbb3 | |||
| ab385f2bf5 | |||
| 5080b9a82b | |||
| 51e42ded44 | |||
| 37fb89c691 | |||
| 440eda3807 | |||
| bad2576397 | |||
| fdf2e5934d | |||
| 3da1e8598b | |||
| 0296c767bf | |||
| c215c42289 | |||
| 8adab95973 | |||
| b89c7580e6 | |||
| a85fe2cb08 | |||
| 4c4c126361 | |||
| e9e12b88f8 | |||
| dc08c516bf | |||
| 9b1f108051 | |||
| b0f9a0feb4 | |||
| 3bd27ae8c5 | |||
| 79b9bdf7ce | |||
| 9e09168597 | |||
| e5f12347bd | |||
| 86d3556c6d | |||
| 45838b33b7 | |||
| a1d4798ded | |||
| 25c52b7482 | |||
| fcf9f266ad | |||
| fa638ae3a0 | |||
| 6d9cd504a0 | |||
| f9e9bb8870 | |||
| 85ab2425a8 | |||
| 9931155c68 | |||
| 56b6d928b6 | |||
| b865bea482 | |||
| b6314e0c73 | |||
| 2c773750c7 | |||
| 539b9be1d3 | |||
| 00e8caa0e3 | |||
| 1ff8b62bf5 | |||
| 25fb985af8 | |||
| 858245db7d | |||
| 09bea2ad5b | |||
| adb520ec2a | |||
| 5a1ff4b50d | |||
| e0f8acf733 | |||
| a81542eeee | |||
| f67eeb66aa | |||
| 884c998622 | |||
| 88c8d73a94 | |||
| 86576768d1 | |||
| 3327c32b20 | |||
| 97ed6a3a4e | |||
| 85d8e0ac2c | |||
| 2a68f9f532 | |||
| b55d35c7bb | |||
| 98f85d7728 | |||
| 328a7caf61 | |||
| 275ea9b0bb | |||
| bb78bc8fe3 | |||
| 10224a692b | |||
| 3eb83d0737 | |||
| f35fa0049c | |||
| d77a88c21e | |||
| 3d55622237 | |||
| bf76465029 | |||
| 129a6ed99e | |||
| 9f5fc4ab0c | |||
| 97f6468663 | |||
| a883b73981 | |||
| 36aadc21a7 | |||
| da469911d3 | |||
| 4195b0d0e6 | |||
| d241aef502 | |||
| 8b2ca6b13d | |||
| ade94c87b5 | |||
| 46f3426c35 | |||
| 3503cd9b71 | |||
| 73cc040792 | |||
| 6c6029618a | |||
| 2a8084b6c6 | |||
| 86ca9bd0f9 | |||
| b192678abf | |||
| 9a998d7b41 | |||
| 64a6859753 | |||
| b20b7e65bf | |||
| 203e3ef077 | |||
| 7be5502a12 | |||
| 0de6e4ccbb | |||
| c8041bacd6 | |||
| 1187f83ffd | |||
| dd3b8469dd | |||
| 34bbd7dcaa | |||
| 8318b3ba83 | |||
| 6768ecc3fc | |||
| 9672f00ec3 | |||
| 0c1101739d | |||
| 872cb2d9c8 | |||
| 3e47fe54fa | |||
| f0d3d23b5f | |||
| 69e59b0ced | |||
| ad4fb5afe3 | |||
| dd6dd63798 | |||
| 7a3748b8f6 | |||
| 06a08a874f | |||
| 37a9813482 | |||
| fe7b436a8c | |||
| 601eff1af6 | |||
| 29949eae1b | |||
| 9dfe6d1e85 | |||
| fb3bc22c64 | |||
| b89304a24b | |||
| 69b3457e83 | |||
| cf21074f10 | |||
| dc7f21513a | |||
| a15450af91 | |||
| efbcce0ffe | |||
| 1c2c87e03d | |||
| 93b33c0518 | |||
| 53e01952be | |||
| 1c12b468a8 | |||
| ccd803416e | |||
| 62f2a42f28 | |||
| d6e76fd1c0 | |||
| 9135c56ac6 | |||
| 0e7eff3963 | |||
| bd1928e445 | |||
| 8e105af232 | |||
| 796cbafde4 | |||
| 29354a1586 | |||
| bcd73e604c | |||
| e80ca6553d | |||
| 90f17c2140 | |||
| 2e5cc1e6ae | |||
| 0ea7fd9c3d | |||
| 814d9aa01b | |||
| 3fa12445a5 | |||
| 547a2aec09 | |||
| 9175fb7da8 | |||
| 887032881a | |||
| e67f82283f | |||
| cfa83658dc | |||
| c881aa7b32 | |||
| a8db29399f | |||
| baacd0e50c | |||
| 0f8c3b1960 | |||
| cd523cc934 | |||
| 044271a55c | |||
| f662b9a081 | |||
| ba10f97420 | |||
| 50c460ebd5 | |||
| 501863a0eb | |||
| ec9b2dbe42 | |||
| db2ba22bd6 | |||
| 087f08dad2 | |||
| bf7b146dfc | |||
| 01f3237416 | |||
| 8f813fbc67 | |||
| f4ff695080 | |||
| 08cc2bbd70 | |||
| 46a7e46068 | |||
| 472a567f42 | |||
| f3bc1ed3a9 | |||
| 7ba9b97afc | |||
| 061d281d2a | |||
| 2835508292 | |||
| 959d9a3ad9 | |||
| 7cf34a6d6f | |||
| 8d6d7d1f20 | |||
| b115764d9c | |||
| 1b5d332e93 | |||
| 356dfc806d | |||
| f2b556adfd | |||
| 1bbfced61a | |||
| 800cb8c6dd | |||
| 6b1d672dc1 | |||
| 6e138bbf54 | |||
| 6dabf4507a | |||
| 527e6cbc72 | |||
| 39edbcbabd | |||
| 0077856d2f | |||
| b65f1d7df0 | |||
| 201afbbeec | |||
| f5caf96d2e | |||
| 73efcc6b0c | |||
| d69510f997 | |||
| d6946a8aae | |||
| ebbc168f3f | |||
| 347cbd37ca | |||
| d190e0b771 | |||
| 5f28a7db0d | |||
| d0c99f1999 | |||
| bf71781ee9 | |||
| fbce104f3b | |||
| ef9074f8e4 | |||
| 67f3111cc0 | |||
| 56d2101b1a | |||
| a28395b116 | |||
| eebf3a54e2 | |||
| 7e70fa63d7 | |||
| bea4b520c0 | |||
| 64c17c4ecd | |||
| 26f7ac9ca1 | |||
| b1a12768e1 | |||
| 0e5a448d04 | |||
| 91a89399f8 | |||
| c6bb7c5993 | |||
| 48b131eb5c | |||
| 1328be2b61 | |||
| 88c1e622dd | |||
| 10672786a1 | |||
| d896a9efec | |||
| 0ccdd4b6ad | |||
| 66fc676858 | |||
| 12f2acc9ff | |||
| b53e8bf501 | |||
| e296264ea6 | |||
| 598f5519d1 | |||
| ced64d7a09 | |||
| 7075a8a8ef | |||
| e2605c2838 | |||
| be63939441 | |||
| dea9c37d99 | |||
| 4d27366ead | |||
| a11a8429bb | |||
| 6da33cafe5 | |||
| 06f82d5e8a | |||
| 89dd0c4a40 | |||
| 1b10f53eff | |||
| 8bd7d57dd8 | |||
| 4a6325696e | |||
| b50a907ca3 | |||
| 59e9a67abd | |||
| 1d2f06df6d | |||
| 725b93a961 | |||
| a21e4c5a0b | |||
| 433db17083 | |||
| f8753fb9f1 | |||
| 25d5653f66 | |||
| 703a88a639 | |||
| 25326b571b | |||
| 5e2f4c9d2d | |||
| f43d380fe2 | |||
| 2240d3d0d1 | |||
| b6eea9a880 | |||
| 6bbd7c0c0b | |||
| 2caeb4008c | |||
| a4919ffb45 | |||
| b384340cbb | |||
| 061f46306f | |||
| fe1f11b071 | |||
| d3f5db576a | |||
| 0ca586e1c8 | |||
| a0b55f9df3 | |||
| 24943ccee6 | |||
| bcaaf34fa7 | |||
| ea17d1f6c7 | |||
| 3be734010c | |||
| e79787cc77 | |||
| 7de428233e | |||
| 9722f56be8 | |||
| e766d206f1 | |||
| 1fa9091239 | |||
| 04e1e5e3a2 | |||
| fa5c0560fa | |||
| 55d47b3e31 | |||
| 5bb96fd477 | |||
| 22b404a1b4 | |||
| 03dcf82602 | |||
| 95d1e8a4f1 | |||
| 67f68b47db | |||
| 593808f24d | |||
| 0a884cc64a | |||
| a54d4b98b1 | |||
| 23132e5292 | |||
| d741b624be | |||
| 00bc394bdb | |||
| d7215ad185 | |||
| 2b63eb8243 | |||
| 1bb3da0332 | |||
| c7d3d635f6 | |||
| f4c8db6105 | |||
| b2637b9a43 | |||
| 09d0ac3838 | |||
| f42cc848d5 | |||
| 4b1224f874 | |||
| 10bb2cce8e | |||
| 8174b3b85a | |||
| 71e2f2ed61 | |||
| 8d8724b3e1 | |||
| 47f65ccba6 | |||
| df0c1106ce | |||
| 47a2271e27 | |||
| ea367a7f37 | |||
| f4b192e33c | |||
| a5c824f694 | |||
| ccc4607d6d | |||
| 4ec41392f7 | |||
| 5f2b2cd0f7 | |||
| 361e3ca356 | |||
| 13bf4fab32 | |||
| 4b583e8ce9 | |||
| d31c6fe286 | |||
| 79de97d814 | |||
| 1c5d093b59 | |||
| ecff2beafa | |||
| 7e0b19c43d | |||
| 2ebe2faa74 | |||
| aec1451168 | |||
| 38251aa513 | |||
| d92e8ca8d2 | |||
| 2e5876d488 | |||
| 3dddd16ec7 | |||
| 40ff7ad999 | |||
| cb79f769c9 | |||
| e95feff016 | |||
| f65b32c1af | |||
| 46dd9b9887 | |||
| 4445f21e8a | |||
| 00d3676a20 | |||
| 0f7cb12e97 | |||
| 8485e02c00 | |||
| ae7300f9b4 | |||
| fc796539e8 | |||
| 1d8c43b445 | |||
| 58de37e822 | |||
| 7b3a0c5105 | |||
| 592034653c | |||
| 8d9f830c53 | |||
| d8eea0ce0e | |||
| c28c441e77 | |||
| 1391420699 | |||
| c0be751ef4 | |||
| 5e2462e061 | |||
| 5c0eb4772d | |||
| ef8706b4e1 | |||
| acd1919e8d | |||
| 459e2a322b | |||
| e62caf33aa | |||
| 72fd0f3d41 | |||
| 032c21c545 | |||
| b391daac6d | |||
| 8cb6959e3f | |||
| 49c817a60e | |||
| 6859b53155 | |||
| c581563230 | |||
| fc1db35f27 | |||
| 2734a4aee4 | |||
| 172f65969c | |||
| f0dbe0deb9 | |||
| 8f8d81f90c | |||
| 665523bc7e | |||
| 99e8fa70ba | |||
| 4c1d7c9d73 | |||
| d1cc8e7ad7 | |||
| 7629e44e4c | |||
| b62f6a6141 | |||
| 10d7a2396c | |||
| 007eced326 | |||
| 1128270d4b | |||
| c7d889bf9e | |||
| 7cb585c1a1 | |||
| 75157221b2 | |||
| 9807520ef0 | |||
| c658ee5c78 | |||
| cbfbcdcff5 | |||
| 9a0581ea7f | |||
| 60c268ddd6 | |||
| 0361e0204a | |||
| 2da427134b | |||
| 4fce0dadcf | |||
| 288c241fb4 | |||
| f3e3eda69e | |||
| 0f4dd8103d | |||
| 86ee05ee5e | |||
| 3b9c6a6465 | |||
| 8e73a4a19d | |||
| 428bb36ec6 | |||
| 0a24df6bd0 | |||
| d3ca080729 | |||
| 7658031784 | |||
| 710e74219a | |||
| 0249bed53a | |||
| 9d14f81b79 | |||
| a7c683a83c | |||
| 16631bf454 | |||
| 3c563f7073 | |||
| 344bdbb707 | |||
| a0256dfc60 | |||
| b131f27eb9 | |||
| 0d9b70552e | |||
| ea1a89290a | |||
| 59f1679d37 | |||
| 5121983218 | |||
| 0d7141ce5b | |||
| b4b753ce2e | |||
| 4f666e4d53 | |||
| 874a988527 | |||
| 51c79f9784 | |||
| 4d19811026 | |||
| d1454075ab | |||
| becb6cf5bf | |||
| a6f34d2044 | |||
| 7300024e13 | |||
| 282800e6b1 | |||
| e938bd3481 | |||
| 9b501276fb | |||
| 90d191f5f8 | |||
| f452e7f9d2 | |||
| 1d25f41122 | |||
| 5556785804 | |||
| 22ce4c24fb | |||
| d4d2d127d1 | |||
| 3c28932862 | |||
| 7e9177cb3c | |||
| f692103c81 | |||
| 5a1dfe9b89 | |||
| 7175180dc9 | |||
| f95d1fa8ba | |||
| 7b57068f6f | |||
| d79eac3e26 | |||
| 27c255c874 | |||
| bdc611b23a | |||
| 4cddf0bf5d | |||
| 462d4c99cc | |||
| 94a2188090 | |||
| ebcdcb5f00 | |||
| f9e780ed67 | |||
| 18f8ce69cd | |||
| dce665f14e | |||
| 80046b646b | |||
| 06ddceeac0 | |||
| b7ea1dfcd0 | |||
| 6d9598cd4c | |||
| 60c9701c3f | |||
| 2a8644b72c | |||
| b6e469abd1 | |||
| 004c237085 | |||
| 398e3bdf82 | |||
| 958350af82 | |||
| 2d677a8af9 | |||
| 05a79f5b55 | |||
| ac9566d3d7 | |||
| 8b7bf94aae | |||
| c4e785e523 | |||
| 2f6f883f7f | |||
| d071e92a1c | |||
| b18b4072e1 | |||
| 0a2898da17 | |||
| 73fb596973 | |||
| c3f9dc7400 | |||
| c75ce210ea | |||
| ffca6d8ba5 | |||
| 1ec35befc8 | |||
| 6080eaebbd | |||
| 41ea339053 | |||
| 75f9c08445 | |||
| cec3d1488a | |||
| ebec082da2 | |||
| bec585e382 | |||
| 2cc8ae875a | |||
| db8252e650 | |||
| e3cb26a1c4 | |||
| 44036ae26d | |||
| 5b5f871a6e | |||
| 9a8f9cae6d | |||
| 8f804581c0 | |||
| e26ef17545 | |||
| 800bb223b5 | |||
| 75606f2100 | |||
| a28928e6ca | |||
| 8700007025 | |||
| 520f7fa2de | |||
| 096208a154 | |||
| 27caab69ec | |||
| 3fe2b587cb | |||
| c791188811 | |||
| b227c90c18 | |||
| 8a5538356b | |||
| b257c881b5 | |||
| 0f5dffb1c3 | |||
| d2bd238274 | |||
| fed700440d | |||
| 32a9d42412 | |||
| efc938d870 | |||
| 369f669227 | |||
| 1c56671f01 | |||
| 4dbc1e0e96 | |||
| 94288843f1 | |||
| b12decc865 | |||
| 0fc944abf3 | |||
| 9f96c98f02 | |||
| 9805b05738 | |||
| 13ed186469 | |||
| 00a43221ac | |||
| edc39112e2 | |||
| 3b727dea99 | |||
| f16b2adec7 | |||
| 7d425aa76f | |||
| 651c07c724 | |||
| 4d27b75897 | |||
| 6f75d68d07 | |||
| ae269e12bb | |||
| 3a48929fe6 | |||
| be970326b6 | |||
| 463511871f | |||
| 002da1e02d | |||
| b095aae5ce | |||
| 511c21029e | |||
| 81b0447024 | |||
| d42772a261 | |||
| c1136099a9 | |||
| 06f8a975c0 | |||
| c8cd8775f6 | |||
| f9900c91bd | |||
| accaf6e77e | |||
| 8490e297a9 | |||
| 6d3a4b5f6c | |||
| 1f36206f45 | |||
| 952e10936c | |||
| 2b3093a687 | |||
| d7e25772b0 | |||
| c66c9b0353 | |||
| bbde0d75da | |||
| c3aec4f627 | |||
| 113852eed4 | |||
| 6b9b2c1468 | |||
| 2c87b295ff | |||
| 93767d68f8 | |||
| cc3646ca16 | |||
| 48333f73d5 | |||
| 1f4241a63d | |||
| 8eccfaa034 | |||
| 438d1af12a | |||
| 5be6ef380f | |||
| 76419ed2fc | |||
| 4684921e51 | |||
| edd8caa2bf | |||
| cb5575ae89 | |||
| 42e726dec5 | |||
| e3d33aa171 | |||
| f2ceeb35da | |||
| 577cf5ddc4 | |||
| 91ced39233 | |||
| 4b6cb0b8b8 | |||
| fb81302382 | |||
| dfc81f65ee | |||
| 909db4c861 | |||
| 4277eed1b6 | |||
| 6f5703a5fe | |||
| f7469f298d | |||
| b29d5df7a2 | |||
| 549ba65861 | |||
| a9d99cbe54 | |||
| 8438024370 | |||
| e6a00ddcfd | |||
| 71b967d243 | |||
| 1fc1e9590a | |||
| 0a0099fb41 | |||
| b890d394ad | |||
| a7fd37ae76 | |||
| 41fafae21d | |||
| a38c007f51 | |||
| c7ee402b0e | |||
| 1c19796e3e | |||
| 76fb0cb965 | |||
| 23c79f5cc9 | |||
| 14eac50261 | |||
| cf3eae1c91 | |||
| db06cdb4ce | |||
| 7ba8e51fa9 | |||
| bc6466cc36 | |||
| 4fbefaef9a | |||
| be11d3325d | |||
| 274140d309 | |||
| ed960ccc8d | |||
| f2b72113c1 | |||
| 67a8d30e87 | |||
| dafd0e5db7 | |||
| d6d10cbf06 | |||
| 3d3ba86be4 | |||
| 52ed8a7ed0 | |||
| 9449c99e25 | |||
| 4c0846734e | |||
| 4c64f5fe62 | |||
| 9455ea0547 | |||
| c3b54a63c3 | |||
| b9e1d3116c | |||
| 5bb7e62a7c | |||
| a443f3a0bb | |||
| 440244eed8 | |||
| 2b9e25300f | |||
| de264dbf94 | |||
| 848b773e24 | |||
| d92f022041 | |||
| 57fab61789 | |||
| ec8f977ebe | |||
| 8dc85e7641 | |||
| 4e00ebcd74 | |||
| 335e719b5d | |||
| 415f8ef2d8 | |||
| 17615d1d4a | |||
| 5072252c72 | |||
| 46e93770c9 | |||
| fe43734811 | |||
| 0df81c49d5 | |||
| 5653516b32 | |||
| 22da5be08e | |||
| 862656aecc | |||
| ec119a6d52 | |||
| 6b98b5f4c7 | |||
| 5effe95f2c | |||
| f22e3fd3ff | |||
| 0047040af9 | |||
| 60987e6b9b | |||
| 27d5e2b219 | |||
| 53fd0c3a55 | |||
| 63456a6d4f | |||
| d4cd3c2f7b | |||
| dbf7137a1a | |||
| 785891c315 | |||
| b7417ec954 | |||
| 61b861f0e5 | |||
| 0fea0738bf | |||
| 4f25d29815 | |||
| 28302a5040 | |||
| 9cc5ca5c58 | |||
| 4c4e60b3c9 | |||
| 5689a96602 | |||
| 8b57db467a | |||
| 50339e53e2 | |||
| bc9f5189a5 | |||
| fee83fee40 | |||
| cd5112ab0e | |||
| a43b88f9a2 | |||
| c20fd5dcaa | |||
| f12e296c09 | |||
| 9c3a572646 | |||
| 6175faa9a4 | |||
| af02fc6bbe | |||
| cc0bbc42a2 | |||
| fd747c7340 | |||
| bd33202972 | |||
| f6f0de0e38 | |||
| 881041800b | |||
| 11f3ac16f6 | |||
| 969bf95230 | |||
| abc6b4180c | |||
| f74d762a92 | |||
| f00892ed66 | |||
| f14c6e6845 | |||
| b1bbf2ef84 | |||
| 201062cade | |||
| 8cb9198bcf | |||
| f5e53c0452 | |||
| 41d9c00f70 | |||
| b52f392c92 | |||
| efaa3b5ab2 | |||
| 36f3d8d6ac | |||
| e469afa4a9 | |||
| 9d4b0caa5b | |||
| 392c07951e | |||
| 8e72c3d81e | |||
| 02428f1e06 | |||
| b3aa513563 | |||
| b8b08cb114 | |||
| ebbbf1059d | |||
| 37297076f8 | |||
| a75b2df6fe | |||
| 9ccd0f0282 | |||
| e57d9f2e2e | |||
| cf593ba9f9 | |||
| 9eb862a6a4 | |||
| bc84e08da5 | |||
| 24dae2f096 | |||
| ab24d6bd96 | |||
| 7782c80c4f | |||
| 994bd0a910 | |||
| bc9dcba4d4 | |||
| 85c244ed08 | |||
| 495196193c | |||
| def1e5e1d8 | |||
| 2727091e47 | |||
| d7fbd416ba | |||
| 6a09ce1613 | |||
| 774e6346e7 | |||
| 05b939760c | |||
| d6c6fbfe03 | |||
| bb3cbf2dda | |||
| 39d96a45aa | |||
| 6a8c5c8869 | |||
| 96318bbe11 | |||
| 00dd2463fd | |||
| bcd55626ef | |||
| 8f8cb6a52f | |||
| 2e3d33dfcd | |||
| 1e40cd6f0b | |||
| 6e2608b2f2 | |||
| 60d80cf261 | |||
| 9c23fd4a31 | |||
| fccb1aad32 | |||
| 2780ff31b5 | |||
| c37c8dc21d | |||
| 6ee7a81f10 | |||
| 3d94638d86 | |||
| 418ff95543 | |||
| 221113cbb7 | |||
| 13ea12cf6e | |||
| 1945aae4dc | |||
| 30362cfc0c | |||
| 6cdc590db5 | |||
| eb122a2b8c | |||
| feaf8711d3 | |||
| 6e364ff0ba | |||
| 6f6aff7493 | |||
| 207cddd50b | |||
| 35988d8f09 | |||
| bea63028c7 | |||
| 0244060806 | |||
| bfdc296f43 | |||
| 8e625a5d07 | |||
| 3460bd0ba9 | |||
| 4dd0377eb8 | |||
| 6e1ab9fe3a | |||
| 7a2d214cc4 | |||
| 62495a6de4 | |||
| 8ea88468f3 | |||
| 687892890b | |||
| ff0dfacc48 | |||
| 235a52032a | |||
| a5ee7e78f6 | |||
| 181dbe8493 | |||
| dae9c9a7ed | |||
| 6d6d299ea4 | |||
| 6fd615b9cd | |||
| d09394ed52 | |||
| 3e6f27d173 | |||
| 82c2ae5441 | |||
| 7edf2bb2c2 | |||
| c9607b99a3 | |||
| 2fe1a84dd4 | |||
| c63218a889 | |||
| 5efa9664db | |||
| dc75469e78 | |||
| 9d1e21b5ad | |||
| 27a367c733 | |||
| ffa0ace2a7 | |||
| 074e1e992c | |||
| cdd72c7e56 | |||
| a5e99a95a3 | |||
| 1de736019d | |||
| d6b2712070 | |||
| eda8f4ccec | |||
| 7e3f476407 | |||
| e10f36d5f0 | |||
| 1bfd9abda3 | |||
| 4a1a10fde8 | |||
| 4c3cb76ced | |||
| e2794e9f06 | |||
| 7d2c627ad2 | |||
| b310e0f718 | |||
| 18915ae2bd | |||
| 5dbda8f519 | |||
| 82ce9dfc04 | |||
| ad5cd564ab | |||
| 6f01f580ca | |||
| d5130d9fe4 | |||
| 0341a0d5e7 | |||
| 32191fb05a | |||
| 1592fe377a | |||
| 5add28410f | |||
| d54a55c12b | |||
| aab5e8430f | |||
| 2e20fdb462 | |||
| 2ac3da7a90 | |||
| 399b79bab2 | |||
| b9eb936cac | |||
| 38117df11b | |||
| 27d729baf0 | |||
| d408a64c8c | |||
| 9aeb28066d | |||
| 6fb7c8687e | |||
| d9666008e3 | |||
| e132230651 | |||
| c2877a0c22 | |||
| 251fc3ec68 | |||
| 287f0a3b68 | |||
| b03d9fe987 | |||
| 98372ef33f | |||
| d00f4afb84 | |||
| d4bf02c882 | |||
| 284e671163 | |||
| 0f112e5c9d | |||
| 759449b4be | |||
| 9c03f919a3 | |||
| c9afd9a281 | |||
| a999cb9db9 | |||
| fdc5bd6195 | |||
| e1d94eee21 | |||
| 885f237217 | |||
| 5860a4e28e | |||
| 2bebed44ff | |||
| 4990e544cf | |||
| 8010506d4e | |||
| f2f7abb9a8 | |||
| 85f6ab869e | |||
| fc87b0a11e | |||
| 79bc071754 | |||
| 797243fc9c | |||
| cc7c6b9ece | |||
| 279071e5bb | |||
| 426374ff8a | |||
| 1508874ebc | |||
| bbe440cacd | |||
| e647e73af9 | |||
| 696ddfde0e | |||
| 37d6257524 | |||
| faee894052 | |||
| 61f16b8c5e | |||
| 85eb38e755 | |||
| a87cf60dfc | |||
| 3b135447f3 | |||
| 0c3713f7e5 | |||
| 4d0571fd73 | |||
| 4722988bf0 | |||
| 61151535e6 | |||
| bcff6c192c | |||
| 020d0cfb49 | |||
| d38e3bd729 | |||
| 84a604f70b | |||
| 782baf54a3 | |||
| d754e4eeca | |||
| db98f6191e | |||
| b453a42f77 | |||
| 2a6585e664 | |||
| bc013925b8 | |||
| 8108ecc4d3 | |||
| 1c80584206 | |||
| a3dd9c3e57 | |||
| 8f05fc0a84 | |||
| 3c4feecda0 | |||
| e776a51c73 | |||
| 129e8ef98a | |||
| 69134f6d6a | |||
| b32062f875 | |||
| 8d46ee85f1 | |||
| 9f9fde1f2b | |||
| 2b041e09ac | |||
| 73b32bb45e | |||
| 11e6e74f09 | |||
| bf3e3f0c3d | |||
| 2656acc321 | |||
| e46c9be79f | |||
| 507167d5c1 | |||
| fc90162f69 | |||
| 1e8fb7a38c | |||
| afb6c5a09d | |||
| 2255ab0a37 | |||
| a6ab042078 | |||
| 480f70c049 | |||
| 0592897859 | |||
| d5a9f8e177 | |||
| 5840829cdc | |||
| fd0946b770 | |||
| 293b462fd2 | |||
| 3db50fdd54 | |||
| 1540e6518c | |||
| 8b30c13cd9 | |||
| a7eb89b2f0 | |||
| 53c102e1e9 | |||
| 7d90737921 | |||
| e281f88f2e | |||
| 16c5c7bbb4 | |||
| 7d4dfd87f1 | |||
| 6156bf0f9d | |||
| ee1fdca52e | |||
| 95b5bcbd49 | |||
| 0c529361a3 | |||
| 7110acc94f | |||
| 1188002bcb | |||
| b47a3f15ce | |||
| 695a2a2b6e | |||
| c8b4ef3eed | |||
| 6091248493 | |||
| 32fd507ad9 | |||
| 0ee77a37d1 | |||
| 05241544c5 | |||
| 495c872489 | |||
| 8c09edfdbd | |||
| 67722cf788 | |||
| 8e3484b873 | |||
| 4622aebabb | |||
| 96f29c27cd | |||
| 3de98f7a9d | |||
| 2b33fcd92d | |||
| b1ffcd4350 | |||
| fd500001fb | |||
| 54a757a917 | |||
| 98dfc218d9 | |||
| f6f0f1fb72 | |||
| 218c810860 | |||
| c836b6df3b | |||
| 637bab29c6 | |||
| 0061b3fcbf | |||
| 2a19ded9d5 | |||
| bda9de0775 | |||
| 7047610a45 | |||
| 903d6f9e12 | |||
| 7d61bb2868 | |||
| def7164cad | |||
| fc399e01fe | |||
| ffdc3eee2d | |||
| 1f6f44ab01 | |||
| 19740758c9 | |||
| f618660d24 | |||
| f50dbe298a | |||
| c324fbace4 | |||
| d05152af71 | |||
| bf228b4ae4 | |||
| ba0c17e287 | |||
| 6cfbd4cefe | |||
| e17a2e79a0 | |||
| 72d709ae6c | |||
| 08ca450c40 | |||
| a2951659ac | |||
| 3a6af3810f | |||
| 3973554f07 | |||
| 718cba2e36 | |||
| d2a70d1504 | |||
| 4bc847ac42 | |||
| c3621edf9c | |||
| a64f2de9e1 | |||
| ce684cf9d4 | |||
| 1d1be10f16 | |||
| a09f97c9d5 | |||
| 48da2d2dfb | |||
| 36c0edea2a | |||
| 3568dc2083 | |||
| 51ad72a432 | |||
| 9ce970df8f | |||
| cfa4d80dd7 | |||
| 885cd05f1a | |||
| 21188725d5 | |||
| 70f257b62f | |||
| e8fb8e13df | |||
| 7b7b93e9ba | |||
| 4014da3cc5 | |||
| 410120adee | |||
| a98e65aa1e | |||
| dba9998118 | |||
| 1c75ce5911 | |||
| 33b30aeb95 | |||
| abd8d3459a | |||
| 471698c59f | |||
| e67cf578ae | |||
| 186ad5d444 | |||
| 7eb810c34a | |||
| 7817384e3c | |||
| 34256ba358 | |||
| 08eb5aa7d1 | |||
| 1d3932e8c5 | |||
| 3f85b30d4a | |||
| e4c398aa23 | |||
| f9417555d0 | |||
| 5d3123b97f | |||
| 25080aaf1d | |||
| 05ac4b5ab6 | |||
| 07e13e2499 | |||
| 2d9645b9b0 | |||
| 65ccbedab2 | |||
| 631567864b | |||
| 39d479128c | |||
| 4c0b315c07 | |||
| 264e83a1f3 | |||
| 2b2ed50721 | |||
| 31fbf99109 | |||
| 63381ad221 | |||
| 6ee2d1103e | |||
| bee18dba54 | |||
| 481e445e8a | |||
| 129f7b7441 | |||
| d6bc3c5175 | |||
| de7c56c6bc | |||
| 0c59ecfa14 | |||
| f67241a3cb | |||
| 3b2893944c | |||
| dd7d6df4c6 | |||
| efbda436f3 | |||
| 2064934939 | |||
| b36cf7c450 | |||
| a24dd3dee2 | |||
| 7b22f08869 | |||
| 840929754a | |||
| 51fd332806 | |||
| 4d7e0f6b79 | |||
| b74a573ec5 | |||
| 5faf88afdb | |||
| 5e1110930e | |||
| f11adf5f80 | |||
| 40a71e09a6 | |||
| 1231847a3c | |||
| b06a73e893 | |||
| f99f194927 | |||
| eac7d07ef6 | |||
| 60d70a9f4c | |||
| c944783590 | |||
| 8104a8aea1 | |||
| a4db678895 | |||
| da33d02461 | |||
| 9b4071006e | |||
| b3cdd5b3bf | |||
| 93e53ec612 | |||
| ea8319e2b9 | |||
| 2fae253c62 | |||
| e204b257ad | |||
| dd83d8ed61 | |||
| 61f3d85af1 | |||
| 804e515847 | |||
| 35977b6c7f | |||
| 23f1d3d83b | |||
| b8ea935424 | |||
| 7c0866f626 | |||
| 0f2062b739 | |||
| e91454eeee | |||
| 58134200df | |||
| f6bab21928 | |||
| 011910811b | |||
| bbc0ba147a | |||
| 922a4331db | |||
| 8f7f1e2683 | |||
| 1980cc007f | |||
| 39611f7477 | |||
| e3d659576f | |||
| 46d4670b74 | |||
| 15ca6d5ca9 | |||
| 58f23cda4a | |||
| a58d8420a2 | |||
| 96f834fb81 | |||
| 86617eccb1 | |||
| f2936d1c2d | |||
| 0fc8e04ab5 | |||
| a65e2d3115 | |||
| ca6e25b11c | |||
| 3ec6a6f5bc | |||
| c12fae47e7 | |||
| 604d2c698b | |||
| 5d14016366 | |||
| b112becbba | |||
| e68a09fb3c | |||
| 30e9b4513a | |||
| 671b14dac0 | |||
| 82e99988e8 | |||
| 313a7ed7fa | |||
| cf3365574e | |||
| 0e1f6f50ea | |||
| 5b6518d4a9 | |||
| c009dce591 | |||
| 40e2d7932b | |||
| e29b7a6eae | |||
| a3e9cbc000 | |||
| aedcc2ff40 | |||
| 4c17aeb180 | |||
| ef60ae652c | |||
| 1d62ed028e | |||
| 50bf7694c2 | |||
| 807f1d7c1c | |||
| 7a7d0c09d9 | |||
| f90ce77da4 | |||
| d27ac27bc7 | |||
| 44c6a64bf4 | |||
| 2d6eae9391 | |||
| ba440550a6 | |||
| 8e24fee9da | |||
| 1148652101 | |||
| ed01eeaeb3 | |||
| 096f187d6f | |||
| fa35eb1959 | |||
| 8d89d30c74 | |||
| f1bde40939 | |||
| 4e7ccaa298 | |||
| d0284991ed | |||
| c4998990e5 | |||
| 42d3ee9b94 | |||
| be5c3e41e1 | |||
| 3282d410c4 | |||
| 75303c95f8 | |||
| 0209272831 | |||
| 0e16c4ed97 | |||
| e49720f34a | |||
| 8aee371d81 | |||
| 71c4f81b59 | |||
| 3127fafc88 | |||
| 4e6bdf28cc | |||
| 621a5a86a0 | |||
| d80c8cbd2f | |||
| 686f1aeeb2 | |||
| e27a69bab7 | |||
| 4ee2e1d049 | |||
| 2102648102 | |||
| 8611e40172 | |||
| 7d5b88fff8 | |||
| cfd9aa31a9 | |||
| 62aea4c321 | |||
| f75fcb3041 | |||
| 971c557d85 | |||
| ea05aa225e | |||
| 56cdabff6a | |||
| 15f62e680a | |||
| 0af4e16c21 | |||
| c7b90bac1a | |||
| 4b81331d53 | |||
| 47ab0cbf62 | |||
| f5b079b8e7 | |||
| 21c4691d40 | |||
| 3726706608 | |||
| 28a53aa147 | |||
| 2ad572490c | |||
| 0ed9caf969 | |||
| 63ee376f71 | |||
| 67bcb98a84 | |||
| 9cd91ae99c | |||
| d111a0e5e6 | |||
| 11d4c04cea | |||
| 01773c2a00 | |||
| 1079bf7843 | |||
| 05bcfd2c1c | |||
| 5357a6a4fd | |||
| b6787b0014 | |||
| a32116d24c | |||
| a03b698e5a | |||
| fa0c5db18c | |||
| bc063ded7a | |||
| 846505cbc8 | |||
| 964118d1d6 | |||
| c43b67ea2e | |||
| f68af08931 | |||
| cdd5a41965 | |||
| e13ee59af3 | |||
| 9eb183e01d | |||
| 1163417722 | |||
| 3edc48cda5 | |||
| 2c01425ee5 | |||
| ed9c72814f | |||
| adbbe2b097 | |||
| 7335e0809a | |||
| 75dabb75e2 | |||
| 15adcd24be | |||
| e98ba99331 | |||
| 11459d38d0 | |||
| baf4ea2e8c | |||
| 6a29168c14 | |||
| a4689c7a27 | |||
| 8fda5a187b | |||
| 7b78270f4b | |||
| afd3599a9c | |||
| 4bc8562cd0 | |||
| 11fed4c06c | |||
| 9416a983c6 | |||
| 8108c6320d | |||
| b40b931568 | |||
| 282f70ea91 | |||
| a671f63a3e | |||
| f3ad14cb7f | |||
| 21eb5b661d | |||
| 87fe073118 | |||
| 507dadebf4 | |||
| 7dac8c621c | |||
| 19f4ebf3c5 | |||
| c21b40bebc | |||
| 0766c3c62d | |||
| cc40eb709c | |||
| 3625308585 | |||
| df3a7676eb | |||
| 8f6077e973 | |||
| e6689144c4 | |||
| a67de410bf | |||
| 54ec1a89de | |||
| 4b5f744c6f | |||
| df978345d7 | |||
| facc07c60d | |||
| 2f203ac22c | |||
| cc864191b8 | |||
| 547455245e | |||
| b0d7449bb4 | |||
| aed04c7d55 | |||
| bb5973f2fd | |||
| f801fd1f0d | |||
| 44ca12ead6 | |||
| 9c48389f74 | |||
| acefb5a5f3 | |||
| 3d691a3aec | |||
| 38ebdbb563 | |||
| 1090325c31 | |||
| f8ba4b9312 | |||
| 49a1dfff60 | |||
| 5f4d342d45 | |||
| e1c1f79068 | |||
| a716fa252f | |||
| 0b12e4d8be | |||
| 6ad6c94355 | |||
| 78270c8155 | |||
| 4573ae21e6 | |||
| 0ab6220635 | |||
| 3b51976b96 | |||
| c35211b2f6 | |||
| f62515e13b | |||
| 7f2daf8926 | |||
| 0325861ef3 | |||
| 37f8285a6e | |||
| d3906cffdc | |||
| bee1c77efe | |||
| 7250a82286 | |||
| 984457f9c6 | |||
| 5db23f7e46 | |||
| f4f49b2b46 | |||
| 58b35f6e2d | |||
| b51ad16756 | |||
| d790bda7d2 | |||
| 15ce232f61 | |||
| d999a47600 | |||
| 644286111f | |||
| 917b1cbd6c | |||
| 6d1b585212 | |||
| 6ca35a6264 | |||
| 0290b1b4e0 | |||
| 1d86bf3e56 | |||
| 3fd8ab8d3a | |||
| d240ae3b03 | |||
| b875765c52 | |||
| 2bdec31219 | |||
| a9eebdb1fa | |||
| b25f3a9e91 | |||
| 06f3375a97 | |||
| 5057ae920c | |||
| 6a03f13d55 | |||
| 20cbfd95d6 | |||
| 885dbe1e65 | |||
| 7d7cce5c72 | |||
| 0c66f84555 | |||
| 044e41c079 | |||
| 8dc631e13c | |||
| d93b4feb99 | |||
| 0b873f590c | |||
| f52d637f58 | |||
| e2daf5c2fc | |||
| bef113001a | |||
| f0b403bc2e | |||
| a21fb5fc89 | |||
| bbc0424563 | |||
| f487845e9d | |||
| 77641a9fce | |||
| 56d93eb18b | |||
| da1fd96d4e | |||
| d1fdc7061f | |||
| 2822382797 | |||
| 35c9021bdf | |||
| 493b13364f | |||
| a8ff3231a8 | |||
| c2a750a690 | |||
| 6a9541833a | |||
| 9117b45899 | |||
| 812cf36d52 | |||
| 4aa7420d6a | |||
| 1802839a22 | |||
| 9a2d701e2e | |||
| 69ad3f3365 | |||
| d53eb881c2 | |||
| e28e45f38e | |||
| bf6ca22b00 | |||
| b8acbae3e8 | |||
| 4ec9f2c00f | |||
| 4fc329a1eb | |||
| 0574a60bc2 | |||
| e490c4afed | |||
| d028a30f87 | |||
| 75a2d4d00a | |||
| a122a1e8c7 | |||
| 8fe09c85b6 | |||
| bc951de2a5 | |||
| c970cd13cc | |||
| 8983c0f927 | |||
| a47467f29b | |||
| ef206eb4d9 | |||
| da5eec1c5f | |||
| a69b3535a5 | |||
| f4c23f3259 | |||
| e36e9fd629 | |||
| d2f19353ed | |||
| 2d498cb88b | |||
| a80815d57a | |||
| acab77f4f8 | |||
| bddad0c57c | |||
| 3968349480 | |||
| 3ae17761b3 | |||
| 9a28bdbf76 | |||
| e769821e0f | |||
| 9b68821f05 | |||
| b2adb22b2d | |||
| 981941edf4 | |||
| 111dea89a9 | |||
| 2720f4de9c | |||
| 21645643b0 | |||
| c6a07acd90 | |||
| 1816e6607e | |||
| 37dd05a9b5 | |||
| 529997de9b | |||
| 4f37270300 | |||
| faf9c96442 | |||
| f7e09686e5 | |||
| 8eef8204e7 | |||
| 8b8e08f0f5 | |||
| a6bfec22b5 | |||
| d05c4fa9ed | |||
| 07231d3706 | |||
| 584ba10726 | |||
| 24a61dc650 | |||
| 7e7aa6aaee | |||
| 35c5be6475 | |||
| fcf3eb6193 | |||
| 5226b200e7 | |||
| 5f57152156 | |||
| 633ef26054 | |||
| 285bd4f542 | |||
| e706fb973f | |||
| 8dc7afed4e | |||
| 0c7f996de6 | |||
| 985a8e9f97 | |||
| 5e26e4c22d | |||
| 00e27e4b5c | |||
| b3ec9c9323 | |||
| 84ffedd95d | |||
| 455dc26a5d | |||
| 0fccd0f0d2 | |||
| 7e639d6bc1 | |||
| 694ce9d04f | |||
| aebe8572f9 | |||
| c98eed612a | |||
| 5f0ee417b1 | |||
| a6b4658138 | |||
| 1a57aff0f4 | |||
| afc0bac232 | |||
| ac1c59b724 | |||
| 1f9806386e | |||
| 1b67120704 | |||
| 5579388896 | |||
| 49c972983d | |||
| 3cb34f8036 | |||
| 3c5b2286a3 | |||
| 845972daa5 | |||
| e00ef38305 | |||
| 22d0861f6d | |||
| 5265f38c35 | |||
| d13cd4d4b3 | |||
| 79d33d669c | |||
| 439f6e62bc | |||
| 3ef054bbac | |||
| 5a13c6cc3f | |||
| b7750ff742 | |||
| 2c0fa2a9f6 | |||
| 881a57bf8d | |||
| c924b2067c | |||
| fdd0c8470f | |||
| 1960c38468 | |||
| 3074a0146e | |||
| f060dfda40 | |||
| b0ead129ca | |||
| abe9c4d53c | |||
| 15a95ff425 | |||
| 37b8f97d60 | |||
| 88a4bb4d12 | |||
| 50594febc7 | |||
| 9587923e55 | |||
| 2850a074ea | |||
| bed5c8002f | |||
| cc982a578d | |||
| e12ad48822 | |||
| 6abbb06ff6 | |||
| 3d68769503 | |||
| bd316e7e98 | |||
| 3f4c4d675b | |||
| 4b7e5b7445 | |||
| 996dbdde00 | |||
| db67f2ddf1 | |||
| 7b9b2fd23a | |||
| 700747801c | |||
| cb30f4668e | |||
| 9710f39cad | |||
| e3244dd649 | |||
| abd20776a2 | |||
| 5d8b4cb261 | |||
| 9ee615020f | |||
| acef734643 | |||
| 0ff7ac6aad | |||
| 859502c504 | |||
| 9c2926ef8a | |||
| 3188bc5aba | |||
| bf9d9512a0 | |||
| ba03f99e09 | |||
| 8e89f80588 | |||
| 07e245eb02 | |||
| ea12c6fde6 | |||
| 38c7d07e50 | |||
| a0a835bbe6 | |||
| c09e897dab | |||
| c5a3937c80 | |||
| 8e6cc09d2f | |||
| dee3529f14 | |||
| bf5d83d228 | |||
| c2b7336817 | |||
| fc6017c0dd | |||
| 821cc3a177 | |||
| 8939cef020 | |||
| fb17653651 | |||
| f8a07c7a03 | |||
| eb89436df3 | |||
| c1e7ba7118 | |||
| ffddea75a4 | |||
| 380111a604 | |||
| dd4461d473 | |||
| 2706a0bec1 | |||
| 46b207e08e | |||
| d3eda80969 | |||
| 66fb5fc9c8 | |||
| 2d3fb858ad | |||
| 7bf74c0917 | |||
| 5b22dffa6f | |||
| 3ca9420801 | |||
| 3c948a82c0 | |||
| c33c6188a8 | |||
| 0d8f2e1b18 | |||
| 17ed4f908c | |||
| 946bfb9a26 | |||
| 6c2c48a611 | |||
| 1f36cf9242 | |||
| 3ddac9ac5d | |||
| 1b22b348b0 | |||
| f68721af07 | |||
| d53b7de5ec | |||
| b25f3891c8 | |||
| ca58c9ce09 | |||
| 7a2a535f87 | |||
| 17d220187a | |||
| d3a4857826 | |||
| e64fec15b0 | |||
| 3d5f566d86 | |||
| c87b63cb24 | |||
| cd95f9310b | |||
| 297128c19c | |||
| 25a385c940 | |||
| 181e814139 | |||
| 52e5483dfb | |||
| 56f6c795ed | |||
| 5d8cfa465b | |||
| b6ca4a7a46 | |||
| a45508a96b | |||
| a45d274847 | |||
| e3cc896a42 | |||
| 99a47ae87b | |||
| b1388b6f30 | |||
| 2cddf90e49 | |||
| 85148d1283 | |||
| 7b0b378abc | |||
| a1ecab2f95 | |||
| b7704f0c7f | |||
| d6962f3a09 | |||
| e44ebe0743 | |||
| f02ec41fbc | |||
| d0b4ffd154 | |||
| 265af1f790 | |||
| 241d6b482e | |||
| 45f0af2afc | |||
| 7955066d5c | |||
| ec3f9695cd | |||
| 018c144c76 | |||
| 56e88b2a56 | |||
| a2bdc5d8d9 | |||
| 1b257f7547 | |||
| 5d6b05979d | |||
| 538f8d040a | |||
| 7d52aa1272 | |||
| d316202834 | |||
| 0167dfc3c9 | |||
| 02dc3dee04 | |||
| a5d3bc9578 | |||
| cfbc6b0441 | |||
| 8c5f8e995e | |||
| b77dd6699d | |||
| 9a153708e6 | |||
| e0027a78e1 | |||
| 51e8113a69 | |||
| 78f5753a3a | |||
| 16ca8da438 | |||
| ca6515c58a | |||
| 2ec952032a | |||
| b0b67a0cdc | |||
| 0eed39cdf1 | |||
| ace59411cb | |||
| ef7619d664 | |||
| 0f8a32f38c | |||
| c6a58ff1b4 | |||
| 45f751720a | |||
| ca016e2818 | |||
| 5da01946b8 | |||
| 8b3002a685 | |||
| ede5cca2e7 | |||
| d0e158ca07 | |||
| 09dc21af31 | |||
| 2435fadfbd | |||
| edef9c11f7 | |||
| 2c9edcaf23 | |||
| 18861d58b5 | |||
| 9b3dab8055 | |||
| 7a6a5f6612 | |||
| f468fcc2b6 | |||
| 5d93c68790 | |||
| fa04706484 | |||
| d09be5a80e | |||
| a4d6e5c9cc | |||
| 4f85fd28cf | |||
| 39914cd933 | |||
| 038e8cc8b8 | |||
| db5fd5506d | |||
| f2be495e95 | |||
| 6d8465a04d | |||
| 4bb5270f25 | |||
| 0f06c71796 | |||
| 5b8d8a83dd | |||
| 8ec3d549a6 | |||
| 394e369b54 | |||
| 899ab9ddc0 | |||
| 8ae467985f | |||
| 9ccc8a7404 | |||
| 0b89a9d554 | |||
| 752fb880be | |||
| 549bcb502b | |||
| 44077cb007 | |||
| 7b5902a580 | |||
| 2861bacd2a | |||
| 776ac3bb2a | |||
| b429d9f509 | |||
| 26397e4692 | |||
| 48d23194af | |||
| bcaea1a617 | |||
| 12b43d206c | |||
| 9cc49f6ff3 | |||
| 87f036e538 | |||
| fdebec6448 | |||
| ba37836e24 | |||
| b60cfd9294 | |||
| bc0665cd9f | |||
| 0dbe5e6593 | |||
| 9b33aaa11a | |||
| 024b78da7c | |||
| 2a64297506 | |||
| 09c76939f1 | |||
| 0b3f3bdf92 | |||
| 3b29eeb6b6 | |||
| 985270bb02 | |||
| 6b91d6692f | |||
| eca09e6c81 | |||
| 874c579f86 | |||
| a0bddab169 | |||
| b679a94930 | |||
| 5bde545ce3 | |||
| e68c750389 | |||
| f16cb3c52d | |||
| f7d5b0db9c | |||
| ba0b664e3f | |||
| 149d037824 | |||
| d0349d9b0d | |||
| c71c8b0047 | |||
| 3be644265b | |||
| cd6874ca60 | |||
| 7083978f9d | |||
| 4d132489c1 | |||
| b5170ed1fd | |||
| cc915dbef2 | |||
| 9a5bf1ee95 | |||
| a14b6af5c0 | |||
| ec372ad01d | |||
| 8a412ef69e | |||
| c978364f49 | |||
| 61d2a99dd4 | |||
| fdba916d83 | |||
| a12209e61d | |||
| fc6607ce9e | |||
| 62ccbc7490 | |||
| b2b36984e1 | |||
| c10208407d | |||
| 64720c2d2e | |||
| da81e4839a | |||
| 25013afdd2 | |||
| 678829ab28 | |||
| d8dffa9d71 | |||
| be8810077a | |||
| ee4ecb9783 | |||
| eaed8572f0 | |||
| e91e6fb068 | |||
| cb17a0a49b | |||
| 248df9ca2d | |||
| fa615ed9f4 | |||
| 65aa4af6d9 | |||
| df56ad476e | |||
| 8e20fa89e8 | |||
| 76058729e0 | |||
| 88a0cc8c9c | |||
| 2ea45c0c58 | |||
| bf27f41f52 | |||
| 853f6012d5 | |||
| 14ad02777f | |||
| c1eb00f6d5 | |||
| e5adaf974d | |||
| 727a29600d | |||
| a5ebdb9243 | |||
| 2ef37ee798 | |||
| c23575786c | |||
| 5a0d693c93 | |||
| c6902528b3 | |||
| f90993be86 | |||
| e7db076648 | |||
| 6d52a7d3d4 | |||
| 3368b492b9 | |||
| 1222aa6d25 | |||
| 67efd150d4 | |||
| 9894f2e053 | |||
| 3a1a51ac46 | |||
| a1b5429f4e | |||
| b11e39554f | |||
| a92c764945 | |||
| f581396f1d | |||
| 6814926f05 | |||
| b8f882dba4 | |||
| 783e8edf71 | |||
| 966f1d654e | |||
| 02adaac468 | |||
| 2b2a0d685f | |||
| 6f2ec17640 | |||
| 6c158f5a1b | |||
| df83dfdfe8 | |||
| 165c252fc8 | |||
| d21f63d327 | |||
| 05c33bee78 | |||
| 762dd17512 | |||
| 5f7065848e | |||
| 65e020a627 | |||
| 793e477898 | |||
| a5232f857e | |||
| 0ef7a72b33 | |||
| 717787ff62 | |||
| 2d599a5190 | |||
| e73145d558 | |||
| 220e7748a9 | |||
| 72f41c5b4f | |||
| 775627473a | |||
| ba2356d2ba | |||
| 179f53b21b | |||
| 3ccd3b5650 | |||
| 224655f8cb | |||
| fd96c7c488 | |||
| 45c96f73c2 | |||
| c5893ef6e8 | |||
| 8b1f09d302 | |||
| cb1b824a75 | |||
| b0ce9e4af7 | |||
| aae3637e0c | |||
| 33faa2f252 | |||
| 482d79ef4b | |||
| 6bdd517c43 | |||
| a337109618 | |||
| 0ae5ace520 | |||
| a4306cddef | |||
| 1f97c5518e | |||
| 1823a4da36 | |||
| d60caf7095 | |||
| 9e10b94339 | |||
| 7048dd754d | |||
| de29e17d95 | |||
| c299989ff7 | |||
| 0b655ea6a1 | |||
| 538827942a | |||
| 8bd5f69e04 | |||
| c470ea9fa1 | |||
| c1806476af | |||
| af41c9f6e4 | |||
| 823e8d24b5 | |||
| 4028c0b24f | |||
| 2e4ff30103 | |||
| 121dcca7e3 | |||
| 5adfe2d46b | |||
| 03f4aaa2d6 | |||
| d67c3f36ff | |||
| e199d30beb | |||
| 27e2de2b1f | |||
| 8a6d07342e | |||
| ab39457fe1 | |||
| e6933ea413 | |||
| 422e0c44d5 | |||
| ad03b409ab | |||
| 38ae213260 | |||
| 6a0a59896e | |||
| 187cb56364 | |||
| 1fe96d0d22 | |||
| 52b859b3e6 | |||
| 9483b781e2 | |||
| 791f475168 | |||
| 6b69d6dce2 | |||
| 720abbc81e | |||
| e3183cfd16 | |||
| e07423f260 | |||
| ecfda146b2 | |||
| f923f508f5 | |||
| b465dabe77 | |||
| d8d6b91257 | |||
| 0946fac11f | |||
| c50b69c654 | |||
| 32bf99ba40 | |||
| 0baa8215ef | |||
| 85a007d87b | |||
| 7b14de13ec | |||
| 117ebe1c32 | |||
| 2b010811d8 | |||
| 4b94f1fa83 | |||
| d73f3ebd1b | |||
| 4c48cda4cd | |||
| 9e64ccdbf2 | |||
| aedf9d3a91 | |||
| 0ee94a5729 | |||
| 2130630293 | |||
| 445cf5d42c | |||
| 08f13a1776 | |||
| f406dc51fa | |||
| 7580777e43 | |||
| ea30005762 | |||
| 7794cd6274 | |||
| 45a4fe44f7 | |||
| 1d225078eb | |||
| 533caf8c0f | |||
| e6c25ae290 | |||
| 264077acac | |||
| 0ff18881b6 | |||
| 9e0e536dbc | |||
| 1a9e54ba33 | |||
| 9378af1057 | |||
| cd6075a884 | |||
| 1da3a00b92 | |||
| 275961f088 | |||
| f14fac3f7d | |||
| ce784e0491 | |||
| 65ad3bb941 | |||
| b5b4280c3b | |||
| 0649f6e607 | |||
| 22c2efded9 | |||
| 7825279405 | |||
| 2623c7023c | |||
| 2138fdfadf | |||
| 40517e3010 | |||
| 1341214044 | |||
| 34e2ef13cf | |||
| 058219528d | |||
| f4bd175616 | |||
| fea0c07e1c | |||
| f684fa9a7b | |||
| 2855b94aa8 | |||
| 9958aaae4f | |||
| 289e5ada2c | |||
| 648eed6532 | |||
| d94955d51e | |||
| 046fe93f1f | |||
| ce60af5029 | |||
| dbe70ffc8a | |||
| 8acf081be3 | |||
| c5f6065280 | |||
| 07509ba5c9 | |||
| 8b3c8f7093 | |||
| c3e0b68399 | |||
| f0dd1fdfc7 | |||
| 5fd8c0938a | |||
| b3f4aa4504 | |||
| 4718cf6cc0 | |||
| ac07c78664 | |||
| 4a3db7e2c3 | |||
| a23158f986 | |||
| 838322299a | |||
| 41f3f53540 | |||
| a26d982f52 | |||
| 5e4121ac58 | |||
| 81d8c8f9bf | |||
| 0c34addfa7 | |||
| 6a68fe6a4f | |||
| 0d246a4422 | |||
| 991c9f2f8b | |||
| ffd36b5489 | |||
| b9149658a8 | |||
| 21ff3fbccd | |||
| 90efbefbec | |||
| 8f89d75edc | |||
| 5d082f53ae | |||
| 591d79ba49 | |||
| 5ee6ede824 | |||
| 095a58b1bd | |||
| fd2f000075 | |||
| bb244646df | |||
| 238dd07cf6 | |||
| aea5e446e5 | |||
| 203beff4d2 | |||
| cb6f4ad646 | |||
| f7b72dd136 | |||
| 96aff57275 | |||
| 4b46d07380 | |||
| 204f7c918e | |||
| b1c83e6588 | |||
| c55bd11377 | |||
| 885a9df356 | |||
| 0a373018c6 | |||
| 8c4c1a56fd | |||
| de790c7c19 | |||
| 3c2bf76103 | |||
| 13bc41fc36 | |||
| 758027e2e0 | |||
| 25b352aeab | |||
| b030fe7db2 | |||
| 9b09c9f0c3 | |||
| de73809bb9 | |||
| 7144f69683 | |||
| c3396fa6fd | |||
| 924a41a2f4 | |||
| a492bf3885 | |||
| 662714fca3 | |||
| 4fc4e93ab5 | |||
| d0b5929a9e | |||
| 58dc98460b | |||
| e0dd4848b0 | |||
| cef01f5dbc | |||
| 88af9c545b | |||
| cd1f45e248 | |||
| d5eee3138f | |||
| fdfe0ce63d | |||
| ba6641ed9a | |||
| fb13e3ddb8 | |||
| ca17efd764 | |||
| dd104a49f6 | |||
| b849d008d2 | |||
| 1e09935501 | |||
| d7e558350b | |||
| 04afe8fbf1 | |||
| 392726bad3 | |||
| 19285d61ab | |||
| 015b29e8a3 | |||
| aff61dbc3e | |||
| 37f5d755f1 | |||
| 98cd3465d3 | |||
| 009f08dca3 | |||
| 2edf4906a4 | |||
| ee6c15b997 | |||
| 03df07e4b6 | |||
| 501f2f8267 | |||
| e949677c48 | |||
| b2512915ae | |||
| dc9db06cc8 | |||
| cb5931aaeb | |||
| da17e55657 | |||
| f47d944349 | |||
| 682079adc6 | |||
| f0fb97e67c | |||
| 6e5058f95f | |||
| 31b8997518 | |||
| 76a9723268 | |||
| 5fe79764de | |||
| 186859fcf0 | |||
| b545d60453 | |||
| f68a046080 | |||
| f77fa5b34c | |||
| 38bf0c276c | |||
| ef5c8c24a8 | |||
| 4e8fb92e07 | |||
| 4f1ff5b24c | |||
| 22abc27b6b | |||
| 19f6d885fe | |||
| b19a633441 | |||
| 997dcad799 | |||
| e35efd001c | |||
| 50d6b10be4 | |||
| 5ef7ea794a | |||
| e70485f1fd | |||
| f55f8a3629 | |||
| fbbd6caf97 | |||
| bde3f95ae9 | |||
| a5c406a4dd | |||
| 58a57543ce | |||
| e32bc5e186 | |||
| 7a5f45ac94 | |||
| 657f7577bf | |||
| 48355447f9 | |||
| c8f7e6331b | |||
| 40bb27c95f | |||
| 78f8124c63 | |||
| 94d5bcbf1c | |||
| ad5d8c6f9a | |||
| 4911601b24 | |||
| cb86d3d829 | |||
| 24c6314f1a | |||
| 02e2b3bd47 | |||
| ec84b3a0ca | |||
| 4455e816aa | |||
| 3df89c0dfe | |||
| f5d22c904f | |||
| 2233c44d36 | |||
| d5f6c1c15c | |||
| e36a27307b | |||
| cf527ed819 | |||
| a8e8833a8d | |||
| 349df0dc94 | |||
| 0e33f638e6 | |||
| 50ccfbf554 | |||
| e2c093856c | |||
| 992458ae4b | |||
| 8c16686150 | |||
| 7cbadfbd12 | |||
| 0e43697ee0 | |||
| 7de27df309 | |||
| b06db1ba39 | |||
| 5fe24cb689 | |||
| 733d1384a4 | |||
| 99e9d0d023 | |||
| 2bd1e46ab9 | |||
| cabaad4b17 | |||
| 8b6fe691ed | |||
| ccf9efdaa5 | |||
| bf66bec4c7 | |||
| 3319709526 | |||
| 7ceab5c88c | |||
| 94d4789e68 | |||
| b13985d550 | |||
| dc4a3e9b89 | |||
| d538c35532 | |||
| cfd26321b5 | |||
| 61d955f3de | |||
| a9f54c44e9 | |||
| 125877035f | |||
| 8f4b0c8078 | |||
| 1863e85bf5 | |||
| 488c6099fc | |||
| 67abc6d2cf | |||
| c56a57c0ba | |||
| 30b2c1ad61 | |||
| 5e279363e4 | |||
| abb7509f03 | |||
| 1cd60c05f3 | |||
| 510cc22484 | |||
| 3da664236c | |||
| 7e35a7fe0c | |||
| 58ef7db5d6 | |||
| f9de4a394c | |||
| dced5816df | |||
| 690ac740d2 | |||
| 89d0412e22 | |||
| a305752faf | |||
| 469b139e89 | |||
| 8f5d9c4816 | |||
| 7102c77e0b | |||
| 115ae21f1f | |||
| 8d3fdf45b9 | |||
| 1e7e5ea57c | |||
| 7c8b91456f | |||
| dc960f30f5 | |||
| ba12e31280 | |||
| 027a4081a2 | |||
| 190def17e5 | |||
| 9730526d33 | |||
| c87c843308 | |||
| 6453cdf0d6 | |||
| 5f80c33b24 | |||
| a33542c9b5 | |||
| 3a1d98648f | |||
| 4ec79d61d0 | |||
| b4f055f80c | |||
| 6bf35c679f | |||
| 3349d43c00 | |||
| ced961d24c | |||
| 419f708d87 | |||
| bbc1c04042 | |||
| 7a6865637d | |||
| ae96420925 | |||
| 2822812d0d | |||
| c8ab430491 | |||
| bb87f28e80 | |||
| 6db671215a | |||
| 64566ec6cf | |||
| faaf97ef62 | |||
| 67d6efed21 | |||
| 571d9bd610 | |||
| 4144698540 | |||
| 9bf6bf2c78 | |||
| cc9236b8db | |||
| 0103b59e61 | |||
| e9f6531db7 | |||
| 62c2c750ea | |||
| 3e5e3175e0 | |||
| 54c5af30d9 | |||
| ca4a3361c0 | |||
| 47d302221d | |||
| ed215657e6 | |||
| 3e63b14192 | |||
| 86433ab3a8 | |||
| 7214800d93 | |||
| 29f298fa4a | |||
| ef35bc77cb | |||
| 6ae880f61e | |||
| 0d1149310c | |||
| 51d32bb8d3 | |||
| 49a8980dea | |||
| 9fe1680c56 | |||
| b7db65a023 | |||
| 4c02002265 | |||
| d0198649f2 | |||
| 32c1fd082d | |||
| 363bf42b95 | |||
| a1ab2232f3 | |||
| cf69f43166 | |||
| 9833438733 | |||
| 67c5e3966a | |||
| aa0927911d | |||
| 13c9e1ed58 | |||
| 19a457ab7d | |||
| 0926bff0cc | |||
| 53a0bc963a | |||
| a2819d822a | |||
| 175112d97d | |||
| dced47024f | |||
| ffc361406e | |||
| 852c648235 | |||
| 1197b96c49 | |||
| f21fe81e16 | |||
| 593dfd0108 | |||
| aaf0fb9d12 | |||
| 02e9f8aef3 | |||
| 424055c04e | |||
| 02daf17326 | |||
| a666f0d52e | |||
| 27a760c58c | |||
| 0ba12f48c6 | |||
| eaaf54d886 | |||
| 4b3d634fe9 | |||
| f77a699ea4 | |||
| e989e38cc2 | |||
| 6a900ed6e7 | |||
| 29e6b85f79 | |||
| 2641408d53 | |||
| 5b79226183 | |||
| 98f9f0cd48 | |||
| cf7e107ad1 | |||
| ab66c1aa1b | |||
| 5b03366909 | |||
| 7824e1446a | |||
| 59cf1a4937 | |||
| 252113c838 | |||
| e2f84d1acd | |||
| 204dcecb28 | |||
| 70bbfbea12 | |||
| 2221a0a908 | |||
| 203b215093 | |||
| 76ee84dae8 | |||
| 79e1c87a01 | |||
| ed208114be | |||
| 7dd711b37c | |||
| 4852802d66 | |||
| c495b1faab | |||
| eb5bd8e6ac | |||
| ff7dcf9c17 | |||
| 2b12a16c84 | |||
| 4d00b2ebbb | |||
| 1ba5abbaef | |||
| b87a98bbda | |||
| f76361a345 | |||
| f25bab9555 | |||
| ed78b8429f | |||
| 94e9dd8f28 | |||
| 90215ca0dd | |||
| 34eb647fcb | |||
| 83205290de | |||
| 02fd528c32 | |||
| e05193f46d | |||
| 14e2d900b5 | |||
| ba4290340d | |||
| 5a04700bae | |||
| 999f50dce9 | |||
| 9522e6e714 | |||
| 7836ea4479 | |||
| 37e8ab8de1 | |||
| 34048497e7 | |||
| 5197422482 | |||
| d9987c2734 | |||
| c9671b4712 | |||
| bbf03e3060 | |||
| e35a78e3cf | |||
| e318be6a88 | |||
| 1dab0ebc25 | |||
| 687e58e9d4 | |||
| 993a4aa675 | |||
| c991510b0f | |||
| c8025bf004 | |||
| 9f5767a80c | |||
| ffb05d6271 | |||
| 2dd2d3dd7b | |||
| be29c7fca0 | |||
| 2c23a3c0b3 | |||
| 37e3ead8e9 | |||
| b018ea7b1b | |||
| d6cdca35d4 | |||
| a09d150b47 | |||
| 7cf46afc48 | |||
| 056c95670f | |||
| 35dffe43d9 | |||
| 19c26f0733 | |||
| 388ff10ff5 | |||
| 8c7be8e45f | |||
| 579aa67cde | |||
| 725f86a0d2 | |||
| 50a6ef18d2 | |||
| 1b3e924450 | |||
| a33e08e299 | |||
| 45dee5a666 | |||
| 642473244e | |||
| e92f344335 | |||
| 7951795ea4 | |||
| 101fbcca90 | |||
| d562132a4a | |||
| 7152ab39ff | |||
| 39c5279f5d | |||
| fef0e16f9c | |||
| fb1361b00d | |||
| 64c75c8b57 | |||
| f4e015a255 | |||
| 242b68c488 | |||
| 9452c7e0c7 | |||
| ab1d3d1ced | |||
| 41df92bb93 | |||
| 427db3f29a | |||
| b5600bdd7f | |||
| a2153b668a | |||
| 7d52c82c3b | |||
| 092f1a4959 | |||
| 21bee7e40c | |||
| a9ac0ac725 | |||
| 5dc1ed6696 | |||
| b55f66e69c | |||
| ab637e22b1 | |||
| fa665c5494 | |||
| e91b75a1bb | |||
| 4c6f85fd25 | |||
| f09e9b7790 | |||
| b51d3da7e5 | |||
| 861dbd5977 | |||
| 5001fcdd53 | |||
| eeb47dc724 | |||
| 5556dff11e | |||
| 18b57fa6aa | |||
| 12bb4d75fd | |||
| 411d8d4d98 | |||
| 748df0b21a | |||
| 8d98316a89 | |||
| c6b45a8e09 | |||
| d42920674a | |||
| c66fced161 | |||
| d3dee115ab | |||
| 77aa965533 | |||
| 29499f21c5 | |||
| 18d8968ae7 | |||
| 467cf73635 | |||
| 457519eae3 | |||
| 2a1c24763d | |||
| 92196dc207 | |||
| f73723f9af | |||
| 26ab8755b6 | |||
| d91382208d | |||
| 5f90ed8b3e | |||
| 644fad8355 | |||
| c4904cc365 | |||
| 613e38d7f8 | |||
| dee7c339b3 | |||
| b80cda66a9 | |||
| 411bcbcbde | |||
| 352bf8839b | |||
| 18f438a528 | |||
| 076944da5d | |||
| acbba95032 | |||
| 75f77783ff | |||
| 87e0f074e8 | |||
| 2211c69455 | |||
| a7449c913c | |||
| aaec0e641b | |||
| 5afed2d396 | |||
| 843348338a | |||
| 061ebc7942 | |||
| 822c1c97e3 | |||
| 65df6aa4a0 | |||
| 32719690ac | |||
| f83748fdc2 | |||
| a354d7c00b | |||
| 41f7312263 | |||
| d3804d2c2c | |||
| 96184b83a3 | |||
| 9bcc057176 | |||
| 20f3213477 | |||
| bf8505a285 | |||
| 770a07cc28 | |||
| 3f80f52ca5 | |||
| 52f6e149ec | |||
| 6893df9103 | |||
| 60546c9788 | |||
| 12f91564fb | |||
| ca448e682a | |||
| 2b077d140f | |||
| 0f58ff8356 | |||
| 940b740b24 | |||
| 0f258f94a8 | |||
| fd7b22f639 | |||
| ca3464512d | |||
| f59cb6417f | |||
| 74ccb53607 | |||
| e4c6e98099 | |||
| cfab0fa245 | |||
| 08d861e87c | |||
| 73234e7782 | |||
| de8d28ea5f | |||
| ed7b478ee0 | |||
| ff9a216990 | |||
| 58c94159b1 | |||
| 7a1bd4d53a | |||
| 5d7c23c62a | |||
| d91d911051 | |||
| cd0cab465d | |||
| a45b887c5b | |||
| f965b7129b | |||
| e894ce00c9 | |||
| 333aba8be6 | |||
| e9d93ae210 | |||
| 043c8be747 | |||
| 1be67518df | |||
| 4bf1987bb7 | |||
| ae45eed2b1 | |||
| 572a9393aa | |||
| 7579c41a35 | |||
| 4e589c2575 | |||
| 026da34ce9 | |||
| 0daf49a1da | |||
| f57e4c6c14 | |||
| 14bd1d01f2 | |||
| 918e20b164 | |||
| 6a0e90ef90 | |||
| 71fe8ed80d | |||
| 581c9c570b | |||
| b25fe3d127 | |||
| fc4aef6d89 | |||
| 6b4fa6a40d | |||
| 6756eea209 | |||
| bf3cd37b49 | |||
| cc7caa9e16 | |||
| 633060562f | |||
| cc48546f62 | |||
| 96cc44e521 | |||
| f2d9e4b2df | |||
| 049c7ad1f0 | |||
| 226dad651b | |||
| 0977cabc79 | |||
| 0b5e8a086e | |||
| e024ea5ee1 | |||
| 6f71092aa4 | |||
| edce44df97 | |||
| 54551d9f37 | |||
| 8521b5501f | |||
| 396dc21903 | |||
| 5e2b0ba46c | |||
| cce5d775de | |||
| 248a239c7b | |||
| 83655e9aef | |||
| 973d115edf | |||
| aaa9f89550 | |||
| 8afad5614a | |||
| a9fdabf926 | |||
| b5b262c722 | |||
| d1e1190cbd | |||
| 9812eaaca7 | |||
| 4520e04d37 | |||
| 5679b5862f | |||
| e72dc38d77 | |||
| 71fcfa4935 | |||
| c4463036c3 | |||
| b343a17b29 | |||
| 0b0fb249bf | |||
| 8d689974a7 | |||
| 375c81d38d | |||
| 0ef4f36d44 | |||
| c85f6c1228 | |||
| 0cabc81693 | |||
| 12b4fff81e | |||
| 27b6627110 | |||
| 387014dd37 | |||
| d5c91b9bda | |||
| 370f4f6257 | |||
| 49a665488e | |||
| 29da133726 | |||
| 1194bb8ae3 | |||
| 7599124aa0 | |||
| 01d2d91ecc | |||
| 6980d19214 | |||
| ac14a7b0da | |||
| 23f00ab533 | |||
| 39122bd61d | |||
| c5824765f9 | |||
| 547e942c66 | |||
| 2ab04e7e2f | |||
| a08fef172e | |||
| a04f77e7e0 | |||
| 4900f3e54d | |||
| 34ee6411d5 | |||
| 5abe7bc7e5 | |||
| a48aef4039 | |||
| e1198f29ce | |||
| 329e619c8c | |||
| 9a9e1b46ef | |||
| cc94ab6411 | |||
| e67541e82f | |||
| d907be264b | |||
| 003c1df53e | |||
| 6470838065 | |||
| a178555838 | |||
| f844e9e702 | |||
| 8753dbdb0f | |||
| 1bd24f7042 | |||
| 66d58bf047 | |||
| 1e5c4b0d79 | |||
| 711d402f17 | |||
| e19f54a378 | |||
| 5294fc4767 | |||
| 7ed3a1df04 | |||
| 2d45354f50 | |||
| 9f6d13f4c3 | |||
| 57a31d0ec9 | |||
| da277d9816 | |||
| 22dabc5180 | |||
| 47f11fc3a6 | |||
| 91a2e56215 | |||
| e6681af9d0 | |||
| d9e3c43c91 | |||
| f84de4ac21 | |||
| 3089231476 | |||
| 0f94fb9d6d | |||
| 01097f7225 | |||
| a25e4e1ed8 | |||
| 9e75595754 | |||
| f6d5945b59 | |||
| 250eb20851 | |||
| d2b00c4995 | |||
| 89c73d89b4 | |||
| fcd63bf9eb | |||
| 9a0cf6a609 | |||
| 6c32d97b23 | |||
| c9e40d3e59 | |||
| dc920a7e39 | |||
| 07262387e0 | |||
| 97e2ac689e | |||
| 286a80d03b | |||
| 3aaf31fdb9 | |||
| 71ae5764cc | |||
| 2e41ed153b | |||
| 9ee422e6ba | |||
| 8a008d1808 | |||
| d78faea737 | |||
| 3cf72e93e6 | |||
| caa02bbca1 | |||
| 33e64aee6f | |||
| d17150270e | |||
| 463a297f0c | |||
| 407d73a735 | |||
| b5bfdb56dc | |||
| 58b7ef8431 | |||
| 2211dfb741 | |||
| 1d6e602473 | |||
| a6c52fd154 | |||
| 7a5bceae4c | |||
| 6f3e7f9e56 | |||
| fb9822b507 | |||
| d0db09cb92 | |||
| 189fbb3f7e | |||
| 887c95fe2a | |||
| fdbeb951eb | |||
| 9d23dee3fc | |||
| 70b8cef318 | |||
| e1620b8fa2 | |||
| dabc9589e9 | |||
| da98900e3a | |||
| b584ba9149 | |||
| d24ba6d13d | |||
| aba078a9d8 | |||
| 161487d6c2 | |||
| d851dd7196 | |||
| cf29621aa7 | |||
| 9e46577f43 | |||
| b7980b83df | |||
| 0a0bed7ae0 | |||
| e42b8fc37d | |||
| b01e30acfd | |||
| 311c50df9f | |||
| c2f9467f61 | |||
| 06c8656b9e | |||
| 4748bca8a4 | |||
| 916387748c | |||
| 216d7dcb86 | |||
| 23f2c7e6f5 | |||
| c8e0e5eca2 | |||
| 3167d3f451 | |||
| beb9c1ba74 | |||
| dcd88260e9 | |||
| 5f4f631fc5 | |||
| dc6fda03a1 | |||
| 764ad81537 | |||
| e26c41095f | |||
| d7bd78d612 | |||
| c50b4c72d7 | |||
| 124e555ed0 | |||
| aeba3aa209 | |||
| e50b5202b8 | |||
| 32c7578629 | |||
| 5bc5e0e8e9 | |||
| 7ee4692e84 | |||
| 679688705d | |||
| 83f0a2c094 | |||
| 504817058b | |||
| 45754b27de | |||
| a75ae8bbef | |||
| c3e6dc69bb | |||
| 0285bb6ea5 | |||
| a542292ce2 | |||
| 0765ebf735 | |||
| e86e8c37a8 | |||
| 149a42cc94 | |||
| 8de4613a3e | |||
| 60950c57e3 | |||
| 4727bb5c9b | |||
| 1e1e254897 | |||
| df5455121c | |||
| 0e2570b204 | |||
| f57519b909 | |||
| 088393ca12 | |||
| 375dc63db3 | |||
| 503324162f | |||
| 5445b64376 | |||
| 7fe997d38c | |||
| d7673dad7b | |||
| 44eed9282b | |||
| 0eeb94b24c | |||
| ef221e1c6c | |||
| 75cdefa4fe | |||
| a609a1c6c2 | |||
| f4906a97b9 | |||
| 21ffd441fa | |||
| a82383d78e | |||
| b405029f0f | |||
| db7d4f56b3 | |||
| 3151197471 | |||
| e06fe6935a | |||
| e7cec83a4c | |||
| e5f0ad4f0b | |||
| cabbe70e47 | |||
| b86c3681bb | |||
| 0f8239bc8e | |||
| 13f5baf608 | |||
| 4f5d7f79bd | |||
| 23899613c3 | |||
| db46a915cc | |||
| b591aa013d | |||
| c0db8b71dd | |||
| 444bf41fa4 | |||
| 54302a53e1 | |||
| 63059cfab3 | |||
| ec7d3a9885 | |||
| 960b55fd6c | |||
| 3067ba60ae | |||
| c9a756eddc | |||
| d4ea5fc74f | |||
| 92e52f1a5d | |||
| ef1d75db83 | |||
| f03d1a5d27 | |||
| 8a55b706ca | |||
| 357133677a | |||
| 1b6c660a8f | |||
| 111e68831e | |||
| d9f6732ce2 | |||
| f2b81ba86c | |||
| 2542112301 | |||
| a45215ddf2 | |||
| cb28b2de07 | |||
| bf0b43aa24 | |||
| 811d6deb41 | |||
| bcdd9374c7 | |||
| f70174d1d1 | |||
| 4a39a4af1c | |||
| 0367399c89 | |||
| c5db4dc15f | |||
| 31fbfa3a70 | |||
| 3515ddcfe6 | |||
| 90303d5952 | |||
| 9a02421091 | |||
| 4961b819f3 | |||
| 61c2ea9225 | |||
| f5f7269f70 | |||
| 03f1430ddc | |||
| c3dab15eb6 | |||
| a4f6ec516b | |||
| 1ca213cec6 | |||
| b782c8560c | |||
| d2e68068bf | |||
| 129a846393 | |||
| 15308931e9 | |||
| 4dffeedd1c | |||
| d0c4111429 | |||
| f579b6f971 | |||
| f5124de327 | |||
| 9ab86ae2bf | |||
| 51a7d3ff50 | |||
| 80b9afc14d | |||
| 92ae8f37ba | |||
| df1f828488 | |||
| d8c97da087 | |||
| 9d29e5d87a | |||
| bf62147802 | |||
| 34735b8aad | |||
| 932b2b9acf | |||
| 7ab4472865 | |||
| e1e79206f9 | |||
| 7ebe6de022 | |||
| b234760e92 | |||
| 3119e4b82b | |||
| 2c3f05e6f1 | |||
| 5b5da8698e | |||
| c3c0c8d881 | |||
| 9de5e31a7a | |||
| dbf15c2db2 | |||
| c9c900b364 | |||
| 5c07204351 | |||
| 828b370ea1 | |||
| de947d8b17 | |||
| 8cb5e68b1a | |||
| 99aef2a178 | |||
| fff1460dfb | |||
| e3b619fd54 | |||
| 29e363e7fb | |||
| c209245b0e | |||
| 4194ce3095 | |||
| a0e9f59e04 | |||
| c940c2722e | |||
| 5c84c12f40 | |||
| 1bcacfab74 | |||
| 1f5f8a76fb | |||
| cfa8b1f0dd | |||
| aecbcdd390 | |||
| 74729a372b | |||
| 63d8abe32f | |||
| 2c397bfa0b | |||
| bfef8f39b7 | |||
| 4430cbc3cb | |||
| ae20bac3c5 | |||
| d9a26c4062 | |||
| 48cb374d94 | |||
| 9d6bd91279 | |||
| 163cfda282 | |||
| 72cda375c8 | |||
| ecb4a08655 | |||
| 05c50bc64f | |||
| 747e4a7061 | |||
| 2b8b876713 | |||
| f13694b539 | |||
| 648f9c9723 | |||
| 0a6c37b726 | |||
| b43a51f912 | |||
| fa328c5a78 | |||
| 728bcc2b10 | |||
| 941903a243 | |||
| 4c8579b340 | |||
| 17416a09f1 | |||
| fdda21b114 | |||
| c75ae957f1 | |||
| 8c678126f1 | |||
| 2b0590f9bd | |||
| a31992aac7 | |||
| 829d2505e3 | |||
| df30498365 | |||
| 5d553bf9f2 | |||
| 03e3673dbb | |||
| 25b8b37f00 | |||
| 665f97e782 | |||
| 48a007febd | |||
| 155e0fada6 | |||
| fe2f1d32b5 | |||
| 2fcbb19e72 | |||
| 06a50d637a | |||
| 811b33e31a | |||
| 54c83ee940 | |||
| 7406e83dde | |||
| dc2c7d5339 | |||
| aaa25e5d48 | |||
| b757bd0ea2 | |||
| dd971d6b7d | |||
| c07966408b | |||
| 2557956b68 | |||
| 735260d21b | |||
| e5b0e43e18 | |||
| aa42b2494c | |||
| f057054172 | |||
| c39314c643 | |||
| ae018b759c | |||
| 556b498e06 | |||
| 19f1110421 | |||
| cc73ed19b3 | |||
| ccb7cc40df | |||
| 6d61e950d6 | |||
| 438c6e616c | |||
| 8d2396b81f | |||
| 9588ef00a5 | |||
| 411603ea03 | |||
| 67addfdb37 | |||
| 3afcd31f61 | |||
| 7ac901cb08 | |||
| fcdee8f5d5 | |||
| a7c32dfa95 | |||
| 36f3c0f77a | |||
| dad4981a57 | |||
| df53357ef1 | |||
| 85e333127a | |||
| d52d86ae82 | |||
| f62293275f | |||
| af490bae8e | |||
| edf5a0f677 | |||
| 5eecd0a57d | |||
| 1fc11a6b06 | |||
| 3516538813 | |||
| e3af8cb2e8 | |||
| 16cd822555 | |||
| 5938368a09 | |||
| 50f865b81c | |||
| 96cd09471b | |||
| cf6c1e97bb | |||
| f557e1efb4 | |||
| 8893fd1656 | |||
| 081831e6ea | |||
| 46c3ce0e34 | |||
| 6031a45c68 | |||
| ca64887cba | |||
| 3f1d67ca4c | |||
| ff09af2812 | |||
| 42b68fa834 | |||
| 2cc2c967d1 | |||
| bec4e4437d | |||
| f9abfbf68a | |||
| 53af4ee39f | |||
| af5f2f85da | |||
| ea83231da5 | |||
| c4693602ef | |||
| 3c8dd85966 | |||
| 0399022d25 | |||
| c6840496c0 | |||
| f7657280b6 | |||
| f88a4baf79 | |||
| b051f715e6 | |||
| 81a05c89e4 | |||
| cc55b016e9 | |||
| ae8e51074e | |||
| 313b93169d | |||
| db148741e9 | |||
| 1ecad20a0d | |||
| 22c5c539c2 | |||
| d59e526e1e | |||
| 94fa0047db | |||
| 26e2f9ddd1 | |||
| 23254b4f24 | |||
| 9a44f16846 | |||
| cad0069be2 | |||
| f315a013b8 | |||
| f780aa6160 | |||
| 0f03beb2b5 | |||
| 7e39c43896 | |||
| 906d28fa5d | |||
| 4d017f5d49 | |||
| 6410314b0b | |||
| 1c0202e790 | |||
| 918c978551 | |||
| 3d1a85bbea | |||
| 1a442c36e9 | |||
| a4e322f085 | |||
| 0b1d268b09 | |||
| c2be6bc019 | |||
| 9e11e832da | |||
| 348e656671 | |||
| 54cdf6d6f2 | |||
| 7c5ca8f199 | |||
| ee42d94e2d | |||
| 91baa9dfd7 | |||
| 572b176401 | |||
| 97f1dc0749 | |||
| d67ac1a708 | |||
| 2707001a3a | |||
| bb1064ac42 | |||
| 436cc692da | |||
| 76decf2e8b | |||
| ccdd0f599a | |||
| c65fed1d38 | |||
| c36ec7c95b | |||
| 305ce04284 | |||
| 034ce137a9 | |||
| 73c81a0a6c | |||
| 7544727f7a | |||
| 961a379f79 | |||
| 9ffcaa5550 | |||
| 2dbae6ce51 | |||
| f7505e8877 | |||
| c453f8e7a9 | |||
| 3a4695713d | |||
| 7d9d0878de | |||
| 26729ca482 | |||
| 405600783e | |||
| 5b5e9296b3 | |||
| dd5d520b53 | |||
| b3d517943a | |||
| 59ca59d431 | |||
| 78c92be14b | |||
| adf0c726ef | |||
| 9ecfed4e56 | |||
| 9db884f371 | |||
| e0c211085c | |||
| 555bfaf37a | |||
| bcf4af4a2f | |||
| 6a71163912 | |||
| cb2fcf4f52 | |||
| 061d78c681 | |||
| 0ffa973ec6 | |||
| 03de87c213 | |||
| 59481dd762 | |||
| 86f4aebead | |||
| a92950d234 | |||
| ccdc6f1a63 | |||
| 62cc8f456c | |||
| f7c6b9a0f7 | |||
| 01a6e3c619 | |||
| 6948d56e5d | |||
| 6373b3e49c | |||
| 91dc1b6639 | |||
| 6317b08090 | |||
| aae0547cca | |||
| 4f9c422e2f | |||
| 3595ac08f7 | |||
| 5339f440bd | |||
| 86d7442a5f | |||
| e6e5626a2c | |||
| 4a52dd1c5b | |||
| dd1302e8b1 | |||
| 7b4b7232fc | |||
| b069725df0 | |||
| aa9d8c773f | |||
| c68a03d05c | |||
| cbea651cf8 | |||
| b4ee345966 | |||
| 296e7ccb08 | |||
| 43bb53e789 | |||
| 384be58230 | |||
| 46d1a87b89 | |||
| 7c8bf18cc6 | |||
| 35255d052d | |||
| cf5c776990 | |||
| 9961172d70 | |||
| c1c46544a6 | |||
| fc24dbf9b7 | |||
| 7f311551dd | |||
| 1a6c01769e | |||
| 9da4e18099 | |||
| b19e2fbafe | |||
| 7f69857376 | |||
| a64420d700 | |||
| 2ccd3da5b3 | |||
| 845c73af73 | |||
| f7d79209dc | |||
| 0017aef89a | |||
| 7449f81ed4 | |||
| 724e96f0c1 | |||
| 8158e7f1c5 | |||
| 7d7baa70a9 | |||
| 2e3947cc6d | |||
| 54774726b2 | |||
| 2af9fcad68 | |||
| fd79e81fe5 | |||
| 2b5e110719 | |||
| 864c2d9f49 | |||
| 764fe533e8 | |||
| f1f59d770e | |||
| 950baaa9fc | |||
| 5b3aacb4b2 | |||
| d6adc56b3a | |||
| dbe1a4255c | |||
| eed20b2271 | |||
| e70adbb1cb | |||
| 06c22a478f | |||
| 565b0e97d1 | |||
| 00168cb12f | |||
| ffdaa71086 | |||
| 5de2aa1cbf | |||
| 64988ed831 | |||
| fa050ad616 | |||
| d2458f3169 | |||
| 551af0e45a | |||
| 4ac5440a4a | |||
| 7c54d4e62f | |||
| 8ab5915983 | |||
| 877865a4b1 | |||
| 7cf4d37595 | |||
| 80add9f820 | |||
| 12a35c1214 | |||
| 9379d2462e | |||
| c5e8bed1fb | |||
| 4aa7ade32c | |||
| c4ed218a7a | |||
| ff417fac01 | |||
| 0f4207f85e | |||
| f4431ed837 | |||
| 0235cf5d8e | |||
| 8fc8a4e303 | |||
| 943c15927a | |||
| 28f0782b17 | |||
| 09e331a76b | |||
| ce43b09991 | |||
| f9ab8426ce | |||
| b869184c10 | |||
| 68e39b8053 | |||
| 6574436c33 | |||
| 8e023418e4 | |||
| bf94866ec0 | |||
| cba3c46820 | |||
| d4db5cca1c | |||
| e4fc633f68 | |||
| 9857fb7696 | |||
| 199b1cbcf8 | |||
| 1d38ba78e8 | |||
| c9ce018b9f | |||
| 9b4e31c5ea | |||
| 1e7a5e881e | |||
| 102e87bcc0 | |||
| 604043e3d8 | |||
| 10513784c7 | |||
| 5e3c8cdd8e | |||
| 5a5b4eb1f7 | |||
| e839cb4b8c | |||
| 5c3dad0c61 | |||
| f4a1d2df96 | |||
| cb6104e0ac | |||
| 00ed039621 | |||
| b247c20dbf | |||
| 81d26d7702 | |||
| 0f106c627b | |||
| ac06a2ef03 | |||
| 2ea5714d95 | |||
| a51c7416d5 | |||
| 2231765c9e | |||
| 18c948a211 | |||
| ec56478a3c | |||
| 7e9614b9ec | |||
| 7f7055a9e7 | |||
| ae106a3a90 | |||
| 29344f55ae | |||
| da6b750378 | |||
| 96c872ac37 | |||
| 51f67f3fa0 | |||
| d3dce3cc25 | |||
| 411d4331d4 | |||
| 18aff1ae40 | |||
| 3ff7febde0 | |||
| f7fdb8b54e | |||
| cc7f761c3e | |||
| b10b716733 | |||
| a255f222ef | |||
| b0f035bf3c | |||
| e41d52570e | |||
| 824724630f | |||
| 85c5da8512 | |||
| d79ebabe03 | |||
| f9cab44bc1 | |||
| 636f69b29f | |||
| 86a5bbac51 | |||
| b182cd1fa4 | |||
| 6f5fc14f59 | |||
| f1d47328e9 | |||
| 9a865384a1 | |||
| 7379c8c387 | |||
| 07f644f7d3 | |||
| 07302c3df8 | |||
| 33bd546588 | |||
| a790ffc2d1 | |||
| 6003ae7406 | |||
| 3c6121d192 | |||
| 12500e4721 | |||
| 166133a496 | |||
| 06914b13e0 | |||
| 36856fd646 | |||
| 870ed96c24 | |||
| aed5848f5a | |||
| 210f586d49 | |||
| 94657a3258 | |||
| 7e9eaaddc4 | |||
| bd3f069f47 | |||
| a2c9b5b6d1 | |||
| c4be1d1423 | |||
| f9d336ff88 | |||
| 2c08adab24 | |||
| 5faf8d6951 | |||
| b51f98fe0c | |||
| 0e3d2cf68d | |||
| 868d6ec776 | |||
| e45b7b4b14 | |||
| 3353e482ef | |||
| 11d4d3ec30 | |||
| 7fda7f1f9b | |||
| 7752f1ade0 | |||
| aeff6c8caa | |||
| 954710d6cc | |||
| 1c50c55a42 | |||
| 504368b293 | |||
| 03f8845998 | |||
| 7d0bd77643 | |||
| 07b6073dcf | |||
| 1ec49c3914 | |||
| f575da2ca8 | |||
| 591a06b25e | |||
| cbe48decd1 | |||
| 6f8148950e | |||
| ac68ff192e | |||
| 629cccc6e1 | |||
| 763cc86043 | |||
| a82c9d55b3 | |||
| 9fc3ed939a | |||
| 90b07cc6b0 | |||
| ac15c787cc | |||
| b5ed992e94 | |||
| 7493d8aa49 | |||
| 2c61d0a79e | |||
| 55e58375eb | |||
| 24321d860c | |||
| e8c7f7b5da | |||
| 263dcbd188 | |||
| 10cf41d138 | |||
| f4fd9dbd38 | |||
| 10b650caf4 | |||
| 75561b8278 | |||
| d89be86e4f | |||
| 6c218960e0 | |||
| 92d4b40379 | |||
| 4c0203c108 | |||
| 8b2629c273 | |||
| c19c97804a | |||
| 313466941b | |||
| 48c6145bdf | |||
| 9dd45cceab | |||
| b6303626b5 | |||
| d1d800025d | |||
| 57dc1e03b1 | |||
| ad5b96d6f2 | |||
| b5f2a98e89 | |||
| 3a706cade7 | |||
| d9af615db9 | |||
| f40550b18c | |||
| 3ec4a049c5 | |||
| dc86007fa9 | |||
| 64d14da0fa | |||
| c83ab666d7 | |||
| 599b96ed95 | |||
| 38ba10ddad | |||
| 8794db633b | |||
| c0287c0f2f | |||
| 6fe931fe4c | |||
| 680d3e7d92 | |||
| c5b1cea58e | |||
| 11d45f5a10 | |||
| 5c737709e2 | |||
| 7282e543ca | |||
| ea90627e02 | |||
| b95596d6b7 | |||
| 7400e60599 | |||
| 6eab47d768 | |||
| 3f039f59de | |||
| 2a89aeecd8 | |||
| 386d4c7e72 | |||
| df9a8a32eb | |||
| fa9eeb95b6 | |||
| 13069632be | |||
| a502da7c0f | |||
| 0b2df9892d | |||
| c6dc476704 | |||
| c5ebef3499 | |||
| 8e756a2476 | |||
| 5e1dc11000 | |||
| bcddc10b6b | |||
| 8e31b8860c | |||
| 794c3490fe | |||
| 216157e00d | |||
| 8e6b7766a1 | |||
| c1a08af00d | |||
| 59025ca2da | |||
| 17fab42f25 | |||
| 4b00557fda | |||
| 30465f08ac | |||
| 6fb2a41a0a | |||
| b70b74080e | |||
| 230fec9cdb | |||
| 17ca6b1e07 | |||
| 628f40f822 | |||
| 0994a7a20d | |||
| 66ff69355d | |||
| 04f71e65ee | |||
| 2b0e46caf2 | |||
| 549ce9a4d4 | |||
| 50d3c2c9d1 | |||
| 82caa357cd | |||
| 217fc4a0ae | |||
| ed8bc7ae58 | |||
| 87ff3f9b9b | |||
| 1bef65bf2c | |||
| b39507efc8 | |||
| 263409ed91 | |||
| 7610af3378 | |||
| 97f04eae91 | |||
| a14db578e2 | |||
| 62f31f3e2d | |||
| db9292ee86 | |||
| 1ad274ed2e | |||
| 57d6af5486 | |||
| 8b482e433a | |||
| d4352b84ac | |||
| b23a89d5a8 | |||
| 681d05f8f4 | |||
| 81b9e3b4cb | |||
| 2798c5a48d | |||
| 77c9f96f44 | |||
| 098454c875 | |||
| 6f00e8c936 | |||
| 3c32cafc9c | |||
| 585558a9ae | |||
| 6635d239b0 | |||
| f14c76dbca | |||
| 0fb747834b | |||
| 11175748bb | |||
| 49b7fffd66 | |||
| e69777d20a | |||
| dde4a496f6 | |||
| 48cb43cc79 | |||
| 4229b22f86 | |||
| 958e28050e | |||
| eae9e4bab7 | |||
| c6dfc7723b | |||
| 334f02d7f8 | |||
| 4c02542dc5 | |||
| 84ffec81ec | |||
| 3673b1a324 | |||
| 8cd28276ea | |||
| 2185bb3327 | |||
| 2d64dca565 | |||
| fad13506a7 | |||
| ffed740fdf | |||
| c0eb1d6967 | |||
| e2b208280e | |||
| f9279a3646 | |||
| e0ff8894a2 | |||
| c97d00c399 | |||
| c16c2adeda | |||
| c4326ffd0b | |||
| 85369d6310 | |||
| bd6f2db1d1 | |||
| 02c11caf7f | |||
| 0d087fcbce | |||
| 9a3735aa21 | |||
| 63229c9b3a | |||
| 17bc61767b | |||
| 5ec198b761 | |||
| 8e15a32229 | |||
| 3c903ddffd | |||
| 28f8edf459 | |||
| dc029ebefd | |||
| bb09cac7f4 | |||
| 937a3f88a4 | |||
| 352ee956cd | |||
| a735d467bf | |||
| 71d148caa8 | |||
| 01dc1af5f4 | |||
| dccb9f2424 | |||
| df819d20b5 | |||
| 518ea7ed01 | |||
| 8abbe8db4a | |||
| e36a517e86 | |||
| 7e5d5a6d90 | |||
| 51c0b129c9 | |||
| 96ba31cc2b | |||
| 74cc50f52b | |||
| 75cd287ab0 | |||
| 09088e71b5 | |||
| 6228c2c89b | |||
| 44b625520b | |||
| 1c415933da | |||
| ac588911ba | |||
| c14ceff9b3 | |||
| e3062cf3a2 | |||
| b448177278 | |||
| bcc7c41140 | |||
| 71d184c39b | |||
| 5423cff7a8 | |||
| aeb701f52e | |||
| b16db9fe68 | |||
| 2faf9ad1b6 | |||
| a8a0d1b216 | |||
| aef6d1795e | |||
| ae8dfcb55e | |||
| 9e6ac95e4f | |||
| 7965e29d49 | |||
| 6d823c62f4 | |||
| cc72409980 | |||
| beadb241a8 | |||
| 86dbcc8df2 | |||
| 4a89cfee3d | |||
| 837e91f56d | |||
| 8050fec64f | |||
| 3e0b4ee1e5 | |||
| eac900c6b8 | |||
| 117e8380e2 | |||
| 69f1bfb337 | |||
| b78e9ce02c | |||
| 3fd2725122 | |||
| 6f7cb3d9f2 | |||
| db0bb3d749 | |||
| e055211960 | |||
| 1b581b1c17 | |||
| d335e7d5e7 | |||
| f5857da6f4 | |||
| aad484b7f7 | |||
| b3ae4f5c7b | |||
| 428783e183 | |||
| d26d3bb574 | |||
| 7bd4e213c2 | |||
| bdcbb8670c | |||
| 3edf4799d3 | |||
| 62c12e7473 | |||
| e0f51dd5e9 | |||
| 7222231abf | |||
| 91080f0690 | |||
| 4c2c1f519c | |||
| 0eb5d8db4e | |||
| e43d27e86d | |||
| 87df312a9d | |||
| 1412c5db42 | |||
| 4c58674393 | |||
| 1fdfac4aaf | |||
| e1fe363268 | |||
| a127c705f2 | |||
| 827b9e4be2 | |||
| 417fcde9db | |||
| 818c66e774 | |||
| f69076f55c | |||
| ebafd25e77 | |||
| b055334e73 | |||
| f112f944aa | |||
| 62951f3ab9 | |||
| 3e25f85eb6 | |||
| e544233abb | |||
| d6fd898101 | |||
| ad610ac904 | |||
| 70c4b293ce | |||
| 41e7dbf205 | |||
| 2901e6891c | |||
| a911089913 | |||
| ac1925d4b9 | |||
| 5d2c2a3107 | |||
| bab2c80857 | |||
| d3d90e10a5 | |||
| 4336931f46 | |||
| 58dfd29a3a | |||
| 66c23b5843 | |||
| ea1fb0a078 | |||
| 0381e0dd9d | |||
| 595579a6c2 | |||
| 2143df2e4f | |||
| c86060f5bb | |||
| 4f2e9e8442 | |||
| 411803919d | |||
| ebc3d09f0f | |||
| c2ab16f984 | |||
| 3f3da4ee0b | |||
| 922c218394 | |||
| d5cb1fa15f | |||
| 2cf175cf91 | |||
| 0276cf579a | |||
| 5dd1211f46 | |||
| 1b98bd2c68 | |||
| 7261ce3b7f | |||
| 80a9317d8b | |||
| 7467e11147 | |||
| 6f78bd7a85 | |||
| 03276ad386 | |||
| 9c1caba2fa | |||
| 5ef3b12673 | |||
| cf1e2fa930 | |||
| 14e110178a | |||
| 4e2650d6e7 | |||
| f60f676563 | |||
| 7fddfd7a54 | |||
| fd88aba8a1 | |||
| f95c040bed | |||
| 459ebc7508 | |||
| 9b17543021 | |||
| 1326c5a01f | |||
| f01670db80 | |||
| bddac87321 | |||
| 176fa301d3 | |||
| f2ce4f0ff1 | |||
| a1affa6330 | |||
| 2c14d34f59 | |||
| 4a299fd4ff | |||
| cfec837278 | |||
| 1bf5ca2bec | |||
| 61efd41194 | |||
| 5ebc4b392f | |||
| 4236f92de2 | |||
| 7f0d40f459 | |||
| 6918c7fe1f | |||
| fa62f70cdf | |||
| 8ddb3fc6ad | |||
| df68c3ad48 | |||
| b7bcc401e7 | |||
| 82ead0a405 | |||
| 5ff2fc9250 | |||
| bbad30c6e0 | |||
| a962deaffd | |||
| b353df83ee | |||
| 134c02a762 | |||
| 63c6c06436 | |||
| 1b52f67e5d | |||
| e29b19805c | |||
| 7194fe02d1 | |||
| 863b9829ca | |||
| 666371099e | |||
| 0388860ea1 | |||
| eb90be2ec3 | |||
| 0d0a27d1c2 | |||
| 56c81dd890 | |||
| 00502e0476 | |||
| 2eb251bd7f | |||
| cbddbb598f | |||
| bb5b6fef26 | |||
| 4eb379a912 | |||
| 6769f83d5b | |||
| 358f12d910 | |||
| fe35fefc75 | |||
| 5ed9c41d5e | |||
| 9776158cac | |||
| 486eed4875 | |||
| f6225c0baa | |||
| db2047264c | |||
| 68f0cb7684 | |||
| 57b3f42b03 | |||
| a0a0caad38 | |||
| 30e76b4a32 | |||
| b474d7ec77 | |||
| ad3ec9d856 | |||
| 9f63e5da96 | |||
| 2e878d8f2e | |||
| bfaab86330 | |||
| 78b4d715d5 | |||
| 6dfea376ee | |||
| f0188c428f | |||
| 2987b1d425 | |||
| 86128892d7 | |||
| a8bdc59d5a | |||
| ac6ba24861 | |||
| 5b247a3699 | |||
| 580a760aa1 | |||
| f5da6a0e5f | |||
| a394973762 | |||
| 4f73b4725a | |||
| 71b90ab216 | |||
| c4f213f64e | |||
| cacf8f17d3 | |||
| 819c1729f1 | |||
| 765b1cb3a5 | |||
| 908d92fa5c | |||
| 98ef2e18d4 | |||
| f9e1657dcc | |||
| 0a4aa11d09 | |||
| 200028f328 | |||
| 276071b179 | |||
| 26662b7190 | |||
| 8fdfff3014 | |||
| 7e0fb433e4 | |||
| 0b83310100 | |||
| 8c2bd8bd88 | |||
| 44af60563d | |||
| bb98bc92ef | |||
| 3c08b89923 | |||
| 7baef59b79 | |||
| 6fe580bd75 | |||
| 91d875c157 | |||
| 7fa409a72f | |||
| d8927ec5f8 | |||
| 15751ae1a1 | |||
| bda8431d50 | |||
| 492cb727df | |||
| d4536ba242 | |||
| 876a551cd8 | |||
| 41eb07e35b | |||
| 231c593bb3 | |||
| 3b01d785a5 | |||
| 0c0049f8cc | |||
| d7c44e2bbd | |||
| 0504923689 | |||
| 7e47553c88 | |||
| f8761ecea0 | |||
| ff0eae40ea | |||
| 9d6402aad4 | |||
| 1173ac17ee | |||
| fed4a83a8f | |||
| 8343703115 | |||
| 85eb59eb40 | |||
| e11bd5d99f | |||
| f359927b09 | |||
| 70825abb1d | |||
| c4dc85f607 | |||
| 7e8de26657 | |||
| b3570f57ee | |||
| 3c62aa02d4 | |||
| 58e88d43a9 | |||
| 78ade5b7d7 | |||
| 969d5c8558 | |||
| 539199a7e9 | |||
| 60ffe55565 | |||
| dd03c6b168 | |||
| f53c0d7dfa | |||
| 7872354b49 | |||
| 1ee470f5b4 | |||
| 04e6ca9763 | |||
| 80219a31e2 | |||
| 0555dc4bc3 | |||
| 4401b58f45 | |||
| 8d2d3bd73c | |||
| c7dfed8f29 | |||
| 92f9a29de1 | |||
| ff50cfb4da | |||
| 086e10671f | |||
| 68c1c0a6a6 | |||
| 811d77eccb | |||
| f87450efd6 | |||
| e1a8cad552 | |||
| c0141a9744 | |||
| 221de3343a | |||
| 4c0a54f95f | |||
| 1ce21556a1 | |||
| e104017d4c | |||
| 8377e411cb | |||
| b16f3f91d9 | |||
| c669d46efb | |||
| 03deda313a | |||
| 7983063d05 | |||
| e412366bb2 | |||
| 7035d17290 | |||
| b9e0cb6be1 | |||
| 0a78a50eff | |||
| 323bf67037 | |||
| 9ffcec2fcb | |||
| 964c0425bf | |||
| 19208289dc | |||
| a5c5f4c02c | |||
| 53aede83dc | |||
| e4080aba05 | |||
| 2549f7254a | |||
| 87f4341866 | |||
| 3f6cc725d6 | |||
| a558f447cf | |||
| bd2c99d9ec | |||
| 1a224e2adc | |||
| c64aaab193 | |||
| 556e487a15 | |||
| 30d72543b9 | |||
| af0def36c2 | |||
| 6d8f99832f | |||
| 6a9b05e126 | |||
| c45e2cbb82 | |||
| 4d0c02de2d | |||
| e43019a1df | |||
| 4d19793d69 | |||
| 15358a2e72 | |||
| 73f0e6e825 | |||
| 17738c3861 | |||
| 3712868831 | |||
| a0a71d6e05 | |||
| 1116608389 | |||
| a9b9775fe4 | |||
| 75353852fd | |||
| 64ab2da43b | |||
| 6d74ae1b84 | |||
| 26f3c51cf0 | |||
| b192fb9403 | |||
| 24e72bc6cc | |||
| 9dfbd5f671 | |||
| a65339d011 | |||
| 88890a1914 | |||
| 3ea1461839 | |||
| 164e1be018 | |||
| fffb9c8a2c | |||
| f877788cf1 | |||
| 5940e40d22 | |||
| 9c894fb8b0 | |||
| 29b30bb69c | |||
| 9b340a507b | |||
| 0465753bdf | |||
| 08ebe94005 | |||
| 7afd6d32b7 | |||
| f41495dc7a | |||
| b253721df4 | |||
| 8200f889fb | |||
| ec9a7f8165 | |||
| e83891b4fc | |||
| 91c9cb2114 | |||
| 303d571d23 | |||
| f7cc34c807 | |||
| 8b2c0030d0 | |||
| c273351d4a | |||
| 0cd06be13a | |||
| ee64b2f5fd | |||
| f8499e1113 | |||
| 305f4dc5d0 | |||
| 3e73710245 | |||
| 77d5c44664 | |||
| 22e1e6c92f | |||
| e70bcfb343 | |||
| 93bccf36ba | |||
| 1720a2b123 | |||
| b0ecb869f2 | |||
| 58359fe4ac | |||
| 9fdb6eb2c5 | |||
| 9b80d44873 | |||
| 9673980fae | |||
| ec579fb6be | |||
| 3cc3d4fd3b | |||
| 63f4aaf7dd | |||
| 9776373784 | |||
| f8c0c468a9 | |||
| 3e3c5f72e9 | |||
| f332f39ea6 | |||
| 39be1ec116 | |||
| c3bab284ba | |||
| 28581de0ee | |||
| 2bd749b0f7 | |||
| 9586bc26c7 | |||
| e8ef6c8b8a | |||
| 300f7370c8 | |||
| 8d83ce47e9 | |||
| ade2ecdb8e | |||
| 8839a5eb3f | |||
| d61ece7891 | |||
| f736bb9c9a | |||
| f8fb79a838 | |||
| 5ad4992816 | |||
| 02e15bd3d2 | |||
| 25d15fe2af | |||
| fdb4198c0d | |||
| 3f7437fec2 | |||
| ed0733e125 | |||
| cc3255702f | |||
| b53f3b1b5c | |||
| 795d2b264c | |||
| ab961486d9 | |||
| f35a82e36a | |||
| f841a7a25a | |||
| d01f350e94 | |||
| 0e589ecbcd | |||
| 1f381d790f | |||
| e6ce9d3d29 | |||
| a88ad71be6 | |||
| 48daf38f2b | |||
| 7d42330352 | |||
| dfd227cfc9 | |||
| 568dd9bf3c | |||
| 3507a805a9 | |||
| e248517535 | |||
| 0984a669ce | |||
| 15f2b21b62 | |||
| 4aaecfb4f9 | |||
| e6941df981 | |||
| 632f344db5 | |||
| 1f1b472568 | |||
| 20fa2f8738 | |||
| d3bf394b16 | |||
| 887092bacd | |||
| 61aa095722 | |||
| 7aa2700d8f | |||
| e842c7b28b | |||
| 091cd57f68 | |||
| 045b1e0cb8 | |||
| e7bc232eb1 | |||
| 4eaaf91794 | |||
| 9542ab0482 | |||
| f427550bb7 | |||
| ef9c3c8431 | |||
| 9eef17506d | |||
| 801490b9fc | |||
| 169988b3c4 | |||
| 695fecddeb | |||
| 429eb316d0 | |||
| a99a26aeab | |||
| ae93423116 | |||
| b897b5d0e2 | |||
| 1744e69214 | |||
| e034733ac6 | |||
| ac41c3b06c | |||
| 3c8cea2af6 | |||
| 99e8f36901 | |||
| eeea5b0e81 | |||
| b210b22975 | |||
| 84b35f47a1 | |||
| 0727ff09fa | |||
| fe416526f2 | |||
| 3c10844067 | |||
| 94bd6e22ff | |||
| d11524781e | |||
| 8d16c047cc | |||
| f94ebf5296 | |||
| 8cddaf39c4 | |||
| 7ce75733d0 | |||
| e8af613aaa | |||
| 96f2358d28 | |||
| bb8645dd18 | |||
| 12c547126e | |||
| 78d6a25d98 | |||
| 2c4621011d | |||
| 7a6c36d43c | |||
| d9f0d92262 | |||
| cc91ee1c52 | |||
| 0dc77b056a | |||
| c793672d63 | |||
| 5136853ce0 | |||
| 9da873330a | |||
| bd67e7a4ed | |||
| 9eb73f9306 | |||
| 5e275b3935 | |||
| c98f19c5a6 | |||
| 66b4f65d84 | |||
| b85898c5da | |||
| f1332c7c6a | |||
| 8a47c87a8a | |||
| 88b2d8a8ef | |||
| 2fd3ebc8fb | |||
| 204f522ea4 | |||
| 1f986598f1 | |||
| 6996b24c44 | |||
| b44e36e7ba | |||
| 7c41206c6d | |||
| ea6c0353be | |||
| 8a665bc044 | |||
| f68d53ead6 | |||
| 93b1ff1c5d | |||
| d41b0f28b4 | |||
| c686d28675 | |||
| 448095ff98 | |||
| 835bf436e4 | |||
| 6da047005a | |||
| 571824415c | |||
| bef3aad423 | |||
| 7d21a4e0fb | |||
| e9258a238e | |||
| a21376f6ce | |||
| 664f133c4b | |||
| f4cf3596c5 | |||
| d4eebd7c0d | |||
| 70256146fc | |||
| 057e3a936e | |||
| 0aab2510d3 | |||
| ed826e4451 | |||
| 8efb9a38ea | |||
| 8e1d69ac8b | |||
| ee1b3afdcf | |||
| 62aab1cec6 | |||
| 44c07e9504 | |||
| 1c74f84647 | |||
| 1741ce7ec9 | |||
| 53d87eb9be | |||
| 6e7bb505c1 | |||
| e1f137d59a | |||
| 6d7dd2cf39 | |||
| ebf3eea004 | |||
| 913c2e5713 | |||
| d2b5b8d854 | |||
| 5c10d2fae0 | |||
| 738c3eae91 | |||
| 83968bc1cd | |||
| 4cd615ba2e | |||
| ac1908d464 | |||
| 95d8d44259 | |||
| d57be5244c | |||
| 5ef4909bdd | |||
| 83e160d14d | |||
| 9a2e11c0d7 | |||
| 41b381f567 | |||
| ecb979a14b | |||
| 84bba8aa20 | |||
| b133beed5e | |||
| 90502a0c15 | |||
| f5226b2228 | |||
| ad77d6cfec | |||
| a098e38c5a | |||
| a7e7773d85 | |||
| 0df0c85fea | |||
| fdd85a6328 | |||
| 1409d0e06e | |||
| 4765409fe7 | |||
| dad24f1106 | |||
| 9ea39d280c | |||
| a04eb2bba1 | |||
| e849d18c1b | |||
| 57868f38ef | |||
| 85f9b398da | |||
| e081cf1c3d | |||
| 7c85b2f85a | |||
| ec3bcb43a8 | |||
| 3a984668d6 | |||
| b08104367e | |||
| 1fb97f0080 | |||
| 79a989e504 | |||
| d7f8eafe2d | |||
| 6e74ac9bd2 | |||
| 82c2e9978f | |||
| e04ef5a030 | |||
| 0906a0fe1c | |||
| d07994bd73 | |||
| e8699d4337 | |||
| aa0ce0fb88 | |||
| 435efc9886 | |||
| e64e45015a | |||
| 8e9461ea6a | |||
| 1262600895 | |||
| 8589436158 | |||
| 3767ffd79a | |||
| d81c632ef2 | |||
| 18abdd0cd6 | |||
| 0cad039615 | |||
| abfb49818f | |||
| afe9157d65 | |||
| fe12ba23b0 | |||
| 4f54c90a95 | |||
| 045922fb56 | |||
| 4f5678fc95 | |||
| 3986b30b00 | |||
| 7be723782a | |||
| f601664620 | |||
| bd2080fdb5 | |||
| b4585f24bb | |||
| 21c9132902 | |||
| 9abb317e6d | |||
| 5236fb8c0e | |||
| fb661ab6f6 | |||
| 9d22fca5e7 | |||
| eb1d629ea7 | |||
| fd3ce305f4 | |||
| 928e1178b1 | |||
| ff5e34ee70 | |||
| e8d52c0f01 | |||
| 275808d0d5 | |||
| 55488b1fb6 | |||
| e50e6ada6b | |||
| f511af0f0c | |||
| f10bf842c6 | |||
| e3ad54996f | |||
| aac6f45f54 | |||
| caf908669f | |||
| 39c10e2b6a | |||
| 295164302a | |||
| 9a65d480a8 | |||
| b5a1bf6a84 | |||
| d72c48500b | |||
| 8b2be2639e | |||
| 7295811965 | |||
| a3000019db | |||
| 44235d427d | |||
| 18b4f44605 | |||
| 17a5b7a363 | |||
| 8d008f9dcc | |||
| d32734af0b | |||
| d68f72ec6d | |||
| 37f80e027d | |||
| 7585dec359 | |||
| b98a67223b | |||
| 7c17344a42 | |||
| 3279ce3ea9 | |||
| 7e52e2c691 | |||
| 4e75bd1de6 | |||
| b5d2e56faf | |||
| fb1857f7cc | |||
| 885d45e9b8 | |||
| 070050a48e | |||
| 8c0db16b13 | |||
| 99641bd55c | |||
| 14c999fc82 | |||
| 95bcfa3dce | |||
| 5e345fa7b0 | |||
| 8578a1c101 | |||
| 4100b05fd9 | |||
| e7439e92ed | |||
| d874b51419 | |||
| cebef471a5 | |||
| be9b21edc4 | |||
| 37e07025f7 | |||
| f66c1e4a4f | |||
| 9a6cf7b991 | |||
| caf8cd701e | |||
| eca2c0c5ef | |||
| 11653ef58f | |||
| d05638f64f | |||
| d80586e405 | |||
| a62e757099 | |||
| 274189ee7e | |||
| 18c7aa7f89 | |||
| 735b4e2db1 | |||
| f7326ca7f1 | |||
| 647f054714 | |||
| b6ddccc793 | |||
| 1e54b3e69a | |||
| 8f3de7d022 | |||
| d1436cce38 | |||
| 97afa231ca | |||
| 34e4ead885 | |||
| afaca23f12 | |||
| c6f6a7baed | |||
| 25ac07f8a6 | |||
| 1bac501cbd | |||
| f8135c56b7 | |||
| eb9630251f | |||
| 08dd04a0d6 | |||
| a5c4d2102c | |||
| 3fcabb642e | |||
| 63e8793c7f | |||
| 2a6275cf38 | |||
| 43438dbfab | |||
| eae9e95c66 | |||
| 77c6a06c15 | |||
| 3f49351d38 | |||
| c1e0387f3b | |||
| 52430b0180 | |||
| cc737e54d4 | |||
| a9f9857ab8 | |||
| d7f82db8bd | |||
| 4e2be10574 | |||
| 4e3f975221 | |||
| 5274af7730 | |||
| 1fb34be11e | |||
| 5e1f621c50 | |||
| 9091c8702d | |||
| a2389d741e | |||
| 7541a614b0 | |||
| 2f2b1f874a | |||
| c3125c2e5e | |||
| 3a8ed01b8f | |||
| 35a2dad993 | |||
| 9f04305c12 | |||
| a69d378b84 | |||
| a9ce528744 | |||
| aae7027ac6 | |||
| 0745341d49 | |||
| 68ecc270f7 | |||
| 5132c84dfa | |||
| 0ec648217a | |||
| e603a41fb6 | |||
| 89e4d4ac30 | |||
| 789cb99292 | |||
| 0f440610b6 | |||
| cf8de234be | |||
| cd03ad9207 | |||
| b1f2f2786c | |||
| 1db1b4e5ae | |||
| 3ec4487297 | |||
| 88bd5aefe0 | |||
| a73d79b138 | |||
| cd9a01bdf0 | |||
| 2f65370d19 | |||
| 54de6d4afb | |||
| 858adeb9db | |||
| 109279d0b5 | |||
| c4fb8f74ac | |||
| 528d0a2899 | |||
| faba474def | |||
| 7dc17ae693 | |||
| 482edd0b02 | |||
| d1b723e5e1 | |||
| 89c9ca183f | |||
| 54d8a362fc | |||
| 0c4c1ce878 | |||
| 816657347f | |||
| 8533b5d0a2 | |||
| 2523f845d2 | |||
| 30cffd2563 | |||
| bcb39b9e69 | |||
| a5c94c4630 | |||
| b5813ae18b | |||
| 4919f72060 | |||
| c8b0f96251 | |||
| 3bcd262099 | |||
| ff3de43ec6 | |||
| 79083e7585 | |||
| 29fb07446a | |||
| a816630f2f | |||
| 24ca42c017 | |||
| 39fe92ebc4 | |||
| 905b0331b8 | |||
| 88a8d9043a | |||
| d05e097a78 | |||
| 2d5d1f4a29 | |||
| 85c1a74c1b | |||
| f7e81a8d22 | |||
| 61bc95dc9a | |||
| 53e9d70d3d | |||
| 11dbf03467 | |||
| 4f23dfef64 | |||
| 83fca53d04 | |||
| e93735903e | |||
| ddc7e8b8c7 | |||
| 5377e82ca0 | |||
| fdb46f5445 | |||
| a76cf5cad4 | |||
| 96f5c1c735 | |||
| 307c9ae9c5 | |||
| 83b5774d1a | |||
| ae81a8d118 | |||
| 77ae0d8ef4 | |||
| 2e8744a034 | |||
| f29f6c65a5 | |||
| 4bbf53ce62 | |||
| 9878372866 | |||
| 302255807c | |||
| c60c3fcd3c | |||
| ccf40b53eb | |||
| e3d97ec41b | |||
| cdad977341 | |||
| 717d25cad0 | |||
| 9ffe6ccb6a | |||
| af98879303 | |||
| 57809439a8 | |||
| 44e03627c3 | |||
| 13f8c973f4 | |||
| 00e0d46e92 | |||
| 7fee51081f | |||
| 6b99e44177 | |||
| 87bc397ee0 | |||
| ac3ccf1d7a | |||
| a8ad4695aa | |||
| dae6d1c730 | |||
| 132c25fd3b | |||
| 943a0203f2 | |||
| 6e8a1e0e31 | |||
| 108e1ad5e6 | |||
| a79231c666 | |||
| 97bd93f9bc | |||
| a37528362d | |||
| 4883c6c197 | |||
| 5ef8afe7c4 | |||
| 229cddb5c6 | |||
| bb9cb9a1ef | |||
| eca141eebc | |||
| e7a4070339 | |||
| 9551eff4fb | |||
| 4639187180 | |||
| 5b621d8fe9 | |||
| e3b648ea72 | |||
| 676333ab5a | |||
| bd7aa1cc7b | |||
| 88cfb538bd | |||
| b844634a85 | |||
| c93e948bc8 | |||
| dafb0f7e37 | |||
| d531a1f255 | |||
| 39d6527ea4 | |||
| ffb21d613e | |||
| 46afc9fb08 | |||
| f2a3041ce7 | |||
| d761d0fa9d | |||
| 5f6cac9155 | |||
| 860e73a633 | |||
| 9ad7d9db8f | |||
| fba77ff459 | |||
| 8d5c42d7f8 | |||
| 408dc7358b | |||
| ff5ac3a109 | |||
| 8f637b95ef | |||
| fadaf7ec5c | |||
| 8b8e0eb9ef | |||
| 3bfb274d24 | |||
| 0d3e8914ae | |||
| 5cebe65f38 | |||
| 023c655c6e | |||
| 8bae431503 | |||
| 87eab2b242 | |||
| 86ec00867a | |||
| 2df5d58027 | |||
| 5f327f450d | |||
| 10bd19f4e1 | |||
| 4962678776 | |||
| 82ef4170cb | |||
| fca4c19406 | |||
| bf7bab8ea3 | |||
| ce73bd7501 | |||
| 0239365964 | |||
| 1ff580d9eb | |||
| db9b65d7ed | |||
| c0f33222ea | |||
| 0328057a9d | |||
| d531c5beb5 | |||
| 243fc2664a | |||
| 61b8b320e3 | |||
| 689b447990 | |||
| 1cbf2ab0d7 | |||
| 5c0ed9229d | |||
| 0a29df80d0 | |||
| d2b6ac722b | |||
| 2784e273bc | |||
| 0332b11793 | |||
| 9de3a5a586 | |||
| 5642dc00e1 | |||
| 75f80029f6 | |||
| a93738dd79 | |||
| 4f78634994 | |||
| 1f7ddc865f | |||
| 2c6e68dda7 | |||
| d29a27cca7 | |||
| 90bd34d8ac | |||
| fb2a414839 | |||
| 68c210d184 | |||
| 4e01f75be7 | |||
| 9514c4b811 | |||
| 51d0b94e90 | |||
| 66a3da0694 | |||
| b5562485ab | |||
| c62e1ac5fe | |||
| df6e229cfc | |||
| 92b467ae77 | |||
| 8502b62c77 | |||
| 6b91ae4585 | |||
| 43c2e3a291 | |||
| 08854d9f6b | |||
| 571e6be9ce | |||
| b5aa1554c0 | |||
| 68b02a2348 | |||
| 08661558f2 | |||
| ed608f9f13 | |||
| ac6583906d | |||
| 878e837679 | |||
| 3a421f04ad | |||
| 929793f7a8 | |||
| 5217307132 | |||
| 06ce09d0d7 | |||
| 010627b75a | |||
| 26966f5cdb | |||
| 9be6c1c795 | |||
| 3d44f3eb64 | |||
| b6cf33b353 | |||
| 7437bad834 | |||
| 78df3ae23a | |||
| b5c92f20b4 | |||
| 4fef3195b9 | |||
| 03a53c4fdb | |||
| a60c5f651a | |||
| ddd6d800fc | |||
| 5f711c5e03 | |||
| 417f02d30a | |||
| 654ca2de2b | |||
| 846bb11cc0 | |||
| 29977c4b88 | |||
| 445f7c9a92 | |||
| 0e44126df6 | |||
| 5347b285e5 | |||
| df4ead91b6 | |||
| 73dc97b95d | |||
| 6b6ed949b4 | |||
| cd51481ce1 | |||
| 09ad2ff699 | |||
| df4768132e | |||
| 247dee0966 | |||
| 3db44b3ce1 | |||
| e695e269b1 | |||
| 7562795b4b | |||
| 951d6d9311 | |||
| 7d5cb718cf | |||
| be34eebda7 | |||
| 229812cd95 | |||
| 4c5f8f1ce3 | |||
| f231484cc9 | |||
| 9d1d1a3a54 | |||
| 30369c7701 | |||
| f1f2541e4d | |||
| 2b639a5a14 | |||
| da3789f2ce | |||
| 50373d0a94 | |||
| 72fc514370 | |||
| dae3152c9c | |||
| a2b096b096 | |||
| 6a3fe6edeb | |||
| d2c532e4d5 | |||
| 75ba542c38 | |||
| 221080e281 | |||
| d0547f3d69 | |||
| e48b47f1ec | |||
| 164c9333ef | |||
| e32ba24b6a | |||
| 46a690dfc2 | |||
| e9cfe94dfd | |||
| cf46fd79b0 | |||
| d38adbe7f1 | |||
| 85bc62948b | |||
| f663df87d4 | |||
| edfa70aff0 | |||
| 7584c78c25 | |||
| 1ecca0db74 | |||
| bfd2a8aee2 | |||
| f45af2ba72 | |||
| 17310a9d2b | |||
| e176115273 | |||
| 73ab331506 | |||
| 03772fd85b | |||
| 545162cd4c | |||
| 054bffc0f6 | |||
| ddad5a0523 | |||
| b1ee58b8e8 | |||
| 0f1f99dbf2 | |||
| 5692d43abb | |||
| 512aabc7a4 | |||
| 3b885a492c | |||
| e91058c2eb | |||
| 7e77a1f9cd | |||
| f35d87f685 | |||
| 5637c2f92a | |||
| 94cfb4aad7 | |||
| 676f64b0ef | |||
| 4c47d5b70e | |||
| affaa106d1 | |||
| 76488c58e8 | |||
| 586e8b4c4b | |||
| 2acfe2591f | |||
| 8f06b2fa31 | |||
| c36fc9e49f | |||
| ee56d0051f | |||
| 1de5496e9a | |||
| 61a8b6820f | |||
| 4a9698844e | |||
| 27ff707d54 | |||
| 53aa2f54e5 | |||
| be836dc950 | |||
| 9c13a8a6dd | |||
| 41e5a52509 | |||
| 6cefcf568b | |||
| a07efcc4b7 | |||
| 10ea331909 | |||
| 94c8c61a05 | |||
| 43bbf953c1 | |||
| effee46011 | |||
| 891b068551 | |||
| 32a357c434 | |||
| 6fcc6722c4 | |||
| f9f4fa2972 | |||
| 1ba915cbed | |||
| e79e36bea9 | |||
| cc44fef25d | |||
| 0875c2d557 | |||
| 027c0e46ee | |||
| 34b67d0621 | |||
| b3fded0725 | |||
| dc889cfe80 | |||
| a9b76e8050 | |||
| 897f328b45 | |||
| 8148fad464 | |||
| 95dddcf522 | |||
| d8701a7e41 | |||
| 3bdfd1437b | |||
| 106155a97a | |||
| 59abeccc3e | |||
| 4f883aaeda | |||
| 77df6616a9 | |||
| 171815c9b7 | |||
| b87d6f3c66 | |||
| 52d1c1abfc | |||
| a96f932016 | |||
| 85388b3112 | |||
| 65351959fe | |||
| d07dd71078 | |||
| 5a67a79569 | |||
| 25ecd5072f | |||
| 7c05cf9980 | |||
| 051b710484 | |||
| ae0e6d6516 | |||
| 048c04d0f1 | |||
| 38fd46565e | |||
| 2acad805b3 | |||
| 7f63a84295 | |||
| 1f8235ec98 | |||
| ec0108553f | |||
| 92963ced1f | |||
| 5052302f97 | |||
| a83b790225 | |||
| e8baf75ec2 | |||
| e38d473fdd | |||
| 49a088ac87 | |||
| 51cc0bb209 | |||
| 4ce7739453 | |||
| a02dafb8d7 | |||
| 5c13171e29 | |||
| 681f3c46e7 | |||
| 13a88e712f | |||
| 4177ab6df9 | |||
| 60d472ac56 | |||
| dd6c87e12d | |||
| 27a6bcd7ce | |||
| 94d50c1fdd | |||
| 604024e3e3 | |||
| 4df82206b4 | |||
| 72e314d1c0 | |||
| 61c19405fd | |||
| 4351e8850a | |||
| fa5a042071 | |||
| 18b278fe1d | |||
| eead597c9e | |||
| cea7c28626 | |||
| d4a64d2168 | |||
| a44a309de5 |
@@ -0,0 +1,90 @@
|
|||||||
|
---
|
||||||
|
Language: Cpp
|
||||||
|
# BasedOnStyle: LLVM
|
||||||
|
AccessModifierOffset: -2
|
||||||
|
AlignAfterOpenBracket: Align
|
||||||
|
AlignConsecutiveAssignments: false
|
||||||
|
AlignConsecutiveDeclarations: false
|
||||||
|
AlignEscapedNewlinesLeft: false
|
||||||
|
AlignOperands: true
|
||||||
|
AlignTrailingComments: true
|
||||||
|
AllowAllParametersOfDeclarationOnNextLine: true
|
||||||
|
AllowShortBlocksOnASingleLine: true
|
||||||
|
AllowShortCaseLabelsOnASingleLine: false
|
||||||
|
AllowShortFunctionsOnASingleLine: All
|
||||||
|
AllowShortIfStatementsOnASingleLine: false
|
||||||
|
AllowShortLoopsOnASingleLine: false
|
||||||
|
AlwaysBreakAfterDefinitionReturnType: None
|
||||||
|
AlwaysBreakAfterReturnType: None
|
||||||
|
AlwaysBreakBeforeMultilineStrings: false
|
||||||
|
AlwaysBreakTemplateDeclarations: false
|
||||||
|
BinPackArguments: false
|
||||||
|
BinPackParameters: false
|
||||||
|
BraceWrapping:
|
||||||
|
AfterClass: true
|
||||||
|
AfterControlStatement: true
|
||||||
|
AfterEnum: true
|
||||||
|
AfterFunction: true
|
||||||
|
AfterNamespace: true
|
||||||
|
AfterObjCDeclaration: true
|
||||||
|
AfterStruct: true
|
||||||
|
AfterUnion: true
|
||||||
|
BeforeCatch: true
|
||||||
|
BeforeElse: true
|
||||||
|
IndentBraces: true
|
||||||
|
BreakBeforeBinaryOperators: false
|
||||||
|
BreakBeforeBraces: Allman
|
||||||
|
BreakBeforeTernaryOperators: true
|
||||||
|
BreakConstructorInitializersBeforeComma: false
|
||||||
|
ColumnLimit: 100
|
||||||
|
CommentPragmas: '^ IWYU pragma:'
|
||||||
|
ConstructorInitializerAllOnOneLineOrOnePerLine: false
|
||||||
|
ConstructorInitializerIndentWidth: 4
|
||||||
|
ContinuationIndentWidth: 4
|
||||||
|
Cpp11BracedListStyle: true
|
||||||
|
DerivePointerAlignment: false
|
||||||
|
DisableFormat: false
|
||||||
|
ExperimentalAutoDetectBinPacking: false
|
||||||
|
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
|
||||||
|
IncludeCategories:
|
||||||
|
- Regex: '^<'
|
||||||
|
Priority: 3
|
||||||
|
- Regex: '^"(osrm|util|engine|extract|contract)/'
|
||||||
|
Priority: 2
|
||||||
|
- Regex: '.*'
|
||||||
|
Priority: 1
|
||||||
|
IndentCaseLabels: false
|
||||||
|
IndentWidth: 4
|
||||||
|
IndentWrappedFunctionNames: false
|
||||||
|
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||||
|
MacroBlockBegin: ''
|
||||||
|
MacroBlockEnd: ''
|
||||||
|
MaxEmptyLinesToKeep: 1
|
||||||
|
NamespaceIndentation: None
|
||||||
|
ObjCBlockIndentWidth: 2
|
||||||
|
ObjCSpaceAfterProperty: false
|
||||||
|
ObjCSpaceBeforeProtocolList: true
|
||||||
|
PenaltyBreakBeforeFirstCallParameter: 19
|
||||||
|
PenaltyBreakComment: 300
|
||||||
|
PenaltyBreakFirstLessLess: 120
|
||||||
|
PenaltyBreakString: 1000
|
||||||
|
PenaltyExcessCharacter: 1000000
|
||||||
|
PenaltyReturnTypeOnItsOwnLine: 60
|
||||||
|
PointerAlignment: Right
|
||||||
|
ReflowComments: true
|
||||||
|
SortIncludes: true
|
||||||
|
SpaceAfterCStyleCast: false
|
||||||
|
SpaceBeforeAssignmentOperators: true
|
||||||
|
SpaceBeforeParens: ControlStatements
|
||||||
|
SpaceInEmptyParentheses: false
|
||||||
|
SpacesBeforeTrailingComments: 1
|
||||||
|
SpacesInAngles: false
|
||||||
|
SpacesInContainerLiterals: true
|
||||||
|
SpacesInCStyleCastParentheses: false
|
||||||
|
SpacesInParentheses: false
|
||||||
|
SpacesInSquareBrackets: false
|
||||||
|
Standard: Cpp11
|
||||||
|
TabWidth: 8
|
||||||
|
UseTab: Never
|
||||||
|
...
|
||||||
|
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
---
|
||||||
|
Checks: '-clang-analyzer-*,google-*,llvm-*,misc-*,readability-*,-google-build-explicit-make-pair,-google-explicit-constructor,-google-readability-braces-around-statements,-google-readability-casting,-google-readability-namespace-comments,-google-readability-function,-google-readability-todo,-google-runtime-int,-llvm-namespace-comment,-llvm-header-guard,-llvm-twine-local,-misc-argument-comment,-readability-braces-around-statements,-readability-identifier-naming'
|
||||||
|
...
|
||||||
|
|
||||||
@@ -0,0 +1,14 @@
|
|||||||
|
# Kind-specific patterns to check AST nodes against. Both python-clang and
|
||||||
|
# libclang docs explain CursorKind, with differences in detail. See also:
|
||||||
|
# - https://github.com/llvm-mirror/clang/blob/aca4fe314a55cacae29e1548cb7bfd2119c6df4c/bindings/python/clang/cindex.py#L599
|
||||||
|
# - http://clang.llvm.org/doxygen/group__CINDEX.html#gaaccc432245b4cd9f2d470913f9ef0013
|
||||||
|
# - https://docs.python.org/2/library/re.html#regular-expression-syntax
|
||||||
|
|
||||||
|
class_decl: '^([A-Z]+[a-z]+)+$'
|
||||||
|
struct_decl: '^([A-Z]+[a-z]+)+$'
|
||||||
|
field_decl: '^[a-z_]+$'
|
||||||
|
var_decl: '^[a-z]+[a-z0-9_]*$'
|
||||||
|
parm_decl: '^[a-z]*[a-z0-9_]*$'
|
||||||
|
namespace: '^[a-z_]*$'
|
||||||
|
cxx_method: '^([A-Z]+[a-z]+)+$'
|
||||||
|
function_decl: '^[a-z]+([A-Z]+[a-z]+)*$'
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
{
|
||||||
|
"rules": {
|
||||||
|
"indent": [
|
||||||
|
2,
|
||||||
|
4
|
||||||
|
],
|
||||||
|
"quotes": [
|
||||||
|
1,
|
||||||
|
"single"
|
||||||
|
],
|
||||||
|
"linebreak-style": [
|
||||||
|
2,
|
||||||
|
"unix"
|
||||||
|
],
|
||||||
|
"semi": [
|
||||||
|
2,
|
||||||
|
"always"
|
||||||
|
],
|
||||||
|
"no-console": [
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"env": {
|
||||||
|
"es6": true,
|
||||||
|
"node": true
|
||||||
|
},
|
||||||
|
"extends": "eslint:recommended"
|
||||||
|
}
|
||||||
@@ -1,2 +1,91 @@
|
|||||||
/.settings
|
# pre compiled dependencies #
|
||||||
/.project
|
#############################
|
||||||
|
osrm-deps
|
||||||
|
|
||||||
|
# Compiled source #
|
||||||
|
###################
|
||||||
|
*.com
|
||||||
|
*.class
|
||||||
|
*.dll
|
||||||
|
*.exe
|
||||||
|
*.o
|
||||||
|
*.so
|
||||||
|
|
||||||
|
# Packages #
|
||||||
|
############
|
||||||
|
# it's better to unpack these files and commit the raw source
|
||||||
|
# git has its own built in compression methods
|
||||||
|
*.7z
|
||||||
|
*.dmg
|
||||||
|
*.gz
|
||||||
|
*.iso
|
||||||
|
*.jar
|
||||||
|
*.rar
|
||||||
|
*.tar
|
||||||
|
*.zip
|
||||||
|
|
||||||
|
# Logs and databases #
|
||||||
|
######################
|
||||||
|
*.log
|
||||||
|
*.sql
|
||||||
|
*.sqlite
|
||||||
|
|
||||||
|
# OS generated files #
|
||||||
|
######################
|
||||||
|
.DS_Store
|
||||||
|
ehthumbs.db
|
||||||
|
Icon?
|
||||||
|
Thumbs.db
|
||||||
|
|
||||||
|
# build related files #
|
||||||
|
#######################
|
||||||
|
/build/
|
||||||
|
/example/build/
|
||||||
|
/test/data/monaco*
|
||||||
|
/cmake/postinst
|
||||||
|
|
||||||
|
# Eclipse related files #
|
||||||
|
#########################
|
||||||
|
.setting*
|
||||||
|
.scb
|
||||||
|
.cproject
|
||||||
|
.project
|
||||||
|
|
||||||
|
# stxxl related files #
|
||||||
|
#######################
|
||||||
|
.stxxl
|
||||||
|
stxxl.log
|
||||||
|
stxxl.errlog
|
||||||
|
|
||||||
|
# Compiled Binary Files #
|
||||||
|
####################################
|
||||||
|
/osrm-extract
|
||||||
|
/osrm-io-benchmark
|
||||||
|
/osrm-components
|
||||||
|
/osrm-routed
|
||||||
|
/osrm-datastore
|
||||||
|
/osrm-prepare
|
||||||
|
/osrm-unlock-all
|
||||||
|
/osrm-cli
|
||||||
|
/osrm-check-hsgr
|
||||||
|
/osrm-springclean
|
||||||
|
/nohup.out
|
||||||
|
|
||||||
|
# Sandbox folder #
|
||||||
|
###################
|
||||||
|
/sandbox/
|
||||||
|
|
||||||
|
# Test related files #
|
||||||
|
######################
|
||||||
|
/test/profile.lua
|
||||||
|
/test/cache
|
||||||
|
/test/speeds.csv
|
||||||
|
/test/penalties.csv
|
||||||
|
/test/data/monaco.*
|
||||||
|
node_modules
|
||||||
|
|
||||||
|
# Deprecated config file #
|
||||||
|
##########################
|
||||||
|
/server.ini
|
||||||
|
|
||||||
|
*.swp
|
||||||
|
|||||||
@@ -0,0 +1,198 @@
|
|||||||
|
language: cpp
|
||||||
|
|
||||||
|
git:
|
||||||
|
depth: 10
|
||||||
|
|
||||||
|
# sudo:required is needed for trusty images
|
||||||
|
sudo: required
|
||||||
|
dist: trusty
|
||||||
|
|
||||||
|
notifications:
|
||||||
|
email: false
|
||||||
|
|
||||||
|
branches:
|
||||||
|
only:
|
||||||
|
- master
|
||||||
|
- "5.3"
|
||||||
|
|
||||||
|
cache:
|
||||||
|
ccache: true
|
||||||
|
apt: true
|
||||||
|
directories:
|
||||||
|
- test/cache
|
||||||
|
|
||||||
|
env:
|
||||||
|
global:
|
||||||
|
- CCACHE_TEMPDIR=/tmp/.ccache-temp
|
||||||
|
- CCACHE_COMPRESS=1
|
||||||
|
- CASHER_TIME_OUT=1000
|
||||||
|
- JOBS=4
|
||||||
|
|
||||||
|
matrix:
|
||||||
|
fast_finish: true
|
||||||
|
|
||||||
|
# We override the compiler names here to yield better ccache behavior, which uses this as key
|
||||||
|
include:
|
||||||
|
|
||||||
|
# Debug Builds
|
||||||
|
- os: linux
|
||||||
|
compiler: "gcc-5-debug"
|
||||||
|
addons: &gcc5
|
||||||
|
apt:
|
||||||
|
sources: ['ubuntu-toolchain-r-test']
|
||||||
|
packages: ['g++-5', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev', 'ccache']
|
||||||
|
env: CCOMPILER='gcc-5' CXXCOMPILER='g++-5' BUILD_TYPE='Debug' COVERAGE=ON
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
compiler: "gcc-4.8-debug"
|
||||||
|
addons: &gcc48
|
||||||
|
apt:
|
||||||
|
sources: ['ubuntu-toolchain-r-test']
|
||||||
|
packages: ['g++-4.8', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev', 'ccache']
|
||||||
|
env: CCOMPILER='gcc-4.8' CXXCOMPILER='g++-4.8' BUILD_TYPE='Debug'
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
compiler: "clang-3.8-debug"
|
||||||
|
addons: &clang38
|
||||||
|
apt:
|
||||||
|
sources: ['ubuntu-toolchain-r-test']
|
||||||
|
packages: ['libstdc++-5-dev', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev', 'ccache']
|
||||||
|
env: CLANG_VERSION='3.8.0' BUILD_TYPE='Debug' RUN_CLANG_FORMAT=ON
|
||||||
|
|
||||||
|
- os: osx
|
||||||
|
osx_image: xcode7.3
|
||||||
|
compiler: clang
|
||||||
|
env: CCOMPILER='clang' CXXCOMPILER='clang++' BUILD_TYPE='Debug' JOBS=1 CUCUMBER_TIMEOUT=60000
|
||||||
|
|
||||||
|
# Release Builds
|
||||||
|
- os: linux
|
||||||
|
compiler: "gcc-5-release"
|
||||||
|
addons: &gcc5
|
||||||
|
apt:
|
||||||
|
sources: ['ubuntu-toolchain-r-test']
|
||||||
|
packages: ['g++-5', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev', 'ccache']
|
||||||
|
env: CCOMPILER='gcc-5' CXXCOMPILER='g++-5' BUILD_TYPE='Release'
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
compiler: "gcc-5-release-i686"
|
||||||
|
env: TARGET_ARCH='i686' CCOMPILER='gcc-5' CXXCOMPILER='g++-5' BUILD_TYPE='Release'
|
||||||
|
|
||||||
|
- os: linux
|
||||||
|
compiler: "gcc-4.8-release-armhf"
|
||||||
|
env: TARGET_ARCH='armhf' CCOMPILER='arm-linux-gnueabihf-gcc-4.8' CXXCOMPILER='arm-linux-gnueabihf-g++-4.8' BUILD_TYPE='Release'
|
||||||
|
|
||||||
|
# Disabled because of CI slowness
|
||||||
|
#- os: linux
|
||||||
|
#- compiler: gcc
|
||||||
|
#- addons: &gcc48
|
||||||
|
#- apt:
|
||||||
|
#- sources: ['ubuntu-toolchain-r-test']
|
||||||
|
#- packages: ['g++-4.8', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev']
|
||||||
|
#- env: CCOMPILER='gcc-4.8' CXXCOMPILER='g++-4.8' BUILD_TYPE='Release'
|
||||||
|
|
||||||
|
# Disabled because of CI slowness
|
||||||
|
#- os: linux
|
||||||
|
#- compiler: clang
|
||||||
|
#- addons: &clang38
|
||||||
|
#- apt:
|
||||||
|
#- sources: ['llvm-toolchain-precise-3.8', 'ubuntu-toolchain-r-test']
|
||||||
|
#- packages: ['clang-3.8', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev']
|
||||||
|
#- env: CCOMPILER='clang-3.8' CXXCOMPILER='clang++-3.8' BUILD_TYPE='Release'
|
||||||
|
|
||||||
|
# Disabled because of CI slowness
|
||||||
|
#- os: osx
|
||||||
|
#- osx_image: xcode7.3
|
||||||
|
#- compiler: clang
|
||||||
|
#- env: CCOMPILER='clang' CXXCOMPILER='clang++' BUILD_TYPE='Release'
|
||||||
|
|
||||||
|
# Shared Library
|
||||||
|
- os: linux
|
||||||
|
compiler: "gcc-5-release-shared"
|
||||||
|
addons: &gcc5
|
||||||
|
apt:
|
||||||
|
sources: ['ubuntu-toolchain-r-test']
|
||||||
|
packages: ['g++-5', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev', 'ccache']
|
||||||
|
env: CCOMPILER='gcc-5' CXXCOMPILER='g++-5' BUILD_TYPE='Release' BUILD_SHARED_LIBS=ON
|
||||||
|
|
||||||
|
# Disabled because CI slowness
|
||||||
|
#- os: linux
|
||||||
|
#- compiler: clang
|
||||||
|
#- addons: &clang38
|
||||||
|
#- apt:
|
||||||
|
#- sources: ['llvm-toolchain-precise-3.8', 'ubuntu-toolchain-r-test']
|
||||||
|
#- packages: ['clang-3.8', 'libbz2-dev', 'libstxxl-dev', 'libstxxl1', 'libxml2-dev', 'libzip-dev', 'lua5.1', 'liblua5.1-0-dev', 'libtbb-dev', 'libgdal-dev', 'libluabind-dev', 'libboost-all-dev']
|
||||||
|
#- env: CCOMPILER='clang-3.8' CXXCOMPILER='clang++-3.8' BUILD_TYPE='Release' BUILD_SHARED_LIBS=ON
|
||||||
|
|
||||||
|
before_install:
|
||||||
|
- if [[ ! -z $TARGET_ARCH ]] ; then source ./scripts/travis/before_install.$TARGET_ARCH.sh ; fi
|
||||||
|
- if [[ $(uname -s) == 'Darwin' ]]; then sudo mdutil -i off /; fi;
|
||||||
|
- source ./scripts/install_node.sh 4
|
||||||
|
- npm install
|
||||||
|
- DEPS_DIR="${TRAVIS_BUILD_DIR}/deps"
|
||||||
|
- export PATH=${DEPS_DIR}/bin:${PATH} && mkdir -p ${DEPS_DIR}
|
||||||
|
- CMAKE_URL="https://mason-binaries.s3.amazonaws.com/${TRAVIS_OS_NAME}-x86_64/cmake/3.5.2.tar.gz"
|
||||||
|
- travis_retry wget --quiet -O - ${CMAKE_URL} | tar --strip-components=1 -xz -C ${DEPS_DIR} || exit 1
|
||||||
|
- |
|
||||||
|
if [[ ${CLANG_VERSION:-false} != false ]]; then
|
||||||
|
export CCOMPILER='clang'
|
||||||
|
export CXXCOMPILER='clang++'
|
||||||
|
CLANG_URL="https://mason-binaries.s3.amazonaws.com/${TRAVIS_OS_NAME}-x86_64/clang/${CLANG_VERSION}.tar.gz"
|
||||||
|
travis_retry wget --quiet -O - ${CLANG_URL} | tar --strip-components=1 -xz -C ${DEPS_DIR} || exit 1
|
||||||
|
fi
|
||||||
|
- |
|
||||||
|
if [[ "${TRAVIS_OS_NAME}" == "osx" ]]; then
|
||||||
|
# implicit deps, but seem to be installed by default with recent images: libxml2 GDAL boost
|
||||||
|
brew install libzip libstxxl lua51 luabind tbb md5sha1sum ccache
|
||||||
|
fi
|
||||||
|
|
||||||
|
install:
|
||||||
|
- |
|
||||||
|
if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
|
||||||
|
./scripts/check_taginfo.py taginfo.json profiles/car.lua
|
||||||
|
fi
|
||||||
|
- mkdir build && pushd build
|
||||||
|
- export CC=${CCOMPILER} CXX=${CXXCOMPILER}
|
||||||
|
- cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE} -DBUILD_SHARED_LIBS=${BUILD_SHARED_LIBS:-OFF} -DCOVERAGE=${COVERAGE:-OFF} -DBUILD_TOOLS=1 -DENABLE_CCACHE=ON
|
||||||
|
- echo "travis_fold:start:MAKE"
|
||||||
|
- make osrm-extract --jobs=3
|
||||||
|
- make --jobs=${JOBS}
|
||||||
|
- make tests --jobs=${JOBS}
|
||||||
|
- make benchmarks --jobs=${JOBS}
|
||||||
|
- echo "travis_fold:end:MAKE"
|
||||||
|
- ccache -s
|
||||||
|
- sudo make install
|
||||||
|
- |
|
||||||
|
if [[ "${TRAVIS_OS_NAME}" == "linux" ]]; then
|
||||||
|
sudo ldconfig
|
||||||
|
fi
|
||||||
|
- popd
|
||||||
|
- mkdir example/build && pushd example/build
|
||||||
|
- cmake .. -DCMAKE_BUILD_TYPE=${BUILD_TYPE}
|
||||||
|
- make
|
||||||
|
- popd
|
||||||
|
|
||||||
|
script:
|
||||||
|
- if [[ $TARGET_ARCH == armhf ]] ; then echo "Skip tests for $TARGET_ARCH" && exit 0 ; fi
|
||||||
|
- echo "travis_fold:start:BENCHMARK"
|
||||||
|
- make -C test/data benchmark
|
||||||
|
- echo "travis_fold:end:BENCHMARK"
|
||||||
|
- ./example/build/osrm-example test/data/monaco.osrm
|
||||||
|
# All tests assume to be run from the build directory
|
||||||
|
- pushd build
|
||||||
|
- ./unit_tests/library-tests ../test/data/monaco.osrm
|
||||||
|
- ./unit_tests/extractor-tests
|
||||||
|
- ./unit_tests/engine-tests
|
||||||
|
- ./unit_tests/util-tests
|
||||||
|
- ./unit_tests/server-tests
|
||||||
|
- popd
|
||||||
|
- npm test
|
||||||
|
|
||||||
|
after_success:
|
||||||
|
- |
|
||||||
|
if [ -n "${RUN_CLANG_FORMAT}" ]; then
|
||||||
|
./scripts/format.sh # we don't want to fail just yet
|
||||||
|
fi
|
||||||
|
- |
|
||||||
|
if [ -n "${COVERAGE}" ]; then
|
||||||
|
bash <(curl -s https://codecov.io/bash)
|
||||||
|
fi
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
The following people contributed to the Open Source Routing Machine web frontend:
|
|
||||||
|
|
||||||
Dennis Schieferdecker
|
|
||||||
Dennis Luxen
|
|
||||||
Pascal Neis
|
|
||||||
Teemu Koskinen
|
|
||||||
Nicolas Belett Vigneron
|
|
||||||
Moyg
|
|
||||||
Jean-Frederic
|
|
||||||
Zbigniew Czernik
|
|
||||||
Jonas Häggqvist
|
|
||||||
Sabas
|
|
||||||
Paul Spencer
|
|
||||||
Raphael Pinson
|
|
||||||
Juan Luis Rodriguez Ponce
|
|
||||||
Lauris Bukšis-Haberkorns
|
|
||||||
Barboska
|
|
||||||
@@ -0,0 +1,309 @@
|
|||||||
|
# 5.3.3
|
||||||
|
Changes from 5.3.2
|
||||||
|
- Bugfixes
|
||||||
|
- Fixed an issue that would result in segfaults for viaroutes with an invalid intermediate segment when u-turns were allowed at the via-location
|
||||||
|
- Fixed an issue that could result in segfaults when querying roads that could require looping back to the start of a way while using a core factor
|
||||||
|
- Fixed an issue that could break some testcases when using a core factor
|
||||||
|
- Fixed an issue with parallel edges that could result in weird routes
|
||||||
|
|
||||||
|
# 5.3.2
|
||||||
|
Changes from 5.3.1
|
||||||
|
- Bugfixes
|
||||||
|
- fixed a bug that occurred when trimming very short segments at the begin/end of a route (less than 1 meter)
|
||||||
|
|
||||||
|
# 5.3.1
|
||||||
|
Changes from 5.3.1
|
||||||
|
- Bugfixes:
|
||||||
|
- Disabled broken lane handling for complex uturn/oneway combinations for now (190 intersections affected on the planet)
|
||||||
|
- Fixed a bug with overlaping geometries, which broke OSRM on recent Egypt extracts with data-modelling issues
|
||||||
|
|
||||||
|
# 5.3.0
|
||||||
|
Changes from 5.3.0-rc.3
|
||||||
|
- Guidance
|
||||||
|
- Only announce `use lane` on required turns (not using all lanes to go straight)
|
||||||
|
- Moved `lanes` to the intersection objects. This is BREAKING in relation to other Release Candidates but not with respect to other releases.
|
||||||
|
- Bugfixes
|
||||||
|
- Fix BREAKING: bug that could result in failure to load 'osrm.icd' files. This breaks the dataformat
|
||||||
|
- Fix: bug that results in segfaults when `use lane` instructions are suppressed
|
||||||
|
|
||||||
|
Changes form 5.2.7
|
||||||
|
- API
|
||||||
|
- Introduces new `TurnType` in the form of `use lane`. The type indicates that you have to stick to a lane without turning
|
||||||
|
- Introduces `lanes` to the `Intersection` object. The lane data contains both the markings at the intersection and a flag indicating if they can be chosen for the next turn
|
||||||
|
- Removed unused `-s` from `osrm-datastore`
|
||||||
|
- Guidance
|
||||||
|
- Only announce `use lane` on required turns (not using all lanes to go straight)
|
||||||
|
- Improved detection of obvious turns
|
||||||
|
- Improved turn lane detection
|
||||||
|
- Reduce the number of end-of-road instructions in obvious cases
|
||||||
|
- Profile:
|
||||||
|
- bicycle.lua: Surface speeds never increase the actual speed
|
||||||
|
- Infrastructure
|
||||||
|
- Add 32bit support
|
||||||
|
- Add ARM NEON/VFP support
|
||||||
|
- Fix Windows builds
|
||||||
|
- Optimize speed file updates using mmap
|
||||||
|
- Add option to disable LTO for older compilers
|
||||||
|
- BREAKING: The new turn type changes the turn-type order. This breaks the **data format**.
|
||||||
|
- BREAKING: Turn lane data introduces two new files (osrm.tld,osrm.tls). This breaks the fileformat for older versions.
|
||||||
|
- Bugfixes:
|
||||||
|
- Fix devide by zero on updating speed data using osrm-contract
|
||||||
|
|
||||||
|
# 5.3.0 RC3
|
||||||
|
Changes from 5.3.0-rc.2
|
||||||
|
- Guidance
|
||||||
|
- Improved detection of obvious turns
|
||||||
|
- Improved turn lane detection
|
||||||
|
- Bugfixes
|
||||||
|
- Fix bug that didn't chose minimal weights on overlapping edges
|
||||||
|
|
||||||
|
# 5.3.0 RC2
|
||||||
|
Changes from 5.3.0-rc.1
|
||||||
|
- Bugfixes
|
||||||
|
- Fixes invalid checks in the lane-extraction part of the car profile
|
||||||
|
|
||||||
|
# 5.3.0 RC1
|
||||||
|
- API
|
||||||
|
- Introduces new `TurnType` in the form of `use lane`. The type indicates that you have to stick to a lane without turning
|
||||||
|
- Introduces lanes to the route response. The lane data contains both the markings at the intersection and a flag indicating their involvement in the turn
|
||||||
|
|
||||||
|
- Infrastructure
|
||||||
|
- BREAKING: The new turn type changes the turn-type order. This breaks the **data format**.
|
||||||
|
- BREAKING: Turn lane data introduces two new files (osrm.tld,osrm.tls). This breaks the fileformat for older versions.
|
||||||
|
|
||||||
|
# 5.2.5
|
||||||
|
- Bugfixes
|
||||||
|
- Fixes a segfault caused by incorrect trimming logic for very short steps.
|
||||||
|
|
||||||
|
# 5.2.4
|
||||||
|
- Bugfixes:
|
||||||
|
- Fixed in issue that arised on roundabouts in combination with intermediate intersections and sliproads
|
||||||
|
|
||||||
|
# 5.2.3
|
||||||
|
- Bugfixes:
|
||||||
|
- Fixed an issue with name changes in roundabouts that could result in crashes
|
||||||
|
|
||||||
|
# 5.2.2
|
||||||
|
Changes from 5.2.1
|
||||||
|
- Bugfixes:
|
||||||
|
- Buffer overrun in tile plugin response handling
|
||||||
|
|
||||||
|
# 5.2.1
|
||||||
|
Changes from 5.2.0
|
||||||
|
- Bugfixes:
|
||||||
|
- Removed debug statement that was spamming the console
|
||||||
|
|
||||||
|
# 5.2.0
|
||||||
|
Changes from 5.2.0 RC2
|
||||||
|
- Bugfixes:
|
||||||
|
- Fixed crash when loading shared memory caused by invalid OSM IDs segment size.
|
||||||
|
- Various small instructions handling fixes
|
||||||
|
|
||||||
|
Changes from 5.1.0
|
||||||
|
- API:
|
||||||
|
- new parameter `annotations` for `route`, `trip` and `match` requests. Returns additional data about each
|
||||||
|
coordinate along the selected/matched route line per `RouteLeg`:
|
||||||
|
- duration of each segment
|
||||||
|
- distance of each segment
|
||||||
|
- OSM node ids of all segment endpoints
|
||||||
|
- Introducing Intersections for Route Steps. This changes the API format in multiple ways.
|
||||||
|
- `bearing_before`/`bearing_after` of `StepManeuver` are now deprecated and will be removed in the next major release
|
||||||
|
- `location` of `StepManeuvers` is now deprecated and will be removed in the next major release
|
||||||
|
- every `RouteStep` now has property `intersections` containing a list of `Intersection` objects.
|
||||||
|
- Support for destination signs. New member `destinations` in `RouteStep`, based on `destination` and `destination:ref`
|
||||||
|
- Support for name pronunciations. New member `pronunciation` in `RouteStep`, based on `name:pronunciation`
|
||||||
|
|
||||||
|
- Profile changes:
|
||||||
|
- duration parser now accepts P[n]DT[n]H[n]M[n]S, P[n]W, PTHHMMSS and PTHH:MM:SS ISO8601 formats.
|
||||||
|
- `result.destinations` allows you to set a way's destinations
|
||||||
|
- `result.pronunciation` allows you to set way name pronunciations
|
||||||
|
- `highway=motorway_link` no longer implies `oneway` as per the OSM Wiki
|
||||||
|
|
||||||
|
- Infrastructure:
|
||||||
|
- BREAKING: Changed the on-disk encoding of the StaticRTree to reduce ramIndex file size. This breaks the **data format**
|
||||||
|
- BREAKING: Intersection Classification adds a new file to the mix (osrm.icd). This breaks the fileformat for older versions.
|
||||||
|
- Better support for osrm-routed binary upgrade on the fly [UNIX specific]:
|
||||||
|
- Open sockets with SO_REUSEPORT to allow multiple osrm-routed processes serving requests from the same port.
|
||||||
|
- Add SIGNAL_PARENT_WHEN_READY environment variable to enable osrm-routed signal its parent with USR1 when it's running and waiting for requests.
|
||||||
|
- Disable http access logging via DISABLE_ACCESS_LOGGING environment variable.
|
||||||
|
|
||||||
|
- Guidance:
|
||||||
|
- BREAKING: modifies the file format with new internal identifiers
|
||||||
|
- improved detection of turning streets, not reporting new-name in wrong situations
|
||||||
|
- improved handling of sliproads (emit turns instead of 'take the ramp')
|
||||||
|
- improved collapsing of instructions. Some 'new name' instructions will be suppressed if they are without alternative and the segment is short
|
||||||
|
|
||||||
|
- Bugfixes
|
||||||
|
- fixed broken summaries for very short routes
|
||||||
|
|
||||||
|
# 5.2.0 RC2
|
||||||
|
Changes from 5.2.0 RC1
|
||||||
|
|
||||||
|
- Guidance:
|
||||||
|
- improved handling of sliproads (emit turns instead of 'take the ramp')
|
||||||
|
- improved collapsing of instructions. Some 'new name' instructions will be suppressed if they are without alternative and the segment is short
|
||||||
|
- BREAKING: modifies the file format with new internal identifiers
|
||||||
|
|
||||||
|
- API:
|
||||||
|
- paramater `annotate` was renamed to `annotations`.
|
||||||
|
- `annotation` as accidentally placed in `Route` instead of `RouteLeg`
|
||||||
|
- Support for destination signs. New member `destinations` in `RouteStep`, based on `destination` and `destination:ref`
|
||||||
|
- Support for name pronunciations. New member `pronunciation` in `RouteStep`, based on `name:pronunciation`
|
||||||
|
- Add `nodes` property to `annotation` in `RouteLeg` containing the ids of nodes covered by the route
|
||||||
|
|
||||||
|
- Profile changes:
|
||||||
|
- `result.destinations` allows you to set a way's destinations
|
||||||
|
- `result.pronunciation` allows you to set way name pronunciations
|
||||||
|
- `highway=motorway_link` no longer implies `oneway` as per the OSM Wiki
|
||||||
|
|
||||||
|
- Infrastructure
|
||||||
|
- BREAKING: Changed the on-disk encoding of the StaticRTree to reduce ramIndex file size. This breaks the **data format**
|
||||||
|
|
||||||
|
- Bugfixes
|
||||||
|
- fixed broken summaries for very short routes
|
||||||
|
|
||||||
|
# 5.2.0 RC1
|
||||||
|
Changes from 5.1.0
|
||||||
|
|
||||||
|
- API:
|
||||||
|
- new parameter `annotate` for `route` and `match` requests. Returns additional data about each
|
||||||
|
coordinate along the selected/matched route line.
|
||||||
|
- Introducing Intersections for Route Steps. This changes the API format in multiple ways.
|
||||||
|
- `bearing_before`/`bearing_after` of `StepManeuver` are now deprecated and will be removed in the next major release
|
||||||
|
- `location` of `StepManeuvers` is now deprecated and will be removed in the next major release
|
||||||
|
- every `RouteStep` now has property `intersections` containing a list of `Intersection` objects.
|
||||||
|
|
||||||
|
- Profile changes:
|
||||||
|
- duration parser now accepts P[n]DT[n]H[n]M[n]S, P[n]W, PTHHMMSS and PTHH:MM:SS ISO8601 formats.
|
||||||
|
|
||||||
|
- Infrastructure:
|
||||||
|
- Better support for osrm-routed binary upgrade on the fly [UNIX specific]:
|
||||||
|
- Open sockets with SO_REUSEPORT to allow multiple osrm-routed processes serving requests from the same port.
|
||||||
|
- Add SIGNAL_PARENT_WHEN_READY environment variable to enable osrm-routed signal its parent with USR1 when it's running and waiting for requests.
|
||||||
|
- BREAKING: Intersection Classification adds a new file to the mix (osrm.icd). This breaks the fileformat for older versions.
|
||||||
|
- Disable http access logging via DISABLE_ACCESS_LOGGING environment
|
||||||
|
variable.
|
||||||
|
|
||||||
|
- Guidance:
|
||||||
|
- improved detection of turning streets, not reporting new-name in wrong situations
|
||||||
|
|
||||||
|
# 5.1.0
|
||||||
|
Changes with regard to 5.0.0
|
||||||
|
|
||||||
|
- API:
|
||||||
|
- added StepManeuver type `roundabout turn`. The type indicates a small roundabout that is treated as an intersection
|
||||||
|
(turn right at the roundabout for first exit, go straight at the roundabout...)
|
||||||
|
- added StepManeuver type `on ramp` and `off ramp` to distinguish between ramps that enter and exit a highway.
|
||||||
|
- reduced new name instructions for trivial changes
|
||||||
|
- combined multiple turns into a single instruction at segregated roads`
|
||||||
|
|
||||||
|
- Profile Changes:
|
||||||
|
- introduced a suffix_list / get_name_suffix_list to specify name suffices to be suppressed in name change announcements
|
||||||
|
- street names are now consistently assembled for the car, bike and walk profile as: "Name (Ref)" as in "Berlin (A5)"
|
||||||
|
- new `car.lua` dependency `lib/destination.lua`
|
||||||
|
- register a way's .nodes() function for use in the profile's way_function.
|
||||||
|
|
||||||
|
- Infrastructure
|
||||||
|
- BREAKING: reordered internal instruction types. This breaks the **data format**
|
||||||
|
- BREAKING: Changed the on-disk encoding of the StaticRTree for better performance. This breaks the **data format**
|
||||||
|
|
||||||
|
- Fixes:
|
||||||
|
- Issue #2310: post-processing for local paths, fixes #2310
|
||||||
|
- Issue #2309: local path looping, fixes #2309
|
||||||
|
- Issue #2356: Make hint values optional
|
||||||
|
- Issue #2349: Segmentation fault in some requests
|
||||||
|
- Issue #2335: map matching was using shortest path with uturns disabled
|
||||||
|
- Issue #2193: Fix syntax error position indicators in parameters queries
|
||||||
|
- Fix search with u-turn
|
||||||
|
- PhantomNode packing in MSVC now the same on other platforms
|
||||||
|
- Summary is now not malformed when including unnamed roads
|
||||||
|
- Emit new-name on when changing fron unanmed road to named road
|
||||||
|
|
||||||
|
# 5.0.0
|
||||||
|
Changes with regard 5.0.0 RC2:
|
||||||
|
- API:
|
||||||
|
- if `geometry=geojson` is passed the resulting geometry can be a LineString or Point
|
||||||
|
depending on how many coordinates are present.
|
||||||
|
- the removal of the summary field was revered. for `steps=flase` the field will always be an empty string.
|
||||||
|
|
||||||
|
Changes with regard to 4.9.1:
|
||||||
|
- API:
|
||||||
|
- BREAKING: Complete rewrite of the HTTP and library API. See detailed documentation in the wiki.
|
||||||
|
- BREAKING: The default coordinate order is now `longitude, latidue`. Exception: Polyline geometry
|
||||||
|
which follow the original Google specification of `latitdue, longitude`.
|
||||||
|
- BREAKING: Polyline geometries now use precision 5, instead of previously 6
|
||||||
|
- BREAKING: Removed GPX support
|
||||||
|
- New service `tile` which serves debug vector tiles of the road network
|
||||||
|
- Completely new engine for guidance generation:
|
||||||
|
- Support for highway ramps
|
||||||
|
- Support for different intersection types (end of street, forks, merges)
|
||||||
|
- Instruction post-processing to merge unimportant instructions
|
||||||
|
- Improved handling of roundabouts
|
||||||
|
|
||||||
|
- Tools:
|
||||||
|
- BREAKING: Renamed osrm-prepare to osrm-contract
|
||||||
|
- BREAKING: Removes profiles from osrm-contract, only needed in osrm-extract.
|
||||||
|
- Abort processing in osrm-extract if there are no snappable edges remaining.
|
||||||
|
- Added .properties file to osrm-extract ouput.
|
||||||
|
- Enables the use of multiple segment-speed-files on the osrm-contract command line
|
||||||
|
|
||||||
|
- Profile changes:
|
||||||
|
- Remove movable bridge mode
|
||||||
|
- Add `maxspeed=none` tag to car profile.
|
||||||
|
- A `side_road` tag support for the OSRM car profile.
|
||||||
|
|
||||||
|
- Fixes:
|
||||||
|
- Issue #2150: Prevents routing over delivery ways and nodes
|
||||||
|
- Issue #1972: Provide uninstall target
|
||||||
|
- Issue #2072: Disable alternatives by default and if core factor < 1.0
|
||||||
|
- Issue #1999: Fix unpacking for self-loop nodes not in core.
|
||||||
|
|
||||||
|
- Infrastructure:
|
||||||
|
- Cucumber test suit is now based on cucumber-js, removes Ruby as dependency
|
||||||
|
- Updated to mapbox/variant v1.1
|
||||||
|
- Updated to libosmium v2.6.1
|
||||||
|
- Remove GeoJSON based debugging output, replaced by debug tiles
|
||||||
|
|
||||||
|
|
||||||
|
# 5.0.0 RC2
|
||||||
|
- Profiles:
|
||||||
|
- `properties.allow_uturns_at_via` -> `properties.continue_straight_at_waypoint` (value is inverted!)
|
||||||
|
- API:
|
||||||
|
- Removed summary from legs property
|
||||||
|
- Disable steps and alternatives by default
|
||||||
|
- Fix `code` field: 'ok' -> 'Ok'
|
||||||
|
- Allow 4.json and 4.3.json format
|
||||||
|
- Conform to v5 spec and support "unlimited" as radiuses value.
|
||||||
|
- `uturns` parameter was replaced by `continue_straight` (value is inverted!)
|
||||||
|
- Features:
|
||||||
|
- Report progress for gennerating edge expanded edges in the edge based graph factory
|
||||||
|
- Add maxspeed=none tag to car profile.
|
||||||
|
- Optimize StaticRTree code: speedup 2x (to RC1)
|
||||||
|
- Optimize DouglasPeucker code: speedup 10x (to RC1)
|
||||||
|
- Optimize WebMercator projection: speedup 2x (to RC1)
|
||||||
|
- Bugs:
|
||||||
|
- #2195: Resolves issues with multiple includedirs in pkg-config file
|
||||||
|
- #2219: Internal server error when using the match plugin
|
||||||
|
- #2027: basename -> filename
|
||||||
|
- #2168: Report correct position where parsing failed
|
||||||
|
- #2036: Add license to storage and storage config exposed in public API
|
||||||
|
- Fix uturn detection in match plugin
|
||||||
|
- Add missing -lz to fix linking of server-tests
|
||||||
|
|
||||||
|
# 5.0.0 RC1
|
||||||
|
- Renamed osrm-prepare into osrm-contract
|
||||||
|
- osrm-contract does not need a profile parameter anymore
|
||||||
|
- New public HTTP API, find documentation [here](https://github.com/Project-OSRM/osrm-backend/wiki/New-Server-api)
|
||||||
|
- POST support is discontinued, please use library bindings for more complex requests
|
||||||
|
- Removed timestamp plugin
|
||||||
|
- Coordinate order is now Longitude,Latitude
|
||||||
|
- Cucumber tests now based on Javascript (run with `npm test`)
|
||||||
|
- Profile API changed:
|
||||||
|
- `forward_mode` and `backward_mode` now need to be selected from a pre-defined list
|
||||||
|
- Global profile properties are now stored in a global `properties` element. This includes:
|
||||||
|
- `properties.traffic_signal_penalty`
|
||||||
|
- `properties.use_turn_restrictions`
|
||||||
|
- `properties.u_turn_penalty`
|
||||||
|
- `properties.allow_u_turn_at_via`
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,500 @@
|
|||||||
|
cmake_minimum_required(VERSION 2.8.11)
|
||||||
|
# we depend on 2.8.11 introducing target_include_directories
|
||||||
|
|
||||||
|
if(CMAKE_CURRENT_SOURCE_DIR STREQUAL CMAKE_CURRENT_BINARY_DIR AND NOT MSVC_IDE)
|
||||||
|
message(FATAL_ERROR "In-source builds are not allowed.
|
||||||
|
Please create a directory and run cmake from there, passing the path to this source directory as the last argument.
|
||||||
|
This process created the file `CMakeCache.txt' and the directory `CMakeFiles'. Please delete them.")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
project(OSRM C CXX)
|
||||||
|
set(OSRM_VERSION_MAJOR 5)
|
||||||
|
set(OSRM_VERSION_MINOR 3)
|
||||||
|
set(OSRM_VERSION_PATCH 3)
|
||||||
|
|
||||||
|
# these two functions build up custom variables:
|
||||||
|
# OSRM_INCLUDE_PATHS and OSRM_DEFINES
|
||||||
|
# These variables we want to pass to
|
||||||
|
# include_directories and add_definitions for both
|
||||||
|
# this build and for sharing externally via pkg-config
|
||||||
|
|
||||||
|
function(add_dependency_includes includes)
|
||||||
|
list(APPEND OSRM_INCLUDE_PATHS "${includes}")
|
||||||
|
set(OSRM_INCLUDE_PATHS "${OSRM_INCLUDE_PATHS}" PARENT_SCOPE)
|
||||||
|
endfunction(add_dependency_includes)
|
||||||
|
|
||||||
|
function(add_dependency_defines defines)
|
||||||
|
list(APPEND OSRM_DEFINES "${defines}")
|
||||||
|
set(OSRM_DEFINES "${OSRM_DEFINES}" PARENT_SCOPE)
|
||||||
|
endfunction(add_dependency_defines)
|
||||||
|
|
||||||
|
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||||
|
include(CheckCXXCompilerFlag)
|
||||||
|
include(FindPackageHandleStandardArgs)
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||||
|
|
||||||
|
set(bitness 32)
|
||||||
|
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||||
|
set(bitness 64)
|
||||||
|
message(STATUS "Building on a 64 bit system")
|
||||||
|
else()
|
||||||
|
message(STATUS "Building on a 32 bit system")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(WIN32 AND MSVC_VERSION LESS 1900)
|
||||||
|
message(FATAL_ERROR "Building with Microsoft compiler needs Latest Visual Studio 2015 (Community or better)")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
option(ENABLE_CCACHE "Speed up incremental rebuilds via ccache" ON)
|
||||||
|
option(ENABLE_JSON_LOGGING "Adds additional JSON debug logging to the response" OFF)
|
||||||
|
option(BUILD_TOOLS "Build OSRM tools" OFF)
|
||||||
|
option(BUILD_COMPONENTS "Build osrm-components" OFF)
|
||||||
|
option(ENABLE_ASSERTIONS OFF)
|
||||||
|
option(COVERAGE OFF)
|
||||||
|
option(SANITIZER OFF)
|
||||||
|
option(ENABLE_LTO "Use LTO if available" ON)
|
||||||
|
|
||||||
|
include_directories(BEFORE ${CMAKE_CURRENT_BINARY_DIR}/include/)
|
||||||
|
include_directories(BEFORE ${CMAKE_CURRENT_SOURCE_DIR}/include/)
|
||||||
|
include_directories(SYSTEM ${CMAKE_CURRENT_SOURCE_DIR}/third_party/)
|
||||||
|
|
||||||
|
add_custom_target(FingerPrintConfigure ALL ${CMAKE_COMMAND}
|
||||||
|
"-DOUTPUT_DIR=${CMAKE_CURRENT_BINARY_DIR}"
|
||||||
|
"-DSOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}"
|
||||||
|
-P "${CMAKE_CURRENT_SOURCE_DIR}/cmake/FingerPrint-Config.cmake"
|
||||||
|
COMMENT "Configuring revision fingerprint"
|
||||||
|
VERBATIM)
|
||||||
|
|
||||||
|
set(BOOST_COMPONENTS date_time filesystem iostreams program_options regex system thread)
|
||||||
|
|
||||||
|
configure_file(
|
||||||
|
${CMAKE_CURRENT_SOURCE_DIR}/include/util/version.hpp.in
|
||||||
|
${CMAKE_CURRENT_BINARY_DIR}/include/util/version.hpp
|
||||||
|
)
|
||||||
|
file(GLOB UtilGlob src/util/*.cpp src/util/*/*.cpp)
|
||||||
|
file(GLOB ExtractorGlob src/extractor/*.cpp src/extractor/*/*.cpp)
|
||||||
|
file(GLOB ContractorGlob src/contractor/*.cpp)
|
||||||
|
file(GLOB StorageGlob src/storage/*.cpp)
|
||||||
|
file(GLOB ServerGlob src/server/*.cpp src/server/**/*.cpp)
|
||||||
|
file(GLOB EngineGlob src/engine/*.cpp src/engine/**/*.cpp)
|
||||||
|
|
||||||
|
add_library(UTIL OBJECT ${UtilGlob})
|
||||||
|
add_library(EXTRACTOR OBJECT ${ExtractorGlob})
|
||||||
|
add_library(CONTRACTOR OBJECT ${ContractorGlob})
|
||||||
|
add_library(STORAGE OBJECT ${StorageGlob})
|
||||||
|
add_library(ENGINE OBJECT ${EngineGlob})
|
||||||
|
add_library(SERVER OBJECT ${ServerGlob})
|
||||||
|
|
||||||
|
add_dependencies(UTIL FingerPrintConfigure)
|
||||||
|
set_target_properties(UTIL PROPERTIES LINKER_LANGUAGE CXX)
|
||||||
|
|
||||||
|
add_executable(osrm-extract src/tools/extract.cpp)
|
||||||
|
add_executable(osrm-contract src/tools/contract.cpp)
|
||||||
|
add_executable(osrm-routed src/tools/routed.cpp $<TARGET_OBJECTS:SERVER> $<TARGET_OBJECTS:UTIL>)
|
||||||
|
add_executable(osrm-datastore src/tools/store.cpp $<TARGET_OBJECTS:UTIL>)
|
||||||
|
add_library(osrm src/osrm/osrm.cpp $<TARGET_OBJECTS:ENGINE> $<TARGET_OBJECTS:UTIL> $<TARGET_OBJECTS:STORAGE>)
|
||||||
|
add_library(osrm_extract $<TARGET_OBJECTS:EXTRACTOR> $<TARGET_OBJECTS:UTIL>)
|
||||||
|
add_library(osrm_contract $<TARGET_OBJECTS:CONTRACTOR> $<TARGET_OBJECTS:UTIL>)
|
||||||
|
add_library(osrm_store $<TARGET_OBJECTS:STORAGE> $<TARGET_OBJECTS:UTIL>)
|
||||||
|
|
||||||
|
# Check the release mode
|
||||||
|
if(NOT CMAKE_BUILD_TYPE MATCHES Debug)
|
||||||
|
set(CMAKE_BUILD_TYPE Release)
|
||||||
|
endif()
|
||||||
|
if(CMAKE_BUILD_TYPE MATCHES Debug)
|
||||||
|
message(STATUS "Configuring OSRM in debug mode")
|
||||||
|
set(ENABLE_ASSERTIONS ON)
|
||||||
|
if(NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
|
||||||
|
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-inline -fno-omit-frame-pointer")
|
||||||
|
|
||||||
|
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Og -ggdb")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if(CMAKE_BUILD_TYPE MATCHES Release)
|
||||||
|
message(STATUS "Configuring OSRM in release mode")
|
||||||
|
# Check if LTO is available
|
||||||
|
check_cxx_compiler_flag("-flto" LTO_AVAILABLE)
|
||||||
|
if(ENABLE_LTO AND LTO_AVAILABLE)
|
||||||
|
set(OLD_CXX_FLAGS ${CMAKE_CXX_FLAGS})
|
||||||
|
# GCC in addition allows parallelizing LTO
|
||||||
|
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
|
||||||
|
include(ProcessorCount)
|
||||||
|
ProcessorCount(NPROC)
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto=${NPROC}")
|
||||||
|
else()
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto")
|
||||||
|
endif()
|
||||||
|
set(CHECK_LTO_SRC "int main(){return 0;}")
|
||||||
|
check_cxx_source_compiles("${CHECK_LTO_SRC}" LTO_WORKS)
|
||||||
|
if(LTO_WORKS)
|
||||||
|
message(STATUS "LTO working")
|
||||||
|
else()
|
||||||
|
message(STATUS "LTO broken")
|
||||||
|
set(CMAKE_CXX_FLAGS "${OLD_CXX_FLAGS}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Since gcc 4.9 the LTO format is non-standart ('slim'), so we need to use the build-in tools
|
||||||
|
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND
|
||||||
|
NOT "${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS "4.9.0" AND NOT MINGW)
|
||||||
|
message(STATUS "Using gcc specific binutils for LTO.")
|
||||||
|
set(CMAKE_AR "/usr/bin/gcc-ar")
|
||||||
|
set(CMAKE_RANLIB "/usr/bin/gcc-ranlib")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU" AND "${CMAKE_CXX_COMPILER_VERSION}" VERSION_LESS "4.9.0")
|
||||||
|
message(STATUS "Disabling LTO on GCC < 4.9.0 since it is broken, see: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=57038")
|
||||||
|
set(CMAKE_CXX_FLAGS "${OLD_CXX_FLAGS}")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
set(MAYBE_COVERAGE_LIBRARIES "")
|
||||||
|
if (COVERAGE)
|
||||||
|
if (NOT CMAKE_BUILD_TYPE MATCHES "Debug")
|
||||||
|
message(ERROR "COVERAGE=ON only make sense with a Debug build")
|
||||||
|
endif()
|
||||||
|
message(INFO "Enabling coverage")
|
||||||
|
set(MAYBE_COVERAGE_LIBRARIES "gcov")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftest-coverage -fprofile-arcs")
|
||||||
|
endif()
|
||||||
|
if (SANITIZER)
|
||||||
|
if (NOT CMAKE_BUILD_TYPE MATCHES "Debug")
|
||||||
|
message(ERROR "SANITIZER=ON only make sense with a Debug build")
|
||||||
|
endif()
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fsanitize=address")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Configuring compilers
|
||||||
|
if(${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wuninitialized -Wunreachable-code -Wstrict-overflow=2 -D_FORTIFY_SOURCE=2 -fPIC -fcolor-diagnostics")
|
||||||
|
elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU")
|
||||||
|
set(COLOR_FLAG "-fdiagnostics-color=auto")
|
||||||
|
check_cxx_compiler_flag("-fdiagnostics-color=auto" HAS_COLOR_FLAG)
|
||||||
|
if(NOT HAS_COLOR_FLAG)
|
||||||
|
set(COLOR_FLAG "")
|
||||||
|
endif()
|
||||||
|
# using GCC
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -pedantic -Wuninitialized -Wunreachable-code -Wstrict-overflow=1 -D_FORTIFY_SOURCE=2 ${COLOR_FLAG} -fPIC")
|
||||||
|
if(WIN32) # using mingw
|
||||||
|
add_dependency_defines(-DWIN32)
|
||||||
|
set(OPTIONAL_SOCKET_LIBS ws2_32 wsock32)
|
||||||
|
endif()
|
||||||
|
elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "Intel")
|
||||||
|
# using Intel C++
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -static-intel -wd10237 -Wall -ipo -fPIC")
|
||||||
|
elseif(${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
|
||||||
|
# using Visual Studio C++
|
||||||
|
set(BOOST_COMPONENTS ${BOOST_COMPONENTS} date_time chrono zlib)
|
||||||
|
add_dependency_defines(-DBOOST_LIB_DIAGNOSTIC)
|
||||||
|
add_dependency_defines(-D_CRT_SECURE_NO_WARNINGS)
|
||||||
|
add_dependency_defines(-DNOMINMAX) # avoid min and max macros that can break compilation
|
||||||
|
add_dependency_defines(-D_USE_MATH_DEFINES) #needed for M_PI with cmath.h
|
||||||
|
add_dependency_defines(-D_WIN32_WINNT=0x0501)
|
||||||
|
add_dependency_defines(-DXML_STATIC)
|
||||||
|
find_library(ws2_32_LIBRARY_PATH ws2_32)
|
||||||
|
target_link_libraries(osrm-extract wsock32 ws2_32)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Configuring linker
|
||||||
|
execute_process(COMMAND ${CMAKE_CXX_COMPILER} "-Wl,--version" ERROR_QUIET OUTPUT_VARIABLE LINKER_VERSION)
|
||||||
|
# For ld.gold and ld.bfs (the GNU linkers) we optimize hard
|
||||||
|
if("${LINKER_VERSION}" MATCHES "GNU gold" OR "${LINKER_VERSION}" MATCHES "GNU ld")
|
||||||
|
message(STATUS "Setting linker optimizations")
|
||||||
|
if(NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
|
||||||
|
# Tell compiler to put every function in separate section, linker can then match sections and functions
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ffunction-sections -fdata-sections")
|
||||||
|
# Tell linker to do dead code and data eminination during link time discarding sections
|
||||||
|
set(LINKER_FLAGS "${LINKER_FLAGS} -Wl,--gc-sections")
|
||||||
|
endif()
|
||||||
|
# Default linker optimization flags
|
||||||
|
set(LINKER_FLAGS "${LINKER_FLAGS} -Wl,-O1 -Wl,--hash-style=gnu -Wl,--sort-common")
|
||||||
|
else()
|
||||||
|
message(STATUS "Using unknown linker, not setting linker optimizations")
|
||||||
|
endif ()
|
||||||
|
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} ${LINKER_FLAGS}")
|
||||||
|
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} ${LINKER_FLAGS}")
|
||||||
|
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} ${LINKER_FLAGS}")
|
||||||
|
|
||||||
|
# Activate C++11
|
||||||
|
if(NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Configuring other platform dependencies
|
||||||
|
if(APPLE)
|
||||||
|
set(CMAKE_OSX_ARCHITECTURES "x86_64")
|
||||||
|
message(STATUS "Set Architecture to x64 on OS X")
|
||||||
|
exec_program(uname ARGS -v OUTPUT_VARIABLE DARWIN_VERSION)
|
||||||
|
string(REGEX MATCH "[0-9]+" DARWIN_VERSION ${DARWIN_VERSION})
|
||||||
|
if(OSXLIBSTD)
|
||||||
|
message(STATUS "linking against ${OSXLIBSTD}")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=${OSXLIBSTD}")
|
||||||
|
elseif(DARWIN_VERSION GREATER 12)
|
||||||
|
message(STATUS "linking against libc++")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(UNIX AND NOT APPLE)
|
||||||
|
set(MAYBE_RT_LIBRARY rt)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/third_party/libosmium/cmake")
|
||||||
|
set(OSMIUM_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/third_party/libosmium/include")
|
||||||
|
find_package(Osmium REQUIRED COMPONENTS io)
|
||||||
|
add_dependency_includes(${OSMIUM_INCLUDE_DIR})
|
||||||
|
|
||||||
|
|
||||||
|
find_package(Boost 1.49.0 REQUIRED COMPONENTS ${BOOST_COMPONENTS})
|
||||||
|
|
||||||
|
# collect a subset of the boost libraries needed
|
||||||
|
# by libosrm
|
||||||
|
foreach(lib ${Boost_LIBRARIES})
|
||||||
|
if(NOT WIN32)
|
||||||
|
if(lib MATCHES filesystem OR lib MATCHES thread OR lib MATCHES iostreams OR lib MATCHES system)
|
||||||
|
list(APPEND BOOST_ENGINE_LIBRARIES "${lib}")
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
list(APPEND BOOST_ENGINE_LIBRARIES "${lib}")
|
||||||
|
endif()
|
||||||
|
endforeach(lib)
|
||||||
|
|
||||||
|
if(NOT WIN32 AND NOT Boost_USE_STATIC_LIBS)
|
||||||
|
add_dependency_defines(-DBOOST_TEST_DYN_LINK)
|
||||||
|
endif()
|
||||||
|
add_dependency_defines(-DBOOST_SPIRIT_USE_PHOENIX_V3)
|
||||||
|
add_dependency_defines(-DBOOST_RESULT_OF_USE_DECLTYPE)
|
||||||
|
add_dependency_defines(-DBOOST_FILESYSTEM_NO_DEPRECATED)
|
||||||
|
add_dependency_includes(${Boost_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
find_package(Threads REQUIRED)
|
||||||
|
|
||||||
|
find_package(TBB REQUIRED)
|
||||||
|
add_dependency_includes(${TBB_INCLUDE_DIR})
|
||||||
|
if(WIN32 AND CMAKE_BUILD_TYPE MATCHES Debug)
|
||||||
|
set(TBB_LIBRARIES ${TBB_DEBUG_LIBRARIES})
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package(Luabind REQUIRED)
|
||||||
|
include(check_luabind)
|
||||||
|
add_dependency_includes(${LUABIND_INCLUDE_DIR})
|
||||||
|
|
||||||
|
set(USED_LUA_LIBRARIES ${LUA_LIBRARY})
|
||||||
|
if(LUAJIT_FOUND)
|
||||||
|
set(USED_LUA_LIBRARIES, LUAJIT_LIBRARIES)
|
||||||
|
endif()
|
||||||
|
add_dependency_includes(${LUA_INCLUDE_DIR})
|
||||||
|
|
||||||
|
find_package(EXPAT REQUIRED)
|
||||||
|
add_dependency_includes(${EXPAT_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
find_package(STXXL REQUIRED)
|
||||||
|
add_dependency_includes(${STXXL_INCLUDE_DIR})
|
||||||
|
|
||||||
|
set(OpenMP_FIND_QUIETLY ON)
|
||||||
|
find_package(OpenMP)
|
||||||
|
if(OPENMP_FOUND)
|
||||||
|
message(STATUS "OpenMP support found. Linking just in case for stxxl")
|
||||||
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
|
||||||
|
endif()
|
||||||
|
|
||||||
|
find_package(BZip2 REQUIRED)
|
||||||
|
add_dependency_includes(${BZIP2_INCLUDE_DIR})
|
||||||
|
|
||||||
|
find_package(ZLIB REQUIRED)
|
||||||
|
add_dependency_includes(${ZLIB_INCLUDE_DIRS})
|
||||||
|
|
||||||
|
if (ENABLE_JSON_LOGGING)
|
||||||
|
message(STATUS "Enabling json logging")
|
||||||
|
add_dependency_defines(-DENABLE_JSON_LOGGING)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
add_definitions(${OSRM_DEFINES})
|
||||||
|
include_directories(SYSTEM ${OSRM_INCLUDE_PATHS})
|
||||||
|
|
||||||
|
# Binaries
|
||||||
|
target_link_libraries(osrm-datastore osrm_store ${Boost_LIBRARIES})
|
||||||
|
target_link_libraries(osrm-extract osrm_extract ${Boost_LIBRARIES})
|
||||||
|
target_link_libraries(osrm-contract ${Boost_LIBRARIES} ${TBB_LIBRARIES} osrm_contract)
|
||||||
|
target_link_libraries(osrm-routed osrm ${Boost_LIBRARIES} ${OPTIONAL_SOCKET_LIBS} ${ZLIB_LIBRARY})
|
||||||
|
|
||||||
|
set(EXTRACTOR_LIBRARIES
|
||||||
|
${BZIP2_LIBRARIES}
|
||||||
|
${Boost_LIBRARIES}
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
${EXPAT_LIBRARIES}
|
||||||
|
${LUABIND_LIBRARY}
|
||||||
|
${USED_LUA_LIBRARIES}
|
||||||
|
${OSMIUM_LIBRARIES}
|
||||||
|
${STXXL_LIBRARY}
|
||||||
|
${TBB_LIBRARIES}
|
||||||
|
${ZLIB_LIBRARY}
|
||||||
|
${MAYBE_COVERAGE_LIBRARIES})
|
||||||
|
set(CONTRACTOR_LIBRARIES
|
||||||
|
${Boost_LIBRARIES}
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
${LUABIND_LIBRARY}
|
||||||
|
${USED_LUA_LIBRARIES}
|
||||||
|
${STXXL_LIBRARY}
|
||||||
|
${TBB_LIBRARIES}
|
||||||
|
${MAYBE_RT_LIBRARY}
|
||||||
|
${MAYBE_COVERAGE_LIBRARIES})
|
||||||
|
set(ENGINE_LIBRARIES
|
||||||
|
${BOOST_ENGINE_LIBRARIES}
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
${TBB_LIBRARIES}
|
||||||
|
${MAYBE_RT_LIBRARY}
|
||||||
|
${MAYBE_COVERAGE_LIBRARIES}
|
||||||
|
${ZLIB_LIBRARY})
|
||||||
|
set(STORAGE_LIBRARIES
|
||||||
|
${Boost_LIBRARIES}
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
${TBB_LIBRARIES}
|
||||||
|
${MAYBE_RT_LIBRARY}
|
||||||
|
${MAYBE_COVERAGE_LIBRARIES})
|
||||||
|
set(UTIL_LIBRARIES
|
||||||
|
${Boost_LIBRARIES}
|
||||||
|
${CMAKE_THREAD_LIBS_INIT}
|
||||||
|
${STXXL_LIBRARY}
|
||||||
|
${TBB_LIBRARIES}
|
||||||
|
${MAYBE_COVERAGE_LIBRARIES})
|
||||||
|
# Libraries
|
||||||
|
target_link_libraries(osrm ${ENGINE_LIBRARIES})
|
||||||
|
target_link_libraries(osrm_contract ${CONTRACTOR_LIBRARIES})
|
||||||
|
target_link_libraries(osrm_extract ${EXTRACTOR_LIBRARIES})
|
||||||
|
target_link_libraries(osrm_store ${STORAGE_LIBRARIES})
|
||||||
|
|
||||||
|
if(BUILD_COMPONENTS)
|
||||||
|
find_package(GDAL)
|
||||||
|
if(GDAL_FOUND)
|
||||||
|
add_executable(osrm-components src/tools/components.cpp $<TARGET_OBJECTS:UTIL>)
|
||||||
|
target_link_libraries(osrm-components ${TBB_LIBRARIES})
|
||||||
|
include_directories(SYSTEM ${GDAL_INCLUDE_DIR})
|
||||||
|
target_link_libraries(osrm-components ${GDAL_LIBRARIES} ${Boost_LIBRARIES})
|
||||||
|
install(TARGETS osrm-components DESTINATION bin)
|
||||||
|
else()
|
||||||
|
message(WARNING "libgdal and/or development headers not found")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if(BUILD_TOOLS)
|
||||||
|
message(STATUS "Activating OSRM internal tools")
|
||||||
|
add_executable(osrm-io-benchmark src/tools/io-benchmark.cpp $<TARGET_OBJECTS:UTIL>)
|
||||||
|
target_link_libraries(osrm-io-benchmark ${Boost_LIBRARIES})
|
||||||
|
add_executable(osrm-unlock-all src/tools/unlock_all_mutexes.cpp $<TARGET_OBJECTS:UTIL>)
|
||||||
|
target_link_libraries(osrm-unlock-all ${Boost_LIBRARIES} ${CMAKE_THREAD_LIBS_INIT})
|
||||||
|
if(UNIX AND NOT APPLE)
|
||||||
|
target_link_libraries(osrm-unlock-all rt)
|
||||||
|
endif()
|
||||||
|
add_executable(osrm-springclean src/tools/springclean.cpp $<TARGET_OBJECTS:UTIL>)
|
||||||
|
target_link_libraries(osrm-springclean ${Boost_LIBRARIES})
|
||||||
|
|
||||||
|
install(TARGETS osrm-io-benchmark DESTINATION bin)
|
||||||
|
install(TARGETS osrm-unlock-all DESTINATION bin)
|
||||||
|
install(TARGETS osrm-springclean DESTINATION bin)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (ENABLE_ASSERTIONS)
|
||||||
|
message(STATUS "Enabling assertions")
|
||||||
|
add_definitions(-DBOOST_ENABLE_ASSERT_HANDLER)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# Add RPATH info to executables so that when they are run after being installed
|
||||||
|
# (i.e., from /usr/local/bin/) the linker can find library dependencies. For
|
||||||
|
# more info see http://www.cmake.org/Wiki/CMake_RPATH_handling
|
||||||
|
set_property(TARGET osrm-extract PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||||
|
set_property(TARGET osrm-contract PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||||
|
set_property(TARGET osrm-datastore PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||||
|
set_property(TARGET osrm-routed PROPERTY INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||||
|
|
||||||
|
file(GLOB VariantGlob third_party/variant/*.hpp)
|
||||||
|
file(GLOB LibraryGlob include/osrm/*.hpp)
|
||||||
|
file(GLOB ParametersGlob include/engine/api/*_parameters.hpp)
|
||||||
|
set(EngineHeader include/engine/status.hpp include/engine/engine_config.hpp include/engine/hint.hpp include/engine/bearing.hpp include/engine/phantom_node.hpp)
|
||||||
|
set(UtilHeader include/util/coordinate.hpp include/util/json_container.hpp include/util/typedefs.hpp include/util/strong_typedef.hpp)
|
||||||
|
set(ExtractorHeader include/extractor/extractor.hpp include/extractor/extractor_config.hpp include/extractor/travel_mode.hpp)
|
||||||
|
set(ContractorHeader include/contractor/contractor.hpp include/contractor/contractor_config.hpp)
|
||||||
|
set(StorageHeader include/storage/storage.hpp include/storage/storage_config.hpp)
|
||||||
|
install(FILES ${EngineHeader} DESTINATION include/osrm/engine)
|
||||||
|
install(FILES ${UtilHeader} DESTINATION include/osrm/util)
|
||||||
|
install(FILES ${StorageHeader} DESTINATION include/osrm/storage)
|
||||||
|
install(FILES ${ExtractorHeader} DESTINATION include/osrm/extractor)
|
||||||
|
install(FILES ${ContractorHeader} DESTINATION include/osrm/contractor)
|
||||||
|
install(FILES ${LibraryGlob} DESTINATION include/osrm)
|
||||||
|
install(FILES ${ParametersGlob} DESTINATION include/osrm/engine/api)
|
||||||
|
install(FILES ${VariantGlob} DESTINATION include/variant)
|
||||||
|
install(TARGETS osrm-extract DESTINATION bin)
|
||||||
|
install(TARGETS osrm-contract DESTINATION bin)
|
||||||
|
install(TARGETS osrm-datastore DESTINATION bin)
|
||||||
|
install(TARGETS osrm-routed DESTINATION bin)
|
||||||
|
install(TARGETS osrm DESTINATION lib)
|
||||||
|
install(TARGETS osrm_extract DESTINATION lib)
|
||||||
|
install(TARGETS osrm_contract DESTINATION lib)
|
||||||
|
install(TARGETS osrm_store DESTINATION lib)
|
||||||
|
|
||||||
|
list(GET ENGINE_LIBRARIES 1 ENGINE_LIBRARY_FIRST)
|
||||||
|
foreach(lib ${ENGINE_LIBRARIES})
|
||||||
|
get_filename_component(ENGINE_LIBRARY_PATH "${ENGINE_LIBRARY_FIRST}" PATH)
|
||||||
|
get_filename_component(ENGINE_LIBRARY_NAME "${lib}" NAME_WE)
|
||||||
|
string(REPLACE "lib" "" ENGINE_LIBRARY_NAME ${ENGINE_LIBRARY_NAME})
|
||||||
|
string(REPLACE "-l" "" ENGINE_LIBRARY_NAME ${ENGINE_LIBRARY_NAME})
|
||||||
|
set(ENGINE_LIBRARY_LISTING "${ENGINE_LIBRARY_LISTING} -L${ENGINE_LIBRARY_PATH} -l${ENGINE_LIBRARY_NAME}")
|
||||||
|
endforeach()
|
||||||
|
|
||||||
|
if(BUILD_DEBIAN_PACKAGE)
|
||||||
|
include(CPackDebianConfig)
|
||||||
|
include(CPack)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
function(JOIN VALUES GLUE OUTPUT)
|
||||||
|
string (REPLACE ";" "${GLUE}" _TMP_STR "${VALUES}")
|
||||||
|
set (${OUTPUT} "${_TMP_STR}" PARENT_SCOPE)
|
||||||
|
endfunction()
|
||||||
|
|
||||||
|
# Set up variables, then write to pkgconfig file
|
||||||
|
JOIN("${OSRM_DEFINES}" " " OSRM_DEFINES_STRING)
|
||||||
|
JOIN("-I${OSRM_INCLUDE_PATHS}" " -I" OSRM_INCLUDE_PATHS_STRING)
|
||||||
|
|
||||||
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/cmake/pkgconfig.in libosrm.pc @ONLY)
|
||||||
|
install(FILES ${PROJECT_BINARY_DIR}/libosrm.pc DESTINATION lib/pkgconfig)
|
||||||
|
|
||||||
|
# add a target to generate API documentation with Doxygen
|
||||||
|
find_package(Doxygen)
|
||||||
|
if(DOXYGEN_FOUND)
|
||||||
|
configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
|
||||||
|
add_custom_target(doc
|
||||||
|
${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
|
||||||
|
WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
|
||||||
|
COMMENT "Generating API documentation with Doxygen" VERBATIM
|
||||||
|
)
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# prefix compilation with ccache by default if available and on clang or gcc
|
||||||
|
if(ENABLE_CCACHE AND (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang" OR ${CMAKE_CXX_COMPILER_ID} STREQUAL "GNU"))
|
||||||
|
find_program(CCACHE_FOUND ccache)
|
||||||
|
if(CCACHE_FOUND)
|
||||||
|
message(STATUS "Using ccache to speed up incremental builds")
|
||||||
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
||||||
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
||||||
|
set(ENV{CCACHE_CPP2} "true")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
# uninstall target
|
||||||
|
configure_file(
|
||||||
|
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
|
||||||
|
"${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake"
|
||||||
|
IMMEDIATE @ONLY)
|
||||||
|
|
||||||
|
add_custom_target(uninstall
|
||||||
|
COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake/cmake_uninstall.cmake)
|
||||||
|
|
||||||
|
|
||||||
|
# Modular build system: each directory registered here provides its own CMakeLists.txt
|
||||||
|
add_subdirectory(unit_tests)
|
||||||
|
add_subdirectory(src/benchmarks)
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
# User
|
||||||
|
|
||||||
|
Before you open a new issue, please search for older ones that cover the same issue.
|
||||||
|
In general "me too" comments/issues are frowned upon.
|
||||||
|
You can add a :+1: emoji to the issue if you want to express interest in this.
|
||||||
|
|
||||||
|
# Developer
|
||||||
|
|
||||||
|
We use `clang-format` version `3.8` to consistently format the code base. There is a helper script under `scripts/format.sh`.
|
||||||
|
|
||||||
|
In general changes that affect the API and/or increase the memory consumption need to be discussed first.
|
||||||
|
Often we don't include changes that would increase the memory consumption a lot if they are not generally usable (e.g. elevation data is a good example).
|
||||||
|
|
||||||
|
## Pull Request
|
||||||
|
|
||||||
|
Every pull-request that changes the API needs to update the docs in `docs/http.md` and add an entry to `CHANGELOG.md`.
|
||||||
|
Breaking changes need to have a BREAKING prefix. See the [releasing documentation](docs/releasing.md) on how this affects the version.
|
||||||
|
|
||||||
|
Early feedback is also important.
|
||||||
|
You will see that a lot of the PR have tags like `[not ready]` or `[wip]`.
|
||||||
|
We like to open PRs as soon as we are starting to work on something to make it visible to the rest of the team.
|
||||||
|
If your work is going in entirely the wrong direction, there is a good chance someone will pick up on this before it is too late.
|
||||||
|
Everyone is encouraged to read PRs of other people and give feedback.
|
||||||
|
|
||||||
|
For every significant code change we require a pull request review before it is merged.
|
||||||
|
If your pull request modifies the API this need to be signed of by a team discussion.
|
||||||
|
This means you will need to find another member of the team with commit access and request a review of your pull request.
|
||||||
|
|
||||||
|
Once your pull request is reviewed you can merge it! If you don't have commit access, ping someone that has commit access.
|
||||||
|
If you do have commit access there are in general two accepted styles to merging:
|
||||||
|
|
||||||
|
1. Make sure the branch is up to date with `master`. Run `git rebase master` to find out.
|
||||||
|
2. Once that is ensured you can either:
|
||||||
|
- Click the nice green merge button (for a non-fast-forward merge)
|
||||||
|
- Merge by hand using a fast-forward merge
|
||||||
|
|
||||||
|
Which merge you prefer is up to personal preference. In general it is recommended to use fast-forward merges because it creates a history that is sequential and easier to understand.
|
||||||
|
|
||||||
|
# Maintainer
|
||||||
|
|
||||||
|
## Doing a release
|
||||||
|
|
||||||
|
There is an in-depth guide around how to push out a release once it is ready [here](docs/releasing.md).
|
||||||
|
|
||||||
|
## The API
|
||||||
|
|
||||||
|
Changes to the API need to be discussed and signed off by the team. Breaking changes even more so than additive changes.
|
||||||
|
|
||||||
|
## Milestones
|
||||||
|
|
||||||
|
If a pull request or an issue is applicable for the current or next milestone, depends on the target version number.
|
||||||
|
Since we use semantic versioning we restrict breaking changes to major releases.
|
||||||
|
After a Release Candidate is released we usually don't change the API anymore if it is not critical.
|
||||||
|
Bigger code changes after a RC was released should also be avoided.
|
||||||
|
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
PROJECT_NAME = "Project OSRM"
|
||||||
|
PROJECT_BRIEF = "Open Source Routing Machine"
|
||||||
|
BUILTIN_STL_SUPPORT = YES
|
||||||
|
|
||||||
|
EXTRACT_ALL = YES
|
||||||
|
EXTRACT_PRIVATE = YES
|
||||||
|
EXTRACT_PACKAGE = YES
|
||||||
|
EXTRACT_STATIC = YES
|
||||||
|
EXTRACT_LOCAL_CLASSES = YES
|
||||||
|
EXTRACT_ANON_NSPACES = YES
|
||||||
|
|
||||||
|
QUIET = YES
|
||||||
|
|
||||||
|
INPUT = @CMAKE_CURRENT_SOURCE_DIR@
|
||||||
|
USE_MDFILE_AS_MAINPAGE = @CMAKE_CURRENT_SOURCE_DIR@/README.md
|
||||||
|
FILE_PATTERNS = *.h *.hpp *.c *.cc *.cpp *.md
|
||||||
|
RECURSIVE = YES
|
||||||
|
|
||||||
|
EXCLUDE = @CMAKE_CURRENT_SOURCE_DIR@/third_party \
|
||||||
|
@CMAKE_CURRENT_SOURCE_DIR@/build \
|
||||||
|
@CMAKE_CURRENT_SOURCE_DIR@/node_modules \
|
||||||
|
@CMAKE_CURRENT_SOURCE_DIR@/unit_tests \
|
||||||
|
@CMAKE_CURRENT_SOURCE_DIR@/benchmarks \
|
||||||
|
@CMAKE_CURRENT_SOURCE_DIR@/features
|
||||||
|
|
||||||
|
SOURCE_BROWSER = YES
|
||||||
|
|
||||||
|
CLANG_ASSISTED_PARSING = NO
|
||||||
|
|
||||||
|
HTML_COLORSTYLE_HUE = 217
|
||||||
|
HTML_COLORSTYLE_SAT = 71
|
||||||
|
HTML_COLORSTYLE_GAMMA = 50
|
||||||
|
|
||||||
|
GENERATE_TREEVIEW = YES
|
||||||
|
|
||||||
|
HAVE_DOT = @DOXYGEN_DOT_FOUND@
|
||||||
|
CALL_GRAPH = YES
|
||||||
|
CALLER_GRAPH = YES
|
||||||
|
|
||||||
|
DOT_IMAGE_FORMAT = svg
|
||||||
|
INTERACTIVE_SVG = YES
|
||||||
|
DOT_GRAPH_MAX_NODES = 500
|
||||||
|
DOT_TRANSPARENT = YES
|
||||||
|
DOT_MULTI_TARGETS = YES
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
Copyright (c) 2016, Project OSRM contributors
|
||||||
|
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.
|
||||||
|
|
||||||
|
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 HOLDER 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.
|
||||||
@@ -1,72 +1,84 @@
|
|||||||
Overview
|
## About
|
||||||
--------
|
|
||||||
The repository provides a Leaflet [(1)] based web frontend to the Open Source Routing Machine (Project-OSRM [(2)]).
|
|
||||||
The frontend is implemented in Javascript.
|
|
||||||
Data is fetched from routing and geocoding servers using JSONP queries.
|
|
||||||
The website is XHTML 1.0 Strict compliant.
|
|
||||||
A deployed version of the the web frontend can be seen at [(3)].
|
|
||||||
|
|
||||||
|
The Open Source Routing Machine is a high performance routing engine written in C++11 designed to run on OpenStreetMap data.
|
||||||
|
|
||||||
Setup
|
## Current build status
|
||||||
-----
|
|
||||||
The frontend should work directly as provided.
|
|
||||||
Several settings - including the URL for the routing server and the geocoder server - can be specified in `OSRM.config.js`.
|
|
||||||
Different tile servers can be specified in `OSRM.Map.js`.
|
|
||||||
Note that the URL shortener used for generating route links only works with URLs pointing to the official Project-OSRM website.
|
|
||||||
|
|
||||||
|
| build config | status |
|
||||||
|
|:-------------|:-------|
|
||||||
|
| Linux | [](https://travis-ci.org/Project-OSRM/osrm-backend) |
|
||||||
|
| Windows | [](https://ci.appveyor.com/project/DennisOSRM/osrm-backend) |
|
||||||
|
| Coverage | [](https://codecov.io/gh/Project-OSRM/osrm-backend) |
|
||||||
|
|
||||||
Branches
|
## Building
|
||||||
--------
|
|
||||||
* The `master` branch will always point to the latest released version of the frontend.
|
|
||||||
* The `develop` branch should always point to a working version with new features and bugfixes (think of it as a nightly-build).
|
|
||||||
* Other branches contain various work in progress.
|
|
||||||
|
|
||||||
|
For instructions on how to [build](https://github.com/Project-OSRM/osrm-backend/wiki/Building-OSRM) and [run OSRM](https://github.com/Project-OSRM/osrm-backend/wiki/Running-OSRM), please consult [the Wiki](https://github.com/Project-OSRM/osrm-backend/wiki).
|
||||||
|
|
||||||
Bugtracking
|
To quickly try OSRM use our [free and daily updated online service](http://map.project-osrm.org)
|
||||||
-----------
|
|
||||||
Please use the OSRM-Project bug tracker [(4)] for submitting any bug reports or feature requests.
|
|
||||||
|
|
||||||
|
## Documentation
|
||||||
|
|
||||||
Contribute
|
### Full documentation
|
||||||
----------
|
|
||||||
If you like to contribute, simply fork the project and start coding.
|
|
||||||
It is best practice to create a new branch (from the current master) with a descriptive name for your contributions.
|
|
||||||
When you are done, send a pull request from that branch.
|
|
||||||
With this workflow, each pull request is isolated and can be easily merged.
|
|
||||||
|
|
||||||
|
- [osrm-routed HTTP API documentation](docs/http.md)
|
||||||
|
- [libosrm API documentation](docs/libosrm.md)
|
||||||
|
|
||||||
Integration into Project-OSRM repository
|
### Quick start
|
||||||
----------------------------------------
|
|
||||||
The Project-OSRM repository already contains the frontend repository as a submodule.
|
|
||||||
It will always point to the latest deployed version.
|
|
||||||
To successfully work a repository that contains submodules, use the following git commands (available in git 1.7.1+):
|
|
||||||
|
|
||||||
* `git clone --recursive`
|
Building OSRM assuming all dependencies are installed:
|
||||||
to clone a repository and the contained submodules
|
|
||||||
|
|
||||||
* `git pull && git submodule update`
|
```
|
||||||
to pull the latest version of the repository and update its submodules if required
|
mkdir -p build
|
||||||
|
cd build
|
||||||
|
cmake .. -DCMAKE_BUILD_TYPE=Release
|
||||||
|
cmake --build .
|
||||||
|
sudo cmake --build . --target install
|
||||||
|
```
|
||||||
|
|
||||||
Note that the frontend can also be checked out independently of the Project-OSRM repository.
|
Loading preparing a dataset and starting the server:
|
||||||
|
|
||||||
|
```
|
||||||
|
osrm-extract data.osm.pbf -p profiles/car.lua
|
||||||
|
osrm-contract data.osrm
|
||||||
|
osrm-routed data.osrm
|
||||||
|
```
|
||||||
|
|
||||||
Compatibility
|
Running a query on your local server:
|
||||||
-------------
|
|
||||||
The frontend has been tested with Firefox 3.0+, Internet Explorer 8+ and Chrome 18+.
|
|
||||||
Certain visuals like rounded corners or moving boxes will only show in newer browser versions.
|
|
||||||
But no actual functionality is affected by this.
|
|
||||||
Note that the frontend will not work with Internet Explorer 6 or 7.
|
|
||||||
|
|
||||||
|
```
|
||||||
|
curl http://127.0.0.1:5000/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true&alternatives=true
|
||||||
|
```
|
||||||
|
|
||||||
References
|
### Running a request against the Demo Server
|
||||||
----------
|
|
||||||
[(1)] Cloudmade Leaflet: http://leaflet.cloudmade.com/
|
|
||||||
[(2)] Project OSRM: http://project-osrm.org/
|
|
||||||
[(3)] Project OSRM Frontend: http://map.project-osrm.org/
|
|
||||||
[(4)] Project OSRM Bugtracker: https://github.com/DennisOSRM/Project-OSRM/issues/
|
|
||||||
|
|
||||||
|
First read the [API usage policy](https://github.com/Project-OSRM/osrm-backend/wiki/Api-usage-policy).
|
||||||
|
|
||||||
|
Then run simple query with instructions and alternatives on Berlin:
|
||||||
|
|
||||||
|
```
|
||||||
|
curl https://router.project-osrm.org/route/v1/driving/13.388860,52.517037;13.385983,52.496891?steps=true&alternatives=true
|
||||||
|
```
|
||||||
|
|
||||||
|
## References in publications
|
||||||
|
|
||||||
|
When using the code in a (scientific) publication, please cite
|
||||||
|
|
||||||
|
```
|
||||||
|
@inproceedings{luxen-vetter-2011,
|
||||||
|
author = {Luxen, Dennis and Vetter, Christian},
|
||||||
|
title = {Real-time routing with OpenStreetMap data},
|
||||||
|
booktitle = {Proceedings of the 19th ACM SIGSPATIAL International Conference on Advances in Geographic Information Systems},
|
||||||
|
series = {GIS '11},
|
||||||
|
year = {2011},
|
||||||
|
isbn = {978-1-4503-1031-4},
|
||||||
|
location = {Chicago, Illinois},
|
||||||
|
pages = {513--516},
|
||||||
|
numpages = {4},
|
||||||
|
url = {http://doi.acm.org/10.1145/2093973.2094062},
|
||||||
|
doi = {10.1145/2093973.2094062},
|
||||||
|
acmid = {2094062},
|
||||||
|
publisher = {ACM},
|
||||||
|
address = {New York, NY, USA},
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
[(1)]: http://leaflet.cloudmade.com/ "Cloudmade Leaflet"
|
|
||||||
[(2)]: http://project-osrm.org/ "Project OSRM"
|
|
||||||
[(3)]: http://map.project-osrm.org/ "Project-OSRM Frontend"
|
|
||||||
[(4)]: https://github.com/DennisOSRM/Project-OSRM/issues/ "Project-OSRM Bugtracker"
|
|
||||||
@@ -1,28 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM base class
|
|
||||||
// [has to be loaded before all other OSRM classes]
|
|
||||||
|
|
||||||
var OSRM = {};
|
|
||||||
OSRM.VERSION = '0.1.7';
|
|
||||||
OSRM.DATE = '120705';
|
|
||||||
OSRM.CONSTANTS = {};
|
|
||||||
OSRM.DEFAULTS = {};
|
|
||||||
OSRM.GLOBALS = {};
|
|
||||||
OSRM.G = OSRM.GLOBALS; // abbreviations
|
|
||||||
OSRM.C = OSRM.CONSTANTS;
|
|
||||||
@@ -1,98 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM config file
|
|
||||||
// [has to be loaded directly after OSRM.base]
|
|
||||||
|
|
||||||
OSRM.DEFAULTS = {
|
|
||||||
HOST_ROUTING_URL: 'http://router.project-osrm.org/viaroute',
|
|
||||||
HOST_SHORTENER_URL: 'http://map.project-osrm.org/shorten/',
|
|
||||||
HOST_TIMESTAMP_URL: 'http://router.project-osrm.org/timestamp',
|
|
||||||
HOST_GEOCODER_URL: 'http://nominatim.openstreetmap.org/search',
|
|
||||||
HOST_REVERSE_GEOCODER_URL: 'http://nominatim.openstreetmap.org/reverse',
|
|
||||||
WEBSITE_URL: document.URL.replace(/#*(\?.*|$)/i,""), // truncates URL before first ?, and removes tailing #
|
|
||||||
JSONP_TIMEOUT: 10000,
|
|
||||||
ZOOM_LEVEL: 14,
|
|
||||||
ONLOAD_ZOOM_LEVEL: 5,
|
|
||||||
ONLOAD_LATITUDE: 48.84,
|
|
||||||
ONLOAD_LONGITUDE: 10.10,
|
|
||||||
ONLOAD_SOURCE: "",
|
|
||||||
ONLOAD_TARGET: "",
|
|
||||||
HIGHLIGHT_ZOOM_LEVEL: 16,
|
|
||||||
DISTANCE_FORMAT: 0, // 0: km, 1: miles
|
|
||||||
GEOCODER_BOUNDS: '', // the world is not enough!
|
|
||||||
//GEOCODER_BOUNDS: '&bounded=1&viewbox=-27.0,72.0,46.0,36.0', // bounds for Europe
|
|
||||||
|
|
||||||
SHORTENER_PARAMETERS: '%url&jsonp=%jsonp',
|
|
||||||
SHORTENER_REPLY_PARAMETER: 'ShortURL',
|
|
||||||
|
|
||||||
LANGUAGE: "en",
|
|
||||||
LANUGAGE_ONDEMAND_RELOADING: true,
|
|
||||||
LANGUAGE_SUPPORTED: [
|
|
||||||
{encoding:"en", name:"English"},
|
|
||||||
{encoding:"de", name:"Deutsch"},
|
|
||||||
{encoding:"dk", name:"Dansk"},
|
|
||||||
{encoding:"es", name:"Español"},
|
|
||||||
{encoding:"fi", name:"Suomi"},
|
|
||||||
{encoding:"fr", name:"Français"},
|
|
||||||
{encoding:"it", name:"Italiano"},
|
|
||||||
{encoding:"lv", name:"Latviešu"},
|
|
||||||
{encoding:"pl", name:"Polski", culture:"en-US"},
|
|
||||||
{encoding:"ru", name:"Русский"}
|
|
||||||
],
|
|
||||||
|
|
||||||
TILE_SERVERS: [
|
|
||||||
{ display_name: 'osm.org',
|
|
||||||
url:'http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
|
|
||||||
attribution:'Map data © 2011 OpenStreetMap contributors, Imagery © 2011 Mapnik',
|
|
||||||
options:{maxZoom: 18}
|
|
||||||
},
|
|
||||||
{ display_name: 'osm.de',
|
|
||||||
url:'http://{s}.tile.openstreetmap.de/tiles/osmde/{z}/{x}/{y}.png',
|
|
||||||
attribution:'Map data © 2011 OpenStreetMap contributors, Imagery © 2011 Mapnik',
|
|
||||||
options:{maxZoom: 18}
|
|
||||||
},
|
|
||||||
{ display_name: 'MapQuest',
|
|
||||||
url:'http://otile{s}.mqcdn.com/tiles/1.0.0/osm/{z}/{x}/{y}.png',
|
|
||||||
attribution:'Map data © 2011 OpenStreetMap contributors, Imagery © 2011 MapQuest',
|
|
||||||
options:{maxZoom: 18, subdomains: '1234'}
|
|
||||||
},
|
|
||||||
{ display_name: 'CloudMade',
|
|
||||||
url:'http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/997/256/{z}/{x}/{y}.png',
|
|
||||||
attribution:'Map data © 2011 OpenStreetMap contributors, Imagery © 2011 CloudMade',
|
|
||||||
options:{maxZoom: 18}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
display_name: 'Bing Road',
|
|
||||||
apikey:'AjCb2f6Azv_xt9c6pl_xok96bgAYrXQNctnG4o07sTj4iS9N68Za4B3pRJyeCjGr', // please use your own apikey (http://msdn.microsoft.com/en-us/library/ff428642.aspx)
|
|
||||||
type:"Road",
|
|
||||||
options:{minZoom: 1},
|
|
||||||
bing:true,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
display_name: 'Bing Aerial',
|
|
||||||
apikey:'AjCb2f6Azv_xt9c6pl_xok96bgAYrXQNctnG4o07sTj4iS9N68Za4B3pRJyeCjGr', // please use your own apikey (http://msdn.microsoft.com/en-us/library/ff428642.aspx)
|
|
||||||
type:"Aerial",
|
|
||||||
options:{minZoom: 1},
|
|
||||||
bing:true,
|
|
||||||
}
|
|
||||||
],
|
|
||||||
|
|
||||||
MAINTENANCE: false,
|
|
||||||
MAINTENANCE_HEADER: "Scheduled Maintenance",
|
|
||||||
MAINTENANCE_TEXT: "The OSRM Website is down for a scheduled maintenance. Please be patient while required updates are performed. The site will be back online shortly.<br/><br/>In the meantime you may want to go out an map a friendly neighborhood near you...<br/><br/><br/>[OSRM]",
|
|
||||||
};
|
|
||||||
@@ -1,274 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM geocoding routines
|
|
||||||
// [geocoder query, management and display of geocoder results]
|
|
||||||
|
|
||||||
// some constants
|
|
||||||
OSRM.CONSTANTS.SOURCE_LABEL = "source";
|
|
||||||
OSRM.CONSTANTS.TARGET_LABEL = "target";
|
|
||||||
OSRM.CONSTANTS.VIA_LABEL = "via";
|
|
||||||
OSRM.CONSTANTS.DO_FALLBACK_TO_LAT_LNG = true;
|
|
||||||
|
|
||||||
|
|
||||||
OSRM.Geocoder = {
|
|
||||||
|
|
||||||
//[normal geocoding]
|
|
||||||
|
|
||||||
// process input request and call geocoder if needed
|
|
||||||
call: function(marker_id, query) {
|
|
||||||
if(query=="")
|
|
||||||
return;
|
|
||||||
|
|
||||||
// geo coordinates given -> directly draw results
|
|
||||||
if(query.match(/^\s*[-+]?[0-9]*\.?[0-9]+\s*[,;]\s*[-+]?[0-9]*\.?[0-9]+\s*$/)){
|
|
||||||
var coord = query.split(/[,;]/);
|
|
||||||
OSRM.Geocoder._onclickResult(marker_id, coord[0], coord[1]);
|
|
||||||
OSRM.Geocoder.updateAddress( marker_id );
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// build basic request for geocoder
|
|
||||||
var call = OSRM.DEFAULTS.HOST_GEOCODER_URL + "?format=json&json_callback=%jsonp" + OSRM.DEFAULTS.GEOCODER_BOUNDS + "&accept-language="+OSRM.Localization.current_language+"&limit=30&q=" + query;
|
|
||||||
// prioritize results in currently shown mapview
|
|
||||||
var bounds = OSRM.G.map.getBounds();
|
|
||||||
call += "&viewbox=" + bounds._southWest.lat + "," + bounds._northEast.lng + "," + bounds._northEast.lat + "," + bounds._southWest.lng;
|
|
||||||
OSRM.JSONP.call( call, OSRM.Geocoder._showResults, OSRM.Geocoder._showResults_Timeout, OSRM.DEFAULTS.JSONP_TIMEOUT, "geocoder_"+marker_id, {marker_id:marker_id,query:query} );
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// helper function for clicks on geocoder search results
|
|
||||||
_onclickResult: function(marker_id, lat, lon) {
|
|
||||||
var index;
|
|
||||||
if( marker_id == OSRM.C.SOURCE_LABEL )
|
|
||||||
index = OSRM.G.markers.setSource( new L.LatLng(lat, lon) );
|
|
||||||
else if( marker_id == OSRM.C.TARGET_LABEL )
|
|
||||||
index = OSRM.G.markers.setTarget( new L.LatLng(lat, lon) );
|
|
||||||
else
|
|
||||||
return;
|
|
||||||
|
|
||||||
OSRM.G.markers.route[index].show();
|
|
||||||
OSRM.G.markers.route[index].centerView();
|
|
||||||
if( OSRM.G.markers.route.length > 1 )
|
|
||||||
OSRM.Routing.getRoute();
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// process geocoder response
|
|
||||||
_showResults: function(response, parameters) {
|
|
||||||
if(!response){
|
|
||||||
OSRM.Geocoder._showResults_Empty(parameters);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(response.length == 0) {
|
|
||||||
OSRM.Geocoder._showResults_Empty(parameters);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// filter/sort inputs
|
|
||||||
var filtered_response = [];
|
|
||||||
for(var i=0; i < response.length; i++){
|
|
||||||
var result = response[i];
|
|
||||||
if( OSRM.Geocoder._filterResult( result ) )
|
|
||||||
continue;
|
|
||||||
filtered_response.push( result );
|
|
||||||
}
|
|
||||||
filtered_response.sort( OSRM.Geocoder._compareResults );
|
|
||||||
|
|
||||||
// show first result
|
|
||||||
OSRM.Geocoder._onclickResult(parameters.marker_id, filtered_response[0].lat, filtered_response[0].lon);
|
|
||||||
if( OSRM.G.markers.route.length > 1 ) // if a route is displayed, we don't need to show other possible geocoding results
|
|
||||||
return;
|
|
||||||
|
|
||||||
// show possible results for input
|
|
||||||
var html = "";
|
|
||||||
html += '<table class="results medium-font">';
|
|
||||||
for(var i=0; i < filtered_response.length; i++){
|
|
||||||
var result = filtered_response[i];
|
|
||||||
|
|
||||||
//odd or even ?
|
|
||||||
var rowstyle='results-body-odd';
|
|
||||||
if(i%2==0) { rowstyle='results-body-even'; }
|
|
||||||
|
|
||||||
html += '<tr class="'+rowstyle+'">';
|
|
||||||
if(!result.icon)
|
|
||||||
result.icon = "http://nominatim.openstreetmap.org/images/mapicons/poi_point_of_interest.glow.12.png";
|
|
||||||
html += '<td class="results-body-counter"><img src="'+ result.icon + '" alt=""/></td>';
|
|
||||||
html += '<td class="results-body-items">';
|
|
||||||
|
|
||||||
if(result.display_name){
|
|
||||||
html += '<div class="results-body-item" onclick="OSRM.Geocoder._onclickResult(\''+parameters.marker_id+'\', '+result.lat+', '+result.lon+');">'+result.display_name;
|
|
||||||
// debug output to show osm_type, class, type
|
|
||||||
// html += '<br/><span class="results-body-item-remark small-font">[osm_type: ' + result.osm_type + ', class: ' + result.class + ', type: ' + result.type + ']</span>';
|
|
||||||
html += '</div>';
|
|
||||||
}
|
|
||||||
html += "</td></tr>";
|
|
||||||
}
|
|
||||||
html += '</table>';
|
|
||||||
|
|
||||||
document.getElementById('information-box-header').innerHTML =
|
|
||||||
"<div class='header-title'>"+OSRM.loc("SEARCH_RESULTS")+"</div>" +
|
|
||||||
"<div class='header-content'>("+OSRM.loc("FOUND_X_RESULTS").replace(/%i/,filtered_response.length)+")</div>";
|
|
||||||
"<div class='header-content'>(found "+filtered_response.length+" results)"+"</div>";
|
|
||||||
document.getElementById('information-box').innerHTML = html;
|
|
||||||
},
|
|
||||||
_showResults_Empty: function(parameters) {
|
|
||||||
document.getElementById('information-box-header').innerHTML =
|
|
||||||
"<div class='header-title'>"+OSRM.loc("SEARCH_RESULTS")+"</div>" +
|
|
||||||
"<div class='header-content'>("+OSRM.loc("FOUND_X_RESULTS").replace(/%i/,0)+")</div>";
|
|
||||||
if(parameters.marker_id == OSRM.C.SOURCE_LABEL)
|
|
||||||
document.getElementById('information-box').innerHTML = "<div class='no-results big-font'>"+OSRM.loc("NO_RESULTS_FOUND_SOURCE")+": "+parameters.query +"</div>";
|
|
||||||
else if(parameters.marker_id == OSRM.C.TARGET_LABEL)
|
|
||||||
document.getElementById('information-box').innerHTML = "<div class='no-results big-font'>"+OSRM.loc("NO_RESULTS_FOUND_TARGET")+": "+parameters.query +"</div>";
|
|
||||||
else
|
|
||||||
document.getElementById('information-box').innerHTML = "<div class='no-results big-font'>"+OSRM.loc("NO_RESULTS_FOUND")+": "+parameters.query +"</div>";
|
|
||||||
},
|
|
||||||
_showResults_Timeout: function() {
|
|
||||||
document.getElementById('information-box-header').innerHTML =
|
|
||||||
"<div class='header-title'>"+OSRM.loc("SEARCH_RESULTS")+"</div>" +
|
|
||||||
"<div class='header-content'>("+OSRM.loc("FOUND_X_RESULTS").replace(/%i/,0)+")</div>";
|
|
||||||
document.getElementById('information-box').innerHTML = "<div class='no-results big-font'>"+OSRM.loc("TIMED_OUT")+"</div>";
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// filter search results [true: result will not be displayed]
|
|
||||||
_filterResult: function(result) {
|
|
||||||
if( result.osm_type == "relation")
|
|
||||||
return true;
|
|
||||||
if( result.type == "aerial_views")
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// comparator for sorting results [higher weight: result will appear first]
|
|
||||||
_compare_class_weights: {
|
|
||||||
place: 9000,
|
|
||||||
highway: 8000,
|
|
||||||
boundary: 7000
|
|
||||||
},
|
|
||||||
_compare_type_weights: {
|
|
||||||
country: 13,
|
|
||||||
state: 12,
|
|
||||||
county: 11,
|
|
||||||
city: 10,
|
|
||||||
town: 9,
|
|
||||||
village: 8,
|
|
||||||
hamlet: 7,
|
|
||||||
suburb: 6,
|
|
||||||
locality: 5,
|
|
||||||
farm: 4
|
|
||||||
},
|
|
||||||
_compareResults: function(lhs, rhs) {
|
|
||||||
var class_values = OSRM.Geocoder._compare_class_weights;
|
|
||||||
var type_values = OSRM.Geocoder._compare_type_weights;
|
|
||||||
|
|
||||||
var lhs_value = (-class_values[ lhs.class ] || 0) + (-type_values[ lhs.type ] || 0);
|
|
||||||
var rhs_value = (-class_values[ rhs.class ] || 0) + (-type_values[ rhs.type ] || 0);
|
|
||||||
|
|
||||||
return (lhs_value - rhs_value);
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// [reverse geocoding]
|
|
||||||
|
|
||||||
//update geo coordinates in input boxes
|
|
||||||
updateLocation: function(marker_id) {
|
|
||||||
if (marker_id == OSRM.C.SOURCE_LABEL && OSRM.G.markers.hasSource()) {
|
|
||||||
document.getElementById("gui-input-source").value = OSRM.G.markers.route[0].getLat().toFixed(6) + ", " + OSRM.G.markers.route[0].getLng().toFixed(6);
|
|
||||||
} else if (marker_id == OSRM.C.TARGET_LABEL && OSRM.G.markers.hasTarget()) {
|
|
||||||
document.getElementById("gui-input-target").value = OSRM.G.markers.route[OSRM.G.markers.route.length-1].getLat().toFixed(6) + ", " + OSRM.G.markers.route[OSRM.G.markers.route.length-1].getLng().toFixed(6);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// update address in input boxes
|
|
||||||
updateAddress: function(marker_id, do_fallback_to_lat_lng) {
|
|
||||||
// build request for reverse geocoder
|
|
||||||
var lat = null;
|
|
||||||
var lng = null;
|
|
||||||
|
|
||||||
if(marker_id == OSRM.C.SOURCE_LABEL && OSRM.G.markers.hasSource()) {
|
|
||||||
lat = OSRM.G.markers.route[0].getLat();
|
|
||||||
lng = OSRM.G.markers.route[0].getLng();
|
|
||||||
} else if(marker_id == OSRM.C.TARGET_LABEL && OSRM.G.markers.hasTarget() ) {
|
|
||||||
lat = OSRM.G.markers.route[OSRM.G.markers.route.length-1].getLat();
|
|
||||||
lng = OSRM.G.markers.route[OSRM.G.markers.route.length-1].getLng();
|
|
||||||
} else
|
|
||||||
return;
|
|
||||||
|
|
||||||
var call = OSRM.DEFAULTS.HOST_REVERSE_GEOCODER_URL + "?format=json&json_callback=%jsonp" + "&accept-language="+OSRM.Localization.current_language + "&lat=" + lat.toFixed(6) + "&lon=" + lng.toFixed(6);
|
|
||||||
OSRM.JSONP.call( call, OSRM.Geocoder._showReverseResults, OSRM.Geocoder._showReverseResults_Timeout, OSRM.DEFAULTS.JSONP_TIMEOUT, "reverse_geocoder_"+marker_id, {marker_id:marker_id, do_fallback: do_fallback_to_lat_lng} );
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// processing JSONP response of reverse geocoder
|
|
||||||
_showReverseResults: function(response, parameters) {
|
|
||||||
if(!response) {
|
|
||||||
OSRM.Geocoder._showReverseResults_Timeout(response, parameters);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(response.address == undefined) {
|
|
||||||
OSRM.Geocoder._showReverseResults_Timeout(response, parameters);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// build reverse geocoding address
|
|
||||||
var used_address_data = 0;
|
|
||||||
var address = "";
|
|
||||||
if( response.address.road) {
|
|
||||||
address += response.address.road;
|
|
||||||
used_address_data++;
|
|
||||||
}
|
|
||||||
if( response.address.city ) {
|
|
||||||
if( used_address_data > 0 )
|
|
||||||
address += ", ";
|
|
||||||
address += response.address.city;
|
|
||||||
used_address_data++;
|
|
||||||
} else if( response.address.village ) {
|
|
||||||
if( used_address_data > 0 )
|
|
||||||
address += ", ";
|
|
||||||
address += response.address.village;
|
|
||||||
used_address_data++;
|
|
||||||
}
|
|
||||||
if( used_address_data < 2 && response.address.country ) {
|
|
||||||
if( used_address_data > 0 )
|
|
||||||
address += ", ";
|
|
||||||
address += response.address.country;
|
|
||||||
used_address_data++;
|
|
||||||
}
|
|
||||||
if( used_address_data == 0 ) {
|
|
||||||
OSRM.Geocoder._showReverseResults_Timeout(response, parameters);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// add result to DOM
|
|
||||||
if(parameters.marker_id == OSRM.C.SOURCE_LABEL && OSRM.G.markers.hasSource() )
|
|
||||||
document.getElementById("gui-input-source").value = address;
|
|
||||||
else if(parameters.marker_id == OSRM.C.TARGET_LABEL && OSRM.G.markers.hasTarget() )
|
|
||||||
document.getElementById("gui-input-target").value = address;
|
|
||||||
},
|
|
||||||
_showReverseResults_Timeout: function(response, parameters) {
|
|
||||||
if(!parameters.do_fallback)
|
|
||||||
return;
|
|
||||||
|
|
||||||
OSRM.Geocoder.updateLocation(parameters.marker_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -1,193 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM route management (handles drawing of route geometry - current route, old route, unnamed route, highlight unnamed streets)
|
|
||||||
// [this holds the route geometry]
|
|
||||||
|
|
||||||
|
|
||||||
OSRM.HistoryRoute = function() {
|
|
||||||
// style and count of history routes
|
|
||||||
this._history_styles = [{dashed:false, color:'#FFFFFF', opacity:0.5, weight:5},
|
|
||||||
{dashed:false, color:'#0000DD', opacity:0.45, weight:5},
|
|
||||||
{dashed:false, color:'#0000BB', opacity:0.40, weight:5},
|
|
||||||
{dashed:false, color:'#000099', opacity:0.35, weight:5},
|
|
||||||
{dashed:false, color:'#000077', opacity:0.30, weight:5},
|
|
||||||
{dashed:false, color:'#000055', opacity:0.25, weight:5},
|
|
||||||
{dashed:false, color:'#000033', opacity:0.20, weight:5},
|
|
||||||
{dashed:false, color:'#000011', opacity:0.15, weight:5},
|
|
||||||
{dashed:false, color:'#000000', opacity:0.10, weight:5}
|
|
||||||
];
|
|
||||||
this._history_length = this._history_styles.length;
|
|
||||||
|
|
||||||
// actual history data
|
|
||||||
this._history = [];
|
|
||||||
for(var i=0, size=this._history_length; i<size; i++) {
|
|
||||||
var history = {};
|
|
||||||
history.route = new OSRM.SimpleRoute("current" , {dashed:false} );
|
|
||||||
history.markers = [];
|
|
||||||
history.checksum = null;
|
|
||||||
this._history.push(history);
|
|
||||||
}
|
|
||||||
|
|
||||||
// helper functions bound to this
|
|
||||||
this._initiate_redrawHistory = OSRM.bind(this, this._getRoute_RedrawHistory);
|
|
||||||
this._callback_redrawHistory = OSRM.bind(this, this._showRoute_RedrawHistory);
|
|
||||||
};
|
|
||||||
OSRM.extend( OSRM.HistoryRoute,{
|
|
||||||
// switch history routes on/off
|
|
||||||
activate: function() {
|
|
||||||
this.storeHistoryRoute = this._storeHistoryRoute;
|
|
||||||
this.fetchHistoryRoute = this._fetchHistoryRoute;
|
|
||||||
this.showHistoryRoutes = this._showHistoryRoutes;
|
|
||||||
this.clearHistoryRoutes = this._clearHistoryRoutes;
|
|
||||||
OSRM.G.map.on('zoomend', this._initiate_redrawHistory );
|
|
||||||
|
|
||||||
this.storeHistoryRoute();
|
|
||||||
},
|
|
||||||
deactivate: function() {
|
|
||||||
this.clearHistoryRoutes();
|
|
||||||
|
|
||||||
this.storeHistoryRoute = this.empty;
|
|
||||||
this.fetchHistoryRoute = this.empty;
|
|
||||||
this.showHistoryRoutes = this.empty;
|
|
||||||
this.clearHistoryRoutes = this.empty;
|
|
||||||
OSRM.G.map.off('zoomend', this._initiate_redrawHistory );
|
|
||||||
},
|
|
||||||
|
|
||||||
// empty function
|
|
||||||
empty: function() {},
|
|
||||||
storeHistoryRoute: function() {},
|
|
||||||
fetchHistoryRoute: function() {},
|
|
||||||
showHistoryRoutes: function() {},
|
|
||||||
clearHistoryRoutes: function() {},
|
|
||||||
|
|
||||||
// actual functions
|
|
||||||
_storeHistoryRoute: function() {
|
|
||||||
var route = OSRM.G.route;
|
|
||||||
if( !route.isShown() || !route.isRoute() )
|
|
||||||
return;
|
|
||||||
|
|
||||||
// store current route in staging spot
|
|
||||||
var hint_data = OSRM.G.response.hint_data;
|
|
||||||
this._history[0].route.setPositions( route.getPositions() );
|
|
||||||
this._history[0].checksum = hint_data.checksum;
|
|
||||||
this._history[0].markers = [];
|
|
||||||
|
|
||||||
var markers = this._getCurrentMarkers();
|
|
||||||
for(var i=0,size=markers.length; i<size; i++) {
|
|
||||||
var position = { lat:markers[i].lat, lng:markers[i].lng, hint:hint_data.locations[i] };
|
|
||||||
this._history[0].markers.push(position);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
_fetchHistoryRoute: function() {
|
|
||||||
if( this._history[0].markers.length == 0 )
|
|
||||||
return;
|
|
||||||
if( OSRM.G.route.isShown() && this._equalMarkers(this._history[0].markers, this._getCurrentMarkers()) )
|
|
||||||
return;
|
|
||||||
if( this._equalMarkers(this._history[0].markers, this._history[1].markers) )
|
|
||||||
return;
|
|
||||||
|
|
||||||
// move all routes down one position
|
|
||||||
for(var i=this._history_length-1; i>0; i--) {
|
|
||||||
this._history[i].route.setPositions( this._history[i-1].route.getPositions() ); // copying positions quicker than creating new route!
|
|
||||||
this._history[i].markers = this._history[i-1].markers;
|
|
||||||
this._history[i].checksum = this._history[i-1].checksum;
|
|
||||||
}
|
|
||||||
// reset staging spot
|
|
||||||
this._history[0].route.setPositions( [] );
|
|
||||||
this._history[0].markers = [];
|
|
||||||
this._history[0].checksum = null;
|
|
||||||
},
|
|
||||||
_showHistoryRoutes: function() {
|
|
||||||
for(var i=1,size=this._history_length; i<size; i++) {
|
|
||||||
this._history[i].route.setStyle( this._history_styles[i] );
|
|
||||||
this._history[i].route.show();
|
|
||||||
OSRM.G.route.hideOldRoute();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
_clearHistoryRoutes: function() {
|
|
||||||
for(var i=0,size=this._history_length; i<size; i++) {
|
|
||||||
this._history[i].route.hide();
|
|
||||||
this._history[i].route.setPositions( [] );
|
|
||||||
this._history[i].markers = [];
|
|
||||||
this._history[i].checksum = null;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// get positions of current markers (data of jsonp response used, as not all data structures up-to-date!)
|
|
||||||
_getCurrentMarkers: function() {
|
|
||||||
var route = [];
|
|
||||||
|
|
||||||
var positions = OSRM.G.route.getPositions();
|
|
||||||
if(positions.length == 0)
|
|
||||||
return route;
|
|
||||||
|
|
||||||
for(var i=0; i<OSRM.G.response.via_points.length; i++)
|
|
||||||
route.push( {lat:OSRM.G.response.via_points[i][0], lng:OSRM.G.response.via_points[i][1]} );
|
|
||||||
return route;
|
|
||||||
},
|
|
||||||
|
|
||||||
// check if two routes are equivalent by checking their markers
|
|
||||||
_equalMarkers: function(lhs, rhs) {
|
|
||||||
if(lhs.length != rhs.length)
|
|
||||||
return false;
|
|
||||||
for(var i=0,size=lhs.length; i<size; i++) {
|
|
||||||
if( lhs[i].lat.toFixed(5) != rhs[i].lat.toFixed(5) || lhs[i].lng.toFixed(5) != rhs[i].lng.toFixed(5) )
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
|
|
||||||
// requery history routes
|
|
||||||
_showRoute_RedrawHistory: function(response, history_id) {
|
|
||||||
if(!response)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var positions = OSRM.RoutingGeometry._decode(response.route_geometry, 5);
|
|
||||||
this._history[history_id].route.setPositions(positions);
|
|
||||||
this._updateHints(response, history_id);
|
|
||||||
},
|
|
||||||
_getRoute_RedrawHistory: function() {
|
|
||||||
for(var i=0,size=this._history_length; i<size; i++)
|
|
||||||
if( this._history[i].markers.length > 0 ) {
|
|
||||||
OSRM.JSONP.clear('history'+i);
|
|
||||||
OSRM.JSONP.call(this._buildCall(i)+'&instructions=false', this._callback_redrawHistory, OSRM.JSONP.empty, OSRM.DEFAULTS.JSONP_TIMEOUT, 'history'+i, i);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
_buildCall: function(history_id) {
|
|
||||||
var source = OSRM.DEFAULTS.HOST_ROUTING_URL;
|
|
||||||
source += '?z=' + OSRM.G.map.getZoom() + '&output=json&jsonp=%jsonp';
|
|
||||||
|
|
||||||
if(this._history[history_id].checksum)
|
|
||||||
source += '&checksum=' + this._history[history_id].checksum;
|
|
||||||
|
|
||||||
var history_markers = this._history[history_id].markers;
|
|
||||||
for(var i=0,size=history_markers.length; i<size; i++) {
|
|
||||||
source += '&loc=' + history_markers[i].lat.toFixed(6) + ',' + history_markers[i].lng.toFixed(6);
|
|
||||||
if( history_markers[i].hint )
|
|
||||||
source += '&hint=' + history_markers[i].hint;
|
|
||||||
}
|
|
||||||
return source;
|
|
||||||
},
|
|
||||||
_updateHints: function(response, history_id) {
|
|
||||||
this._history[history_id].checksum = response.hint_data.checksum;
|
|
||||||
|
|
||||||
var hints = response.hint_data.locations;
|
|
||||||
for(var i=0; i<hints.length; i++)
|
|
||||||
this._history[history_id].markers[i].hint = hints[i];
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM map handling
|
|
||||||
// [initialization, event handling, centering relative to UI]
|
|
||||||
|
|
||||||
// will hold the map object
|
|
||||||
OSRM.GLOBALS.map = null;
|
|
||||||
|
|
||||||
|
|
||||||
// map controller
|
|
||||||
// [map initialization, event handling]
|
|
||||||
OSRM.Map = {
|
|
||||||
|
|
||||||
// map initialization
|
|
||||||
init: function() {
|
|
||||||
// check if GUI is initialized!
|
|
||||||
if(OSRM.G.main_handle == null)
|
|
||||||
OSRM.GUI.init();
|
|
||||||
|
|
||||||
// setup tile servers
|
|
||||||
var tile_servers = OSRM.DEFAULTS.TILE_SERVERS;
|
|
||||||
var base_maps = {};
|
|
||||||
for(var i=0, size=tile_servers.length; i<size; i++) {
|
|
||||||
if( tile_servers[i].bing == true ) {
|
|
||||||
base_maps[ tile_servers[i].display_name ] = new L.TileLayer.Bing( tile_servers[i].apikey, tile_servers[i].type, tile_servers[i].options );
|
|
||||||
} else {
|
|
||||||
tile_servers[i].options.attribution = tile_servers[i].attribution;
|
|
||||||
base_maps[ tile_servers[i].display_name ] = new L.TileLayer( tile_servers[i].url, tile_servers[i].options );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// setup map
|
|
||||||
OSRM.G.map = new OSRM.MapView('map', {
|
|
||||||
center: new L.LatLng(OSRM.DEFAULTS.ONLOAD_LATITUDE, OSRM.DEFAULTS.ONLOAD_LONGITUDE),
|
|
||||||
zoom: OSRM.DEFAULTS.ONLOAD_ZOOM_LEVEL,
|
|
||||||
layers: [base_maps[tile_servers[0].display_name]],
|
|
||||||
zoomAnimation: false, // remove animations -> routes are not hidden during zoom
|
|
||||||
fadeAnimation: false
|
|
||||||
});
|
|
||||||
|
|
||||||
// add layer control
|
|
||||||
var layerControl = new L.Control.QueryableLayers(base_maps, {});
|
|
||||||
OSRM.G.map.addLayerControl(layerControl);
|
|
||||||
|
|
||||||
// move zoom markers
|
|
||||||
OSRM.Browser.getElementsByClassName(document,'leaflet-control-zoom')[0].style.left=(OSRM.G.main_handle.boxWidth()+10)+"px";
|
|
||||||
OSRM.Browser.getElementsByClassName(document,'leaflet-control-zoom')[0].style.top="5px";
|
|
||||||
|
|
||||||
// map events
|
|
||||||
OSRM.G.map.on('zoomend', OSRM.Map.zoomed );
|
|
||||||
OSRM.G.map.on('click', OSRM.Map.click );
|
|
||||||
OSRM.G.map.on('contextmenu', OSRM.Map.contextmenu );
|
|
||||||
OSRM.G.map.on('mousemove', OSRM.Map.mousemove );
|
|
||||||
},
|
|
||||||
|
|
||||||
// init map position and zoom (respect UI visibility / use browser geolocation)
|
|
||||||
initPosition: function() {
|
|
||||||
var position = new L.LatLng( OSRM.DEFAULTS.ONLOAD_LATITUDE, OSRM.DEFAULTS.ONLOAD_LONGITUDE);
|
|
||||||
OSRM.G.map.setViewUI( position, OSRM.DEFAULTS.ONLOAD_ZOOM_LEVEL, true);
|
|
||||||
if (navigator.geolocation && document.URL.indexOf("file://") == -1) // convenience: FF does not save access rights for local files
|
|
||||||
navigator.geolocation.getCurrentPosition(OSRM.Map.geolocationResponse);
|
|
||||||
},
|
|
||||||
|
|
||||||
// map event handlers
|
|
||||||
zoomed: function(e) {
|
|
||||||
if(OSRM.G.dragging)
|
|
||||||
OSRM.Routing.getRoute_Dragging();
|
|
||||||
else
|
|
||||||
OSRM.Routing.getRoute_Redraw({keepAlternative:true});
|
|
||||||
},
|
|
||||||
contextmenu: function(e) {;},
|
|
||||||
mousemove: function(e) { OSRM.Via.drawDragMarker(e); },
|
|
||||||
click: function(e) {
|
|
||||||
OSRM.GUI.deactivateTooltip( "clicking" );
|
|
||||||
if( !OSRM.G.markers.hasSource() ) {
|
|
||||||
var index = OSRM.G.markers.setSource( e.latlng );
|
|
||||||
OSRM.Geocoder.updateAddress( OSRM.C.SOURCE_LABEL, OSRM.C.DO_FALLBACK_TO_LAT_LNG );
|
|
||||||
OSRM.G.markers.route[index].show();
|
|
||||||
OSRM.Routing.getRoute( {recenter:OSRM.G.markers.route.length == 2} ); // allow recentering when the route is first shown
|
|
||||||
} else if( !OSRM.G.markers.hasTarget() ) {
|
|
||||||
var index = OSRM.G.markers.setTarget( e.latlng );
|
|
||||||
OSRM.Geocoder.updateAddress( OSRM.C.TARGET_LABEL, OSRM.C.DO_FALLBACK_TO_LAT_LNG );
|
|
||||||
OSRM.G.markers.route[index].show();
|
|
||||||
OSRM.Routing.getRoute( {recenter:OSRM.G.markers.route.length == 2} ); // allow recentering when the route is first shown
|
|
||||||
}
|
|
||||||
},
|
|
||||||
geolocationResponse: function(response) {
|
|
||||||
var latlng = new L.LatLng(response.coords.latitude, response.coords.longitude);
|
|
||||||
OSRM.G.map.setViewUI(latlng, OSRM.DEFAULTS.ZOOM_LEVEL );
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,141 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM marker management (all route markers should only be set and deleted with these routines!)
|
|
||||||
// [this holds the vital information of the route]
|
|
||||||
|
|
||||||
OSRM.Markers = function() {
|
|
||||||
this.route = new Array();
|
|
||||||
this.highlight = new OSRM.DragMarker("highlight", {zIndexOffset:-1,draggable:true,icon:OSRM.G.icons['marker-highlight'],dragicon:OSRM.G.icons['marker-highlight-drag']});;
|
|
||||||
this.dragger = new OSRM.DragMarker("drag", {draggable:true,icon:OSRM.G.icons['marker-drag'],dragicon:OSRM.G.icons['marker-drag']});;
|
|
||||||
};
|
|
||||||
OSRM.extend( OSRM.Markers,{
|
|
||||||
reset: function() {
|
|
||||||
// remove route markers
|
|
||||||
for(var i=0; i<this.route.length;i++)
|
|
||||||
this.route[i].hide();
|
|
||||||
this.route.splice(0, this.route.length);
|
|
||||||
document.getElementById('gui-delete-source').style.visibility = "hidden";
|
|
||||||
document.getElementById('gui-delete-target').style.visibility = "hidden";
|
|
||||||
// remove special markers
|
|
||||||
this.highlight.hide();
|
|
||||||
this.dragger.hide();
|
|
||||||
},
|
|
||||||
removeVias: function() {
|
|
||||||
// assert correct route array s - v - t
|
|
||||||
for(var i=1; i<this.route.length-1;i++)
|
|
||||||
this.route[i].hide();
|
|
||||||
this.route.splice(1, this.route.length-2);
|
|
||||||
},
|
|
||||||
setSource: function(position) {
|
|
||||||
// source node is always first node
|
|
||||||
if( this.route[0] && this.route[0].label == OSRM.C.SOURCE_LABEL )
|
|
||||||
this.route[0].setPosition(position);
|
|
||||||
else
|
|
||||||
this.route.splice(0,0, new OSRM.RouteMarker(OSRM.C.SOURCE_LABEL, {draggable:true,icon:OSRM.G.icons['marker-source'],dragicon:OSRM.G.icons['marker-source-drag']}, position));
|
|
||||||
document.getElementById('gui-delete-source').style.visibility = "visible";
|
|
||||||
return 0;
|
|
||||||
},
|
|
||||||
setTarget: function(position) {
|
|
||||||
// target node is always last node
|
|
||||||
if( this.route[this.route.length-1] && this.route[ this.route.length-1 ].label == OSRM.C.TARGET_LABEL )
|
|
||||||
this.route[this.route.length-1].setPosition(position);
|
|
||||||
else
|
|
||||||
this.route.splice( this.route.length,0, new OSRM.RouteMarker(OSRM.C.TARGET_LABEL, {draggable:true,icon:OSRM.G.icons['marker-target'],dragicon:OSRM.G.icons['marker-target-drag']}, position));
|
|
||||||
document.getElementById('gui-delete-target').style.visibility = "visible";
|
|
||||||
return this.route.length-1;
|
|
||||||
},
|
|
||||||
setVia: function(id, position) {
|
|
||||||
// via nodes only between source and target nodes
|
|
||||||
if( this.route.length<2 || id > this.route.length-2 )
|
|
||||||
return -1;
|
|
||||||
|
|
||||||
this.route.splice(id+1,0, new OSRM.RouteMarker(OSRM.C.VIA_LABEL, {draggable:true,icon:OSRM.G.icons['marker-via'],dragicon:OSRM.G.icons['marker-via-drag']}, position));
|
|
||||||
return id+1;
|
|
||||||
},
|
|
||||||
removeMarker: function(id) {
|
|
||||||
if( id >= this.route.length )
|
|
||||||
return;
|
|
||||||
|
|
||||||
// also remove vias if source or target are removed
|
|
||||||
if( id==0 && this.route[0].label == OSRM.C.SOURCE_LABEL ) {
|
|
||||||
this.removeVias();
|
|
||||||
document.getElementById('gui-input-source').value = "";
|
|
||||||
document.getElementById('information-box').innerHTML = "";
|
|
||||||
document.getElementById('information-box-header').innerHTML = "";
|
|
||||||
document.getElementById('gui-delete-source').style.visibility = "hidden";
|
|
||||||
} else if( id == this.route.length-1 && this.route[ this.route.length-1 ].label == OSRM.C.TARGET_LABEL ) {
|
|
||||||
this.removeVias();
|
|
||||||
id = this.route.length-1;
|
|
||||||
document.getElementById('gui-input-target').value = "";
|
|
||||||
document.getElementById('information-box').innerHTML = "";
|
|
||||||
document.getElementById('information-box-header').innerHTML = "";
|
|
||||||
document.getElementById('gui-delete-target').style.visibility = "hidden";
|
|
||||||
}
|
|
||||||
|
|
||||||
this.route[id].hide();
|
|
||||||
this.route.splice(id, 1);
|
|
||||||
},
|
|
||||||
reverseMarkers: function() {
|
|
||||||
var size = this.route.length;
|
|
||||||
|
|
||||||
// invert route, if a route is shown
|
|
||||||
if( size > 1 ) {
|
|
||||||
// switch positions in nodes
|
|
||||||
var temp_position = this.route[0].getPosition();
|
|
||||||
this.route[0].setPosition( this.route[size-1].getPosition() );
|
|
||||||
this.route[size-1].setPosition( temp_position );
|
|
||||||
// switch nodes in array
|
|
||||||
var temp_node = this.route[0];
|
|
||||||
this.route[0] = this.route[size-1];
|
|
||||||
this.route[size-1] = temp_node;
|
|
||||||
// reverse route
|
|
||||||
this.route.reverse();
|
|
||||||
// clear information (both delete markers stay visible)
|
|
||||||
document.getElementById('information-box').innerHTML = "";
|
|
||||||
document.getElementById('information-box-header').innerHTML = "";
|
|
||||||
|
|
||||||
// invert marker, if only one marker is shown (implicit clear of information / delete markers)
|
|
||||||
} else if( size > 0 ) {
|
|
||||||
var position = this.route[0].getPosition();
|
|
||||||
var label = this.route[0].label;
|
|
||||||
this.removeMarker(0);
|
|
||||||
if( label == OSRM.C.TARGET_LABEL )
|
|
||||||
this.setSource( position );
|
|
||||||
else if( label == OSRM.C.SOURCE_LABEL )
|
|
||||||
this.setTarget( position );
|
|
||||||
this.route[0].show();
|
|
||||||
}
|
|
||||||
|
|
||||||
},
|
|
||||||
hasSource: function() {
|
|
||||||
if( this.route[0] && this.route[0].label == OSRM.C.SOURCE_LABEL )
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
hasTarget: function() {
|
|
||||||
if( this.route[this.route.length-1] && this.route[this.route.length-1].label == OSRM.C.TARGET_LABEL )
|
|
||||||
return true;
|
|
||||||
return false;
|
|
||||||
},
|
|
||||||
|
|
||||||
//relabel all via markers
|
|
||||||
relabelViaMarkers: function() {
|
|
||||||
for(var i=1, size=this.route.length-1; i<size; i++)
|
|
||||||
this.route[i].marker.setLabel(i);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1,149 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM route management (handles drawing of route geometry - current route, old route, unnamed route, highlight unnamed streets)
|
|
||||||
// [this holds the route geometry]
|
|
||||||
|
|
||||||
|
|
||||||
OSRM.Route = function() {
|
|
||||||
this._current_route = new OSRM.SimpleRoute("current" , {dashed:false} );
|
|
||||||
this._alternative_route = new OSRM.SimpleRoute("alternative" , {dashed:false} );
|
|
||||||
this._old_route = new OSRM.SimpleRoute("old", {dashed:false,color:"#123"} );
|
|
||||||
this._unnamed_route = new OSRM.MultiRoute("unnamed");
|
|
||||||
|
|
||||||
this._current_route_style = {dashed:false,color:'#0033FF', weight:5};
|
|
||||||
this._current_noroute_style = {dashed:true, color:'#222222', weight:2};
|
|
||||||
this._old_route_style = {dashed:false,color:'#112233', weight:5};
|
|
||||||
this._old_noroute_style = {dashed:true, color:'#000000', weight:2};
|
|
||||||
this._unnamed_route_style = {dashed:false, color:'#FF00FF', weight:10};
|
|
||||||
this._old_unnamed_route_style = {dashed:false, color:'#990099', weight:10};
|
|
||||||
this._alternative_route_style = {dashed:false,color:'#770033', weight:5, opacity:0.6};
|
|
||||||
|
|
||||||
this._noroute = OSRM.Route.ROUTE;
|
|
||||||
this._history = new OSRM.HistoryRoute();
|
|
||||||
};
|
|
||||||
OSRM.Route.NOROUTE = true;
|
|
||||||
OSRM.Route.ROUTE = false;
|
|
||||||
OSRM.extend( OSRM.Route,{
|
|
||||||
|
|
||||||
// show/hide route
|
|
||||||
showRoute: function(positions, noroute) {
|
|
||||||
this._noroute = noroute;
|
|
||||||
this._current_route.setPositions( positions );
|
|
||||||
if ( this._noroute == OSRM.Route.NOROUTE )
|
|
||||||
this._current_route.setStyle( this._current_noroute_style );
|
|
||||||
else
|
|
||||||
this._current_route.setStyle( this._current_route_style );
|
|
||||||
this._current_route.show();
|
|
||||||
//this._raiseUnnamedRoute();
|
|
||||||
|
|
||||||
this._history.fetchHistoryRoute();
|
|
||||||
this._history.showHistoryRoutes();
|
|
||||||
this._history.storeHistoryRoute();
|
|
||||||
},
|
|
||||||
hideRoute: function() {
|
|
||||||
this._current_route.hide();
|
|
||||||
this._unnamed_route.hide();
|
|
||||||
|
|
||||||
this._history.fetchHistoryRoute();
|
|
||||||
this._history.showHistoryRoutes();
|
|
||||||
// deactivate GUI features that need a route
|
|
||||||
OSRM.GUI.deactivateRouteFeatures();
|
|
||||||
},
|
|
||||||
|
|
||||||
// show/hide highlighting for unnamed routes
|
|
||||||
showUnnamedRoute: function(positions) {
|
|
||||||
this._unnamed_route.clearRoutes();
|
|
||||||
for(var i=0; i<positions.length; i++) {
|
|
||||||
this._unnamed_route.addRoute(positions[i]);
|
|
||||||
}
|
|
||||||
this._unnamed_route.setStyle( this._unnamed_route_style );
|
|
||||||
this._unnamed_route.show();
|
|
||||||
},
|
|
||||||
hideUnnamedRoute: function() {
|
|
||||||
this._unnamed_route.hide();
|
|
||||||
},
|
|
||||||
// TODO: hack to put unnamed_route above old_route -> easier way in will be available Leaflet 0.4
|
|
||||||
_raiseUnnamedRoute: function() {
|
|
||||||
if(this._unnamed_route.isShown()) {
|
|
||||||
this._unnamed_route.hide();
|
|
||||||
this._unnamed_route.show();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// show/hide previous route as shadow
|
|
||||||
showOldRoute: function() {
|
|
||||||
this._old_route.setPositions( this._current_route.getPositions() );
|
|
||||||
if ( this._noroute == OSRM.Route.NOROUTE)
|
|
||||||
this._old_route.setStyle( this._old_noroute_style );
|
|
||||||
else
|
|
||||||
this._old_route.setStyle( this._old_route_style );
|
|
||||||
this._old_route.show();
|
|
||||||
this._raiseUnnamedRoute();
|
|
||||||
// change color of unnamed route highlighting - no separate object as dragged route does not have unnamed route highlighting
|
|
||||||
this._unnamed_route.setStyle( this._old_unnamed_route_style );
|
|
||||||
},
|
|
||||||
hideOldRoute: function() {
|
|
||||||
this._old_route.hide();
|
|
||||||
},
|
|
||||||
|
|
||||||
// show/hide alternative route
|
|
||||||
showAlternativeRoute: function(positions) {
|
|
||||||
this._alternative_route.setPositions( positions );
|
|
||||||
this._alternative_route.setStyle( this._alternative_route_style );
|
|
||||||
this._alternative_route.show();
|
|
||||||
},
|
|
||||||
hideAlternativeRoute: function() {
|
|
||||||
this._alternative_route.hide();
|
|
||||||
},
|
|
||||||
|
|
||||||
// query routines
|
|
||||||
isShown: function() {
|
|
||||||
return this._current_route.isShown();
|
|
||||||
},
|
|
||||||
isRoute: function() {
|
|
||||||
return !(this._noroute);
|
|
||||||
},
|
|
||||||
getPositions: function() {
|
|
||||||
return this._current_route.getPositions();
|
|
||||||
},
|
|
||||||
getPoints: function() {
|
|
||||||
return this._current_route.getPoints();
|
|
||||||
},
|
|
||||||
|
|
||||||
// helper routines
|
|
||||||
reset: function() {
|
|
||||||
this.hideRoute();
|
|
||||||
this._old_route.hide();
|
|
||||||
this._noroute = OSRM.Route.ROUTE;
|
|
||||||
this._history.clearHistoryRoutes();
|
|
||||||
},
|
|
||||||
fire: function(type,event) {
|
|
||||||
this._current_route.route.fire(type,event);
|
|
||||||
},
|
|
||||||
centerView: function() {
|
|
||||||
this._current_route.centerView();
|
|
||||||
},
|
|
||||||
|
|
||||||
// handle history routes
|
|
||||||
activateHistoryRoutes: function() {
|
|
||||||
this._history.activate();
|
|
||||||
},
|
|
||||||
deactivateHistoryRoutes: function() {
|
|
||||||
this._history.deactivate();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1,119 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM via marker routines
|
|
||||||
// [find correct position for a via marker]
|
|
||||||
|
|
||||||
|
|
||||||
OSRM.Via = {
|
|
||||||
|
|
||||||
// find route segment of current route geometry that is closest to the new via node (marked by index of its endpoint)
|
|
||||||
_findNearestRouteSegment: function( new_via ) {
|
|
||||||
var min_dist = Number.MAX_VALUE;
|
|
||||||
var min_index = undefined;
|
|
||||||
|
|
||||||
var p = OSRM.G.map.latLngToLayerPoint( new_via );
|
|
||||||
var positions = OSRM.G.route.getPoints();
|
|
||||||
for(var i=1; i<positions.length; i++) {
|
|
||||||
var _sqDist = L.LineUtil._sqClosestPointOnSegment(p, positions[i-1], positions[i], true);
|
|
||||||
if( _sqDist < min_dist) {
|
|
||||||
min_dist = _sqDist;
|
|
||||||
min_index = i;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return min_index;
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// find the correct index among all via nodes to insert the new via node, and insert it
|
|
||||||
findViaIndex: function( new_via_position ) {
|
|
||||||
// find route segment that is closest to click position (marked by last index)
|
|
||||||
var nearest_index = OSRM.Via._findNearestRouteSegment( new_via_position );
|
|
||||||
|
|
||||||
// find correct index to insert new via node
|
|
||||||
var via_points = OSRM.G.response.via_points;
|
|
||||||
var new_via_index = via_points.length-2;
|
|
||||||
var via_index = Array();
|
|
||||||
for(var i=1; i<via_points.length-1; i++) {
|
|
||||||
via_index[i-1] = OSRM.Via._findNearestRouteSegment( new L.LatLng(via_points[i][0], via_points[i][1]) );
|
|
||||||
if(via_index[i-1] > nearest_index) {
|
|
||||||
new_via_index = i-1;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// add via node
|
|
||||||
return new_via_index;
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
//function that draws a drag marker
|
|
||||||
dragTimer: new Date(),
|
|
||||||
|
|
||||||
drawDragMarker: function(event) {
|
|
||||||
if( OSRM.G.route.isShown() == false)
|
|
||||||
return;
|
|
||||||
if( OSRM.G.dragging == true )
|
|
||||||
return;
|
|
||||||
|
|
||||||
// throttle computation
|
|
||||||
if( (new Date() - OSRM.Via.dragTimer) < 25 )
|
|
||||||
return;
|
|
||||||
OSRM.Via.dragTimer = new Date();
|
|
||||||
|
|
||||||
// get distance to route
|
|
||||||
var minpoint = OSRM.G.route._current_route.route.closestLayerPoint( event.layerPoint );
|
|
||||||
var min_dist = minpoint ? minpoint._sqDist : 1000;
|
|
||||||
|
|
||||||
// get distance to markers
|
|
||||||
var mouse = event.latlng;
|
|
||||||
for(var i=0, size=OSRM.G.markers.route.length; i<size; i++) {
|
|
||||||
if(OSRM.G.markers.route[i].label=='drag')
|
|
||||||
continue;
|
|
||||||
var position = OSRM.G.markers.route[i].getPosition();
|
|
||||||
var dist = OSRM.G.map.project(mouse).distanceTo(OSRM.G.map.project(position));
|
|
||||||
if( dist < 20 )
|
|
||||||
min_dist = 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
// check whether mouse is over another marker
|
|
||||||
var pos = OSRM.G.map.layerPointToContainerPoint(event.layerPoint);
|
|
||||||
var obj = document.elementFromPoint(pos.x,pos.y);
|
|
||||||
for(var i=0, size=OSRM.G.markers.route.length; i<size; i++) {
|
|
||||||
if(OSRM.G.markers.route[i].label=='drag')
|
|
||||||
continue;
|
|
||||||
if( obj == OSRM.G.markers.route[i].marker._icon)
|
|
||||||
min_dist = 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
// special care for highlight marker
|
|
||||||
if( OSRM.G.markers.highlight.isShown() ) {
|
|
||||||
if( OSRM.G.map.project(mouse).distanceTo(OSRM.G.map.project( OSRM.G.markers.highlight.getPosition() ) ) < 20 )
|
|
||||||
min_dist = 1000;
|
|
||||||
else if( obj == OSRM.G.markers.highlight.marker._icon)
|
|
||||||
min_dist = 1000;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( min_dist < 400) {
|
|
||||||
OSRM.G.markers.dragger.setPosition( OSRM.G.map.layerPointToLatLng(minpoint) );
|
|
||||||
OSRM.G.markers.dragger.show();
|
|
||||||
} else
|
|
||||||
OSRM.G.markers.dragger.hide();
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -1,80 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Leaflet bugfixes
|
|
||||||
// [assorted bugfixes to Leaflet functions we use]
|
|
||||||
|
|
||||||
|
|
||||||
// return closest point on segment or distance to that point
|
|
||||||
L.LineUtil._sqClosestPointOnSegment = function (p, p1, p2, sqDist) {
|
|
||||||
var x = p1.x,
|
|
||||||
y = p1.y,
|
|
||||||
dx = p2.x - x,
|
|
||||||
dy = p2.y - y,
|
|
||||||
dot = dx * dx + dy * dy,
|
|
||||||
t;
|
|
||||||
|
|
||||||
if (dot > 0) {
|
|
||||||
t = ((p.x - x) * dx + (p.y - y) * dy) / dot;
|
|
||||||
|
|
||||||
if (t > 1) {
|
|
||||||
x = p2.x;
|
|
||||||
y = p2.y;
|
|
||||||
} else if (t > 0) {
|
|
||||||
x += dx * t;
|
|
||||||
y += dy * t;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
dx = p.x - x;
|
|
||||||
dy = p.y - y;
|
|
||||||
|
|
||||||
// DS_CHANGE: modified return values
|
|
||||||
if(sqDist)
|
|
||||||
return dx*dx + dy*dy;
|
|
||||||
else {
|
|
||||||
var p = new L.Point(x,y);
|
|
||||||
p._sqDist = dx*dx + dy*dy;
|
|
||||||
return p;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
// makes requestAnimFrame respect the immediate paramter -> prevents drag events after dragend events
|
|
||||||
// (alternatively: add if(!this.dragging ) return to L.Draggable._updatePosition, but must be done in leaflet.js!)
|
|
||||||
// [TODO: In Leaflet 0.4 use L.Util.cancelAnimFrame(this._animRequest) in L.Draggable._onUp() instead, also has to be done in leaflet.js!]
|
|
||||||
L.Util.requestAnimFrame = (function () {
|
|
||||||
function timeoutDefer(callback) {
|
|
||||||
window.setTimeout(callback, 1000 / 60);
|
|
||||||
}
|
|
||||||
|
|
||||||
var requestFn = window.requestAnimationFrame ||
|
|
||||||
window.webkitRequestAnimationFrame ||
|
|
||||||
window.mozRequestAnimationFrame ||
|
|
||||||
window.oRequestAnimationFrame ||
|
|
||||||
window.msRequestAnimationFrame ||
|
|
||||||
timeoutDefer;
|
|
||||||
|
|
||||||
return function (callback, context, immediate, contextEl) {
|
|
||||||
callback = context ? L.Util.bind(callback, context) : callback;
|
|
||||||
if (immediate ) { // DS_CHANGE: removed additional condition requestFn === timeoutDefer
|
|
||||||
callback();
|
|
||||||
} else {
|
|
||||||
requestFn(callback, contextEl);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
}());
|
|
||||||
@@ -1,85 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// queryable Layers control
|
|
||||||
// [simply Control.Layers extended by query functions and some fixes for touch screens]
|
|
||||||
L.Control.QueryableLayers = L.Control.Layers.extend({
|
|
||||||
|
|
||||||
// changes to leaflet behaviour
|
|
||||||
_initLayout: function () {
|
|
||||||
this._container = L.DomUtil.create('div', 'leaflet-control-layers');
|
|
||||||
L.DomEvent.disableClickPropagation(this._container); // change to Leaflet: always disable click propagation
|
|
||||||
|
|
||||||
this._form = L.DomUtil.create('form', 'leaflet-control-layers-list');
|
|
||||||
|
|
||||||
if (this.options.collapsed) {
|
|
||||||
L.DomEvent.addListener(this._container, 'mouseover', this._expand, this);
|
|
||||||
L.DomEvent.addListener(this._container, 'mouseout', this._collapse, this);
|
|
||||||
|
|
||||||
var link = this._layersLink = L.DomUtil.create('a', 'leaflet-control-layers-toggle');
|
|
||||||
link.href = '#';
|
|
||||||
link.title = 'Layers';
|
|
||||||
|
|
||||||
if (L.Browser.touch) {
|
|
||||||
L.DomEvent.addListener(link, 'click', this._expand, this);
|
|
||||||
L.DomEvent.disableClickPropagation(link); // change to Leaflet: disable click propagation
|
|
||||||
} else {
|
|
||||||
L.DomEvent.addListener(link, 'focus', this._expand, this);
|
|
||||||
}
|
|
||||||
this._map.on('movestart', this._collapse, this);
|
|
||||||
// TODO keyboard accessibility
|
|
||||||
|
|
||||||
this._container.appendChild(link);
|
|
||||||
} else {
|
|
||||||
this._expand();
|
|
||||||
}
|
|
||||||
|
|
||||||
this._baseLayersList = L.DomUtil.create('div', 'leaflet-control-layers-base', this._form);
|
|
||||||
this._separator = L.DomUtil.create('div', 'leaflet-control-layers-separator', this._form);
|
|
||||||
this._overlaysList = L.DomUtil.create('div', 'leaflet-control-layers-overlays', this._form);
|
|
||||||
|
|
||||||
this._container.appendChild(this._form);
|
|
||||||
},
|
|
||||||
|
|
||||||
// new query functionality
|
|
||||||
getActiveLayerName: function () {
|
|
||||||
var i, input, obj,
|
|
||||||
inputs = this._form.getElementsByTagName('input'),
|
|
||||||
inputsLen = inputs.length;
|
|
||||||
|
|
||||||
for (i = 0; i < inputsLen; i++) {
|
|
||||||
input = inputs[i];
|
|
||||||
obj = this._layers[input.layerId];
|
|
||||||
if (input.checked && !obj.overlay) {
|
|
||||||
return obj.name;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
getActiveLayer: function () {
|
|
||||||
var i, input, obj,
|
|
||||||
inputs = this._form.getElementsByTagName('input'),
|
|
||||||
inputsLen = inputs.length;
|
|
||||||
|
|
||||||
for (i = 0; i < inputsLen; i++) {
|
|
||||||
input = inputs[i];
|
|
||||||
obj = this._layers[input.layerId];
|
|
||||||
if (input.checked && !obj.overlay) {
|
|
||||||
return obj.layer;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1,60 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Leaflet extension: Dashed Polyline
|
|
||||||
// [adds dashed optionally dashed lines when using SVG or VML rendering]
|
|
||||||
|
|
||||||
|
|
||||||
// dashed polyline class
|
|
||||||
L.DashedPolyline = L.Polyline.extend({
|
|
||||||
initialize: function(latlngs, options) {
|
|
||||||
L.Polyline.prototype.initialize.call(this, latlngs, options);
|
|
||||||
},
|
|
||||||
|
|
||||||
options: {
|
|
||||||
dashed: true
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// svg rendering
|
|
||||||
L.DashedPolyline = !L.Browser.svg ? L.DashedPolyline : L.DashedPolyline.extend({
|
|
||||||
_updateStyle: function () {
|
|
||||||
L.Polyline.prototype._updateStyle.call(this);
|
|
||||||
if (this.options.stroke) {
|
|
||||||
if (this.options.dashed == true)
|
|
||||||
this._path.setAttribute('stroke-dasharray', '8,6');
|
|
||||||
else
|
|
||||||
this._path.setAttribute('stroke-dasharray', '');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// vml rendering
|
|
||||||
L.DashedPolyline = L.Browser.svg || !L.Browser.vml ? L.DashedPolyline : L.DashedPolyline.extend({
|
|
||||||
_updateStyle: function () {
|
|
||||||
L.Polyline.prototype._updateStyle.call(this);
|
|
||||||
if (this.options.stroke) {
|
|
||||||
if (this.options.dashed == true)
|
|
||||||
this._stroke.dashstyle = "dash";
|
|
||||||
else
|
|
||||||
this._stroke.dashstyle = "solid";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
@@ -1,72 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Leaflet extension: MouseMarker
|
|
||||||
// [marker class that propagates modifier and button presses in mouse click events and allows for changing icons]
|
|
||||||
|
|
||||||
|
|
||||||
// extended marker class
|
|
||||||
L.MouseMarker = L.Marker.extend({
|
|
||||||
initialize: function (latlng, options) {
|
|
||||||
L.Marker.prototype.initialize.apply(this, arguments);
|
|
||||||
},
|
|
||||||
|
|
||||||
switchIcon: function( icon ) {
|
|
||||||
this.options.icon = icon;
|
|
||||||
|
|
||||||
if (this._map) {
|
|
||||||
this._changeIcon();
|
|
||||||
this._reset();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
setLabel: function( label ) {
|
|
||||||
if(this._icon) {
|
|
||||||
this._icon.lastChild.innerHTML=label;
|
|
||||||
this._icon.lastChild.style.display = "block";
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_changeIcon: function () {
|
|
||||||
var options = this.options;
|
|
||||||
|
|
||||||
if (this._icon) {
|
|
||||||
this._icon = options.icon.switchIcon( this._icon );
|
|
||||||
if (this.options.clickable) // TODO: only needed until Leaflet 0.4
|
|
||||||
this._icon.className += ' leaflet-clickable';
|
|
||||||
}
|
|
||||||
|
|
||||||
var panes = this._map._panes;
|
|
||||||
|
|
||||||
if (this._shadow)
|
|
||||||
panes.shadowPane.removeChild(this._shadow);
|
|
||||||
this._shadow = options.icon.createShadow();
|
|
||||||
if (this._shadow)
|
|
||||||
panes.shadowPane.appendChild(this._shadow);
|
|
||||||
},
|
|
||||||
|
|
||||||
_onMouseClick: function (e) {
|
|
||||||
L.DomEvent.stopPropagation(e);
|
|
||||||
if (this.dragging && this.dragging.moved()) { return; }
|
|
||||||
this.fire(e.type, {
|
|
||||||
altKey: e.altKey,
|
|
||||||
ctrlKey: e.ctrlKey,
|
|
||||||
shiftKey: e.shiftKey,
|
|
||||||
button: e.button
|
|
||||||
});
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1,123 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// Leaflet extension: SwitchableIcon
|
|
||||||
// [will be an extension of L.Icon in Leaflet 0.4, for now it is a copy with added functionality]
|
|
||||||
|
|
||||||
|
|
||||||
// icon class with functions to simply switch the icon images
|
|
||||||
L.SwitchableIcon = L.Class.extend({
|
|
||||||
options: {
|
|
||||||
/*
|
|
||||||
iconUrl: (String) (required)
|
|
||||||
iconSize: (Point) (can be set through CSS)
|
|
||||||
iconAnchor: (Point) (centered by default if size is specified, can be set in CSS with negative margins)
|
|
||||||
popupAnchor: (Point) (if not specified, popup opens in the anchor point)
|
|
||||||
shadowUrl: (Point) (no shadow by default)
|
|
||||||
shadowSize: (Point)
|
|
||||||
*/
|
|
||||||
className: ''
|
|
||||||
},
|
|
||||||
|
|
||||||
initialize: function (options) {
|
|
||||||
L.Util.setOptions(this, options);
|
|
||||||
},
|
|
||||||
|
|
||||||
createIcon: function () {
|
|
||||||
return this._createIcon('icon');
|
|
||||||
},
|
|
||||||
|
|
||||||
createShadow: function () {
|
|
||||||
return this.options.shadowUrl ? this._createIcon('shadow') : null;
|
|
||||||
},
|
|
||||||
|
|
||||||
_createIcon: function (name) {
|
|
||||||
var img = this._createImg(this.options[name + 'Url']);
|
|
||||||
this._setIconStyles(img, name);
|
|
||||||
return img;
|
|
||||||
},
|
|
||||||
|
|
||||||
_setIconStyles: function (img, name) {
|
|
||||||
var options = this.options,
|
|
||||||
size = options[name + 'Size'],
|
|
||||||
anchor = options.iconAnchor;
|
|
||||||
|
|
||||||
if (!anchor && size) {
|
|
||||||
anchor = size.divideBy(2, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (name === 'shadow' && anchor && options.shadowOffset) {
|
|
||||||
anchor._add(options.shadowOffset);
|
|
||||||
}
|
|
||||||
|
|
||||||
img.className = 'leaflet-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';
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
_createImg: function (src) {
|
|
||||||
var el;
|
|
||||||
if (!L.Browser.ie6) {
|
|
||||||
el = document.createElement('div');
|
|
||||||
|
|
||||||
var img = document.createElement('img');
|
|
||||||
var num = document.createElement('div');
|
|
||||||
img.src = src;
|
|
||||||
num.className = 'via-counter';
|
|
||||||
num.innerHTML = "";
|
|
||||||
|
|
||||||
el.appendChild(img);
|
|
||||||
el.appendChild(num);
|
|
||||||
} else {
|
|
||||||
el = document.createElement('div');
|
|
||||||
el.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + src + '")';
|
|
||||||
}
|
|
||||||
return el;
|
|
||||||
},
|
|
||||||
|
|
||||||
// new functions start here
|
|
||||||
switchIcon: function (el) {
|
|
||||||
return this._switchIcon('icon', el);
|
|
||||||
},
|
|
||||||
|
|
||||||
switchShadow: function (el) {
|
|
||||||
return this.options.shadowUrl ? this._switchIcon('shadow', el) : null;
|
|
||||||
},
|
|
||||||
|
|
||||||
_switchIcon: function (name, el) {
|
|
||||||
var img = this._switchImg(this.options[name + 'Url'], el);
|
|
||||||
this._setIconStyles(img, name);
|
|
||||||
return img;
|
|
||||||
},
|
|
||||||
|
|
||||||
_switchImg: function (src, el) {
|
|
||||||
if (!L.Browser.ie6) {
|
|
||||||
el.firstChild.src = src;
|
|
||||||
} else {
|
|
||||||
el.style.filter = 'progid:DXImageTransform.Microsoft.AlphaImageLoader(src="' + src + '")';
|
|
||||||
}
|
|
||||||
return el;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1,191 +0,0 @@
|
|||||||
/*
|
|
||||||
* Portions of this code and logic copied from OpenLayers and
|
|
||||||
* redistributed under the original Clear BSD license terms:
|
|
||||||
*
|
|
||||||
* http://trac.osgeo.org/openlayers/browser/license.txt
|
|
||||||
*
|
|
||||||
* Copyright 2005-2010 OpenLayers Contributors, released under
|
|
||||||
* the Clear BSD license. See authors.txt for a list of contributors.
|
|
||||||
* All rights reserved.
|
|
||||||
*
|
|
||||||
* --
|
|
||||||
*
|
|
||||||
* Leaflet-specific modifications are released under the following
|
|
||||||
* terms:
|
|
||||||
*
|
|
||||||
* This program is free software. It comes without any warranty, to
|
|
||||||
* the extent permitted by applicable law. You can redistribute it
|
|
||||||
* and/or modify it under the terms of the Do What The Fuck You Want
|
|
||||||
* To Public License, Version 2, as published by Sam Hocevar. See
|
|
||||||
* http://sam.zoy.org/wtfpl/COPYING for more details.
|
|
||||||
*/
|
|
||||||
|
|
||||||
L.TileLayer.Bing = L.TileLayer.extend({
|
|
||||||
|
|
||||||
supportedTypes: ['Road', 'Aerial', 'AerialWithLabels'],
|
|
||||||
|
|
||||||
attributionTemplate: '<span style="display:inline-block">' +
|
|
||||||
'<a target="_blank" href="http://www.bing.com/maps/">' +
|
|
||||||
//'<img src="{logo}" /></a><br><span>{copyrights}' +
|
|
||||||
'</a><span>{copyrights}' +
|
|
||||||
'<a style="white-space: nowrap" target="_blank" '+
|
|
||||||
'href="http://www.microsoft.com/maps/product/terms.html">' +
|
|
||||||
'Terms of Use</a></span></span>',
|
|
||||||
|
|
||||||
supportedCultures: {"en":"en-US", "de":"de-DE", "fr":"fr-FR", "it":"it-IT", "es":"es-ES", "nl":"nl-BE"},
|
|
||||||
|
|
||||||
initialize: function(/*String*/ apiKey, /*String*/ mapType, /*Object*/ options) {
|
|
||||||
|
|
||||||
this._apiKey = apiKey;
|
|
||||||
this._mapType = mapType;
|
|
||||||
|
|
||||||
this._loadMetadata();
|
|
||||||
|
|
||||||
L.Util.setOptions(this, options);
|
|
||||||
},
|
|
||||||
|
|
||||||
redraw: function() {
|
|
||||||
this._reset();
|
|
||||||
this._update();
|
|
||||||
},
|
|
||||||
|
|
||||||
_loadMetadata: function() {
|
|
||||||
this._callbackId = "_l_tilelayer_bing_" + (L.TileLayer.Bing._callbackId++);
|
|
||||||
var that = this;
|
|
||||||
window[this._callbackId] = function() {
|
|
||||||
L.TileLayer.Bing.processMetadata.apply(that, arguments);
|
|
||||||
};
|
|
||||||
|
|
||||||
var params = {
|
|
||||||
key: this._apiKey,
|
|
||||||
jsonp: this._callbackId,
|
|
||||||
include: 'ImageryProviders'
|
|
||||||
},
|
|
||||||
url = "http://dev.virtualearth.net/REST/v1/Imagery/Metadata/" +
|
|
||||||
this._mapType + L.Util.getParamString(params),
|
|
||||||
script = document.createElement("script");
|
|
||||||
|
|
||||||
script.type = "text/javascript";
|
|
||||||
script.src = url;
|
|
||||||
script.id = this._callbackId;
|
|
||||||
document.getElementsByTagName("head")[0].appendChild(script);
|
|
||||||
},
|
|
||||||
|
|
||||||
_onMetadataLoaded: function() {},
|
|
||||||
|
|
||||||
onAdd: function(map, insertAtTheBottom) {
|
|
||||||
if (!this.metadata) {
|
|
||||||
this._onMetadataLoaded = L.Util.bind(function() {
|
|
||||||
L.TileLayer.prototype.onAdd.call(this, map, insertAtTheBottom);
|
|
||||||
map.on('moveend', this._updateAttribution, this);
|
|
||||||
this._updateAttribution();
|
|
||||||
}, this);
|
|
||||||
} else {
|
|
||||||
L.TileLayer.prototype.onAdd.call(this, map, insertAtTheBottom);
|
|
||||||
map.on('moveend', this._updateAttribution, this);
|
|
||||||
this._updateAttribution();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
onRemove: function(map) {
|
|
||||||
if (this._map.attributionControl) {
|
|
||||||
this._map.attributionControl.removeAttribution(this.attribution);
|
|
||||||
}
|
|
||||||
this._map.off('moveend', this._updateAttribution, this);
|
|
||||||
L.TileLayer.prototype.onRemove.call(this, map);
|
|
||||||
},
|
|
||||||
|
|
||||||
getTileUrl: function(xy, z) {
|
|
||||||
var subdomains = this.options.subdomains,
|
|
||||||
quadDigits = [],
|
|
||||||
i = z,
|
|
||||||
digit,
|
|
||||||
mask,
|
|
||||||
quadKey;
|
|
||||||
// borrowed directly from OpenLayers
|
|
||||||
for (; i > 0; --i) {
|
|
||||||
digit = '0';
|
|
||||||
mask = 1 << (i - 1);
|
|
||||||
if ((xy.x & mask) != 0) {
|
|
||||||
digit++;
|
|
||||||
}
|
|
||||||
if ((xy.y & mask) != 0) {
|
|
||||||
digit++;
|
|
||||||
digit++;
|
|
||||||
}
|
|
||||||
quadDigits.push(digit);
|
|
||||||
}
|
|
||||||
|
|
||||||
return this._url
|
|
||||||
.replace('{culture}', this.supportedCultures[OSRM.Localization.current_language] || "en-US" )
|
|
||||||
.replace('{subdomain}', subdomains[(xy.x + xy.y) % subdomains.length])
|
|
||||||
.replace('{quadkey}', quadDigits.join(""));
|
|
||||||
},
|
|
||||||
|
|
||||||
_updateAttribution: function() {
|
|
||||||
if (this._map.attributionControl) {
|
|
||||||
var metadata = this.metadata;
|
|
||||||
var res = metadata.resourceSets[0].resources[0];
|
|
||||||
var bounds = this._map.getBounds();
|
|
||||||
var providers = res.imageryProviders, zoom = this._map.getZoom() + 1,
|
|
||||||
copyrights = "", provider, i, ii, j, jj, bbox, coverage;
|
|
||||||
for (i=0,ii=providers.length; i<ii; ++i) {
|
|
||||||
provider = providers[i];
|
|
||||||
for (j=0,jj=provider.coverageAreas.length; j<jj; ++j) {
|
|
||||||
coverage = provider.coverageAreas[j];
|
|
||||||
if (zoom <= coverage.zoomMax && zoom >= coverage.zoomMin && coverage.bbox.intersects(bounds)) {
|
|
||||||
copyrights += provider.attribution + " ";
|
|
||||||
j = jj;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this._map.attributionControl.removeAttribution(this.attribution);
|
|
||||||
this._map.attributionControl._attributions = {};
|
|
||||||
this._map.attributionControl._update();
|
|
||||||
this.attribution = this.attributionTemplate
|
|
||||||
.replace('{logo}', metadata.brandLogoUri)
|
|
||||||
.replace('{copyrights}', copyrights);
|
|
||||||
this._map.attributionControl.addAttribution(this.attribution);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
L.TileLayer.Bing._callbackId = 0;
|
|
||||||
|
|
||||||
L.TileLayer.Bing.processMetadata = function(metadata) {
|
|
||||||
if (metadata.authenticationResultCode != 'ValidCredentials') {
|
|
||||||
throw "Invalid Bing Maps API Key"
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!metadata.resourceSets.length || !metadata.resourceSets[0].resources.length) {
|
|
||||||
throw "No resources returned, perhaps " + this._mapType + " is an invalid map type?";
|
|
||||||
}
|
|
||||||
|
|
||||||
if (metadata.statusCode != 200) {
|
|
||||||
throw "Bing Maps API request failed with status code " + metadata.statusCode;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.metadata = metadata;
|
|
||||||
var res = metadata.resourceSets[0].resources[0],
|
|
||||||
providers = res.imageryProviders,
|
|
||||||
i = 0,
|
|
||||||
j,
|
|
||||||
provider,
|
|
||||||
bbox,
|
|
||||||
script = document.getElementById(this._callbackId);
|
|
||||||
|
|
||||||
for (; i<providers.length; i++) {
|
|
||||||
provider = providers[i];
|
|
||||||
for (j=0; j<provider.coverageAreas.length; j++) {
|
|
||||||
bbox = provider.coverageAreas[j].bbox;
|
|
||||||
provider.coverageAreas[j].bbox = new L.LatLngBounds(new L.LatLng(bbox[0],bbox[1],true),new L.LatLng(bbox[2],bbox[3], true));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this._url = res.imageUrl;
|
|
||||||
this.options.subdomains = [].concat(res.imageUrlSubdomains);
|
|
||||||
script.parentNode.removeChild(script);
|
|
||||||
window[this._callbackId] = undefined; // cannot delete from window in IE
|
|
||||||
delete this._callbackId;
|
|
||||||
this._onMetadataLoaded();
|
|
||||||
}
|
|
||||||
@@ -1,130 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// map view/model
|
|
||||||
// [extending Leaflet L.Map with setView/fitBounds methods that respect UI visibility, better layerControl]
|
|
||||||
OSRM.MapView = L.Map.extend({
|
|
||||||
_boundsInsideView: function(bounds) {
|
|
||||||
var viewBounds = this.getBounds(),
|
|
||||||
viewSw = this.project(viewBounds.getSouthWest()),
|
|
||||||
viewNe = this.project(viewBounds.getNorthEast()),
|
|
||||||
sw = this.project(bounds.getSouthWest()),
|
|
||||||
ne = this.project(bounds.getNorthEast());
|
|
||||||
|
|
||||||
if (viewNe.y > ne.y) { // north
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (viewNe.x < ne.x) { // east
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (viewSw.y < sw.y) { // south
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
if (viewSw.x > sw.x) { // west
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
},
|
|
||||||
setViewBounds: function(bounds) {
|
|
||||||
var zoom = this.getBoundsZoom(bounds); // maximum zoom level at which the bounds fit onto the map
|
|
||||||
|
|
||||||
if( this._zoom > zoom ) { // if current zoom level is too close change zoom level and recenter
|
|
||||||
this.setView(bounds.getCenter(), zoom);
|
|
||||||
} else if(!this._boundsInsideView(bounds)){ // if current zoom level is okay, but bounds are outside the viewport, pan
|
|
||||||
this.setView(bounds.getCenter(), this._zoom);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
setViewUI: function(position, zoom, no_animation) {
|
|
||||||
if( OSRM.G.main_handle.boxVisible() ) {
|
|
||||||
var point = this.project( position, zoom);
|
|
||||||
point.x-=OSRM.G.main_handle.boxWidth()/2;
|
|
||||||
position = this.unproject(point,zoom);
|
|
||||||
}
|
|
||||||
this.setView( position, zoom, no_animation);
|
|
||||||
},
|
|
||||||
setViewBoundsUI: function(bounds) {
|
|
||||||
var southwest = bounds.getSouthWest();
|
|
||||||
var northeast = bounds.getNorthEast();
|
|
||||||
var zoom = this.getBoundsZoom(bounds);
|
|
||||||
var sw_point = this.project( southwest, zoom);
|
|
||||||
if( OSRM.G.main_handle.boxVisible() )
|
|
||||||
sw_point.x-=OSRM.G.main_handle.boxWidth()+20;
|
|
||||||
else
|
|
||||||
sw_point.x-=20;
|
|
||||||
sw_point.y+=20;
|
|
||||||
var ne_point = this.project( northeast, zoom);
|
|
||||||
ne_point.y-=20;
|
|
||||||
ne_point.x+=20;
|
|
||||||
bounds.extend( this.unproject(sw_point,zoom) );
|
|
||||||
bounds.extend( this.unproject(ne_point,zoom) );
|
|
||||||
this.setViewBounds( bounds );
|
|
||||||
},
|
|
||||||
fitBoundsUI: function(bounds) {
|
|
||||||
var southwest = bounds.getSouthWest();
|
|
||||||
var northeast = bounds.getNorthEast();
|
|
||||||
var zoom = this.getBoundsZoom(bounds);
|
|
||||||
var sw_point = this.project( southwest, zoom);
|
|
||||||
if( OSRM.G.main_handle.boxVisible() )
|
|
||||||
sw_point.x-=OSRM.G.main_handle.boxWidth()+20;
|
|
||||||
else
|
|
||||||
sw_point.x-=20;
|
|
||||||
sw_point.y+=20;
|
|
||||||
var ne_point = this.project( northeast, zoom);
|
|
||||||
ne_point.y-=20;
|
|
||||||
ne_point.x+=20;
|
|
||||||
bounds.extend( this.unproject(sw_point,zoom) );
|
|
||||||
bounds.extend( this.unproject(ne_point,zoom) );
|
|
||||||
this.fitBounds( bounds );
|
|
||||||
},
|
|
||||||
getBoundsUI: function(unbounded) {
|
|
||||||
var bounds = this.getPixelBounds();
|
|
||||||
if( OSRM.G.main_handle.boxVisible() )
|
|
||||||
bounds.min.x+=OSRM.G.main_handle.boxWidth();
|
|
||||||
var sw = this.unproject(new L.Point(bounds.min.x, bounds.max.y), this._zoom, true),
|
|
||||||
ne = this.unproject(new L.Point(bounds.max.x, bounds.min.y), this._zoom, true);
|
|
||||||
return new L.LatLngBounds(sw, ne);
|
|
||||||
},
|
|
||||||
getCenterUI: function(unbounded) {
|
|
||||||
var viewHalf = this.getSize();
|
|
||||||
if( OSRM.G.main_handle.boxVisible() )
|
|
||||||
viewHalf.x += OSRM.G.main_handle.boxWidth();
|
|
||||||
var centerPoint = this._getTopLeftPoint().add(viewHalf.divideBy(2));
|
|
||||||
|
|
||||||
return this.unproject(centerPoint, this._zoom, unbounded);
|
|
||||||
},
|
|
||||||
addLayerControl: function( layerControl ) {
|
|
||||||
if( this.layerControl )
|
|
||||||
return;
|
|
||||||
|
|
||||||
this.layerControl = layerControl;
|
|
||||||
this.addControl(this.layerControl);
|
|
||||||
},
|
|
||||||
getActiveLayerId: function() {
|
|
||||||
var tile_server_id = 0;
|
|
||||||
|
|
||||||
var tile_servers = OSRM.DEFAULTS.TILE_SERVERS;
|
|
||||||
var tile_server_name = this.layerControl.getActiveLayerName();
|
|
||||||
for(var i=0, size=tile_servers.length; i<size; i++) {
|
|
||||||
if( tile_servers[i].display_name == tile_server_name ) {
|
|
||||||
tile_server_id = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return tile_server_id;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1,167 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM markers
|
|
||||||
// [base marker class, derived highlight marker and route marker classes]
|
|
||||||
|
|
||||||
|
|
||||||
// base marker class (wraps Leaflet markers)
|
|
||||||
OSRM.Marker = function( label, style, position ) {
|
|
||||||
this.label = label ? label : "marker";
|
|
||||||
this.position = position ? position : new L.LatLng(0,0);
|
|
||||||
|
|
||||||
this.marker = new L.MouseMarker( this.position, style );
|
|
||||||
this.marker.parent = this;
|
|
||||||
|
|
||||||
this.shown = false;
|
|
||||||
this.hint = null;
|
|
||||||
};
|
|
||||||
OSRM.extend( OSRM.Marker,{
|
|
||||||
show: function() {
|
|
||||||
OSRM.G.map.addLayer(this.marker);
|
|
||||||
this.shown = true;
|
|
||||||
},
|
|
||||||
hide: function() {
|
|
||||||
OSRM.G.map.removeLayer(this.marker);
|
|
||||||
this.shown = false;
|
|
||||||
},
|
|
||||||
setPosition: function( position ) {
|
|
||||||
this.position = position;
|
|
||||||
this.marker.setLatLng( position );
|
|
||||||
this.hint = null;
|
|
||||||
},
|
|
||||||
getPosition: function() {
|
|
||||||
return this.position;
|
|
||||||
},
|
|
||||||
getLat: function() {
|
|
||||||
return this.position.lat;
|
|
||||||
},
|
|
||||||
getLng: function() {
|
|
||||||
return this.position.lng;
|
|
||||||
},
|
|
||||||
isShown: function() {
|
|
||||||
return this.shown;
|
|
||||||
},
|
|
||||||
centerView: function(zoom) {
|
|
||||||
if( zoom == undefined )
|
|
||||||
zoom = OSRM.DEFAULTS.ZOOM_LEVEL;
|
|
||||||
OSRM.G.map.setViewUI( this.position, zoom );
|
|
||||||
},
|
|
||||||
toString: function() {
|
|
||||||
return "OSRM.Marker: \""+this.label+"\", "+this.position+")";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// route marker class (draggable, invokes route drawing routines)
|
|
||||||
OSRM.RouteMarker = function ( label, style, position ) {
|
|
||||||
style.baseicon = style.icon;
|
|
||||||
OSRM.RouteMarker.prototype.base.constructor.apply( this, arguments );
|
|
||||||
this.label = label ? label : "route_marker";
|
|
||||||
|
|
||||||
this.marker.on( 'click', this.onClick );
|
|
||||||
this.marker.on( 'drag', this.onDrag );
|
|
||||||
this.marker.on( 'dragstart', this.onDragStart );
|
|
||||||
this.marker.on( 'dragend', this.onDragEnd );
|
|
||||||
};
|
|
||||||
OSRM.inheritFrom( OSRM.RouteMarker, OSRM.Marker );
|
|
||||||
OSRM.extend( OSRM.RouteMarker, {
|
|
||||||
onClick: function(e) {
|
|
||||||
for( var i=0; i<OSRM.G.markers.route.length; i++) {
|
|
||||||
if( OSRM.G.markers.route[i].marker === this ) {
|
|
||||||
OSRM.G.markers.removeMarker( i );
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
OSRM.Routing.getRoute();
|
|
||||||
OSRM.G.markers.highlight.hide();
|
|
||||||
OSRM.G.markers.dragger.hide();
|
|
||||||
},
|
|
||||||
onDrag: function(e) {
|
|
||||||
this.parent.setPosition( e.target.getLatLng() );
|
|
||||||
if(OSRM.G.markers.route.length>1)
|
|
||||||
OSRM.Routing.getRoute_Dragging();
|
|
||||||
OSRM.Geocoder.updateLocation( this.parent.label );
|
|
||||||
},
|
|
||||||
onDragStart: function(e) {
|
|
||||||
OSRM.GUI.deactivateTooltip( "dragging" );
|
|
||||||
OSRM.G.dragging = true;
|
|
||||||
this.switchIcon(this.options.dragicon);
|
|
||||||
|
|
||||||
// store id of dragged marker
|
|
||||||
for( var i=0; i<OSRM.G.markers.route.length; i++)
|
|
||||||
if( OSRM.G.markers.route[i].marker === this ) {
|
|
||||||
OSRM.G.dragid = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( this.parent != OSRM.G.markers.highlight)
|
|
||||||
OSRM.G.markers.highlight.hide();
|
|
||||||
if( this.parent != OSRM.G.markers.dragger)
|
|
||||||
OSRM.G.markers.dragger.hide();
|
|
||||||
if (OSRM.G.route.isShown())
|
|
||||||
OSRM.G.route.showOldRoute();
|
|
||||||
},
|
|
||||||
onDragEnd: function(e) {
|
|
||||||
OSRM.G.dragging = false;
|
|
||||||
this.switchIcon(this.options.baseicon);
|
|
||||||
|
|
||||||
this.parent.setPosition( e.target.getLatLng() );
|
|
||||||
if (OSRM.G.route.isShown()) {
|
|
||||||
OSRM.Routing.getRoute();
|
|
||||||
OSRM.G.route.hideOldRoute();
|
|
||||||
OSRM.G.route.hideUnnamedRoute();
|
|
||||||
} else {
|
|
||||||
OSRM.Geocoder.updateAddress(this.parent.label);
|
|
||||||
OSRM.GUI.clearResults();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
toString: function() {
|
|
||||||
return "OSRM.RouteMarker: \""+this.label+"\", "+this.position+")";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
//drag marker class (draggable, invokes route drawing routines)
|
|
||||||
OSRM.DragMarker = function ( label, style, position ) {
|
|
||||||
OSRM.DragMarker.prototype.base.constructor.apply( this, arguments );
|
|
||||||
this.label = label ? label : "drag_marker";
|
|
||||||
};
|
|
||||||
OSRM.inheritFrom( OSRM.DragMarker, OSRM.RouteMarker );
|
|
||||||
OSRM.extend( OSRM.DragMarker, {
|
|
||||||
onClick: function(e) {
|
|
||||||
if( this.parent != OSRM.G.markers.dragger)
|
|
||||||
this.parent.hide();
|
|
||||||
},
|
|
||||||
onDragStart: function(e) {
|
|
||||||
var new_via_index = OSRM.Via.findViaIndex( e.target.getLatLng() );
|
|
||||||
OSRM.G.markers.route.splice(new_via_index+1,0, this.parent );
|
|
||||||
|
|
||||||
OSRM.RouteMarker.prototype.onDragStart.call(this,e);
|
|
||||||
},
|
|
||||||
onDragEnd: function(e) {
|
|
||||||
OSRM.G.markers.route[OSRM.G.dragid] = new OSRM.RouteMarker(OSRM.C.VIA_LABEL, {draggable:true,icon:OSRM.G.icons['marker-via'],dragicon:OSRM.G.icons['marker-via-drag']}, e.target.getLatLng() );
|
|
||||||
OSRM.G.markers.route[OSRM.G.dragid].show();
|
|
||||||
|
|
||||||
OSRM.RouteMarker.prototype.onDragEnd.call(this,e);
|
|
||||||
this.parent.hide();
|
|
||||||
},
|
|
||||||
toString: function() {
|
|
||||||
return "OSRM.DragMarker: \""+this.label+"\", "+this.position+")";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1,98 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM routes
|
|
||||||
// [drawing of all types of route geometry]
|
|
||||||
|
|
||||||
|
|
||||||
// simple route class (wraps Leaflet Polyline)
|
|
||||||
OSRM.SimpleRoute = function (label, style) {
|
|
||||||
this.label = (label ? label : "route");
|
|
||||||
this.route = new L.DashedPolyline();
|
|
||||||
this.route.setLatLngs( [] );
|
|
||||||
if(style) this.route.setStyle( style );
|
|
||||||
|
|
||||||
this.shown = false;
|
|
||||||
};
|
|
||||||
OSRM.extend( OSRM.SimpleRoute,{
|
|
||||||
show: function() {
|
|
||||||
OSRM.G.map.addLayer(this.route);
|
|
||||||
this.shown = true;
|
|
||||||
},
|
|
||||||
hide: function() {
|
|
||||||
OSRM.G.map.removeLayer(this.route);
|
|
||||||
this.shown = false;
|
|
||||||
},
|
|
||||||
isShown: function() {
|
|
||||||
return this.shown;
|
|
||||||
},
|
|
||||||
getPoints: function() {
|
|
||||||
return this.route._originalPoints;
|
|
||||||
},
|
|
||||||
getPositions: function() {
|
|
||||||
return this.route.getLatLngs();
|
|
||||||
},
|
|
||||||
setPositions: function(positions) {
|
|
||||||
this.route.setLatLngs( positions );
|
|
||||||
},
|
|
||||||
setStyle: function(style) {
|
|
||||||
this.route.setStyle(style);
|
|
||||||
},
|
|
||||||
centerView: function() {
|
|
||||||
var bounds = new L.LatLngBounds( this.getPositions() );
|
|
||||||
OSRM.g.map.fitBoundsUI( bounds );
|
|
||||||
},
|
|
||||||
toString: function() {
|
|
||||||
return "OSRM.Route("+ this.label + ", " + this.route.getLatLngs().length + " points)";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
// multiroute class (wraps Leaflet LayerGroup to hold several disjoint routes)
|
|
||||||
OSRM.MultiRoute = function (label) {
|
|
||||||
this.label = (label ? label : "multiroute");
|
|
||||||
this.route = new L.LayerGroup();
|
|
||||||
|
|
||||||
this.shown = false;
|
|
||||||
};
|
|
||||||
OSRM.extend( OSRM.MultiRoute,{
|
|
||||||
show: function() {
|
|
||||||
OSRM.G.map.addLayer(this.route);
|
|
||||||
this.shown = true;
|
|
||||||
},
|
|
||||||
hide: function() {
|
|
||||||
OSRM.G.map.removeLayer(this.route);
|
|
||||||
this.shown = false;
|
|
||||||
},
|
|
||||||
isShown: function() {
|
|
||||||
return this.shown;
|
|
||||||
},
|
|
||||||
addRoute: function(positions) {
|
|
||||||
var line = new L.DashedPolyline( positions );
|
|
||||||
line.on('click', function(e) { OSRM.G.route.fire('click',e); });
|
|
||||||
this.route.addLayer( line );
|
|
||||||
},
|
|
||||||
clearRoutes: function() {
|
|
||||||
this.route.clearLayers();
|
|
||||||
},
|
|
||||||
setStyle: function(style) {
|
|
||||||
this.route.invoke('setStyle', style);
|
|
||||||
},
|
|
||||||
toString: function() {
|
|
||||||
return "OSRM.MultiRoute("+ this.label + ")";
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
Before Width: | Height: | Size: 15 KiB |
@@ -1,44 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM GUI
|
|
||||||
// [base GUI class, all other GUI modules extend this class]
|
|
||||||
|
|
||||||
|
|
||||||
OSRM.GUI = {
|
|
||||||
|
|
||||||
// initialization functions of all GUI parts
|
|
||||||
init_functions: [],
|
|
||||||
|
|
||||||
// init GUI
|
|
||||||
init: function() {
|
|
||||||
for(var i=0, size=OSRM.GUI.init_functions.length; i<size; i++) {
|
|
||||||
OSRM.GUI.init_functions[i]();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
//extend GUI class and add init functions to the array
|
|
||||||
extend: function( properties ) {
|
|
||||||
for( property in properties ) {
|
|
||||||
if( property == 'init' )
|
|
||||||
OSRM.GUI.init_functions.push( properties[property] );
|
|
||||||
else
|
|
||||||
OSRM.GUI[property] = properties[property];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
@@ -1,53 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM MainGUI
|
|
||||||
// [handles all GUI events that interact with appearance of main window]
|
|
||||||
|
|
||||||
|
|
||||||
// OSRM GUIBoxGroup
|
|
||||||
// [group UI boxes so that handles can be shown/hidden together]
|
|
||||||
|
|
||||||
OSRM.GUIBoxGroup = function() {
|
|
||||||
this._handles = [];
|
|
||||||
};
|
|
||||||
|
|
||||||
OSRM.extend( OSRM.GUIBoxGroup, {
|
|
||||||
add: function( handle ) {
|
|
||||||
this._handles.push( handle );
|
|
||||||
handle.$addToGroup(this);
|
|
||||||
},
|
|
||||||
select: function( handle ) {
|
|
||||||
for(var i=0; i< this._handles.length; i++) {
|
|
||||||
if( this._handles[i] != handle )
|
|
||||||
this._handles[i].$hideBox();
|
|
||||||
else
|
|
||||||
this._handles[i].$showBox();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
$hide: function() {
|
|
||||||
for(var i=0; i< this._handles.length; i++) {
|
|
||||||
this._handles[i].$hide();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
$show: function() {
|
|
||||||
for(var i=0; i< this._handles.length; i++) {
|
|
||||||
this._handles[i].$show();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1,134 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM GUIBoxHandle
|
|
||||||
// [performs showing and hiding of UI boxes]
|
|
||||||
|
|
||||||
OSRM.GUIBoxHandle = function( box_name, side, css, transitionStartFct, transitionEndFct ) {
|
|
||||||
// do not create handle if box does not contain a toggle button
|
|
||||||
var toggle = document.getElementById( box_name + '-toggle');
|
|
||||||
if( toggle == null ) {
|
|
||||||
console.log("[error] No toggle button for " + box_name);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// create handle DOM elements
|
|
||||||
var wrapper = document.createElement('div');
|
|
||||||
wrapper.id = box_name + '-handle-wrapper';
|
|
||||||
wrapper.className = 'box-wrapper box-handle-wrapper-'+side;
|
|
||||||
wrapper.style.cssText += css;
|
|
||||||
var content = document.createElement('div');
|
|
||||||
content.id = box_name + '-handle-content';
|
|
||||||
content.className = 'box-content box-handle-content-'+side;
|
|
||||||
var icon = document.createElement('div');
|
|
||||||
icon.id = box_name + '-handle-icon';
|
|
||||||
icon.className = 'iconic-button';
|
|
||||||
|
|
||||||
content.appendChild(icon);
|
|
||||||
wrapper.appendChild(content);
|
|
||||||
document.body.appendChild(wrapper);
|
|
||||||
|
|
||||||
// create attributes
|
|
||||||
this._box = document.getElementById( box_name + '-wrapper' );
|
|
||||||
this._class = this._box.className;
|
|
||||||
this._width = this._box.clientWidth;
|
|
||||||
this._side = side;
|
|
||||||
this._handle = wrapper;
|
|
||||||
this._box_group = null;
|
|
||||||
this._transitionEndFct = transitionEndFct;
|
|
||||||
|
|
||||||
// hide box and show handle by default
|
|
||||||
this._box.style[this._side]=-this._width+"px";
|
|
||||||
this._box_visible = false;
|
|
||||||
this._box.style.visibility="hidden";
|
|
||||||
this._handle.style.visibility="visible";
|
|
||||||
|
|
||||||
// add functionality
|
|
||||||
var full_fct = transitionStartFct ? OSRM.concat(this._toggle, transitionStartFct) : this._toggle;
|
|
||||||
var fct = OSRM.bind( this, full_fct );
|
|
||||||
toggle.onclick = fct;
|
|
||||||
icon.onclick = fct;
|
|
||||||
|
|
||||||
var full_fct = transitionEndFct ? OSRM.concat(this._onTransitionEnd, transitionEndFct) : this._onTransitionEnd;
|
|
||||||
var fct = OSRM.bind( this, full_fct );
|
|
||||||
if( OSRM.Browser.FF3==-1 && OSRM.Browser.IE6_9==-1 ) {
|
|
||||||
var box_wrapper = document.getElementById(box_name + '-wrapper');
|
|
||||||
box_wrapper.addEventListener("transitionend", fct, false);
|
|
||||||
box_wrapper.addEventListener("webkitTransitionEnd", fct, false);
|
|
||||||
box_wrapper.addEventListener("oTransitionEnd", fct, false);
|
|
||||||
box_wrapper.addEventListener("MSTransitionEnd", fct, false);
|
|
||||||
} else {
|
|
||||||
this._legacyTransitionEndFct = fct; // legacy browser support
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
OSRM.extend( OSRM.GUIBoxHandle, {
|
|
||||||
boxVisible: function() {
|
|
||||||
return this._box_visible;
|
|
||||||
},
|
|
||||||
boxWidth: function() {
|
|
||||||
return this._width;
|
|
||||||
},
|
|
||||||
|
|
||||||
$addToGroup: function(group) {
|
|
||||||
this._box_group = group;
|
|
||||||
},
|
|
||||||
$show: function() {
|
|
||||||
this._handle.style.visibility="visible";
|
|
||||||
},
|
|
||||||
$hide: function() {
|
|
||||||
this._handle.style.visibility="hidden";
|
|
||||||
},
|
|
||||||
$showBox: function() {
|
|
||||||
this._box_visible = true;
|
|
||||||
this._box.style.visibility="visible";
|
|
||||||
this._handle.style.visibility="hidden";
|
|
||||||
this._box.style[this._side]="5px";
|
|
||||||
this._transitionEndFct();
|
|
||||||
},
|
|
||||||
$hideBox: function() {
|
|
||||||
this._box_visible = false;
|
|
||||||
this._box.style.visibility="hidden";
|
|
||||||
this._handle.style.visibility="visible";
|
|
||||||
this._box.style[this._side]=-this._width+"px";
|
|
||||||
},
|
|
||||||
|
|
||||||
_toggle: function() {
|
|
||||||
this._box.className += " box-animated";
|
|
||||||
if( this._box_visible == false ) {
|
|
||||||
this._box_group.$hide();
|
|
||||||
this._box.style[this._side]="5px";
|
|
||||||
this._box.style.visibility="visible"; // already show box, so that animation is seen
|
|
||||||
} else {
|
|
||||||
this._box.style[this._side]=-this._width+"px";
|
|
||||||
}
|
|
||||||
// legacy browser support
|
|
||||||
if( OSRM.Browser.FF3!=-1 || OSRM.Browser.IE6_9!=-1 )
|
|
||||||
setTimeout(this._legacyTransitionEndFct, 0);
|
|
||||||
},
|
|
||||||
_onTransitionEnd: function() {
|
|
||||||
this._box.className = this._class;
|
|
||||||
if( this._box_visible == true ) {
|
|
||||||
this._box_group.$show();
|
|
||||||
this._box_visible = false;
|
|
||||||
this._box.style.visibility="hidden";
|
|
||||||
} else {
|
|
||||||
this._box_visible = true;
|
|
||||||
this._box.style.visibility="visible";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
@@ -1,116 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM MainGUI
|
|
||||||
// [handles all GUI events that interact with appearance of main window]
|
|
||||||
|
|
||||||
|
|
||||||
OSRM.GUI.extend( {
|
|
||||||
|
|
||||||
// init GUI
|
|
||||||
init: function() {
|
|
||||||
// init main box
|
|
||||||
var main_group = new OSRM.GUIBoxGroup();
|
|
||||||
OSRM.G.main_handle = new OSRM.GUIBoxHandle("main", "left", "left:-5px;top:5px;", OSRM.GUI.beforeMainTransition, OSRM.GUI.afterMainTransition);
|
|
||||||
main_group.add( OSRM.G.main_handle );
|
|
||||||
main_group.select( OSRM.G.main_handle );
|
|
||||||
|
|
||||||
// init additional boxes
|
|
||||||
var option_group = new OSRM.GUIBoxGroup();
|
|
||||||
var config_handle = new OSRM.GUIBoxHandle("config", "right", "right:-5px;bottom:70px;");
|
|
||||||
var mapping_handle = new OSRM.GUIBoxHandle("mapping", "right", "right:-5px;bottom:25px;");
|
|
||||||
option_group.add( config_handle );
|
|
||||||
option_group.add( mapping_handle );
|
|
||||||
option_group.select( null );
|
|
||||||
|
|
||||||
// init starting source/target
|
|
||||||
document.getElementById('gui-input-source').value = OSRM.DEFAULTS.ONLOAD_SOURCE;
|
|
||||||
document.getElementById('gui-input-target').value = OSRM.DEFAULTS.ONLOAD_TARGET;
|
|
||||||
|
|
||||||
// init units selector
|
|
||||||
OSRM.GUI.selectorInit( "gui-units-toggle", [{display:"Kilometers",value:0},{display:"Miles",value:1}], 0, OSRM.GUI.onUnitsChanged );
|
|
||||||
|
|
||||||
// query last update of data
|
|
||||||
OSRM.G.data_timestamp = "n/a";
|
|
||||||
OSRM.JSONP.call(OSRM.DEFAULTS.HOST_TIMESTAMP_URL+"?jsonp=%jsonp", OSRM.GUI.setDataTimestamp, OSRM.JSONP.empty, OSRM.DEFAULTS.JSONP_TIMEOUT, 'data_timestamp');
|
|
||||||
},
|
|
||||||
|
|
||||||
// set language dependent labels
|
|
||||||
setLabels: function() {
|
|
||||||
document.getElementById("open-josm").innerHTML = OSRM.loc("OPEN_JOSM");
|
|
||||||
document.getElementById("open-osmbugs").innerHTML = OSRM.loc("OPEN_OSMBUGS");
|
|
||||||
document.getElementById("gui-reset").innerHTML = OSRM.loc("GUI_RESET");
|
|
||||||
document.getElementById("gui-zoom").innerHTML = OSRM.loc("GUI_ZOOM");
|
|
||||||
document.getElementById("gui-reverse").innerHTML = OSRM.loc("GUI_REVERSE");
|
|
||||||
document.getElementById("gui-option-highlight-nonames-label").innerHTML = OSRM.loc("GUI_HIGHLIGHT_UNNAMED_ROADS");
|
|
||||||
document.getElementById("gui-option-show-previous-routes-label").innerHTML = OSRM.loc("GUI_SHOW_PREVIOUS_ROUTES");
|
|
||||||
document.getElementById("gui-search-source").innerHTML = OSRM.loc("GUI_SEARCH");
|
|
||||||
document.getElementById("gui-search-target").innerHTML = OSRM.loc("GUI_SEARCH");
|
|
||||||
document.getElementById("gui-search-source-label").innerHTML = OSRM.loc("GUI_START")+":";
|
|
||||||
document.getElementById("gui-search-target-label").innerHTML = OSRM.loc("GUI_END")+":";
|
|
||||||
document.getElementById("gui-input-source").title = OSRM.loc("GUI_START_TOOLTIP");
|
|
||||||
document.getElementById("gui-input-target").title = OSRM.loc("GUI_END_TOOLTIP");
|
|
||||||
document.getElementById("legal-notice").innerHTML = OSRM.loc("GUI_LEGAL_NOTICE");
|
|
||||||
document.getElementById("gui-mapping-label").innerHTML = OSRM.loc("GUI_MAPPING_TOOLS");
|
|
||||||
document.getElementById("gui-config-label").innerHTML = OSRM.loc("GUI_CONFIGURATION");
|
|
||||||
document.getElementById("gui-language-2-label").innerHTML = OSRM.loc("GUI_LANGUAGE")+":";
|
|
||||||
document.getElementById("gui-units-label").innerHTML = OSRM.loc("GUI_UNITS")+":";
|
|
||||||
document.getElementById('gui-data-timestamp').innerHTML = OSRM.loc("GUI_DATA_TIMESTAMP")+": " + OSRM.G.data_timestamp;
|
|
||||||
|
|
||||||
document.getElementById("gui-units-toggle").getElementsByTagName("option")[0].innerHTML = OSRM.loc("GUI_KILOMETERS");
|
|
||||||
document.getElementById("gui-units-toggle").getElementsByTagName("option")[1].innerHTML = OSRM.loc("GUI_MILES");
|
|
||||||
OSRM.GUI.selectorOnChange( document.getElementById("gui-units-toggle") );
|
|
||||||
},
|
|
||||||
|
|
||||||
// clear output area
|
|
||||||
clearResults: function() {
|
|
||||||
document.getElementById('information-box').innerHTML = "";
|
|
||||||
document.getElementById('information-box-header').innerHTML = "";
|
|
||||||
},
|
|
||||||
|
|
||||||
// reposition and hide zoom controls before main box animation
|
|
||||||
beforeMainTransition: function() {
|
|
||||||
var zoom_controls = OSRM.Browser.getElementsByClassName(document,'leaflet-control-zoom');
|
|
||||||
if( zoom_controls.length > 0)
|
|
||||||
zoom_controls[0].style.visibility="hidden";
|
|
||||||
},
|
|
||||||
|
|
||||||
// show zoom controls after main box animation
|
|
||||||
afterMainTransition: function() {
|
|
||||||
var zoom_controls = OSRM.Browser.getElementsByClassName(document,'leaflet-control-zoom');
|
|
||||||
if( zoom_controls.length > 0) {
|
|
||||||
zoom_controls[0].style.left = ( OSRM.G.main_handle.boxVisible() == true ? (OSRM.G.main_handle.boxWidth()+10) : "30") + "px";
|
|
||||||
zoom_controls[0].style.visibility="visible";
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// toggle distance units
|
|
||||||
onUnitsChanged: function(value) {
|
|
||||||
OSRM.Utils.setToHumanDistanceFunction(value);
|
|
||||||
OSRM.Routing.getRoute({keepAlternative:true});
|
|
||||||
},
|
|
||||||
|
|
||||||
// set timestamp of data
|
|
||||||
setDataTimestamp: function(response) {
|
|
||||||
if(!response)
|
|
||||||
return;
|
|
||||||
|
|
||||||
OSRM.G.data_timestamp = response.timestamp.slice(0,25).replace(/<\/?[^>]+(>|$)/g ,""); // discard tags
|
|
||||||
document.getElementById('gui-data-timestamp').innerHTML = OSRM.loc("GUI_DATA_TIMESTAMP")+": " + OSRM.G.data_timestamp;
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
@@ -1,162 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM Notifications
|
|
||||||
// [handles notifications: timed tooltips and exclusive notifications]
|
|
||||||
|
|
||||||
|
|
||||||
OSRM.GUI.extend( {
|
|
||||||
|
|
||||||
// tooltips
|
|
||||||
tooltips: {
|
|
||||||
// triggered in OSRM.Localization.setLanguageWrapper
|
|
||||||
localization:
|
|
||||||
{ timeout: 180000, // 30min
|
|
||||||
header: "Did you know? You can change the display language.",
|
|
||||||
body: "You can use the pulldown menu in the upper left corner to select your favorite language. " +
|
|
||||||
"<br/><br/>" +
|
|
||||||
"Don't despair if you cannot find your language of choice. " +
|
|
||||||
"If you want, you can help to provide additional translations! " +
|
|
||||||
"Visit <a href='https://github.com/DennisSchiefer/Project-OSRM-Web'>here</a> for more information."
|
|
||||||
},
|
|
||||||
// triggered in OSRM.Map.click
|
|
||||||
clicking:
|
|
||||||
{ timeout: 60000, // 1min
|
|
||||||
header: "Did you know? You can click on the map to set route markers.",
|
|
||||||
body: "You can click on the map with the left mouse button to set a source marker (green) or a target marker (red), " +
|
|
||||||
"if the source marker already exists. " +
|
|
||||||
"The address of the selected location will be displayed in the boxes to the left. " +
|
|
||||||
"<br/><br/>" +
|
|
||||||
"You can delete a marker by clicking on it again with the left mouse button."
|
|
||||||
},
|
|
||||||
// triggered in OSRM.Routing.getRoute_Dragging
|
|
||||||
dragging:
|
|
||||||
{ timeout: 120000, // 2min
|
|
||||||
header: "Did you know? You can drag each route marker on the map.",
|
|
||||||
body: "You can drag a marker by clicking on it with the left mouse button and holding the button pressed. " +
|
|
||||||
"Then you can move the marker around the map and the route will be updated instantaneously. " +
|
|
||||||
"<br/><br/>" +
|
|
||||||
"You can even create intermediate markers by dragging them off of the main route! "
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// initialize notifications and tooltip timers
|
|
||||||
init: function() {
|
|
||||||
// notifications
|
|
||||||
// [nothing to be done at the moment]
|
|
||||||
|
|
||||||
// tooltip timers
|
|
||||||
var tooltips = OSRM.GUI.tooltips;
|
|
||||||
for( id in tooltips ) {
|
|
||||||
// start timer
|
|
||||||
tooltips[id]._timer = setTimeout(
|
|
||||||
function(_id){ return function(){OSRM.GUI._showTooltip(_id);}; }(id),
|
|
||||||
tooltips[id].timeout
|
|
||||||
);
|
|
||||||
|
|
||||||
// mark tooltip as pending
|
|
||||||
tooltips[id]._pending = true;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// deactivate pending tooltip
|
|
||||||
deactivateTooltip: function(id) {
|
|
||||||
var tooltips = OSRM.GUI.tooltips;
|
|
||||||
if(tooltips[id] == undefined)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// mark tooltip as no longer pending
|
|
||||||
tooltips[id]._pending = false;
|
|
||||||
},
|
|
||||||
// show tooltip after timer expired
|
|
||||||
_showTooltip: function(id) {
|
|
||||||
var tooltips = OSRM.GUI.tooltips;
|
|
||||||
if(tooltips[id] == undefined)
|
|
||||||
return;
|
|
||||||
|
|
||||||
// only show tooltip if it is still pending
|
|
||||||
if( tooltips[id]._pending == false ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// if a notification is currently shown, restart timer
|
|
||||||
if( OSRM.GUI.isTooltipVisible() ) {
|
|
||||||
tooltips[id]._timer = setTimeout(
|
|
||||||
function(_id){ return function(){OSRM.GUI._showTooltip(_id);}; }(id),
|
|
||||||
tooltips[id].timeout
|
|
||||||
);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
// show notification
|
|
||||||
OSRM.GUI.tooltipNotify( tooltips[id].header, tooltips[id].body );
|
|
||||||
|
|
||||||
// mark tooltip as no longer pending
|
|
||||||
tooltips[id]._pending = false;
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// exclusive notification
|
|
||||||
exclusiveNotify: function( header, text, closable ){
|
|
||||||
document.getElementById('exclusive-notification-blanket').style.display = "block";
|
|
||||||
document.getElementById('exclusive-notification-label').innerHTML = header;
|
|
||||||
document.getElementById('exclusive-notification-box').innerHTML = text;
|
|
||||||
if( closable )
|
|
||||||
document.getElementById('exclusive-notification-toggle').onclick = OSRM.GUI.exclusiveDenotify;
|
|
||||||
else
|
|
||||||
document.getElementById('exclusive-notification-toggle').style.display = "none";
|
|
||||||
},
|
|
||||||
exclusiveDenotify: function() {
|
|
||||||
document.getElementById('exclusive-notification-blanket').style.display = "none";
|
|
||||||
},
|
|
||||||
|
|
||||||
|
|
||||||
// tooltip notification
|
|
||||||
tooltipNotify: function( header, text ){
|
|
||||||
document.getElementById('tooltip-notification-wrapper').style.display = "block";
|
|
||||||
document.getElementById('tooltip-notification-label').innerHTML = header;
|
|
||||||
document.getElementById('tooltip-notification-box').innerHTML = text;
|
|
||||||
document.getElementById('tooltip-notification-box').style.display = "block"; // simple trick to always start with a minimized tooltip
|
|
||||||
OSRM.GUI.tooltipResize();
|
|
||||||
|
|
||||||
document.getElementById('tooltip-notification-toggle').onclick = OSRM.GUI.tooltipDenotify;
|
|
||||||
document.getElementById('tooltip-notification-resize').onclick = OSRM.GUI.tooltipResize;
|
|
||||||
},
|
|
||||||
tooltipResize: function() {
|
|
||||||
if( document.getElementById('tooltip-notification-box').style.display == "none" ) {
|
|
||||||
document.getElementById('tooltip-notification-box').style.display = "block";
|
|
||||||
var height = document.getElementById('tooltip-notification-box').clientHeight;
|
|
||||||
document.getElementById('tooltip-notification-content').style.height = (height + 28) + "px";
|
|
||||||
document.getElementById('tooltip-notification-wrapper').style.height = (height + 48) + "px";
|
|
||||||
document.getElementById('tooltip-notification-resize').className = "iconic-button up-marker top-right-button";
|
|
||||||
} else {
|
|
||||||
document.getElementById('tooltip-notification-box').style.display = "none";
|
|
||||||
document.getElementById('tooltip-notification-content').style.height = "18px";
|
|
||||||
document.getElementById('tooltip-notification-wrapper').style.height = "38px";
|
|
||||||
document.getElementById('tooltip-notification-resize').className = "iconic-button down-marker top-right-button";
|
|
||||||
}
|
|
||||||
},
|
|
||||||
tooltipDenotify: function() {
|
|
||||||
document.getElementById('tooltip-notification-wrapper').style.display = "none";
|
|
||||||
},
|
|
||||||
isTooltipVisible: function() {
|
|
||||||
return document.getElementById('tooltip-notification-wrapper').style.display == "block";
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
@@ -1,174 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM RoutingGUI
|
|
||||||
// [handles all GUI events that interact with routing in main window]
|
|
||||||
|
|
||||||
|
|
||||||
OSRM.GUI.extend( {
|
|
||||||
|
|
||||||
// init
|
|
||||||
init: function() {
|
|
||||||
// init variables
|
|
||||||
OSRM.Utils.setToHumanDistanceFunction(OSRM.DEFAULTS.DISTANCE_FORMAT);
|
|
||||||
|
|
||||||
// init events
|
|
||||||
document.getElementById("gui-input-source").onchange = function() {OSRM.GUI.inputChanged(OSRM.C.SOURCE_LABEL);};
|
|
||||||
document.getElementById("gui-delete-source").onclick = function() {OSRM.GUI.deleteMarker(OSRM.C.SOURCE_LABEL);};
|
|
||||||
document.getElementById("gui-search-source").onclick = function() {OSRM.GUI.showMarker(OSRM.C.SOURCE_LABEL);};
|
|
||||||
|
|
||||||
document.getElementById("gui-input-target").onchange = function() {OSRM.GUI.inputChanged(OSRM.C.TARGET_LABEL);};
|
|
||||||
document.getElementById("gui-delete-target").onclick = function() {OSRM.GUI.deleteMarker(OSRM.C.TARGET_LABEL);};
|
|
||||||
document.getElementById("gui-search-target").onclick = function() {OSRM.GUI.showMarker(OSRM.C.TARGET_LABEL);};
|
|
||||||
|
|
||||||
document.getElementById("gui-reset").onclick = OSRM.GUI.resetRouting;
|
|
||||||
document.getElementById("gui-zoom").onclick = OSRM.GUI.zoomOnRoute;
|
|
||||||
document.getElementById("gui-reverse").onclick = OSRM.GUI.reverseRouting;
|
|
||||||
document.getElementById("open-josm").onclick = OSRM.GUI.openJOSM;
|
|
||||||
document.getElementById("open-osmbugs").onclick = OSRM.GUI.openOSMBugs;
|
|
||||||
document.getElementById("option-highlight-nonames").onclick = OSRM.GUI.hightlightNonames;
|
|
||||||
document.getElementById("option-show-previous-routes").onclick = OSRM.GUI.showPreviousRoutes;
|
|
||||||
},
|
|
||||||
|
|
||||||
// toggle GUI features that need a route to work
|
|
||||||
activateRouteFeatures: function() {
|
|
||||||
OSRM.Printing.activate();
|
|
||||||
document.getElementById("gui-zoom").className = "button";
|
|
||||||
},
|
|
||||||
deactivateRouteFeatures: function() {
|
|
||||||
OSRM.Printing.deactivate();
|
|
||||||
document.getElementById("gui-zoom").className = "button-inactive";
|
|
||||||
},
|
|
||||||
|
|
||||||
// click: button "reset"
|
|
||||||
resetRouting: function() {
|
|
||||||
document.getElementById('gui-input-source').value = "";
|
|
||||||
document.getElementById('gui-input-target').value = "";
|
|
||||||
|
|
||||||
OSRM.G.route.reset();
|
|
||||||
OSRM.G.markers.reset();
|
|
||||||
|
|
||||||
document.getElementById('information-box').innerHTML = "";
|
|
||||||
document.getElementById('information-box-header').innerHTML = "";
|
|
||||||
|
|
||||||
OSRM.JSONP.reset();
|
|
||||||
},
|
|
||||||
|
|
||||||
// click: button "reverse"
|
|
||||||
reverseRouting: function() {
|
|
||||||
// invert input boxes
|
|
||||||
var tmp = document.getElementById("gui-input-source").value;
|
|
||||||
document.getElementById("gui-input-source").value = document.getElementById("gui-input-target").value;
|
|
||||||
document.getElementById("gui-input-target").value = tmp;
|
|
||||||
|
|
||||||
// recompute route if needed
|
|
||||||
if( OSRM.G.route.isShown() ) {
|
|
||||||
OSRM.G.markers.route.reverse();
|
|
||||||
OSRM.Routing.getRoute_Reversed(); // temporary route reversal for query, actual reversal done after receiving response
|
|
||||||
OSRM.G.markers.route.reverse();
|
|
||||||
OSRM.G.markers.highlight.hide();
|
|
||||||
OSRM.RoutingDescription.showSimple( OSRM.G.response );
|
|
||||||
|
|
||||||
// simply reverse markers
|
|
||||||
} else {
|
|
||||||
OSRM.G.markers.reverseMarkers();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// click: button "show"
|
|
||||||
showMarker: function(marker_id) {
|
|
||||||
if( OSRM.JSONP.fences["geocoder_source"] || OSRM.JSONP.fences["geocoder_target"] ) // needed when focus was on input box and user clicked on button
|
|
||||||
return;
|
|
||||||
|
|
||||||
if( marker_id == OSRM.C.SOURCE_LABEL && OSRM.G.markers.hasSource() )
|
|
||||||
OSRM.G.markers.route[0].centerView();
|
|
||||||
else if( marker_id == OSRM.C.TARGET_LABEL && OSRM.G.markers.hasTarget() )
|
|
||||||
OSRM.G.markers.route[OSRM.G.markers.route.length-1].centerView();
|
|
||||||
},
|
|
||||||
|
|
||||||
// changed: any inputbox (is called when enter is pressed [after] or focus is lost [before])
|
|
||||||
inputChanged: function(marker_id) {
|
|
||||||
if( marker_id == OSRM.C.SOURCE_LABEL)
|
|
||||||
OSRM.Geocoder.call(OSRM.C.SOURCE_LABEL, document.getElementById('gui-input-source').value);
|
|
||||||
else if( marker_id == OSRM.C.TARGET_LABEL)
|
|
||||||
OSRM.Geocoder.call(OSRM.C.TARGET_LABEL, document.getElementById('gui-input-target').value);
|
|
||||||
},
|
|
||||||
|
|
||||||
// click: button "open JOSM"
|
|
||||||
openJOSM: function() {
|
|
||||||
var center = OSRM.G.map.getCenterUI();
|
|
||||||
var bounds = OSRM.G.map.getBoundsUI();
|
|
||||||
|
|
||||||
var xdelta = Math.min(0.02, Math.abs(bounds.getSouthWest().lng - center.lng) );
|
|
||||||
var ydelta = Math.min(0.01, Math.abs(bounds.getSouthWest().lat - center.lat) );
|
|
||||||
|
|
||||||
var p = [ 'left=' + (center.lng - xdelta).toFixed(6), 'bottom=' + (center.lat - ydelta).toFixed(6), 'right=' + (center.lng + xdelta).toFixed(6), 'top=' + (center.lat + ydelta).toFixed(6)];
|
|
||||||
var url = 'http://127.0.0.1:8111/load_and_zoom?' + p.join('&');
|
|
||||||
|
|
||||||
var frame = document.getElementById('josm-frame');
|
|
||||||
if(!frame) {
|
|
||||||
frame = L.DomUtil.create('iframe', null, document.body);
|
|
||||||
frame.style.display = "none";
|
|
||||||
frame.id = 'josm-frame';
|
|
||||||
}
|
|
||||||
frame.src = url;
|
|
||||||
},
|
|
||||||
|
|
||||||
//click: button "open OSM Bugs"
|
|
||||||
openOSMBugs: function() {
|
|
||||||
var position = OSRM.G.map.getCenterUI();
|
|
||||||
window.open( "http://osmbugs.org/?lat="+position.lat.toFixed(6)+"&lon="+position.lng.toFixed(6)+"&zoom="+OSRM.G.map.getZoom() );
|
|
||||||
},
|
|
||||||
|
|
||||||
//click: button "delete marker"
|
|
||||||
deleteMarker: function(marker_id) {
|
|
||||||
var id = null;
|
|
||||||
if(marker_id == 'source' && OSRM.G.markers.hasSource() )
|
|
||||||
id = 0;
|
|
||||||
else if(marker_id == 'target' && OSRM.G.markers.hasTarget() )
|
|
||||||
id = OSRM.G.markers.route.length-1;
|
|
||||||
if( id == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
OSRM.G.markers.removeMarker( id );
|
|
||||||
OSRM.Routing.getRoute();
|
|
||||||
OSRM.G.markers.highlight.hide();
|
|
||||||
},
|
|
||||||
|
|
||||||
//click: checkbox "show previous routes"
|
|
||||||
showPreviousRoutes: function(value) {
|
|
||||||
if( document.getElementById('option-show-previous-routes').checked == false)
|
|
||||||
OSRM.G.route.deactivateHistoryRoutes();
|
|
||||||
else
|
|
||||||
OSRM.G.route.activateHistoryRoutes();
|
|
||||||
},
|
|
||||||
|
|
||||||
//click: button "zoom on route"
|
|
||||||
zoomOnRoute: function() {
|
|
||||||
if( OSRM.G.route.isShown() == false )
|
|
||||||
return;
|
|
||||||
|
|
||||||
var bounds = new L.LatLngBounds( OSRM.G.route._current_route.getPositions() );
|
|
||||||
OSRM.G.map.fitBoundsUI(bounds);
|
|
||||||
},
|
|
||||||
|
|
||||||
//click: toggle highlighting unnamed streets
|
|
||||||
hightlightNonames: function() {
|
|
||||||
OSRM.Routing.getRoute_Redraw({keepAlternative:true});
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM selector
|
|
||||||
// [create special selector elements]
|
|
||||||
|
|
||||||
|
|
||||||
OSRM.GUI.extend( {
|
|
||||||
|
|
||||||
// initialize selector with all options and our look&feel
|
|
||||||
selectorInit: function(id, options, selected, onchange_fct) {
|
|
||||||
// create dropdown menu
|
|
||||||
var select = document.getElementById(id);
|
|
||||||
select.className += " styled-select-helper base-font";
|
|
||||||
select.onchange = function() { OSRM.GUI.selectorOnChange(this); onchange_fct(this.value); };
|
|
||||||
|
|
||||||
// fill dropdown menu
|
|
||||||
for(var i=0, size=options.length; i<size; i++) {
|
|
||||||
var option=document.createElement("option");
|
|
||||||
option.innerHTML = options[i].display;
|
|
||||||
option.value = options[i].value;
|
|
||||||
select.appendChild(option);
|
|
||||||
}
|
|
||||||
select.value = options[selected].value;
|
|
||||||
|
|
||||||
// create visible dropdown menu
|
|
||||||
var textnode = document.createTextNode( options[selected].display );
|
|
||||||
var myspan = document.createElement("span");
|
|
||||||
myspan.className = "styled-select base-font";
|
|
||||||
myspan.id = "styled-select-" + select.id;
|
|
||||||
myspan.appendChild(textnode);
|
|
||||||
select.parentNode.insertBefore(myspan, select);
|
|
||||||
myspan.style.width = (select.offsetWidth-2)+"px";
|
|
||||||
myspan.style.height = (select.offsetHeight)+"px"; // clientHeight gives the height of the opened dropbox!
|
|
||||||
},
|
|
||||||
|
|
||||||
// required behaviour of selector on change to switch shown name
|
|
||||||
selectorOnChange: function(select) {
|
|
||||||
var option = select.getElementsByTagName("option");
|
|
||||||
for(var i = 0; i < option.length; i++)
|
|
||||||
if(option[i].selected == true) {
|
|
||||||
document.getElementById("styled-select-" + select.id).childNodes[0].nodeValue = option[i].childNodes[0].nodeValue;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
// change selector value
|
|
||||||
selectorChange: function(select, value) {
|
|
||||||
select.value = value;
|
|
||||||
OSRM.GUI.selectorOnChange(select);
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
Before Width: | Height: | Size: 402 B |
|
Before Width: | Height: | Size: 484 B |
|
Before Width: | Height: | Size: 483 B |
|
Before Width: | Height: | Size: 397 B |
|
Before Width: | Height: | Size: 493 B |
|
Before Width: | Height: | Size: 482 B |
|
Before Width: | Height: | Size: 707 B |
|
Before Width: | Height: | Size: 221 B |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 1.0 KiB |
|
Before Width: | Height: | Size: 329 B |
|
Before Width: | Height: | Size: 378 B |
|
Before Width: | Height: | Size: 347 B |
|
Before Width: | Height: | Size: 462 B |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 1.4 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 347 B |
|
Before Width: | Height: | Size: 349 B |
|
Before Width: | Height: | Size: 350 B |
|
Before Width: | Height: | Size: 322 B |
|
Before Width: | Height: | Size: 477 B |
|
Before Width: | Height: | Size: 480 B |
|
Before Width: | Height: | Size: 488 B |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 446 B |
|
Before Width: | Height: | Size: 955 B |
|
Before Width: | Height: | Size: 973 B |
|
Before Width: | Height: | Size: 823 B |
|
Before Width: | Height: | Size: 834 B |
|
Before Width: | Height: | Size: 861 B |
|
Before Width: | Height: | Size: 897 B |
|
Before Width: | Height: | Size: 937 B |
|
Before Width: | Height: | Size: 1018 B |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 2.9 KiB |
|
Before Width: | Height: | Size: 3.6 KiB |
|
Before Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 963 B |
|
Before Width: | Height: | Size: 959 B |
@@ -1,323 +0,0 @@
|
|||||||
/* required styles */
|
|
||||||
|
|
||||||
.leaflet-map-pane,
|
|
||||||
.leaflet-tile,
|
|
||||||
.leaflet-marker-icon,
|
|
||||||
.leaflet-marker-shadow,
|
|
||||||
.leaflet-tile-pane,
|
|
||||||
.leaflet-overlay-pane,
|
|
||||||
.leaflet-shadow-pane,
|
|
||||||
.leaflet-marker-pane,
|
|
||||||
.leaflet-popup-pane,
|
|
||||||
.leaflet-overlay-pane svg,
|
|
||||||
.leaflet-zoom-box,
|
|
||||||
.leaflet-image-layer { /* TODO optimize classes */
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
.leaflet-container {
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.leaflet-tile-pane, .leaflet-container {
|
|
||||||
-webkit-transform: translate3d(0,0,0);
|
|
||||||
}
|
|
||||||
.leaflet-tile,
|
|
||||||
.leaflet-marker-icon,
|
|
||||||
.leaflet-marker-shadow {
|
|
||||||
-moz-user-select: none;
|
|
||||||
-webkit-user-select: none;
|
|
||||||
user-select: none;
|
|
||||||
}
|
|
||||||
.leaflet-marker-icon,
|
|
||||||
.leaflet-marker-shadow {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.leaflet-clickable {
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
.leaflet-container img {
|
|
||||||
max-width: none !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.leaflet-tile-pane { z-index: 2; }
|
|
||||||
|
|
||||||
.leaflet-objects-pane { z-index: 3; }
|
|
||||||
.leaflet-overlay-pane { z-index: 4; }
|
|
||||||
.leaflet-shadow-pane { z-index: 5; }
|
|
||||||
.leaflet-marker-pane { z-index: 6; }
|
|
||||||
.leaflet-popup-pane { z-index: 7; }
|
|
||||||
|
|
||||||
.leaflet-zoom-box {
|
|
||||||
width: 0;
|
|
||||||
height: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.leaflet-tile {
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
.leaflet-tile-loaded {
|
|
||||||
visibility: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
a.leaflet-active {
|
|
||||||
outline: 2px solid orange;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Leaflet controls */
|
|
||||||
|
|
||||||
.leaflet-control {
|
|
||||||
position: relative;
|
|
||||||
z-index: 7;
|
|
||||||
}
|
|
||||||
.leaflet-top,
|
|
||||||
.leaflet-bottom {
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
.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-control-zoom, .leaflet-control-layers {
|
|
||||||
-moz-border-radius: 7px;
|
|
||||||
-webkit-border-radius: 7px;
|
|
||||||
border-radius: 7px;
|
|
||||||
}
|
|
||||||
.leaflet-control-zoom {
|
|
||||||
padding: 5px;
|
|
||||||
background: rgba(0, 0, 0, 0.25);
|
|
||||||
}
|
|
||||||
.leaflet-control-zoom a {
|
|
||||||
background-color: rgba(255, 255, 255, 0.75);
|
|
||||||
}
|
|
||||||
.leaflet-control-zoom a, .leaflet-control-layers a {
|
|
||||||
background-position: 50% 50%;
|
|
||||||
background-repeat: no-repeat;
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
.leaflet-control-zoom a {
|
|
||||||
-moz-border-radius: 4px;
|
|
||||||
-webkit-border-radius: 4px;
|
|
||||||
border-radius: 4px;
|
|
||||||
width: 19px;
|
|
||||||
height: 19px;
|
|
||||||
}
|
|
||||||
.leaflet-control-zoom a:hover {
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
.leaflet-big-buttons .leaflet-control-zoom a {
|
|
||||||
width: 27px;
|
|
||||||
height: 27px;
|
|
||||||
}
|
|
||||||
.leaflet-control-zoom-in {
|
|
||||||
background-image: url(images/zoom-in.png);
|
|
||||||
margin-bottom: 5px;
|
|
||||||
}
|
|
||||||
.leaflet-control-zoom-out {
|
|
||||||
background-image: url(images/zoom-out.png);
|
|
||||||
}
|
|
||||||
|
|
||||||
.leaflet-control-layers {
|
|
||||||
-moz-box-shadow: 0 0 7px #999;
|
|
||||||
-webkit-box-shadow: 0 0 7px #999;
|
|
||||||
box-shadow: 0 0 7px #999;
|
|
||||||
|
|
||||||
background: #f8f8f9;
|
|
||||||
}
|
|
||||||
.leaflet-control-layers a {
|
|
||||||
background-image: url(images/layers.png);
|
|
||||||
width: 36px;
|
|
||||||
height: 36px;
|
|
||||||
}
|
|
||||||
.leaflet-big-buttons .leaflet-control-layers a {
|
|
||||||
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;
|
|
||||||
font: 12px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
|
||||||
color: #333;
|
|
||||||
background: #fff;
|
|
||||||
}
|
|
||||||
.leaflet-control-layers input {
|
|
||||||
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-container .leaflet-control-attribution {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0 5px;
|
|
||||||
|
|
||||||
font: 11px/1.5 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
|
||||||
color: #333;
|
|
||||||
|
|
||||||
background-color: rgba(255, 255, 255, 0.7);
|
|
||||||
|
|
||||||
-moz-box-shadow: 0 0 7px #ccc;
|
|
||||||
-webkit-box-shadow: 0 0 7px #ccc;
|
|
||||||
box-shadow: 0 0 7px #ccc;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Fade animations */
|
|
||||||
|
|
||||||
.leaflet-fade-anim .leaflet-tile {
|
|
||||||
opacity: 0;
|
|
||||||
|
|
||||||
-webkit-transition: opacity 0.2s linear;
|
|
||||||
-moz-transition: opacity 0.2s linear;
|
|
||||||
-o-transition: opacity 0.2s linear;
|
|
||||||
transition: opacity 0.2s linear;
|
|
||||||
}
|
|
||||||
.leaflet-fade-anim .leaflet-tile-loaded {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.leaflet-fade-anim .leaflet-popup {
|
|
||||||
opacity: 0;
|
|
||||||
|
|
||||||
-webkit-transition: opacity 0.2s linear;
|
|
||||||
-moz-transition: opacity 0.2s linear;
|
|
||||||
-o-transition: opacity 0.2s linear;
|
|
||||||
transition: opacity 0.2s linear;
|
|
||||||
}
|
|
||||||
.leaflet-fade-anim .leaflet-map-pane .leaflet-popup {
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.leaflet-zoom-anim .leaflet-tile {
|
|
||||||
-webkit-transition: none;
|
|
||||||
-moz-transition: none;
|
|
||||||
-o-transition: none;
|
|
||||||
transition: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.leaflet-zoom-anim .leaflet-objects-pane {
|
|
||||||
visibility: hidden;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Popup layout */
|
|
||||||
|
|
||||||
.leaflet-popup {
|
|
||||||
position: absolute;
|
|
||||||
text-align: center;
|
|
||||||
-webkit-transform: translate3d(0,0,0);
|
|
||||||
}
|
|
||||||
.leaflet-popup-content-wrapper {
|
|
||||||
padding: 1px;
|
|
||||||
text-align: left;
|
|
||||||
}
|
|
||||||
.leaflet-popup-content {
|
|
||||||
margin: 19px;
|
|
||||||
}
|
|
||||||
.leaflet-popup-tip-container {
|
|
||||||
margin: 0 auto;
|
|
||||||
width: 40px;
|
|
||||||
height: 16px;
|
|
||||||
position: relative;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.leaflet-popup-tip {
|
|
||||||
width: 15px;
|
|
||||||
height: 15px;
|
|
||||||
padding: 1px;
|
|
||||||
|
|
||||||
margin: -8px auto 0;
|
|
||||||
|
|
||||||
-moz-transform: rotate(45deg);
|
|
||||||
-webkit-transform: rotate(45deg);
|
|
||||||
-ms-transform: rotate(45deg);
|
|
||||||
-o-transform: rotate(45deg);
|
|
||||||
transform: rotate(45deg);
|
|
||||||
}
|
|
||||||
.leaflet-popup-close-button {
|
|
||||||
position: absolute;
|
|
||||||
top: 9px;
|
|
||||||
right: 9px;
|
|
||||||
|
|
||||||
width: 10px;
|
|
||||||
height: 10px;
|
|
||||||
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
.leaflet-popup-content p {
|
|
||||||
margin: 18px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* Visual appearance */
|
|
||||||
|
|
||||||
.leaflet-container {
|
|
||||||
background: #ddd;
|
|
||||||
}
|
|
||||||
.leaflet-container a {
|
|
||||||
color: #0078A8;
|
|
||||||
}
|
|
||||||
.leaflet-zoom-box {
|
|
||||||
border: 2px dotted #05f;
|
|
||||||
background: white;
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
.leaflet-popup-content-wrapper, .leaflet-popup-tip {
|
|
||||||
background: white;
|
|
||||||
|
|
||||||
box-shadow: 0 1px 10px #888;
|
|
||||||
-moz-box-shadow: 0 1px 10px #888;
|
|
||||||
-webkit-box-shadow: 0 1px 14px #999;
|
|
||||||
}
|
|
||||||
.leaflet-popup-content-wrapper {
|
|
||||||
-moz-border-radius: 20px;
|
|
||||||
-webkit-border-radius: 20px;
|
|
||||||
border-radius: 20px;
|
|
||||||
}
|
|
||||||
.leaflet-popup-content {
|
|
||||||
font: 12px/1.4 "Helvetica Neue", Arial, Helvetica, sans-serif;
|
|
||||||
}
|
|
||||||
.leaflet-popup-close-button {
|
|
||||||
background: white url(images/popup-close.png);
|
|
||||||
}
|
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
.leaflet-tile {
|
|
||||||
filter: inherit;
|
|
||||||
}
|
|
||||||
|
|
||||||
.leaflet-vml-shape {
|
|
||||||
width: 1px;
|
|
||||||
height: 1px;
|
|
||||||
}
|
|
||||||
.lvml {
|
|
||||||
behavior: url(#default#VML);
|
|
||||||
display: inline-block;
|
|
||||||
position: absolute;
|
|
||||||
}
|
|
||||||
|
|
||||||
.leaflet-control {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.leaflet-popup-tip {
|
|
||||||
width: 21px;
|
|
||||||
_width: 27px;
|
|
||||||
margin: 0 auto;
|
|
||||||
_margin-top: -3px;
|
|
||||||
|
|
||||||
filter: progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678);
|
|
||||||
-ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678)";
|
|
||||||
}
|
|
||||||
.leaflet-popup-tip-container {
|
|
||||||
margin-top: -1px;
|
|
||||||
}
|
|
||||||
.leaflet-popup-content-wrapper, .leaflet-popup-tip {
|
|
||||||
border: 1px solid #bbb;
|
|
||||||
}
|
|
||||||
|
|
||||||
.leaflet-control-zoom {
|
|
||||||
filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#3F000000',EndColorStr='#3F000000');
|
|
||||||
}
|
|
||||||
.leaflet-control-zoom a {
|
|
||||||
background-color: #eee;
|
|
||||||
}
|
|
||||||
.leaflet-control-zoom a:hover {
|
|
||||||
background-color: #fff;
|
|
||||||
}
|
|
||||||
.leaflet-control-layers-toggle {
|
|
||||||
}
|
|
||||||
.leaflet-control-attribution, .leaflet-control-layers {
|
|
||||||
background: white;
|
|
||||||
}
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM localization
|
|
||||||
// [German language support]
|
|
||||||
|
|
||||||
|
|
||||||
OSRM.Localization["de"] = {
|
|
||||||
// own language
|
|
||||||
"LANGUAGE": "Deutsch",
|
|
||||||
//gui
|
|
||||||
"GUI_START": "Start",
|
|
||||||
"GUI_END": "Ziel",
|
|
||||||
"GUI_RESET": "Reset",
|
|
||||||
"GUI_ZOOM": "Zoom auf Route",
|
|
||||||
"GUI_SEARCH": "Zeigen",
|
|
||||||
"GUI_REVERSE": "Umdrehen",
|
|
||||||
"GUI_START_TOOLTIP": "Startposition eingeben",
|
|
||||||
"GUI_END_TOOLTIP": "Zielposition eingeben",
|
|
||||||
"GUI_LEGAL_NOTICE": "GUI2 v"+OSRM.VERSION+" "+OSRM.DATE+" - OSRM hosting by <a href='http://algo2.iti.kit.edu/'>KIT</a> - Geocoder by <a href='http://www.osm.org/'>OSM</a>",
|
|
||||||
//config
|
|
||||||
"GUI_CONFIGURATION": "Einstellungen",
|
|
||||||
"GUI_LANGUAGE": "Sprache",
|
|
||||||
"GUI_UNITS": "Einheiten",
|
|
||||||
"GUI_KILOMETERS": "Kilometer",
|
|
||||||
"GUI_MILES": "Meilen",
|
|
||||||
"GUI_DATA_TIMESTAMP": "data",
|
|
||||||
// mapping
|
|
||||||
"GUI_MAPPING_TOOLS": "Kartenwerkzeuge",
|
|
||||||
"GUI_HIGHLIGHT_UNNAMED_ROADS": "Unbenannte Straßen hervorheben",
|
|
||||||
"GUI_SHOW_PREVIOUS_ROUTES": "Frühere Routen zeigen",
|
|
||||||
"OPEN_JOSM": "JOSM",
|
|
||||||
"OPEN_OSMBUGS": "OSM Bugs",
|
|
||||||
// geocoder
|
|
||||||
"SEARCH_RESULTS": "Suchergebnisse",
|
|
||||||
"FOUND_X_RESULTS": "%i Ergebnisse gefunden",
|
|
||||||
"TIMED_OUT": "Zeitüberschreitung",
|
|
||||||
"NO_RESULTS_FOUND": "Keine Ergebnisse gefunden",
|
|
||||||
"NO_RESULTS_FOUND_SOURCE": "Keine Ergebnisse gefunden für Start",
|
|
||||||
"NO_RESULTS_FOUND_TARGET": "Keine Ergebnisse gefunden für Ziel",
|
|
||||||
// routing
|
|
||||||
"ROUTE_DESCRIPTION": "Routenbeschreibung",
|
|
||||||
"GET_LINK_TO_ROUTE": "Generiere Link",
|
|
||||||
"GENERATE_LINK_TO_ROUTE": "Warte auf Antwort",
|
|
||||||
"LINK_TO_ROUTE_TIMEOUT": "nicht möglich",
|
|
||||||
"GPX_FILE": "GPX Datei",
|
|
||||||
"DISTANCE": "Distanz",
|
|
||||||
"DURATION": "Dauer",
|
|
||||||
"YOUR_ROUTE_IS_BEING_COMPUTED": "Ihre Route wird berechnet",
|
|
||||||
"NO_ROUTE_FOUND": "Keine Route hierher möglich",
|
|
||||||
// printing
|
|
||||||
"OVERVIEW_MAP": "Übersichtskarte",
|
|
||||||
"NO_ROUTE_SELECTED": "Keine Route ausgewählt",
|
|
||||||
// directions
|
|
||||||
"N": "Norden",
|
|
||||||
"E": "Ost",
|
|
||||||
"S": "Süden",
|
|
||||||
"W": "Westen",
|
|
||||||
"NE": "Nordost",
|
|
||||||
"SE": "Südost",
|
|
||||||
"SW": "Südwest",
|
|
||||||
"NW": "Nordwest",
|
|
||||||
// driving directions
|
|
||||||
// %s: road name
|
|
||||||
// %d: direction
|
|
||||||
// [*]: will only be printed when there actually is a road name
|
|
||||||
"DIRECTION_0":"Unbekannte Anweisung[ auf <b>%s</b>]",
|
|
||||||
"DIRECTION_1":"Geradeaus weiterfahren[ auf <b>%s</b>]",
|
|
||||||
"DIRECTION_2":"Leicht rechts abbiegen[ auf <b>%s</b>]",
|
|
||||||
"DIRECTION_3":"Rechts abbiegen[ auf <b>%s</b>]",
|
|
||||||
"DIRECTION_4":"Scharf rechts abbiegen[ auf <b>%s</b>]",
|
|
||||||
"DIRECTION_5":"Wenden[ auf <b>%s</b>]",
|
|
||||||
"DIRECTION_6":"Scharf links abbiegen[ auf <b>%s</b>]",
|
|
||||||
"DIRECTION_7":"Links abbiegen[ auf <b>%s</b>]",
|
|
||||||
"DIRECTION_8":"Leicht links abbiegen[ auf <b>%s</b>]",
|
|
||||||
"DIRECTION_10":"Fahren Sie Richtung <b>%d</b>[ auf <b>%s</b>]",
|
|
||||||
"DIRECTION_11-1":"In den Kreisverkehr einfahren und bei erster Möglichkeit[ in Richtung <b>%s</b>] verlassen",
|
|
||||||
"DIRECTION_11-2":"In den Kreisverkehr einfahren und bei zweiter Möglichkeit[ in Richtung <b>%s</b>] verlassen",
|
|
||||||
"DIRECTION_11-3":"In den Kreisverkehr einfahren und bei dritter Möglichkeit[ in Richtung <b>%s</b>] verlassen",
|
|
||||||
"DIRECTION_11-4":"In den Kreisverkehr einfahren und bei vierter Möglichkeit[ in Richtung <b>%s</b>] verlassen",
|
|
||||||
"DIRECTION_11-5":"In den Kreisverkehr einfahren und bei fünfter Möglichkeit[ in Richtung <b>%s</b>] verlassen",
|
|
||||||
"DIRECTION_11-6":"In den Kreisverkehr einfahren und bei sechster Möglichkeit[ in Richtung <b>%s</b>] verlassen",
|
|
||||||
"DIRECTION_11-7":"In den Kreisverkehr einfahren und bei siebter Möglichkeit[ in Richtung <b>%s</b>] verlassen",
|
|
||||||
"DIRECTION_11-8":"In den Kreisverkehr einfahren und bei achter Möglichkeit[ in Richtung <b>%s</b>] verlassen",
|
|
||||||
"DIRECTION_11-9":"In den Kreisverkehr einfahren und bei neunter Möglichkeit[ in Richtung <b>%s</b>] verlassen",
|
|
||||||
"DIRECTION_11-x":"In den Kreisverkehr einfahren und bei einer der vielen Möglichkeiten[ in Richtung <b>%s</b>] verlassen",
|
|
||||||
"DIRECTION_15":"Sie haben Ihr Ziel erreicht"
|
|
||||||
};
|
|
||||||
|
|
||||||
// set GUI language on load
|
|
||||||
if( OSRM.DEFAULTS.LANUGAGE_ONDEMAND_RELOADING==true )
|
|
||||||
OSRM.Localization.setLanguage("de");
|
|
||||||
@@ -1,106 +0,0 @@
|
|||||||
/*
|
|
||||||
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
|
|
||||||
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 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, write to the Free Software
|
|
||||||
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
|
||||||
or see http://www.gnu.org/licenses/agpl.txt.
|
|
||||||
*/
|
|
||||||
|
|
||||||
// OSRM localization
|
|
||||||
// [Danish language support]
|
|
||||||
|
|
||||||
|
|
||||||
OSRM.Localization["dk"] = {
|
|
||||||
// own language
|
|
||||||
"LANGUAGE": "Dansk",
|
|
||||||
//gui
|
|
||||||
"GUI_START": "Start",
|
|
||||||
"GUI_END": "Destination",
|
|
||||||
"GUI_RESET": "Nulstil",
|
|
||||||
"GUI_ZOOM": "Zoom på Rute",
|
|
||||||
"GUI_SEARCH": "Vis",
|
|
||||||
"GUI_REVERSE": "Omvendt",
|
|
||||||
"GUI_START_TOOLTIP": "Indtast start",
|
|
||||||
"GUI_END_TOOLTIP": "Indtast destination",
|
|
||||||
"GUI_LEGAL_NOTICE": "GUI2 v"+OSRM.VERSION+" "+OSRM.DATE+" - OSRM hosting af <a href='http://algo2.iti.kit.edu/'>KIT</a> - Geocoder af <a href='http://www.osm.org/'>OSM</a>",
|
|
||||||
//config
|
|
||||||
"GUI_CONFIGURATION": "Konfiguration",
|
|
||||||
"GUI_LANGUAGE": "Sprog",
|
|
||||||
"GUI_UNITS": "Enheder",
|
|
||||||
"GUI_KILOMETERS": "Kilometer",
|
|
||||||
"GUI_MILES": "Miles",
|
|
||||||
"GUI_DATA_TIMESTAMP": "data",
|
|
||||||
// mapping
|
|
||||||
"GUI_MAPPING_TOOLS": "Kortlægnings værktøjer",
|
|
||||||
"GUI_HIGHLIGHT_UNNAMED_ROADS": "Fremhæv unavngivne veje",
|
|
||||||
"GUI_SHOW_PREVIOUS_ROUTES": "Vis tidligere ruter",
|
|
||||||
"OPEN_JOSM": "JOSM",
|
|
||||||
"OPEN_OSMBUGS": "OSM Bugs",
|
|
||||||
// geocoder
|
|
||||||
"SEARCH_RESULTS": "Søgeresultater",
|
|
||||||
"FOUND_X_RESULTS": "fandt %i resultater",
|
|
||||||
"TIMED_OUT": "Indtet svar",
|
|
||||||
"NO_RESULTS_FOUND": "Ingen resultater",
|
|
||||||
"NO_RESULTS_FOUND_SOURCE": "Ingen resultater for start",
|
|
||||||
"NO_RESULTS_FOUND_TARGET": "Ingen resultater for destination",
|
|
||||||
//routing
|
|
||||||
"ROUTE_DESCRIPTION": "Rutebeskrivelse",
|
|
||||||
"GET_LINK_TO_ROUTE": "Lav link",
|
|
||||||
"GENERATE_LINK_TO_ROUTE": "venter på link",
|
|
||||||
"LINK_TO_ROUTE_TIMEOUT": "ikke tilgængelig",
|
|
||||||
"GPX_FILE": "GPX Fil",
|
|
||||||
"DISTANCE": "Distance",
|
|
||||||
"DURATION": "Varighed",
|
|
||||||
"YOUR_ROUTE_IS_BEING_COMPUTED": "Din rute bliver beregnet",
|
|
||||||
"NO_ROUTE_FOUND": "Ingen mulig rute fundet",
|
|
||||||
//printing
|
|
||||||
"OVERVIEW_MAP": "Oversigtskort",
|
|
||||||
"NO_ROUTE_SELECTED": "Ikke valgte rute",
|
|
||||||
// directions
|
|
||||||
"N": "nord",
|
|
||||||
"E": "øst",
|
|
||||||
"S": "syd",
|
|
||||||
"W": "vest",
|
|
||||||
"NE": "nordøst",
|
|
||||||
"SE": "sydøst",
|
|
||||||
"SW": "sydvest",
|
|
||||||
"NW": "nordvest",
|
|
||||||
// driving directions
|
|
||||||
// %s: road name
|
|
||||||
// %d: direction
|
|
||||||
// [*]: will only be printed when there actually is a road name
|
|
||||||
"DIRECTION_0":"Unknown instruction[ on <b>%s</b>]",
|
|
||||||
"DIRECTION_1":"Fortsæt [ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_2":"Drej svagt til højre [ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_3":"Drej til højre[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_4":"Drej skarpt til højre[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_5":"U-vending[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_6":"Drej skarpt til venstre[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_7":"Drej til venstre[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_8":"Drej svagt til venstre[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_10":"Kør mod <b>%d</b>[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_11-1":"Kør ind i rundkørslen og tag første udkørsel[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_11-2":"Kør ind i rundkørslen og tag anden udkørsel[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_11-3":"Kør ind i rundkørslen og tag tredje udkørsel[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_11-4":"Kør ind i rundkørslen og tag fjerde udkørsel[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_11-5":"Kør ind i rundkørslen og tag femte udkørsel[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_11-6":"Kør ind i rundkørslen og tag sjette udkørsel[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_11-7":"Kør ind i rundkørslen og tag syvende udkørsel[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_11-8":"Kør ind i rundkørslen og tag ottende udkørsel[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_11-9":"Kør ind i rundkørslen og tag niende udkørsel[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_11-x":"Kør ind i rundkørslen og tag en af de alt for mange udkørsler[ ad <b>%s</b>]",
|
|
||||||
"DIRECTION_15":"Du er ankommet til din destination"
|
|
||||||
};
|
|
||||||
|
|
||||||
//set GUI language on load
|
|
||||||
if( OSRM.DEFAULTS.LANUGAGE_ONDEMAND_RELOADING == true )
|
|
||||||
OSRM.Localization.setLanguage("dk");
|
|
||||||