https://b.tiles.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/15/26919/13562.vecto...

本文详细介绍了Mapbox地图样式配置的具体参数及用法,包括不同层级的标签显示规则、文字图标设置、道路与区域填充等。通过具体样例展示了如何精确控制地图元素的视觉呈现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

https://b.tiles.mapbox.com/v4/mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7/15/26919/13562.vector.pbf?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA

// 20180517123305
// https://api.mapbox.com/styles/v1/mapbox/cjaudgl840gn32rnrepcb9b9g?access_token=pk.eyJ1IjoibWFwYm94IiwiYSI6ImNpejY4M29iazA2Z2gycXA4N2pmbDZmangifQ.-g_vE53SD2WrJ6tFX7QHmA

{
  "version": 8,
  "name": "Outdoors",
  "metadata": {
    "mapbox:autocomposite": true,
    "mapbox:type": "default",
    "mapbox:origin": "outdoors-v10",
    "mapbox:groups": {
      "1444934828655.3389": {
        "name": "Aeroways",
        "collapsed": true
      },
      "1444933322393.2852": {
        "name": "POI labels  (scalerank 1)",
        "collapsed": true
      },
      "1444934749452.0452": {
        "name": "Wetlands",
        "collapsed": true
      },
      "1444855786460.0557": {
        "name": "Roads",
        "collapsed": true
      },
      "1444933575858.6992": {
        "name": "Highway shields",
        "collapsed": true
      },
      "1444934295202.7542": {
        "name": "Admin boundaries",
        "collapsed": true
      },
      "1444856151690.9143": {
        "name": "State labels",
        "collapsed": true
      },
      "1444933721429.3076": {
        "name": "Road labels",
        "collapsed": true
      },
      "1444933358918.2366": {
        "name": "POI labels (scalerank 2)",
        "collapsed": true
      },
      "1444933808272.805": {
        "name": "Water labels",
        "collapsed": true
      },
      "1444855831248.8289": {
        "name": "Landcover",
        "collapsed": true
      },
      "1444933372896.5967": {
        "name": "POI labels (scalerank 3)",
        "collapsed": true
      },
      "1444855799204.86": {
        "name": "Bridges",
        "collapsed": true
      },
      "1444856087950.3635": {
        "name": "Marine labels",
        "collapsed": true
      },
      "1444862510685.128": {
        "name": "City labels",
        "collapsed": true
      },
      "1444855769305.6016": {
        "name": "Tunnels",
        "collapsed": true
      },
      "1444856144497.7825": {
        "name": "Country labels",
        "collapsed": true
      },
      "1444933456003.5437": {
        "name": "POI labels (scalerank 4)",
        "collapsed": true
      },
      "1444933837268.9458": {
        "name": "Contour lines",
        "collapsed": true
      }
    },
    "mapbox:trackposition": true
  },
  "center": [
    0,
    -1.1368683772161603e-13
  ],
  "zoom": 1.2538473716202174,
  "bearing": 0,
  "pitch": 0,
  "sources": {
    "composite": {
      "url": "mapbox://mapbox.mapbox-terrain-v2,mapbox.mapbox-streets-v7",
      "type": "vector"
    }
  },
  "sprite": "mapbox://sprites/mapbox/cjaudgl840gn32rnrepcb9b9g",
  "glyphs": "mapbox://fonts/mapbox/{fontstack}/{range}.pbf",
  "layers": [
    {
      "id": "background",
      "type": "background",
      "layout": {
        
      },
      "paint": {
        "background-color": {
          "base": 1,
          "stops": [
            [
              11,
              "hsl(35, 32%, 91%)"
            ],
            [
              13,
              "hsl(35, 12%, 89%)"
            ]
          ]
        }
      }
    },
    {
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444855831248.8289"
      },
      "maxzoom": 12,
      "filter": [
        "==",
        "class",
        "crop"
      ],
      "type": "fill",
      "source": "composite",
      "id": "landcover_crop",
      "paint": {
        "fill-color": "hsl(75, 62%, 81%)",
        "fill-opacity": {
          "base": 1.5,
          "stops": [
            [
              2,
              0.3
            ],
            [
              12,
              0
            ]
          ]
        },
        "fill-antialias": false
      },
      "source-layer": "landcover"
    },
    {
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444855831248.8289"
      },
      "maxzoom": 12,
      "filter": [
        "==",
        "class",
        "grass"
      ],
      "type": "fill",
      "source": "composite",
      "id": "landcover_grass",
      "paint": {
        "fill-color": "hsl(75, 62%, 81%)",
        "fill-opacity": {
          "base": 1.5,
          "stops": [
            [
              2,
              0.3
            ],
            [
              12,
              0
            ]
          ]
        },
        "fill-antialias": false
      },
      "source-layer": "landcover"
    },
    {
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444855831248.8289"
      },
      "maxzoom": 12,
      "filter": [
        "==",
        "class",
        "scrub"
      ],
      "type": "fill",
      "source": "composite",
      "id": "landcover_scrub",
      "paint": {
        "fill-color": "hsl(75, 62%, 81%)",
        "fill-opacity": {
          "base": 1.5,
          "stops": [
            [
              2,
              0.3
            ],
            [
              12,
              0
            ]
          ]
        },
        "fill-antialias": false
      },
      "source-layer": "landcover"
    },
    {
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444855831248.8289"
      },
      "maxzoom": 12,
      "filter": [
        "==",
        "class",
        "wood"
      ],
      "type": "fill",
      "source": "composite",
      "id": "landcover_wood",
      "paint": {
        "fill-color": "hsl(75, 62%, 81%)",
        "fill-opacity": {
          "base": 1.5,
          "stops": [
            [
              2,
              0.3
            ],
            [
              12,
              0
            ]
          ]
        },
        "fill-antialias": false
      },
      "source-layer": "landcover"
    },
    {
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444855831248.8289"
      },
      "filter": [
        "==",
        "class",
        "snow"
      ],
      "type": "fill",
      "source": "composite",
      "id": "landcover_snow",
      "paint": {
        "fill-color": "hsl(0, 0%, 100%)",
        "fill-opacity": 0.2,
        "fill-antialias": false
      },
      "source-layer": "landcover"
    },
    {
      "layout": {
        
      },
      "filter": [
        "==",
        "class",
        "national_park"
      ],
      "type": "fill",
      "source": "composite",
      "id": "national_park",
      "paint": {
        "fill-color": "hsl(100, 59%, 76%)",
        "fill-opacity": {
          "base": 1,
          "stops": [
            [
              5,
              0
            ],
            [
              5.5,
              0.75
            ],
            [
              9,
              0.75
            ],
            [
              10,
              0.35
            ]
          ]
        }
      },
      "source-layer": "landuse_overlay"
    },
    {
      "minzoom": 9,
      "layout": {
        
      },
      "filter": [
        "==",
        "class",
        "scrub"
      ],
      "type": "fill",
      "source": "composite",
      "id": "scrub",
      "paint": {
        "fill-color": "hsl(75, 41%, 74%)",
        "fill-opacity": {
          "base": 1,
          "stops": [
            [
              9,
              0
            ],
            [
              15,
              0.2
            ]
          ]
        }
      },
      "source-layer": "landuse"
    },
    {
      "minzoom": 9,
      "layout": {
        
      },
      "filter": [
        "==",
        "class",
        "grass"
      ],
      "type": "fill",
      "source": "composite",
      "id": "grass",
      "paint": {
        "fill-color": "hsl(75, 41%, 74%)",
        "fill-opacity": {
          "base": 1,
          "stops": [
            [
              9,
              0
            ],
            [
              15,
              0.4
            ]
          ]
        }
      },
      "source-layer": "landuse"
    },
    {
      "minzoom": 6,
      "layout": {
        
      },
      "filter": [
        "==",
        "class",
        "wood"
      ],
      "type": "fill",
      "source": "composite",
      "id": "wood",
      "paint": {
        "fill-color": "hsl(75, 41%, 74%)",
        "fill-opacity": {
          "base": 1,
          "stops": [
            [
              7,
              0
            ],
            [
              15,
              0.5
            ]
          ]
        }
      },
      "source-layer": "landuse"
    },
    {
      "minzoom": 11,
      "layout": {
        
      },
      "filter": [
        "==",
        "class",
        "agriculture"
      ],
      "type": "fill",
      "source": "composite",
      "id": "agriculture",
      "paint": {
        "fill-opacity": {
          "base": 1,
          "stops": [
            [
              11,
              0
            ],
            [
              14,
              0.75
            ]
          ]
        },
        "fill-color": "hsl(75, 37%, 81%)",
        "fill-outline-color": "hsl(75, 32%, 68%)"
      },
      "source-layer": "landuse"
    },
    {
      "minzoom": 9,
      "layout": {
        "line-cap": "round"
      },
      "filter": [
        "==",
        "class",
        "national_park"
      ],
      "type": "line",
      "source": "composite",
      "id": "national_park-tint-band",
      "paint": {
        "line-color": "hsl(100, 62%, 74%)",
        "line-width": {
          "base": 1.4,
          "stops": [
            [
              9,
              1
            ],
            [
              14,
              8
            ]
          ]
        },
        "line-offset": {
          "base": 1.4,
          "stops": [
            [
              9,
              0
            ],
            [
              14,
              -2.5
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              9,
              0
            ],
            [
              10,
              0.75
            ]
          ]
        },
        "line-blur": 3
      },
      "source-layer": "landuse_overlay"
    },
    {
      "minzoom": 9,
      "layout": {
        
      },
      "filter": [
        "==",
        "class",
        "national_park"
      ],
      "type": "line",
      "source": "composite",
      "id": "national_park-outline",
      "paint": {
        "line-color": {
          "base": 1,
          "stops": [
            [
              12,
              "hsl(100, 49%, 71%)"
            ],
            [
              14,
              "hsl(100, 40%, 67%)"
            ]
          ]
        },
        "line-width": {
          "base": 1,
          "stops": [
            [
              9,
              0.75
            ],
            [
              12,
              1
            ]
          ]
        },
        "line-offset": 0,
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              9,
              0
            ],
            [
              10,
              1
            ]
          ]
        }
      },
      "source-layer": "landuse_overlay"
    },
    {
      "layout": {
        
      },
      "filter": [
        "==",
        "class",
        "hospital"
      ],
      "type": "fill",
      "source": "composite",
      "id": "hospital",
      "paint": {
        "fill-color": {
          "base": 1,
          "stops": [
            [
              15.5,
              "hsl(340, 37%, 87%)"
            ],
            [
              16,
              "hsl(340, 63%, 89%)"
            ]
          ]
        }
      },
      "source-layer": "landuse"
    },
    {
      "layout": {
        
      },
      "filter": [
        "==",
        "class",
        "school"
      ],
      "type": "fill",
      "source": "composite",
      "id": "school",
      "paint": {
        "fill-color": {
          "base": 1,
          "stops": [
            [
              15.5,
              "hsl(50, 47%, 81%)"
            ],
            [
              16,
              "hsl(50, 63%, 84%)"
            ]
          ]
        }
      },
      "source-layer": "landuse"
    },
    {
      "layout": {
        
      },
      "filter": [
        "all",
        [
          "!in",
          "type",
          "garden",
          "golf_course",
          "playground",
          "zoo"
        ],
        [
          "==",
          "class",
          "park"
        ]
      ],
      "type": "fill",
      "source": "composite",
      "id": "park",
      "paint": {
        "fill-color": "hsl(100, 59%, 76%)",
        "fill-opacity": {
          "base": 1,
          "stops": [
            [
              5,
              0
            ],
            [
              6,
              1
            ]
          ]
        }
      },
      "source-layer": "landuse"
    },
    {
      "layout": {
        
      },
      "filter": [
        "all",
        [
          "==",
          "class",
          "park"
        ],
        [
          "in",
          "type",
          "garden",
          "golf_course",
          "playground",
          "zoo"
        ]
      ],
      "type": "fill",
      "source": "composite",
      "id": "other-green-areas",
      "paint": {
        "fill-color": "hsl(100, 59%, 81%)",
        "fill-opacity": {
          "base": 1,
          "stops": [
            [
              5,
              0
            ],
            [
              6,
              1
            ]
          ]
        }
      },
      "source-layer": "landuse"
    },
    {
      "minzoom": 9,
      "layout": {
        
      },
      "filter": [
        "==",
        "class",
        "glacier"
      ],
      "type": "fill",
      "source": "composite",
      "id": "glacier",
      "paint": {
        "fill-color": "hsl(196, 71%, 93%)",
        "fill-opacity": {
          "base": 1,
          "stops": [
            [
              9,
              0
            ],
            [
              10,
              0.5
            ]
          ]
        }
      },
      "source-layer": "landuse"
    },
    {
      "layout": {
        
      },
      "filter": [
        "==",
        "class",
        "pitch"
      ],
      "type": "fill",
      "source": "composite",
      "id": "pitch",
      "paint": {
        "fill-color": "hsl(100, 57%, 72%)"
      },
      "source-layer": "landuse"
    },
    {
      "minzoom": 15,
      "layout": {
        "line-join": "miter"
      },
      "filter": [
        "==",
        "class",
        "pitch"
      ],
      "type": "line",
      "source": "composite",
      "id": "pitch-line",
      "paint": {
        "line-color": "hsl(75, 57%, 84%)"
      },
      "source-layer": "landuse"
    },
    {
      "layout": {
        
      },
      "filter": [
        "==",
        "class",
        "cemetery"
      ],
      "type": "fill",
      "source": "composite",
      "id": "cemetery",
      "paint": {
        "fill-color": "hsl(75, 37%, 81%)"
      },
      "source-layer": "landuse"
    },
    {
      "layout": {
        
      },
      "filter": [
        "==",
        "class",
        "industrial"
      ],
      "type": "fill",
      "source": "composite",
      "id": "industrial",
      "paint": {
        "fill-color": {
          "base": 1,
          "stops": [
            [
              15.5,
              "hsl(230, 15%, 86%)"
            ],
            [
              16,
              "hsl(230, 29%, 89%)"
            ]
          ]
        }
      },
      "source-layer": "landuse"
    },
    {
      "layout": {
        
      },
      "filter": [
        "==",
        "class",
        "sand"
      ],
      "type": "fill",
      "source": "composite",
      "id": "sand",
      "paint": {
        "fill-color": "hsl(60, 46%, 87%)"
      },
      "source-layer": "landuse"
    },
    {
      "minzoom": 11,
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444933837268.9458"
      },
      "filter": [
        "!in",
        "index",
        10,
        5
      ],
      "type": "line",
      "source": "composite",
      "id": "contour-line",
      "paint": {
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              11,
              0.15
            ],
            [
              12,
              0.3
            ]
          ]
        },
        "line-color": "hsl(100, 100%, 20%)",
        "line-width": {
          "base": 1,
          "stops": [
            [
              13,
              0.5
            ],
            [
              16,
              0.8
            ]
          ]
        },
        "line-offset": {
          "base": 1,
          "stops": [
            [
              13,
              1
            ],
            [
              16,
              1.6
            ]
          ]
        }
      },
      "source-layer": "contour"
    },
    {
      "minzoom": 11,
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444933837268.9458"
      },
      "filter": [
        "in",
        "index",
        10,
        5
      ],
      "type": "line",
      "source": "composite",
      "id": "contour-line-index",
      "paint": {
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              11,
              0.25
            ],
            [
              12,
              0.5
            ]
          ]
        },
        "line-color": "hsl(100, 100%, 20%)",
        "line-width": {
          "base": 1,
          "stops": [
            [
              13,
              0.6
            ],
            [
              16,
              1.2
            ]
          ]
        },
        "line-offset": {
          "base": 1,
          "stops": [
            [
              13,
              0.6
            ],
            [
              16,
              1.2
            ]
          ]
        }
      },
      "source-layer": "contour"
    },
    {
      "minzoom": 8,
      "layout": {
        "line-cap": {
          "base": 1,
          "stops": [
            [
              0,
              "butt"
            ],
            [
              11,
              "round"
            ]
          ]
        },
        "line-join": "round"
      },
      "filter": [
        "in",
        "class",
        "canal",
        "river"
      ],
      "type": "line",
      "source": "composite",
      "id": "waterway-river-canal-shadow",
      "paint": {
        "line-color": "hsl(215, 84%, 69%)",
        "line-width": {
          "base": 1.3,
          "stops": [
            [
              8.5,
              0.4
            ],
            [
              20,
              8
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              8,
              0
            ],
            [
              8.5,
              1
            ]
          ]
        },
        "line-translate": {
          "base": 1.2,
          "stops": [
            [
              7,
              [
                0,
                0
              ]
            ],
            [
              16,
              [
                -1,
                -1
              ]
            ]
          ]
        },
        "line-translate-anchor": "viewport"
      },
      "source-layer": "waterway"
    },
    {
      "minzoom": 8,
      "layout": {
        "line-cap": {
          "base": 1,
          "stops": [
            [
              0,
              "butt"
            ],
            [
              11,
              "round"
            ]
          ]
        },
        "line-join": "round"
      },
      "filter": [
        "in",
        "class",
        "canal",
        "river"
      ],
      "type": "line",
      "source": "composite",
      "id": "waterway-river-canal",
      "paint": {
        "line-color": "hsl(205, 87%, 76%)",
        "line-width": {
          "base": 1.3,
          "stops": [
            [
              8.5,
              0.4
            ],
            [
              20,
              8
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              8,
              0
            ],
            [
              8.5,
              1
            ]
          ]
        }
      },
      "source-layer": "waterway"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-join": "round",
        "line-cap": "round"
      },
      "filter": [
        "!in",
        "class",
        "canal",
        "river"
      ],
      "type": "line",
      "source": "composite",
      "id": "waterway-small",
      "paint": {
        "line-color": "hsl(205, 87%, 76%)",
        "line-width": {
          "base": 1.35,
          "stops": [
            [
              13.5,
              0.4
            ],
            [
              20,
              3
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.5,
              1
            ]
          ]
        }
      },
      "source-layer": "waterway"
    },
    {
      "id": "water-shadow",
      "type": "fill",
      "source": "composite",
      "source-layer": "water",
      "layout": {
        
      },
      "paint": {
        "fill-color": "hsl(215, 84%, 69%)",
        "fill-translate": {
          "base": 1.2,
          "stops": [
            [
              7,
              [
                0,
                0
              ]
            ],
            [
              16,
              [
                -1,
                -1
              ]
            ]
          ]
        },
        "fill-translate-anchor": "viewport",
        "fill-opacity": 1
      }
    },
    {
      "id": "water",
      "paint": {
        "fill-color": "hsl(196, 80%, 70%)"
      },
      "layout": {
        
      },
      "type": "fill",
      "source": "composite",
      "source-layer": "water"
    },
    {
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444934749452.0452"
      },
      "filter": [
        "in",
        "class",
        "wetland",
        "wetland_noveg"
      ],
      "type": "fill",
      "source": "composite",
      "id": "wetlands",
      "paint": {
        "fill-color": "hsl(185, 43%, 74%)",
        "fill-opacity": {
          "base": 1,
          "stops": [
            [
              10,
              0.25
            ],
            [
              10.5,
              0.15
            ]
          ]
        }
      },
      "source-layer": "landuse_overlay"
    },
    {
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444934749452.0452"
      },
      "filter": [
        "in",
        "class",
        "wetland",
        "wetland_noveg"
      ],
      "type": "fill",
      "source": "composite",
      "id": "wetlands-pattern",
      "paint": {
        "fill-color": "hsl(185, 43%, 74%)",
        "fill-opacity": {
          "base": 1,
          "stops": [
            [
              10,
              0
            ],
            [
              10.5,
              1
            ]
          ]
        },
        "fill-pattern": "wetland",
        "fill-translate-anchor": "viewport"
      },
      "source-layer": "landuse_overlay"
    },
    {
      "layout": {
        
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "Polygon"
        ],
        [
          "==",
          "class",
          "land"
        ]
      ],
      "type": "fill",
      "source": "composite",
      "id": "barrier_line-land-polygon",
      "paint": {
        "fill-color": "hsl(35, 12%, 89%)"
      },
      "source-layer": "barrier_line"
    },
    {
      "layout": {
        "line-cap": "round"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "==",
          "class",
          "land"
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "barrier_line-land-line",
      "paint": {
        "line-width": {
          "base": 1.99,
          "stops": [
            [
              14,
              0.75
            ],
            [
              20,
              40
            ]
          ]
        },
        "line-color": "hsl(35, 12%, 89%)"
      },
      "source-layer": "barrier_line"
    },
    {
      "minzoom": 11,
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444934828655.3389"
      },
      "filter": [
        "all",
        [
          "!=",
          "type",
          "apron"
        ],
        [
          "==",
          "$type",
          "Polygon"
        ]
      ],
      "type": "fill",
      "source": "composite",
      "id": "aeroway-polygon",
      "paint": {
        "fill-color": {
          "base": 1,
          "stops": [
            [
              15,
              "hsl(230, 23%, 82%)"
            ],
            [
              16,
              "hsl(230, 37%, 84%)"
            ]
          ]
        },
        "fill-opacity": {
          "base": 1,
          "stops": [
            [
              11,
              0
            ],
            [
              11.5,
              1
            ]
          ]
        }
      },
      "source-layer": "aeroway"
    },
    {
      "minzoom": 9,
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444934828655.3389"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "==",
          "type",
          "runway"
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "aeroway-runway",
      "paint": {
        "line-color": {
          "base": 1,
          "stops": [
            [
              15,
              "hsl(230, 23%, 82%)"
            ],
            [
              16,
              "hsl(230, 37%, 84%)"
            ]
          ]
        },
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              9,
              1
            ],
            [
              18,
              80
            ]
          ]
        }
      },
      "source-layer": "aeroway"
    },
    {
      "minzoom": 9,
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444934828655.3389"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "==",
          "type",
          "taxiway"
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "aeroway-taxiway",
      "paint": {
        "line-color": {
          "base": 1,
          "stops": [
            [
              15,
              "hsl(230, 23%, 82%)"
            ],
            [
              16,
              "hsl(230, 37%, 84%)"
            ]
          ]
        },
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              10,
              0.5
            ],
            [
              18,
              20
            ]
          ]
        }
      },
      "source-layer": "aeroway"
    },
    {
      "minzoom": 15,
      "layout": {
        
      },
      "filter": [
        "all",
        [
          "!=",
          "type",
          "building:part"
        ],
        [
          "==",
          "underground",
          "false"
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "building-line",
      "paint": {
        "line-color": "hsl(35, 6%, 79%)",
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              0.75
            ],
            [
              20,
              3
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              15.5,
              0
            ],
            [
              16,
              1
            ]
          ]
        }
      },
      "source-layer": "building"
    },
    {
      "minzoom": 15,
      "layout": {
        
      },
      "filter": [
        "all",
        [
          "!=",
          "type",
          "building:part"
        ],
        [
          "==",
          "underground",
          "false"
        ]
      ],
      "type": "fill",
      "source": "composite",
      "id": "building",
      "paint": {
        "fill-color": {
          "base": 1,
          "stops": [
            [
              15,
              "hsl(35, 11%, 88%)"
            ],
            [
              16,
              "hsl(35, 8%, 85%)"
            ]
          ]
        },
        "fill-opacity": {
          "base": 1,
          "stops": [
            [
              15.5,
              0
            ],
            [
              16,
              1
            ]
          ]
        },
        "fill-outline-color": "hsl(35, 6%, 79%)"
      },
      "source-layer": "building"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-street-low",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": {
          "stops": [
            [
              11.5,
              0
            ],
            [
              12,
              1
            ],
            [
              14,
              1
            ],
            [
              14.01,
              0
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street_limited"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-street_limited-low",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": {
          "stops": [
            [
              11.5,
              0
            ],
            [
              12,
              1
            ],
            [
              14,
              1
            ],
            [
              14.01,
              0
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "track"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-track-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(50, 100%, 40%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              18,
              12
            ]
          ]
        },
        "line-dasharray": [
          3,
          3
        ]
      },
      "source-layer": "road"
    },
    {
      "minzoom": 14,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!=",
            "type",
            "trunk_link"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ],
          [
            "in",
            "class",
            "link",
            "service"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-service-link-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(230, 19%, 75%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              0.5
            ],
            [
              18,
              12
            ]
          ]
        },
        "line-dasharray": [
          3,
          3
        ]
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street_limited"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-street_limited-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(230, 19%, 75%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              13,
              0
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-dasharray": [
          3,
          3
        ],
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-street-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(230, 19%, 75%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              13,
              0
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-dasharray": [
          3,
          3
        ],
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "tunnel"
          ],
          [
            "in",
            "class",
            "secondary",
            "tertiary"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-secondary-tertiary-case",
      "paint": {
        "line-width": {
          "base": 1.2,
          "stops": [
            [
              10,
              0.75
            ],
            [
              18,
              2
            ]
          ]
        },
        "line-dasharray": [
          3,
          3
        ],
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              8.5,
              0.5
            ],
            [
              10,
              0.75
            ],
            [
              18,
              26
            ]
          ]
        },
        "line-color": "hsl(230, 19%, 75%)"
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "primary"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-primary-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              16,
              2
            ]
          ]
        },
        "line-dasharray": [
          3,
          3
        ],
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-color": "hsl(230, 19%, 75%)"
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "tunnel"
          ],
          [
            "==",
            "type",
            "trunk_link"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-trunk_link-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-dasharray": [
          3,
          3
        ]
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "motorway_link"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-motorway_link-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-dasharray": [
          3,
          3
        ]
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "tunnel"
          ],
          [
            "==",
            "type",
            "trunk"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-trunk-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              16,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-opacity": 1,
        "line-dasharray": [
          3,
          3
        ]
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "motorway"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-motorway-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              16,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-opacity": 1,
        "line-dasharray": [
          3,
          3
        ]
      },
      "source-layer": "road"
    },
    {
      "minzoom": 14,
      "layout": {
        "line-join": "miter"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "construction"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-construction",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        },
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                0.4,
                0.8
              ]
            ],
            [
              15,
              [
                0.3,
                0.6
              ]
            ],
            [
              16,
              [
                0.2,
                0.3
              ]
            ],
            [
              17,
              [
                0.2,
                0.25
              ]
            ],
            [
              18,
              [
                0.15,
                0.15
              ]
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "type",
            "cycleway",
            "piste",
            "steps"
          ],
          [
            "==",
            "class",
            "path"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-path",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              18,
              4
            ]
          ]
        },
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                4,
                0.4
              ]
            ],
            [
              15,
              [
                3,
                0.4
              ]
            ],
            [
              16,
              [
                3,
                0.35
              ]
            ],
            [
              17,
              [
                3,
                0.35
              ]
            ]
          ]
        },
        "line-color": "hsl(35, 26%, 95%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "path"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ],
          [
            "in",
            "type",
            "cycleway",
            "piste"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-cycleway-piste",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              18,
              4
            ]
          ]
        },
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                4,
                0.4
              ]
            ],
            [
              15,
              [
                3,
                0.4
              ]
            ],
            [
              16,
              [
                3,
                0.35
              ]
            ],
            [
              17,
              [
                3,
                0.35
              ]
            ]
          ]
        },
        "line-color": "hsl(35, 26%, 95%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "tunnel"
          ],
          [
            "==",
            "type",
            "steps"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-steps",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              16,
              1.6
            ],
            [
              18,
              6
            ]
          ]
        },
        "line-color": "hsl(35, 26%, 95%)",
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                4,
                0.4
              ]
            ],
            [
              15,
              [
                1.75,
                0.4
              ]
            ],
            [
              16,
              [
                0.75,
                0.4
              ]
            ],
            [
              17,
              [
                0.3,
                0.3
              ]
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "tunnel"
          ],
          [
            "==",
            "type",
            "trunk_link"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-trunk_link",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(46, 77%, 78%)",
        "line-opacity": 1,
        "line-dasharray": [
          1,
          0
        ]
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "motorway_link"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-motorway_link",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(26, 74%, 81%)",
        "line-opacity": 1,
        "line-dasharray": [
          1,
          0
        ]
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "pedestrian"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-pedestrian",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              0.5
            ],
            [
              18,
              12
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": 1,
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                1,
                0
              ]
            ],
            [
              15,
              [
                1.5,
                0.4
              ]
            ],
            [
              16,
              [
                1,
                0.2
              ]
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "track"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-track",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              18,
              12
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)"
      },
      "source-layer": "road"
    },
    {
      "minzoom": 14,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!=",
            "type",
            "trunk_link"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ],
          [
            "in",
            "class",
            "link",
            "service"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-service-link",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              0.5
            ],
            [
              18,
              12
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-dasharray": [
          1,
          0
        ]
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street_limited"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-street_limited",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(35, 14%, 93%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-street",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "tunnel"
          ],
          [
            "in",
            "class",
            "secondary",
            "tertiary"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-secondary-tertiary",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              8.5,
              0.5
            ],
            [
              10,
              0.75
            ],
            [
              18,
              26
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": 1,
        "line-dasharray": [
          1,
          0
        ],
        "line-blur": 0
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "primary"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-primary",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": 1,
        "line-dasharray": [
          1,
          0
        ],
        "line-blur": 0
      },
      "source-layer": "road"
    },
    {
      "minzoom": 16,
      "layout": {
        "symbol-placement": "line",
        "icon-image": {
          "base": 1,
          "stops": [
            [
              17,
              "oneway-small"
            ],
            [
              18,
              "oneway-large"
            ]
          ]
        },
        "symbol-spacing": 200,
        "icon-padding": 2
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!=",
            "type",
            "trunk_link"
          ],
          [
            "==",
            "oneway",
            "true"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ],
          [
            "in",
            "class",
            "link",
            "path",
            "pedestrian",
            "service",
            "track"
          ]
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "tunnel-oneway-arrows-blue-minor",
      "paint": {
        
      },
      "source-layer": "road"
    },
    {
      "minzoom": 15,
      "layout": {
        "symbol-placement": "line",
        "icon-image": {
          "base": 1,
          "stops": [
            [
              16,
              "oneway-small"
            ],
            [
              17,
              "oneway-large"
            ]
          ]
        },
        "symbol-spacing": 200,
        "icon-padding": 2
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!=",
            "type",
            "trunk_link"
          ],
          [
            "==",
            "oneway",
            "true"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ],
          [
            "in",
            "class",
            "primary",
            "secondary",
            "street",
            "street_limited",
            "tertiary"
          ]
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "tunnel-oneway-arrows-blue-major",
      "paint": {
        
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "trunk"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-trunk",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-color": "hsl(46, 77%, 78%)"
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "motorway"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "tunnel-motorway",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-dasharray": [
          1,
          0
        ],
        "line-opacity": 1,
        "line-color": "hsl(26, 74%, 81%)",
        "line-blur": 0
      },
      "source-layer": "road"
    },
    {
      "minzoom": 16,
      "layout": {
        "symbol-placement": "line",
        "icon-image": {
          "base": 1,
          "stops": [
            [
              16,
              "oneway-white-small"
            ],
            [
              17,
              "oneway-white-large"
            ]
          ]
        },
        "symbol-spacing": 200,
        "icon-padding": 2
      },
      "metadata": {
        "mapbox:group": "1444855769305.6016"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "type",
            "primary_link",
            "secondary_link",
            "tertiary_link"
          ],
          [
            "==",
            "oneway",
            "true"
          ],
          [
            "==",
            "structure",
            "tunnel"
          ],
          [
            "in",
            "class",
            "link",
            "trunk"
          ]
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "tunnel-oneway-arrows-white",
      "paint": {
        "icon-opacity": 0.5
      },
      "source-layer": "road"
    },
    {
      "minzoom": 15,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "filter": [
        "==",
        "class",
        "cliff"
      ],
      "type": "line",
      "source": "composite",
      "id": "cliffs",
      "paint": {
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              15,
              0
            ],
            [
              15.25,
              1
            ]
          ]
        },
        "line-width": 10,
        "line-pattern": "cliff"
      },
      "source-layer": "barrier_line"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "==",
          "type",
          "ferry"
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "ferry",
      "paint": {
        "line-color": {
          "base": 1,
          "stops": [
            [
              15,
              "hsl(205, 73%, 63%)"
            ],
            [
              17,
              "hsl(230, 73%, 63%)"
            ]
          ]
        },
        "line-opacity": 1,
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              0.5
            ],
            [
              20,
              1
            ]
          ]
        },
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              12,
              [
                1,
                0
              ]
            ],
            [
              13,
              [
                12,
                4
              ]
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "==",
          "type",
          "ferry_auto"
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "ferry-auto",
      "paint": {
        "line-color": {
          "base": 1,
          "stops": [
            [
              15,
              "hsl(205, 73%, 63%)"
            ],
            [
              17,
              "hsl(230, 73%, 63%)"
            ]
          ]
        },
        "line-opacity": 1,
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              0.5
            ],
            [
              20,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "!in",
            "type",
            "corridor",
            "crossing",
            "piste",
            "sidewalk",
            "steps"
          ],
          [
            "==",
            "class",
            "path"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-path-bg",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              2.5
            ],
            [
              18,
              8
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        },
        "line-color": "hsl(50, 100%, 40%)",
        "line-blur": {
          "base": 1,
          "stops": [
            [
              14,
              0
            ],
            [
              17,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "class",
            "path"
          ],
          [
            "==",
            "type",
            "piste"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-piste-bg",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              2
            ],
            [
              18,
              7
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        },
        "line-color": "hsl(230, 85%, 67%)",
        "line-blur": 0
      },
      "source-layer": "road"
    },
    {
      "minzoom": 16,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "in",
            "type",
            "corridor",
            "crossing",
            "sidewalk"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-sidewalk-corridor-bg",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              2
            ],
            [
              18,
              7
            ]
          ]
        },
        "line-dasharray": [
          1,
          0
        ],
        "line-color": "hsl(230, 17%, 82%)",
        "line-blur": 0,
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              16,
              0
            ],
            [
              16.25,
              0.25
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "type",
            "steps"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-steps-bg",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              2.5
            ],
            [
              18,
              8
            ]
          ]
        },
        "line-color": "hsl(50, 100%, 40%)",
        "line-blur": {
          "base": 1,
          "stops": [
            [
              14,
              0
            ],
            [
              17,
              1
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              0.25
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 12,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "pedestrian"
          ],
          [
            "==",
            "structure",
            "none"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-pedestrian-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              2
            ],
            [
              18,
              14.5
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-gap-width": 0,
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street"
          ],
          [
            "==",
            "structure",
            "none"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-street-low",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": {
          "stops": [
            [
              11,
              0
            ],
            [
              11.25,
              1
            ],
            [
              14,
              1
            ],
            [
              14.01,
              0
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street_limited"
          ],
          [
            "==",
            "structure",
            "none"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-street_limited-low",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": {
          "stops": [
            [
              11,
              0
            ],
            [
              11.25,
              1
            ],
            [
              14,
              1
            ],
            [
              14.01,
              0
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "class",
            "track"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-track-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(50, 100%, 40%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              18,
              12
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 14,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!=",
            "type",
            "trunk_link"
          ],
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "in",
            "class",
            "link",
            "service"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-service-link-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              0.5
            ],
            [
              18,
              12
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street_limited"
          ],
          [
            "==",
            "structure",
            "none"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-street_limited-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              13,
              0
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street"
          ],
          [
            "==",
            "structure",
            "none"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-street-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              13,
              0
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "in",
            "class",
            "secondary",
            "tertiary"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-secondary-tertiary-case",
      "paint": {
        "line-width": {
          "base": 1.2,
          "stops": [
            [
              10,
              0.75
            ],
            [
              18,
              2
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              8.5,
              0.5
            ],
            [
              10,
              0.75
            ],
            [
              18,
              26
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              9.99,
              0
            ],
            [
              10,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "class",
            "primary"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-primary-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              16,
              2
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              9.99,
              0
            ],
            [
              10,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 10,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "class",
            "motorway_link"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-motorway_link-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              10.99,
              0
            ],
            [
              11,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "type",
            "trunk_link"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-trunk_link-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              10.99,
              0
            ],
            [
              11,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "class",
            "trunk"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-trunk-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              10,
              1
            ],
            [
              16,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              6,
              0
            ],
            [
              6.1,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "class",
            "motorway"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-motorway-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              10,
              1
            ],
            [
              16,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 14,
      "layout": {
        "line-join": "miter"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "construction"
          ],
          [
            "==",
            "structure",
            "none"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-construction",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        },
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                0.4,
                0.8
              ]
            ],
            [
              15,
              [
                0.3,
                0.6
              ]
            ],
            [
              16,
              [
                0.2,
                0.3
              ]
            ],
            [
              17,
              [
                0.2,
                0.25
              ]
            ],
            [
              18,
              [
                0.15,
                0.15
              ]
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 16,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "in",
            "type",
            "corridor",
            "crossing",
            "sidewalk"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-sidewalk-corridor",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              18,
              4
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                4,
                0.4
              ]
            ],
            [
              15,
              [
                3,
                0.4
              ]
            ],
            [
              16,
              [
                3,
                0.35
              ]
            ],
            [
              17,
              [
                3,
                0.35
              ]
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              16,
              0
            ],
            [
              16.25,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "class",
            "path"
          ],
          [
            "in",
            "type",
            "bridleway",
            "footway",
            "path"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-path-smooth",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              18,
              4
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                4,
                0.4
              ]
            ],
            [
              15,
              [
                3,
                0.4
              ]
            ],
            [
              16,
              [
                3,
                0.35
              ]
            ],
            [
              17,
              [
                3,
                0.35
              ]
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "class",
            "path"
          ],
          [
            "in",
            "type",
            "hiking",
            "mountain_bike",
            "trail"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-path-rough",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              18,
              4
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                4,
                0.4
              ]
            ],
            [
              15,
              [
                1.75,
                0.4
              ]
            ],
            [
              16,
              [
                1,
                0.4
              ]
            ],
            [
              17,
              [
                1,
                0.35
              ]
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "class",
            "path"
          ],
          [
            "in",
            "type",
            "cycleway",
            "piste"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-cycleway-piste",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              18,
              4
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "type",
            "steps"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-steps",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              16,
              1.6
            ],
            [
              18,
              6
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                4,
                0.4
              ]
            ],
            [
              15,
              [
                1.75,
                0.4
              ]
            ],
            [
              16,
              [
                0.75,
                0.4
              ]
            ],
            [
              17,
              [
                0.3,
                0.3
              ]
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "type",
            "trunk_link"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-trunk_link",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(46, 69%, 68%)",
        "line-opacity": 1
      },
      "source-layer": "road"
    },
    {
      "minzoom": 10,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "class",
            "motorway_link"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-motorway_link",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(26, 67%, 70%)",
        "line-opacity": 1
      },
      "source-layer": "road"
    },
    {
      "minzoom": 12,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "pedestrian"
          ],
          [
            "==",
            "structure",
            "none"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-pedestrian",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              0.5
            ],
            [
              18,
              12
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": 1,
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                1,
                0
              ]
            ],
            [
              15,
              [
                1.5,
                0.4
              ]
            ],
            [
              16,
              [
                1,
                0.2
              ]
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 12,
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "Polygon"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "none"
          ],
          [
            "in",
            "class",
            "path",
            "pedestrian"
          ]
        ]
      ],
      "type": "fill",
      "source": "composite",
      "id": "road-pedestrian-polygon-fill",
      "paint": {
        "fill-color": {
          "base": 1,
          "stops": [
            [
              16,
              "hsl(230, 16%, 94%)"
            ],
            [
              16.25,
              "hsl(230, 50%, 98%)"
            ]
          ]
        },
        "fill-outline-color": "hsl(230, 26%, 88%)",
        "fill-opacity": 1
      },
      "source-layer": "road"
    },
    {
      "minzoom": 12,
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "Polygon"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "none"
          ],
          [
            "in",
            "class",
            "path",
            "pedestrian"
          ]
        ]
      ],
      "type": "fill",
      "source": "composite",
      "id": "road-pedestrian-polygon-pattern",
      "paint": {
        "fill-color": "hsl(0, 0%, 100%)",
        "fill-outline-color": "hsl(35, 10%, 83%)",
        "fill-pattern": "pedestrian-polygon",
        "fill-opacity": {
          "base": 1,
          "stops": [
            [
              16,
              0
            ],
            [
              16.25,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 12,
      "layout": {
        
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "Polygon"
        ],
        [
          "all",
          [
            "!in",
            "class",
            "motorway",
            "path",
            "pedestrian",
            "trunk"
          ],
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ]
        ]
      ],
      "type": "fill",
      "source": "composite",
      "id": "road-polygon",
      "paint": {
        "fill-color": "hsl(0, 0%, 100%)",
        "fill-outline-color": "hsl(0, 0%, 100%)"
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "class",
            "track"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-track",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              18,
              12
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)"
      },
      "source-layer": "road"
    },
    {
      "minzoom": 14,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!=",
            "type",
            "trunk_link"
          ],
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "in",
            "class",
            "link",
            "service"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-service-link",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              0.5
            ],
            [
              18,
              12
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)"
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street_limited"
          ],
          [
            "==",
            "structure",
            "none"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-street_limited",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(35, 14%, 93%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street"
          ],
          [
            "==",
            "structure",
            "none"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-street",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "in",
            "class",
            "secondary",
            "tertiary"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-secondary-tertiary",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              8.5,
              0.5
            ],
            [
              10,
              0.75
            ],
            [
              18,
              26
            ]
          ]
        },
        "line-color": {
          "base": 1,
          "stops": [
            [
              5,
              "hsl(35, 32%, 91%)"
            ],
            [
              8,
              "hsl(0, 0%, 100%)"
            ]
          ]
        },
        "line-opacity": {
          "base": 1.2,
          "stops": [
            [
              5,
              0
            ],
            [
              5.5,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "class",
            "primary"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-primary",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-color": {
          "base": 1,
          "stops": [
            [
              5,
              "hsl(35, 32%, 91%)"
            ],
            [
              8,
              "hsl(0, 0%, 100%)"
            ]
          ]
        },
        "line-opacity": {
          "base": 1.2,
          "stops": [
            [
              5,
              0
            ],
            [
              5.5,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 16,
      "layout": {
        "symbol-placement": "line",
        "icon-image": {
          "base": 1,
          "stops": [
            [
              17,
              "oneway-small"
            ],
            [
              18,
              "oneway-large"
            ]
          ]
        },
        "icon-rotation-alignment": "map",
        "icon-padding": 2,
        "symbol-spacing": 200
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!=",
            "type",
            "trunk_link"
          ],
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "oneway",
            "true"
          ],
          [
            "in",
            "class",
            "link",
            "path",
            "pedestrian",
            "service",
            "track"
          ]
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "road-oneway-arrows-blue-minor",
      "paint": {
        
      },
      "source-layer": "road"
    },
    {
      "minzoom": 15,
      "layout": {
        "symbol-placement": "line",
        "icon-image": {
          "base": 1,
          "stops": [
            [
              16,
              "oneway-small"
            ],
            [
              17,
              "oneway-large"
            ]
          ]
        },
        "icon-rotation-alignment": "map",
        "icon-padding": 2,
        "symbol-spacing": 200
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!=",
            "type",
            "trunk_link"
          ],
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "oneway",
            "true"
          ],
          [
            "in",
            "class",
            "primary",
            "secondary",
            "street",
            "street_limited",
            "tertiary"
          ]
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "road-oneway-arrows-blue-major",
      "paint": {
        
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "class",
            "trunk"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-trunk",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-color": {
          "base": 1,
          "stops": [
            [
              6,
              "hsl(0, 0%, 100%)"
            ],
            [
              6.1,
              "hsl(46, 80%, 60%)"
            ],
            [
              9,
              "hsl(46, 69%, 68%)"
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "==",
            "class",
            "motorway"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-motorway",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-color": {
          "base": 1,
          "stops": [
            [
              8,
              "hsl(26, 87%, 62%)"
            ],
            [
              9,
              "hsl(26, 67%, 70%)"
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "in",
            "class",
            "major_rail",
            "minor_rail"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-rail",
      "paint": {
        "line-color": {
          "stops": [
            [
              13,
              "hsl(50, 17%, 82%)"
            ],
            [
              16,
              "hsl(230, 10%, 74%)"
            ]
          ]
        },
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              0.5
            ],
            [
              20,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "in",
            "class",
            "major_rail",
            "minor_rail"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "road-rail-tracks",
      "paint": {
        "line-color": {
          "stops": [
            [
              13,
              "hsl(50, 17%, 82%)"
            ],
            [
              16,
              "hsl(230, 10%, 74%)"
            ]
          ]
        },
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              4
            ],
            [
              20,
              8
            ]
          ]
        },
        "line-dasharray": [
          0.1,
          15
        ],
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.75,
              0
            ],
            [
              14,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 16,
      "layout": {
        "icon-allow-overlap": true,
        "icon-size": 1,
        "icon-image": "level-crossing"
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "Point"
        ],
        [
          "==",
          "class",
          "level_crossing"
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "level-crossing",
      "paint": {
        "icon-opacity": 1
      },
      "source-layer": "road"
    },
    {
      "minzoom": 16,
      "layout": {
        "symbol-placement": "line",
        "icon-image": {
          "base": 1,
          "stops": [
            [
              16,
              "oneway-white-small"
            ],
            [
              17,
              "oneway-white-large"
            ]
          ]
        },
        "icon-padding": 2,
        "symbol-spacing": 200
      },
      "metadata": {
        "mapbox:group": "1444855786460.0557"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "structure",
            "bridge",
            "tunnel"
          ],
          [
            "!in",
            "type",
            "primary_link",
            "secondary_link",
            "tertiary_link"
          ],
          [
            "==",
            "oneway",
            "true"
          ],
          [
            "in",
            "class",
            "link",
            "trunk"
          ]
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "road-oneway-arrows-white",
      "paint": {
        "icon-opacity": 0.5
      },
      "source-layer": "road"
    },
    {
      "minzoom": 16,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "filter": [
        "==",
        "class",
        "hedge"
      ],
      "type": "line",
      "source": "composite",
      "id": "hedges",
      "paint": {
        "line-color": "hsl(100, 59%, 70%)",
        "line-width": {
          "base": 1,
          "stops": [
            [
              16,
              1
            ],
            [
              20,
              3
            ]
          ]
        },
        "line-opacity": 1,
        "line-dasharray": [
          1,
          2,
          5,
          2,
          1,
          2
        ]
      },
      "source-layer": "barrier_line"
    },
    {
      "minzoom": 16,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "filter": [
        "==",
        "class",
        "fence"
      ],
      "type": "line",
      "source": "composite",
      "id": "fences",
      "paint": {
        "line-color": "hsl(46, 17%, 76%)",
        "line-width": {
          "base": 1,
          "stops": [
            [
              16,
              1
            ],
            [
              20,
              3
            ]
          ]
        },
        "line-opacity": 1,
        "line-dasharray": [
          1,
          2,
          5,
          2,
          1,
          2
        ]
      },
      "source-layer": "barrier_line"
    },
    {
      "minzoom": 17,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "filter": [
        "==",
        "class",
        "gate"
      ],
      "type": "line",
      "source": "composite",
      "id": "gates",
      "paint": {
        "line-color": "hsl(46, 17%, 76%)",
        "line-width": {
          "base": 1,
          "stops": [
            [
              16,
              1
            ],
            [
              20,
              3
            ]
          ]
        },
        "line-opacity": 0.5,
        "line-dasharray": [
          1,
          2,
          5,
          2,
          1,
          2
        ]
      },
      "source-layer": "barrier_line"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "type",
            "piste",
            "steps"
          ],
          [
            "==",
            "class",
            "path"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-path-bg",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              2.5
            ],
            [
              18,
              8
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        },
        "line-color": "hsl(50, 100%, 40%)",
        "line-blur": {
          "base": 1,
          "stops": [
            [
              14,
              0
            ],
            [
              17,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "path"
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "==",
            "type",
            "piste"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-piste-bg",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              2
            ],
            [
              18,
              7
            ]
          ]
        },
        "line-dasharray": [
          1,
          0
        ],
        "line-color": "hsl(205, 63%, 60%)",
        "line-blur": 0,
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "==",
            "type",
            "steps"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-steps-bg",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              2.5
            ],
            [
              18,
              8
            ]
          ]
        },
        "line-color": "hsl(50, 100%, 40%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        },
        "line-blur": {
          "base": 1,
          "stops": [
            [
              14,
              0
            ],
            [
              17,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "pedestrian"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-pedestrian-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              2
            ],
            [
              18,
              14.5
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-gap-width": 0,
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-street-low",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": {
          "stops": [
            [
              11.5,
              0
            ],
            [
              12,
              1
            ],
            [
              14,
              1
            ],
            [
              14.01,
              0
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street_limited"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-street_limited-low",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": {
          "stops": [
            [
              11.5,
              0
            ],
            [
              12,
              1
            ],
            [
              14,
              1
            ],
            [
              14.01,
              0
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "track"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-track-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(50, 100%, 40%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              18,
              12
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 14,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!=",
            "type",
            "trunk_link"
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "in",
            "class",
            "link",
            "service"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-service-link-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              0.5
            ],
            [
              18,
              12
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street_limited"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-street_limited-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              13,
              0
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-street-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        },
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              13,
              0
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "in",
            "class",
            "secondary",
            "tertiary"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-secondary-tertiary-case",
      "paint": {
        "line-width": {
          "base": 1.2,
          "stops": [
            [
              10,
              0.75
            ],
            [
              18,
              2
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              8.5,
              0.5
            ],
            [
              10,
              0.75
            ],
            [
              18,
              26
            ]
          ]
        },
        "line-translate": [
          0,
          0
        ]
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "primary"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-primary-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              16,
              2
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-translate": [
          0,
          0
        ]
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "layer",
            2,
            3,
            4,
            5
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "==",
            "type",
            "trunk_link"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-trunk_link-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              10.99,
              0
            ],
            [
              11,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "layer",
            2,
            3,
            4,
            5
          ],
          [
            "==",
            "class",
            "motorway_link"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-motorway_link-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-opacity": 1
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "layer",
            2,
            3,
            4,
            5
          ],
          [
            "==",
            "class",
            "trunk"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-trunk-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              16,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "layer",
            2,
            3,
            4,
            5
          ],
          [
            "==",
            "class",
            "motorway"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-motorway-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              16,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 14,
      "layout": {
        "line-join": "miter"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "construction"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-construction",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(230, 24%, 87%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        },
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                0.4,
                0.8
              ]
            ],
            [
              15,
              [
                0.3,
                0.6
              ]
            ],
            [
              16,
              [
                0.2,
                0.3
              ]
            ],
            [
              17,
              [
                0.2,
                0.25
              ]
            ],
            [
              18,
              [
                0.15,
                0.15
              ]
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "type",
            "cycleway",
            "piste",
            "steps"
          ],
          [
            "==",
            "class",
            "path"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-path",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              18,
              4
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                4,
                0.4
              ]
            ],
            [
              15,
              [
                3,
                0.4
              ]
            ],
            [
              16,
              [
                3,
                0.35
              ]
            ],
            [
              17,
              [
                3,
                0.35
              ]
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "path"
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "in",
            "type",
            "cycleway",
            "piste"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-cycleway-piste",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              18,
              4
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "==",
            "type",
            "steps"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-steps",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              16,
              1.6
            ],
            [
              18,
              6
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                4,
                0.4
              ]
            ],
            [
              15,
              [
                1.75,
                0.4
              ]
            ],
            [
              16,
              [
                0.75,
                0.4
              ]
            ],
            [
              17,
              [
                0.3,
                0.3
              ]
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13,
              0
            ],
            [
              13.25,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "layer",
            2,
            3,
            4,
            5
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "==",
            "type",
            "trunk_link"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-trunk_link",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(46, 69%, 68%)"
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "layer",
            2,
            3,
            4,
            5
          ],
          [
            "==",
            "class",
            "motorway_link"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-motorway_link",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(26, 67%, 70%)"
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "pedestrian"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-pedestrian",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              0.5
            ],
            [
              18,
              12
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": 1,
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              14,
              [
                1,
                0
              ]
            ],
            [
              15,
              [
                1.5,
                0.4
              ]
            ],
            [
              16,
              [
                1,
                0.2
              ]
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "track"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-track",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              15,
              1
            ],
            [
              18,
              12
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)"
      },
      "source-layer": "road"
    },
    {
      "minzoom": 14,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!=",
            "type",
            "trunk_link"
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "in",
            "class",
            "link",
            "service",
            "track"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-service-link",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              0.5
            ],
            [
              18,
              12
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)"
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street_limited"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-street_limited",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(35, 14%, 93%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 11,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "street"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-street",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12.5,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "in",
            "type",
            "secondary",
            "tertiary"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-secondary-tertiary",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              8.5,
              0.5
            ],
            [
              10,
              0.75
            ],
            [
              18,
              26
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": {
          "base": 1.2,
          "stops": [
            [
              5,
              0
            ],
            [
              5.5,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "==",
            "type",
            "primary"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-primary",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-opacity": {
          "base": 1.2,
          "stops": [
            [
              5,
              0
            ],
            [
              5.5,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 16,
      "layout": {
        "symbol-placement": "line",
        "icon-image": {
          "base": 1,
          "stops": [
            [
              17,
              "oneway-small"
            ],
            [
              18,
              "oneway-large"
            ]
          ]
        },
        "symbol-spacing": 200,
        "icon-rotation-alignment": "map",
        "icon-padding": 2
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "oneway",
            "true"
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "in",
            "class",
            "link",
            "path",
            "pedestrian",
            "service",
            "track"
          ]
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "bridge-oneway-arrows-blue-minor",
      "paint": {
        
      },
      "source-layer": "road"
    },
    {
      "minzoom": 15,
      "layout": {
        "symbol-placement": "line",
        "icon-image": {
          "base": 1,
          "stops": [
            [
              16,
              "oneway-small"
            ],
            [
              17,
              "oneway-large"
            ]
          ]
        },
        "symbol-spacing": 200,
        "icon-rotation-alignment": "map",
        "icon-padding": 2
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "oneway",
            "true"
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "in",
            "class",
            "primary",
            "secondary",
            "street",
            "street_limited",
            "tertiary"
          ]
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "bridge-oneway-arrows-blue-major",
      "paint": {
        
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "layer",
            2,
            3,
            4,
            5
          ],
          [
            "==",
            "class",
            "trunk"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-trunk",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-color": "hsl(46, 69%, 68%)"
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "layer",
            2,
            3,
            4,
            5
          ],
          [
            "==",
            "class",
            "motorway"
          ],
          [
            "==",
            "structure",
            "bridge"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-motorway",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-color": "hsl(26, 67%, 70%)"
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "in",
            "class",
            "major_rail",
            "minor_rail"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-rail",
      "paint": {
        "line-color": {
          "stops": [
            [
              13,
              "hsl(50, 17%, 82%)"
            ],
            [
              16,
              "hsl(230, 10%, 74%)"
            ]
          ]
        },
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              0.5
            ],
            [
              20,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "in",
            "class",
            "major_rail",
            "minor_rail"
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-rail-tracks",
      "paint": {
        "line-color": {
          "stops": [
            [
              13,
              "hsl(50, 17%, 82%)"
            ],
            [
              16,
              "hsl(230, 10%, 74%)"
            ]
          ]
        },
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              4
            ],
            [
              20,
              8
            ]
          ]
        },
        "line-dasharray": [
          0.1,
          15
        ],
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              13.75,
              0
            ],
            [
              20,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "==",
            "type",
            "trunk_link"
          ],
          [
            ">=",
            "layer",
            2
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-trunk_link-2-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              10.99,
              0
            ],
            [
              11,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "motorway_link"
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            ">=",
            "layer",
            2
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-motorway_link-2-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.75
            ],
            [
              20,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-opacity": 1
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "trunk"
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            ">=",
            "layer",
            2
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-trunk-2-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              10,
              1
            ],
            [
              16,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "motorway"
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            ">=",
            "layer",
            2
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-motorway-2-case",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              10,
              1
            ],
            [
              16,
              2
            ]
          ]
        },
        "line-color": "hsl(0, 0%, 100%)",
        "line-gap-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "==",
            "type",
            "trunk_link"
          ],
          [
            ">=",
            "layer",
            2
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-trunk_link-2",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(46, 69%, 68%)"
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "motorway_link"
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            ">=",
            "layer",
            2
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-motorway_link-2",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              12,
              0.5
            ],
            [
              14,
              2
            ],
            [
              18,
              18
            ]
          ]
        },
        "line-color": "hsl(26, 67%, 70%)"
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "trunk"
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            ">=",
            "layer",
            2
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-trunk-2",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-color": "hsl(46, 69%, 68%)"
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-cap": "round",
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "==",
            "class",
            "motorway"
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            ">=",
            "layer",
            2
          ]
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "bridge-motorway-2",
      "paint": {
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              5,
              0.75
            ],
            [
              18,
              32
            ]
          ]
        },
        "line-color": "hsl(26, 67%, 70%)"
      },
      "source-layer": "road"
    },
    {
      "minzoom": 16,
      "layout": {
        "symbol-placement": "line",
        "icon-image": {
          "base": 1,
          "stops": [
            [
              16,
              "oneway-white-small"
            ],
            [
              17,
              "oneway-white-large"
            ]
          ]
        },
        "symbol-spacing": 200,
        "icon-padding": 2
      },
      "metadata": {
        "mapbox:group": "1444855799204.86"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "all",
          [
            "!in",
            "type",
            "primary_link",
            "secondary_link",
            "tertiary_link"
          ],
          [
            "==",
            "oneway",
            "true"
          ],
          [
            "==",
            "structure",
            "bridge"
          ],
          [
            "in",
            "class",
            "link",
            "trunk"
          ]
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "bridge-oneway-arrows-white",
      "paint": {
        "icon-opacity": 0.5
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-join": "round"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "==",
          "class",
          "aerialway"
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "aerialway-bg",
      "paint": {
        "line-color": "hsl(0, 0%, 100%)",
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              2.5
            ],
            [
              20,
              3
            ]
          ]
        },
        "line-blur": 0.5
      },
      "source-layer": "road"
    },
    {
      "minzoom": 13,
      "layout": {
        "line-join": "round"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "==",
          "class",
          "aerialway"
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "aerialway",
      "paint": {
        "line-color": "hsl(230, 4%, 29%)",
        "line-width": {
          "base": 1.5,
          "stops": [
            [
              14,
              0.5
            ],
            [
              20,
              1
            ]
          ]
        }
      },
      "source-layer": "road"
    },
    {
      "layout": {
        "line-join": "bevel"
      },
      "metadata": {
        "mapbox:group": "1444934295202.7542"
      },
      "filter": [
        "all",
        [
          "==",
          "maritime",
          0
        ],
        [
          ">=",
          "admin_level",
          3
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "admin-3-4-boundaries-bg",
      "paint": {
        "line-color": {
          "base": 1,
          "stops": [
            [
              8,
              "hsl(35, 12%, 89%)"
            ],
            [
              16,
              "hsl(230, 49%, 90%)"
            ]
          ]
        },
        "line-width": {
          "base": 1,
          "stops": [
            [
              7,
              3.75
            ],
            [
              12,
              5.5
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              7,
              0
            ],
            [
              8,
              0.75
            ]
          ]
        },
        "line-dasharray": [
          1,
          0
        ],
        "line-translate": [
          0,
          0
        ],
        "line-blur": {
          "base": 1,
          "stops": [
            [
              3,
              0
            ],
            [
              8,
              3
            ]
          ]
        }
      },
      "source-layer": "admin"
    },
    {
      "minzoom": 1,
      "layout": {
        "line-join": "miter"
      },
      "metadata": {
        "mapbox:group": "1444934295202.7542"
      },
      "filter": [
        "all",
        [
          "==",
          "admin_level",
          2
        ],
        [
          "==",
          "maritime",
          0
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "admin-2-boundaries-bg",
      "paint": {
        "line-width": {
          "base": 1,
          "stops": [
            [
              3,
              3.5
            ],
            [
              10,
              8
            ]
          ]
        },
        "line-color": {
          "base": 1,
          "stops": [
            [
              6,
              "hsl(35, 12%, 89%)"
            ],
            [
              8,
              "hsl(230, 49%, 90%)"
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              3,
              0
            ],
            [
              4,
              0.5
            ]
          ]
        },
        "line-translate": [
          0,
          0
        ],
        "line-blur": {
          "base": 1,
          "stops": [
            [
              3,
              0
            ],
            [
              10,
              2
            ]
          ]
        }
      },
      "source-layer": "admin"
    },
    {
      "layout": {
        "line-join": "round",
        "line-cap": "round"
      },
      "metadata": {
        "mapbox:group": "1444934295202.7542"
      },
      "filter": [
        "all",
        [
          "==",
          "maritime",
          0
        ],
        [
          ">=",
          "admin_level",
          3
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "admin-3-4-boundaries",
      "paint": {
        "line-dasharray": {
          "base": 1,
          "stops": [
            [
              6,
              [
                2,
                0
              ]
            ],
            [
              7,
              [
                2,
                2,
                6,
                2
              ]
            ]
          ]
        },
        "line-width": {
          "base": 1,
          "stops": [
            [
              7,
              0.75
            ],
            [
              12,
              1.5
            ]
          ]
        },
        "line-opacity": {
          "base": 1,
          "stops": [
            [
              2,
              0
            ],
            [
              3,
              1
            ]
          ]
        },
        "line-color": {
          "base": 1,
          "stops": [
            [
              3,
              "hsl(230, 14%, 77%)"
            ],
            [
              7,
              "hsl(230, 8%, 62%)"
            ]
          ]
        }
      },
      "source-layer": "admin"
    },
    {
      "minzoom": 1,
      "layout": {
        "line-join": "round",
        "line-cap": "round"
      },
      "metadata": {
        "mapbox:group": "1444934295202.7542"
      },
      "filter": [
        "all",
        [
          "==",
          "admin_level",
          2
        ],
        [
          "==",
          "disputed",
          0
        ],
        [
          "==",
          "maritime",
          0
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "admin-2-boundaries",
      "paint": {
        "line-color": "hsl(230, 8%, 51%)",
        "line-width": {
          "base": 1,
          "stops": [
            [
              3,
              0.5
            ],
            [
              10,
              2
            ]
          ]
        }
      },
      "source-layer": "admin"
    },
    {
      "minzoom": 1,
      "layout": {
        "line-join": "round"
      },
      "metadata": {
        "mapbox:group": "1444934295202.7542"
      },
      "filter": [
        "all",
        [
          "==",
          "admin_level",
          2
        ],
        [
          "==",
          "disputed",
          1
        ],
        [
          "==",
          "maritime",
          0
        ]
      ],
      "type": "line",
      "source": "composite",
      "id": "admin-2-boundaries-dispute",
      "paint": {
        "line-dasharray": [
          1.5,
          1.5
        ],
        "line-color": "hsl(230, 8%, 51%)",
        "line-width": {
          "base": 1,
          "stops": [
            [
              3,
              0.5
            ],
            [
              10,
              2
            ]
          ]
        }
      },
      "source-layer": "admin"
    },
    {
      "id": "housenum-label",
      "type": "symbol",
      "source": "composite",
      "source-layer": "housenum_label",
      "minzoom": 17,
      "layout": {
        "text-field": "{house_num}",
        "text-font": [
          "DIN Offc Pro Italic",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 4,
        "text-max-width": 7,
        "text-size": 9.5
      },
      "paint": {
        "text-color": "hsl(35, 2%, 69%)",
        "text-halo-color": "hsl(35, 8%, 85%)",
        "text-halo-width": 0.5,
        "text-halo-blur": 0
      }
    },
    {
      "minzoom": 11,
      "layout": {
        "text-field": "{ele} m",
        "symbol-placement": "line",
        "text-pitch-alignment": "viewport",
        "text-max-angle": 25,
        "text-padding": 5,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-size": {
          "base": 1,
          "stops": [
            [
              15,
              9.5
            ],
            [
              20,
              12
            ]
          ]
        }
      },
      "filter": [
        "in",
        "index",
        10,
        5
      ],
      "type": "symbol",
      "source": "composite",
      "id": "contour-label",
      "paint": {
        "text-color": "hsl(100, 60%, 28%)",
        "text-halo-width": 1,
        "text-halo-blur": 0,
        "text-halo-color": "hsla(0, 0%, 100%, 0.5)"
      },
      "source-layer": "contour"
    },
    {
      "minzoom": 12,
      "layout": {
        "text-field": "{name_en}",
        "text-font": [
          "DIN Offc Pro Italic",
          "Arial Unicode MS Regular"
        ],
        "symbol-placement": "line",
        "text-pitch-alignment": "viewport",
        "text-max-angle": 30,
        "text-size": {
          "base": 1,
          "stops": [
            [
              13,
              12
            ],
            [
              18,
              16
            ]
          ]
        }
      },
      "filter": [
        "in",
        "class",
        "canal",
        "river"
      ],
      "type": "symbol",
      "source": "composite",
      "id": "waterway-label",
      "paint": {
        "text-halo-width": 0.5,
        "text-halo-color": "hsl(196, 80%, 70%)",
        "text-color": "hsl(230, 48%, 44%)",
        "text-halo-blur": 0.5
      },
      "source-layer": "waterway_label"
    },
    {
      "minzoom": 17,
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              16,
              11
            ],
            [
              20,
              13
            ]
          ]
        },
        "icon-image": "{maki}-11",
        "text-max-angle": 38,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 1,
        "text-offset": [
          0,
          0.65
        ],
        "text-rotation-alignment": "viewport",
        "text-anchor": "top",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01,
        "text-max-width": 8
      },
      "metadata": {
        "mapbox:group": "1444933456003.5437"
      },
      "filter": [
        "all",
        [
          "==",
          "scalerank",
          4
        ],
        [
          ">=",
          "localrank",
          15
        ],
        [
          "in",
          "maki",
          "amusement-park",
          "aquarium",
          "attraction",
          "bakery",
          "bank",
          "bar",
          "beer",
          "bus",
          "cafe",
          "castle",
          "college",
          "doctor",
          "fast-food",
          "ferry",
          "fire-station",
          "fuel",
          "grocery",
          "harbor",
          "hospital",
          "ice-cream",
          "lodging",
          "marker",
          "monument",
          "museum",
          "pharmacy",
          "police",
          "post",
          "restaurant",
          "rocket",
          "stadium",
          "swimming"
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "poi-relevant-scalerank4-l15",
      "paint": {
        "text-color": "hsl(25, 25%, 32%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0.5,
        "text-halo-blur": 0.5
      },
      "source-layer": "poi_label"
    },
    {
      "minzoom": 15,
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              16,
              11
            ],
            [
              20,
              13
            ]
          ]
        },
        "icon-image": "{maki}-11",
        "text-max-angle": 38,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 1,
        "text-offset": [
          0,
          0.65
        ],
        "text-rotation-alignment": "viewport",
        "text-anchor": "top",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01,
        "text-max-width": 8
      },
      "metadata": {
        "mapbox:group": "1444933456003.5437"
      },
      "filter": [
        "all",
        [
          "<=",
          "localrank",
          14
        ],
        [
          "==",
          "scalerank",
          4
        ],
        [
          "in",
          "maki",
          "amusement-park",
          "aquarium",
          "attraction",
          "bakery",
          "bank",
          "bar",
          "beer",
          "bus",
          "cafe",
          "castle",
          "college",
          "doctor",
          "fast-food",
          "ferry",
          "fire-station",
          "fuel",
          "grocery",
          "harbor",
          "hospital",
          "ice-cream",
          "lodging",
          "marker",
          "monument",
          "museum",
          "pharmacy",
          "police",
          "post",
          "restaurant",
          "rocket",
          "stadium",
          "swimming"
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "poi-relevant-scalerank4-l1",
      "paint": {
        "text-color": "hsl(25, 25%, 32%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0.5,
        "text-halo-blur": 0.5
      },
      "source-layer": "poi_label"
    },
    {
      "minzoom": 15,
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              16,
              11
            ],
            [
              20,
              13
            ]
          ]
        },
        "icon-image": "{maki}-11",
        "text-max-angle": 38,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 1,
        "text-offset": [
          0,
          0.65
        ],
        "text-rotation-alignment": "viewport",
        "text-anchor": "top",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01,
        "text-max-width": 8
      },
      "metadata": {
        "mapbox:group": "1444933456003.5437"
      },
      "filter": [
        "all",
        [
          "==",
          "scalerank",
          4
        ],
        [
          "in",
          "maki",
          "campsite",
          "cemetery",
          "dog-park",
          "garden",
          "golf",
          "park",
          "picnic-site",
          "playground",
          "zoo"
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "poi-parks_scalerank4",
      "paint": {
        "text-color": "hsl(100, 100%, 20%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0.5,
        "text-halo-blur": 0.5
      },
      "source-layer": "poi_label"
    },
    {
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              16,
              11
            ],
            [
              20,
              13
            ]
          ]
        },
        "icon-image": "{maki}-11",
        "text-max-angle": 38,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 1,
        "text-offset": [
          0,
          0.65
        ],
        "text-rotation-alignment": "viewport",
        "text-anchor": "top",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01,
        "text-max-width": 8
      },
      "metadata": {
        "mapbox:group": "1444933372896.5967"
      },
      "filter": [
        "all",
        [
          "!in",
          "maki",
          "campsite",
          "cemetery",
          "dog-park",
          "garden",
          "golf",
          "park",
          "picnic-site",
          "playground",
          "zoo"
        ],
        [
          "==",
          "scalerank",
          3
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "poi-scalerank3",
      "paint": {
        "text-color": "hsl(25, 25%, 32%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0.5,
        "text-halo-blur": 0.5
      },
      "source-layer": "poi_label"
    },
    {
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              16,
              11
            ],
            [
              20,
              13
            ]
          ]
        },
        "icon-image": "{maki}-11",
        "text-max-angle": 38,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 2,
        "text-offset": [
          0,
          0.65
        ],
        "text-rotation-alignment": "viewport",
        "text-anchor": "top",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01,
        "text-max-width": 8
      },
      "metadata": {
        "mapbox:group": "1444933372896.5967"
      },
      "filter": [
        "all",
        [
          "==",
          "scalerank",
          3
        ],
        [
          "in",
          "maki",
          "campsite",
          "cemetery",
          "dog-park",
          "garden",
          "golf",
          "park",
          "picnic-site",
          "playground",
          "zoo"
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "poi-parks-scalerank3",
      "paint": {
        "text-color": "hsl(100, 100%, 20%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0.5,
        "text-halo-blur": 0.5
      },
      "source-layer": "poi_label"
    },
    {
      "minzoom": 15,
      "layout": {
        "text-size": {
          "base": 1,
          "stops": [
            [
              15,
              10
            ],
            [
              20,
              13
            ]
          ]
        },
        "text-max-angle": 30,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Regular",
          "Arial Unicode MS Regular"
        ],
        "symbol-placement": "line",
        "text-padding": 1,
        "text-rotation-alignment": "map",
        "text-pitch-alignment": "viewport",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01
      },
      "metadata": {
        "mapbox:group": "1444933721429.3076"
      },
      "filter": [
        "all",
        [
          "!in",
          "class",
          "aerialway",
          "golf",
          "link",
          "motorway",
          "path",
          "pedestrian",
          "primary",
          "secondary",
          "street",
          "street_limited",
          "tertiary",
          "trunk"
        ],
        [
          "==",
          "$type",
          "LineString"
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "road-label-small",
      "paint": {
        "text-color": "hsl(0, 0%, 0%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1.25,
        "text-halo-blur": 1
      },
      "source-layer": "road_label"
    },
    {
      "minzoom": 11,
      "layout": {
        "text-size": {
          "base": 1,
          "stops": [
            [
              11,
              10
            ],
            [
              20,
              14
            ]
          ]
        },
        "text-max-angle": 30,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Regular",
          "Arial Unicode MS Regular"
        ],
        "symbol-placement": "line",
        "text-padding": 1,
        "text-rotation-alignment": "map",
        "text-pitch-alignment": "viewport",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01
      },
      "metadata": {
        "mapbox:group": "1444933721429.3076"
      },
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "in",
          "class",
          "aerialway",
          "link",
          "path",
          "pedestrian",
          "street",
          "street_limited"
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "road-label-medium",
      "paint": {
        "text-color": "hsl(0, 0%, 0%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1
      },
      "source-layer": "road_label"
    },
    {
      "layout": {
        "text-size": {
          "base": 1,
          "stops": [
            [
              9,
              10
            ],
            [
              20,
              16
            ]
          ]
        },
        "text-max-angle": 30,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Regular",
          "Arial Unicode MS Regular"
        ],
        "symbol-placement": "line",
        "text-padding": 1,
        "text-rotation-alignment": "map",
        "text-pitch-alignment": "viewport",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01
      },
      "metadata": {
        "mapbox:group": "1444933721429.3076"
      },
      "filter": [
        "in",
        "class",
        "motorway",
        "primary",
        "secondary",
        "tertiary",
        "trunk"
      ],
      "type": "symbol",
      "source": "composite",
      "id": "road-label-large",
      "paint": {
        "text-color": "hsl(0, 0%, 0%)",
        "text-halo-color": "rgba(255,255,255, 0.75)",
        "text-halo-width": 1,
        "text-halo-blur": 1
      },
      "source-layer": "road_label"
    },
    {
      "layout": {
        "text-size": 9,
        "icon-image": "{shield}-{reflen}",
        "icon-rotation-alignment": "viewport",
        "text-max-angle": 38,
        "symbol-spacing": {
          "base": 1,
          "stops": [
            [
              11,
              150
            ],
            [
              14,
              200
            ]
          ]
        },
        "text-font": [
          "DIN Offc Pro Bold",
          "Arial Unicode MS Bold"
        ],
        "symbol-placement": {
          "base": 1,
          "stops": [
            [
              10,
              "point"
            ],
            [
              11,
              "line"
            ]
          ]
        },
        "text-padding": 2,
        "text-rotation-alignment": "viewport",
        "text-field": "{ref}",
        "text-letter-spacing": 0.05,
        "icon-padding": 2
      },
      "metadata": {
        "mapbox:group": "1444933575858.6992"
      },
      "filter": [
        "all",
        [
          "!in",
          "shield",
          "at-expressway",
          "at-motorway",
          "at-state-b",
          "bg-motorway",
          "bg-national",
          "ch-main",
          "ch-motorway",
          "cz-motorway",
          "cz-road",
          "de-motorway",
          "e-road",
          "fi-main",
          "gr-motorway",
          "gr-national",
          "hr-motorway",
          "hr-state",
          "hu-main",
          "hu-motorway",
          "nz-state",
          "pl-expressway",
          "pl-motorway",
          "pl-national",
          "ro-county",
          "ro-motorway",
          "ro-national",
          "rs-motorway",
          "rs-state-1b",
          "se-main",
          "si-expressway",
          "si-motorway",
          "sk-highway",
          "sk-road",
          "us-interstate",
          "us-interstate-business",
          "us-interstate-duplex",
          "us-interstate-truck",
          "za-metropolitan",
          "za-national",
          "za-provincial",
          "za-regional"
        ],
        [
          "<=",
          "reflen",
          6
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "road-shields-black",
      "paint": {
        "text-color": "hsl(230, 21%, 37%)",
        "icon-halo-color": "rgba(0, 0, 0, 1)",
        "icon-halo-width": 1,
        "text-opacity": 1,
        "icon-color": "white",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0
      },
      "source-layer": "road_label"
    },
    {
      "layout": {
        "text-size": 9,
        "icon-image": "{shield}-{reflen}",
        "icon-rotation-alignment": "viewport",
        "text-max-angle": 38,
        "symbol-spacing": {
          "base": 1,
          "stops": [
            [
              11,
              150
            ],
            [
              14,
              200
            ]
          ]
        },
        "text-font": [
          "DIN Offc Pro Bold",
          "Arial Unicode MS Bold"
        ],
        "symbol-placement": {
          "base": 1,
          "stops": [
            [
              10,
              "point"
            ],
            [
              11,
              "line"
            ]
          ]
        },
        "text-padding": 2,
        "text-rotation-alignment": "viewport",
        "text-field": "{ref}",
        "text-letter-spacing": 0.05,
        "icon-padding": 2
      },
      "metadata": {
        "mapbox:group": "1444933575858.6992"
      },
      "filter": [
        "all",
        [
          "<=",
          "reflen",
          6
        ],
        [
          "in",
          "shield",
          "at-expressway",
          "at-motorway",
          "at-state-b",
          "bg-motorway",
          "bg-national",
          "ch-main",
          "ch-motorway",
          "cz-motorway",
          "cz-road",
          "de-motorway",
          "e-road",
          "fi-main",
          "gr-motorway",
          "gr-national",
          "hr-motorway",
          "hr-state",
          "hu-main",
          "hu-motorway",
          "nz-state",
          "pl-expressway",
          "pl-motorway",
          "pl-national",
          "ro-county",
          "ro-motorway",
          "ro-national",
          "rs-motorway",
          "rs-state-1b",
          "se-main",
          "si-expressway",
          "si-motorway",
          "sk-highway",
          "sk-road",
          "us-interstate",
          "us-interstate-business",
          "us-interstate-duplex",
          "us-interstate-truck",
          "za-metropolitan",
          "za-national",
          "za-provincial",
          "za-regional"
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "road-shields-white",
      "paint": {
        "text-color": "hsl(0, 0%, 100%)",
        "icon-halo-color": "rgba(0, 0, 0, 1)",
        "icon-halo-width": 1,
        "text-opacity": 1,
        "icon-color": "white",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0
      },
      "source-layer": "road_label"
    },
    {
      "minzoom": 14,
      "layout": {
        "text-field": "{ref}",
        "text-size": 9,
        "icon-image": "motorway-exit-{reflen}",
        "text-font": [
          "DIN Offc Pro Bold",
          "Arial Unicode MS Bold"
        ]
      },
      "metadata": {
        "mapbox:group": "1444933575858.6992"
      },
      "filter": [
        "all",
        [
          "<=",
          "reflen",
          9
        ],
        [
          ">",
          "reflen",
          0
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "motorway-junction",
      "paint": {
        "text-color": "hsl(0, 0%, 100%)",
        "text-translate": [
          0,
          0
        ]
      },
      "source-layer": "motorway_junction"
    },
    {
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              16,
              11
            ],
            [
              20,
              13
            ]
          ]
        },
        "icon-image": "{maki}-11",
        "text-max-angle": 38,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 2,
        "text-offset": [
          0,
          0.65
        ],
        "text-rotation-alignment": "viewport",
        "text-anchor": "top",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01,
        "text-max-width": 8
      },
      "filter": [
        "in",
        "maki",
        "bicycle",
        "bicycle-share",
        "drinking-water",
        "information",
        "picnic-site",
        "toilet"
      ],
      "type": "symbol",
      "source": "composite",
      "id": "poi-outdoor-features",
      "paint": {
        "text-color": "hsl(25, 25%, 32%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0.5,
        "text-halo-blur": 0.5
      },
      "source-layer": "poi_label"
    },
    {
      "id": "mountain-peak-label",
      "type": "symbol",
      "source": "composite",
      "source-layer": "mountain_peak_label",
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              10,
              11
            ],
            [
              18,
              14
            ]
          ]
        },
        "icon-image": "{maki}-15",
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-offset": [
          0,
          0.65
        ],
        "text-anchor": "top",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01,
        "text-max-width": 8
      },
      "paint": {
        "text-color": "hsl(100, 100%, 20%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0.5,
        "text-halo-blur": 0.5
      }
    },
    {
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              10,
              11
            ],
            [
              18,
              14
            ]
          ]
        },
        "icon-image": "{maki}-15",
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-offset": [
          0,
          0.65
        ],
        "text-anchor": "top",
        "text-field": "{name_en}, {elevation_m}m",
        "text-letter-spacing": 0.01,
        "text-max-width": 8
      },
      "filter": [
        ">",
        "elevation_m",
        0
      ],
      "type": "symbol",
      "source": "composite",
      "id": "mountain-peak-label-with-elevation",
      "paint": {
        "text-color": "hsl(100, 100%, 20%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0.5,
        "text-halo-blur": 0.5
      },
      "source-layer": "mountain_peak_label"
    },
    {
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              14,
              11
            ],
            [
              20,
              14
            ]
          ]
        },
        "icon-image": {
          "stops": [
            [
              14,
              "{maki}-11"
            ],
            [
              15,
              "{maki}-15"
            ]
          ]
        },
        "text-max-angle": 38,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 2,
        "text-offset": [
          0,
          0.65
        ],
        "text-rotation-alignment": "viewport",
        "text-anchor": "top",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01,
        "text-max-width": 8
      },
      "metadata": {
        "mapbox:group": "1444933358918.2366"
      },
      "filter": [
        "all",
        [
          "!in",
          "maki",
          "campsite",
          "cemetery",
          "dog-park",
          "garden",
          "golf",
          "park",
          "picnic-site",
          "playground",
          "zoo"
        ],
        [
          "==",
          "scalerank",
          2
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "poi-scalerank2",
      "paint": {
        "text-color": "hsl(25, 25%, 32%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0.5,
        "text-halo-blur": 0.5
      },
      "source-layer": "poi_label"
    },
    {
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              14,
              11
            ],
            [
              20,
              14
            ]
          ]
        },
        "icon-image": {
          "stops": [
            [
              14,
              "{maki}-11"
            ],
            [
              15,
              "{maki}-15"
            ]
          ]
        },
        "text-max-angle": 38,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 2,
        "text-offset": [
          0,
          0.65
        ],
        "text-rotation-alignment": "viewport",
        "text-anchor": "top",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01,
        "text-max-width": 8
      },
      "metadata": {
        "mapbox:group": "1444933358918.2366"
      },
      "filter": [
        "all",
        [
          "==",
          "scalerank",
          2
        ],
        [
          "in",
          "maki",
          "campsite",
          "cemetery",
          "dog-park",
          "garden",
          "golf",
          "park",
          "picnic-site",
          "playground",
          "zoo"
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "poi-parks-scalerank2",
      "paint": {
        "text-color": "hsl(100, 100%, 20%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0.5,
        "text-halo-blur": 0.5
      },
      "source-layer": "poi_label"
    },
    {
      "minzoom": 12,
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              16,
              11
            ],
            [
              20,
              13
            ]
          ]
        },
        "icon-image": "{network}",
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-offset": [
          0,
          0.85
        ],
        "text-rotation-alignment": "viewport",
        "text-anchor": "top",
        "text-field": {
          "base": 1,
          "stops": [
            [
              0,
              ""
            ],
            [
              13,
              "{name_en}"
            ]
          ]
        },
        "text-letter-spacing": 0.01,
        "icon-padding": 0,
        "text-max-width": 7
      },
      "filter": [
        "!=",
        "maki",
        "entrance"
      ],
      "type": "symbol",
      "source": "composite",
      "id": "rail-label",
      "paint": {
        "text-color": "hsl(230, 48%, 44%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0.5,
        "icon-halo-width": 4,
        "icon-halo-color": "#fff",
        "text-opacity": {
          "base": 1,
          "stops": [
            [
              13.99,
              0
            ],
            [
              14,
              1
            ]
          ]
        },
        "text-halo-blur": 0.5
      },
      "source-layer": "rail_station_label"
    },
    {
      "minzoom": 15,
      "layout": {
        "text-field": "{name_en}",
        "text-font": [
          "DIN Offc Pro Italic",
          "Arial Unicode MS Regular"
        ],
        "text-max-width": 7,
        "text-size": {
          "base": 1,
          "stops": [
            [
              16,
              13
            ],
            [
              20,
              16
            ]
          ]
        }
      },
      "metadata": {
        "mapbox:group": "1444933808272.805"
      },
      "filter": [
        "<=",
        "area",
        10000
      ],
      "type": "symbol",
      "source": "composite",
      "id": "water-label-sm",
      "paint": {
        "text-color": "hsl(230, 48%, 44%)"
      },
      "source-layer": "water_label"
    },
    {
      "minzoom": 5,
      "layout": {
        "text-field": "{name_en}",
        "text-font": [
          "DIN Offc Pro Italic",
          "Arial Unicode MS Regular"
        ],
        "text-max-width": 7,
        "text-size": {
          "base": 1,
          "stops": [
            [
              13,
              13
            ],
            [
              18,
              18
            ]
          ]
        }
      },
      "metadata": {
        "mapbox:group": "1444933808272.805"
      },
      "filter": [
        ">",
        "area",
        10000
      ],
      "type": "symbol",
      "source": "composite",
      "id": "water-label",
      "paint": {
        "text-color": "hsl(230, 48%, 44%)"
      },
      "source-layer": "water_label"
    },
    {
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              10,
              11
            ],
            [
              18,
              14
            ]
          ]
        },
        "icon-image": {
          "stops": [
            [
              13,
              "{maki}-11"
            ],
            [
              14,
              "{maki}-15"
            ]
          ]
        },
        "text-max-angle": 38,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 2,
        "text-offset": [
          0,
          0.65
        ],
        "text-rotation-alignment": "viewport",
        "text-anchor": "top",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01,
        "text-max-width": 8
      },
      "metadata": {
        "mapbox:group": "1444933322393.2852"
      },
      "filter": [
        "all",
        [
          "<=",
          "scalerank",
          1
        ],
        [
          "in",
          "maki",
          "campsite",
          "cemetery",
          "dog-park",
          "garden",
          "golf",
          "park",
          "picnic-site",
          "playground",
          "zoo"
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "poi-parks-scalerank1",
      "paint": {
        "text-color": "hsl(100, 100%, 20%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0.5,
        "text-halo-blur": 0.5
      },
      "source-layer": "poi_label"
    },
    {
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              10,
              11
            ],
            [
              18,
              14
            ]
          ]
        },
        "icon-image": {
          "stops": [
            [
              13,
              "{maki}-11"
            ],
            [
              14,
              "{maki}-15"
            ]
          ]
        },
        "text-max-angle": 38,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 2,
        "text-offset": [
          0,
          0.65
        ],
        "text-rotation-alignment": "viewport",
        "text-anchor": "top",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01,
        "text-max-width": 8
      },
      "metadata": {
        "mapbox:group": "1444933322393.2852"
      },
      "filter": [
        "all",
        [
          "!in",
          "maki",
          "campsite",
          "cemetery",
          "dog-park",
          "garden",
          "golf",
          "park",
          "picnic-site",
          "playground",
          "zoo"
        ],
        [
          "<=",
          "scalerank",
          1
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "poi-scalerank1",
      "paint": {
        "text-color": "hsl(25, 25%, 32%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0.5,
        "text-halo-blur": 0.5
      },
      "source-layer": "poi_label"
    },
    {
      "minzoom": 9,
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              10,
              12
            ],
            [
              18,
              18
            ]
          ]
        },
        "icon-image": {
          "stops": [
            [
              12,
              "{maki}-11"
            ],
            [
              13,
              "{maki}-15"
            ]
          ]
        },
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 2,
        "text-offset": [
          0,
          0.75
        ],
        "text-rotation-alignment": "viewport",
        "text-anchor": "top",
        "text-field": {
          "stops": [
            [
              11,
              "{ref}"
            ],
            [
              12,
              "{name_en}"
            ]
          ]
        },
        "text-letter-spacing": 0.01,
        "text-max-width": 9
      },
      "filter": [
        "<=",
        "scalerank",
        2
      ],
      "type": "symbol",
      "source": "composite",
      "id": "airport-label",
      "paint": {
        "text-color": "hsl(230, 48%, 44%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 0.5,
        "text-halo-blur": 0.5
      },
      "source-layer": "airport_label"
    },
    {
      "layout": {
        "text-line-height": 1.2,
        "text-size": {
          "base": 1,
          "stops": [
            [
              10,
              11
            ],
            [
              18,
              16
            ]
          ]
        },
        "text-max-angle": 38,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Regular",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 2,
        "text-offset": [
          0,
          0
        ],
        "text-rotation-alignment": "viewport",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01,
        "text-max-width": 8
      },
      "maxzoom": 16,
      "filter": [
        "in",
        "type",
        "aboriginal_lands",
        "archipelago",
        "islet"
      ],
      "type": "symbol",
      "source": "composite",
      "id": "place-islet-archipelago-aboriginal",
      "paint": {
        "text-color": "hsl(230, 29%, 35%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1
      },
      "source-layer": "place_label"
    },
    {
      "layout": {
        "text-line-height": 1.2,
        "text-size": {
          "base": 1,
          "stops": [
            [
              10,
              11
            ],
            [
              18,
              14
            ]
          ]
        },
        "text-max-angle": 38,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Regular",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 2,
        "text-offset": [
          0,
          0
        ],
        "text-rotation-alignment": "viewport",
        "text-field": "{name_en}",
        "text-max-width": 7
      },
      "maxzoom": 18,
      "filter": [
        "all",
        [
          "all",
          [
            "<=",
            "localrank",
            10
          ],
          [
            "==",
            "type",
            "residential"
          ]
        ],
        [
          "in",
          "$type",
          "LineString",
          "Point",
          "Polygon"
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "place-residential",
      "paint": {
        "text-color": "hsl(26, 25%, 32%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1,
        "text-halo-blur": 0.5
      },
      "source-layer": "place_label"
    },
    {
      "minzoom": 10,
      "layout": {
        "text-field": "{name_en}",
        "text-transform": "uppercase",
        "text-letter-spacing": 0.1,
        "text-max-width": 7,
        "text-font": [
          "DIN Offc Pro Regular",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 3,
        "text-size": {
          "base": 1,
          "stops": [
            [
              12,
              11
            ],
            [
              16,
              16
            ]
          ]
        }
      },
      "maxzoom": 16,
      "filter": [
        "==",
        "type",
        "neighbourhood"
      ],
      "type": "symbol",
      "source": "composite",
      "id": "place-neighbourhood",
      "paint": {
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1,
        "text-color": "hsl(230, 29%, 35%)",
        "text-halo-blur": 0.5
      },
      "source-layer": "place_label"
    },
    {
      "minzoom": 10,
      "layout": {
        "text-field": "{name_en}",
        "text-transform": "uppercase",
        "text-font": [
          "DIN Offc Pro Regular",
          "Arial Unicode MS Regular"
        ],
        "text-letter-spacing": 0.15,
        "text-max-width": 7,
        "text-padding": 3,
        "text-size": {
          "base": 1,
          "stops": [
            [
              11,
              11
            ],
            [
              15,
              18
            ]
          ]
        }
      },
      "maxzoom": 16,
      "filter": [
        "==",
        "type",
        "suburb"
      ],
      "type": "symbol",
      "source": "composite",
      "id": "place-suburb",
      "paint": {
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1,
        "text-color": "hsl(230, 29%, 35%)",
        "text-halo-blur": 0.5
      },
      "source-layer": "place_label"
    },
    {
      "minzoom": 10,
      "layout": {
        "text-field": "{name_en}",
        "text-font": [
          "DIN Offc Pro Regular",
          "Arial Unicode MS Regular"
        ],
        "text-size": {
          "base": 1,
          "stops": [
            [
              12,
              11.5
            ],
            [
              15,
              16
            ]
          ]
        }
      },
      "maxzoom": 16,
      "filter": [
        "==",
        "type",
        "hamlet"
      ],
      "type": "symbol",
      "source": "composite",
      "id": "place-hamlet",
      "paint": {
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1.25,
        "text-color": "hsl(0, 0%, 0%)"
      },
      "source-layer": "place_label"
    },
    {
      "minzoom": 8,
      "layout": {
        "text-field": "{name_en}",
        "text-font": [
          "DIN Offc Pro Regular",
          "Arial Unicode MS Regular"
        ],
        "text-max-width": 7,
        "text-size": {
          "base": 1,
          "stops": [
            [
              10,
              11.5
            ],
            [
              16,
              18
            ]
          ]
        }
      },
      "maxzoom": 15,
      "filter": [
        "==",
        "type",
        "village"
      ],
      "type": "symbol",
      "source": "composite",
      "id": "place-village",
      "paint": {
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1.25,
        "text-color": "hsl(0, 0%, 0%)"
      },
      "source-layer": "place_label"
    },
    {
      "minzoom": 6,
      "layout": {
        "icon-image": "dot-9",
        "text-font": {
          "base": 1,
          "stops": [
            [
              11,
              [
                "DIN Offc Pro Regular",
                "Arial Unicode MS Regular"
              ]
            ],
            [
              12,
              [
                "DIN Offc Pro Medium",
                "Arial Unicode MS Regular"
              ]
            ]
          ]
        },
        "text-offset": {
          "base": 1,
          "stops": [
            [
              7,
              [
                0,
                -0.15
              ]
            ],
            [
              8,
              [
                0,
                0
              ]
            ]
          ]
        },
        "text-anchor": {
          "base": 1,
          "stops": [
            [
              7,
              "bottom"
            ],
            [
              8,
              "center"
            ]
          ]
        },
        "text-field": "{name_en}",
        "text-max-width": 7,
        "text-size": {
          "base": 1,
          "stops": [
            [
              7,
              11.5
            ],
            [
              15,
              20
            ]
          ]
        }
      },
      "maxzoom": 15,
      "filter": [
        "==",
        "type",
        "town"
      ],
      "type": "symbol",
      "source": "composite",
      "id": "place-town",
      "paint": {
        "text-color": "hsl(0, 0%, 0%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1.25,
        "icon-opacity": {
          "base": 1,
          "stops": [
            [
              7.99,
              1
            ],
            [
              8,
              0
            ]
          ]
        }
      },
      "source-layer": "place_label"
    },
    {
      "layout": {
        "text-line-height": 1.2,
        "text-size": {
          "base": 1,
          "stops": [
            [
              10,
              11
            ],
            [
              18,
              16
            ]
          ]
        },
        "text-max-angle": 38,
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Regular",
          "Arial Unicode MS Regular"
        ],
        "text-padding": 2,
        "text-offset": [
          0,
          0
        ],
        "text-rotation-alignment": "viewport",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.01,
        "text-max-width": 7
      },
      "maxzoom": 16,
      "filter": [
        "==",
        "type",
        "island"
      ],
      "type": "symbol",
      "source": "composite",
      "id": "place-island",
      "paint": {
        "text-color": "hsl(230, 29%, 35%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1
      },
      "source-layer": "place_label"
    },
    {
      "layout": {
        "text-size": {
          "base": 1,
          "stops": [
            [
              6,
              12
            ],
            [
              14,
              22
            ]
          ]
        },
        "icon-image": "dot-9",
        "text-font": {
          "base": 1,
          "stops": [
            [
              7,
              [
                "DIN Offc Pro Regular",
                "Arial Unicode MS Regular"
              ]
            ],
            [
              8,
              [
                "DIN Offc Pro Medium",
                "Arial Unicode MS Regular"
              ]
            ]
          ]
        },
        "text-offset": {
          "base": 1,
          "stops": [
            [
              7.99,
              [
                0,
                -0.2
              ]
            ],
            [
              8,
              [
                0,
                0
              ]
            ]
          ]
        },
        "text-anchor": {
          "base": 1,
          "stops": [
            [
              7,
              "bottom"
            ],
            [
              8,
              "center"
            ]
          ]
        },
        "text-field": "{name_en}",
        "text-max-width": 7
      },
      "metadata": {
        "mapbox:group": "1444862510685.128"
      },
      "maxzoom": 14,
      "filter": [
        "all",
        [
          "!in",
          "scalerank",
          0,
          1,
          2,
          3,
          4,
          5
        ],
        [
          "==",
          "type",
          "city"
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "place-city-sm",
      "paint": {
        "text-color": "hsl(0, 0%, 0%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1.25,
        "icon-opacity": {
          "base": 1,
          "stops": [
            [
              7.99,
              1
            ],
            [
              8,
              0
            ]
          ]
        }
      },
      "source-layer": "place_label"
    },
    {
      "layout": {
        "text-field": "{name_en}",
        "icon-image": "dot-10",
        "text-anchor": {
          "base": 1,
          "stops": [
            [
              7,
              "top"
            ],
            [
              8,
              "center"
            ]
          ]
        },
        "text-offset": {
          "base": 1,
          "stops": [
            [
              7.99,
              [
                0,
                0.1
              ]
            ],
            [
              8,
              [
                0,
                0
              ]
            ]
          ]
        },
        "text-font": {
          "base": 1,
          "stops": [
            [
              7,
              [
                "DIN Offc Pro Regular",
                "Arial Unicode MS Regular"
              ]
            ],
            [
              8,
              [
                "DIN Offc Pro Medium",
                "Arial Unicode MS Regular"
              ]
            ]
          ]
        },
        "text-size": {
          "base": 0.9,
          "stops": [
            [
              5,
              12
            ],
            [
              12,
              22
            ]
          ]
        }
      },
      "metadata": {
        "mapbox:group": "1444862510685.128"
      },
      "maxzoom": 14,
      "filter": [
        "all",
        [
          "==",
          "type",
          "city"
        ],
        [
          "in",
          "ldir",
          "E",
          "S",
          "SE",
          "SW"
        ],
        [
          "in",
          "scalerank",
          3,
          4,
          5
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "place-city-md-s",
      "paint": {
        "text-halo-width": 1,
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-color": "hsl(0, 0%, 0%)",
        "text-halo-blur": 1,
        "icon-opacity": {
          "base": 1,
          "stops": [
            [
              7.99,
              1
            ],
            [
              8,
              0
            ]
          ]
        }
      },
      "source-layer": "place_label"
    },
    {
      "layout": {
        "icon-image": "dot-10",
        "text-font": {
          "base": 1,
          "stops": [
            [
              7,
              [
                "DIN Offc Pro Regular",
                "Arial Unicode MS Regular"
              ]
            ],
            [
              8,
              [
                "DIN Offc Pro Medium",
                "Arial Unicode MS Regular"
              ]
            ]
          ]
        },
        "text-offset": {
          "base": 1,
          "stops": [
            [
              7.99,
              [
                0,
                -0.25
              ]
            ],
            [
              8,
              [
                0,
                0
              ]
            ]
          ]
        },
        "text-anchor": {
          "base": 1,
          "stops": [
            [
              7,
              "bottom"
            ],
            [
              8,
              "center"
            ]
          ]
        },
        "text-field": "{name_en}",
        "text-max-width": 7,
        "text-size": {
          "base": 0.9,
          "stops": [
            [
              5,
              12
            ],
            [
              12,
              22
            ]
          ]
        }
      },
      "metadata": {
        "mapbox:group": "1444862510685.128"
      },
      "maxzoom": 14,
      "filter": [
        "all",
        [
          "==",
          "type",
          "city"
        ],
        [
          "in",
          "ldir",
          "N",
          "NE",
          "NW",
          "W"
        ],
        [
          "in",
          "scalerank",
          3,
          4,
          5
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "place-city-md-n",
      "paint": {
        "text-color": "hsl(0, 0%, 0%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1,
        "icon-opacity": {
          "base": 1,
          "stops": [
            [
              7.99,
              1
            ],
            [
              8,
              0
            ]
          ]
        },
        "text-halo-blur": 1
      },
      "source-layer": "place_label"
    },
    {
      "minzoom": 1,
      "layout": {
        "icon-image": "dot-11",
        "text-font": {
          "base": 1,
          "stops": [
            [
              7,
              [
                "DIN Offc Pro Regular",
                "Arial Unicode MS Regular"
              ]
            ],
            [
              8,
              [
                "DIN Offc Pro Medium",
                "Arial Unicode MS Regular"
              ]
            ]
          ]
        },
        "text-offset": {
          "base": 1,
          "stops": [
            [
              7.99,
              [
                0,
                0.15
              ]
            ],
            [
              8,
              [
                0,
                0
              ]
            ]
          ]
        },
        "text-anchor": {
          "base": 1,
          "stops": [
            [
              7,
              "top"
            ],
            [
              8,
              "center"
            ]
          ]
        },
        "text-field": "{name_en}",
        "text-max-width": 7,
        "text-size": {
          "base": 0.9,
          "stops": [
            [
              4,
              12
            ],
            [
              10,
              22
            ]
          ]
        }
      },
      "metadata": {
        "mapbox:group": "1444862510685.128"
      },
      "maxzoom": 14,
      "filter": [
        "all",
        [
          "<=",
          "scalerank",
          2
        ],
        [
          "==",
          "type",
          "city"
        ],
        [
          "in",
          "ldir",
          "E",
          "S",
          "SE",
          "SW"
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "place-city-lg-s",
      "paint": {
        "text-color": "hsl(0, 0%, 0%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1,
        "icon-opacity": {
          "base": 1,
          "stops": [
            [
              7.99,
              1
            ],
            [
              8,
              0
            ]
          ]
        },
        "text-halo-blur": 1
      },
      "source-layer": "place_label"
    },
    {
      "minzoom": 1,
      "layout": {
        "icon-image": "dot-11",
        "text-font": {
          "base": 1,
          "stops": [
            [
              7,
              [
                "DIN Offc Pro Regular",
                "Arial Unicode MS Regular"
              ]
            ],
            [
              8,
              [
                "DIN Offc Pro Medium",
                "Arial Unicode MS Regular"
              ]
            ]
          ]
        },
        "text-offset": {
          "base": 1,
          "stops": [
            [
              7.99,
              [
                0,
                -0.25
              ]
            ],
            [
              8,
              [
                0,
                0
              ]
            ]
          ]
        },
        "text-anchor": {
          "base": 1,
          "stops": [
            [
              7,
              "bottom"
            ],
            [
              8,
              "center"
            ]
          ]
        },
        "text-field": "{name_en}",
        "text-max-width": 7,
        "text-size": {
          "base": 0.9,
          "stops": [
            [
              4,
              12
            ],
            [
              10,
              22
            ]
          ]
        }
      },
      "metadata": {
        "mapbox:group": "1444862510685.128"
      },
      "maxzoom": 14,
      "filter": [
        "all",
        [
          "<=",
          "scalerank",
          2
        ],
        [
          "==",
          "type",
          "city"
        ],
        [
          "in",
          "ldir",
          "N",
          "NE",
          "NW",
          "W"
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "place-city-lg-n",
      "paint": {
        "text-color": "hsl(0, 0%, 0%)",
        "text-opacity": 1,
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1,
        "icon-opacity": {
          "base": 1,
          "stops": [
            [
              7.99,
              1
            ],
            [
              8,
              0
            ]
          ]
        },
        "text-halo-blur": 1
      },
      "source-layer": "place_label"
    },
    {
      "minzoom": 3,
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1,
          "stops": [
            [
              3,
              12
            ],
            [
              6,
              16
            ]
          ]
        },
        "symbol-spacing": {
          "base": 1,
          "stops": [
            [
              4,
              100
            ],
            [
              6,
              400
            ]
          ]
        },
        "text-font": [
          "DIN Offc Pro Italic",
          "Arial Unicode MS Regular"
        ],
        "symbol-placement": "line",
        "text-pitch-alignment": "viewport",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.1,
        "text-max-width": 5
      },
      "metadata": {
        "mapbox:group": "1444856087950.3635"
      },
      "maxzoom": 10,
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          ">=",
          "labelrank",
          4
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "marine-label-sm-ln",
      "paint": {
        "text-color": "hsl(205, 83%, 88%)"
      },
      "source-layer": "marine_label"
    },
    {
      "minzoom": 3,
      "layout": {
        "text-field": "{name_en}",
        "text-max-width": 5,
        "text-letter-spacing": 0.1,
        "text-line-height": 1.5,
        "text-font": [
          "DIN Offc Pro Italic",
          "Arial Unicode MS Regular"
        ],
        "text-size": {
          "base": 1,
          "stops": [
            [
              3,
              12
            ],
            [
              6,
              16
            ]
          ]
        }
      },
      "metadata": {
        "mapbox:group": "1444856087950.3635"
      },
      "maxzoom": 10,
      "filter": [
        "all",
        [
          "==",
          "$type",
          "Point"
        ],
        [
          ">=",
          "labelrank",
          4
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "marine-label-sm-pt",
      "paint": {
        "text-color": "hsl(205, 83%, 88%)"
      },
      "source-layer": "marine_label"
    },
    {
      "minzoom": 2,
      "layout": {
        "text-line-height": 1.1,
        "text-size": {
          "base": 1.1,
          "stops": [
            [
              2,
              12
            ],
            [
              5,
              20
            ]
          ]
        },
        "symbol-spacing": 250,
        "text-font": [
          "DIN Offc Pro Italic",
          "Arial Unicode MS Regular"
        ],
        "symbol-placement": "line",
        "text-pitch-alignment": "viewport",
        "text-field": "{name_en}",
        "text-letter-spacing": 0.15,
        "text-max-width": 5
      },
      "metadata": {
        "mapbox:group": "1444856087950.3635"
      },
      "maxzoom": 8,
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "in",
          "labelrank",
          2,
          3
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "marine-label-md-ln",
      "paint": {
        "text-color": "hsl(205, 83%, 88%)"
      },
      "source-layer": "marine_label"
    },
    {
      "minzoom": 2,
      "layout": {
        "text-field": "{name_en}",
        "text-max-width": 5,
        "text-letter-spacing": 0.15,
        "text-line-height": 1.5,
        "text-font": [
          "DIN Offc Pro Italic",
          "Arial Unicode MS Regular"
        ],
        "text-size": {
          "base": 1.1,
          "stops": [
            [
              2,
              14
            ],
            [
              5,
              20
            ]
          ]
        }
      },
      "metadata": {
        "mapbox:group": "1444856087950.3635"
      },
      "maxzoom": 8,
      "filter": [
        "all",
        [
          "==",
          "$type",
          "Point"
        ],
        [
          "in",
          "labelrank",
          2,
          3
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "marine-label-md-pt",
      "paint": {
        "text-color": "hsl(205, 83%, 88%)"
      },
      "source-layer": "marine_label"
    },
    {
      "minzoom": 1,
      "layout": {
        "text-field": "{name_en}",
        "text-max-width": 4,
        "text-letter-spacing": 0.25,
        "text-line-height": 1.1,
        "symbol-placement": "line",
        "text-pitch-alignment": "viewport",
        "text-font": [
          "DIN Offc Pro Italic",
          "Arial Unicode MS Regular"
        ],
        "text-size": {
          "base": 1,
          "stops": [
            [
              1,
              14
            ],
            [
              4,
              30
            ]
          ]
        }
      },
      "metadata": {
        "mapbox:group": "1444856087950.3635"
      },
      "maxzoom": 4,
      "filter": [
        "all",
        [
          "==",
          "$type",
          "LineString"
        ],
        [
          "==",
          "labelrank",
          1
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "marine-label-lg-ln",
      "paint": {
        "text-color": "hsl(205, 83%, 88%)"
      },
      "source-layer": "marine_label"
    },
    {
      "minzoom": 1,
      "layout": {
        "text-field": "{name_en}",
        "text-max-width": 4,
        "text-letter-spacing": 0.25,
        "text-line-height": 1.5,
        "text-font": [
          "DIN Offc Pro Italic",
          "Arial Unicode MS Regular"
        ],
        "text-size": {
          "base": 1,
          "stops": [
            [
              1,
              14
            ],
            [
              4,
              30
            ]
          ]
        }
      },
      "metadata": {
        "mapbox:group": "1444856087950.3635"
      },
      "maxzoom": 4,
      "filter": [
        "all",
        [
          "==",
          "$type",
          "Point"
        ],
        [
          "==",
          "labelrank",
          1
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "marine-label-lg-pt",
      "paint": {
        "text-color": "hsl(205, 83%, 88%)"
      },
      "source-layer": "marine_label"
    },
    {
      "minzoom": 3,
      "layout": {
        "text-size": {
          "base": 1,
          "stops": [
            [
              6,
              10
            ],
            [
              9,
              14
            ]
          ]
        },
        "text-transform": "uppercase",
        "text-font": [
          "DIN Offc Pro Bold",
          "Arial Unicode MS Bold"
        ],
        "text-field": {
          "base": 1,
          "stops": [
            [
              0,
              "{abbr}"
            ],
            [
              6,
              "{name_en}"
            ]
          ]
        },
        "text-letter-spacing": 0.15,
        "text-max-width": 5
      },
      "metadata": {
        "mapbox:group": "1444856151690.9143"
      },
      "maxzoom": 9,
      "filter": [
        "<",
        "area",
        20000
      ],
      "type": "symbol",
      "source": "composite",
      "id": "state-label-sm",
      "paint": {
        "text-opacity": 1,
        "text-color": "hsl(0, 0%, 0%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1
      },
      "source-layer": "state_label"
    },
    {
      "minzoom": 3,
      "layout": {
        "text-size": {
          "base": 1,
          "stops": [
            [
              5,
              10
            ],
            [
              8,
              16
            ]
          ]
        },
        "text-transform": "uppercase",
        "text-font": [
          "DIN Offc Pro Bold",
          "Arial Unicode MS Bold"
        ],
        "text-field": {
          "base": 1,
          "stops": [
            [
              0,
              "{abbr}"
            ],
            [
              5,
              "{name_en}"
            ]
          ]
        },
        "text-letter-spacing": 0.15,
        "text-max-width": 6
      },
      "metadata": {
        "mapbox:group": "1444856151690.9143"
      },
      "maxzoom": 8,
      "filter": [
        "all",
        [
          "<",
          "area",
          80000
        ],
        [
          ">=",
          "area",
          20000
        ]
      ],
      "type": "symbol",
      "source": "composite",
      "id": "state-label-md",
      "paint": {
        "text-opacity": 1,
        "text-color": "hsl(0, 0%, 0%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1
      },
      "source-layer": "state_label"
    },
    {
      "minzoom": 3,
      "layout": {
        "text-size": {
          "base": 1,
          "stops": [
            [
              4,
              10
            ],
            [
              7,
              18
            ]
          ]
        },
        "text-transform": "uppercase",
        "text-font": [
          "DIN Offc Pro Bold",
          "Arial Unicode MS Bold"
        ],
        "text-padding": 1,
        "text-field": {
          "base": 1,
          "stops": [
            [
              0,
              "{abbr}"
            ],
            [
              4,
              "{name_en}"
            ]
          ]
        },
        "text-letter-spacing": 0.15,
        "text-max-width": 6
      },
      "metadata": {
        "mapbox:group": "1444856151690.9143"
      },
      "maxzoom": 7,
      "filter": [
        ">=",
        "area",
        80000
      ],
      "type": "symbol",
      "source": "composite",
      "id": "state-label-lg",
      "paint": {
        "text-opacity": 1,
        "text-color": "hsl(0, 0%, 0%)",
        "text-halo-color": "hsl(0, 0%, 100%)",
        "text-halo-width": 1
      },
      "source-layer": "state_label"
    },
    {
      "minzoom": 1,
      "layout": {
        "text-field": "{name_en}",
        "text-max-width": 6,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-size": {
          "base": 0.9,
          "stops": [
            [
              5,
              14
            ],
            [
              9,
              22
            ]
          ]
        }
      },
      "metadata": {
        "mapbox:group": "1444856144497.7825"
      },
      "maxzoom": 10,
      "filter": [
        ">=",
        "scalerank",
        5
      ],
      "type": "symbol",
      "source": "composite",
      "id": "country-label-sm",
      "paint": {
        "text-color": "hsl(0, 0%, 0%)",
        "text-halo-color": {
          "base": 1,
          "stops": [
            [
              2,
              "rgba(255,255,255,0.75)"
            ],
            [
              3,
              "hsl(0, 0%, 100%)"
            ]
          ]
        },
        "text-halo-width": 1.25
      },
      "source-layer": "country_label"
    },
    {
      "minzoom": 1,
      "layout": {
        "text-field": {
          "base": 1,
          "stops": [
            [
              0,
              "{code}"
            ],
            [
              2,
              "{name_en}"
            ]
          ]
        },
        "text-max-width": 6,
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-size": {
          "base": 1,
          "stops": [
            [
              3,
              10
            ],
            [
              8,
              24
            ]
          ]
        }
      },
      "metadata": {
        "mapbox:group": "1444856144497.7825"
      },
      "maxzoom": 8,
      "filter": [
        "in",
        "scalerank",
        3,
        4
      ],
      "type": "symbol",
      "source": "composite",
      "id": "country-label-md",
      "paint": {
        "text-color": "hsl(0, 0%, 0%)",
        "text-halo-color": {
          "base": 1,
          "stops": [
            [
              2,
              "rgba(255,255,255,0.75)"
            ],
            [
              3,
              "hsl(0, 0%, 100%)"
            ]
          ]
        },
        "text-halo-width": 1.25
      },
      "source-layer": "country_label"
    },
    {
      "minzoom": 1,
      "layout": {
        "text-field": "{name_en}",
        "text-max-width": {
          "base": 1,
          "stops": [
            [
              0,
              5
            ],
            [
              3,
              6
            ]
          ]
        },
        "text-font": [
          "DIN Offc Pro Medium",
          "Arial Unicode MS Regular"
        ],
        "text-size": {
          "base": 1,
          "stops": [
            [
              1,
              10
            ],
            [
              6,
              24
            ]
          ]
        }
      },
      "metadata": {
        "mapbox:group": "1444856144497.7825"
      },
      "maxzoom": 7,
      "filter": [
        "in",
        "scalerank",
        1,
        2
      ],
      "type": "symbol",
      "source": "composite",
      "id": "country-label-lg",
      "paint": {
        "text-color": "hsl(0, 0%, 0%)",
        "text-halo-color": {
          "base": 1,
          "stops": [
            [
              2,
              "rgba(255,255,255,0.75)"
            ],
            [
              3,
              "hsl(0, 0%, 100%)"
            ]
          ]
        },
        "text-halo-width": 1.25
      },
      "source-layer": "country_label"
    }
  ],
  "created": "2017-12-06T01:25:36.064Z",
  "id": "cjaudgl840gn32rnrepcb9b9g",
  "modified": "2017-12-06T01:27:38.807Z",
  "owner": "mapbox",
  "visibility": "public",
  "draft": false
}

  

转载于:https://www.cnblogs.com/lilei2blog/p/9050402.html

HTTP/1.1 200 Server: nginx Date: Sun, 02 Jan 2000 07:51:17 GMT Content-Type: application/json Transfer-Encoding: chunked Connection: keep-alive Content-Security-Policy: default-src 'self' https://*.tplinkcloud.com/;script-src 'self' 'unsafe-eval' 'sha256-7W9UiBaYGlOHpT1aQBLegqffUVHbYq6/ZAb+ErjUb40=' 'sha256-VGQ8jNTL2g0e8wPwOgyCQJDqhuRgfV7gRYexcBkBe4Y=' 'sha256-x2jgB1zBLi30IsfY+VNgWjwBGeHPJxOSrzl+IdsT6k0=' 'sha256-0AHZXO4clnpdcxqdmASPBEp4JCIrtaxIX/mUuL1kzZw=' 'sha256-lfXlPY3+MCPOPb4mrw1Y961+745U3WlDQVcOXdchSQc=';style-src 'self' 'unsafe-inline';connect-src 'self' https://*.tplinkcloud.com/ https://*.tplinkcloud.com:8843/ wss://*.tplinkcloud.com/ https://*.tiles.mapbox.com https://api.mapbox.com https://events.mapbox.com ;frame-src 'self' data:;img-src 'self' https://*.tplinkcloud.com/ https://*.mzstatic.com/ https://play-lh.googleusercontent.com/ data: blob:;child-src blob: ;worker-src blob: ;media-src 'self' https://*.tplinkcloud.com/ data: blob:;object-src 'self' data: blob: Referrer-Policy: no-referrer Strict-Transport-Security: max-age=15552000; includeSubDomains X-Content-Type-Options: nosniff X-DNS-Prefetch-Control: off X-Frame-Options: SAMEORIGIN X-XSS-Protection: 1; mode=block X-Robots-Tag: noindex 124 {"errorCode":0,"msg":"Success.","result":{"controllerVer":"6.0.0.400","apiVer":"3","configured":false,"type":18,"supportApp":true,"omadacId":"bccc8875e205be4452b35a010558b3f7","registeredRoot":false,"omadacCategory":"advanced","mspMode":false,"omadaCloudUrl":"https://omada.tplinkcloud.com"}} 0 怎么把这种格式的响应的响应体解析出来
最新发布
07-25
<think>我们已知HTTP响应报文中包含Transfer-Encoding: chunked,这意味着响应体是分块传输的。分块传输的格式如下: 每个块由两部分组成:块大小(十六进制数字)和块数据,块大小和块数据之间用\r\n分隔,块数据后面也跟一个\r\n。最后以一个大小为0的块表示结束,即0\r\n\r\n。 根据用户提供的示例,我们假设响应报文的格式如下(注意:响应头之后是一个空行,然后是分块数据): ``` HTTP/1.1 200 OK Server: nginx Transfer-Encoding: chunked 7\r\n Kotlin \r\n 6\r\n Rocks!\r\n 0\r\n\r\n ``` 解析步骤: 1. 首先读取响应头,直到遇到空行(即连续的两个\r\n),表示头结束。 2. 然后读取分块数据部分: a. 读取一行(以\r\n结束),这行是块大小(十六进制字符串)。 b. 将十六进制字符串转换为整数,如果为0,则结束。 c. 读取指定长度的数据(注意:读取的长度就是块大小,读取后还要再读两个字节(\r\n)来跳过块结束符,但也可以按行读取,因为每个块数据后面都有一个\r\n)。 3. 重复直到遇到0大小的块。 注意:在分块传输结束后,可能会有尾部头域(Trailer Headers),但大多数情况下没有。如果有,则需要在0\r\n之后读取这些头域,直到遇到一个空行。 由于用户要求用Kotlin解析,我们假设已经读取到了响应体(即去掉了响应头的部分),现在只需要解析这个分块数据。 但是,如果用户提供的是完整的响应报文(包括响应头),我们需要先跳过响应头。 以下是一个完整的解析函数,它接收一个包含完整HTTP响应的字符串,并解析出内容: 步骤: 1. 将整个响应按空行拆分为响应头和响应体(注意:响应头结束是连续的两个换行,即\r\n\r\n)。 2. 解析响应体(分块数据部分)。 注意:实际中,我们可能从Socket输入流中读取,所以这里提供两种方式:一种是直接处理字符串(如果整个响应已经在一个字符串中),另一种是从输入流中读取(更常见)。 由于用户提到“报文是完整的”,我们可以按字符串处理,但更通用的方式是从输入流中读取。 这里我们提供从输入流读取的版本(因为字符串版本可以类似处理,但输入流更接近实际网络请求)。 但注意:用户示例中给出的响应报文是文本形式,实际上在流中读取时,我们按字节读取,但块大小行是文本行,块数据可以是二进制数据。 因此,我们使用BufferedReader来读取行(块大小行和块数据后面的换行符),但块数据本身可能是二进制,所以不能按行读取块数据(因为可能包含换行符)。所以,我们按以下步骤: 1. 读取响应头:读取直到遇到空行(即连续两个\r\n)。 2. 然后按分块格式读取: - 读取一行(使用BufferedReader的readLine),这一行是块大小(十六进制字符串)。 - 将块大小转换为整数(十六进制)。 - 如果块大小为0,则跳出循环。 - 然后读取这个块大小的字节数(注意:这里不能用readLine,因为数据可能是任意二进制,且可能包含换行符)。 - 然后读取两个字节(即\r\n),但注意:readLine已经去除了行尾的\r\n,所以我们在读取块大小行后,接下来读取指定长度的字节,然后读取两个字节(但这两个字节实际上是下一个块大小行的前两个字符?不,实际上,在块数据后面有一个\r\n,但我们在读取块数据时,并没有将其作为数据,而是作为分隔符。因此,在读取完指定长度的块数据后,我们需要再读取两个字节(\r\n)来跳过它们。但是,如果我们使用BufferedReader,那么读取行时已经处理了\r\n,但读取块数据时,我们按字节读取,所以需要自己处理。 然而,这里有一个问题:BufferedReader会处理换行符,所以当我们读取块数据时,如果按字符读取,可能会因为编码问题导致读取的字节数不正确。因此,我们建议使用DataInputStream按字节读取。 但是,为了简单起见,我们假设响应体是文本,并且我们使用BufferedReader。但是注意:块数据可能包含任意字节,所以正确的方式是使用原始输入流读取块数据,而块大小行使用BufferedReader包装同一输入流来读取。这会导致混合读取的问题,因此我们可以这样: 方案1:使用BufferedInputStream,先读取一行(按\r\n分割)得到块大小,然后读取指定长度的字节,然后读取两个字节(\r\n)并丢弃。 方案2:使用BufferedReader,但块数据部分按字符读取,这要求我们知道块大小(字符数),但注意:一个字符可能由多个字节表示,所以如果响应是二进制数据,这种方法会出错。因此,我们假设响应体是文本,并且使用相同的字符编码(如UTF-8)。 由于用户没有明确说明,我们假设响应体是文本,并且使用UTF-8编码。 但是,在HTTP响应头中通常有Content-Type,其中可能包含charset,如果没有,则默认为ISO-8859-1,但实际中UTF-8更常见。为了通用,我们应该从响应头中获取编码,但这里我们简化,假设为UTF-8。 因此,我们提供一个使用BufferedReader的版本(适用于文本内容)和一个使用DataInputStream的版本(适用于二进制内容)。 这里我们提供BufferedReader版本(因为简单,且用户问题没有明确是二进制数据)。 步骤: 1. 创建一个BufferedReader包装输入流。 2. 读取响应头直到空行(即读取到空行时停止)。 3. 然后循环: - 读取一行(块大小行),去掉可能的空格等。 - 解析块大小(十六进制字符串转整数)。 - 如果块大小为0,则跳出循环。 - 然后读取一个字符数组(长度为块大小),并追加到结果中。 - 然后读取两个字符(即\r\n,但注意:readLine已经去除了行尾的换行符,所以块数据后面的换行符需要单独读取?实际上,在读取块数据时,我们按字符读取指定数量,然后后面紧跟着的\r\n,我们可以用readLine来跳过(因为块数据后面就是换行,我们读取一行(空行)?不对,因为块数据后面没有换行符,而是有一个换行符在块大小行之后,块数据之后又有一个换行符?实际上,分块格式是: [块大小]\r\n [块数据]\r\n 所以,在读取块大小行(readLine)后,我们读取块数据(指定长度),然后后面应该有一个\r\n,我们可以读取两个字节,或者用readLine读取一个空行?不对,块数据后面是一个换行符,这个换行符不是块数据的一部分,所以我们需要跳过它。但是,如果我们已经按块大小读取了指定长度的字符,那么接下来的两个字符就是\r\n。我们可以读取这两个字符并丢弃。 然而,BufferedReader的readLine在读取块大小行时,已经将后面的换行符去掉了,然后我们读取块数据(指定长度),然后接下来是两个字符(\r\n),我们可以用: reader.read() // 读取\r reader.read() // 读取\n 或者直接读取两个字符。 但是,这样效率低,而且可能出错(如果中间有额外的空格?)。所以,我们可以用readLine来读取块数据后面的换行?但是,块数据后面没有行,它只有两个字节。实际上,在块数据后面,我们期望有一个换行符,但readLine会等待一行,所以我们可以读取一行,但这一行应该是空字符串?不对,因为块数据后面没有文本行,只有换行符。所以,我们可以在读取块数据后,读取两个字符并检查是否为\r\n。 但是,为了简单,我们可以在读取块大小行后,直接读取指定长度的字符,然后读取两个字符(丢弃)来跳过\r\n。 但是,注意:块数据可能是二进制,但我们这里假设是文本,所以按字符读取。 因此,我们给出以下代码(假设输入流是文本,且编码为UTF-8): 注意:这个函数会跳过响应头,然后解析分块数据,并返回字符串。 如果响应头中没有Transfer-Encoding: chunked,那么不应该用这个函数解析。 代码实现: ```kotlin import java.io.BufferedReader import java.io.InputStream import java.io.InputStreamReader fun parseHttpResponseWithChunkedEncoding(inputStream: InputStream): String { val reader = BufferedReader(InputStreamReader(inputStream, "UTF-8")) // 1. 读取响应头直到空行 var line: String? do { line = reader.readLine() } while (line != null && line.isNotEmpty()) // 空行表示响应头结束,因为空行对应一个长度为0的字符串 // 2. 解析分块数据 val content = StringBuilder() while (true) { // 读取块大小行 val chunkSizeLine = reader.readLine() ?: break // 如果为null,表示流结束,但按照规范,应该遇到0块才结束 // 解析块大小(十六进制) val chunkSize = chunkSizeLine.trim().toIntOrNull(16) ?: 0 if (chunkSize <= 0) { // 块大小为0,表示结束,但后面可能还有尾部头域,我们这里忽略尾部头域 break } // 读取块数据:读取chunkSize个字符 val buffer = CharArray(chunkSize) var totalRead = 0 while (totalRead < chunkSize) { val readCount = reader.read(buffer, totalRead, chunkSize - totalRead) if (readCount == -1) { break } totalRead += readCount } content.append(buffer, 0, totalRead) // 读取块数据后面的\r\n(两个字符) // 注意:readLine已经不能用了,因为我们要读取两个字符,而readLine会读取一行(直到换行) // 所以我们用read()逐个字符读取,读取两个字符 reader.read() // 读取\r reader.read() // 读取\n } return content.toString() } ``` 但是,上述代码在读取块数据后面的\r\n时,假设了每个块后面都有\r\n,但是当块数据读取后,输入流的下两个字符就是\r\n。然而,如果流结束或者出现错误,可能会出错。另外,如果块数据后面没有紧跟着的\r\n,那么解析就会出错。 另一种方法是:在读取块大小行时,我们使用readLine,它已经跳过了行尾的\r\n。然后读取块数据(指定长度)后,再读取一行,这一行应该为空(因为块数据后面就是换行符,然后下一个块大小行)。但是,在读取块数据后,输入流的位置正好在块数据后面的\r\n之前,我们读取一行,会得到一个空字符串?不对,因为块数据后面没有内容,只有换行符,所以读取一行会得到一个空字符串?实际上,在块数据后面是一个换行符,所以readLine会返回空字符串(因为两个字符\r\n表示一行结束,而这一行没有内容)。 所以,我们可以这样修改: 在读取块数据后,我们读取一行,这一行应该是空行(即长度为0的字符串),表示块数据结束。但实际上,在分块格式中,每个块数据后面都有一个换行符,这个换行符是块结束符,它不属于块数据。所以,我们可以读取一行,并期望它是空行。但是,根据规范,块数据后面就是换行符,所以读取一行应该得到空字符串。但是,如果块数据后面没有换行符,那么读取一行会得到下一块的大小行?这显然是错误的。 因此,我们可以在读取块数据后,读取一行,并检查其长度是否为0,如果不是0,则说明格式错误(或者它是下一个块的大小行,但此时我们还没有读取下一个块的大小行,所以不应该出现非空行)。 修改后的代码: ```kotlin fun parseHttpResponseWithChunkedEncoding(inputStream: InputStream): String { val reader = BufferedReader(InputStreamReader(inputStream, "UTF-8")) // 读取响应头直到空行 while (true) { val line = reader.readLine() if (line == null || line.isEmpty()) { break } } val content = StringBuilder() while (true) { val chunkSizeLine = reader.readLine() ?: break val chunkSize = chunkSizeLine.trim().toIntOrNull(16) ?: 0 if (chunkSize <= 0) { break } // 读取块数据 val buffer = CharArray(chunkSize) var totalRead = 0 while (totalRead < chunkSize) { val readCount = reader.read(buffer, totalRead, chunkSize - totalRead) if (readCount == -1) { break } totalRead += readCount } content.append(buffer, 0, totalRead) // 读取块数据后面的换行符(即一个空行?不,它只是一个换行符,所以读取一行会得到一个空字符串) val endOfChunk = reader.readLine() // 这里endOfChunk应该是空字符串,因为块数据后面是\r\n,readLine会返回空字符串(因为两个字符之间没有内容) // 但实际上,readLine在读取到\r\n时,会返回一个空字符串?是的。 // 但我们也可以不检查,因为如果格式正确,它一定是空字符串。 // 如果格式不正确,我们可能读取到下一块的大小行,但那样就会导致解析错误。 } return content.toString() } ``` 但是,注意:在最后一个块(0块)后面可能还有尾部头域,我们这里直接忽略了。 另外,如果块数据读取后,读取一行得到的是空字符串,那么它消耗了两个字符(\r\n),然后下一个循环读取块大小行。 这个版本更简洁。 但是,如果块数据很大,我们可能不想用字符数组,而是直接处理字节?因为字符数组在转换时可能会涉及编码问题。所以,如果响应是二进制数据,我们应该使用字节流。 因此,我们提供一个字节流版本: ```kotlin import java.io.ByteArrayOutputStream import java.io.InputStream fun parseHttpResponseWithChunkedEncodingUsingBytes(inputStream: InputStream): ByteArray { // 先读取响应头,直到遇到空行(\r\n\r\n) // 注意:这里我们按字节读取,直到连续读取到\r\n\r\n val headerEnd = "\r\n\r\n".toByteArray() var matchIndex = 0 while (matchIndex < headerEnd.size) { val b = inputStream.read() if (b == -1) { throw Exception("Unexpected end of stream") } if (b.toByte() == headerEnd[matchIndex]) { matchIndex++ } else { matchIndex = 0 } } val output = ByteArrayOutputStream() while (true) { // 读取块大小行:直到遇到\r\n val chunkSizeLine = readLine(inputStream) ?: break val chunkSize = chunkSizeLine.trim().toIntOrNull(16) ?: 0 if (chunkSize <= 0) { break } // 读取块数据 val buffer = ByteArray(chunkSize) var totalRead = 0 while (totalRead < chunkSize) { val readCount = inputStream.read(buffer, totalRead, chunkSize - totalRead) if (readCount == -1) { break } totalRead += readCount } output.write(buffer, 0, totalRead) // 读取块数据后面的\r\n readLine(inputStream) // 读取并丢弃,应该是空行(但这里我们读取的是一行,实际上块数据后面是\r\n,所以读取一行会得到一个空字符串?不,readLine函数会读取到\r\n并丢弃,然后返回空字符串?) } return output.toByteArray() } // 从输入流中读取一行(以\r\n为结束),返回字符串(不包括换行符) fun readLine(inputStream: InputStream): String? { val bytes = ByteArrayOutputStream() var prevByte = -1 while (true) { val b = inputStream.read() if (b == -1) { return if (bytes.size() > 0) bytes.toString() else null } if (b == '\n'.toInt() && prevByte == '\r'.toInt()) { // 移除已经写入的\r val data = bytes.toByteArray() bytes.reset() bytes.write(data, 0, data.size - 1) // 去掉最后一个\r break } bytes.write(b) prevByte = b } return bytes.toString("ISO-8859-1") // 因为头信息是ASCII,所以用ISO-8859-1 } ``` 注意:这个字节流版本中,我们自定义了readLine函数,它按字节读取一行(以\r\n结尾),并返回字符串(使用ISO-8859-1编码,因为块大小行是ASCII字符)。然后,我们读取块大小行,解析出块大小,再读取指定长度的字节,然后读取下一行(即块数据后面的换行符,返回空字符串,但我们直接丢弃)。 这个版本可以处理二进制数据。 总结:如果响应体是文本,使用BufferedReader版本;如果是二进制,使用字节流版本。 但是,用户没有明确是文本还是二进制,我们可以提供两种方案,或者根据Content-Type头判断。但用户问题只要求解析分块数据,所以我们提供通用的字节流版本。 最后,我们使用字节流版本来解析,因为它更通用。 但是,用户问题中给出的响应报文示例是文本,所以我们也可以提供BufferedReader版本供选择。 由于时间关系,我们提供两个版本,并说明适用场景。 注意:在解析响应头时,我们跳过了所有头域,但实际中,我们可能需要检查Transfer-Encoding头域的值是否为chunked。这里假设已经是chunked。 另外,如果响应头中同时有Content-Length,则不能使用分块解析,但按照规范,如果存在Transfer-Encoding: chunked,则Content-Length必须被忽略。 因此,我们提供的函数应该只用于Transfer-Encoding: chunked的情况。 最后,我们给出一个使用示例(假设从Socket获得输入流): ```kotlin val inputStream: InputStream = socket.getInputStream() val content = parseHttpResponseWithChunkedEncodingUsingBytes(inputStream) // 如果知道是文本,可以转换为字符串 val text = String(content, Charsets.UTF_8) ``` 或者使用文本版本: ```kotlin val inputStream: InputStream = socket.getInputStream() val text = parseHttpResponseWithChunkedEncoding(inputStream) // 使用BufferedReader版本 ``` 根据实际情况选择。 以上是解析Transfer-Encoding: chunked的HTTP响应体的方法。 注意:在实际应用中,推荐使用成熟的HTTP客户端库(如OkHttp、HttpClient等),它们已经处理了分块传输和编码问题。 相关问题: 1. 如何处理分块传输中的尾部头域? 2. 如果分块数据中包含扩展块大小(如分块大小后跟分块扩展)怎么办? 3. 如何用Kotlin实现一个支持分块传输的HTTP服务器? 4. 分块传输编码在HTTP/2中是否仍然适用? 5. 如果响应头中没有Transfer-Encoding: chunked,但响应体是分块格式,该如何处理? 希望这些对你有帮助。</think>### Kotlin 解析 Transfer-Encoding: chunked HTTP 响应报文 在 HTTP 协议中,当响应头包含 `Transfer-Encoding: chunked` 时,表示响应体使用分块传输编码。这种格式允许服务器在未知内容长度时逐块发送数据[^1]。以下是完整的解析方法和示例代码: #### 分块传输格式解析 分块数据格式规范: ``` <16进制块大小>\r\n <块数据>\r\n 0\r\n\r\n // 结束标志 ``` 示例响应报文: ```http HTTP/1.1 200 OK Server: nginx Transfer-Encoding: chunked Content-Type: text/plain 7\r\n Kotlin \r\n 6\r\n Rocks!\r\n 0\r\n \r\n ``` #### 解析步骤 1. **跳过响应头**:读取输入流直到遇到空行 `\r\n\r\n` 2. **读取分块数据**: - 读取块大小行(十六进制) - 将十六进制转换为整数 - 读取指定长度的块数据 - 跳过块结束符 `\r\n` 3. **处理结束标志**:遇到 `0\r\n\r\n` 时停止解析 #### Kotlin 实现代码 ```kotlin import java.io.InputStream import java.nio.charset.Charset fun parseChunkedResponse(inputStream: InputStream): String { val reader = inputStream.bufferedReader() val content = StringBuilder() // 1. 跳过HTTP响应头 while (true) { val line = reader.readLine() if (line.isNullOrEmpty()) break // 遇到空行结束头部 } // 2. 解析分块数据 while (true) { // 读取块大小行 val chunkSizeLine = reader.readLine()?.trim() ?: break val chunkSize = chunkSizeLine.toIntOrNull(16) ?: 0 // 检查结束标志 if (chunkSize <= 0) { reader.readLine() // 跳过最后的空行 break } // 读取块数据 val buffer = CharArray(chunkSize) reader.read(buffer, 0, chunkSize) content.append(buffer) // 跳过块结束符 reader.skip(2) // 跳过 \r\n } return content.toString() } // 使用示例 fun main() { val response = """ HTTP/1.1 200 OK Server: nginx Transfer-Encoding: chunked Content-Type: text/plain 7\r\n Kotlin \r\n 6\r\n Rocks!\r\n 0\r\n \r\n """.trimIndent().byteInputStream(Charsets.UTF_8) println(parseChunkedResponse(response)) // 输出: Kotlin Rocks! } ``` #### 关键处理细节 1. **十六进制转换**:使用 `toInt(16)` 转换块大小 ```kotlin "1F".toInt(16) // 十六进制转十进制 = 31 ``` 2. **块结束符处理**:每个块后的 `\r\n` 必须跳过 3. **编码处理**:根据 `Content-Type` 头处理字符编码 ```kotlin // 获取实际编码 val charset = response.headers["Content-Type"] ?.split("charset=")?.lastOrNull() ?.let { Charset.forName(it) } ?: Charsets.UTF_8 ``` 4. **大文件优化**:使用缓冲处理大文件 ```kotlin val buffer = ByteArray(8192) while (totalRead < chunkSize) { val read = inputStream.read(buffer, 0, min(buffer.size, chunkSize - totalRead)) // 处理数据... } ``` #### 推荐方案:使用 OkHttp 库 ```kotlin import okhttp3.OkHttpClient import okhttp3.Request fun fetchChunkedData(url: String): String { val client = OkHttpClient() val request = Request.Builder().url(url).build() client.newCall(request).execute().use { response -> if (!response.isSuccessful) throw Exception("请求失败") return response.body?.string() ?: "" // 自动处理分块解码 } } ``` > **注意**:分块传输编码在 HTTP/1.1 中用于动态内容传输,HTTP/2 使用帧传输机制替代[^1]。实际开发中推荐使用成熟的 HTTP 客户端库(如 OkHttp)自动处理分块解码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值