Changes between Version 27 and Version 28 of Styles/Lane_and_Road_Attributes


Ignore:
Timestamp:
2013-04-09T11:50:01+02:00 (13 years ago)
Author:
imagic
Comment:

Now using repeat-image for turning lanes and embedded SVGs for traffic signs (now also overtaking). Support for hov:lanes added. Support for turn=reverse, hook_right and hook_left added.

Legend:

Unmodified
Added
Removed
Modified
  • Styles/Lane_and_Road_Attributes

    v27 v28  
    33* [[http://wiki.openstreetmap.org/wiki/Key:width|width]]: The width of the carriageway. Lane-dependent width using width:lanes is fully supported.
    44* [[http://wiki.openstreetmap.org/wiki/Key:change|change]]: Allowed resp. forbidden lane changes.
    5 * [[http://wiki.openstreetmap.org/wiki/Key:turn|turn]]: Indication of turning lanes.
     5* [[http://wiki.openstreetmap.org/wiki/Key:turn|turn]]: Indication of turning lanes, including preliminary support for values hook_right and hook_left (this might change!)
    66* [[http://wiki.openstreetmap.org/wiki/Key:cycleway|cycleway]]: Only cycle tracks are supported if specified with cycleway. Cycle lanes need bicycle:lanes=...|designated|... to be visible.
    77* [[http://wiki.openstreetmap.org/wiki/Key:bicycle|bicycle:lanes]]: Dedicated bicycle lanes.
     
    1515* [[http://wiki.openstreetmap.org/wiki/Proposed_features/highway%3Djunction|highway=junction]]: Can be used to indicate the outline of a junction and group together all features of it.
    1616* [[http://wiki.openstreetmap.org/wiki/Relation:enforcement|Relation enforcement]]: The to and from members of such relations are highlighted
    17 * [[http://wiki.openstreetmap.org/wiki/Key:traffic_sign|traffic_sign=maxspeed]]: Traffic signs for speed limits are displayed if tagged with traffic_sign=maxspeed and maxspeed=<limit>. The value implicit for maxspeed is interpreted as the end of the speed limit.
     17* [[http://wiki.openstreetmap.org/wiki/Key:traffic_sign|traffic_sign]]: Traffic signs for speed limits and overtaking are displayed if tagged with traffic_sign=maxspeed/overtaking and maxspeed=<limit> resp. overtaking=yes/no. The value implicit for maxspeed is interpreted as the end of the speed limit. Combinations like traffic_sign=maxspeed;overtaking are also supported.
     18* [[http://wiki.openstreetmap.org/wiki/Key:hov|hov:lanes]]: Dedicated HOV lanes. The minimum requirement can be specified by hov:minimum (supported values: 2 and 3)
    1819
    1920Furthermore:
     
    2122* Some common tagging errors are detected and displayed, e.g. inconsistent number of lane-dependent values and typos in the keys turn and change.
    2223* The style also supports '''left-hand traffic''' if the parameter style_right_hand_traffic is set to no.
     24* Visualization of turning lanes can be improved by setting the parameter style_use_svg to true, but this might lead to memory problems (see below)
    2325
    2426To '''report bugs or provide feedback''' send [[http://wiki.openstreetmap.org/wiki/User:Imagic|me a message]].
    2527
    2628'''Known limitations/bugs:'''
    27 * The visualization of turning lanes is currently an ugly hack and gets really messy if the road is not a straight line.
     29* Dependent on the setting style_use_svg, turning lanes can be rendered also as SVG with much wider support for different combinations. Currently this leads to very high memory consumption - see [[https://josm.openstreetmap.de/ticket/8581|ticket 8581]] for details.
    2830* [[http://josm.openstreetmap.de/ticket/8429|A bug in JOSM]] leads sometimes to rendering artefacts.
    2931* Left-hand traffic is nearly untested. Please provide feedback.
     
    3133* change:lanes without suffix is currently only supported on one-ways. It is planned to support this in the future, but limited to the values yes and no.
    3234* If both destination:forward and destination:backward are given they will be written side-by-side but due to a limitation of JOSM it is purely random if destination:forward is rendered above the forward or backward lanes and vice versa.
    33 * Currently no rendering of turn=reverse.
    3435* In forward and backward direction a maximum of eight lanes and for lanes in both directions a maximum of four lanes is displayed.
     36* [[https://josm.openstreetmap.de/ticket/8568|Bug 8568]] might lead to multiple images for access restrictions.
    3537
    3638'''Acknowledgments:'''
     
    3941* To all who provided valuable feedback during the creation of this style.
    4042 
    41 '''Screenshot of 1.1-27:'''
     43'''Screenshot:'''
    4244[[Image(http://wiki.openstreetmap.org/w/images/0/08/Screenshot_Style_Lane_and_Road_Attributes.jpeg)]]
    4345
     
    4547#!style type="mapcss"
    4648
     49
    4750meta {
    4851    title: "Lane and road attributes";
    49     description: "Visualization of lanes, width, turn lanes, changing the lane, destination, lighting and street lamps, sidewalk, cycletracks, bicycle lanes, bus lanes, psv lanes, traffic signs.";
     52    description: "Visualization of lanes, width, turn lanes, changing the lane, destination, lighting and street lamps, sidewalk, cycletracks, bicycle lanes, bus lanes, psv lanes.";
    5053    link: "http://josm.openstreetmap.de/wiki/Styles/Lane_and_Road_Attributes";
    5154    author: "Martin Vonwald";
    52     version: "1.1-[[revision]]_[[date]]";
     55    version: "2.0-[[revision]]_[[date]]";
    5356    license: "CC-BY-SA";
    54     min-josm-version: "5714";
     57    min-josm-version: "5812";
    5558}
    5659
     
    5861{
    5962    title: "Fahrspur- und Straßenattribute";
    60     description: "Anzeige von Fahrspuren, Breite, Abbiegespuren, Spurwechsel, Zielangaben, Beleuchtung inkl. Straßenlampen, Gehsteig/Bürgersteig, Radwege, Fahrradspuren, Busspuren, Öffi-Spuren, Verkehrsschildern.";
     63    description: "Anzeige von Fahrspuren, Breite, Abbiegespuren, Spurwechsel, Zielangaben, Beleuchtung inkl. Straßenlampen, Gehsteig/Bürgersteig, Radwege, Fahrradspuren, Busspuren, Öffi-Spuren.";
    6164}
    6265
     
    7376  style_lane_opacity: 0.5;
    7477  style_ground_opacity: 0.5;
    75   style_markings_opacity: 0.9;
     78  style_markings_opacity: 0.8;
    7679  style_show_warnings: yes;
    7780  style_show_errors: yes;
    7881  style_show_disputed: no;
     82  style_use_svg: no;
    7983
    8084  /* Color of the sidewalk: none (ignored), sidewalk only, cycletrack only, sidewalk and cycletrack */
    8185  style_sidewalk_color: eval(list(#000000,#808080,#8080C0,#C08080));
    8286
    83   /* Color of the lane if bicycle=designated */
    84   style_bicycle_color: #8080C0;
    85 
    8687  /* Color of the dashes if lane is access=no */
    8788  style_noaccess_color: red;
    88 
    89   /* Color of the dashes if lane is psv=designated */
    90   style_psv_color: lightgreen;
    91 
    92   /* Color of the dashes if lane is bus=designated */
    93   style_bus_color: lightgreen;
    9489}
    9590
     
    126121/* Pixel per metre (on average)                                                                                                                    */
    127122/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     123*|z16  { pixel_per_metre: 0.625; }
    128124*|z17  { pixel_per_metre: 1.25; }
    129125*|z18  { pixel_per_metre: 2.5; }
     
    131127*|z20  { pixel_per_metre: 10; }
    132128*|z21  { pixel_per_metre: 20; }
    133 *|z22- { pixel_per_metre: 40; }
     129*|z22  { pixel_per_metre: 40; }
     130*|z23  { pixel_per_metre: 80; }
     131*|z24  { pixel_per_metre: 160; }
     132*|z25  { pixel_per_metre: 320; }
     133*|z26- { pixel_per_metre: 640; }
    134134
    135135/***************************************************************************************************************************************************/
     
    203203    color_bothways_4: prop(color_bothways);
    204204
     205    sign_forward_1: "";         sign_backward_1: "";
     206    sign_forward_2: "";         sign_backward_2: "";
     207    sign_forward_3: "";         sign_backward_3: "";
     208    sign_forward_4: "";         sign_backward_4: "";
     209    sign_forward_5: "";         sign_backward_5: "";
     210    sign_forward_6: "";         sign_backward_6: "";
     211    sign_forward_7: "";         sign_backward_7: "";
     212    sign_forward_8: "";         sign_backward_8: "";
     213
    205214    tag_lanes_all_min:  9999; tag_lanes_all_max: 0;
    206215    tag_lanes_fwd_min:  9999; tag_lanes_fwd_max: 0;
    207216    tag_lanes_bwd_min:  9999; tag_lanes_bwd_max: 0;
    208217    tag_lanes_both_min: 9999; tag_lanes_both_max: 0;
    209 
    210218}
    211219
     
    361369/* Error checking                                                                                                                                  */
    362370/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    363 way["turn"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|right|slight_right|sharp_right|merge_to_left|merge_to_right|reverse|;)*$",tag("turn"))?prop(data_error):"invalid turn value"); }
    364 way["turn:forward"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|right|slight_right|sharp_right|merge_to_left|merge_to_right|reverse|;)*$",tag("turn:forward"))?prop(data_error):"invalid turn:forward value"); }
    365 way["turn:backward"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|right|slight_right|sharp_right|merge_to_left|merge_to_right|reverse|;)*$",tag("turn:backward"))?prop(data_error):"invalid turn:backward value"); }
    366 way["turn:lanes"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|right|slight_right|sharp_right|merge_to_left|merge_to_right|reverse|;|\\|)*$",tag("turn:lanes"))?prop(data_error):"invalid turn:lanes value"); }
    367 way["turn:lanes:forward"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|right|slight_right|sharp_right|merge_to_left|merge_to_right|reverse|;|\\|)*$",tag("turn:lanes:forward"))?prop(data_error):"invalid turn:lanes:forward value"); }
    368 way["turn:lanes:backward"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|right|slight_right|sharp_right|merge_to_left|merge_to_right|reverse|;|\\|)*$",tag("turn:lanes:backward"))?prop(data_error):"invalid turn:lanes:backward value"); }
    369 
    370 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    371 /* Pixel matrix for turn lane rendering                                                                                                            */
    372 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    373 way|z17-[is_prop_set(ok)]
    374 {
    375         /* Pixel matrix 9x24; numbers are off/on/off/on/off; 0.01 is - more or less - ignored */
    376         turn_matrix:
    377                 list(
    378                         "",
    379                         list(list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(15,1,8,0.01,0.01),list(15,2,7,0.01,0.01),list(6,12,6,0.01,0.01),list(15,2,7,0.01,0.01),list(15,1,8,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01)),
    380                         list(list(11,1,12,0.01,0.01),list(10,3,11,0.01,0.01),list(9,5,10,0.01,0.01),list(11,1,12,0.01,0.01),list(6,6,12,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01)),
    381                         list(list(11,1,12,0.01,0.01),list(10,3,11,0.01,0.01),list(9,5,1,1,8),list(11,1,3,2,7),list(6,12,6,0.01,0.01),list(15,2,7,0.01,0.01),list(15,1,8,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01)),
    382                         list(list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(6,6,12,0.01,0.01),list(11,1,12,0.01,0.01),list(9,5,10,0.01,0.01),list(10,3,11,0.01,0.01),list(11,1,12,0.01,0.01)),
    383                         list(list(24,0.01,0.01,0.01,0.01),list(24,0.01,0.01,0.01,0.01),list(15,1,8,0.01,0.01),list(15,2,7,0.01,0.01),list(6,12,6,0.01,0.01),list(11,1,3,2,7),list(9,5,1,1,8),list(10,3,11,0.01,0.01),list(11,1,12,0.01,0.01)),
    384                         list(list(11,1,12,0.01,0.01),list(10,3,11,0.01,0.01),list(9,5,10,0.01,0.01),list(11,1,12,0.01,0.01),list(6,6,12,0.01,0.01),list(11,1,12,0.01,0.01),list(9,5,10,0.01,0.01),list(10,3,11,0.01,0.01),list(11,1,12,0.01,0.01)),
    385                         list(list(11,1,12,0.01,0.01),list(10,3,11,0.01,0.01),list(9,5,1,1,8),list(11,1,3,2,7),list(6,12,6,0.01,0.01),list(11,1,3,2,7),list(9,5,1,1,8),list(10,3,11,0.01,0.01),list(11,1,12,0.01,0.01))
    386                     );
    387 }
    388 
    389 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    390 /* Forward lanes                                                                                                                                   */
    391 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    392 way|z17-[is_prop_set(ok)]["turn:lanes:forward"],
    393 way|z17-[is_prop_set(ok)]["turn:forward"],
    394 way|z17-[is_prop_set(ok)]["turn:lanes"][prop(oneway_type)=1],
    395 way|z17-[is_prop_set(ok)]["turn"][prop(oneway_type)=1]
     371way["turn"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|hook_left|right|slight_right|sharp_right|hook_right|merge_to_left|merge_to_right|reverse|;)*$",tag("turn"))?prop(data_error):"invalid turn value"); }
     372way["turn:forward"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|hook_left|right|slight_right|sharp_right|hook_right|merge_to_left|merge_to_right|reverse|;)*$",tag("turn:forward"))?prop(data_error):"invalid turn:forward value"); }
     373way["turn:backward"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|hook_left|right|slight_right|sharp_right|hook_right|merge_to_left|merge_to_right|reverse|;)*$",tag("turn:backward"))?prop(data_error):"invalid turn:backward value"); }
     374way["turn:lanes"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|hook_left|right|slight_right|sharp_right|hook_right|merge_to_left|merge_to_right|reverse|;|\\|)*$",tag("turn:lanes"))?prop(data_error):"invalid turn:lanes value"); }
     375way["turn:lanes:forward"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|hook_left|right|slight_right|sharp_right|hook_right|merge_to_left|merge_to_right|reverse|;|\\|)*$",tag("turn:lanes:forward"))?prop(data_error):"invalid turn:lanes:forward value"); }
     376way["turn:lanes:backward"] { data_error: eval(regexp_test("^(none|through|left|slight_left|sharp_left|hook_left|right|slight_right|sharp_right|hook_right|merge_to_left|merge_to_right|reverse|;|\\|)*$",tag("turn:lanes:backward"))?prop(data_error):"invalid turn:lanes:backward value"); }
     377
     378/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     379/* Forward lanes (standard images)                                                                                                                 */
     380/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     381way|z17-[is_prop_set(ok)][!prop(style_use_svg)]["turn:lanes:forward"],
     382way|z17-[is_prop_set(ok)][!prop(style_use_svg)]["turn:forward"],
     383way|z17-[is_prop_set(ok)][!prop(style_use_svg)]["turn:lanes"][prop(oneway_type)=1],
     384way|z17-[is_prop_set(ok)][!prop(style_use_svg)]["turn"][prop(oneway_type)=1]
    396385{
    397386    temp: eval(cond(has_tag_key("turn:lanes"),tag("turn:lanes"),
     
    403392    temp_length: eval(length(prop(temp_list)));
    404393
    405     /* Binary coded: through=1, left=2, right=4 => result is index in the turn_matrix list*/
    406     turn_forward_1: eval(length((prop(temp_length)>0)?(concat(regexp_test(".*left.*",get(prop(temp_list),0))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),0))?"t":"",regexp_test(".*right.*",get(prop(temp_list),0))?"rrrr":"")):""));
    407     turn_forward_2: eval(length((prop(temp_length)>1)?(concat(regexp_test(".*left.*",get(prop(temp_list),1))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),1))?"t":"",regexp_test(".*right.*",get(prop(temp_list),1))?"rrrr":"")):""));
    408     turn_forward_3: eval(length((prop(temp_length)>2)?(concat(regexp_test(".*left.*",get(prop(temp_list),2))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),2))?"t":"",regexp_test(".*right.*",get(prop(temp_list),2))?"rrrr":"")):""));
    409     turn_forward_4: eval(length((prop(temp_length)>3)?(concat(regexp_test(".*left.*",get(prop(temp_list),3))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),3))?"t":"",regexp_test(".*right.*",get(prop(temp_list),3))?"rrrr":"")):""));
    410     turn_forward_5: eval(length((prop(temp_length)>4)?(concat(regexp_test(".*left.*",get(prop(temp_list),4))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),4))?"t":"",regexp_test(".*right.*",get(prop(temp_list),4))?"rrrr":"")):""));
    411     turn_forward_6: eval(length((prop(temp_length)>5)?(concat(regexp_test(".*left.*",get(prop(temp_list),5))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),5))?"t":"",regexp_test(".*right.*",get(prop(temp_list),5))?"rrrr":"")):""));
    412     turn_forward_7: eval(length((prop(temp_length)>6)?(concat(regexp_test(".*left.*",get(prop(temp_list),6))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),6))?"t":"",regexp_test(".*right.*",get(prop(temp_list),6))?"rrrr":"")):""));
    413     turn_forward_8: eval(length((prop(temp_length)>7)?(concat(regexp_test(".*left.*",get(prop(temp_list),7))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),7))?"t":"",regexp_test(".*right.*",get(prop(temp_list),7))?"rrrr":"")):""));
    414 
    415     /* Get the relevant code from the list or unset the property*/
    416     turn_forward_1: eval((prop(turn_forward_1)>0)?get(prop(turn_matrix),prop(turn_forward_1)):prop(unset_property));
    417     turn_forward_2: eval((prop(turn_forward_2)>0)?get(prop(turn_matrix),prop(turn_forward_2)):prop(unset_property));
    418     turn_forward_3: eval((prop(turn_forward_3)>0)?get(prop(turn_matrix),prop(turn_forward_3)):prop(unset_property));
    419     turn_forward_4: eval((prop(turn_forward_4)>0)?get(prop(turn_matrix),prop(turn_forward_4)):prop(unset_property));
    420     turn_forward_5: eval((prop(turn_forward_5)>0)?get(prop(turn_matrix),prop(turn_forward_5)):prop(unset_property));
    421     turn_forward_6: eval((prop(turn_forward_6)>0)?get(prop(turn_matrix),prop(turn_forward_6)):prop(unset_property));
    422     turn_forward_7: eval((prop(turn_forward_7)>0)?get(prop(turn_matrix),prop(turn_forward_7)):prop(unset_property));
    423     turn_forward_8: eval((prop(turn_forward_8)>0)?get(prop(turn_matrix),prop(turn_forward_8)):prop(unset_property));
     394    t: eval(get(prop(temp_list),0));
     395    turn_image_forward_1: eval(
     396                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     397                                (
     398                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     399                                (
     400                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     401                                    concat("images/turn forward ",prop(t),".png")
     402                                )
     403                                )
     404                            );
     405    t: eval(get(prop(temp_list),1));
     406    turn_image_forward_2: eval(
     407                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     408                                (
     409                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     410                                (
     411                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     412                                    concat("images/turn forward ",prop(t),".png")
     413                                )
     414                                )
     415                            );
     416    t: eval(get(prop(temp_list),2));
     417    turn_image_forward_3: eval(
     418                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     419                                (
     420                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     421                                (
     422                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     423                                    concat("images/turn forward ",prop(t),".png")
     424                                )
     425                                )
     426                            );
     427    t: eval(get(prop(temp_list),3));
     428    turn_image_forward_4: eval(
     429                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     430                                (
     431                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     432                                (
     433                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     434                                    concat("images/turn forward ",prop(t),".png")
     435                                )
     436                                )
     437                            );
     438    t: eval(get(prop(temp_list),4));
     439    turn_image_forward_5: eval(
     440                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     441                                (
     442                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     443                                (
     444                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     445                                    concat("images/turn forward ",prop(t),".png")
     446                                )
     447                                )
     448                            );
     449    t: eval(get(prop(temp_list),5));
     450    turn_image_forward_6: eval(
     451                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     452                                (
     453                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     454                                (
     455                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     456                                    concat("images/turn forward ",prop(t),".png")
     457                                )
     458                                )
     459                            );
     460    t: eval(get(prop(temp_list),6));
     461    turn_image_forward_7: eval(
     462                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     463                                (
     464                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     465                                (
     466                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     467                                    concat("images/turn forward ",prop(t),".png")
     468                                )
     469                                )
     470                            );
     471    t: eval(get(prop(temp_list),7));
     472    turn_image_forward_8: eval(
     473                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     474                                (
     475                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn forward reverse righthand.png":"images/turn forward reverse lefthand.png"):
     476                                (
     477                                    regexp_test(".*;.*",prop(t))?concat("images/turn forward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     478                                    concat("images/turn forward ",prop(t),".png")
     479                                )
     480                                )
     481                            );
    424482
    425483    /* Lane count based on :lanes values */
     
    432490
    433491/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    434 /* Backward lanes                                                                                                                                   */
    435 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    436 way|z17-[is_prop_set(ok)]["turn:lanes:backward"],
    437 way|z17-[is_prop_set(ok)]["turn:backward"],
    438 way|z17-[is_prop_set(ok)]["turn:lanes"][prop(oneway_type)=(-1)],
    439 way|z17-[is_prop_set(ok)]["turn"][prop(oneway_type)=(-1)]
     492/* Backward lanes (standard images)                                                                                                                */
     493/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     494way|z17-[is_prop_set(ok)][!prop(style_use_svg)]["turn:lanes:backward"],
     495way|z17-[is_prop_set(ok)][!prop(style_use_svg)]["turn:backward"],
     496way|z17-[is_prop_set(ok)][!prop(style_use_svg)]["turn:lanes"][prop(oneway_type)=(-1)],
     497way|z17-[is_prop_set(ok)][!prop(style_use_svg)]["turn"][prop(oneway_type)=(-1)]
    440498{
    441499    temp: eval(cond(has_tag_key("turn:lanes"),tag("turn:lanes"),
     
    447505    temp_length: eval(length(prop(temp_list)));
    448506
    449     /* Binary coded: through=1, left=2, right=4 => result is index in the turn_matrix list */
    450     turn_backward_1: eval(length((prop(temp_length)>0)?(concat(regexp_test(".*left.*",get(prop(temp_list),0))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),0))?"t":"",regexp_test(".*right.*",get(prop(temp_list),0))?"rrrr":"")):""));
    451     turn_backward_2: eval(length((prop(temp_length)>1)?(concat(regexp_test(".*left.*",get(prop(temp_list),1))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),1))?"t":"",regexp_test(".*right.*",get(prop(temp_list),1))?"rrrr":"")):""));
    452     turn_backward_3: eval(length((prop(temp_length)>2)?(concat(regexp_test(".*left.*",get(prop(temp_list),2))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),2))?"t":"",regexp_test(".*right.*",get(prop(temp_list),2))?"rrrr":"")):""));
    453     turn_backward_4: eval(length((prop(temp_length)>3)?(concat(regexp_test(".*left.*",get(prop(temp_list),3))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),3))?"t":"",regexp_test(".*right.*",get(prop(temp_list),3))?"rrrr":"")):""));
    454     turn_backward_5: eval(length((prop(temp_length)>4)?(concat(regexp_test(".*left.*",get(prop(temp_list),4))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),4))?"t":"",regexp_test(".*right.*",get(prop(temp_list),4))?"rrrr":"")):""));
    455     turn_backward_6: eval(length((prop(temp_length)>5)?(concat(regexp_test(".*left.*",get(prop(temp_list),5))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),5))?"t":"",regexp_test(".*right.*",get(prop(temp_list),5))?"rrrr":"")):""));
    456     turn_backward_7: eval(length((prop(temp_length)>6)?(concat(regexp_test(".*left.*",get(prop(temp_list),6))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),6))?"t":"",regexp_test(".*right.*",get(prop(temp_list),6))?"rrrr":"")):""));
    457     turn_backward_8: eval(length((prop(temp_length)>7)?(concat(regexp_test(".*left.*",get(prop(temp_list),7))?"ll":"",regexp_test(".*through.*",get(prop(temp_list),7))?"t":"",regexp_test(".*right.*",get(prop(temp_list),7))?"rrrr":"")):""));
    458 
    459     /* Get the relevant code from the list or unset the property */
    460     turn_backward_1: eval((prop(turn_backward_1)>0)?get(prop(turn_matrix),prop(turn_backward_1)):prop(unset_property));
    461     turn_backward_2: eval((prop(turn_backward_2)>0)?get(prop(turn_matrix),prop(turn_backward_2)):prop(unset_property));
    462     turn_backward_3: eval((prop(turn_backward_3)>0)?get(prop(turn_matrix),prop(turn_backward_3)):prop(unset_property));
    463     turn_backward_4: eval((prop(turn_backward_4)>0)?get(prop(turn_matrix),prop(turn_backward_4)):prop(unset_property));
    464     turn_backward_5: eval((prop(turn_backward_5)>0)?get(prop(turn_matrix),prop(turn_backward_5)):prop(unset_property));
    465     turn_backward_6: eval((prop(turn_backward_6)>0)?get(prop(turn_matrix),prop(turn_backward_6)):prop(unset_property));
    466     turn_backward_7: eval((prop(turn_backward_7)>0)?get(prop(turn_matrix),prop(turn_backward_7)):prop(unset_property));
    467     turn_backward_8: eval((prop(turn_backward_8)>0)?get(prop(turn_matrix),prop(turn_backward_8)):prop(unset_property));
     507    t: eval(get(prop(temp_list),0));
     508    turn_image_backward_1: eval(
     509                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     510                                (
     511                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     512                                (
     513                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     514                                    concat("images/turn backward ",prop(t),".png")
     515                                )
     516                                )
     517                            );
     518    t: eval(get(prop(temp_list),1));
     519    turn_image_backward_2: eval(
     520                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     521                                (
     522                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     523                                (
     524                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     525                                    concat("images/turn backward ",prop(t),".png")
     526                                )
     527                                )
     528                            );
     529    t: eval(get(prop(temp_list),2));
     530    turn_image_backward_3: eval(
     531                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     532                                (
     533                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     534                                (
     535                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     536                                    concat("images/turn backward ",prop(t),".png")
     537                                )
     538                                )
     539                            );
     540    t: eval(get(prop(temp_list),3));
     541    turn_image_backward_4: eval(
     542                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     543                                (
     544                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     545                                (
     546                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     547                                    concat("images/turn backward ",prop(t),".png")
     548                                )
     549                                )
     550                            );
     551    t: eval(get(prop(temp_list),4));
     552    turn_image_backward_5: eval(
     553                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     554                                (
     555                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     556                                (
     557                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     558                                    concat("images/turn backward ",prop(t),".png")
     559                                )
     560                                )
     561                            );
     562    t: eval(get(prop(temp_list),5));
     563    turn_image_backward_6: eval(
     564                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     565                                (
     566                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     567                                (
     568                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     569                                    concat("images/turn backward ",prop(t),".png")
     570                                )
     571                                )
     572                            );
     573    t: eval(get(prop(temp_list),6));
     574    turn_image_backward_7: eval(
     575                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     576                                (
     577                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     578                                (
     579                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     580                                    concat("images/turn backward ",prop(t),".png")
     581                                )
     582                                )
     583                            );
     584    t: eval(get(prop(temp_list),7));
     585    turn_image_backward_8: eval(
     586                                ((prop(t)="none") || (prop(t)=""))?prop(unset_property):
     587                                (
     588                                (prop(t)="reverse")?(prop(style_right_hand_traffic,"default")?"images/turn backward reverse righthand.png":"images/turn backward reverse lefthand.png"):
     589                                (
     590                                    regexp_test(".*;.*",prop(t))?concat("images/turn backward ",regexp_test(".*left.*",prop(t))?"left":"",regexp_test(".*through.*",prop(t))?"through":"",regexp_test(".*right.*",prop(t))?"right":"",".png"):
     591                                    concat("images/turn backward ",prop(t),".png")
     592                                )
     593                                )
     594                            );
    468595
    469596    /* Lane count based on :lanes values */
     
    472599}
    473600
     601/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     602/* SVG for turn images                                                                                                                             */
     603/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     604way|z17-[is_prop_set(ok)][prop(style_use_svg)]
     605{
     606        turn_svg_through_forward: eval("<path fill='#FFF' d='m0,17.5,0,15,67.5-5,0,7.5,32.5-10-32.5-10,0,7.5z'/>");
     607        turn_svg_slight_right_forward: eval("<path fill='#FFF' d='m0,17.5,0,15,67.5-5c11.462-1.0193,18.459,10.285,20.46,13.902l-7.96,4.2,17.5,4.3683,2.5-15-7.753,4.1421c-2.247-4.5-6.12-15.4-24.747-16.6z'/>");
     608        turn_svg_right_forward: eval("<path fill='#FFF' d='m0,17.5,0,15,67.5-5c6.31-0.505,17.5,5,17.5,10h-10l12.5,12.5,12.5-12.5h-10c0-5-8.43-13.3-22.5-15z'/>");
     609        turn_svg_sharp_right_forward: eval("<path fill='#FFF' d='m0,17.5,0,15l62.497-4.7c7.5026,0.7633,2.5026,7.1294,0.0026,11.156l-7.5-4.0271,2.5,15,17.5-4.3125-7.878-4.2954c4.3284-6.3921,6.7048-17.943-4.6246-19.263z'/>");
     610        turn_svg_slight_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_slight_right_forward),"</g>"));
     611        turn_svg_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_right_forward),"</g>"));
     612        turn_svg_sharp_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"));
     613        turn_svg_reverse_right_hand_forward: eval("<path fill='#FFF' d='m0,40,0-15,62.497,4.6294c12.503,0.4,15.003-10,0.003-12.1v5.4671l-16.238-7.9671,16.238-7.5v5c15-2.1079,22.5,22.5-0.003,22.871z'/>");
     614        turn_svg_reverse_left_hand_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_reverse_right_hand_forward),"</g>"));
     615        turn_svg_merge_to_right_forward: eval("<path fill='#FFF' d='m0,17.5,0,15,50.034-3.7063c7.4655-0.5212,13.016,2.3222,19.541,4.8112l-2.922,6.3951,33.347,5-25-22.5-3.2955,6.6794c-8.1542-5.6073-14.204-7.5071-21.734-7.9779z'/>");
     616        turn_svg_merge_to_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_merge_to_right_forward),"</g>"));
     617        turn_svg_hook_right_forward: eval("<path fill='#FFF' d='m0,22.5,0,15,37.474-2.7759c11.051-1.2406,20.026-5.8731,20.026-15.873,0-5,5-3.8509,13.359-3.8509,9.1412,0,14.141-1.3338,14.141,5v17.5h-10l12.5,12.5,12.5-12.5h-10v-17.5c0-11.271-2.5-12.5-19.23-12.5-15.77,0-20.77,1.351-20.77,11.351,0,5-6.8784,6.8562-12.531,6.4246z'/>");
     618        turn_svg_hook_left_forward: eval(concat("<g transform='translate(0,50) scale(1.0,-1.0)'>",prop(turn_svg_hook_right_forward),"</g>"));
     619}
     620
     621
     622/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     623/* Forward lanes (SVG)                                                                                                                             */
     624/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     625way|z17-[is_prop_set(ok)][prop(style_use_svg)]["turn:lanes:forward"],
     626way|z17-[is_prop_set(ok)][prop(style_use_svg)]["turn:forward"],
     627way|z17-[is_prop_set(ok)][prop(style_use_svg)]["turn:lanes"][prop(oneway_type)=1],
     628way|z17-[is_prop_set(ok)][prop(style_use_svg)]["turn"][prop(oneway_type)=1]
     629{
     630    temp: eval(cond(has_tag_key("turn:lanes"),tag("turn:lanes"),
     631                                cond(has_tag_key("turn"),tag("turn"),
     632                                cond(has_tag_key("turn:lanes:forward"),tag("turn:lanes:forward"),
     633                                     tag("turn:forward")
     634                                    ))));
     635    temp_list: eval(split("|",prop(temp)));
     636    temp_length: eval(length(prop(temp_list)));
     637
     638    turn_image_forward_1: ""; t: eval(get(prop(temp_list),0)); t_scale: 1.0;
     639    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_forward_1: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_forward_1));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     640    t_scale_after_through: eval(prop(t_scale));
     641    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_forward_1: eval(prop(t_test)?concat(prop(turn_image_forward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_1));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     642    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_forward_1: eval(prop(t_test)?concat(prop(turn_image_forward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_forward_1));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     643    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_forward_1: eval(prop(t_test)?concat(prop(turn_image_forward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_1));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     644    t_scale: eval(prop(t_scale_after_through));
     645    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_forward_1: eval(prop(t_test)?concat(prop(turn_image_forward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_1));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     646    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_forward_1: eval(prop(t_test)?concat(prop(turn_image_forward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_forward_1));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     647    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_forward_1: eval(prop(t_test)?concat(prop(turn_image_forward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_forward_1));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     648    turn_image_forward_1: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_1),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_1));
     649    turn_image_forward_1: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_1),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_1));
     650    turn_image_forward_1: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_1),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_1));
     651    turn_image_forward_1: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_1),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_1));
     652    turn_image_forward_1: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_1),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_1));
     653    turn_image_forward_1: eval((prop(turn_image_forward_1)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_1),"</g></svg>"));
     654
     655    turn_image_forward_2: ""; t: eval(get(prop(temp_list),1)); t_scale: 1.0;
     656    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_forward_2: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_forward_2));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     657    t_scale_after_through: eval(prop(t_scale));
     658    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_forward_2: eval(prop(t_test)?concat(prop(turn_image_forward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_2));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     659    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_forward_2: eval(prop(t_test)?concat(prop(turn_image_forward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_forward_2));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     660    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_forward_2: eval(prop(t_test)?concat(prop(turn_image_forward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_2));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     661    t_scale: eval(prop(t_scale_after_through));
     662    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_forward_2: eval(prop(t_test)?concat(prop(turn_image_forward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_2));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     663    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_forward_2: eval(prop(t_test)?concat(prop(turn_image_forward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_forward_2));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     664    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_forward_2: eval(prop(t_test)?concat(prop(turn_image_forward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_forward_2));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     665    turn_image_forward_2: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_2),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_2));
     666    turn_image_forward_2: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_2),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_2));
     667    turn_image_forward_2: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_2),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_2));
     668    turn_image_forward_2: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_2),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_2));
     669    turn_image_forward_2: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_2),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_2));
     670    turn_image_forward_2: eval((prop(turn_image_forward_2)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_2),"</g></svg>"));
     671
     672    turn_image_forward_3: ""; t: eval(get(prop(temp_list),2)); t_scale: 1.0;
     673    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_forward_3: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_forward_3));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     674    t_scale_after_through: eval(prop(t_scale));
     675    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_forward_3: eval(prop(t_test)?concat(prop(turn_image_forward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_3));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     676    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_forward_3: eval(prop(t_test)?concat(prop(turn_image_forward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_forward_3));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     677    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_forward_3: eval(prop(t_test)?concat(prop(turn_image_forward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_3));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     678    t_scale: eval(prop(t_scale_after_through));
     679    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_forward_3: eval(prop(t_test)?concat(prop(turn_image_forward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_3));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     680    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_forward_3: eval(prop(t_test)?concat(prop(turn_image_forward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_forward_3));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     681    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_forward_3: eval(prop(t_test)?concat(prop(turn_image_forward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_forward_3));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     682    turn_image_forward_3: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_3),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_3));
     683    turn_image_forward_3: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_3),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_3));
     684    turn_image_forward_3: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_3),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_3));
     685    turn_image_forward_3: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_3),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_3));
     686    turn_image_forward_3: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_3),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_3));
     687    turn_image_forward_3: eval((prop(turn_image_forward_3)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_3),"</g></svg>"));
     688
     689    turn_image_forward_4: ""; t: eval(get(prop(temp_list),3)); t_scale: 1.0;
     690    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_forward_4: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_forward_4));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     691    t_scale_after_through: eval(prop(t_scale));
     692    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_forward_4: eval(prop(t_test)?concat(prop(turn_image_forward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_4));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     693    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_forward_4: eval(prop(t_test)?concat(prop(turn_image_forward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_forward_4));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     694    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_forward_4: eval(prop(t_test)?concat(prop(turn_image_forward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_4));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     695    t_scale: eval(prop(t_scale_after_through));
     696    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_forward_4: eval(prop(t_test)?concat(prop(turn_image_forward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_4));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     697    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_forward_4: eval(prop(t_test)?concat(prop(turn_image_forward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_forward_4));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     698    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_forward_4: eval(prop(t_test)?concat(prop(turn_image_forward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_forward_4));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     699    turn_image_forward_4: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_4),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_4));
     700    turn_image_forward_4: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_4),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_4));
     701    turn_image_forward_4: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_4),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_4));
     702    turn_image_forward_4: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_4),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_4));
     703    turn_image_forward_4: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_4),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_4));
     704    turn_image_forward_4: eval((prop(turn_image_forward_4)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_4),"</g></svg>"));
     705
     706    turn_image_forward_5: ""; t: eval(get(prop(temp_list),4)); t_scale: 1.0;
     707    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_forward_5: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_forward_5));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     708    t_scale_after_through: eval(prop(t_scale));
     709    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_forward_5: eval(prop(t_test)?concat(prop(turn_image_forward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_5));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     710    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_forward_5: eval(prop(t_test)?concat(prop(turn_image_forward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_forward_5));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     711    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_forward_5: eval(prop(t_test)?concat(prop(turn_image_forward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_5));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     712    t_scale: eval(prop(t_scale_after_through));
     713    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_forward_5: eval(prop(t_test)?concat(prop(turn_image_forward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_5));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     714    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_forward_5: eval(prop(t_test)?concat(prop(turn_image_forward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_forward_5));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     715    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_forward_5: eval(prop(t_test)?concat(prop(turn_image_forward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_forward_5));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     716    turn_image_forward_5: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_5),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_5));
     717    turn_image_forward_5: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_5),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_5));
     718    turn_image_forward_5: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_5),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_5));
     719    turn_image_forward_5: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_5),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_5));
     720    turn_image_forward_5: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_5),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_5));
     721    turn_image_forward_5: eval((prop(turn_image_forward_5)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_5),"</g></svg>"));
     722
     723    turn_image_forward_6: ""; t: eval(get(prop(temp_list),5)); t_scale: 1.0;
     724    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_forward_6: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_forward_6));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     725    t_scale_after_through: eval(prop(t_scale));
     726    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_forward_6: eval(prop(t_test)?concat(prop(turn_image_forward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_6));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     727    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_forward_6: eval(prop(t_test)?concat(prop(turn_image_forward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_forward_6));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     728    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_forward_6: eval(prop(t_test)?concat(prop(turn_image_forward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_6));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     729    t_scale: eval(prop(t_scale_after_through));
     730    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_forward_6: eval(prop(t_test)?concat(prop(turn_image_forward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_6));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     731    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_forward_6: eval(prop(t_test)?concat(prop(turn_image_forward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_forward_6));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     732    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_forward_6: eval(prop(t_test)?concat(prop(turn_image_forward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_forward_6));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     733    turn_image_forward_6: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_6),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_6));
     734    turn_image_forward_6: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_6),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_6));
     735    turn_image_forward_6: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_6),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_6));
     736    turn_image_forward_6: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_6),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_6));
     737    turn_image_forward_6: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_6),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_6));
     738    turn_image_forward_6: eval((prop(turn_image_forward_6)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_6),"</g></svg>"));
     739
     740    turn_image_forward_7: ""; t: eval(get(prop(temp_list),6)); t_scale: 1.0;
     741    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_forward_7: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_forward_7));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     742    t_scale_after_through: eval(prop(t_scale));
     743    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_forward_7: eval(prop(t_test)?concat(prop(turn_image_forward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_7));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     744    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_forward_7: eval(prop(t_test)?concat(prop(turn_image_forward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_forward_7));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     745    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_forward_7: eval(prop(t_test)?concat(prop(turn_image_forward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_7));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     746    t_scale: eval(prop(t_scale_after_through));
     747    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_forward_7: eval(prop(t_test)?concat(prop(turn_image_forward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_7));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     748    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_forward_7: eval(prop(t_test)?concat(prop(turn_image_forward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_forward_7));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     749    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_forward_7: eval(prop(t_test)?concat(prop(turn_image_forward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_forward_7));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     750    turn_image_forward_7: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_7),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_7));
     751    turn_image_forward_7: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_7),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_7));
     752    turn_image_forward_7: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_7),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_7));
     753    turn_image_forward_7: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_7),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_7));
     754    turn_image_forward_7: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_7),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_7));
     755    turn_image_forward_7: eval((prop(turn_image_forward_7)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_7),"</g></svg>"));
     756
     757    turn_image_forward_8: ""; t: eval(get(prop(temp_list),7)); t_scale: 1.0;
     758    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_forward_8: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_forward_8));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     759    t_scale_after_through: eval(prop(t_scale));
     760    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_forward_8: eval(prop(t_test)?concat(prop(turn_image_forward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_forward_8));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     761    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_forward_8: eval(prop(t_test)?concat(prop(turn_image_forward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_forward_8));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     762    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_forward_8: eval(prop(t_test)?concat(prop(turn_image_forward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_forward_8));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     763    t_scale: eval(prop(t_scale_after_through));
     764    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_forward_8: eval(prop(t_test)?concat(prop(turn_image_forward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_forward_8));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     765    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_forward_8: eval(prop(t_test)?concat(prop(turn_image_forward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_forward_8));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     766    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_forward_8: eval(prop(t_test)?concat(prop(turn_image_forward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_forward_8));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     767    turn_image_forward_8: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_forward_8),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_forward_8));
     768    turn_image_forward_8: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_8),prop(turn_svg_merge_to_right_forward)):prop(turn_image_forward_8));
     769    turn_image_forward_8: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_8),prop(turn_svg_merge_to_left_forward)):prop(turn_image_forward_8));
     770    turn_image_forward_8: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_forward_8),prop(turn_svg_hook_right_forward)):prop(turn_image_forward_8));
     771    turn_image_forward_8: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_forward_8),prop(turn_svg_hook_left_forward)):prop(turn_image_forward_8));
     772    turn_image_forward_8: eval((prop(turn_image_forward_8)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"'>",prop(turn_image_forward_8),"</g></svg>"));
     773
     774    /* Lane count based on :lanes values */
     775    tag_lanes_all_min: eval(has_tag_key("turn:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min));
     776    tag_lanes_all_max: eval(has_tag_key("turn:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max));
     777    tag_lanes_fwd_min: eval(has_tag_key("turn:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min));
     778    tag_lanes_fwd_max: eval(has_tag_key("turn:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max));
     779}
     780
     781
     782/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     783/* Backward lanes (SVG)                                                                                                                            */
     784/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     785way|z17-[is_prop_set(ok)][prop(style_use_svg)]["turn:lanes:backward"],
     786way|z17-[is_prop_set(ok)][prop(style_use_svg)]["turn:backward"],
     787way|z17-[is_prop_set(ok)][prop(style_use_svg)]["turn:lanes"][prop(oneway_type)=(-1)],
     788way|z17-[is_prop_set(ok)][prop(style_use_svg)]["turn"][prop(oneway_type)=(-1)]
     789{
     790    temp: eval(cond(has_tag_key("turn:lanes"),tag("turn:lanes"),
     791                                cond(has_tag_key("turn"),tag("turn"),
     792                                cond(has_tag_key("turn:lanes:backward"),tag("turn:lanes:backward"),
     793                                     tag("turn:backward")
     794                                    ))));
     795    temp_list: eval(split("|",prop(temp)));
     796    temp_length: eval(length(prop(temp_list)));
     797
     798    turn_image_backward_1: ""; t: eval(get(prop(temp_list),0)); t_scale: 1.0;
     799    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_backward_1: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_backward_1));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     800    t_scale_after_through: eval(prop(t_scale));
     801    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_backward_1: eval(prop(t_test)?concat(prop(turn_image_backward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_1));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     802    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_backward_1: eval(prop(t_test)?concat(prop(turn_image_backward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_backward_1));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     803    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_backward_1: eval(prop(t_test)?concat(prop(turn_image_backward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_1));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     804    t_scale: eval(prop(t_scale_after_through));
     805    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_backward_1: eval(prop(t_test)?concat(prop(turn_image_backward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_1));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     806    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_backward_1: eval(prop(t_test)?concat(prop(turn_image_backward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_backward_1));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     807    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_backward_1: eval(prop(t_test)?concat(prop(turn_image_backward_1),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_backward_1));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     808    turn_image_backward_1: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_1),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_1));
     809    turn_image_backward_1: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_1),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_1));
     810    turn_image_backward_1: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_1),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_1));
     811    turn_image_backward_1: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_1),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_1));
     812    turn_image_backward_1: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_1),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_1));
     813    turn_image_backward_1: eval((prop(turn_image_backward_1)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_1),"</g></svg>"));
     814
     815    turn_image_backward_2: ""; t: eval(get(prop(temp_list),1)); t_scale: 1.0;
     816    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_backward_2: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_backward_2));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     817    t_scale_after_through: eval(prop(t_scale));
     818    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_backward_2: eval(prop(t_test)?concat(prop(turn_image_backward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_2));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     819    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_backward_2: eval(prop(t_test)?concat(prop(turn_image_backward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_backward_2));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     820    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_backward_2: eval(prop(t_test)?concat(prop(turn_image_backward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_2));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     821    t_scale: eval(prop(t_scale_after_through));
     822    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_backward_2: eval(prop(t_test)?concat(prop(turn_image_backward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_2));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     823    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_backward_2: eval(prop(t_test)?concat(prop(turn_image_backward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_backward_2));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     824    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_backward_2: eval(prop(t_test)?concat(prop(turn_image_backward_2),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_backward_2));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     825    turn_image_backward_2: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_2),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_2));
     826    turn_image_backward_2: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_2),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_2));
     827    turn_image_backward_2: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_2),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_2));
     828    turn_image_backward_2: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_2),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_2));
     829    turn_image_backward_2: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_2),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_2));
     830    turn_image_backward_2: eval((prop(turn_image_backward_2)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_2),"</g></svg>"));
     831
     832    turn_image_backward_3: ""; t: eval(get(prop(temp_list),2)); t_scale: 1.0;
     833    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_backward_3: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_backward_3));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     834    t_scale_after_through: eval(prop(t_scale));
     835    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_backward_3: eval(prop(t_test)?concat(prop(turn_image_backward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_3));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     836    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_backward_3: eval(prop(t_test)?concat(prop(turn_image_backward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_backward_3));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     837    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_backward_3: eval(prop(t_test)?concat(prop(turn_image_backward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_3));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     838    t_scale: eval(prop(t_scale_after_through));
     839    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_backward_3: eval(prop(t_test)?concat(prop(turn_image_backward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_3));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     840    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_backward_3: eval(prop(t_test)?concat(prop(turn_image_backward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_backward_3));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     841    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_backward_3: eval(prop(t_test)?concat(prop(turn_image_backward_3),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_backward_3));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     842    turn_image_backward_3: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_3),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_3));
     843    turn_image_backward_3: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_3),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_3));
     844    turn_image_backward_3: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_3),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_3));
     845    turn_image_backward_3: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_3),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_3));
     846    turn_image_backward_3: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_3),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_3));
     847    turn_image_backward_3: eval((prop(turn_image_backward_3)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_3),"</g></svg>"));
     848
     849    turn_image_backward_4: ""; t: eval(get(prop(temp_list),3)); t_scale: 1.0;
     850    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_backward_4: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_backward_4));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     851    t_scale_after_through: eval(prop(t_scale));
     852    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_backward_4: eval(prop(t_test)?concat(prop(turn_image_backward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_4));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     853    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_backward_4: eval(prop(t_test)?concat(prop(turn_image_backward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_backward_4));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     854    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_backward_4: eval(prop(t_test)?concat(prop(turn_image_backward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_4));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     855    t_scale: eval(prop(t_scale_after_through));
     856    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_backward_4: eval(prop(t_test)?concat(prop(turn_image_backward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_4));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     857    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_backward_4: eval(prop(t_test)?concat(prop(turn_image_backward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_backward_4));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     858    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_backward_4: eval(prop(t_test)?concat(prop(turn_image_backward_4),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_backward_4));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     859    turn_image_backward_4: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_4),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_4));
     860    turn_image_backward_4: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_4),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_4));
     861    turn_image_backward_4: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_4),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_4));
     862    turn_image_backward_4: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_4),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_4));
     863    turn_image_backward_4: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_4),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_4));
     864    turn_image_backward_4: eval((prop(turn_image_backward_4)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_4),"</g></svg>"));
     865
     866    turn_image_backward_5: ""; t: eval(get(prop(temp_list),4)); t_scale: 1.0;
     867    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_backward_5: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_backward_5));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     868    t_scale_after_through: eval(prop(t_scale));
     869    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_backward_5: eval(prop(t_test)?concat(prop(turn_image_backward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_5));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     870    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_backward_5: eval(prop(t_test)?concat(prop(turn_image_backward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_backward_5));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     871    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_backward_5: eval(prop(t_test)?concat(prop(turn_image_backward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_5));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     872    t_scale: eval(prop(t_scale_after_through));
     873    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_backward_5: eval(prop(t_test)?concat(prop(turn_image_backward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_5));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     874    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_backward_5: eval(prop(t_test)?concat(prop(turn_image_backward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_backward_5));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     875    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_backward_5: eval(prop(t_test)?concat(prop(turn_image_backward_5),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_backward_5));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     876    turn_image_backward_5: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_5),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_5));
     877    turn_image_backward_5: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_5),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_5));
     878    turn_image_backward_5: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_5),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_5));
     879    turn_image_backward_5: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_5),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_5));
     880    turn_image_backward_5: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_5),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_5));
     881    turn_image_backward_5: eval((prop(turn_image_backward_5)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_5),"</g></svg>"));
     882
     883    turn_image_backward_6: ""; t: eval(get(prop(temp_list),5)); t_scale: 1.0;
     884    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_backward_6: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_backward_6));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     885    t_scale_after_through: eval(prop(t_scale));
     886    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_backward_6: eval(prop(t_test)?concat(prop(turn_image_backward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_6));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     887    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_backward_6: eval(prop(t_test)?concat(prop(turn_image_backward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_backward_6));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     888    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_backward_6: eval(prop(t_test)?concat(prop(turn_image_backward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_6));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     889    t_scale: eval(prop(t_scale_after_through));
     890    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_backward_6: eval(prop(t_test)?concat(prop(turn_image_backward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_6));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     891    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_backward_6: eval(prop(t_test)?concat(prop(turn_image_backward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_backward_6));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     892    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_backward_6: eval(prop(t_test)?concat(prop(turn_image_backward_6),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_backward_6));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     893    turn_image_backward_6: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_6),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_6));
     894    turn_image_backward_6: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_6),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_6));
     895    turn_image_backward_6: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_6),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_6));
     896    turn_image_backward_6: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_6),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_6));
     897    turn_image_backward_6: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_6),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_6));
     898    turn_image_backward_6: eval((prop(turn_image_backward_6)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_6),"</g></svg>"));
     899
     900    turn_image_backward_7: ""; t: eval(get(prop(temp_list),6)); t_scale: 1.0;
     901    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_backward_7: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_backward_7));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     902    t_scale_after_through: eval(prop(t_scale));
     903    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_backward_7: eval(prop(t_test)?concat(prop(turn_image_backward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_7));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     904    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_backward_7: eval(prop(t_test)?concat(prop(turn_image_backward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_backward_7));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     905    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_backward_7: eval(prop(t_test)?concat(prop(turn_image_backward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_7));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     906    t_scale: eval(prop(t_scale_after_through));
     907    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_backward_7: eval(prop(t_test)?concat(prop(turn_image_backward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_7));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     908    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_backward_7: eval(prop(t_test)?concat(prop(turn_image_backward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_backward_7));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     909    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_backward_7: eval(prop(t_test)?concat(prop(turn_image_backward_7),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_backward_7));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     910    turn_image_backward_7: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_7),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_7));
     911    turn_image_backward_7: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_7),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_7));
     912    turn_image_backward_7: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_7),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_7));
     913    turn_image_backward_7: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_7),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_7));
     914    turn_image_backward_7: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_7),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_7));
     915    turn_image_backward_7: eval((prop(turn_image_backward_7)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_7),"</g></svg>"));
     916
     917    turn_image_backward_8: ""; t: eval(get(prop(temp_list),7)); t_scale: 1.0;
     918    t_test: eval(regexp_test("^(.*;)*through(;.*)*$",prop(t)));         turn_image_backward_8: eval(prop(t_test)?prop(turn_svg_through_forward):                                                                                              prop(turn_image_backward_8));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     919    t_scale_after_through: eval(prop(t_scale));
     920    t_test: eval(regexp_test("^(.*;)*slight_right(;.*)*$",prop(t)));    turn_image_backward_8: eval(prop(t_test)?concat(prop(turn_image_backward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_right_forward),"</g>"):prop(turn_image_backward_8));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     921    t_test: eval(regexp_test("^(.*;)*right(;.*)*$",prop(t)));           turn_image_backward_8: eval(prop(t_test)?concat(prop(turn_image_backward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_right_forward),"</g>"):       prop(turn_image_backward_8));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     922    t_test: eval(regexp_test("^(.*;)*sharp_right(;.*)*$",prop(t)));     turn_image_backward_8: eval(prop(t_test)?concat(prop(turn_image_backward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_right_forward),"</g>"): prop(turn_image_backward_8));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     923    t_scale: eval(prop(t_scale_after_through));
     924    t_test: eval(regexp_test("^(.*;)*slight_left(;.*)*$",prop(t)));     turn_image_backward_8: eval(prop(t_test)?concat(prop(turn_image_backward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_slight_left_forward),"</g>"): prop(turn_image_backward_8));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     925    t_test: eval(regexp_test("^(.*;)*left(;.*)*$",prop(t)));            turn_image_backward_8: eval(prop(t_test)?concat(prop(turn_image_backward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_left_forward),"</g>"):        prop(turn_image_backward_8));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     926    t_test: eval(regexp_test("^(.*;)*sharp_left(;.*)*$",prop(t)));      turn_image_backward_8: eval(prop(t_test)?concat(prop(turn_image_backward_8),"<g transform='scale(",prop(t_scale)," 1.0)'>",prop(turn_svg_sharp_left_forward),"</g>"):  prop(turn_image_backward_8));    t_scale: eval(prop(t_test)?(prop(t_scale)*0.666):prop(t_scale));
     927    turn_image_backward_8: eval(regexp_test("^(.*;)*reverse(;.*)*$",prop(t))?concat(prop(turn_image_backward_8),(prop(style_right_hand_traffic)?prop(turn_svg_reverse_right_hand_forward):prop(turn_svg_reverse_left_hand_forward))):prop(turn_image_backward_8));
     928    turn_image_backward_8: eval(regexp_test("^(.*;)*merge_to_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_8),prop(turn_svg_merge_to_right_forward)):prop(turn_image_backward_8));
     929    turn_image_backward_8: eval(regexp_test("^(.*;)*merge_to_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_8),prop(turn_svg_merge_to_left_forward)):prop(turn_image_backward_8));
     930    turn_image_backward_8: eval(regexp_test("^(.*;)*hook_right(;.*)*$",prop(t))?concat(prop(turn_image_backward_8),prop(turn_svg_hook_right_forward)):prop(turn_image_backward_8));
     931    turn_image_backward_8: eval(regexp_test("^(.*;)*hook_left(;.*)*$",prop(t))?concat(prop(turn_image_backward_8),prop(turn_svg_hook_left_forward)):prop(turn_image_backward_8));
     932    turn_image_backward_8: eval((prop(turn_image_backward_8)="")?prop(unset_property):concat("data:image/svg+xml,<svg width='100px' height='50px'><g fill-opacity='",prop(style_markings_opacity),"' transform='rotate(180 50 25)'>",prop(turn_image_backward_8),"</g></svg>"));
     933
     934    /* Lane count based on :lanes values */
     935    tag_lanes_bwd_min: eval(has_tag_key("turn:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min));
     936    tag_lanes_bwd_max: eval(has_tag_key("turn:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max));
     937}
     938
    474939/***************************************************************************************************************************************************/
    475940/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    476 /* Lane access (no and designated)                                                                                                                 */
    477 /* The property designated_color_xxx will be overwritten by later rules                                                                            */
    478 /* TODO: both_ways is not implemented                                                                                                             */
     941/* Lane access                                                                                                                                     */
     942/* The property restriction_color_xxx will be overwritten by later rules                                                                           */
     943/* TODO: both_ways is not implemented                                                                                                              */
    479944/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    480945/***************************************************************************************************************************************************/
     
    494959    temp_list: eval(split("|",prop(temp)));
    495960    temp_length: eval(length(prop(temp_list)));
    496     designated_color_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="no") || (get(prop(temp_list),0)="private")))?prop(style_noaccess_color):prop(designated_color_forward_1));
    497     designated_color_forward_2: eval(((prop(temp_length)>0) && ((get(prop(temp_list),1)="no") || (get(prop(temp_list),1)="private")))?prop(style_noaccess_color):prop(designated_color_forward_2));
    498     designated_color_forward_3: eval(((prop(temp_length)>0) && ((get(prop(temp_list),2)="no") || (get(prop(temp_list),2)="private")))?prop(style_noaccess_color):prop(designated_color_forward_3));
    499     designated_color_forward_4: eval(((prop(temp_length)>0) && ((get(prop(temp_list),3)="no") || (get(prop(temp_list),3)="private")))?prop(style_noaccess_color):prop(designated_color_forward_4));
    500     designated_color_forward_5: eval(((prop(temp_length)>0) && ((get(prop(temp_list),4)="no") || (get(prop(temp_list),4)="private")))?prop(style_noaccess_color):prop(designated_color_forward_5));
    501     designated_color_forward_6: eval(((prop(temp_length)>0) && ((get(prop(temp_list),5)="no") || (get(prop(temp_list),5)="private")))?prop(style_noaccess_color):prop(designated_color_forward_6));
    502     designated_color_forward_7: eval(((prop(temp_length)>0) && ((get(prop(temp_list),6)="no") || (get(prop(temp_list),6)="private")))?prop(style_noaccess_color):prop(designated_color_forward_7));
    503     designated_color_forward_8: eval(((prop(temp_length)>0) && ((get(prop(temp_list),7)="no") || (get(prop(temp_list),7)="private")))?prop(style_noaccess_color):prop(designated_color_forward_8));
     961    restriction_color_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="no") || (get(prop(temp_list),0)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_1));
     962    restriction_color_forward_2: eval(((prop(temp_length)>0) && ((get(prop(temp_list),1)="no") || (get(prop(temp_list),1)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_2));
     963    restriction_color_forward_3: eval(((prop(temp_length)>0) && ((get(prop(temp_list),2)="no") || (get(prop(temp_list),2)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_3));
     964    restriction_color_forward_4: eval(((prop(temp_length)>0) && ((get(prop(temp_list),3)="no") || (get(prop(temp_list),3)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_4));
     965    restriction_color_forward_5: eval(((prop(temp_length)>0) && ((get(prop(temp_list),4)="no") || (get(prop(temp_list),4)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_5));
     966    restriction_color_forward_6: eval(((prop(temp_length)>0) && ((get(prop(temp_list),5)="no") || (get(prop(temp_list),5)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_6));
     967    restriction_color_forward_7: eval(((prop(temp_length)>0) && ((get(prop(temp_list),6)="no") || (get(prop(temp_list),6)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_7));
     968    restriction_color_forward_8: eval(((prop(temp_length)>0) && ((get(prop(temp_list),7)="no") || (get(prop(temp_list),7)="private")))?prop(style_noaccess_color):prop(restriction_color_forward_8));
    504969
    505970    /* Lane count based on :lanes values */
     
    511976
    512977/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    513 /* Access=no backward lanes                                                                                                                         */
     978/* Access=no backward lanes                                                                                                                        */
    514979/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    515980way|z17-[is_prop_set(ok)]["access:lanes:backward"],
     
    525990    temp_list: eval(split("|",prop(temp)));
    526991    temp_length: eval(length(prop(temp_list)));
    527     designated_color_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="no") || (get(prop(temp_list),0)="private")))?prop(style_noaccess_color):prop(designated_color_backward_1));
    528     designated_color_backward_2: eval(((prop(temp_length)>0) && ((get(prop(temp_list),1)="no") || (get(prop(temp_list),1)="private")))?prop(style_noaccess_color):prop(designated_color_backward_2));
    529     designated_color_backward_3: eval(((prop(temp_length)>0) && ((get(prop(temp_list),2)="no") || (get(prop(temp_list),2)="private")))?prop(style_noaccess_color):prop(designated_color_backward_3));
    530     designated_color_backward_4: eval(((prop(temp_length)>0) && ((get(prop(temp_list),3)="no") || (get(prop(temp_list),3)="private")))?prop(style_noaccess_color):prop(designated_color_backward_4));
    531     designated_color_backward_5: eval(((prop(temp_length)>0) && ((get(prop(temp_list),4)="no") || (get(prop(temp_list),4)="private")))?prop(style_noaccess_color):prop(designated_color_backward_5));
    532     designated_color_backward_6: eval(((prop(temp_length)>0) && ((get(prop(temp_list),5)="no") || (get(prop(temp_list),5)="private")))?prop(style_noaccess_color):prop(designated_color_backward_6));
    533     designated_color_backward_7: eval(((prop(temp_length)>0) && ((get(prop(temp_list),6)="no") || (get(prop(temp_list),6)="private")))?prop(style_noaccess_color):prop(designated_color_backward_7));
    534     designated_color_backward_8: eval(((prop(temp_length)>0) && ((get(prop(temp_list),7)="no") || (get(prop(temp_list),7)="private")))?prop(style_noaccess_color):prop(designated_color_backward_8));
     992    restriction_color_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="no") || (get(prop(temp_list),0)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_1));
     993    restriction_color_backward_2: eval(((prop(temp_length)>0) && ((get(prop(temp_list),1)="no") || (get(prop(temp_list),1)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_2));
     994    restriction_color_backward_3: eval(((prop(temp_length)>0) && ((get(prop(temp_list),2)="no") || (get(prop(temp_list),2)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_3));
     995    restriction_color_backward_4: eval(((prop(temp_length)>0) && ((get(prop(temp_list),3)="no") || (get(prop(temp_list),3)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_4));
     996    restriction_color_backward_5: eval(((prop(temp_length)>0) && ((get(prop(temp_list),4)="no") || (get(prop(temp_list),4)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_5));
     997    restriction_color_backward_6: eval(((prop(temp_length)>0) && ((get(prop(temp_list),5)="no") || (get(prop(temp_list),5)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_6));
     998    restriction_color_backward_7: eval(((prop(temp_length)>0) && ((get(prop(temp_list),6)="no") || (get(prop(temp_list),6)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_7));
     999    restriction_color_backward_8: eval(((prop(temp_length)>0) && ((get(prop(temp_list),7)="no") || (get(prop(temp_list),7)="private")))?prop(style_noaccess_color):prop(restriction_color_backward_8));
    5351000
    5361001    /* Lane count based on :lanes values */
     
    5411006}
    5421007
     1008/***************************************************************************************************************************************************/
     1009/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     1010/* Lane designation                                                                                                                                */
     1011/* TODO: both_ways is not implemented                                                                                                              */
     1012/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     1013/***************************************************************************************************************************************************/
    5431014/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    5441015/* Bus forward lanes                                                                                                                               */
     
    5631034    tempa_list: eval(split("|",prop(tempa)));
    5641035    tempa_length: eval(length(prop(tempa_list)));
    565     designated_color_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?prop(style_bus_color):prop(designated_color_forward_1));
    566     designated_color_forward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?prop(style_bus_color):prop(designated_color_forward_2));
    567     designated_color_forward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?prop(style_bus_color):prop(designated_color_forward_3));
    568     designated_color_forward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?prop(style_bus_color):prop(designated_color_forward_4));
    569     designated_color_forward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?prop(style_bus_color):prop(designated_color_forward_5));
    570     designated_color_forward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?prop(style_bus_color):prop(designated_color_forward_6));
    571     designated_color_forward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?prop(style_bus_color):prop(designated_color_forward_7));
    572     designated_color_forward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?prop(style_bus_color):prop(designated_color_forward_8));
     1036
     1037    sign_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_forward_1),";images/bus forward.png"):prop(sign_forward_1));
     1038    sign_forward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_forward_2),";images/bus forward.png"):prop(sign_forward_2));
     1039    sign_forward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_forward_3),";images/bus forward.png"):prop(sign_forward_3));
     1040    sign_forward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_forward_4),";images/bus forward.png"):prop(sign_forward_4));
     1041    sign_forward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_forward_5),";images/bus forward.png"):prop(sign_forward_5));
     1042    sign_forward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_forward_6),";images/bus forward.png"):prop(sign_forward_6));
     1043    sign_forward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_forward_7),";images/bus forward.png"):prop(sign_forward_7));
     1044    sign_forward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_forward_8),";images/bus forward.png"):prop(sign_forward_8));
    5731045
    5741046    /* Lane count based on :lanes values */
     
    5981070    tempa_list: eval(split("|",prop(tempa)));
    5991071    tempa_length: eval(length(prop(tempa_list)));
    600     designated_color_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?prop(style_bus_color):prop(designated_color_forward_1));
    601     designated_color_backward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?prop(style_bus_color):prop(designated_color_forward_2));
    602     designated_color_backward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?prop(style_bus_color):prop(designated_color_forward_3));
    603     designated_color_backward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?prop(style_bus_color):prop(designated_color_forward_4));
    604     designated_color_backward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?prop(style_bus_color):prop(designated_color_forward_5));
    605     designated_color_backward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?prop(style_bus_color):prop(designated_color_forward_6));
    606     designated_color_backward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?prop(style_bus_color):prop(designated_color_forward_7));
    607     designated_color_backward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?prop(style_bus_color):prop(designated_color_forward_8));
     1072
     1073    sign_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_backward_1),";images/bus backward.png"):prop(sign_backward_1));
     1074    sign_backward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_backward_2),";images/bus backward.png"):prop(sign_backward_2));
     1075    sign_backward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_backward_3),";images/bus backward.png"):prop(sign_backward_3));
     1076    sign_backward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_backward_4),";images/bus backward.png"):prop(sign_backward_4));
     1077    sign_backward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_backward_5),";images/bus backward.png"):prop(sign_backward_5));
     1078    sign_backward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_backward_6),";images/bus backward.png"):prop(sign_backward_6));
     1079    sign_backward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_backward_7),";images/bus backward.png"):prop(sign_backward_7));
     1080    sign_backward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_backward_8),";images/bus backward.png"):prop(sign_backward_8));
    6081081
    6091082    /* Lane count based on :lanes values */
    6101083    tag_lanes_bwd_min: eval(has_tag_key("bus:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min));
    6111084    tag_lanes_bwd_max: eval(has_tag_key("bus:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max));
     1085}
     1086
     1087/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     1088/* Taxi forward lanes                                                                                                                               */
     1089/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     1090way|z17-[is_prop_set(ok)]["taxi:lanes:forward"],
     1091way|z17-[is_prop_set(ok)]["taxi:forward"],
     1092way|z17-[is_prop_set(ok)]["taxi:lanes"][prop(oneway_type)=1],
     1093way|z17-[is_prop_set(ok)]["taxi"][prop(oneway_type)=1]
     1094{
     1095    temp: eval(cond(has_tag_key("taxi:lanes"),tag("taxi:lanes"),
     1096                                cond(has_tag_key("taxi"),tag("taxi"),
     1097                                cond(has_tag_key("taxi:lanes:forward"),tag("taxi:lanes:forward"),
     1098                                     tag("taxi:forward")
     1099                                    ))));
     1100    temp_list: eval(split("|",prop(temp)));
     1101    temp_length: eval(length(prop(temp_list)));
     1102    tempa: eval(cond(has_tag_key("access:lanes"),tag("access:lanes"),
     1103                                cond(has_tag_key("access"),tag("access"),
     1104                                cond(has_tag_key("access:lanes:forward"),tag("access:lanes:forward"),
     1105                                     tag("access:forward")
     1106                                    ))));
     1107    tempa_list: eval(split("|",prop(tempa)));
     1108    tempa_length: eval(length(prop(tempa_list)));
     1109
     1110    sign_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_forward_1),";images/taxi forward.png"):prop(sign_forward_1));
     1111    sign_forward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_forward_2),";images/taxi forward.png"):prop(sign_forward_2));
     1112    sign_forward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_forward_3),";images/taxi forward.png"):prop(sign_forward_3));
     1113    sign_forward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_forward_4),";images/taxi forward.png"):prop(sign_forward_4));
     1114    sign_forward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_forward_5),";images/taxi forward.png"):prop(sign_forward_5));
     1115    sign_forward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_forward_6),";images/taxi forward.png"):prop(sign_forward_6));
     1116    sign_forward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_forward_7),";images/taxi forward.png"):prop(sign_forward_7));
     1117    sign_forward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_forward_8),";images/taxi forward.png"):prop(sign_forward_8));
     1118
     1119    /* Lane count based on :lanes values */
     1120    tag_lanes_all_min: eval(has_tag_key("taxi:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min));
     1121    tag_lanes_all_max: eval(has_tag_key("taxi:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max));
     1122    tag_lanes_fwd_min: eval(has_tag_key("taxi:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min));
     1123    tag_lanes_fwd_max: eval(has_tag_key("taxi:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max));
     1124}
     1125
     1126/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     1127/* Taxi backward lanes                                                                                                                              */
     1128/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     1129way|z17-[is_prop_set(ok)]["taxi:lanes:backward"],
     1130way|z17-[is_prop_set(ok)]["taxi:backward"],
     1131way|z17-[is_prop_set(ok)]["taxi:lanes"][prop(oneway_type)=(-1)],
     1132way|z17-[is_prop_set(ok)]["taxi"][prop(oneway_type)=(-1)]
     1133{
     1134    temp: eval(cond(has_tag_key("taxi:lanes"),tag("taxi:lanes"),
     1135                                cond(has_tag_key("taxi"),tag("taxi"),
     1136                                cond(has_tag_key("taxi:lanes:backward"),tag("taxi:lanes:backward"),
     1137                                     tag("taxi:backward")
     1138                                    ))));
     1139    temp_list: eval(split("|",prop(temp)));
     1140    temp_length: eval(length(prop(temp_list)));
     1141    /* TODO: oneway=-1*/
     1142    tempa: eval(cond(has_tag_key("access:lanes:backward"),tag("access:lanes:backward"),tag("access:backward")));
     1143    tempa_list: eval(split("|",prop(tempa)));
     1144    tempa_length: eval(length(prop(tempa_list)));
     1145
     1146    sign_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_backward_1),";images/taxi backward.png"):prop(sign_backward_1));
     1147    sign_backward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_backward_2),";images/taxi backward.png"):prop(sign_backward_2));
     1148    sign_backward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_backward_3),";images/taxi backward.png"):prop(sign_backward_3));
     1149    sign_backward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_backward_4),";images/taxi backward.png"):prop(sign_backward_4));
     1150    sign_backward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_backward_5),";images/taxi backward.png"):prop(sign_backward_5));
     1151    sign_backward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_backward_6),";images/taxi backward.png"):prop(sign_backward_6));
     1152    sign_backward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_backward_7),";images/taxi backward.png"):prop(sign_backward_7));
     1153    sign_backward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_backward_8),";images/taxi backward.png"):prop(sign_backward_8));
     1154
     1155    /* Lane count based on :lanes values */
     1156    tag_lanes_bwd_min: eval(has_tag_key("taxi:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min));
     1157    tag_lanes_bwd_max: eval(has_tag_key("taxi:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max));
    6121158}
    6131159
     
    6351181    tempa_length: eval(length(prop(tempa_list)));
    6361182
    637 
    638     designated_color_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?prop(style_psv_color):prop(designated_color_forward_1));
    639     designated_color_forward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?prop(style_psv_color):prop(designated_color_forward_2));
    640     designated_color_forward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?prop(style_psv_color):prop(designated_color_forward_3));
    641     designated_color_forward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?prop(style_psv_color):prop(designated_color_forward_4));
    642     designated_color_forward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?prop(style_psv_color):prop(designated_color_forward_5));
    643     designated_color_forward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?prop(style_psv_color):prop(designated_color_forward_6));
    644     designated_color_forward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?prop(style_psv_color):prop(designated_color_forward_7));
    645     designated_color_forward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?prop(style_psv_color):prop(designated_color_forward_8));
     1183    sign_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_forward_1),";images/psv forward.png"):prop(sign_forward_1));
     1184    sign_forward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_forward_2),";images/psv forward.png"):prop(sign_forward_2));
     1185    sign_forward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_forward_3),";images/psv forward.png"):prop(sign_forward_3));
     1186    sign_forward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_forward_4),";images/psv forward.png"):prop(sign_forward_4));
     1187    sign_forward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_forward_5),";images/psv forward.png"):prop(sign_forward_5));
     1188    sign_forward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_forward_6),";images/psv forward.png"):prop(sign_forward_6));
     1189    sign_forward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_forward_7),";images/psv forward.png"):prop(sign_forward_7));
     1190    sign_forward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_forward_8),";images/psv forward.png"):prop(sign_forward_8));
    6461191
    6471192    /* Lane count based on :lanes values */
     
    6711216    tempa_list: eval(split("|",prop(tempa)));
    6721217    tempa_length: eval(length(prop(tempa_list)));
    673     designated_color_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?prop(style_psv_color):prop(designated_color_backward_1));
    674     designated_color_backward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?prop(style_psv_color):prop(designated_color_backward_2));
    675     designated_color_backward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?prop(style_psv_color):prop(designated_color_backward_3));
    676     designated_color_backward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?prop(style_psv_color):prop(designated_color_backward_4));
    677     designated_color_backward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?prop(style_psv_color):prop(designated_color_backward_5));
    678     designated_color_backward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?prop(style_psv_color):prop(designated_color_backward_6));
    679     designated_color_backward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?prop(style_psv_color):prop(designated_color_backward_7));
    680     designated_color_backward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?prop(style_psv_color):prop(designated_color_backward_8));
     1218
     1219    sign_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_backward_1),";images/psv backward.png"):prop(sign_backward_1));
     1220    sign_backward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_backward_2),";images/psv backward.png"):prop(sign_backward_2));
     1221    sign_backward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_backward_3),";images/psv backward.png"):prop(sign_backward_3));
     1222    sign_backward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_backward_4),";images/psv backward.png"):prop(sign_backward_4));
     1223    sign_backward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_backward_5),";images/psv backward.png"):prop(sign_backward_5));
     1224    sign_backward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_backward_6),";images/psv backward.png"):prop(sign_backward_6));
     1225    sign_backward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_backward_7),";images/psv backward.png"):prop(sign_backward_7));
     1226    sign_backward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_backward_8),";images/psv backward.png"):prop(sign_backward_8));
    6811227
    6821228    /* Lane count based on :lanes values */
     
    7071253    tempa_list: eval(split("|",prop(tempa)));
    7081254    tempa_length: eval(length(prop(tempa_list)));
    709     color_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?prop(style_bicycle_color):prop(color_forward_1));
    710     color_forward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?prop(style_bicycle_color):prop(color_forward_2));
    711     color_forward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?prop(style_bicycle_color):prop(color_forward_3));
    712     color_forward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?prop(style_bicycle_color):prop(color_forward_4));
    713     color_forward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?prop(style_bicycle_color):prop(color_forward_5));
    714     color_forward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?prop(style_bicycle_color):prop(color_forward_6));
    715     color_forward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?prop(style_bicycle_color):prop(color_forward_7));
    716     color_forward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?prop(style_bicycle_color):prop(color_forward_8));
     1255
     1256    sign_forward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_forward_1),";images/bicycle forward.png"):prop(sign_forward_1));
     1257    sign_forward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_forward_2),";images/bicycle forward.png"):prop(sign_forward_2));
     1258    sign_forward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_forward_3),";images/bicycle forward.png"):prop(sign_forward_3));
     1259    sign_forward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_forward_4),";images/bicycle forward.png"):prop(sign_forward_4));
     1260    sign_forward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_forward_5),";images/bicycle forward.png"):prop(sign_forward_5));
     1261    sign_forward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_forward_6),";images/bicycle forward.png"):prop(sign_forward_6));
     1262    sign_forward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_forward_7),";images/bicycle forward.png"):prop(sign_forward_7));
     1263    sign_forward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_forward_8),";images/bicycle forward.png"):prop(sign_forward_8));
    7171264
    7181265    /* Lane count based on :lanes values */
     
    7421289    tempa_list: eval(split("|",prop(tempa)));
    7431290    tempa_length: eval(length(prop(tempa_list)));
    744     color_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?prop(style_bicycle_color):prop(color_backward_1));
    745     color_backward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?prop(style_bicycle_color):prop(color_backward_2));
    746     color_backward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?prop(style_bicycle_color):prop(color_backward_3));
    747     color_backward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?prop(style_bicycle_color):prop(color_backward_4));
    748     color_backward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?prop(style_bicycle_color):prop(color_backward_5));
    749     color_backward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?prop(style_bicycle_color):prop(color_backward_6));
    750     color_backward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?prop(style_bicycle_color):prop(color_backward_7));
    751     color_backward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?prop(style_bicycle_color):prop(color_backward_8));
     1291
     1292    sign_backward_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?concat(prop(sign_backward_1),";images/bicycle backward.png"):prop(sign_backward_1));
     1293    sign_backward_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?concat(prop(sign_backward_2),";images/bicycle backward.png"):prop(sign_backward_2));
     1294    sign_backward_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?concat(prop(sign_backward_3),";images/bicycle backward.png"):prop(sign_backward_3));
     1295    sign_backward_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?concat(prop(sign_backward_4),";images/bicycle backward.png"):prop(sign_backward_4));
     1296    sign_backward_5: eval(((prop(temp_length)>4) && ((get(prop(temp_list),4)="designated") || ((get(prop(temp_list),4)="yes") && (get(prop(tempa_list),4)="no"))))?concat(prop(sign_backward_5),";images/bicycle backward.png"):prop(sign_backward_5));
     1297    sign_backward_6: eval(((prop(temp_length)>5) && ((get(prop(temp_list),5)="designated") || ((get(prop(temp_list),5)="yes") && (get(prop(tempa_list),5)="no"))))?concat(prop(sign_backward_6),";images/bicycle backward.png"):prop(sign_backward_6));
     1298    sign_backward_7: eval(((prop(temp_length)>6) && ((get(prop(temp_list),6)="designated") || ((get(prop(temp_list),6)="yes") && (get(prop(tempa_list),6)="no"))))?concat(prop(sign_backward_7),";images/bicycle backward.png"):prop(sign_backward_7));
     1299    sign_backward_8: eval(((prop(temp_length)>7) && ((get(prop(temp_list),7)="designated") || ((get(prop(temp_list),7)="yes") && (get(prop(tempa_list),7)="no"))))?concat(prop(sign_backward_8),";images/bicycle backward.png"):prop(sign_backward_8));
    7521300
    7531301    /* Lane count based on :lanes values */
     
    7561304}
    7571305
    758 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    759 /* Bicycle both_ways lanes                                                                                                                          */
    760 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    761 way|z17-[is_prop_set(ok)]["bicycle:lanes:both_ways"],
    762 way|z17-[is_prop_set(ok)]["bicycle:both_ways"]
    763 {
    764     temp: eval(cond(has_tag_key("bicycle:lanes:both_ways"),tag("bicycle:lanes:both_ways"),tag("bicycle:both_ways")));
     1306
     1307/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     1308/* HOV forward lanes                                                                                                                               */
     1309/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     1310way|z17-[is_prop_set(ok)]["hov:lanes:forward"],
     1311way|z17-[is_prop_set(ok)]["hov:forward"],
     1312way|z17-[is_prop_set(ok)]["hov:lanes"][prop(oneway_type)=1],
     1313way|z17-[is_prop_set(ok)]["hov"][prop(oneway_type)=1]
     1314{
     1315    temp: eval(cond(has_tag_key("hov:lanes"),tag("hov:lanes"),
     1316                                cond(has_tag_key("hov:lanes:forward"),tag("hov:lanes:forward"),
     1317                                cond(has_tag_key("hov"),tag("hov"),
     1318                                     tag("hov:forward")
     1319                                    ))));
    7651320    temp_list: eval(split("|",prop(temp)));
    7661321    temp_length: eval(length(prop(temp_list)));
    767     tempa: eval(cond(has_tag_key("access:lanes:both_ways"),tag("access:lanes:both_ways"),tag("access:both_ways")));
    768     tempa_list: eval(split("|",prop(tempa)));
    769     tempa_length: eval(length(prop(tempa_list)));
    770     color_bothways_1: eval(((prop(temp_length)>0) && ((get(prop(temp_list),0)="designated") || ((get(prop(temp_list),0)="yes") && (get(prop(tempa_list),0)="no"))))?prop(style_bicycle_color):prop(color_bothways_1));
    771     color_bothways_2: eval(((prop(temp_length)>1) && ((get(prop(temp_list),1)="designated") || ((get(prop(temp_list),1)="yes") && (get(prop(tempa_list),1)="no"))))?prop(style_bicycle_color):prop(color_bothways_2));
    772     color_bothways_3: eval(((prop(temp_length)>2) && ((get(prop(temp_list),2)="designated") || ((get(prop(temp_list),2)="yes") && (get(prop(tempa_list),2)="no"))))?prop(style_bicycle_color):prop(color_bothways_3));
    773     color_bothways_4: eval(((prop(temp_length)>3) && ((get(prop(temp_list),3)="designated") || ((get(prop(temp_list),3)="yes") && (get(prop(tempa_list),3)="no"))))?prop(style_bicycle_color):prop(color_bothways_4));
     1322    hov_minimum: eval(has_tag_key("hov:minimum:forward")?tag("hov:minimum:forward"):(has_tag_key("hov:minimum")?tag("hov:minimum"):0));
     1323    hov_image: eval((prop(hov_minimum)=2)?";images/hov2 forward.png":((prop(hov_minimum)=3)?";images/hov3 forward.png":";images/hov forward.png"));
     1324
     1325    t:              eval(get(prop(temp_list),0));
     1326    sign_forward_1: eval(((prop(temp_length)>0) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_1),prop(hov_image)):prop(sign_forward_1));
     1327    t:              eval(get(prop(temp_list),1));
     1328    sign_forward_2: eval(((prop(temp_length)>1) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_2),prop(hov_image)):prop(sign_forward_2));
     1329    t:              eval(get(prop(temp_list),2));
     1330    sign_forward_3: eval(((prop(temp_length)>2) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_3),prop(hov_image)):prop(sign_forward_3));
     1331    t:              eval(get(prop(temp_list),3));
     1332    sign_forward_4: eval(((prop(temp_length)>3) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_4),prop(hov_image)):prop(sign_forward_4));
     1333    t:              eval(get(prop(temp_list),4));
     1334    sign_forward_5: eval(((prop(temp_length)>4) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_5),prop(hov_image)):prop(sign_forward_5));
     1335    t:              eval(get(prop(temp_list),5));
     1336    sign_forward_6: eval(((prop(temp_length)>5) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_6),prop(hov_image)):prop(sign_forward_6));
     1337    t:              eval(get(prop(temp_list),6));
     1338    sign_forward_7: eval(((prop(temp_length)>6) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_7),prop(hov_image)):prop(sign_forward_7));
     1339    t:              eval(get(prop(temp_list),7));
     1340    sign_forward_8: eval(((prop(temp_length)>7) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_forward_8),prop(hov_image)):prop(sign_forward_8));
    7741341
    7751342    /* Lane count based on :lanes values */
    776     tag_lanes_both_min: eval(has_tag_key("bicycle:lanes:both_ways")?min(prop(tag_lanes_both_min),prop(temp_length)):prop(tag_lanes_both_min));
    777     tag_lanes_both_max: eval(has_tag_key("bicycle:lanes:both_ways")?max(prop(tag_lanes_both_max),prop(temp_length)):prop(tag_lanes_both_max));
     1343    tag_lanes_all_min: eval(has_tag_key("hov:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min));
     1344    tag_lanes_all_max: eval(has_tag_key("hov:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max));
     1345    tag_lanes_fwd_min: eval(has_tag_key("hov:lanes:forward")?min(prop(tag_lanes_fwd_min),prop(temp_length)):prop(tag_lanes_fwd_min));
     1346    tag_lanes_fwd_max: eval(has_tag_key("hov:lanes:forward")?max(prop(tag_lanes_fwd_max),prop(temp_length)):prop(tag_lanes_fwd_max));
     1347}
     1348
     1349/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     1350/* HOV backward lanes                                                                                                                               */
     1351/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     1352way|z17-[is_prop_set(ok)]["hov:lanes:backward"],
     1353way|z17-[is_prop_set(ok)]["hov:backward"],
     1354way|z17-[is_prop_set(ok)]["hov:lanes"][prop(oneway_type)=(-1)],
     1355way|z17-[is_prop_set(ok)]["hov"][prop(oneway_type)=(-1)]
     1356{
     1357    temp: eval(cond(has_tag_key("hov:lanes"),tag("hov:lanes"),
     1358                                cond(has_tag_key("hov"),tag("hov"),
     1359                                cond(has_tag_key("hov:lanes:backward"),tag("hov:lanes:backward"),
     1360                                     tag("hov:backward")
     1361                                    ))));
     1362    temp_list: eval(split("|",prop(temp)));
     1363    temp_length: eval(length(prop(temp_list)));
     1364    hov_minimum: eval(has_tag_key("hov:minimum:backward")?tag("hov:minimum:backward"):(has_tag_key("hov:minimum")?tag("hov:minimum"):0));
     1365    hov_image: eval((prop(hov_minimum)=2)?";images/hov2 backward.png":((prop(hov_minimum)=3)?";images/hov3 backward.png":";images/hov backward.png"));
     1366
     1367    t:              eval(get(prop(temp_list),0));
     1368    sign_backward_1: eval(((prop(temp_length)>0) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_1),prop(hov_image)):prop(sign_backward_1));
     1369    t:              eval(get(prop(temp_list),1));
     1370    sign_backward_2: eval(((prop(temp_length)>1) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_2),prop(hov_image)):prop(sign_backward_2));
     1371    t:              eval(get(prop(temp_list),2));
     1372    sign_backward_3: eval(((prop(temp_length)>2) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_3),prop(hov_image)):prop(sign_backward_3));
     1373    t:              eval(get(prop(temp_list),3));
     1374    sign_backward_4: eval(((prop(temp_length)>3) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_4),prop(hov_image)):prop(sign_backward_4));
     1375    t:              eval(get(prop(temp_list),4));
     1376    sign_backward_5: eval(((prop(temp_length)>4) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_5),prop(hov_image)):prop(sign_backward_5));
     1377    t:              eval(get(prop(temp_list),5));
     1378    sign_backward_6: eval(((prop(temp_length)>5) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_6),prop(hov_image)):prop(sign_backward_6));
     1379    t:              eval(get(prop(temp_list),6));
     1380    sign_backward_7: eval(((prop(temp_length)>6) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_7),prop(hov_image)):prop(sign_backward_7));
     1381    t:              eval(get(prop(temp_list),7));
     1382    sign_backward_8: eval(((prop(temp_length)>7) && ((prop(t)="designated") || (prop(t)="lane")))?concat(prop(sign_backward_8),prop(hov_image)):prop(sign_backward_8));
     1383
     1384    /* Lane count based on :lanes values */
     1385    tag_lanes_all_min: eval(has_tag_key("hov:lanes")?min(prop(tag_lanes_all_min),prop(temp_length)):prop(tag_lanes_all_min));
     1386    tag_lanes_all_max: eval(has_tag_key("hov:lanes")?max(prop(tag_lanes_all_max),prop(temp_length)):prop(tag_lanes_all_max));
     1387    tag_lanes_bwd_min: eval(has_tag_key("hov:lanes:backward")?min(prop(tag_lanes_bwd_min),prop(temp_length)):prop(tag_lanes_bwd_min));
     1388    tag_lanes_bwd_max: eval(has_tag_key("hov:lanes:backward")?max(prop(tag_lanes_bwd_max),prop(temp_length)):prop(tag_lanes_bwd_max));
    7781389}
    7791390
     
    10871698    change_backward_8_right: eval((prop(lanes_bwd)=8)?prop(change_border):prop(change_backward_8_right)); 
    10881699}
     1700
     1701/***************************************************************************************************************************************************/
     1702/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     1703/* Splitting the list of signs into separate properties                                                                                            */
     1704/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     1705/***************************************************************************************************************************************************/
     1706way[!(prop(sign_forward_1)="")] { t: eval(split(";",prop(sign_forward_1))); sign_1_forward_1: eval(get(prop(t),1)); sign_2_forward_1: eval(get(prop(t),2)); sign_3_forward_1: eval(get(prop(t),3)); }
     1707way[!(prop(sign_forward_2)="")] { t: eval(split(";",prop(sign_forward_2))); sign_1_forward_2: eval(get(prop(t),1)); sign_2_forward_2: eval(get(prop(t),2)); sign_3_forward_2: eval(get(prop(t),3)); }
     1708way[!(prop(sign_forward_3)="")] { t: eval(split(";",prop(sign_forward_3))); sign_1_forward_3: eval(get(prop(t),1)); sign_2_forward_3: eval(get(prop(t),2)); sign_3_forward_3: eval(get(prop(t),3)); }
     1709way[!(prop(sign_forward_4)="")] { t: eval(split(";",prop(sign_forward_4))); sign_1_forward_4: eval(get(prop(t),1)); sign_2_forward_4: eval(get(prop(t),2)); sign_3_forward_4: eval(get(prop(t),3)); }
     1710way[!(prop(sign_forward_5)="")] { t: eval(split(";",prop(sign_forward_5))); sign_1_forward_5: eval(get(prop(t),1)); sign_2_forward_5: eval(get(prop(t),2)); sign_3_forward_5: eval(get(prop(t),3)); }
     1711way[!(prop(sign_forward_6)="")] { t: eval(split(";",prop(sign_forward_6))); sign_1_forward_6: eval(get(prop(t),1)); sign_2_forward_6: eval(get(prop(t),2)); sign_3_forward_6: eval(get(prop(t),3)); }
     1712way[!(prop(sign_forward_7)="")] { t: eval(split(";",prop(sign_forward_7))); sign_1_forward_7: eval(get(prop(t),1)); sign_2_forward_7: eval(get(prop(t),2)); sign_3_forward_7: eval(get(prop(t),3)); }
     1713way[!(prop(sign_forward_7)="")] { t: eval(split(";",prop(sign_forward_8))); sign_1_forward_8: eval(get(prop(t),1)); sign_2_forward_8: eval(get(prop(t),2)); sign_3_forward_8: eval(get(prop(t),3)); }
     1714
     1715way[!(prop(sign_backward_1)="")] { t: eval(split(";",prop(sign_backward_1))); sign_1_backward_1: eval(get(prop(t),1)); sign_2_backward_1: eval(get(prop(t),2)); sign_3_backward_1: eval(get(prop(t),3)); }
     1716way[!(prop(sign_backward_2)="")] { t: eval(split(";",prop(sign_backward_2))); sign_1_backward_2: eval(get(prop(t),1)); sign_2_backward_2: eval(get(prop(t),2)); sign_3_backward_2: eval(get(prop(t),3)); }
     1717way[!(prop(sign_backward_3)="")] { t: eval(split(";",prop(sign_backward_3))); sign_1_backward_3: eval(get(prop(t),1)); sign_2_backward_3: eval(get(prop(t),2)); sign_3_backward_3: eval(get(prop(t),3)); }
     1718way[!(prop(sign_backward_4)="")] { t: eval(split(";",prop(sign_backward_4))); sign_1_backward_4: eval(get(prop(t),1)); sign_2_backward_4: eval(get(prop(t),2)); sign_3_backward_4: eval(get(prop(t),3)); }
     1719way[!(prop(sign_backward_5)="")] { t: eval(split(";",prop(sign_backward_5))); sign_1_backward_5: eval(get(prop(t),1)); sign_2_backward_5: eval(get(prop(t),2)); sign_3_backward_5: eval(get(prop(t),3)); }
     1720way[!(prop(sign_backward_6)="")] { t: eval(split(";",prop(sign_backward_6))); sign_1_backward_6: eval(get(prop(t),1)); sign_2_backward_6: eval(get(prop(t),2)); sign_3_backward_6: eval(get(prop(t),3)); }
     1721way[!(prop(sign_backward_7)="")] { t: eval(split(";",prop(sign_backward_7))); sign_1_backward_7: eval(get(prop(t),1)); sign_2_backward_7: eval(get(prop(t),2)); sign_3_backward_7: eval(get(prop(t),3)); }
     1722way[!(prop(sign_backward_7)="")] { t: eval(split(";",prop(sign_backward_8))); sign_1_backward_8: eval(get(prop(t),1)); sign_2_backward_8: eval(get(prop(t),2)); sign_3_backward_8: eval(get(prop(t),3)); }
    10891723
    10901724
     
    15442178    right-casing-dashes:                                  eval(prop(change_forward_1_right,"default"));
    15452179    left-casing-dashes:                                   eval(prop(change_forward_1_left,"default"));
    1546     turn_matrix_scaling:                             eval(is_prop_set(turn_forward_1,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
     2180    repeat-image:                                     eval(prop(turn_image_forward_1,"default"));
     2181
     2182    opacity: 0.0; linecap: none;
     2183    repeat-image-offset: eval(prop(offset));
     2184    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2185    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2186    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2187    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2188    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2189}
     2190way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 0]::Lane_Forward_1_Color
     2191{
     2192    offset:                                          eval(prop(lane_offset_forward_1,"default"));
     2193    width:                                            eval(prop(lane_width_forward_1,"default"));
     2194    color:                                                      prop(color_forward_1,"default");
     2195    dashes:                              eval(is_prop_set(restriction_color_forward_1,"default")?list(20,20):prop(unset_property));
     2196    dashes-background-color:             eval(is_prop_set(restriction_color_forward_1,"default")?
     2197                                                     prop(restriction_color_forward_1,"default"):prop(unset_property));
     2198    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2199    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2200}
     2201way|z17-[is_prop_set(sign_1_forward_1,     "default")]::Lane_Forward_1_Sign_1
     2202{
     2203    repeat-image:                           eval(prop(sign_1_forward_1,"default"));
     2204    repeat-image-offset:               eval(prop(lane_offset_forward_1,"default"));
     2205    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_1"));
     2206    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2207}
     2208way|z17-[is_prop_set(sign_2_forward_1,     "default")]::Lane_Forward_1_Sign_2
     2209{
     2210    repeat-image:                           eval(prop(sign_2_forward_1,"default"));
     2211    repeat-image-offset:               eval(prop(lane_offset_forward_1,"default"));
     2212    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_1"));
     2213    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2214}
     2215way|z17-[is_prop_set(sign_3_forward_1,     "default")]::Lane_Forward_1_Sign_3
     2216{
     2217    repeat-image:                           eval(prop(sign_3_forward_1,"default"));
     2218    repeat-image-offset:               eval(prop(lane_offset_forward_1,"default"));
     2219    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_1"));
     2220    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2221}
     2222
     2223way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 1]::Lane_Forward_2
     2224{
     2225    offset:                                          eval(prop(lane_offset_forward_2,"default"));
     2226    width:                                           eval((prop(lane_width_forward_2,"default")-prop(lane_casing,"default")));
     2227    right-casing-dashes:                                  eval(prop(change_forward_2_right,"default"));
     2228    left-casing-dashes:                                   eval(prop(change_forward_2_left,"default"));
     2229    repeat-image:                                     eval(prop(turn_image_forward_2,"default"));
     2230
     2231    opacity: 0.0; linecap: none;
     2232    repeat-image-offset: eval(prop(offset));
     2233    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2234    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2235    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2236    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2237    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2238}
     2239way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 1]::Lane_Forward_2_Color
     2240{
     2241    offset:                                          eval(prop(lane_offset_forward_2,"default"));
     2242    width:                                            eval(prop(lane_width_forward_2,"default"));
     2243    color:                                                      prop(color_forward_2,"default");
     2244    dashes:                              eval(is_prop_set(restriction_color_forward_2,"default")?list(20,20):prop(unset_property));
     2245    dashes-background-color:             eval(is_prop_set(restriction_color_forward_2,"default")?
     2246                                                     prop(restriction_color_forward_2,"default"):prop(unset_property));
     2247    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2248    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2249}
     2250way|z17-[is_prop_set(sign_1_forward_2,     "default")]::Lane_Forward_2_Sign_1
     2251{
     2252    repeat-image:                           eval(prop(sign_1_forward_2,"default"));
     2253    repeat-image-offset:               eval(prop(lane_offset_forward_2,"default"));
     2254    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_2"));
     2255    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2256}
     2257way|z17-[is_prop_set(sign_2_forward_2,     "default")]::Lane_Forward_2_Sign_2
     2258{
     2259    repeat-image:                           eval(prop(sign_2_forward_2,"default"));
     2260    repeat-image-offset:               eval(prop(lane_offset_forward_2,"default"));
     2261    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_2"));
     2262    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2263}
     2264way|z17-[is_prop_set(sign_3_forward_2,     "default")]::Lane_Forward_2_Sign_3
     2265{
     2266    repeat-image:                           eval(prop(sign_3_forward_2,"default"));
     2267    repeat-image-offset:               eval(prop(lane_offset_forward_2,"default"));
     2268    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_2"));
     2269    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2270}
     2271
     2272way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 2]::Lane_Forward_3
     2273{
     2274    offset:                                          eval(prop(lane_offset_forward_3,"default"));
     2275    width:                                           eval((prop(lane_width_forward_3,"default")-prop(lane_casing,"default")));
     2276    right-casing-dashes:                                  eval(prop(change_forward_3_right,"default"));
     2277    left-casing-dashes:                                   eval(prop(change_forward_3_left,"default"));
     2278    repeat-image:                                     eval(prop(turn_image_forward_3,"default"));
     2279
     2280    opacity: 0.0; linecap: none;
     2281    repeat-image-offset: eval(prop(offset));
     2282    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2283    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2284    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2285    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2286    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2287}
     2288way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 2]::Lane_Forward_3_Color
     2289{
     2290    offset:                                          eval(prop(lane_offset_forward_3,"default"));
     2291    width:                                            eval(prop(lane_width_forward_3,"default"));
     2292    color:                                                      prop(color_forward_3,"default");
     2293    dashes:                              eval(is_prop_set(restriction_color_forward_3,"default")?list(20,20):prop(unset_property));
     2294    dashes-background-color:             eval(is_prop_set(restriction_color_forward_3,"default")?
     2295                                                     prop(restriction_color_forward_3,"default"):prop(unset_property));
     2296    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2297    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2298}
     2299way|z17-[is_prop_set(sign_1_forward_3,     "default")]::Lane_Forward_3_Sign_1
     2300{
     2301    repeat-image:                           eval(prop(sign_1_forward_3,"default"));
     2302    repeat-image-offset:               eval(prop(lane_offset_forward_3,"default"));
     2303    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_3"));
     2304    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2305}
     2306way|z17-[is_prop_set(sign_2_forward_3,     "default")]::Lane_Forward_3_Sign_2
     2307{
     2308    repeat-image:                           eval(prop(sign_2_forward_3,"default"));
     2309    repeat-image-offset:               eval(prop(lane_offset_forward_3,"default"));
     2310    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_3"));
     2311    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2312}
     2313way|z17-[is_prop_set(sign_3_forward_3,     "default")]::Lane_Forward_3_Sign_3
     2314{
     2315    repeat-image:                           eval(prop(sign_3_forward_3,"default"));
     2316    repeat-image-offset:               eval(prop(lane_offset_forward_3,"default"));
     2317    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_3"));
     2318    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2319}
     2320
     2321way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 3]::Lane_Forward_4
     2322{
     2323    offset:                                          eval(prop(lane_offset_forward_4,"default"));
     2324    width:                                           eval((prop(lane_width_forward_4,"default")-prop(lane_casing,"default")));
     2325    right-casing-dashes:                                  eval(prop(change_forward_4_right,"default"));
     2326    left-casing-dashes:                                   eval(prop(change_forward_4_left,"default"));
     2327    repeat-image:                                     eval(prop(turn_image_forward_4,"default"));
     2328
     2329    opacity: 0.0; linecap: none;
     2330    repeat-image-offset: eval(prop(offset));
     2331    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2332    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2333    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2334    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2335    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2336}
     2337way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 3]::Lane_Forward_4_Color
     2338{
     2339    offset:                                          eval(prop(lane_offset_forward_4,"default"));
     2340    width:                                            eval(prop(lane_width_forward_4,"default"));
     2341    color:                                                      prop(color_forward_4,"default");
     2342    dashes:                              eval(is_prop_set(restriction_color_forward_4,"default")?list(20,20):prop(unset_property));
     2343    dashes-background-color:             eval(is_prop_set(restriction_color_forward_4,"default")?
     2344                                                     prop(restriction_color_forward_4,"default"):prop(unset_property));
     2345    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2346    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2347}
     2348way|z17-[is_prop_set(sign_1_forward_4,     "default")]::Lane_Forward_4_Sign_1
     2349{
     2350    repeat-image:                           eval(prop(sign_1_forward_4,"default"));
     2351    repeat-image-offset:               eval(prop(lane_offset_forward_4,"default"));
     2352    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_4"));
     2353    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2354}
     2355way|z17-[is_prop_set(sign_2_forward_4,     "default")]::Lane_Forward_4_Sign_2
     2356{
     2357    repeat-image:                           eval(prop(sign_2_forward_4,"default"));
     2358    repeat-image-offset:               eval(prop(lane_offset_forward_4,"default"));
     2359    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_4"));
     2360    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2361}
     2362way|z17-[is_prop_set(sign_3_forward_4,     "default")]::Lane_Forward_4_Sign_3
     2363{
     2364    repeat-image:                           eval(prop(sign_3_forward_4,"default"));
     2365    repeat-image-offset:               eval(prop(lane_offset_forward_4,"default"));
     2366    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_4"));
     2367    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2368}
     2369
     2370way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 4]::Lane_Forward_5
     2371{
     2372    offset:                                          eval(prop(lane_offset_forward_5,"default"));
     2373    width:                                           eval((prop(lane_width_forward_5,"default")-prop(lane_casing,"default")));
     2374    right-casing-dashes:                                  eval(prop(change_forward_5_right,"default"));
     2375    left-casing-dashes:                                   eval(prop(change_forward_5_left,"default"));
     2376    repeat-image:                                     eval(prop(turn_image_forward_5,"default"));
     2377
     2378    opacity: 0.0; linecap: none;
     2379    repeat-image-offset: eval(prop(offset));
     2380    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2381    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2382    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2383    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2384    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2385}
     2386way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 4]::Lane_Forward_5_Color
     2387{
     2388    offset:                                          eval(prop(lane_offset_forward_5,"default"));
     2389    width:                                            eval(prop(lane_width_forward_5,"default"));
     2390    color:                                                      prop(color_forward_5,"default");
     2391    dashes:                              eval(is_prop_set(restriction_color_forward_5,"default")?list(20,20):prop(unset_property));
     2392    dashes-background-color:             eval(is_prop_set(restriction_color_forward_5,"default")?
     2393                                                     prop(restriction_color_forward_5,"default"):prop(unset_property));
     2394    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2395    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2396}
     2397way|z17-[is_prop_set(sign_1_forward_5,     "default")]::Lane_Forward_5_Sign_1
     2398{
     2399    repeat-image:                           eval(prop(sign_1_forward_5,"default"));
     2400    repeat-image-offset:               eval(prop(lane_offset_forward_5,"default"));
     2401    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_5"));
     2402    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2403}
     2404way|z17-[is_prop_set(sign_2_forward_5,     "default")]::Lane_Forward_5_Sign_2
     2405{
     2406    repeat-image:                           eval(prop(sign_2_forward_5,"default"));
     2407    repeat-image-offset:               eval(prop(lane_offset_forward_5,"default"));
     2408    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_5"));
     2409    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2410}
     2411way|z17-[is_prop_set(sign_3_forward_5,     "default")]::Lane_Forward_5_Sign_3
     2412{
     2413    repeat-image:                           eval(prop(sign_3_forward_5,"default"));
     2414    repeat-image-offset:               eval(prop(lane_offset_forward_5,"default"));
     2415    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_5"));
     2416    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2417}
     2418
     2419way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 5]::Lane_Forward_6
     2420{
     2421    offset:                                          eval(prop(lane_offset_forward_6,"default"));
     2422    width:                                           eval((prop(lane_width_forward_6,"default")-prop(lane_casing,"default")));
     2423    right-casing-dashes:                                  eval(prop(change_forward_6_right,"default"));
     2424    left-casing-dashes:                                   eval(prop(change_forward_6_left,"default"));
     2425    repeat-image:                                     eval(prop(turn_image_forward_6,"default"));
     2426
     2427    opacity: 0.0; linecap: none;
     2428    repeat-image-offset: eval(prop(offset));
     2429    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2430    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2431    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2432    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2433    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2434}
     2435way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 5]::Lane_Forward_6_Color
     2436{
     2437    offset:                                          eval(prop(lane_offset_forward_6,"default"));
     2438    width:                                            eval(prop(lane_width_forward_6,"default"));
     2439    color:                                                      prop(color_forward_6,"default");
     2440    dashes:                              eval(is_prop_set(restriction_color_forward_6,"default")?list(20,20):prop(unset_property));
     2441    dashes-background-color:             eval(is_prop_set(restriction_color_forward_6,"default")?
     2442                                                     prop(restriction_color_forward_6,"default"):prop(unset_property));
     2443    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2444    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2445}
     2446way|z17-[is_prop_set(sign_1_forward_6,     "default")]::Lane_Forward_6_Sign_1
     2447{
     2448    repeat-image:                           eval(prop(sign_1_forward_6,"default"));
     2449    repeat-image-offset:               eval(prop(lane_offset_forward_6,"default"));
     2450    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_6"));
     2451    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2452}
     2453way|z17-[is_prop_set(sign_2_forward_6,     "default")]::Lane_Forward_6_Sign_2
     2454{
     2455    repeat-image:                           eval(prop(sign_2_forward_6,"default"));
     2456    repeat-image-offset:               eval(prop(lane_offset_forward_6,"default"));
     2457    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_6"));
     2458    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2459}
     2460way|z17-[is_prop_set(sign_3_forward_6,     "default")]::Lane_Forward_6_Sign_3
     2461{
     2462    repeat-image:                           eval(prop(sign_3_forward_6,"default"));
     2463    repeat-image-offset:               eval(prop(lane_offset_forward_6,"default"));
     2464    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_6"));
     2465    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2466}
     2467
     2468way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 6]::Lane_Forward_7
     2469{
     2470    offset:                                          eval(prop(lane_offset_forward_7,"default"));
     2471    width:                                           eval((prop(lane_width_forward_7,"default")-prop(lane_casing,"default")));
     2472    right-casing-dashes:                                  eval(prop(change_forward_7_right,"default"));
     2473    left-casing-dashes:                                   eval(prop(change_forward_7_left,"default"));
     2474    repeat-image:                                     eval(prop(turn_image_forward_7,"default"));
     2475
     2476    opacity: 0.0; linecap: none;
     2477    repeat-image-offset: eval(prop(offset));
     2478    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2479    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2480    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2481    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2482    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2483}
     2484way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 6]::Lane_Forward_7_Color
     2485{
     2486    offset:                                          eval(prop(lane_offset_forward_7,"default"));
     2487    width:                                            eval(prop(lane_width_forward_7,"default"));
     2488    color:                                                      prop(color_forward_7,"default");
     2489    dashes:                              eval(is_prop_set(restriction_color_forward_7,"default")?list(20,20):prop(unset_property));
     2490    dashes-background-color:             eval(is_prop_set(restriction_color_forward_7,"default")?
     2491                                                     prop(restriction_color_forward_7,"default"):prop(unset_property));
     2492    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2493    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2494}
     2495way|z17-[is_prop_set(sign_1_forward_7,     "default")]::Lane_Forward_7_Sign_1
     2496{
     2497    repeat-image:                           eval(prop(sign_1_forward_7,"default"));
     2498    repeat-image-offset:               eval(prop(lane_offset_forward_7,"default"));
     2499    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_7"));
     2500    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2501}
     2502way|z17-[is_prop_set(sign_2_forward_7,     "default")]::Lane_Forward_7_Sign_2
     2503{
     2504    repeat-image:                           eval(prop(sign_2_forward_7,"default"));
     2505    repeat-image-offset:               eval(prop(lane_offset_forward_7,"default"));
     2506    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_7"));
     2507    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2508}
     2509way|z17-[is_prop_set(sign_3_forward_7,     "default")]::Lane_Forward_7_Sign_3
     2510{
     2511    repeat-image:                           eval(prop(sign_3_forward_7,"default"));
     2512    repeat-image-offset:               eval(prop(lane_offset_forward_7,"default"));
     2513    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_7"));
     2514    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2515}
     2516
     2517way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 7]::Lane_Forward_8
     2518{
     2519    offset:                                          eval(prop(lane_offset_forward_8,"default"));
     2520    width:                                           eval((prop(lane_width_forward_8,"default")-prop(lane_casing,"default")));
     2521    right-casing-dashes:                                  eval(prop(change_forward_8_right,"default"));
     2522    left-casing-dashes:                                   eval(prop(change_forward_8_left,"default"));
     2523    repeat-image:                                     eval(prop(turn_image_forward_8,"default"));
     2524
     2525    opacity: 0.0; linecap: none;
     2526    repeat-image-offset: eval(prop(offset));
     2527    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2528    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2529    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2530    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2531    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2532}
     2533way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 7]::Lane_Forward_8_Color
     2534{
     2535    offset:                                          eval(prop(lane_offset_forward_8,"default"));
     2536    width:                                            eval(prop(lane_width_forward_8,"default"));
     2537    color:                                                      prop(color_forward_8,"default");
     2538    dashes:                              eval(is_prop_set(restriction_color_forward_8,"default")?list(20,20):prop(unset_property));
     2539    dashes-background-color:             eval(is_prop_set(restriction_color_forward_8,"default")?
     2540                                                     prop(restriction_color_forward_8,"default"):prop(unset_property));
     2541    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2542    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2543}
     2544way|z17-[is_prop_set(sign_1_forward_8,     "default")]::Lane_Forward_8_Sign_1
     2545{
     2546    repeat-image:                           eval(prop(sign_1_forward_8,"default"));
     2547    repeat-image-offset:               eval(prop(lane_offset_forward_8,"default"));
     2548    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_8"));
     2549    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2550}
     2551way|z17-[is_prop_set(sign_2_forward_8,     "default")]::Lane_Forward_8_Sign_2
     2552{
     2553    repeat-image:                           eval(prop(sign_2_forward_8,"default"));
     2554    repeat-image-offset:               eval(prop(lane_offset_forward_8,"default"));
     2555    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_8"));
     2556    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2557}
     2558way|z17-[is_prop_set(sign_3_forward_8,     "default")]::Lane_Forward_8_Sign_3
     2559{
     2560    repeat-image:                           eval(prop(sign_3_forward_8,"default"));
     2561    repeat-image-offset:               eval(prop(lane_offset_forward_8,"default"));
     2562    repeat-image-height: eval(prop(repeat-image-height,"Lane_Forward_8"));
     2563    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2564}
     2565
     2566/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     2567/* Backward lanes                                                                                                                                  */
     2568/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     2569way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 0]::Lane_Backward_1
     2570{
     2571    offset:                                          eval(prop(lane_offset_backward_1,"default"));
     2572    width:                                           eval((prop(lane_width_backward_1,"default")-prop(lane_casing,"default")));
     2573    left-casing-dashes:                                   eval(prop(change_backward_1_right,"default"));
     2574    right-casing-dashes:                                  eval(prop(change_backward_1_left,"default"));
     2575    repeat-image:                                     eval(prop(turn_image_backward_1,"default"));
     2576
     2577    opacity: 0.0; linecap: none;
     2578    repeat-image-offset: eval(prop(offset));
     2579    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2580    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2581    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2582    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2583    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2584}
     2585way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 0]::Lane_Backward_1_Color
     2586{
     2587    offset:                                          eval(prop(lane_offset_backward_1,"default"));
     2588    width:                                            eval(prop(lane_width_backward_1,"default"));
     2589    color:                                                      prop(color_backward_1,"default");
     2590    dashes:                              eval(is_prop_set(restriction_color_backward_1,"default")?list(20,20):prop(unset_property));
     2591    dashes-background-color:             eval(is_prop_set(restriction_color_backward_1,"default")?
     2592                                                     prop(restriction_color_backward_1,"default"):prop(unset_property));
     2593    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2594    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2595}
     2596way|z17-[is_prop_set(sign_1_backward_1,     "default")]::Lane_Backward_1_Sign_1
     2597{
     2598    repeat-image:                           eval(prop(sign_1_backward_1,"default"));
     2599    repeat-image-offset:               eval(prop(lane_offset_backward_1,"default"));
     2600    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_1"));
     2601    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2602}
     2603way|z17-[is_prop_set(sign_2_backward_1,     "default")]::Lane_Backward_1_Sign_2
     2604{
     2605    repeat-image:                           eval(prop(sign_2_backward_1,"default"));
     2606    repeat-image-offset:               eval(prop(lane_offset_backward_1,"default"));
     2607    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_1"));
     2608    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2609}
     2610way|z17-[is_prop_set(sign_3_backward_1,     "default")]::Lane_Backward_1_Sign_3
     2611{
     2612    repeat-image:                           eval(prop(sign_3_backward_1,"default"));
     2613    repeat-image-offset:               eval(prop(lane_offset_backward_1,"default"));
     2614    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_1"));
     2615    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2616}
     2617
     2618way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 1]::Lane_Backward_2
     2619{
     2620    offset:                                          eval(prop(lane_offset_backward_2,"default"));
     2621    width:                                           eval((prop(lane_width_backward_2,"default")-prop(lane_casing,"default")));
     2622    left-casing-dashes:                                   eval(prop(change_backward_2_right,"default"));
     2623    right-casing-dashes:                                  eval(prop(change_backward_2_left,"default"));
     2624    repeat-image:                                     eval(prop(turn_image_backward_2,"default"));
     2625
     2626    opacity: 0.0; linecap: none;
     2627    repeat-image-offset: eval(prop(offset));
     2628    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2629    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2630    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2631    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2632    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2633}
     2634way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 1]::Lane_Backward_2_Color
     2635{
     2636    offset:                                          eval(prop(lane_offset_backward_2,"default"));
     2637    width:                                            eval(prop(lane_width_backward_2,"default"));
     2638    color:                                                      prop(color_backward_2,"default");
     2639    dashes:                              eval(is_prop_set(restriction_color_backward_2,"default")?list(20,20):prop(unset_property));
     2640    dashes-background-color:             eval(is_prop_set(restriction_color_backward_2,"default")?
     2641                                                     prop(restriction_color_backward_2,"default"):prop(unset_property));
     2642    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2643    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2644}
     2645way|z17-[is_prop_set(sign_1_backward_2,     "default")]::Lane_Backward_2_Sign_1
     2646{
     2647    repeat-image:                           eval(prop(sign_1_backward_2,"default"));
     2648    repeat-image-offset:               eval(prop(lane_offset_backward_2,"default"));
     2649    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_2"));
     2650    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2651}
     2652way|z17-[is_prop_set(sign_2_backward_2,     "default")]::Lane_Backward_2_Sign_2
     2653{
     2654    repeat-image:                           eval(prop(sign_2_backward_2,"default"));
     2655    repeat-image-offset:               eval(prop(lane_offset_backward_2,"default"));
     2656    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_2"));
     2657    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2658}
     2659way|z17-[is_prop_set(sign_3_backward_2,     "default")]::Lane_Backward_2_Sign_3
     2660{
     2661    repeat-image:                           eval(prop(sign_3_backward_2,"default"));
     2662    repeat-image-offset:               eval(prop(lane_offset_backward_2,"default"));
     2663    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_2"));
     2664    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2665}
     2666
     2667way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 2]::Lane_Backward_3
     2668{
     2669    offset:                                          eval(prop(lane_offset_backward_3,"default"));
     2670    width:                                           eval((prop(lane_width_backward_3,"default")-prop(lane_casing,"default")));
     2671    left-casing-dashes:                                   eval(prop(change_backward_3_right,"default"));
     2672    right-casing-dashes:                                  eval(prop(change_backward_3_left,"default"));
     2673    repeat-image:                                     eval(prop(turn_image_backward_3,"default"));
     2674
     2675    opacity: 0.0; linecap: none;
     2676    repeat-image-offset: eval(prop(offset));
     2677    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2678    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2679    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2680    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2681    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2682}
     2683way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 2]::Lane_Backward_3_Color
     2684{
     2685    offset:                                          eval(prop(lane_offset_backward_3,"default"));
     2686    width:                                            eval(prop(lane_width_backward_3,"default"));
     2687    color:                                                      prop(color_backward_3,"default");
     2688    dashes:                              eval(is_prop_set(restriction_color_backward_3,"default")?list(20,20):prop(unset_property));
     2689    dashes-background-color:             eval(is_prop_set(restriction_color_backward_3,"default")?
     2690                                                     prop(restriction_color_backward_3,"default"):prop(unset_property));
     2691    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2692    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2693}
     2694way|z17-[is_prop_set(sign_1_backward_3,     "default")]::Lane_Backward_3_Sign_1
     2695{
     2696    repeat-image:                           eval(prop(sign_1_backward_3,"default"));
     2697    repeat-image-offset:               eval(prop(lane_offset_backward_3,"default"));
     2698    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_3"));
     2699    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2700}
     2701way|z17-[is_prop_set(sign_2_backward_3,     "default")]::Lane_Backward_3_Sign_2
     2702{
     2703    repeat-image:                           eval(prop(sign_2_backward_3,"default"));
     2704    repeat-image-offset:               eval(prop(lane_offset_backward_3,"default"));
     2705    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_3"));
     2706    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2707}
     2708way|z17-[is_prop_set(sign_3_backward_3,     "default")]::Lane_Backward_3_Sign_3
     2709{
     2710    repeat-image:                           eval(prop(sign_3_backward_3,"default"));
     2711    repeat-image-offset:               eval(prop(lane_offset_backward_3,"default"));
     2712    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_3"));
     2713    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2714}
     2715
     2716way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 3]::Lane_Backward_4
     2717{
     2718    offset:                                          eval(prop(lane_offset_backward_4,"default"));
     2719    width:                                           eval((prop(lane_width_backward_4,"default")-prop(lane_casing,"default")));
     2720    left-casing-dashes:                                   eval(prop(change_backward_4_right,"default"));
     2721    right-casing-dashes:                                  eval(prop(change_backward_4_left,"default"));
     2722    repeat-image:                                     eval(prop(turn_image_backward_4,"default"));
     2723
     2724    opacity: 0.0; linecap: none;
     2725    repeat-image-offset: eval(prop(offset));
     2726    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2727    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2728    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2729    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2730    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2731}
     2732way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 3]::Lane_Backward_4_Color
     2733{
     2734    offset:                                          eval(prop(lane_offset_backward_4,"default"));
     2735    width:                                            eval(prop(lane_width_backward_4,"default"));
     2736    color:                                                      prop(color_backward_4,"default");
     2737    dashes:                              eval(is_prop_set(restriction_color_backward_4,"default")?list(20,20):prop(unset_property));
     2738    dashes-background-color:             eval(is_prop_set(restriction_color_backward_4,"default")?
     2739                                                     prop(restriction_color_backward_4,"default"):prop(unset_property));
     2740    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2741    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2742}
     2743way|z17-[is_prop_set(sign_1_backward_4,     "default")]::Lane_Backward_4_Sign_1
     2744{
     2745    repeat-image:                           eval(prop(sign_1_backward_4,"default"));
     2746    repeat-image-offset:               eval(prop(lane_offset_backward_4,"default"));
     2747    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_4"));
     2748    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2749}
     2750way|z17-[is_prop_set(sign_2_backward_4,     "default")]::Lane_Backward_4_Sign_2
     2751{
     2752    repeat-image:                           eval(prop(sign_2_backward_4,"default"));
     2753    repeat-image-offset:               eval(prop(lane_offset_backward_4,"default"));
     2754    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_4"));
     2755    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2756}
     2757way|z17-[is_prop_set(sign_3_backward_4,     "default")]::Lane_Backward_4_Sign_3
     2758{
     2759    repeat-image:                           eval(prop(sign_3_backward_4,"default"));
     2760    repeat-image-offset:               eval(prop(lane_offset_backward_4,"default"));
     2761    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_4"));
     2762    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2763}
     2764
     2765way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 4]::Lane_Backward_5
     2766{
     2767    offset:                                          eval(prop(lane_offset_backward_5,"default"));
     2768    width:                                           eval((prop(lane_width_backward_5,"default")-prop(lane_casing,"default")));
     2769    left-casing-dashes:                                   eval(prop(change_backward_5_right,"default"));
     2770    right-casing-dashes:                                  eval(prop(change_backward_5_left,"default"));
     2771    repeat-image:                                     eval(prop(turn_image_backward_5,"default"));
     2772
     2773    opacity: 0.0; linecap: none;
     2774    repeat-image-offset: eval(prop(offset));
     2775    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2776    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2777    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2778    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2779    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2780}
     2781way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 4]::Lane_Backward_5_Color
     2782{
     2783    offset:                                          eval(prop(lane_offset_backward_5,"default"));
     2784    width:                                            eval(prop(lane_width_backward_5,"default"));
     2785    color:                                                      prop(color_backward_5,"default");
     2786    dashes:                              eval(is_prop_set(restriction_color_backward_5,"default")?list(20,20):prop(unset_property));
     2787    dashes-background-color:             eval(is_prop_set(restriction_color_backward_5,"default")?
     2788                                                     prop(restriction_color_backward_5,"default"):prop(unset_property));
     2789    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2790    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2791}
     2792way|z17-[is_prop_set(sign_1_backward_5,     "default")]::Lane_Backward_5_Sign_1
     2793{
     2794    repeat-image:                           eval(prop(sign_1_backward_5,"default"));
     2795    repeat-image-offset:               eval(prop(lane_offset_backward_5,"default"));
     2796    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_5"));
     2797    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2798}
     2799way|z17-[is_prop_set(sign_2_backward_5,     "default")]::Lane_Backward_5_Sign_2
     2800{
     2801    repeat-image:                           eval(prop(sign_2_backward_5,"default"));
     2802    repeat-image-offset:               eval(prop(lane_offset_backward_5,"default"));
     2803    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_5"));
     2804    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2805}
     2806way|z17-[is_prop_set(sign_3_backward_5,     "default")]::Lane_Backward_5_Sign_3
     2807{
     2808    repeat-image:                           eval(prop(sign_3_backward_5,"default"));
     2809    repeat-image-offset:               eval(prop(lane_offset_backward_5,"default"));
     2810    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_5"));
     2811    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2812}
     2813
     2814way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 5]::Lane_Backward_6
     2815{
     2816    offset:                                          eval(prop(lane_offset_backward_6,"default"));
     2817    width:                                           eval((prop(lane_width_backward_6,"default")-prop(lane_casing,"default")));
     2818    left-casing-dashes:                                   eval(prop(change_backward_6_right,"default"));
     2819    right-casing-dashes:                                  eval(prop(change_backward_6_left,"default"));
     2820    repeat-image:                                     eval(prop(turn_image_backward_6,"default"));
     2821
     2822    opacity: 0.0; linecap: none;
     2823    repeat-image-offset: eval(prop(offset));
     2824    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2825    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2826    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2827    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2828    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2829}
     2830way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 5]::Lane_Backward_6_Color
     2831{
     2832    offset:                                          eval(prop(lane_offset_backward_6,"default"));
     2833    width:                                            eval(prop(lane_width_backward_6,"default"));
     2834    color:                                                      prop(color_backward_6,"default");
     2835    dashes:                              eval(is_prop_set(restriction_color_backward_6,"default")?list(20,20):prop(unset_property));
     2836    dashes-background-color:             eval(is_prop_set(restriction_color_backward_6,"default")?
     2837                                                     prop(restriction_color_backward_6,"default"):prop(unset_property));
     2838    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2839    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2840}
     2841way|z17-[is_prop_set(sign_1_backward_6,     "default")]::Lane_Backward_6_Sign_1
     2842{
     2843    repeat-image:                           eval(prop(sign_1_backward_6,"default"));
     2844    repeat-image-offset:               eval(prop(lane_offset_backward_6,"default"));
     2845    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_6"));
     2846    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2847}
     2848way|z17-[is_prop_set(sign_2_backward_6,     "default")]::Lane_Backward_6_Sign_2
     2849{
     2850    repeat-image:                           eval(prop(sign_2_backward_6,"default"));
     2851    repeat-image-offset:               eval(prop(lane_offset_backward_6,"default"));
     2852    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_6"));
     2853    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2854}
     2855way|z17-[is_prop_set(sign_3_backward_6,     "default")]::Lane_Backward_6_Sign_3
     2856{
     2857    repeat-image:                           eval(prop(sign_3_backward_6,"default"));
     2858    repeat-image-offset:               eval(prop(lane_offset_backward_6,"default"));
     2859    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_6"));
     2860    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2861}
     2862
     2863way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 6]::Lane_Backward_7
     2864{
     2865    offset:                                          eval(prop(lane_offset_backward_7,"default"));
     2866    width:                                           eval((prop(lane_width_backward_7,"default")-prop(lane_casing,"default")));
     2867    left-casing-dashes:                                   eval(prop(change_backward_7_right,"default"));
     2868    right-casing-dashes:                                  eval(prop(change_backward_7_left,"default"));
     2869    repeat-image:                                     eval(prop(turn_image_backward_7,"default"));
     2870
     2871    opacity: 0.0; linecap: none;
     2872    repeat-image-offset: eval(prop(offset));
     2873    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2874    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2875    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2876    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2877    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2878}
     2879way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 6]::Lane_Backward_7_Color
     2880{
     2881    offset:                                          eval(prop(lane_offset_backward_7,"default"));
     2882    width:                                            eval(prop(lane_width_backward_7,"default"));
     2883    color:                                                      prop(color_backward_7,"default");
     2884    dashes:                              eval(is_prop_set(restriction_color_backward_7,"default")?list(20,20):prop(unset_property));
     2885    dashes-background-color:             eval(is_prop_set(restriction_color_backward_7,"default")?
     2886                                                     prop(restriction_color_backward_7,"default"):prop(unset_property));
     2887    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2888    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2889}
     2890way|z17-[is_prop_set(sign_1_backward_7,     "default")]::Lane_Backward_7_Sign_1
     2891{
     2892    repeat-image:                           eval(prop(sign_1_backward_7,"default"));
     2893    repeat-image-offset:               eval(prop(lane_offset_backward_7,"default"));
     2894    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_7"));
     2895    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2896}
     2897way|z17-[is_prop_set(sign_2_backward_7,     "default")]::Lane_Backward_7_Sign_2
     2898{
     2899    repeat-image:                           eval(prop(sign_2_backward_7,"default"));
     2900    repeat-image-offset:               eval(prop(lane_offset_backward_7,"default"));
     2901    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_7"));
     2902    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2903}
     2904way|z17-[is_prop_set(sign_3_backward_7,     "default")]::Lane_Backward_7_Sign_3
     2905{
     2906    repeat-image:                           eval(prop(sign_3_backward_7,"default"));
     2907    repeat-image-offset:               eval(prop(lane_offset_backward_7,"default"));
     2908    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_7"));
     2909    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2910}
     2911
     2912way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 7]::Lane_Backward_8
     2913{
     2914    offset:                                          eval(prop(lane_offset_backward_8,"default"));
     2915    width:                                           eval((prop(lane_width_backward_8,"default")-prop(lane_casing,"default")));
     2916    left-casing-dashes:                                   eval(prop(change_backward_8_right,"default"));
     2917    right-casing-dashes:                                  eval(prop(change_backward_8_left,"default"));
     2918    repeat-image:                                     eval(prop(turn_image_backward_8,"default"));
     2919
     2920    opacity: 0.0; linecap: none;
     2921    repeat-image-offset: eval(prop(offset));
     2922    repeat-image-height: eval(min(prop(lane_default_width,"default"),prop(width)));
     2923    repeat-image-spacing: eval(prop(repeat-image-height) * 3);
     2924    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2925    left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
     2926    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
     2927}
     2928way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 7]::Lane_Backward_8_Color
     2929{
     2930    offset:                                          eval(prop(lane_offset_backward_8,"default"));
     2931    width:                                            eval(prop(lane_width_backward_8,"default"));
     2932    color:                                                      prop(color_backward_8,"default");
     2933    dashes:                              eval(is_prop_set(restriction_color_backward_8,"default")?list(20,20):prop(unset_property));
     2934    dashes-background-color:             eval(is_prop_set(restriction_color_backward_8,"default")?
     2935                                                     prop(restriction_color_backward_8,"default"):prop(unset_property));
     2936    opacity: prop(style_lane_opacity,"default"); linecap: none;
     2937    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
     2938}
     2939way|z17-[is_prop_set(sign_1_backward_8,     "default")]::Lane_Backward_8_Sign_1
     2940{
     2941    repeat-image:                           eval(prop(sign_1_backward_8,"default"));
     2942    repeat-image-offset:               eval(prop(lane_offset_backward_8,"default"));
     2943    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_8"));
     2944    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 3);
     2945}
     2946way|z17-[is_prop_set(sign_2_backward_8,     "default")]::Lane_Backward_8_Sign_2
     2947{
     2948    repeat-image:                           eval(prop(sign_2_backward_8,"default"));
     2949    repeat-image-offset:               eval(prop(lane_offset_backward_8,"default"));
     2950    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_8"));
     2951    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 2);
     2952}
     2953way|z17-[is_prop_set(sign_3_backward_8,     "default")]::Lane_Backward_8_Sign_3
     2954{
     2955    repeat-image:                           eval(prop(sign_3_backward_8,"default"));
     2956    repeat-image-offset:               eval(prop(lane_offset_backward_8,"default"));
     2957    repeat-image-height: eval(prop(repeat-image-height,"Lane_Backward_8"));
     2958    repeat-image-spacing: eval(prop(repeat-image-height) * 4);    repeat-image-phase: eval(prop(repeat-image-height) * 4);
     2959}
     2960
     2961/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     2962/* Bothways lanes                                                                                                                                   */
     2963/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     2964way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 0]::Lane_Bothways_1
     2965{
     2966    offset:                                          eval(prop(lane_offset_bothways_1,"default"));
     2967    width:                                           eval((prop(lane_width_bothways_1,"default")-prop(lane_casing,"default")));
     2968    right-casing-dashes:                                  eval(prop(change_bothways_1_right,"default"));
     2969    left-casing-dashes:                                   eval(prop(change_bothways_1_left,"default"));
    15472970
    15482971    opacity: 0.0; linecap: none;
     
    15512974    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    15522975}
    1553 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 0]::Lane_Forward_1_Color
    1554 {
    1555     offset:                                          eval(prop(lane_offset_forward_1,"default"));
    1556     width:                                            eval(prop(lane_width_forward_1,"default"));
    1557     color:                                                      prop(color_forward_1,"default");
    1558     dashes:                              eval(is_prop_set(designated_color_forward_1,"default")?list(20,20):prop(unset_property));
    1559     dashes-background-color:             eval(is_prop_set(designated_color_forward_1,"default")?
    1560                                                      prop(designated_color_forward_1,"default"):prop(unset_property));
     2976way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 0]::Lane_Bothways_1_Color
     2977{
     2978    offset:                                          eval(prop(lane_offset_bothways_1,"default"));
     2979    width:                                            eval(prop(lane_width_bothways_1,"default"));
     2980    color:                                                      prop(color_bothways_1,"default");
     2981    dashes:                              eval(is_prop_set(restriction_color_bothways_1,"default")?list(20,20):prop(unset_property));
     2982    dashes-background-color:             eval(is_prop_set(restriction_color_bothways_1,"default")?
     2983                                                     prop(restriction_color_bothways_1,"default"):prop(unset_property));
    15612984    opacity: prop(style_lane_opacity,"default"); linecap: none;
    15622985    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    15632986}
    15642987
    1565 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 1]::Lane_Forward_2
    1566 {
    1567     offset:                                          eval(prop(lane_offset_forward_2,"default"));
    1568     width:                                           eval((prop(lane_width_forward_2,"default")-prop(lane_casing,"default")));
    1569     right-casing-dashes:                                  eval(prop(change_forward_2_right,"default"));
    1570     left-casing-dashes:                                   eval(prop(change_forward_2_left,"default"));
    1571     turn_matrix_scaling:                             eval(is_prop_set(turn_forward_2,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
     2988way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 1]::Lane_Bothways_2
     2989{
     2990    offset:                                          eval(prop(lane_offset_bothways_2,"default"));
     2991    width:                                           eval((prop(lane_width_bothways_2,"default")-prop(lane_casing,"default")));
     2992    right-casing-dashes:                                  eval(prop(change_bothways_2_right,"default"));
     2993    left-casing-dashes:                                   eval(prop(change_bothways_2_left,"default"));
    15722994
    15732995    opacity: 0.0; linecap: none;
     
    15762998    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    15772999}
    1578 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 1]::Lane_Forward_2_Color
    1579 {
    1580     offset:                                          eval(prop(lane_offset_forward_2,"default"));
    1581     width:                                            eval(prop(lane_width_forward_2,"default"));
    1582     color:                                                      prop(color_forward_2,"default");
    1583     dashes:                              eval(is_prop_set(designated_color_forward_2,"default")?list(20,20):prop(unset_property));
    1584     dashes-background-color:             eval(is_prop_set(designated_color_forward_2,"default")?
    1585                                                      prop(designated_color_forward_2,"default"):prop(unset_property));
     3000way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 1]::Lane_Bothways_2_Color
     3001{
     3002    offset:                                          eval(prop(lane_offset_bothways_2,"default"));
     3003    width:                                            eval(prop(lane_width_bothways_2,"default"));
     3004    color:                                                      prop(color_bothways_2,"default");
     3005    dashes:                              eval(is_prop_set(restriction_color_bothways_2,"default")?list(20,20):prop(unset_property));
     3006    dashes-background-color:             eval(is_prop_set(restriction_color_bothways_2,"default")?
     3007                                                     prop(restriction_color_bothways_2,"default"):prop(unset_property));
    15863008    opacity: prop(style_lane_opacity,"default"); linecap: none;
    15873009    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    15883010}
    15893011
    1590 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 2]::Lane_Forward_3
    1591 {
    1592     offset:                                          eval(prop(lane_offset_forward_3,"default"));
    1593     width:                                           eval((prop(lane_width_forward_3,"default")-prop(lane_casing,"default")));
    1594     right-casing-dashes:                                  eval(prop(change_forward_3_right,"default"));
    1595     left-casing-dashes:                                   eval(prop(change_forward_3_left,"default"));
    1596     turn_matrix_scaling:                             eval(is_prop_set(turn_forward_3,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
     3012way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 2]::Lane_Bothways_3
     3013{
     3014    offset:                                          eval(prop(lane_offset_bothways_3,"default"));
     3015    width:                                           eval((prop(lane_width_bothways_3,"default")-prop(lane_casing,"default")));
     3016    right-casing-dashes:                                  eval(prop(change_bothways_3_right,"default"));
     3017    left-casing-dashes:                                   eval(prop(change_bothways_3_left,"default"));
    15973018
    15983019    opacity: 0.0; linecap: none;
     
    16013022    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    16023023}
    1603 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 2]::Lane_Forward_3_Color
    1604 {
    1605     offset:                                          eval(prop(lane_offset_forward_3,"default"));
    1606     width:                                            eval(prop(lane_width_forward_3,"default"));
    1607     color:                                                      prop(color_forward_3,"default");
    1608     dashes:                              eval(is_prop_set(designated_color_forward_3,"default")?list(20,20):prop(unset_property));
    1609     dashes-background-color:             eval(is_prop_set(designated_color_forward_3,"default")?
    1610                                                      prop(designated_color_forward_3,"default"):prop(unset_property));
     3024way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 2]::Lane_Bothways_3_Color
     3025{
     3026    offset:                                          eval(prop(lane_offset_bothways_3,"default"));
     3027    width:                                            eval(prop(lane_width_bothways_3,"default"));
     3028    color:                                                      prop(color_bothways_3,"default");
     3029    dashes:                              eval(is_prop_set(restriction_color_bothways_3,"default")?list(20,20):prop(unset_property));
     3030    dashes-background-color:             eval(is_prop_set(restriction_color_bothways_3,"default")?
     3031                                                     prop(restriction_color_bothways_3,"default"):prop(unset_property));
    16113032    opacity: prop(style_lane_opacity,"default"); linecap: none;
    16123033    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    16133034}
    16143035
    1615 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 3]::Lane_Forward_4
    1616 {
    1617     offset:                                          eval(prop(lane_offset_forward_4,"default"));
    1618     width:                                           eval((prop(lane_width_forward_4,"default")-prop(lane_casing,"default")));
    1619     right-casing-dashes:                                  eval(prop(change_forward_4_right,"default"));
    1620     left-casing-dashes:                                   eval(prop(change_forward_4_left,"default"));
    1621     turn_matrix_scaling:                             eval(is_prop_set(turn_forward_4,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
     3036way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 3]::Lane_Bothways_4
     3037{
     3038    offset:                                          eval(prop(lane_offset_bothways_4,"default"));
     3039    width:                                           eval((prop(lane_width_bothways_4,"default")-prop(lane_casing,"default")));
     3040    right-casing-dashes:                                  eval(prop(change_bothways_4_right,"default"));
     3041    left-casing-dashes:                                   eval(prop(change_bothways_4_left,"default"));
     3042
    16223043    opacity: 0.0; linecap: none;
    16233044    right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
     
    16253046    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    16263047}
    1627 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 3]::Lane_Forward_4_Color
    1628 {
    1629     offset:                                          eval(prop(lane_offset_forward_4,"default"));
    1630     width:                                            eval(prop(lane_width_forward_4,"default"));
    1631     color:                                                      prop(color_forward_4,"default");
    1632     dashes:                              eval(is_prop_set(designated_color_forward_4,"default")?list(20,20):prop(unset_property));
    1633     dashes-background-color:             eval(is_prop_set(designated_color_forward_4,"default")?
    1634                                                      prop(designated_color_forward_4,"default"):prop(unset_property));
    1635     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1636     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1637 }
    1638 
    1639 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 4]::Lane_Forward_5
    1640 {
    1641     offset:                                          eval(prop(lane_offset_forward_5,"default"));
    1642     width:                                           eval((prop(lane_width_forward_5,"default")-prop(lane_casing,"default")));
    1643     right-casing-dashes:                                  eval(prop(change_forward_5_right,"default"));
    1644     left-casing-dashes:                                   eval(prop(change_forward_5_left,"default"));
    1645     turn_matrix_scaling:                             eval(is_prop_set(turn_forward_5,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    1646 
    1647     opacity: 0.0; linecap: none;
    1648     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1649     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1650     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    1651 }
    1652 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 4]::Lane_Forward_5_Color
    1653 {
    1654     offset:                                          eval(prop(lane_offset_forward_5,"default"));
    1655     width:                                            eval(prop(lane_width_forward_5,"default"));
    1656     color:                                                      prop(color_forward_5,"default");
    1657     dashes:                              eval(is_prop_set(designated_color_forward_5,"default")?list(20,20):prop(unset_property));
    1658     dashes-background-color:             eval(is_prop_set(designated_color_forward_5,"default")?
    1659                                                      prop(designated_color_forward_5,"default"):prop(unset_property));
    1660     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1661     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1662 }
    1663 
    1664 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 5]::Lane_Forward_6
    1665 {
    1666     offset:                                          eval(prop(lane_offset_forward_6,"default"));
    1667     width:                                           eval((prop(lane_width_forward_6,"default")-prop(lane_casing,"default")));
    1668     right-casing-dashes:                                  eval(prop(change_forward_6_right,"default"));
    1669     left-casing-dashes:                                   eval(prop(change_forward_6_left,"default"));
    1670     turn_matrix_scaling:                             eval(is_prop_set(turn_forward_6,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    1671 
    1672     opacity: 0.0; linecap: none;
    1673     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1674     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1675     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    1676 }
    1677 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 5]::Lane_Forward_6_Color
    1678 {
    1679     offset:                                          eval(prop(lane_offset_forward_6,"default"));
    1680     width:                                            eval(prop(lane_width_forward_6,"default"));
    1681     color:                                                      prop(color_forward_6,"default");
    1682     dashes:                              eval(is_prop_set(designated_color_forward_6,"default")?list(20,20):prop(unset_property));
    1683     dashes-background-color:             eval(is_prop_set(designated_color_forward_6,"default")?
    1684                                                      prop(designated_color_forward_6,"default"):prop(unset_property));
    1685     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1686     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1687 }
    1688 
    1689 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 6]::Lane_Forward_7
    1690 {
    1691     offset:                                          eval(prop(lane_offset_forward_7,"default"));
    1692     width:                                           eval((prop(lane_width_forward_7,"default")-prop(lane_casing,"default")));
    1693     right-casing-dashes:                                  eval(prop(change_forward_7_right,"default"));
    1694     left-casing-dashes:                                   eval(prop(change_forward_7_left,"default"));
    1695     turn_matrix_scaling:                             eval(is_prop_set(turn_forward_7,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    1696 
    1697     opacity: 0.0; linecap: none;
    1698     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1699     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1700     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    1701 }
    1702 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 6]::Lane_Forward_7_Color
    1703 {
    1704     offset:                                          eval(prop(lane_offset_forward_7,"default"));
    1705     width:                                            eval(prop(lane_width_forward_7,"default"));
    1706     color:                                                      prop(color_forward_7,"default");
    1707     dashes:                              eval(is_prop_set(designated_color_forward_7,"default")?list(20,20):prop(unset_property));
    1708     dashes-background-color:             eval(is_prop_set(designated_color_forward_7,"default")?
    1709                                                      prop(designated_color_forward_7,"default"):prop(unset_property));
    1710     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1711     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1712 }
    1713 
    1714 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 7]::Lane_Forward_8
    1715 {
    1716     offset:                                          eval(prop(lane_offset_forward_8,"default"));
    1717     width:                                           eval((prop(lane_width_forward_8,"default")-prop(lane_casing,"default")));
    1718     right-casing-dashes:                                  eval(prop(change_forward_8_right,"default"));
    1719     left-casing-dashes:                                   eval(prop(change_forward_8_left,"default"));
    1720     turn_matrix_scaling:                             eval(is_prop_set(turn_forward_8,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    1721 
    1722     opacity: 0.0; linecap: none;
    1723     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1724     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1725     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    1726 }
    1727 way|z17-[is_prop_set(ok, "default")][prop(lanes_fwd, "default") > 7]::Lane_Forward_8_Color
    1728 {
    1729     offset:                                          eval(prop(lane_offset_forward_8,"default"));
    1730     width:                                            eval(prop(lane_width_forward_8,"default"));
    1731     color:                                                      prop(color_forward_8,"default");
    1732     dashes:                              eval(is_prop_set(designated_color_forward_8,"default")?list(20,20):prop(unset_property));
    1733     dashes-background-color:             eval(is_prop_set(designated_color_forward_8,"default")?
    1734                                                      prop(designated_color_forward_8,"default"):prop(unset_property));
    1735     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1736     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1737 }
    1738 
    1739 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    1740 /* Backward lanes                                                                                                                                  */
    1741 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    1742 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 0]::Lane_Backward_1
    1743 {
    1744     offset:                                          eval(prop(lane_offset_backward_1,"default"));
    1745     width:                                           eval((prop(lane_width_backward_1,"default")-prop(lane_casing,"default")));
    1746     left-casing-dashes:                                  eval(prop(change_backward_1_right,"default"));
    1747     right-casing-dashes:                                   eval(prop(change_backward_1_left,"default"));
    1748     turn_matrix_scaling:                             eval(is_prop_set(turn_backward_1,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    1749 
    1750     opacity: 0.0; linecap: none;
    1751     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1752     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1753     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    1754 }
    1755 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 0]::Lane_Backward_1_Color
    1756 {
    1757     offset:                                          eval(prop(lane_offset_backward_1,"default"));
    1758     width:                                            eval(prop(lane_width_backward_1,"default"));
    1759     color:                                                      prop(color_backward_1,"default");
    1760     dashes:                              eval(is_prop_set(designated_color_backward_1,"default")?list(20,20):prop(unset_property));
    1761     dashes-background-color:             eval(is_prop_set(designated_color_backward_1,"default")?
    1762                                                      prop(designated_color_backward_1,"default"):prop(unset_property));
    1763     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1764     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1765 }
    1766 
    1767 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 1]::Lane_Backward_2
    1768 {
    1769     offset:                                          eval(prop(lane_offset_backward_2,"default"));
    1770     width:                                           eval((prop(lane_width_backward_2,"default")-prop(lane_casing,"default")));
    1771     left-casing-dashes:                                  eval(prop(change_backward_2_right,"default"));
    1772     right-casing-dashes:                                   eval(prop(change_backward_2_left,"default"));
    1773     turn_matrix_scaling:                             eval(is_prop_set(turn_backward_2,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    1774 
    1775     opacity: 0.0; linecap: none;
    1776     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1777     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1778     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    1779 }
    1780 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 1]::Lane_Backward_2_Color
    1781 {
    1782     offset:                                          eval(prop(lane_offset_backward_2,"default"));
    1783     width:                                            eval(prop(lane_width_backward_2,"default"));
    1784     color:                                                      prop(color_backward_2,"default");
    1785     dashes:                              eval(is_prop_set(designated_color_backward_2,"default")?list(20,20):prop(unset_property));
    1786     dashes-background-color:             eval(is_prop_set(designated_color_backward_2,"default")?
    1787                                                      prop(designated_color_backward_2,"default"):prop(unset_property));
    1788     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1789     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1790 }
    1791 
    1792 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 2]::Lane_Backward_3
    1793 {
    1794     offset:                                          eval(prop(lane_offset_backward_3,"default"));
    1795     width:                                           eval((prop(lane_width_backward_3,"default")-prop(lane_casing,"default")));
    1796     left-casing-dashes:                                  eval(prop(change_backward_3_right,"default"));
    1797     right-casing-dashes:                                   eval(prop(change_backward_3_left,"default"));
    1798     turn_matrix_scaling:                             eval(is_prop_set(turn_backward_3,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    1799 
    1800     opacity: 0.0; linecap: none;
    1801     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1802     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1803     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    1804 }
    1805 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 2]::Lane_Backward_3_Color
    1806 {
    1807     offset:                                          eval(prop(lane_offset_backward_3,"default"));
    1808     width:                                            eval(prop(lane_width_backward_3,"default"));
    1809     color:                                                      prop(color_backward_3,"default");
    1810     dashes:                              eval(is_prop_set(designated_color_backward_3,"default")?list(20,20):prop(unset_property));
    1811     dashes-background-color:             eval(is_prop_set(designated_color_backward_3,"default")?
    1812                                                      prop(designated_color_backward_3,"default"):prop(unset_property));
    1813     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1814     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1815 }
    1816 
    1817 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 3]::Lane_Backward_4
    1818 {
    1819     offset:                                          eval(prop(lane_offset_backward_4,"default"));
    1820     width:                                           eval((prop(lane_width_backward_4,"default")-prop(lane_casing,"default")));
    1821     left-casing-dashes:                                  eval(prop(change_backward_4_right,"default"));
    1822     right-casing-dashes:                                   eval(prop(change_backward_4_left,"default"));
    1823     turn_matrix_scaling:                             eval(is_prop_set(turn_backward_4,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    1824 
    1825     opacity: 0.0; linecap: none;
    1826     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1827     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1828     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    1829 }
    1830 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 3]::Lane_Backward_4_Color
    1831 {
    1832     offset:                                          eval(prop(lane_offset_backward_4,"default"));
    1833     width:                                            eval(prop(lane_width_backward_4,"default"));
    1834     color:                                                      prop(color_backward_4,"default");
    1835     dashes:                              eval(is_prop_set(designated_color_backward_4,"default")?list(20,20):prop(unset_property));
    1836     dashes-background-color:             eval(is_prop_set(designated_color_backward_4,"default")?
    1837                                                      prop(designated_color_backward_4,"default"):prop(unset_property));
    1838     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1839     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1840 }
    1841 
    1842 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 4]::Lane_Backward_5
    1843 {
    1844     offset:                                          eval(prop(lane_offset_backward_5,"default"));
    1845     width:                                           eval((prop(lane_width_backward_5,"default")-prop(lane_casing,"default")));
    1846     left-casing-dashes:                                  eval(prop(change_backward_5_right,"default"));
    1847     right-casing-dashes:                                   eval(prop(change_backward_5_left,"default"));
    1848     turn_matrix_scaling:                             eval(is_prop_set(turn_backward_5,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    1849 
    1850     opacity: 0.0; linecap: none;
    1851     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1852     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1853     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    1854 }
    1855 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 4]::Lane_Backward_5_Color
    1856 {
    1857     offset:                                          eval(prop(lane_offset_backward_5,"default"));
    1858     width:                                            eval(prop(lane_width_backward_5,"default"));
    1859     color:                                                      prop(color_backward_5,"default");
    1860     dashes:                              eval(is_prop_set(designated_color_backward_5,"default")?list(20,20):prop(unset_property));
    1861     dashes-background-color:             eval(is_prop_set(designated_color_backward_5,"default")?
    1862                                                      prop(designated_color_backward_5,"default"):prop(unset_property));
    1863     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1864     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1865 }
    1866 
    1867 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 5]::Lane_Backward_6
    1868 {
    1869     offset:                                          eval(prop(lane_offset_backward_6,"default"));
    1870     width:                                           eval((prop(lane_width_backward_6,"default")-prop(lane_casing,"default")));
    1871     left-casing-dashes:                                  eval(prop(change_backward_6_right,"default"));
    1872     right-casing-dashes:                                   eval(prop(change_backward_6_left,"default"));
    1873     turn_matrix_scaling:                             eval(is_prop_set(turn_backward_6,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    1874 
    1875     opacity: 0.0; linecap: none;
    1876     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1877     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1878     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    1879 }
    1880 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 5]::Lane_Backward_6_Color
    1881 {
    1882     offset:                                          eval(prop(lane_offset_backward_6,"default"));
    1883     width:                                            eval(prop(lane_width_backward_6,"default"));
    1884     color:                                                      prop(color_backward_6,"default");
    1885     dashes:                              eval(is_prop_set(designated_color_backward_6,"default")?list(20,20):prop(unset_property));
    1886     dashes-background-color:             eval(is_prop_set(designated_color_backward_6,"default")?
    1887                                                      prop(designated_color_backward_6,"default"):prop(unset_property));
    1888     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1889     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1890 }
    1891 
    1892 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 6]::Lane_Backward_7
    1893 {
    1894     offset:                                          eval(prop(lane_offset_backward_7,"default"));
    1895     width:                                           eval((prop(lane_width_backward_7,"default")-prop(lane_casing,"default")));
    1896     left-casing-dashes:                                  eval(prop(change_backward_7_right,"default"));
    1897     right-casing-dashes:                                   eval(prop(change_backward_7_left,"default"));
    1898     turn_matrix_scaling:                             eval(is_prop_set(turn_backward_7,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    1899 
    1900     opacity: 0.0; linecap: none;
    1901     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1902     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1903     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    1904 }
    1905 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 6]::Lane_Backward_7_Color
    1906 {
    1907     offset:                                          eval(prop(lane_offset_backward_7,"default"));
    1908     width:                                            eval(prop(lane_width_backward_7,"default"));
    1909     color:                                                      prop(color_backward_7,"default");
    1910     dashes:                              eval(is_prop_set(designated_color_backward_7,"default")?list(20,20):prop(unset_property));
    1911     dashes-background-color:             eval(is_prop_set(designated_color_backward_7,"default")?
    1912                                                      prop(designated_color_backward_7,"default"):prop(unset_property));
    1913     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1914     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1915 }
    1916 
    1917 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 7]::Lane_Backward_8
    1918 {
    1919     offset:                                          eval(prop(lane_offset_backward_8,"default"));
    1920     width:                                           eval((prop(lane_width_backward_8,"default")-prop(lane_casing,"default")));
    1921     left-casing-dashes:                                  eval(prop(change_backward_8_right,"default"));
    1922     right-casing-dashes:                                   eval(prop(change_backward_8_left,"default"));
    1923     turn_matrix_scaling:                             eval(is_prop_set(turn_backward_8,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    1924 
    1925     opacity: 0.0; linecap: none;
    1926     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1927     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1928     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    1929 }
    1930 way|z17-[is_prop_set(ok, "default")][prop(lanes_bwd, "default") > 7]::Lane_Backward_8_Color
    1931 {
    1932     offset:                                          eval(prop(lane_offset_backward_8,"default"));
    1933     width:                                            eval(prop(lane_width_backward_8,"default"));
    1934     color:                                                      prop(color_backward_8,"default");
    1935     dashes:                              eval(is_prop_set(designated_color_backward_8,"default")?list(20,20):prop(unset_property));
    1936     dashes-background-color:             eval(is_prop_set(designated_color_backward_8,"default")?
    1937                                                      prop(designated_color_backward_8,"default"):prop(unset_property));
    1938     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1939     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1940 }
    1941 
    1942 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    1943 /* Bothways lanes                                                                                                                                   */
    1944 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    1945 way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 0]::Lane_Bothways_1
    1946 {
    1947     offset:                                          eval(prop(lane_offset_bothways_1,"default"));
    1948     width:                                           eval((prop(lane_width_bothways_1,"default")-prop(lane_casing,"default")));
    1949     right-casing-dashes:                                  eval(prop(change_bothways_1_right,"default"));
    1950     left-casing-dashes:                                   eval(prop(change_bothways_1_left,"default"));
    1951     turn_matrix_scaling:                             eval(is_prop_set(turn_bothways_1,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    1952 
    1953     opacity: 0.0; linecap: none;
    1954     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1955     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1956     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    1957 }
    1958 way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 0]::Lane_Bothways_1_Color
    1959 {
    1960     offset:                                          eval(prop(lane_offset_bothways_1,"default"));
    1961     width:                                            eval(prop(lane_width_bothways_1,"default"));
    1962     color:                                                      prop(color_bothways_1,"default");
    1963     dashes:                              eval(is_prop_set(designated_color_bothways_1,"default")?list(20,20):prop(unset_property));
    1964     dashes-background-color:             eval(is_prop_set(designated_color_bothways_1,"default")?
    1965                                                      prop(designated_color_bothways_1,"default"):prop(unset_property));
    1966     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1967     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1968 }
    1969 
    1970 way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 1]::Lane_Bothways_2
    1971 {
    1972     offset:                                          eval(prop(lane_offset_bothways_2,"default"));
    1973     width:                                           eval((prop(lane_width_bothways_2,"default")-prop(lane_casing,"default")));
    1974     right-casing-dashes:                                  eval(prop(change_bothways_2_right,"default"));
    1975     left-casing-dashes:                                   eval(prop(change_bothways_2_left,"default"));
    1976     turn_matrix_scaling:                             eval(is_prop_set(turn_bothways_2,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    1977 
    1978     opacity: 0.0; linecap: none;
    1979     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1980     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    1981     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    1982 }
    1983 way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 1]::Lane_Bothways_2_Color
    1984 {
    1985     offset:                                          eval(prop(lane_offset_bothways_2,"default"));
    1986     width:                                            eval(prop(lane_width_bothways_2,"default"));
    1987     color:                                                      prop(color_bothways_2,"default");
    1988     dashes:                              eval(is_prop_set(designated_color_bothways_2,"default")?list(20,20):prop(unset_property));
    1989     dashes-background-color:             eval(is_prop_set(designated_color_bothways_2,"default")?
    1990                                                      prop(designated_color_bothways_2,"default"):prop(unset_property));
    1991     opacity: prop(style_lane_opacity,"default"); linecap: none;
    1992     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    1993 }
    1994 
    1995 way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 2]::Lane_Bothways_3
    1996 {
    1997     offset:                                          eval(prop(lane_offset_bothways_3,"default"));
    1998     width:                                           eval((prop(lane_width_bothways_3,"default")-prop(lane_casing,"default")));
    1999     right-casing-dashes:                                  eval(prop(change_bothways_3_right,"default"));
    2000     left-casing-dashes:                                   eval(prop(change_bothways_3_left,"default"));
    2001     turn_matrix_scaling:                             eval(is_prop_set(turn_bothways_3,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    2002 
    2003     opacity: 0.0; linecap: none;
    2004     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2005     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2006     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    2007 }
    2008 way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 2]::Lane_Bothways_3_Color
    2009 {
    2010     offset:                                          eval(prop(lane_offset_bothways_3,"default"));
    2011     width:                                            eval(prop(lane_width_bothways_3,"default"));
    2012     color:                                                      prop(color_bothways_3,"default");
    2013     dashes:                              eval(is_prop_set(designated_color_bothways_3,"default")?list(20,20):prop(unset_property));
    2014     dashes-background-color:             eval(is_prop_set(designated_color_bothways_3,"default")?
    2015                                                      prop(designated_color_bothways_3,"default"):prop(unset_property));
    2016     opacity: prop(style_lane_opacity,"default"); linecap: none;
    2017     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    2018 }
    2019 
    2020 way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 3]::Lane_Bothways_4
    2021 {
    2022     offset:                                          eval(prop(lane_offset_bothways_4,"default"));
    2023     width:                                           eval((prop(lane_width_bothways_4,"default")-prop(lane_casing,"default")));
    2024     right-casing-dashes:                                  eval(prop(change_bothways_4_right,"default"));
    2025     left-casing-dashes:                                   eval(prop(change_bothways_4_left,"default"));
    2026     turn_matrix_scaling:                             eval(is_prop_set(turn_bothways_4,"default")?floor(min(prop(lane_default_width,"default"),prop(width))/9):0);
    2027 
    2028     opacity: 0.0; linecap: none;
    2029     right-casing-width: prop(road_marking_width,"default"); right-casing-color: white; right-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2030     left-casing-width: prop(road_marking_width,"default"); left-casing-color: white; left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2031     major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0));
    2032 }
    20333048way|z17-[is_prop_set(ok, "default")][prop(lanes_both, "default") > 3]::Lane_Bothways_4_Color
    20343049{
     
    20363051    width:                                            eval(prop(lane_width_bothways_4,"default"));
    20373052    color:                                                      prop(color_bothways_4,"default");
    2038     dashes:                              eval(is_prop_set(designated_color_bothways_4,"default")?list(20,20):prop(unset_property));
    2039     dashes-background-color:             eval(is_prop_set(designated_color_bothways_4,"default")?
    2040                                                      prop(designated_color_bothways_4,"default"):prop(unset_property));
     3053    dashes:                              eval(is_prop_set(restriction_color_bothways_4,"default")?list(20,20):prop(unset_property));
     3054    dashes-background-color:             eval(is_prop_set(restriction_color_bothways_4,"default")?
     3055                                                     prop(restriction_color_bothways_4,"default"):prop(unset_property));
    20413056    opacity: prop(style_lane_opacity,"default"); linecap: none;
    20423057    major-z-index: eval(cond(prop(placement_transition,"default"),-0.1,0.0)); object-z-index: -0.1;
    2043 }
    2044 
    2045 /***************************************************************************************************************************************************/
    2046 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    2047 /* Ugly hack for turn lanes                                                                                                                        */
    2048 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    2049 /***************************************************************************************************************************************************/
    2050 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    2051 /* Forward lanes                                                                                                                                   */
    2052 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    2053 way[prop(turn_matrix_scaling,"Lane_Forward_1")>0]::Lane_Turn_M1_Forward_1
    2054 {
    2055         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_1");
    2056         offset:                          eval(prop(offset,"Lane_Forward_1")+(3*prop(t_m_s)));
    2057         temp:                                eval(get(prop(turn_forward_1,"default"),0));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2058         temp:                                eval(get(prop(turn_forward_1,"default"),1));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2059         temp:                                eval(get(prop(turn_forward_1,"default"),2)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2060         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2061 }
    2062 way[prop(turn_matrix_scaling,"Lane_Forward_1")>0]::Lane_Turn_M2_Forward_1
    2063 {
    2064         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_1");
    2065         offset:                          eval(prop(offset,"Lane_Forward_1")+(0*prop(t_m_s)));
    2066         temp:                                eval(get(prop(turn_forward_1,"default"),3));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2067         temp:                                eval(get(prop(turn_forward_1,"default"),4));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2068         temp:                                eval(get(prop(turn_forward_1,"default"),5)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2069         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2070 }
    2071 way[prop(turn_matrix_scaling,"Lane_Forward_1")>0]::Lane_Turn_M3_Forward_1
    2072 {
    2073         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_1");
    2074         offset:                          eval(prop(offset,"Lane_Forward_1")-(3*prop(t_m_s)));
    2075         temp:                                eval(get(prop(turn_forward_1,"default"),6));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2076         temp:                                eval(get(prop(turn_forward_1,"default"),7));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2077         temp:                                eval(get(prop(turn_forward_1,"default"),8)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2078         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2079 }
    2080 
    2081 way[prop(turn_matrix_scaling,"Lane_Forward_2")>0]::Lane_Turn_M1_Forward_2
    2082 {
    2083         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_2");
    2084         offset:                          eval(prop(offset,"Lane_Forward_2")+(3*prop(t_m_s)));
    2085         temp:                                eval(get(prop(turn_forward_2,"default"),0));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2086         temp:                                eval(get(prop(turn_forward_2,"default"),1));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2087         temp:                                eval(get(prop(turn_forward_2,"default"),2)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2088         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2089 }
    2090 way[prop(turn_matrix_scaling,"Lane_Forward_2")>0]::Lane_Turn_M2_Forward_2
    2091 {
    2092         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_2");
    2093         offset:                          eval(prop(offset,"Lane_Forward_2")+(0*prop(t_m_s)));
    2094         temp:                                eval(get(prop(turn_forward_2,"default"),3));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2095         temp:                                eval(get(prop(turn_forward_2,"default"),4));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2096         temp:                                eval(get(prop(turn_forward_2,"default"),5)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2097         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2098 }
    2099 way[prop(turn_matrix_scaling,"Lane_Forward_2")>0]::Lane_Turn_M3_Forward_2
    2100 {
    2101         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_2");
    2102         offset:                          eval(prop(offset,"Lane_Forward_2")-(3*prop(t_m_s)));
    2103         temp:                                eval(get(prop(turn_forward_2,"default"),6));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2104         temp:                                eval(get(prop(turn_forward_2,"default"),7));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2105         temp:                                eval(get(prop(turn_forward_2,"default"),8)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2106         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2107 }
    2108 
    2109 way[prop(turn_matrix_scaling,"Lane_Forward_3")>0]::Lane_Turn_M1_Forward_3
    2110 {
    2111         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_3");
    2112         offset:                          eval(prop(offset,"Lane_Forward_3")+(3*prop(t_m_s)));
    2113         temp:                                eval(get(prop(turn_forward_3,"default"),0));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2114         temp:                                eval(get(prop(turn_forward_3,"default"),1));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2115         temp:                                eval(get(prop(turn_forward_3,"default"),2)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2116         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2117 }
    2118 way[prop(turn_matrix_scaling,"Lane_Forward_3")>0]::Lane_Turn_M2_Forward_3
    2119 {
    2120         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_3");
    2121         offset:                          eval(prop(offset,"Lane_Forward_3")+(0*prop(t_m_s)));
    2122         temp:                                eval(get(prop(turn_forward_3,"default"),3));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2123         temp:                                eval(get(prop(turn_forward_3,"default"),4));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2124         temp:                                eval(get(prop(turn_forward_3,"default"),5)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2125         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2126 }
    2127 way[prop(turn_matrix_scaling,"Lane_Forward_3")>0]::Lane_Turn_M3_Forward_3
    2128 {
    2129         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_3");
    2130         offset:                          eval(prop(offset,"Lane_Forward_3")-(3*prop(t_m_s)));
    2131         temp:                                eval(get(prop(turn_forward_3,"default"),6));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2132         temp:                                eval(get(prop(turn_forward_3,"default"),7));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2133         temp:                                eval(get(prop(turn_forward_3,"default"),8)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2134         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2135 }
    2136 
    2137 way[prop(turn_matrix_scaling,"Lane_Forward_4")>0]::Lane_Turn_M1_Forward_4
    2138 {
    2139         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_4");
    2140         offset:                          eval(prop(offset,"Lane_Forward_4")+(3*prop(t_m_s)));
    2141         temp:                                eval(get(prop(turn_forward_4,"default"),0));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2142         temp:                                eval(get(prop(turn_forward_4,"default"),1));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2143         temp:                                eval(get(prop(turn_forward_4,"default"),2)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2144         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2145 }
    2146 way[prop(turn_matrix_scaling,"Lane_Forward_4")>0]::Lane_Turn_M2_Forward_4
    2147 {
    2148         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_4");
    2149         offset:                          eval(prop(offset,"Lane_Forward_4")+(0*prop(t_m_s)));
    2150         temp:                                eval(get(prop(turn_forward_4,"default"),3));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2151         temp:                                eval(get(prop(turn_forward_4,"default"),4));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2152         temp:                                eval(get(prop(turn_forward_4,"default"),5)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2153         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2154 }
    2155 way[prop(turn_matrix_scaling,"Lane_Forward_4")>0]::Lane_Turn_M3_Forward_4
    2156 {
    2157         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_4");
    2158         offset:                          eval(prop(offset,"Lane_Forward_4")-(3*prop(t_m_s)));
    2159         temp:                                eval(get(prop(turn_forward_4,"default"),6));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2160         temp:                                eval(get(prop(turn_forward_4,"default"),7));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2161         temp:                                eval(get(prop(turn_forward_4,"default"),8)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2162         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2163 }
    2164 
    2165 way[prop(turn_matrix_scaling,"Lane_Forward_5")>0]::Lane_Turn_M1_Forward_5
    2166 {
    2167         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_5");
    2168         offset:                          eval(prop(offset,"Lane_Forward_5")+(3*prop(t_m_s)));
    2169         temp:                                eval(get(prop(turn_forward_5,"default"),0));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2170         temp:                                eval(get(prop(turn_forward_5,"default"),1));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2171         temp:                                eval(get(prop(turn_forward_5,"default"),2)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2172         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2173 }
    2174 way[prop(turn_matrix_scaling,"Lane_Forward_5")>0]::Lane_Turn_M2_Forward_5
    2175 {
    2176         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_5");
    2177         offset:                          eval(prop(offset,"Lane_Forward_5")+(0*prop(t_m_s)));
    2178         temp:                                eval(get(prop(turn_forward_5,"default"),3));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2179         temp:                                eval(get(prop(turn_forward_5,"default"),4));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2180         temp:                                eval(get(prop(turn_forward_5,"default"),5)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2181         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2182 }
    2183 way[prop(turn_matrix_scaling,"Lane_Forward_5")>0]::Lane_Turn_M3_Forward_5
    2184 {
    2185         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_5");
    2186         offset:                          eval(prop(offset,"Lane_Forward_5")-(3*prop(t_m_s)));
    2187         temp:                                eval(get(prop(turn_forward_5,"default"),6));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2188         temp:                                eval(get(prop(turn_forward_5,"default"),7));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2189         temp:                                eval(get(prop(turn_forward_5,"default"),8)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2190         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2191 }
    2192 
    2193 way[prop(turn_matrix_scaling,"Lane_Forward_6")>0]::Lane_Turn_M1_Forward_6
    2194 {
    2195         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_6");
    2196         offset:                          eval(prop(offset,"Lane_Forward_6")+(3*prop(t_m_s)));
    2197         temp:                                eval(get(prop(turn_forward_6,"default"),0));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2198         temp:                                eval(get(prop(turn_forward_6,"default"),1));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2199         temp:                                eval(get(prop(turn_forward_6,"default"),2)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2200         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2201 }
    2202 way[prop(turn_matrix_scaling,"Lane_Forward_6")>0]::Lane_Turn_M2_Forward_6
    2203 {
    2204         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_6");
    2205         offset:                          eval(prop(offset,"Lane_Forward_6")+(0*prop(t_m_s)));
    2206         temp:                                eval(get(prop(turn_forward_6,"default"),3));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2207         temp:                                eval(get(prop(turn_forward_6,"default"),4));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2208         temp:                                eval(get(prop(turn_forward_6,"default"),5)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2209         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2210 }
    2211 way[prop(turn_matrix_scaling,"Lane_Forward_6")>0]::Lane_Turn_M3_Forward_6
    2212 {
    2213         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_6");
    2214         offset:                          eval(prop(offset,"Lane_Forward_6")-(3*prop(t_m_s)));
    2215         temp:                                eval(get(prop(turn_forward_6,"default"),6));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2216         temp:                                eval(get(prop(turn_forward_6,"default"),7));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2217         temp:                                eval(get(prop(turn_forward_6,"default"),8)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2218         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2219 }
    2220 
    2221 way[prop(turn_matrix_scaling,"Lane_Forward_7")>0]::Lane_Turn_M1_Forward_7
    2222 {
    2223         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_7");
    2224         offset:                          eval(prop(offset,"Lane_Forward_7")+(3*prop(t_m_s)));
    2225         temp:                                eval(get(prop(turn_forward_7,"default"),0));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2226         temp:                                eval(get(prop(turn_forward_7,"default"),1));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2227         temp:                                eval(get(prop(turn_forward_7,"default"),2)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2228         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2229 }
    2230 way[prop(turn_matrix_scaling,"Lane_Forward_7")>0]::Lane_Turn_M2_Forward_7
    2231 {
    2232         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_7");
    2233         offset:                          eval(prop(offset,"Lane_Forward_7")+(0*prop(t_m_s)));
    2234         temp:                                eval(get(prop(turn_forward_7,"default"),3));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2235         temp:                                eval(get(prop(turn_forward_7,"default"),4));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2236         temp:                                eval(get(prop(turn_forward_7,"default"),5)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2237         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2238 }
    2239 way[prop(turn_matrix_scaling,"Lane_Forward_7")>0]::Lane_Turn_M3_Forward_7
    2240 {
    2241         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_7");
    2242         offset:                          eval(prop(offset,"Lane_Forward_7")-(3*prop(t_m_s)));
    2243         temp:                                eval(get(prop(turn_forward_7,"default"),6));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2244         temp:                                eval(get(prop(turn_forward_7,"default"),7));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2245         temp:                                eval(get(prop(turn_forward_7,"default"),8)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2246         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2247 }
    2248 
    2249 way[prop(turn_matrix_scaling,"Lane_Forward_8")>0]::Lane_Turn_M1_Forward_8
    2250 {
    2251         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_8");
    2252         offset:                          eval(prop(offset,"Lane_Forward_8")+(3*prop(t_m_s)));
    2253         temp:                                eval(get(prop(turn_forward_8,"default"),0));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2254         temp:                                eval(get(prop(turn_forward_8,"default"),1));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2255         temp:                                eval(get(prop(turn_forward_8,"default"),2)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2256         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2257 }
    2258 way[prop(turn_matrix_scaling,"Lane_Forward_8")>0]::Lane_Turn_M2_Forward_8
    2259 {
    2260         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_8");
    2261         offset:                          eval(prop(offset,"Lane_Forward_8")+(0*prop(t_m_s)));
    2262         temp:                                eval(get(prop(turn_forward_8,"default"),3));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2263         temp:                                eval(get(prop(turn_forward_8,"default"),4));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2264         temp:                                eval(get(prop(turn_forward_8,"default"),5)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2265         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2266 }
    2267 way[prop(turn_matrix_scaling,"Lane_Forward_8")>0]::Lane_Turn_M3_Forward_8
    2268 {
    2269         t_m_s:                   prop(turn_matrix_scaling,"Lane_Forward_8");
    2270         offset:                          eval(prop(offset,"Lane_Forward_8")-(3*prop(t_m_s)));
    2271         temp:                                eval(get(prop(turn_forward_8,"default"),6));  left-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2272         temp:                                eval(get(prop(turn_forward_8,"default"),7));              dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2273         temp:                                eval(get(prop(turn_forward_8,"default"),8)); right-casing-dashes:   eval(list(0,get(prop(temp),0)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),4)*prop(t_m_s)));
    2274         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2275 }
    2276 
    2277 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    2278 /* Backward lanes                                                                                                                                  */
    2279 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    2280 way[prop(turn_matrix_scaling,"Lane_Backward_1")>0]::Lane_Turn_M1_Backward_1
    2281 {
    2282         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_1");
    2283         offset:                           eval(prop(offset,"Lane_Backward_1")+(3*prop(t_m_s)));
    2284         temp:                                 eval(get(prop(turn_backward_1,"default"),8));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2285         temp:                                 eval(get(prop(turn_backward_1,"default"),7));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2286         temp:                                 eval(get(prop(turn_backward_1,"default"),6)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2287         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2288 }
    2289 way[prop(turn_matrix_scaling,"Lane_Backward_1")>0]::Lane_Turn_M2_Backward_1
    2290 {
    2291         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_1");
    2292         offset:                           eval(prop(offset,"Lane_Backward_1")+(0*prop(t_m_s)));
    2293         temp:                                 eval(get(prop(turn_backward_1,"default"),5));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2294         temp:                                 eval(get(prop(turn_backward_1,"default"),4));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2295         temp:                                 eval(get(prop(turn_backward_1,"default"),3)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2296         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2297 }
    2298 way[prop(turn_matrix_scaling,"Lane_Backward_1")>0]::Lane_Turn_M3_Backward_1
    2299 {
    2300         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_1");
    2301         offset:                           eval(prop(offset,"Lane_Backward_1")-(3*prop(t_m_s)));
    2302         temp:                                 eval(get(prop(turn_backward_1,"default"),2));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2303         temp:                                 eval(get(prop(turn_backward_1,"default"),1));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2304         temp:                                 eval(get(prop(turn_backward_1,"default"),0)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2305         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2306 }
    2307 
    2308 way[prop(turn_matrix_scaling,"Lane_Backward_2")>0]::Lane_Turn_M1_Backward_2
    2309 {
    2310         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_2");
    2311         offset:                           eval(prop(offset,"Lane_Backward_2")+(3*prop(t_m_s)));
    2312         temp:                                 eval(get(prop(turn_backward_2,"default"),8));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2313         temp:                                 eval(get(prop(turn_backward_2,"default"),7));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2314         temp:                                 eval(get(prop(turn_backward_2,"default"),6)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2315         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2316 }
    2317 way[prop(turn_matrix_scaling,"Lane_Backward_2")>0]::Lane_Turn_M2_Backward_2
    2318 {
    2319         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_2");
    2320         offset:                           eval(prop(offset,"Lane_Backward_2")+(0*prop(t_m_s)));
    2321         temp:                                 eval(get(prop(turn_backward_2,"default"),5));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2322         temp:                                 eval(get(prop(turn_backward_2,"default"),4));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2323         temp:                                 eval(get(prop(turn_backward_2,"default"),3)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2324         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2325 }
    2326 way[prop(turn_matrix_scaling,"Lane_Backward_2")>0]::Lane_Turn_M3_Backward_2
    2327 {
    2328         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_2");
    2329         offset:                           eval(prop(offset,"Lane_Backward_2")-(3*prop(t_m_s)));
    2330         temp:                                 eval(get(prop(turn_backward_2,"default"),2));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2331         temp:                                 eval(get(prop(turn_backward_2,"default"),1));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2332         temp:                                 eval(get(prop(turn_backward_2,"default"),0)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2333         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2334 }
    2335 
    2336 way[prop(turn_matrix_scaling,"Lane_Backward_3")>0]::Lane_Turn_M1_Backward_3
    2337 {
    2338         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_3");
    2339         offset:                           eval(prop(offset,"Lane_Backward_3")+(3*prop(t_m_s)));
    2340         temp:                                 eval(get(prop(turn_backward_3,"default"),8));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2341         temp:                                 eval(get(prop(turn_backward_3,"default"),7));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2342         temp:                                 eval(get(prop(turn_backward_3,"default"),6)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2343         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2344 }
    2345 way[prop(turn_matrix_scaling,"Lane_Backward_3")>0]::Lane_Turn_M2_Backward_3
    2346 {
    2347         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_3");
    2348         offset:                           eval(prop(offset,"Lane_Backward_3")+(0*prop(t_m_s)));
    2349         temp:                                 eval(get(prop(turn_backward_3,"default"),5));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2350         temp:                                 eval(get(prop(turn_backward_3,"default"),4));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2351         temp:                                 eval(get(prop(turn_backward_3,"default"),3)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2352         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2353 }
    2354 way[prop(turn_matrix_scaling,"Lane_Backward_3")>0]::Lane_Turn_M3_Backward_3
    2355 {
    2356         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_3");
    2357         offset:                           eval(prop(offset,"Lane_Backward_3")-(3*prop(t_m_s)));
    2358         temp:                                 eval(get(prop(turn_backward_3,"default"),2));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2359         temp:                                 eval(get(prop(turn_backward_3,"default"),1));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2360         temp:                                 eval(get(prop(turn_backward_3,"default"),0)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2361         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2362 }
    2363 
    2364 way[prop(turn_matrix_scaling,"Lane_Backward_4")>0]::Lane_Turn_M1_Backward_4
    2365 {
    2366         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_4");
    2367         offset:                           eval(prop(offset,"Lane_Backward_4")+(3*prop(t_m_s)));
    2368         temp:                                 eval(get(prop(turn_backward_4,"default"),8));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2369         temp:                                 eval(get(prop(turn_backward_4,"default"),7));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2370         temp:                                 eval(get(prop(turn_backward_4,"default"),6)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2371         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2372 }
    2373 way[prop(turn_matrix_scaling,"Lane_Backward_4")>0]::Lane_Turn_M2_Backward_4
    2374 {
    2375         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_4");
    2376         offset:                           eval(prop(offset,"Lane_Backward_4")+(0*prop(t_m_s)));
    2377         temp:                                 eval(get(prop(turn_backward_4,"default"),5));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2378         temp:                                 eval(get(prop(turn_backward_4,"default"),4));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2379         temp:                                 eval(get(prop(turn_backward_4,"default"),3)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2380         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2381 }
    2382 way[prop(turn_matrix_scaling,"Lane_Backward_4")>0]::Lane_Turn_M3_Backward_4
    2383 {
    2384         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_4");
    2385         offset:                           eval(prop(offset,"Lane_Backward_4")-(3*prop(t_m_s)));
    2386         temp:                                 eval(get(prop(turn_backward_4,"default"),2));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2387         temp:                                 eval(get(prop(turn_backward_4,"default"),1));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2388         temp:                                 eval(get(prop(turn_backward_4,"default"),0)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2389         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2390 }
    2391 
    2392 way[prop(turn_matrix_scaling,"Lane_Backward_5")>0]::Lane_Turn_M1_Backward_5
    2393 {
    2394         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_5");
    2395         offset:                           eval(prop(offset,"Lane_Backward_5")+(3*prop(t_m_s)));
    2396         temp:                                 eval(get(prop(turn_backward_5,"default"),8));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2397         temp:                                 eval(get(prop(turn_backward_5,"default"),7));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2398         temp:                                 eval(get(prop(turn_backward_5,"default"),6)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2399         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2400 }
    2401 way[prop(turn_matrix_scaling,"Lane_Backward_5")>0]::Lane_Turn_M2_Backward_5
    2402 {
    2403         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_5");
    2404         offset:                           eval(prop(offset,"Lane_Backward_5")+(0*prop(t_m_s)));
    2405         temp:                                 eval(get(prop(turn_backward_5,"default"),5));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2406         temp:                                 eval(get(prop(turn_backward_5,"default"),4));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2407         temp:                                 eval(get(prop(turn_backward_5,"default"),3)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2408         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2409 }
    2410 way[prop(turn_matrix_scaling,"Lane_Backward_5")>0]::Lane_Turn_M3_Backward_5
    2411 {
    2412         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_5");
    2413         offset:                           eval(prop(offset,"Lane_Backward_5")-(3*prop(t_m_s)));
    2414         temp:                                 eval(get(prop(turn_backward_5,"default"),2));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2415         temp:                                 eval(get(prop(turn_backward_5,"default"),1));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2416         temp:                                 eval(get(prop(turn_backward_5,"default"),0)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2417         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2418 }
    2419 
    2420 way[prop(turn_matrix_scaling,"Lane_Backward_6")>0]::Lane_Turn_M1_Backward_6
    2421 {
    2422         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_6");
    2423         offset:                           eval(prop(offset,"Lane_Backward_6")+(3*prop(t_m_s)));
    2424         temp:                                 eval(get(prop(turn_backward_6,"default"),8));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2425         temp:                                 eval(get(prop(turn_backward_6,"default"),7));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2426         temp:                                 eval(get(prop(turn_backward_6,"default"),6)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2427         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2428 }
    2429 way[prop(turn_matrix_scaling,"Lane_Backward_6")>0]::Lane_Turn_M2_Backward_6
    2430 {
    2431         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_6");
    2432         offset:                           eval(prop(offset,"Lane_Backward_6")+(0*prop(t_m_s)));
    2433         temp:                                 eval(get(prop(turn_backward_6,"default"),5));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2434         temp:                                 eval(get(prop(turn_backward_6,"default"),4));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2435         temp:                                 eval(get(prop(turn_backward_6,"default"),3)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2436         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2437 }
    2438 way[prop(turn_matrix_scaling,"Lane_Backward_6")>0]::Lane_Turn_M3_Backward_6
    2439 {
    2440         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_6");
    2441         offset:                           eval(prop(offset,"Lane_Backward_6")-(3*prop(t_m_s)));
    2442         temp:                                 eval(get(prop(turn_backward_6,"default"),2));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2443         temp:                                 eval(get(prop(turn_backward_6,"default"),1));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2444         temp:                                 eval(get(prop(turn_backward_6,"default"),0)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2445         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2446 }
    2447 
    2448 way[prop(turn_matrix_scaling,"Lane_Backward_7")>0]::Lane_Turn_M1_Backward_7
    2449 {
    2450         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_7");
    2451         offset:                           eval(prop(offset,"Lane_Backward_7")+(3*prop(t_m_s)));
    2452         temp:                                 eval(get(prop(turn_backward_7,"default"),8));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2453         temp:                                 eval(get(prop(turn_backward_7,"default"),7));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2454         temp:                                 eval(get(prop(turn_backward_7,"default"),6)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2455         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2456 }
    2457 way[prop(turn_matrix_scaling,"Lane_Backward_7")>0]::Lane_Turn_M2_Backward_7
    2458 {
    2459         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_7");
    2460         offset:                           eval(prop(offset,"Lane_Backward_7")+(0*prop(t_m_s)));
    2461         temp:                                 eval(get(prop(turn_backward_7,"default"),5));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2462         temp:                                 eval(get(prop(turn_backward_7,"default"),4));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2463         temp:                                 eval(get(prop(turn_backward_7,"default"),3)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2464         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2465 }
    2466 way[prop(turn_matrix_scaling,"Lane_Backward_7")>0]::Lane_Turn_M3_Backward_7
    2467 {
    2468         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_7");
    2469         offset:                           eval(prop(offset,"Lane_Backward_7")-(3*prop(t_m_s)));
    2470         temp:                                 eval(get(prop(turn_backward_7,"default"),2));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2471         temp:                                 eval(get(prop(turn_backward_7,"default"),1));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2472         temp:                                 eval(get(prop(turn_backward_7,"default"),0)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2473         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2474 }
    2475 
    2476 way[prop(turn_matrix_scaling,"Lane_Backward_8")>0]::Lane_Turn_M1_Backward_8
    2477 {
    2478         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_8");
    2479         offset:                           eval(prop(offset,"Lane_Backward_8")+(3*prop(t_m_s)));
    2480         temp:                                 eval(get(prop(turn_backward_8,"default"),8));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2481         temp:                                 eval(get(prop(turn_backward_8,"default"),7));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2482         temp:                                 eval(get(prop(turn_backward_8,"default"),6)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2483         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2484 }
    2485 way[prop(turn_matrix_scaling,"Lane_Backward_8")>0]::Lane_Turn_M2_Backward_8
    2486 {
    2487         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_8");
    2488         offset:                           eval(prop(offset,"Lane_Backward_8")+(0*prop(t_m_s)));
    2489         temp:                                 eval(get(prop(turn_backward_8,"default"),5));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2490         temp:                                 eval(get(prop(turn_backward_8,"default"),4));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2491         temp:                                 eval(get(prop(turn_backward_8,"default"),3)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2492         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    2493 }
    2494 way[prop(turn_matrix_scaling,"Lane_Backward_8")>0]::Lane_Turn_M3_Backward_8
    2495 {
    2496         t_m_s:                    prop(turn_matrix_scaling,"Lane_Backward_8");
    2497         offset:                           eval(prop(offset,"Lane_Backward_8")-(3*prop(t_m_s)));
    2498         temp:                                 eval(get(prop(turn_backward_8,"default"),2));  left-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2499         temp:                                 eval(get(prop(turn_backward_8,"default"),1));              dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2500         temp:                                 eval(get(prop(turn_backward_8,"default"),0)); right-casing-dashes:   eval(list(0,get(prop(temp),4)*prop(t_m_s),get(prop(temp),3)*prop(t_m_s),get(prop(temp),2)*prop(t_m_s),get(prop(temp),1)*prop(t_m_s),get(prop(temp),0)*prop(t_m_s)));
    2501         color: white; left-casing-color: white; right-casing-color: white; width: prop(t_m_s); left-casing-width: eval(prop(t_m_s)); right-casing-width: eval(prop(t_m_s)); opacity: eval(prop(style_markings_opacity,"default")); right-casing-opacity: eval(prop(style_markings_opacity,"default")); left-casing-opacity: eval(prop(style_markings_opacity,"default"));
    25023058}
    25033059
     
    26143170
    26153171/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    2616 /* Traffic sign: speed limit                                                                                                                       */
    2617 /*-------------------------------------------------------------------------------------------------------------------------------------------------*/
    2618 node|z-15["traffic_sign"][maxspeed]             {       icon-image: prop(unset_property);               }
    2619 node|z16-["traffic_sign"][maxspeed]             {       icon-image: "images/speedlimit unknown.png";    }
    2620 node|z16-["traffic_sign"][maxspeed=10]          {       icon-image: "images/speedlimit 010.png";        }
    2621 node|z16-["traffic_sign"][maxspeed=20]          {       icon-image: "images/speedlimit 020.png";        }
    2622 node|z16-["traffic_sign"][maxspeed=30]          {       icon-image: "images/speedlimit 030.png";        }
    2623 node|z16-["traffic_sign"][maxspeed=40]          {       icon-image: "images/speedlimit 040.png";        }
    2624 node|z16-["traffic_sign"][maxspeed=50]          {       icon-image: "images/speedlimit 050.png";        }
    2625 node|z16-["traffic_sign"][maxspeed=60]          {       icon-image: "images/speedlimit 060.png";        }
    2626 node|z16-["traffic_sign"][maxspeed=70]          {       icon-image: "images/speedlimit 070.png";        }
    2627 node|z16-["traffic_sign"][maxspeed=80]          {       icon-image: "images/speedlimit 080.png";        }
    2628 node|z16-["traffic_sign"][maxspeed=90]          {       icon-image: "images/speedlimit 090.png";        }
    2629 node|z16-["traffic_sign"][maxspeed=100]         {       icon-image: "images/speedlimit 100.png";        }
    2630 node|z16-["traffic_sign"][maxspeed=110]         {       icon-image: "images/speedlimit 110.png";        }
    2631 node|z16-["traffic_sign"][maxspeed=120]         {       icon-image: "images/speedlimit 120.png";        }
    2632 node|z16-["traffic_sign"][maxspeed=130]         {       icon-image: "images/speedlimit 130.png";        }
    2633 node|z16-["traffic_sign"][maxspeed=140]         {       icon-image: "images/speedlimit 140.png";        }
    2634 node|z16-["traffic_sign"][maxspeed=150]         {       icon-image: "images/speedlimit 150.png";        }
    2635 node|z16-["traffic_sign"][maxspeed=150]         {       icon-image: "images/speedlimit 150.png";        }
    2636 node|z16-["traffic_sign"][maxspeed=160]         {       icon-image: "images/speedlimit 160.png";        }
    2637 node|z16-["traffic_sign"][maxspeed="5 mph"]     {       icon-image: "images/speedlimit 005 mph.png";    }
    2638 node|z16-["traffic_sign"][maxspeed="10 mph"]    {       icon-image: "images/speedlimit 010 mph.png";    }
    2639 node|z16-["traffic_sign"][maxspeed="15 mph"]    {       icon-image: "images/speedlimit 015 mph.png";    }
    2640 node|z16-["traffic_sign"][maxspeed="20 mph"]    {       icon-image: "images/speedlimit 020 mph.png";    }
    2641 node|z16-["traffic_sign"][maxspeed="25 mph"]    {       icon-image: "images/speedlimit 025 mph.png";    }
    2642 node|z16-["traffic_sign"][maxspeed="30 mph"]    {       icon-image: "images/speedlimit 030 mph.png";    }
    2643 node|z16-["traffic_sign"][maxspeed="35 mph"]    {       icon-image: "images/speedlimit 035 mph.png";    }
    2644 node|z16-["traffic_sign"][maxspeed="40 mph"]    {       icon-image: "images/speedlimit 040 mph.png";    }
    2645 node|z16-["traffic_sign"][maxspeed="45 mph"]    {       icon-image: "images/speedlimit 045 mph.png";    }
    2646 node|z16-["traffic_sign"][maxspeed="50 mph"]    {       icon-image: "images/speedlimit 050 mph.png";    }
    2647 node|z16-["traffic_sign"][maxspeed="55 mph"]    {       icon-image: "images/speedlimit 055 mph.png";    }
    2648 node|z16-["traffic_sign"][maxspeed="60 mph"]    {       icon-image: "images/speedlimit 060 mph.png";    }
    2649 node|z16-["traffic_sign"][maxspeed="65 mph"]    {       icon-image: "images/speedlimit 065 mph.png";    }
    2650 node|z16-["traffic_sign"][maxspeed="70 mph"]    {       icon-image: "images/speedlimit 070 mph.png";    }
    2651 node|z16-["traffic_sign"][maxspeed="75 mph"]    {       icon-image: "images/speedlimit 075 mph.png";    }
    2652 node|z16-["traffic_sign"][maxspeed="80 mph"]    {       icon-image: "images/speedlimit 080 mph.png";    }
    2653 node|z16-["traffic_sign"][maxspeed=implicit]    {       icon-image: "images/speedlimit end.png";        }
    2654 node|z16-["traffic_sign"][maxspeed]["source:maxspeed"=~/.*zone.*/]              {       icon-image: "images/speedzone unknown.png";     }
    2655 node|z16-["traffic_sign"][maxspeed=20]["source:maxspeed"=~/.*zone.*/]           {       icon-image: "images/speedzone 020.png"; }
    2656 node|z16-["traffic_sign"][maxspeed=30]["source:maxspeed"=~/.*zone.*/]           {       icon-image: "images/speedzone 030.png"; }
    2657 node|z16-["traffic_sign"][maxspeed=40]["source:maxspeed"=~/.*zone.*/]           {       icon-image: "images/speedzone 040.png"; }
    2658 node|z16-["traffic_sign"][maxspeed=50]["source:maxspeed"=~/.*zone.*/]           {       icon-image: "images/speedzone 050.png"; }
    2659 node|z16-["traffic_sign"][maxspeed="5 mph"]["source:maxspeed"=~/.*zone.*/]      {       icon-image: "images/speedzone 005 mph.png";     }
    2660 node|z16-["traffic_sign"][maxspeed="10 mph"]["source:maxspeed"=~/.*zone.*/]     {       icon-image: "images/speedzone 010 mph.png";     }
    2661 node|z16-["traffic_sign"][maxspeed="15 mph"]["source:maxspeed"=~/.*zone.*/]     {       icon-image: "images/speedzone 015 mph.png";     }
    2662 node|z16-["traffic_sign"][maxspeed="20 mph"]["source:maxspeed"=~/.*zone.*/]     {       icon-image: "images/speedzone 020 mph.png";     }
    2663 node|z16-["traffic_sign"][maxspeed="25 mph"]["source:maxspeed"=~/.*zone.*/]     {       icon-image: "images/speedzone 025 mph.png";     }
    2664 node|z16-["traffic_sign"][maxspeed="30 mph"]["source:maxspeed"=~/.*zone.*/]     {       icon-image: "images/speedzone 030 mph.png";     }
    2665 node|z16-["traffic_sign"][maxspeed=implicit]["source:maxspeed"=~/.*zone.*/]     {       icon-image: "images/speedzone end.png"; }
     3172/* Traffic signs                                                                                                                                   */
     3173/*-------------------------------------------------------------------------------------------------------------------------------------------------*/
     3174
     3175/* Disable rendering of traffic signs on low zoom levels */
     3176node|z-15[traffic_sign=~/^(.*;)*maxspeed(;.*)*$/],
     3177node|z-15[traffic_sign=~/^(.*;)*overtaking(;.*)*$/]
     3178{       icon-image: prop(unset_property);               }
     3179
     3180node|z16-[traffic_sign]
     3181{
     3182  traffic_sign_svg: "";
     3183  traffic_sign_top: 0;
     3184}
     3185
     3186/* Speed limit in kph */
     3187node|z16-[traffic_sign=~/^(.*;)*maxspeed(;.*)*$/][maxspeed>0]
     3188{
     3189    t: eval((tag(maxspeed)<10)?1.0:((tag(maxspeed)<100)?0.8:((tag(maxspeed)<1000)?0.6:0.4)));
     3190    t_x: eval((tag(maxspeed)<10)?45:((tag(maxspeed)<100)?60:((tag(maxspeed)<1000)?80:120)));
     3191    t_z: eval((has_tag_key("source:maxspeed") && regexp_test(".*zone.*",tag("source:maxspeed")))?concat("<rect x='0' y='",(prop(traffic_sign_top)+0),"' width='100' height='140' fill='white' /><text style='font-size:40px; font-weight:bold;' x='60' y='",(prop(traffic_sign_top)+135),"' text-anchor='middle' transform='scale(0.8 1.0)'>ZONE</text>"):"");
     3192    traffic_sign_svg: eval(concat(prop(traffic_sign_svg),prop(t_z),"<circle cx='50' cy='",(prop(traffic_sign_top)+50),"' r='45' stroke='red' stroke-width='10' fill='white' /><text style='font-size:60px; font-weight:bold;' x='",prop(t_x),"' y='",(prop(traffic_sign_top)+70),"' text-anchor='middle' transform='scale(",prop(t)," 1.0)'>",tag(maxspeed),"</text>"));
     3193    traffic_sign_top: eval(prop(traffic_sign_top)+((prop(t_z)="")?100:140));
     3194}
     3195
     3196/* Speed limit in mph */
     3197node|z16-[traffic_sign=~/^(.*;)*maxspeed(;.*)*$/][maxspeed=~/[0-9]+ mph/]
     3198{
     3199    t_speed: eval(get(split(" ",tag(maxspeed)),0));
     3200    t: eval((prop(t_speed)<10)?1.0:((prop(t_speed)<100)?0.8:((prop(t_speed)<1000)?0.6:0.4)));
     3201    t_x: eval((prop(t_speed)<10)?45:((prop(t_speed)<100)?60:((prop(t_speed)<1000)?80:120)));
     3202    t_z: eval((has_tag_key("source:maxspeed") && regexp_test(".*zone.*",tag("source:maxspeed")))?concat("<rect x='0' y='",(prop(traffic_sign_top)+0),"' width='100' height='140' fill='white' /><text style='font-size:40px; font-weight:bold;' x='60' y='",(prop(traffic_sign_top)+135),"' text-anchor='middle' transform='scale(0.8 1.0)'>ZONE</text>"):"");
     3203    traffic_sign_svg: eval(concat(prop(traffic_sign_svg),prop(t_z),"<circle cx='50' cy='",(prop(traffic_sign_top)+50),"' r='45' stroke='red' stroke-width='10' fill='yellow' /><text style='font-size:60px; font-weight:bold;' x='",prop(t_x),"' y='",(prop(traffic_sign_top)+70),"' text-anchor='middle' transform='scale(",prop(t)," 1.0)'>",prop(t_speed),"</text>"));
     3204    traffic_sign_top: eval(prop(traffic_sign_top)+((prop(t_z)="")?100:140));
     3205}
     3206
     3207/* End of speed limit */
     3208node|z16-[traffic_sign=~/^(.*;)*maxspeed(;.*)*$/][maxspeed=implicit]
     3209{
     3210    t_z: eval((has_tag_key("source:maxspeed") && regexp_test(".*zone.*",tag("source:maxspeed")))?"<rect x='0' y='0' width='100' height='140' fill='white' /><text style='font-size:40px; font-weight:bold;' x='60' y='135' text-anchor='middle' transform='scale(0.8 1.0)'>ZONE</text>":"");
     3211    traffic_sign_svg: eval(concat(prop(traffic_sign_svg),prop(t_z),"<circle cx='50' cy='",(prop(traffic_sign_top)+50),"' r='50' fill='white' /><circle cx='50' cy='",(prop(traffic_sign_top)+50),"' r='46' stroke='black' stroke-width='3' fill='white' /><line x1='17' y1='",(prop(traffic_sign_top)+83),"' x2='83' y2='",(prop(traffic_sign_top)+17),"' stroke='black' stroke-width='15' />"));
     3212    traffic_sign_top: eval(prop(traffic_sign_top)+((prop(t_z)="")?100:140));
     3213}
     3214
     3215/* No overtaking */
     3216node|z16-[traffic_sign=~/^(.*;)*overtaking(;.*)*$/][overtaking=no]
     3217{
     3218    traffic_sign_svg: eval(concat(prop(traffic_sign_svg),"<g transform='translate(0,",prop(traffic_sign_top),")'><g transform='scale(0.137931)'><circle cx='362.5' cy='362.5' r='350' style='fill:white;stroke:black;stroke-width:2.5px' /><circle cx='362.5' cy='362.5' r='290' style='fill:white;stroke:#c00;stroke-width:93.75'/><path d='M 151.8,375.1 C 151.4,338.9 149.4,370.0 171.2,316.4 C 187.0,279.9 171.0,289.7 252.7,288.4 C 325.3,289.9 310.7,279.3 327.4,318.1 C 348.3,367.6 346.7,341.7 346.5,374.0 C 345.7,409.5 358.9,400.4 248.9,401.6 C 139.7,400.1 152.7,409.4 151.9,375.1 z M 174.0,340.1 L 188.9,305.6 C 191.7,299.5 190.8,300.4 197.3,300.4 L 301.8,300.4 C 307.4,300.4 306.6,300.0 308.9,305.4 L 323.8,339.7 L 174.0,340.1 z M 163.3,405.5 L 191.2,405.5 C 191.1,440.6 194.0,438.6 178.8,438.8 C 160.7,438.8 163.5,440.6 163.3,405.6 z M 307.2,405.8 L 335.2,405.8 C 335.0,440.9 337.5,438.5 321.7,438.6 C 305.3,438.4 307.4,441.0 307.2,405.8 z ' style='fill:#c00;fill-rule:evenodd' /><path d='M 377.4,375.1 C 376.9,338.9 375.0,370.0 396.8,316.4 C 412.6,279.9 396.6,289.7 478.2,288.4 C 550.9,289.9 536.2,279.3 552.9,318.1 C 573.8,367.6 572.2,341.7 572.1,374.0 C 571.3,409.5 584.4,400.4 474.4,401.6 C 365.3,400.1 378.2,409.4 377.4,375.1 z M 399.5,340.1 L 414.5,305.6 C 417.2,299.5 416.4,300.4 422.9,300.4 L 527.3,300.4 C 533.0,300.4 532.2,300.0 534.5,305.4 L 549.3,339.7 L 399.5,340.1 z M 388.8,405.6 L 416.8,405.5 C 416.7,440.6 419.6,438.6 404.4,438.8 C 386.2,438.8 389.1,440.6 388.8,405.6 z M 532.7,405.8 L 560.7,405.8 C 560.5,440.9 563.1,438.5 547.2,438.6 C 530.9,438.4 532.9,441.0 532.7,405.8 z ' style='fill:black;fill-rule:evenodd' /></g></g>"));
     3219    traffic_sign_top: eval(prop(traffic_sign_top)+100);
     3220}
     3221
     3222/* Overtaking allowed */
     3223node|z16-[traffic_sign=~/^(.*;)*overtaking(;.*)*$/][overtaking=yes]
     3224{
     3225    traffic_sign_svg: eval(concat(prop(traffic_sign_svg),"<g transform='translate(0,",prop(traffic_sign_top),")'><g transform='scale(0.137931)'><circle cx='362.5' cy='362.5' r='350' style='fill:white;stroke:black;stroke-width:2.5px' /><circle cx='362.5' cy='362.5' r='330' style='fill:white;stroke:black;stroke-width:20'/><path d='M 151.8,375.1 C 151.4,338.9 149.4,370.0 171.2,316.4 C 187.0,279.9 171.0,289.7 252.7,288.4 C 325.3,289.9 310.7,279.3 327.4,318.1 C 348.3,367.6 346.7,341.7 346.5,374.0 C 345.7,409.5 358.9,400.4 248.9,401.6 C 139.7,400.1 152.7,409.4 151.9,375.1 z M 174.0,340.1 L 188.9,305.6 C 191.7,299.5 190.8,300.4 197.3,300.4 L 301.8,300.4 C 307.4,300.4 306.6,300.0 308.9,305.4 L 323.8,339.7 L 174.0,340.1 z M 163.3,405.5 L 191.2,405.5 C 191.1,440.6 194.0,438.6 178.8,438.8 C 160.7,438.8 163.5,440.6 163.3,405.6 z M 307.2,405.8 L 335.2,405.8 C 335.0,440.9 337.5,438.5 321.7,438.6 C 305.3,438.4 307.4,441.0 307.2,405.8 z ' style='fill:gray;fill-rule:evenodd' /><path d='M 377.4,375.1 C 376.9,338.9 375.0,370.0 396.8,316.4 C 412.6,279.9 396.6,289.7 478.2,288.4 C 550.9,289.9 536.2,279.3 552.9,318.1 C 573.8,367.6 572.2,341.7 572.1,374.0 C 571.3,409.5 584.4,400.4 474.4,401.6 C 365.3,400.1 378.2,409.4 377.4,375.1 z M 399.5,340.1 L 414.5,305.6 C 417.2,299.5 416.4,300.4 422.9,300.4 L 527.3,300.4 C 533.0,300.4 532.2,300.0 534.5,305.4 L 549.3,339.7 L 399.5,340.1 z M 388.8,405.6 L 416.8,405.5 C 416.7,440.6 419.6,438.6 404.4,438.8 C 386.2,438.8 389.1,440.6 388.8,405.6 z M 532.7,405.8 L 560.7,405.8 C 560.5,440.9 563.1,438.5 547.2,438.6 C 530.9,438.4 532.9,441.0 532.7,405.8 z ' style='fill:gray;fill-rule:evenodd' /></g><line x1='18' y1='82' x2='82' y2='18' stroke='black' stroke-width='15' /></g>"));
     3226    traffic_sign_top: eval(prop(traffic_sign_top)+100);
     3227}
     3228
     3229
     3230/* Now render the traffic sign */
     3231node|z16-[!(prop(traffic_sign_svg)="")]
     3232{
     3233    icon-image: eval(concat("data:image/svg+xml,<svg width='100px' height='",prop(traffic_sign_top),"'>",prop(traffic_sign_svg),"</svg>"));
     3234    icon-width: eval(max(12,prop(pixel_per_metre)));
     3235}
    26663236
    26673237/*-------------------------------------------------------------------------------------------------------------------------------------------------*/