diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..08d8481 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,9 @@ +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +insert_final_newline = true +trim_trailing_whitespace = true diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..6a9cce4 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,14 @@ +changelog: + exclude: + labels: + - ignore-for-release + categories: + - title: Breaking Changes 🛠 + labels: + - breaking-change + - title: Exciting New Features 🎉 + labels: + - enhancement + - title: Other Changes + labels: + - '*' diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 0000000..e8e7848 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,26 @@ +name: Build + +on: + push: + branches: + - 'master' + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + + - name: Convert the YAML to GeoJSON + run: | + cd $GITHUB_WORKSPACE + npm install + npm run build + + - name: Deploy + uses: JamesIves/github-pages-deploy-action@4.1.1 + with: + branch: 'gh-pages' + folder: './docs/' + target-folder: './' diff --git a/.github/workflows/pr.yml b/.github/workflows/pr.yml new file mode 100644 index 0000000..82624c2 --- /dev/null +++ b/.github/workflows/pr.yml @@ -0,0 +1,26 @@ +name: pr + +on: + pull_request: + +jobs: + build: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Run tests + run: | + cd $GITHUB_WORKSPACE + npm install + npm run build + + - name: Action step + uses: geolonia/map-render-benchmark@refs/heads/main + with: + style: docs/style.json + center: 139.7671773,35.6810755 + zooms: 5,7,11,14 + production_style: https://geoloniamaps.github.io/gsi/style.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..b512c09 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules \ No newline at end of file diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md new file mode 100644 index 0000000..5373b8b --- /dev/null +++ b/README.md @@ -0,0 +1,38 @@ +# GSI + +このリポジトリは、Geolonia の [GSI スタイル](https://geoloniamaps.github.io/gsi) (国土地理院と OpenStreetMap ベース)をカスタマイズし公開するためのテンプレートリポジトリです。 + +以下のような簡単な手順でお好みのスタイルにカスタマイズし、地図として表示できます。 + +* [DEMO](https://geoloniamaps.github.io/gsi) +* [DEMO on editor](https://editor.geolonia.com/?style=https://geoloniamaps.github.io/gsi/style.json) + +## ユーザーがカスタマイズする際の手順 + +* [Use this template](https://github.com/geoloniamaps/gsi/generate) ボタンでこのリポジトリをコピー。 +* GitHub Pages を 設定。 +* `style.yml` を編集。 +* しばらくすると `gh-pages` ブランチに `style.json` がコミットされるので、Geolonia Maps で表示する場合は、その URL を以下のように指定してください。 + +``` +
+``` + + +## GitHub Pages の設定方法 + +* GitHub のリポジトリのメニューの中にある [Settings] をクリックしてください。 +* 移動先のページの下の方にある [GitHub Pages] のところで、以下のように設定してください。 + +![](https://www.evernote.com/l/ABXqA26fEitDNZG6KDxX-Os6Qb8gciGRKSYB/image.png) + + +## 色のカスタマイズ + +[style.yml](./style.yml) を開いて下さい。 以下をお好きな色のカラーコードに変更しコミットして下さい。 + +``` +$background: rgba(254, 254, 254, 1) + +# カスタマイズここまで +``` diff --git a/bin/dev-server.js b/bin/dev-server.js new file mode 100644 index 0000000..959dfc4 --- /dev/null +++ b/bin/dev-server.js @@ -0,0 +1,43 @@ +const http = require('http'); +const path = require('path'); +const fs = require('fs'); +const url = require('url'); + +const server = http.createServer(function (req, res) { + // parse URL + let parsedUrl = url.parse(req.url); + + // extract URL path + let pathname = path.join(__dirname, '../docs', parsedUrl.pathname); + // based on the URL path, extract the file extension. e.g. .js, .doc, ... + const ext = path.parse(pathname).ext; + // maps file extension to MIME typere + const map = { + '.html': 'text/html', + '.json': 'application/json', + '.png': 'image/png', + }; + + fs.stat(pathname, function (error, stats) { + if(error) { + // if the file is not found, return 404 + res.statusCode = 404; + res.end(`File ${pathname} not found!`); + return; + } + + // read file from file system + fs.readFile(pathname, function(err, data){ + if(err){ + res.statusCode = 500; + res.end(`Error getting the file: ${err}.`); + } else { + // if the file is found, set Content-type and send data + res.setHeader('Content-type', map[ext] || 'text/plain' ); + res.end(data); + } + }); + }); +}) + +module.exports = server; diff --git a/bin/style-render-time.js b/bin/style-render-time.js new file mode 100644 index 0000000..aa9e4a6 --- /dev/null +++ b/bin/style-render-time.js @@ -0,0 +1,121 @@ +const puppeteer = require('puppeteer'); +const httpClose = require('http-close') +const server = require('./dev-server'); +const fs = require('fs'); +const path = require('path'); +const fetch = require('node-fetch'); + +const port = 9999 +const threshold = 2000; + +const fetchLatestStyle = async () => { + const response = await fetch('https://geoloniamaps.github.io/basic/style.json'); + const text = await response.text(); + const style = JSON.parse(text); + + fs.writeFileSync(path.join(__dirname, '../docs/style.json'), JSON.stringify(style)); +} + +const getMapRenderTime = async (zoom, center) => { + + const browser = await puppeteer.launch(); + const page = await browser.newPage(); + + const lng = center[0]; + const lat = center[1]; + + await page.goto(`http://localhost:${port}/index.html#${zoom}/${lat}/${lng}`); + await page.waitForSelector('.loading-geolonia-map', { hidden: true }); + + const mapRenderTime = await page.evaluate(() => { + return mapRenderedTime; + }) + + await browser.close(); + + return mapRenderTime; +} + +const getAverageMapRenderTime = async (zoom, center) => { + + const mapRenderedTimes = []; + + // 5回のレンダリング時間の平均を取得 + for (let i = 0; i < 5; i++) { + const mapRenderedTime = await getMapRenderTime(zoom, center); + mapRenderedTimes.push(mapRenderedTime); + } + + // get average map render time + const average = mapRenderedTimes.reduce((a, b) => a + b, 0) / mapRenderedTimes.length; + // get min max map render time + const min = Math.min(...mapRenderedTimes); + const max = Math.max(...mapRenderedTimes); + + return { + average: Math.round(average), + min: Math.round(min), + max: Math.round(max) + } +}; + +const getMapRenderTimeDiff = async (zoom, center) => { + + const mapRenderedTime = await getAverageMapRenderTime(zoom, center); + + // fetch style.json at master branch + fetchLatestStyle(); + const mapRenderedTimeProd = await getAverageMapRenderTime(zoom, center); + + return { + diff: mapRenderedTime.average - mapRenderedTimeProd.average, + average: mapRenderedTime.average, + averageProd: mapRenderedTimeProd.average, + } + +} + +const getMapRenderTimeByZoom = async () => { + + server.listen(port, async () => { + + const center = [139.7671773, 35.6810755]; + const zoomList = [ 5, 7, 11, 14 ] + + let comment = '

地図レンダリング時間

'; + comment += `

master ブランチのスタイルと、現在のブランチのスタイルのレンダリング時間を比較した結果を表示します。(レンダリング時間が${threshold/1000}秒以上増加した場合テストが失敗します)

`; + comment += ''; + + for (let i = 0; i < zoomList.length; i++) { + + const zoom = zoomList[i]; + const mapRenderedTime = await getMapRenderTimeDiff(zoom, center); + const plusMinus = mapRenderedTime.diff > 0 ? '+' : ''; + comment += ``; + + if (parseInt(mapRenderedTime.diff) > threshold) { + throw new Error(`Map render average time changes should be less than ${threshold}ms.`); + } + + } + + comment += '
ズームレベル最新リリースとの差分最新リリース現在のブランチ
${zoom}${plusMinus}${mapRenderedTime.diff/1000}秒${mapRenderedTime.averageProd/1000}秒${mapRenderedTime.average/1000}秒
'; + + process.stdout.write(comment); + + httpClose({ timeout: 1 }, server); + + process.exit(0); + + }); +} + +try { + + getMapRenderTimeByZoom(); + +} catch (error) { + console.error(error) + process.exit(1) + +} diff --git a/docs/gsi.json b/docs/gsi.json new file mode 100644 index 0000000..a37e560 --- /dev/null +++ b/docs/gsi.json @@ -0,0 +1 @@ +{"aerialway":{"height":17,"width":17,"x":91,"y":87,"pixelRatio":1},"airfield":{"height":17,"width":17,"x":108,"y":87,"pixelRatio":1},"airport":{"height":17,"width":17,"x":0,"y":165,"pixelRatio":1},"alcohol_shop":{"height":17,"width":17,"x":17,"y":165,"pixelRatio":1},"america_football":{"height":17,"width":17,"x":34,"y":165,"pixelRatio":1},"american_football":{"height":17,"width":17,"x":51,"y":165,"pixelRatio":1},"amusement_park":{"height":17,"width":17,"x":68,"y":165,"pixelRatio":1},"aquarium":{"height":17,"width":17,"x":85,"y":165,"pixelRatio":1},"art_gallery":{"height":17,"width":17,"x":102,"y":165,"pixelRatio":1},"attraction":{"height":17,"width":17,"x":119,"y":165,"pixelRatio":1},"bakery":{"height":17,"width":17,"x":136,"y":165,"pixelRatio":1},"bank":{"height":17,"width":17,"x":153,"y":165,"pixelRatio":1},"bar":{"height":17,"width":17,"x":170,"y":165,"pixelRatio":1},"barrier":{"height":17,"width":17,"x":197,"y":0,"pixelRatio":1},"baseball":{"height":17,"width":17,"x":197,"y":17,"pixelRatio":1},"basketball":{"height":17,"width":17,"x":197,"y":34,"pixelRatio":1},"bbq":{"height":17,"width":17,"x":197,"y":51,"pixelRatio":1},"beach":{"height":17,"width":17,"x":197,"y":68,"pixelRatio":1},"beer":{"height":17,"width":17,"x":197,"y":85,"pixelRatio":1},"bicycle":{"height":17,"width":17,"x":197,"y":102,"pixelRatio":1},"bicycle_share":{"height":17,"width":17,"x":197,"y":119,"pixelRatio":1},"blood_bank":{"height":17,"width":17,"x":197,"y":136,"pixelRatio":1},"bowling_alley":{"height":17,"width":17,"x":197,"y":153,"pixelRatio":1},"bridge":{"height":17,"width":17,"x":0,"y":182,"pixelRatio":1},"buddhism":{"height":17,"width":17,"x":17,"y":182,"pixelRatio":1},"bus":{"height":17,"width":17,"x":34,"y":182,"pixelRatio":1},"cafe":{"height":17,"width":17,"x":51,"y":182,"pixelRatio":1},"campsite":{"height":17,"width":17,"x":68,"y":182,"pixelRatio":1},"car":{"height":17,"width":17,"x":85,"y":182,"pixelRatio":1},"car_rental":{"height":17,"width":17,"x":102,"y":182,"pixelRatio":1},"car_repair":{"height":17,"width":17,"x":119,"y":182,"pixelRatio":1},"casino":{"height":17,"width":17,"x":136,"y":182,"pixelRatio":1},"castle":{"height":17,"width":17,"x":153,"y":182,"pixelRatio":1},"cemetery":{"height":17,"width":17,"x":170,"y":182,"pixelRatio":1},"charging_station":{"height":17,"width":17,"x":187,"y":182,"pixelRatio":1},"cinema":{"height":17,"width":17,"x":214,"y":0,"pixelRatio":1},"clothing_store":{"height":17,"width":17,"x":214,"y":17,"pixelRatio":1},"college":{"height":17,"width":17,"x":214,"y":34,"pixelRatio":1},"commercial":{"height":17,"width":17,"x":214,"y":51,"pixelRatio":1},"confectionery":{"height":17,"width":17,"x":214,"y":68,"pixelRatio":1},"convenience":{"height":17,"width":17,"x":214,"y":85,"pixelRatio":1},"cricket":{"height":17,"width":17,"x":214,"y":102,"pixelRatio":1},"defibrillator":{"height":17,"width":17,"x":214,"y":119,"pixelRatio":1},"dentist":{"height":17,"width":17,"x":214,"y":136,"pixelRatio":1},"doctor":{"height":17,"width":17,"x":214,"y":153,"pixelRatio":1},"dog_park":{"height":17,"width":17,"x":214,"y":170,"pixelRatio":1},"drinking_water":{"height":17,"width":17,"x":0,"y":199,"pixelRatio":1},"embassy":{"height":17,"width":17,"x":17,"y":199,"pixelRatio":1},"emergency_phone":{"height":17,"width":17,"x":34,"y":199,"pixelRatio":1},"entrance":{"height":17,"width":17,"x":51,"y":199,"pixelRatio":1},"entrance_alt1":{"height":17,"width":17,"x":68,"y":199,"pixelRatio":1},"farm":{"height":17,"width":17,"x":85,"y":199,"pixelRatio":1},"fast_food":{"height":17,"width":17,"x":102,"y":199,"pixelRatio":1},"ferry":{"height":17,"width":17,"x":119,"y":199,"pixelRatio":1},"fire_station":{"height":17,"width":17,"x":136,"y":199,"pixelRatio":1},"fitness_centre":{"height":17,"width":17,"x":153,"y":199,"pixelRatio":1},"florist":{"height":17,"width":17,"x":170,"y":199,"pixelRatio":1},"fuel":{"height":17,"width":17,"x":187,"y":199,"pixelRatio":1},"furniture":{"height":17,"width":17,"x":204,"y":199,"pixelRatio":1},"gaming":{"height":17,"width":17,"x":231,"y":0,"pixelRatio":1},"garden":{"height":17,"width":17,"x":231,"y":17,"pixelRatio":1},"garden_center":{"height":17,"width":17,"x":231,"y":34,"pixelRatio":1},"garden_centre":{"height":17,"width":17,"x":231,"y":51,"pixelRatio":1},"gift":{"height":17,"width":17,"x":231,"y":68,"pixelRatio":1},"golf":{"height":17,"width":17,"x":231,"y":85,"pixelRatio":1},"grocery":{"height":17,"width":17,"x":231,"y":102,"pixelRatio":1},"hairdresser":{"height":17,"width":17,"x":231,"y":119,"pixelRatio":1},"harbor":{"height":17,"width":17,"x":231,"y":136,"pixelRatio":1},"hardware":{"height":17,"width":17,"x":231,"y":153,"pixelRatio":1},"heliport":{"height":17,"width":17,"x":231,"y":170,"pixelRatio":1},"horse_riding":{"height":17,"width":17,"x":231,"y":187,"pixelRatio":1},"hospital":{"height":17,"width":17,"x":0,"y":216,"pixelRatio":1},"ice_cream":{"height":17,"width":17,"x":17,"y":216,"pixelRatio":1},"jewelry_store":{"height":17,"width":17,"x":34,"y":216,"pixelRatio":1},"karaoke":{"height":17,"width":17,"x":51,"y":216,"pixelRatio":1},"landmark":{"height":17,"width":17,"x":68,"y":216,"pixelRatio":1},"laundry":{"height":17,"width":17,"x":85,"y":216,"pixelRatio":1},"library":{"height":17,"width":17,"x":102,"y":216,"pixelRatio":1},"lighthouse":{"height":17,"width":17,"x":119,"y":216,"pixelRatio":1},"lodging":{"height":17,"width":17,"x":136,"y":216,"pixelRatio":1},"logging":{"height":17,"width":17,"x":153,"y":216,"pixelRatio":1},"monument":{"height":17,"width":17,"x":170,"y":216,"pixelRatio":1},"mountain":{"height":17,"width":17,"x":187,"y":216,"pixelRatio":1},"museum":{"height":17,"width":17,"x":204,"y":216,"pixelRatio":1},"music":{"height":17,"width":17,"x":221,"y":216,"pixelRatio":1},"natural":{"height":17,"width":17,"x":248,"y":0,"pixelRatio":1},"optician":{"height":17,"width":17,"x":248,"y":17,"pixelRatio":1},"paint":{"height":17,"width":17,"x":248,"y":34,"pixelRatio":1},"park":{"height":17,"width":17,"x":248,"y":51,"pixelRatio":1},"park_alt1":{"height":17,"width":17,"x":248,"y":68,"pixelRatio":1},"parking":{"height":17,"width":17,"x":248,"y":85,"pixelRatio":1},"parking_garage":{"height":17,"width":17,"x":248,"y":102,"pixelRatio":1},"pharmacy":{"height":17,"width":17,"x":248,"y":119,"pixelRatio":1},"picnic_site":{"height":17,"width":17,"x":248,"y":136,"pixelRatio":1},"pitch":{"height":17,"width":17,"x":248,"y":153,"pixelRatio":1},"place_of_worship":{"height":17,"width":17,"x":248,"y":170,"pixelRatio":1},"playground":{"height":17,"width":17,"x":248,"y":187,"pixelRatio":1},"police":{"height":17,"width":17,"x":248,"y":204,"pixelRatio":1},"post":{"height":17,"width":17,"x":0,"y":233,"pixelRatio":1},"prison":{"height":17,"width":17,"x":17,"y":233,"pixelRatio":1},"rail":{"height":17,"width":17,"x":34,"y":233,"pixelRatio":1},"rail_light":{"height":17,"width":17,"x":51,"y":233,"pixelRatio":1},"rail_metro":{"height":17,"width":17,"x":68,"y":233,"pixelRatio":1},"railway":{"height":17,"width":17,"x":85,"y":233,"pixelRatio":1},"railway_light":{"height":17,"width":17,"x":102,"y":233,"pixelRatio":1},"railway_metro":{"height":17,"width":17,"x":119,"y":233,"pixelRatio":1},"ranger_station":{"height":17,"width":17,"x":136,"y":233,"pixelRatio":1},"religious_buddhist":{"height":17,"width":17,"x":153,"y":233,"pixelRatio":1},"religious_christian":{"height":17,"width":17,"x":170,"y":233,"pixelRatio":1},"religious_jewish":{"height":17,"width":17,"x":187,"y":233,"pixelRatio":1},"religious_muslim":{"height":17,"width":17,"x":204,"y":233,"pixelRatio":1},"religious_shinto":{"height":17,"width":17,"x":221,"y":233,"pixelRatio":1},"restaurant":{"height":17,"width":17,"x":238,"y":233,"pixelRatio":1},"restaurant_noodle":{"height":17,"width":17,"x":265,"y":0,"pixelRatio":1},"restaurant_pizza":{"height":17,"width":17,"x":265,"y":17,"pixelRatio":1},"restaurant_seafood":{"height":17,"width":17,"x":265,"y":34,"pixelRatio":1},"roadblock":{"height":17,"width":17,"x":265,"y":51,"pixelRatio":1},"rocket":{"height":17,"width":17,"x":265,"y":68,"pixelRatio":1},"school":{"height":17,"width":17,"x":265,"y":85,"pixelRatio":1},"scooter":{"height":17,"width":17,"x":265,"y":102,"pixelRatio":1},"shelter":{"height":17,"width":17,"x":265,"y":119,"pixelRatio":1},"shoe":{"height":17,"width":17,"x":265,"y":136,"pixelRatio":1},"shop":{"height":17,"width":17,"x":265,"y":153,"pixelRatio":1},"skateboard":{"height":17,"width":17,"x":265,"y":170,"pixelRatio":1},"skiing":{"height":17,"width":17,"x":265,"y":187,"pixelRatio":1},"snowmobile":{"height":17,"width":17,"x":265,"y":204,"pixelRatio":1},"soccer":{"height":17,"width":17,"x":265,"y":221,"pixelRatio":1},"stadium":{"height":17,"width":17,"x":0,"y":250,"pixelRatio":1},"sushi":{"height":17,"width":17,"x":17,"y":250,"pixelRatio":1},"swimming":{"height":17,"width":17,"x":34,"y":250,"pixelRatio":1},"table_tennis":{"height":17,"width":17,"x":51,"y":250,"pixelRatio":1},"teahouse":{"height":17,"width":17,"x":68,"y":250,"pixelRatio":1},"telephone":{"height":17,"width":17,"x":85,"y":250,"pixelRatio":1},"tennis":{"height":17,"width":17,"x":102,"y":250,"pixelRatio":1},"theatre":{"height":17,"width":17,"x":119,"y":250,"pixelRatio":1},"toilet":{"height":17,"width":17,"x":136,"y":250,"pixelRatio":1},"town_hall":{"height":17,"width":17,"x":153,"y":250,"pixelRatio":1},"veterinary":{"height":17,"width":17,"x":170,"y":250,"pixelRatio":1},"volcano":{"height":17,"width":17,"x":187,"y":250,"pixelRatio":1},"volleyball":{"height":17,"width":17,"x":204,"y":250,"pixelRatio":1},"waste_basket":{"height":17,"width":17,"x":221,"y":250,"pixelRatio":1},"watch":{"height":17,"width":17,"x":238,"y":250,"pixelRatio":1},"waterfall":{"height":17,"width":17,"x":255,"y":250,"pixelRatio":1},"wetland":{"height":17,"width":17,"x":282,"y":0,"pixelRatio":1},"zoo":{"height":17,"width":17,"x":282,"y":17,"pixelRatio":1},"default_1":{"height":18,"width":18,"x":178,"y":133,"pixelRatio":1},"building":{"height":19,"width":19,"x":114,"y":107,"pixelRatio":1},"building_alt1":{"height":19,"width":19,"x":140,"y":0,"pixelRatio":1},"circle-stroked":{"height":19,"width":19,"x":140,"y":19,"pixelRatio":1},"circle":{"height":19,"width":19,"x":140,"y":38,"pixelRatio":1},"city":{"height":19,"width":19,"x":140,"y":57,"pixelRatio":1},"communications_tower":{"height":19,"width":19,"x":140,"y":76,"pixelRatio":1},"cross":{"height":19,"width":19,"x":140,"y":95,"pixelRatio":1},"dam":{"height":19,"width":19,"x":0,"y":127,"pixelRatio":1},"danger":{"height":19,"width":19,"x":19,"y":127,"pixelRatio":1},"fence":{"height":19,"width":19,"x":38,"y":127,"pixelRatio":1},"globe":{"height":19,"width":19,"x":57,"y":127,"pixelRatio":1},"heart":{"height":19,"width":19,"x":76,"y":127,"pixelRatio":1},"home":{"height":19,"width":19,"x":95,"y":127,"pixelRatio":1},"industry":{"height":19,"width":19,"x":114,"y":127,"pixelRatio":1},"information":{"height":19,"width":19,"x":133,"y":127,"pixelRatio":1},"landuse":{"height":19,"width":19,"x":159,"y":0,"pixelRatio":1},"marker-stroked":{"height":19,"width":19,"x":159,"y":19,"pixelRatio":1},"marker":{"height":19,"width":19,"x":159,"y":38,"pixelRatio":1},"mobile_phone":{"height":19,"width":19,"x":159,"y":57,"pixelRatio":1},"recycling":{"height":19,"width":19,"x":159,"y":76,"pixelRatio":1},"residential_community":{"height":19,"width":19,"x":159,"y":95,"pixelRatio":1},"slaughterhouse":{"height":19,"width":19,"x":159,"y":114,"pixelRatio":1},"slipway":{"height":19,"width":19,"x":0,"y":146,"pixelRatio":1},"square-stroked":{"height":19,"width":19,"x":19,"y":146,"pixelRatio":1},"square":{"height":19,"width":19,"x":38,"y":146,"pixelRatio":1},"star-stroked":{"height":19,"width":19,"x":57,"y":146,"pixelRatio":1},"star":{"height":19,"width":19,"x":76,"y":146,"pixelRatio":1},"suitcase":{"height":19,"width":19,"x":95,"y":146,"pixelRatio":1},"town":{"height":19,"width":19,"x":114,"y":146,"pixelRatio":1},"triangle-stroked":{"height":19,"width":19,"x":133,"y":146,"pixelRatio":1},"triangle":{"height":19,"width":19,"x":152,"y":146,"pixelRatio":1},"viewpoint":{"height":19,"width":19,"x":178,"y":0,"pixelRatio":1},"village":{"height":19,"width":19,"x":178,"y":19,"pixelRatio":1},"warehouse":{"height":19,"width":19,"x":178,"y":38,"pixelRatio":1},"water":{"height":19,"width":19,"x":178,"y":57,"pixelRatio":1},"watermill":{"height":19,"width":19,"x":178,"y":76,"pixelRatio":1},"wheelchair":{"height":19,"width":19,"x":178,"y":95,"pixelRatio":1},"windmill":{"height":19,"width":19,"x":178,"y":114,"pixelRatio":1},"highway-JP_1":{"height":20,"width":20,"x":54,"y":107,"pixelRatio":1},"national-JP_1":{"height":20,"width":20,"x":74,"y":107,"pixelRatio":1},"prefectural-JP_1":{"height":20,"width":20,"x":94,"y":107,"pixelRatio":1},"default_2":{"height":18,"width":25,"x":66,"y":87,"pixelRatio":1},"highway-JP_2":{"height":20,"width":27,"x":70,"y":58,"pixelRatio":1},"national-JP_2":{"height":20,"width":27,"x":0,"y":107,"pixelRatio":1},"prefectural-JP_2":{"height":20,"width":27,"x":27,"y":107,"pixelRatio":1},"default_3":{"height":18,"width":32,"x":34,"y":87,"pixelRatio":1},"highway-JP_3":{"height":20,"width":34,"x":99,"y":38,"pixelRatio":1},"national-JP_3":{"height":20,"width":34,"x":99,"y":58,"pixelRatio":1},"prefectural-JP_3":{"height":20,"width":34,"x":0,"y":87,"pixelRatio":1},"default_4":{"height":18,"width":39,"x":99,"y":20,"pixelRatio":1},"default_5":{"height":18,"width":45,"x":50,"y":40,"pixelRatio":1},"highway-JP_4":{"height":20,"width":41,"x":29,"y":58,"pixelRatio":1},"prefectural-JP_4":{"height":20,"width":41,"x":99,"y":0,"pixelRatio":1},"oneway":{"height":29,"width":29,"x":0,"y":58,"pixelRatio":1},"default_6":{"height":18,"width":50,"x":0,"y":40,"pixelRatio":1},"highway-JP_5":{"height":20,"width":47,"x":52,"y":0,"pixelRatio":1},"prefectural-JP_5":{"height":20,"width":47,"x":52,"y":20,"pixelRatio":1},"highway-JP_6":{"height":20,"width":52,"x":0,"y":0,"pixelRatio":1},"prefectural-JP_6":{"height":20,"width":52,"x":0,"y":20,"pixelRatio":1}} \ No newline at end of file diff --git a/docs/gsi.png b/docs/gsi.png new file mode 100644 index 0000000..36917ef Binary files /dev/null and b/docs/gsi.png differ diff --git a/docs/gsi@2x.json b/docs/gsi@2x.json new file mode 100644 index 0000000..99e35da --- /dev/null +++ b/docs/gsi@2x.json @@ -0,0 +1 @@ +{"aerialway":{"height":34,"width":34,"x":182,"y":174,"pixelRatio":2},"airfield":{"height":34,"width":34,"x":216,"y":174,"pixelRatio":2},"airport":{"height":34,"width":34,"x":0,"y":330,"pixelRatio":2},"alcohol_shop":{"height":34,"width":34,"x":34,"y":330,"pixelRatio":2},"america_football":{"height":34,"width":34,"x":68,"y":330,"pixelRatio":2},"american_football":{"height":34,"width":34,"x":102,"y":330,"pixelRatio":2},"amusement_park":{"height":34,"width":34,"x":136,"y":330,"pixelRatio":2},"aquarium":{"height":34,"width":34,"x":170,"y":330,"pixelRatio":2},"art_gallery":{"height":34,"width":34,"x":204,"y":330,"pixelRatio":2},"attraction":{"height":34,"width":34,"x":238,"y":330,"pixelRatio":2},"bakery":{"height":34,"width":34,"x":272,"y":330,"pixelRatio":2},"bank":{"height":34,"width":34,"x":306,"y":330,"pixelRatio":2},"bar":{"height":34,"width":34,"x":340,"y":330,"pixelRatio":2},"barrier":{"height":34,"width":34,"x":394,"y":0,"pixelRatio":2},"baseball":{"height":34,"width":34,"x":394,"y":34,"pixelRatio":2},"basketball":{"height":34,"width":34,"x":394,"y":68,"pixelRatio":2},"bbq":{"height":34,"width":34,"x":394,"y":102,"pixelRatio":2},"beach":{"height":34,"width":34,"x":394,"y":136,"pixelRatio":2},"beer":{"height":34,"width":34,"x":394,"y":170,"pixelRatio":2},"bicycle":{"height":34,"width":34,"x":394,"y":204,"pixelRatio":2},"bicycle_share":{"height":34,"width":34,"x":394,"y":238,"pixelRatio":2},"blood_bank":{"height":34,"width":34,"x":394,"y":272,"pixelRatio":2},"bowling_alley":{"height":34,"width":34,"x":394,"y":306,"pixelRatio":2},"bridge":{"height":34,"width":34,"x":0,"y":364,"pixelRatio":2},"buddhism":{"height":34,"width":34,"x":34,"y":364,"pixelRatio":2},"bus":{"height":34,"width":34,"x":68,"y":364,"pixelRatio":2},"cafe":{"height":34,"width":34,"x":102,"y":364,"pixelRatio":2},"campsite":{"height":34,"width":34,"x":136,"y":364,"pixelRatio":2},"car":{"height":34,"width":34,"x":170,"y":364,"pixelRatio":2},"car_rental":{"height":34,"width":34,"x":204,"y":364,"pixelRatio":2},"car_repair":{"height":34,"width":34,"x":238,"y":364,"pixelRatio":2},"casino":{"height":34,"width":34,"x":272,"y":364,"pixelRatio":2},"castle":{"height":34,"width":34,"x":306,"y":364,"pixelRatio":2},"cemetery":{"height":34,"width":34,"x":340,"y":364,"pixelRatio":2},"charging_station":{"height":34,"width":34,"x":374,"y":364,"pixelRatio":2},"cinema":{"height":34,"width":34,"x":428,"y":0,"pixelRatio":2},"clothing_store":{"height":34,"width":34,"x":428,"y":34,"pixelRatio":2},"college":{"height":34,"width":34,"x":428,"y":68,"pixelRatio":2},"commercial":{"height":34,"width":34,"x":428,"y":102,"pixelRatio":2},"confectionery":{"height":34,"width":34,"x":428,"y":136,"pixelRatio":2},"convenience":{"height":34,"width":34,"x":428,"y":170,"pixelRatio":2},"cricket":{"height":34,"width":34,"x":428,"y":204,"pixelRatio":2},"defibrillator":{"height":34,"width":34,"x":428,"y":238,"pixelRatio":2},"dentist":{"height":34,"width":34,"x":428,"y":272,"pixelRatio":2},"doctor":{"height":34,"width":34,"x":428,"y":306,"pixelRatio":2},"dog_park":{"height":34,"width":34,"x":428,"y":340,"pixelRatio":2},"drinking_water":{"height":34,"width":34,"x":0,"y":398,"pixelRatio":2},"embassy":{"height":34,"width":34,"x":34,"y":398,"pixelRatio":2},"emergency_phone":{"height":34,"width":34,"x":68,"y":398,"pixelRatio":2},"entrance":{"height":34,"width":34,"x":102,"y":398,"pixelRatio":2},"entrance_alt1":{"height":34,"width":34,"x":136,"y":398,"pixelRatio":2},"farm":{"height":34,"width":34,"x":170,"y":398,"pixelRatio":2},"fast_food":{"height":34,"width":34,"x":204,"y":398,"pixelRatio":2},"ferry":{"height":34,"width":34,"x":238,"y":398,"pixelRatio":2},"fire_station":{"height":34,"width":34,"x":272,"y":398,"pixelRatio":2},"fitness_centre":{"height":34,"width":34,"x":306,"y":398,"pixelRatio":2},"florist":{"height":34,"width":34,"x":340,"y":398,"pixelRatio":2},"fuel":{"height":34,"width":34,"x":374,"y":398,"pixelRatio":2},"furniture":{"height":34,"width":34,"x":408,"y":398,"pixelRatio":2},"gaming":{"height":34,"width":34,"x":462,"y":0,"pixelRatio":2},"garden":{"height":34,"width":34,"x":462,"y":34,"pixelRatio":2},"garden_center":{"height":34,"width":34,"x":462,"y":68,"pixelRatio":2},"garden_centre":{"height":34,"width":34,"x":462,"y":102,"pixelRatio":2},"gift":{"height":34,"width":34,"x":462,"y":136,"pixelRatio":2},"golf":{"height":34,"width":34,"x":462,"y":170,"pixelRatio":2},"grocery":{"height":34,"width":34,"x":462,"y":204,"pixelRatio":2},"hairdresser":{"height":34,"width":34,"x":462,"y":238,"pixelRatio":2},"harbor":{"height":34,"width":34,"x":462,"y":272,"pixelRatio":2},"hardware":{"height":34,"width":34,"x":462,"y":306,"pixelRatio":2},"heliport":{"height":34,"width":34,"x":462,"y":340,"pixelRatio":2},"horse_riding":{"height":34,"width":34,"x":462,"y":374,"pixelRatio":2},"hospital":{"height":34,"width":34,"x":0,"y":432,"pixelRatio":2},"ice_cream":{"height":34,"width":34,"x":34,"y":432,"pixelRatio":2},"jewelry_store":{"height":34,"width":34,"x":68,"y":432,"pixelRatio":2},"karaoke":{"height":34,"width":34,"x":102,"y":432,"pixelRatio":2},"landmark":{"height":34,"width":34,"x":136,"y":432,"pixelRatio":2},"laundry":{"height":34,"width":34,"x":170,"y":432,"pixelRatio":2},"library":{"height":34,"width":34,"x":204,"y":432,"pixelRatio":2},"lighthouse":{"height":34,"width":34,"x":238,"y":432,"pixelRatio":2},"lodging":{"height":34,"width":34,"x":272,"y":432,"pixelRatio":2},"logging":{"height":34,"width":34,"x":306,"y":432,"pixelRatio":2},"monument":{"height":34,"width":34,"x":340,"y":432,"pixelRatio":2},"mountain":{"height":34,"width":34,"x":374,"y":432,"pixelRatio":2},"museum":{"height":34,"width":34,"x":408,"y":432,"pixelRatio":2},"music":{"height":34,"width":34,"x":442,"y":432,"pixelRatio":2},"natural":{"height":34,"width":34,"x":496,"y":0,"pixelRatio":2},"optician":{"height":34,"width":34,"x":496,"y":34,"pixelRatio":2},"paint":{"height":34,"width":34,"x":496,"y":68,"pixelRatio":2},"park":{"height":34,"width":34,"x":496,"y":102,"pixelRatio":2},"park_alt1":{"height":34,"width":34,"x":496,"y":136,"pixelRatio":2},"parking":{"height":34,"width":34,"x":496,"y":170,"pixelRatio":2},"parking_garage":{"height":34,"width":34,"x":496,"y":204,"pixelRatio":2},"pharmacy":{"height":34,"width":34,"x":496,"y":238,"pixelRatio":2},"picnic_site":{"height":34,"width":34,"x":496,"y":272,"pixelRatio":2},"pitch":{"height":34,"width":34,"x":496,"y":306,"pixelRatio":2},"place_of_worship":{"height":34,"width":34,"x":496,"y":340,"pixelRatio":2},"playground":{"height":34,"width":34,"x":496,"y":374,"pixelRatio":2},"police":{"height":34,"width":34,"x":496,"y":408,"pixelRatio":2},"post":{"height":34,"width":34,"x":0,"y":466,"pixelRatio":2},"prison":{"height":34,"width":34,"x":34,"y":466,"pixelRatio":2},"rail":{"height":34,"width":34,"x":68,"y":466,"pixelRatio":2},"rail_light":{"height":34,"width":34,"x":102,"y":466,"pixelRatio":2},"rail_metro":{"height":34,"width":34,"x":136,"y":466,"pixelRatio":2},"railway":{"height":34,"width":34,"x":170,"y":466,"pixelRatio":2},"railway_light":{"height":34,"width":34,"x":204,"y":466,"pixelRatio":2},"railway_metro":{"height":34,"width":34,"x":238,"y":466,"pixelRatio":2},"ranger_station":{"height":34,"width":34,"x":272,"y":466,"pixelRatio":2},"religious_buddhist":{"height":34,"width":34,"x":306,"y":466,"pixelRatio":2},"religious_christian":{"height":34,"width":34,"x":340,"y":466,"pixelRatio":2},"religious_jewish":{"height":34,"width":34,"x":374,"y":466,"pixelRatio":2},"religious_muslim":{"height":34,"width":34,"x":408,"y":466,"pixelRatio":2},"religious_shinto":{"height":34,"width":34,"x":442,"y":466,"pixelRatio":2},"restaurant":{"height":34,"width":34,"x":476,"y":466,"pixelRatio":2},"restaurant_noodle":{"height":34,"width":34,"x":530,"y":0,"pixelRatio":2},"restaurant_pizza":{"height":34,"width":34,"x":530,"y":34,"pixelRatio":2},"restaurant_seafood":{"height":34,"width":34,"x":530,"y":68,"pixelRatio":2},"roadblock":{"height":34,"width":34,"x":530,"y":102,"pixelRatio":2},"rocket":{"height":34,"width":34,"x":530,"y":136,"pixelRatio":2},"school":{"height":34,"width":34,"x":530,"y":170,"pixelRatio":2},"scooter":{"height":34,"width":34,"x":530,"y":204,"pixelRatio":2},"shelter":{"height":34,"width":34,"x":530,"y":238,"pixelRatio":2},"shoe":{"height":34,"width":34,"x":530,"y":272,"pixelRatio":2},"shop":{"height":34,"width":34,"x":530,"y":306,"pixelRatio":2},"skateboard":{"height":34,"width":34,"x":530,"y":340,"pixelRatio":2},"skiing":{"height":34,"width":34,"x":530,"y":374,"pixelRatio":2},"snowmobile":{"height":34,"width":34,"x":530,"y":408,"pixelRatio":2},"soccer":{"height":34,"width":34,"x":530,"y":442,"pixelRatio":2},"stadium":{"height":34,"width":34,"x":0,"y":500,"pixelRatio":2},"sushi":{"height":34,"width":34,"x":34,"y":500,"pixelRatio":2},"swimming":{"height":34,"width":34,"x":68,"y":500,"pixelRatio":2},"table_tennis":{"height":34,"width":34,"x":102,"y":500,"pixelRatio":2},"teahouse":{"height":34,"width":34,"x":136,"y":500,"pixelRatio":2},"telephone":{"height":34,"width":34,"x":170,"y":500,"pixelRatio":2},"tennis":{"height":34,"width":34,"x":204,"y":500,"pixelRatio":2},"theatre":{"height":34,"width":34,"x":238,"y":500,"pixelRatio":2},"toilet":{"height":34,"width":34,"x":272,"y":500,"pixelRatio":2},"town_hall":{"height":34,"width":34,"x":306,"y":500,"pixelRatio":2},"veterinary":{"height":34,"width":34,"x":340,"y":500,"pixelRatio":2},"volcano":{"height":34,"width":34,"x":374,"y":500,"pixelRatio":2},"volleyball":{"height":34,"width":34,"x":408,"y":500,"pixelRatio":2},"waste_basket":{"height":34,"width":34,"x":442,"y":500,"pixelRatio":2},"watch":{"height":34,"width":34,"x":476,"y":500,"pixelRatio":2},"waterfall":{"height":34,"width":34,"x":510,"y":500,"pixelRatio":2},"wetland":{"height":34,"width":34,"x":564,"y":0,"pixelRatio":2},"zoo":{"height":34,"width":34,"x":564,"y":34,"pixelRatio":2},"default_1":{"height":36,"width":36,"x":356,"y":266,"pixelRatio":2},"building":{"height":38,"width":38,"x":228,"y":214,"pixelRatio":2},"building_alt1":{"height":38,"width":38,"x":280,"y":0,"pixelRatio":2},"circle-stroked":{"height":38,"width":38,"x":280,"y":38,"pixelRatio":2},"circle":{"height":38,"width":38,"x":280,"y":76,"pixelRatio":2},"city":{"height":38,"width":38,"x":280,"y":114,"pixelRatio":2},"communications_tower":{"height":38,"width":38,"x":280,"y":152,"pixelRatio":2},"cross":{"height":38,"width":38,"x":280,"y":190,"pixelRatio":2},"dam":{"height":38,"width":38,"x":0,"y":254,"pixelRatio":2},"danger":{"height":38,"width":38,"x":38,"y":254,"pixelRatio":2},"fence":{"height":38,"width":38,"x":76,"y":254,"pixelRatio":2},"globe":{"height":38,"width":38,"x":114,"y":254,"pixelRatio":2},"heart":{"height":38,"width":38,"x":152,"y":254,"pixelRatio":2},"home":{"height":38,"width":38,"x":190,"y":254,"pixelRatio":2},"industry":{"height":38,"width":38,"x":228,"y":254,"pixelRatio":2},"information":{"height":38,"width":38,"x":266,"y":254,"pixelRatio":2},"landuse":{"height":38,"width":38,"x":318,"y":0,"pixelRatio":2},"marker-stroked":{"height":38,"width":38,"x":318,"y":38,"pixelRatio":2},"marker":{"height":38,"width":38,"x":318,"y":76,"pixelRatio":2},"mobile_phone":{"height":38,"width":38,"x":318,"y":114,"pixelRatio":2},"recycling":{"height":38,"width":38,"x":318,"y":152,"pixelRatio":2},"residential_community":{"height":38,"width":38,"x":318,"y":190,"pixelRatio":2},"slaughterhouse":{"height":38,"width":38,"x":318,"y":228,"pixelRatio":2},"slipway":{"height":38,"width":38,"x":0,"y":292,"pixelRatio":2},"square-stroked":{"height":38,"width":38,"x":38,"y":292,"pixelRatio":2},"square":{"height":38,"width":38,"x":76,"y":292,"pixelRatio":2},"star-stroked":{"height":38,"width":38,"x":114,"y":292,"pixelRatio":2},"star":{"height":38,"width":38,"x":152,"y":292,"pixelRatio":2},"suitcase":{"height":38,"width":38,"x":190,"y":292,"pixelRatio":2},"town":{"height":38,"width":38,"x":228,"y":292,"pixelRatio":2},"triangle-stroked":{"height":38,"width":38,"x":266,"y":292,"pixelRatio":2},"triangle":{"height":38,"width":38,"x":304,"y":292,"pixelRatio":2},"viewpoint":{"height":38,"width":38,"x":356,"y":0,"pixelRatio":2},"village":{"height":38,"width":38,"x":356,"y":38,"pixelRatio":2},"warehouse":{"height":38,"width":38,"x":356,"y":76,"pixelRatio":2},"water":{"height":38,"width":38,"x":356,"y":114,"pixelRatio":2},"watermill":{"height":38,"width":38,"x":356,"y":152,"pixelRatio":2},"wheelchair":{"height":38,"width":38,"x":356,"y":190,"pixelRatio":2},"windmill":{"height":38,"width":38,"x":356,"y":228,"pixelRatio":2},"highway-JP_1":{"height":40,"width":40,"x":108,"y":214,"pixelRatio":2},"national-JP_1":{"height":40,"width":40,"x":148,"y":214,"pixelRatio":2},"prefectural-JP_1":{"height":40,"width":40,"x":188,"y":214,"pixelRatio":2},"default_2":{"height":36,"width":50,"x":132,"y":174,"pixelRatio":2},"highway-JP_2":{"height":40,"width":54,"x":140,"y":116,"pixelRatio":2},"national-JP_2":{"height":40,"width":54,"x":0,"y":214,"pixelRatio":2},"prefectural-JP_2":{"height":40,"width":54,"x":54,"y":214,"pixelRatio":2},"default_3":{"height":36,"width":64,"x":68,"y":174,"pixelRatio":2},"highway-JP_3":{"height":40,"width":68,"x":198,"y":76,"pixelRatio":2},"national-JP_3":{"height":40,"width":68,"x":198,"y":116,"pixelRatio":2},"prefectural-JP_3":{"height":40,"width":68,"x":0,"y":174,"pixelRatio":2},"default_4":{"height":36,"width":78,"x":198,"y":40,"pixelRatio":2},"default_5":{"height":36,"width":90,"x":100,"y":80,"pixelRatio":2},"highway-JP_4":{"height":40,"width":82,"x":58,"y":116,"pixelRatio":2},"prefectural-JP_4":{"height":40,"width":82,"x":198,"y":0,"pixelRatio":2},"oneway":{"height":58,"width":58,"x":0,"y":116,"pixelRatio":2},"default_6":{"height":36,"width":100,"x":0,"y":80,"pixelRatio":2},"highway-JP_5":{"height":40,"width":94,"x":104,"y":0,"pixelRatio":2},"prefectural-JP_5":{"height":40,"width":94,"x":104,"y":40,"pixelRatio":2},"highway-JP_6":{"height":40,"width":104,"x":0,"y":0,"pixelRatio":2},"prefectural-JP_6":{"height":40,"width":104,"x":0,"y":40,"pixelRatio":2}} \ No newline at end of file diff --git a/docs/gsi@2x.png b/docs/gsi@2x.png new file mode 100644 index 0000000..bcd02cb Binary files /dev/null and b/docs/gsi@2x.png differ diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..53678b4 --- /dev/null +++ b/docs/index.html @@ -0,0 +1,93 @@ + + + + + + + Deploy Preview - Geolonia Map + + + + +
+

+
+  
+  
+
+
+
diff --git a/docs/style.json b/docs/style.json
new file mode 100644
index 0000000..b1f433a
--- /dev/null
+++ b/docs/style.json
@@ -0,0 +1,8042 @@
+{
+  "version": 8,
+  "name": "GSI Japan + OpenStreetMap based style for Geolonia",
+  "sources": {
+    "oceanus": {
+      "type": "vector",
+      "url": "https://tileserver.geolonia.com/oceanus/tiles.json?key=YOUR-API-KEY"
+    },
+    "gsi-japan": {
+      "type": "vector",
+      "url": "https://tileserver.geolonia.com/gsi_experimental_bvmap/tiles.json?key=YOUR-API-KEY",
+      "minzoom": 5
+    },
+    "geolonia-water": {
+      "type": "vector",
+      "url": "https://tileserver.geolonia.com/water/tiles.json?key=YOUR-API-KEY"
+    },
+    "geolonia-gsi-custom": {
+      "type": "vector",
+      "url": "https://tileserver.geolonia.com/gsi-extra-v2/tiles.json?key=YOUR-API-KEY"
+    },
+    "dem": {
+      "type": "raster-dem",
+      "url": "https://tileserver.geolonia.com/gsi-dem/tiles.json?key=YOUR-API-KEY",
+      "attribution": "© GSI Japan"
+    }
+  },
+  "sprite": "https://geoloniamaps.github.io/gsi/gsi",
+  "glyphs": "https://glyphs.geolonia.com/{fontstack}/{range}.pbf",
+  "layers": [
+    {
+      "id": "background",
+      "type": "background",
+      "paint": {
+        "background-color": {
+          "stops": [
+            [
+              1,
+              "#f2f5d6"
+            ],
+            [
+              5,
+              "#dae2c1"
+            ],
+            [
+              8,
+              "#EDE6DD"
+            ],
+            [
+              10,
+              "#e6e5e3"
+            ],
+            [
+              16,
+              "#f5f5f5"
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "landcover-grass",
+      "type": "fill",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "landcover",
+      "filter": [
+        "==",
+        "class",
+        "grass"
+      ],
+      "layout": {
+        "visibility": "visible"
+      },
+      "paint": {
+        "fill-color": "#daeca9",
+        "fill-opacity": 1
+      }
+    },
+    {
+      "id": "landcover-wood-blur",
+      "type": "line",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "landcover",
+      "filter": [
+        "==",
+        "class",
+        "wood"
+      ],
+      "layout": {
+        "visibility": "visible"
+      },
+      "paint": {
+        "line-color": "#bce398",
+        "line-width": 5,
+        "line-translate": {
+          "stops": [
+            [
+              14,
+              [
+                0,
+                0
+              ]
+            ],
+            [
+              17,
+              [
+                0,
+                2
+              ]
+            ]
+          ]
+        },
+        "line-opacity": {
+          "stops": [
+            [
+              14,
+              0
+            ],
+            [
+              17,
+              0.4
+            ]
+          ]
+        },
+        "line-blur": 10
+      }
+    },
+    {
+      "id": "landcover-wood",
+      "type": "fill",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "landcover",
+      "filter": [
+        "==",
+        "class",
+        "wood"
+      ],
+      "layout": {
+        "visibility": "visible"
+      },
+      "paint": {
+        "fill-color": "#bce398",
+        "fill-antialias": {
+          "base": 1,
+          "stops": [
+            [
+              0,
+              false
+            ],
+            [
+              9,
+              true
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "landcover-grass-park",
+      "type": "fill",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "park",
+      "filter": [
+        "==",
+        "class",
+        "public_park"
+      ],
+      "layout": {
+        "visibility": "visible"
+      },
+      "paint": {
+        "fill-color": "#d8e8c8",
+        "fill-opacity": 0.8
+      }
+    },
+    {
+      "id": "geolonia-water-ocean",
+      "type": "fill",
+      "source": "geolonia-water",
+      "source-layer": "water",
+      "layout": {
+        "visibility": "visible"
+      },
+      "paint": {
+        "fill-color": "#65cbf9"
+      }
+    },
+    {
+      "id": "water-blur",
+      "type": "line",
+      "source": "geolonia-water",
+      "source-layer": "water",
+      "minzoom": 17,
+      "layout": {
+        "line-join": "round",
+        "visibility": "visible"
+      },
+      "paint": {
+        "line-color": "#62cffc",
+        "line-width": {
+          "stops": [
+            [
+              17,
+              3
+            ],
+            [
+              20,
+              5
+            ]
+          ]
+        },
+        "line-translate": {
+          "stops": [
+            [
+              17,
+              [
+                1,
+                1
+              ]
+            ],
+            [
+              20,
+              [
+                -2,
+                -2
+              ]
+            ]
+          ]
+        },
+        "line-blur": 2
+      }
+    },
+    {
+      "id": "water-blur-gsi",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "river",
+      "minzoom": 17,
+      "layout": {
+        "line-join": "round",
+        "visibility": "visible"
+      },
+      "paint": {
+        "line-color": "#62cffc",
+        "line-width": {
+          "stops": [
+            [
+              17,
+              3
+            ],
+            [
+              20,
+              5
+            ]
+          ]
+        },
+        "line-translate": {
+          "stops": [
+            [
+              17,
+              [
+                1,
+                1
+              ]
+            ],
+            [
+              20,
+              [
+                -2,
+                -2
+              ]
+            ]
+          ]
+        },
+        "line-blur": 2
+      }
+    },
+    {
+      "id": "water-gsi",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "river",
+      "minzoom": 16,
+      "filter": [
+        "all",
+        [
+          "!=",
+          "ftCode",
+          5322
+        ]
+      ],
+      "layout": {
+        "line-join": "round",
+        "line-round-limit": 0.5,
+        "visibility": "visible"
+      },
+      "paint": {
+        "line-color": "#65cbf9",
+        "line-width": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          16,
+          1,
+          20,
+          5
+        ]
+      }
+    },
+    {
+      "id": "water",
+      "type": "fill",
+      "source": "gsi-japan",
+      "source-layer": "waterarea",
+      "filter": [
+        "all"
+      ],
+      "layout": {
+        "visibility": "visible"
+      },
+      "paint": {
+        "fill-color": "#65cbf9"
+      }
+    },
+    {
+      "id": "oc-ocean",
+      "type": "fill",
+      "source": "oceanus",
+      "source-layer": "oc-water",
+      "maxzoom": 10,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "ocean"
+        ]
+      ],
+      "layout": {
+        "visibility": "visible"
+      },
+      "paint": {
+        "fill-opacity": {
+          "stops": [
+            [
+              9,
+              1
+            ],
+            [
+              10,
+              0
+            ]
+          ]
+        },
+        "fill-color": [
+          "match",
+          [
+            "get",
+            "depth"
+          ],
+          200,
+          "#5bc2f8",
+          1000,
+          "#52baf7",
+          2000,
+          "#4ab2f7",
+          3000,
+          "#40a8f6",
+          4000,
+          "#36a0f5",
+          5000,
+          "#319bf6",
+          6000,
+          "#2a94f5",
+          7000,
+          "#238df4",
+          8000,
+          "#1c88f4",
+          9000,
+          "#147ff3",
+          10000,
+          "#0e7af2",
+          "#0673f2"
+        ]
+      }
+    },
+    {
+      "id": "oc-glacier",
+      "type": "fill",
+      "source": "oceanus",
+      "source-layer": "oc-glacier",
+      "maxzoom": 8,
+      "layout": {
+        "visibility": "visible"
+      },
+      "paint": {
+        "fill-color": "rgba(241, 248, 254, 1)"
+      }
+    },
+    {
+      "id": "oc-landuse-commercial-ja",
+      "type": "fill",
+      "source": "oceanus",
+      "source-layer": "oc-landuse",
+      "minzoom": 5,
+      "maxzoom": 8,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "geometry-type"
+          ],
+          "Polygon"
+        ],
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "commercial"
+        ],
+        [
+          "has",
+          "jflag"
+        ]
+      ],
+      "paint": {
+        "fill-color": "hsla(0, 60%, 87%, 0.23)"
+      }
+    },
+    {
+      "id": "oc-landuse-commercial",
+      "type": "fill",
+      "source": "oceanus",
+      "source-layer": "oc-landuse",
+      "minzoom": 5,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "geometry-type"
+          ],
+          "Polygon"
+        ],
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "commercial"
+        ],
+        [
+          "==",
+          [
+            "has",
+            "jflag"
+          ],
+          false
+        ]
+      ],
+      "paint": {
+        "fill-color": "hsla(0, 60%, 87%, 0.23)"
+      }
+    },
+    {
+      "id": "oc-forest",
+      "type": "fill",
+      "source": "oceanus",
+      "source-layer": "oc-forest",
+      "minzoom": 0,
+      "maxzoom": 9,
+      "layout": {
+        "visibility": "visible"
+      },
+      "paint": {
+        "fill-color": {
+          "stops": [
+            [
+              5,
+              "#a5d47b"
+            ],
+            [
+              8,
+              "#bce398"
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "hillshading",
+      "source": "dem",
+      "type": "hillshade",
+      "maxzoom": 12,
+      "paint": {
+        "hillshade-exaggeration": {
+          "stops": [
+            [
+              4,
+              0.15
+            ],
+            [
+              12,
+              0
+            ]
+          ]
+        },
+        "hillshade-shadow-color": "#000000"
+      }
+    },
+    {
+      "id": "oc-waterway-river-ja",
+      "type": "line",
+      "source": "oceanus",
+      "source-layer": "oc-waterway",
+      "minzoom": 4,
+      "maxzoom": 8,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "river"
+        ],
+        [
+          "!=",
+          [
+            "get",
+            "brunnel"
+          ],
+          "tunnel"
+        ],
+        [
+          "has",
+          "jflag"
+        ]
+      ],
+      "layout": {
+        "line-cap": "round"
+      },
+      "paint": {
+        "line-color": "#a0c8f0",
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            1.2
+          ],
+          [
+            "zoom"
+          ],
+          10,
+          0.8,
+          20,
+          6
+        ]
+      }
+    },
+    {
+      "id": "oc-waterway-river",
+      "type": "line",
+      "source": "oceanus",
+      "source-layer": "oc-waterway",
+      "minzoom": 4,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "river"
+        ],
+        [
+          "!=",
+          [
+            "get",
+            "brunnel"
+          ],
+          "tunnel"
+        ],
+        [
+          "==",
+          [
+            "has",
+            "jflag"
+          ],
+          false
+        ]
+      ],
+      "layout": {
+        "line-cap": "round"
+      },
+      "paint": {
+        "line-color": "#a0c8f0",
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            1.2
+          ],
+          [
+            "zoom"
+          ],
+          10,
+          0.8,
+          20,
+          6
+        ]
+      }
+    },
+    {
+      "id": "oc-waterway-name-ja",
+      "type": "symbol",
+      "source": "oceanus",
+      "source-layer": "oc-waterway",
+      "minzoom": 6,
+      "maxzoom": 8,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "LineString"
+        ],
+        [
+          "has",
+          "name"
+        ],
+        [
+          "has",
+          "jflag"
+        ]
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 5,
+        "text-rotation-alignment": "map",
+        "symbol-placement": "line",
+        "symbol-spacing": 350,
+        "text-letter-spacing": 0.2
+      },
+      "paint": {
+        "text-color": "#74aee9",
+        "text-halo-width": 1.5,
+        "text-halo-color": "rgba(255,255,255,0.7)"
+      }
+    },
+    {
+      "id": "oc-waterway-name",
+      "type": "symbol",
+      "source": "oceanus",
+      "source-layer": "oc-waterway",
+      "minzoom": 6,
+      "filter": [
+        "all",
+        [
+          "has",
+          "name"
+        ],
+        [
+          "==",
+          [
+            "has",
+            "jflag"
+          ],
+          false
+        ]
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 5,
+        "text-rotation-alignment": "map",
+        "symbol-placement": "line",
+        "symbol-spacing": 350,
+        "text-letter-spacing": 0.2
+      },
+      "paint": {
+        "text-color": "#74aee9",
+        "text-halo-width": 1.5,
+        "text-halo-color": "rgba(255,255,255,0.7)"
+      }
+    },
+    {
+      "id": "oc-lake-blur",
+      "type": "line",
+      "source": "oceanus",
+      "source-layer": "oc-water",
+      "minzoom": 17,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "lakes"
+        ],
+        [
+          "==",
+          [
+            "has",
+            "jflag"
+          ],
+          false
+        ]
+      ],
+      "layout": {
+        "line-join": "round",
+        "visibility": "visible"
+      },
+      "paint": {
+        "line-color": "#62cffc",
+        "line-width": {
+          "stops": [
+            [
+              17,
+              3
+            ],
+            [
+              20,
+              5
+            ]
+          ]
+        },
+        "line-translate": {
+          "stops": [
+            [
+              17,
+              [
+                1,
+                1
+              ]
+            ],
+            [
+              20,
+              [
+                -2,
+                -2
+              ]
+            ]
+          ]
+        },
+        "line-blur": 2
+      }
+    },
+    {
+      "id": "oc-lake-ja",
+      "type": "fill",
+      "source": "oceanus",
+      "source-layer": "oc-water",
+      "minzoom": 4,
+      "maxzoom": 8,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "lakes"
+        ],
+        [
+          "has",
+          "jflag"
+        ]
+      ],
+      "layout": {
+        "visibility": "visible"
+      },
+      "paint": {
+        "fill-color": "#65cbf9"
+      }
+    },
+    {
+      "id": "oc-lake",
+      "type": "fill",
+      "source": "oceanus",
+      "source-layer": "oc-water",
+      "minzoom": 4,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "lakes"
+        ],
+        [
+          "==",
+          [
+            "has",
+            "jflag"
+          ],
+          false
+        ]
+      ],
+      "layout": {
+        "visibility": "visible"
+      },
+      "paint": {
+        "fill-color": "#65cbf9"
+      }
+    },
+    {
+      "id": "oc-boundary-land-level-1-ja",
+      "type": "line",
+      "source": "oceanus",
+      "source-layer": "oc-boundary",
+      "minzoom": 4,
+      "maxzoom": 6,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "get",
+            "admin_level"
+          ],
+          1
+        ],
+        [
+          "has",
+          "jflag"
+        ]
+      ],
+      "layout": {
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": {
+          "stops": [
+            [
+              4,
+              "rgba(102,102,102,0.7)"
+            ],
+            [
+              7,
+              "rgba(136,136,136,0.7)"
+            ]
+          ]
+        },
+        "line-dasharray": [
+          3,
+          1,
+          1,
+          1
+        ],
+        "line-width": {
+          "stops": [
+            [
+              4,
+              0.5
+            ],
+            [
+              7,
+              1.8
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "oc-boundary-land-level-1",
+      "type": "line",
+      "source": "oceanus",
+      "source-layer": "oc-boundary",
+      "minzoom": 4,
+      "maxzoom": 8,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "get",
+            "admin_level"
+          ],
+          1
+        ],
+        [
+          "==",
+          [
+            "has",
+            "jflag"
+          ],
+          false
+        ]
+      ],
+      "layout": {
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": "#9e9cab",
+        "line-dasharray": [
+          3,
+          1,
+          1,
+          1
+        ],
+        "line-width": 1
+      }
+    },
+    {
+      "id": "oc-boundary-land-level-0",
+      "type": "line",
+      "source": "oceanus",
+      "source-layer": "oc-boundary",
+      "filter": [
+        "==",
+        [
+          "get",
+          "admin_level"
+        ],
+        0
+      ],
+      "layout": {
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": "#9e9cab",
+        "line-width": 1,
+        "line-blur": 0.4
+      }
+    },
+    {
+      "id": "oc-water-name-ocean",
+      "type": "symbol",
+      "source": "oceanus",
+      "source-layer": "oc-water_name",
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "geometry-type"
+          ],
+          "Point"
+        ],
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "ocean"
+        ]
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 5,
+        "text-rotation-alignment": "map",
+        "symbol-placement": "point",
+        "symbol-spacing": 350,
+        "text-letter-spacing": 0.2
+      },
+      "paint": {
+        "text-color": "#74aee9",
+        "text-halo-width": 1.5,
+        "text-halo-color": "rgba(255,255,255,0.7)"
+      }
+    },
+    {
+      "id": "oc-water-name-other",
+      "type": "symbol",
+      "source": "oceanus",
+      "source-layer": "oc-water",
+      "minzoom": 6,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "geometry-type"
+          ],
+          "Polygon"
+        ],
+        [
+          "has",
+          "name"
+        ]
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          0,
+          10,
+          6,
+          14
+        ],
+        "text-field": "{name}",
+        "text-max-width": 5,
+        "text-rotation-alignment": "map",
+        "symbol-placement": "point",
+        "symbol-spacing": 350,
+        "text-letter-spacing": 0.2,
+        "visibility": "visible"
+      },
+      "paint": {
+        "text-color": "#74aee9",
+        "text-halo-width": 1.5,
+        "text-halo-color": "rgba(255,255,255,0.7)"
+      }
+    },
+    {
+      "id": "oc-motorway",
+      "type": "line",
+      "source": "oceanus",
+      "source-layer": "oc-road",
+      "minzoom": 6,
+      "maxzoom": 6,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "highway"
+        ],
+        [
+          "==",
+          [
+            "has",
+            "jflag"
+          ],
+          true
+        ]
+      ],
+      "layout": {
+        "line-cap": "round"
+      },
+      "paint": {
+        "line-color": "#00A54E",
+        "line-width": 2
+      }
+    },
+    {
+      "id": "nt-water-name-ocean",
+      "type": "symbol",
+      "source": "oceanus",
+      "source-layer": "nt-water-name",
+      "minzoom": 8,
+      "filter": [
+        "==",
+        [
+          "get",
+          "class"
+        ],
+        "ocean"
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 5,
+        "text-rotation-alignment": "map",
+        "symbol-placement": "point",
+        "symbol-spacing": 350,
+        "text-letter-spacing": 0.2
+      },
+      "paint": {
+        "text-color": "#74aee9",
+        "text-halo-width": 1.5,
+        "text-halo-color": "rgba(255,255,255,0.7)"
+      }
+    },
+    {
+      "id": "nt-water-name-river",
+      "type": "symbol",
+      "source": "oceanus",
+      "source-layer": "nt-water-name",
+      "minzoom": 13,
+      "filter": [
+        "==",
+        [
+          "get",
+          "class"
+        ],
+        "river"
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 5,
+        "text-rotation-alignment": "map",
+        "symbol-placement": "point",
+        "symbol-spacing": 350,
+        "text-letter-spacing": 0.2
+      },
+      "paint": {
+        "text-color": "#74aee9",
+        "text-halo-width": 1.5,
+        "text-halo-color": "rgba(255,255,255,0.7)"
+      }
+    },
+    {
+      "id": "landuse-commercial",
+      "type": "fill",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "landuse",
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Polygon"
+        ],
+        [
+          "==",
+          "class",
+          "commercial"
+        ]
+      ],
+      "paint": {
+        "fill-color": "hsla(0, 60%, 87%, 0.23)"
+      }
+    },
+    {
+      "id": "landuse-industrial",
+      "type": "fill",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "landuse",
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Polygon"
+        ],
+        [
+          "==",
+          "class",
+          "industrial"
+        ]
+      ],
+      "paint": {
+        "fill-color": "hsla(49, 100%, 88%, 0.34)"
+      }
+    },
+    {
+      "id": "park",
+      "type": "fill",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "park",
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Polygon"
+        ],
+        [
+          "!=",
+          "class",
+          "national_park"
+        ]
+      ],
+      "layout": {
+        "visibility": "visible"
+      },
+      "paint": {
+        "fill-color": "rgba(102, 170, 68, 1)",
+        "fill-opacity": {
+          "stops": [
+            [
+              7,
+              0
+            ],
+            [
+              9,
+              0.2
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "landuse-cemetery",
+      "type": "fill",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "landuse",
+      "filter": [
+        "==",
+        "class",
+        "cemetery"
+      ],
+      "paint": {
+        "fill-color": "#e0e4dd"
+      }
+    },
+    {
+      "id": "landuse-hospital",
+      "type": "fill",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "landuse",
+      "filter": [
+        "==",
+        "class",
+        "hospital"
+      ],
+      "paint": {
+        "fill-color": "#fde"
+      }
+    },
+    {
+      "id": "landuse-school",
+      "type": "fill",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "landuse",
+      "filter": [
+        "==",
+        "class",
+        "school"
+      ],
+      "paint": {
+        "fill-color": "#f0e8f8"
+      }
+    },
+    {
+      "id": "landuse-railway",
+      "type": "fill",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "landuse",
+      "filter": [
+        "==",
+        "class",
+        "railway"
+      ],
+      "paint": {
+        "fill-color": "hsla(30, 19%, 90%, 0.4)"
+      }
+    },
+    {
+      "id": "waterway_tunnel",
+      "type": "line",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "waterway",
+      "minzoom": 14,
+      "filter": [
+        "all",
+        [
+          "in",
+          "class",
+          "river",
+          "stream",
+          "canal"
+        ],
+        [
+          "==",
+          "brunnel",
+          "tunnel"
+        ]
+      ],
+      "layout": {
+        "line-cap": "round"
+      },
+      "paint": {
+        "line-color": "#65cbf9",
+        "line-width": {
+          "base": 1.3,
+          "stops": [
+            [
+              13,
+              0.5
+            ],
+            [
+              20,
+              6
+            ]
+          ]
+        },
+        "line-dasharray": [
+          2,
+          4
+        ]
+      }
+    },
+    {
+      "id": "waterway-other",
+      "type": "line",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "waterway",
+      "filter": [
+        "!in",
+        "class",
+        "canal",
+        "river",
+        "stream"
+      ],
+      "layout": {
+        "line-cap": "round"
+      },
+      "paint": {
+        "line-color": "#65cbf9",
+        "line-width": {
+          "base": 1.3,
+          "stops": [
+            [
+              13,
+              0.5
+            ],
+            [
+              20,
+              2
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "waterway-stream-canal",
+      "type": "line",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "waterway",
+      "filter": [
+        "all",
+        [
+          "in",
+          "class",
+          "canal",
+          "stream"
+        ],
+        [
+          "!=",
+          "brunnel",
+          "tunnel"
+        ]
+      ],
+      "layout": {
+        "line-cap": "round"
+      },
+      "paint": {
+        "line-color": "#65cbf9",
+        "line-width": {
+          "base": 1.3,
+          "stops": [
+            [
+              13,
+              0.5
+            ],
+            [
+              20,
+              6
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "waterway-name",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "waterway",
+      "minzoom": 13,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "LineString"
+        ],
+        [
+          "has",
+          "name"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 5,
+        "text-rotation-alignment": "map",
+        "symbol-placement": "line",
+        "text-letter-spacing": 0.2,
+        "symbol-spacing": 350
+      },
+      "paint": {
+        "text-color": "#65cbf9",
+        "text-halo-width": 1.5,
+        "text-halo-color": "rgba(255,255,255,0.7)"
+      }
+    },
+    {
+      "id": "water-name-lakeline",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "water_name",
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "LineString"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 5,
+        "text-rotation-alignment": "map",
+        "symbol-placement": "line",
+        "symbol-spacing": 350,
+        "text-letter-spacing": 0.2
+      },
+      "paint": {
+        "text-color": "#74aee9",
+        "text-halo-width": 1.5,
+        "text-halo-color": "rgba(255,255,255,0.7)"
+      }
+    },
+    {
+      "id": "water-name-ocean",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "water_name",
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Point"
+        ],
+        [
+          "==",
+          "class",
+          "ocean"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 5,
+        "text-rotation-alignment": "map",
+        "symbol-placement": "point",
+        "symbol-spacing": 350,
+        "text-letter-spacing": 0.2
+      },
+      "paint": {
+        "text-color": "#74aee9",
+        "text-halo-width": 1.5,
+        "text-halo-color": "rgba(255,255,255,0.7)"
+      }
+    },
+    {
+      "id": "water-name-other",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "water_name",
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Point"
+        ],
+        [
+          "!in",
+          "class",
+          "ocean"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ],
+        [
+          "!=",
+          "subclass",
+          "moat"
+        ]
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": {
+          "stops": [
+            [
+              0,
+              10
+            ],
+            [
+              6,
+              14
+            ]
+          ]
+        },
+        "text-field": "{name}",
+        "text-max-width": 5,
+        "text-rotation-alignment": "map",
+        "symbol-placement": "point",
+        "symbol-spacing": 350,
+        "text-letter-spacing": 0.2,
+        "visibility": "visible"
+      },
+      "paint": {
+        "text-color": "#74aee9",
+        "text-halo-width": 1.5,
+        "text-halo-color": "rgba(255,255,255,0.7)"
+      }
+    },
+    {
+      "id": "highway-minor-bridge-casing-blur",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 7,
+      "filter": [
+        "all",
+        [
+          "in",
+          "ftCode",
+          2702,
+          2703
+        ],
+        [
+          "!=",
+          "motorway",
+          1
+        ],
+        [
+          "!=",
+          "rdCtg",
+          0
+        ],
+        [
+          "!=",
+          "rdCtg",
+          1
+        ],
+        [
+          "!=",
+          "rdCtg",
+          2
+        ],
+        [
+          "!=",
+          "rdCtg",
+          3
+        ]
+      ],
+      "paint": {
+        "line-color": "#000000",
+        "line-width": {
+          "base": 1.2,
+          "stops": [
+            [
+              15,
+              1.2
+            ],
+            [
+              20,
+              15
+            ]
+          ]
+        },
+        "line-translate": {
+          "stops": [
+            [
+              14,
+              [
+                0,
+                0
+              ]
+            ],
+            [
+              17,
+              [
+                5,
+                2
+              ]
+            ]
+          ]
+        },
+        "line-opacity": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          14,
+          0.2,
+          17,
+          0.8,
+          18,
+          0
+        ],
+        "line-blur": {
+          "stops": [
+            [
+              14,
+              20
+            ],
+            [
+              17,
+              25
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "highway-secondary-bridge-casing-blur",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 7,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "!=",
+            "rnkWidth",
+            0
+          ],
+          [
+            "!=",
+            "rnkWidth",
+            4
+          ],
+          [
+            "in",
+            "ftCode",
+            2702,
+            2703
+          ],
+          [
+            "!=",
+            "motorway",
+            1
+          ],
+          [
+            "in",
+            "rdCtg",
+            0,
+            1,
+            2
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "ftCode",
+            52700
+          ],
+          [
+            "<",
+            "ftCode",
+            52800
+          ],
+          [
+            "!=",
+            "ftCode",
+            52703
+          ]
+        ]
+      ],
+      "layout": {
+        "line-join": "round",
+        "line-cap": "round"
+      },
+      "paint": {
+        "line-color": "#000000",
+        "line-translate": {
+          "stops": [
+            [
+              14,
+              [
+                0,
+                0
+              ]
+            ],
+            [
+              17,
+              [
+                5,
+                2
+              ]
+            ]
+          ]
+        },
+        "line-opacity": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          14,
+          0.2,
+          17,
+          0.8,
+          18,
+          0
+        ],
+        "line-blur": {
+          "stops": [
+            [
+              14,
+              20
+            ],
+            [
+              17,
+              25
+            ]
+          ]
+        },
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.6,
+          12,
+          0.9,
+          14,
+          4,
+          16,
+          14,
+          18,
+          24,
+          19,
+          72,
+          20,
+          166
+        ]
+      }
+    },
+    {
+      "id": "highway-primary-bridge-casing-blur",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 7,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "==",
+            "rnkWidth",
+            4
+          ],
+          [
+            "in",
+            "ftCode",
+            2702,
+            2703
+          ],
+          [
+            "!=",
+            "motorway",
+            1
+          ],
+          [
+            "in",
+            "rdCtg",
+            0,
+            1,
+            2
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "ftCode",
+            52700
+          ],
+          [
+            "<",
+            "ftCode",
+            52800
+          ],
+          [
+            "!=",
+            "ftCode",
+            52703
+          ]
+        ]
+      ],
+      "layout": {
+        "line-join": "round",
+        "line-cap": "round"
+      },
+      "paint": {
+        "line-color": "#000000",
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.6,
+          12,
+          0.9,
+          14,
+          4,
+          16,
+          14,
+          18,
+          24,
+          19,
+          72,
+          20,
+          166
+        ],
+        "line-translate": {
+          "stops": [
+            [
+              14,
+              [
+                0,
+                0
+              ]
+            ],
+            [
+              17,
+              [
+                5,
+                2
+              ]
+            ]
+          ]
+        },
+        "line-opacity": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          14,
+          0.2,
+          17,
+          0.8,
+          18,
+          0
+        ],
+        "line-blur": {
+          "stops": [
+            [
+              14,
+              20
+            ],
+            [
+              17,
+              25
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "highway-motorway-bridge-casing-blur",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 6,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "in",
+            "ftCode",
+            2702,
+            2703
+          ],
+          [
+            "any",
+            [
+              "==",
+              "motorway",
+              1
+            ],
+            [
+              "==",
+              "rdCtg",
+              3
+            ]
+          ]
+        ],
+        [
+          "==",
+          "ftCode",
+          52703
+        ]
+      ],
+      "layout": {
+        "line-join": "round",
+        "line-cap": "round"
+      },
+      "paint": {
+        "line-color": "#000000",
+        "line-translate": {
+          "stops": [
+            [
+              14,
+              [
+                0,
+                0
+              ]
+            ],
+            [
+              17,
+              [
+                5,
+                2
+              ]
+            ]
+          ]
+        },
+        "line-opacity": {
+          "stops": [
+            [
+              14,
+              0.2
+            ],
+            [
+              17,
+              0.6
+            ]
+          ]
+        },
+        "line-blur": {
+          "stops": [
+            [
+              14,
+              20
+            ],
+            [
+              17,
+              30
+            ]
+          ]
+        },
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.6,
+          12,
+          0.9,
+          14,
+          4,
+          16,
+          14,
+          18,
+          24,
+          19,
+          72,
+          20,
+          166
+        ]
+      }
+    },
+    {
+      "id": "highway-motorway-casing",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 4,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            ">=",
+            "ftCode",
+            2700
+          ],
+          [
+            "<",
+            "ftCode",
+            2800
+          ],
+          [
+            "!=",
+            "ftCode",
+            2702
+          ],
+          [
+            "!=",
+            "ftCode",
+            2703
+          ],
+          [
+            "!=",
+            "ftCode",
+            2704
+          ],
+          [
+            "any",
+            [
+              "==",
+              "motorway",
+              1
+            ],
+            [
+              "==",
+              "rdCtg",
+              3
+            ]
+          ]
+        ],
+        [
+          "==",
+          "ftCode",
+          52703
+        ]
+      ],
+      "layout": {
+        "line-cap": "butt",
+        "line-join": "round",
+        "visibility": "visible"
+      },
+      "paint": {
+        "line-color": "#4ed19e",
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.6,
+          12,
+          0.9,
+          14,
+          4,
+          16,
+          14,
+          18,
+          24,
+          19,
+          72,
+          20,
+          166
+        ],
+        "line-opacity": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0.6,
+          11,
+          1
+        ]
+      }
+    },
+    {
+      "id": "highway-minor",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "filter": [
+        "all",
+        [
+          ">=",
+          "ftCode",
+          2700
+        ],
+        [
+          "<",
+          "ftCode",
+          2800
+        ],
+        [
+          "!=",
+          "ftCode",
+          2704
+        ]
+      ],
+      "layout": {
+        "line-cap": "butt",
+        "line-join": "bevel"
+      },
+      "paint": {
+        "line-color": [
+          "step",
+          [
+            "zoom"
+          ],
+          "#ffffff",
+          16,
+          "#f5f5f5"
+        ],
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          13.5,
+          0,
+          14,
+          1.2,
+          16,
+          2.2,
+          20,
+          16
+        ]
+      }
+    },
+    {
+      "id": "highway-secondary",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 7,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "any",
+            [
+              "==",
+              "ftCode",
+              2701
+            ]
+          ],
+          [
+            "!=",
+            "motorway",
+            1
+          ],
+          [
+            "!=",
+            "rdCtg",
+            3
+          ],
+          [
+            "any",
+            [
+              "in",
+              "rdCtg",
+              0,
+              1,
+              2
+            ],
+            [
+              "==",
+              "rnkWidth",
+              4
+            ]
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "ftCode",
+            52700
+          ],
+          [
+            "<",
+            "ftCode",
+            52800
+          ],
+          [
+            "!=",
+            "ftCode",
+            52703
+          ]
+        ]
+      ],
+      "layout": {
+        "line-cap": "butt",
+        "line-join": "bevel",
+        "visibility": "visible"
+      },
+      "paint": {
+        "line-color": [
+          "step",
+          [
+            "zoom"
+          ],
+          "#ffffff",
+          16,
+          "#f5f5f5"
+        ],
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.5,
+          12,
+          0.8,
+          14,
+          3,
+          16,
+          10,
+          18,
+          20,
+          19,
+          68,
+          20,
+          160
+        ]
+      }
+    },
+    {
+      "id": "highway-primary",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 7,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "==",
+            "rnkWidth",
+            4
+          ],
+          [
+            "any",
+            [
+              "==",
+              "ftCode",
+              2701
+            ]
+          ],
+          [
+            "!=",
+            "motorway",
+            1
+          ],
+          [
+            "!=",
+            "rdCtg",
+            3
+          ],
+          [
+            "in",
+            "rdCtg",
+            0,
+            1,
+            2,
+            6
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "ftCode",
+            52700
+          ],
+          [
+            "<",
+            "ftCode",
+            52800
+          ],
+          [
+            "!=",
+            "ftCode",
+            52703
+          ]
+        ]
+      ],
+      "layout": {
+        "line-cap": "round",
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": [
+          "step",
+          [
+            "zoom"
+          ],
+          "#ffffff",
+          16,
+          "#f5f5f5"
+        ],
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.5,
+          12,
+          0.8,
+          14,
+          3,
+          16,
+          10,
+          18,
+          20,
+          19,
+          68,
+          20,
+          160
+        ]
+      }
+    },
+    {
+      "id": "road-outline",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 16,
+      "filter": [
+        "all",
+        [
+          ">=",
+          "ftCode",
+          2200
+        ],
+        [
+          "<",
+          "ftCode",
+          2700
+        ]
+      ],
+      "layout": {
+        "line-cap": "round",
+        "line-join": "round",
+        "visibility": "visible"
+      },
+      "paint": {
+        "line-color": "#DDDDDD",
+        "line-width": 2
+      }
+    },
+    {
+      "id": "highway-motorway",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 6,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            ">=",
+            "ftCode",
+            2700
+          ],
+          [
+            "<",
+            "ftCode",
+            2800
+          ],
+          [
+            "!=",
+            "ftCode",
+            2702
+          ],
+          [
+            "!=",
+            "ftCode",
+            2703
+          ],
+          [
+            "!=",
+            "ftCode",
+            2704
+          ],
+          [
+            "any",
+            [
+              "==",
+              "motorway",
+              1
+            ],
+            [
+              "==",
+              "rdCtg",
+              3
+            ]
+          ]
+        ],
+        [
+          "==",
+          "ftCode",
+          52703
+        ]
+      ],
+      "layout": {
+        "line-cap": "round",
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          6,
+          "#00A54E",
+          13,
+          "#3dcc80"
+        ],
+        "line-width": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          6,
+          2,
+          8,
+          2,
+          14,
+          3,
+          16,
+          10,
+          18,
+          20,
+          19,
+          68,
+          20,
+          160
+        ]
+      }
+    },
+    {
+      "id": "building",
+      "type": "fill",
+      "source": "gsi-japan",
+      "source-layer": "building",
+      "minzoom": 15,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Polygon"
+        ],
+        [
+          "!in",
+          "ftCode",
+          3112,
+          3111
+        ]
+      ],
+      "paint": {
+        "fill-color": "rgba(236, 236, 236, 0.9)",
+        "fill-outline-color": "#ccc",
+        "fill-antialias": true
+      }
+    },
+    {
+      "id": "building-nowall",
+      "type": "fill",
+      "source": "gsi-japan",
+      "source-layer": "building",
+      "minzoom": 15,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Polygon"
+        ],
+        [
+          "in",
+          "ftCode",
+          3111,
+          3112
+        ]
+      ],
+      "paint": {
+        "fill-color": "#e2dcd4",
+        "fill-outline-color": "#d7cfc2",
+        "fill-opacity": 0.6,
+        "fill-antialias": true
+      }
+    },
+    {
+      "id": "structurea-casing",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "structurea",
+      "minzoom": 15,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Polygon"
+        ]
+      ],
+      "layout": {
+        "visibility": "visible"
+      },
+      "paint": {
+        "line-color": "#DEDEDE",
+        "line-width": {
+          "stops": [
+            [
+              15,
+              1
+            ],
+            [
+              18,
+              3
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "structurea",
+      "type": "fill",
+      "source": "gsi-japan",
+      "source-layer": "structurea",
+      "minzoom": 15,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Polygon"
+        ]
+      ],
+      "layout": {
+        "visibility": "visible"
+      },
+      "paint": {
+        "fill-color": "#FAFAFA"
+      }
+    },
+    {
+      "id": "highway-secondary-tunnel-casing",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 4,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "==",
+            "ftCode",
+            2704
+          ],
+          [
+            "!=",
+            "motorway",
+            1
+          ],
+          [
+            "!=",
+            "rdCtg",
+            3
+          ],
+          [
+            "any",
+            [
+              "in",
+              "rdCtg",
+              0,
+              1,
+              2
+            ],
+            [
+              "==",
+              "rnkWidth",
+              4
+            ]
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "ftCode",
+            52700
+          ],
+          [
+            "<",
+            "ftCode",
+            52800
+          ],
+          [
+            "!=",
+            "ftCode",
+            52703
+          ]
+        ]
+      ],
+      "layout": {
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": "#9C9DA2",
+        "line-dasharray": [
+          0.5,
+          0.25
+        ],
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.6,
+          12,
+          0.9,
+          14,
+          4,
+          16,
+          14,
+          18,
+          24,
+          19,
+          72,
+          20,
+          166
+        ]
+      }
+    },
+    {
+      "id": "highway-secondary-tunnel",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 4,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "==",
+            "ftCode",
+            2704
+          ],
+          [
+            "!=",
+            "motorway",
+            1
+          ],
+          [
+            "!=",
+            "rdCtg",
+            3
+          ],
+          [
+            "any",
+            [
+              "in",
+              "rdCtg",
+              0,
+              1,
+              2
+            ],
+            [
+              "==",
+              "rnkWidth",
+              4
+            ]
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "ftCode",
+            52700
+          ],
+          [
+            "<",
+            "ftCode",
+            52800
+          ],
+          [
+            "!=",
+            "ftCode",
+            52703
+          ]
+        ]
+      ],
+      "layout": {
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": "#D8D8D8",
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.5,
+          12,
+          0.8,
+          14,
+          3,
+          16,
+          10,
+          18,
+          20,
+          19,
+          68,
+          20,
+          160
+        ]
+      }
+    },
+    {
+      "id": "highway-primary-tunnel-casing",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 7,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "==",
+            "rnkWidth",
+            4
+          ],
+          [
+            "in",
+            "ftCode",
+            2704
+          ],
+          [
+            "!=",
+            "motorway",
+            1
+          ],
+          [
+            "in",
+            "rdCtg",
+            0,
+            1,
+            2
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "ftCode",
+            52700
+          ],
+          [
+            "<",
+            "ftCode",
+            52800
+          ],
+          [
+            "!=",
+            "ftCode",
+            52703
+          ]
+        ]
+      ],
+      "layout": {
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": "#9C9DA2",
+        "line-dasharray": [
+          0.5,
+          0.25
+        ],
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.6,
+          12,
+          0.9,
+          14,
+          4,
+          16,
+          14,
+          18,
+          24,
+          19,
+          72,
+          20,
+          166
+        ]
+      }
+    },
+    {
+      "id": "highway-primary-tunnel",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 7,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "==",
+            "rnkWidth",
+            4
+          ],
+          [
+            "in",
+            "ftCode",
+            2704
+          ],
+          [
+            "!=",
+            "motorway",
+            1
+          ],
+          [
+            "in",
+            "rdCtg",
+            0,
+            1,
+            2
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "ftCode",
+            52700
+          ],
+          [
+            "<",
+            "ftCode",
+            52800
+          ],
+          [
+            "!=",
+            "ftCode",
+            52703
+          ]
+        ]
+      ],
+      "layout": {
+        "line-join": "round",
+        "visibility": "visible"
+      },
+      "paint": {
+        "line-color": "#D8D8D8",
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.5,
+          12,
+          0.8,
+          14,
+          3,
+          16,
+          10,
+          18,
+          20,
+          19,
+          68,
+          20,
+          160
+        ]
+      }
+    },
+    {
+      "id": "highway-motorway-tunnel-casing",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 6,
+      "filter": [
+        "all",
+        [
+          "==",
+          "ftCode",
+          2704
+        ],
+        [
+          "any",
+          [
+            "==",
+            "motorway",
+            1
+          ],
+          [
+            "==",
+            "rdCtg",
+            3
+          ]
+        ]
+      ],
+      "layout": {
+        "line-join": "round",
+        "visibility": "visible"
+      },
+      "paint": {
+        "line-color": "#9C9DA2",
+        "line-dasharray": [
+          0.5,
+          0.25
+        ],
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.6,
+          12,
+          0.9,
+          14,
+          4,
+          16,
+          14,
+          18,
+          24,
+          19,
+          72,
+          20,
+          166
+        ]
+      }
+    },
+    {
+      "id": "highway-motorway-tunnel",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 6,
+      "filter": [
+        "all",
+        [
+          "==",
+          "ftCode",
+          2704
+        ],
+        [
+          "any",
+          [
+            "==",
+            "motorway",
+            1
+          ],
+          [
+            "==",
+            "rdCtg",
+            3
+          ]
+        ]
+      ],
+      "layout": {
+        "line-join": "round",
+        "visibility": "visible"
+      },
+      "paint": {
+        "line-color": {
+          "stops": [
+            [
+              8,
+              "#00A54E"
+            ],
+            [
+              13,
+              "#D8D8D8"
+            ]
+          ]
+        },
+        "line-width": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          6,
+          2,
+          8,
+          2,
+          14,
+          3,
+          16,
+          10,
+          18,
+          20,
+          19,
+          68,
+          20,
+          160
+        ]
+      }
+    },
+    {
+      "id": "highway-minor-bridge-casing",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 7,
+      "filter": [
+        "all",
+        [
+          "in",
+          "ftCode",
+          2702,
+          2703
+        ],
+        [
+          "!=",
+          "motorway",
+          1
+        ],
+        [
+          "!=",
+          "rdCtg",
+          0
+        ],
+        [
+          "!=",
+          "rdCtg",
+          1
+        ],
+        [
+          "!=",
+          "rdCtg",
+          2
+        ],
+        [
+          "!=",
+          "rdCtg",
+          3
+        ]
+      ],
+      "paint": {
+        "line-color": "#f8f4f0",
+        "line-width": {
+          "base": 1.2,
+          "stops": [
+            [
+              15,
+              1.2
+            ],
+            [
+              20,
+              18
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "highway-minor-bridge",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 7,
+      "filter": [
+        "all",
+        [
+          "in",
+          "ftCode",
+          2702,
+          2703
+        ],
+        [
+          "!=",
+          "motorway",
+          1
+        ],
+        [
+          "!=",
+          "rdCtg",
+          0
+        ],
+        [
+          "!=",
+          "rdCtg",
+          1
+        ],
+        [
+          "!=",
+          "rdCtg",
+          2
+        ],
+        [
+          "!=",
+          "rdCtg",
+          3
+        ]
+      ],
+      "paint": {
+        "line-color": [
+          "step",
+          [
+            "zoom"
+          ],
+          "#ffffff",
+          16,
+          "#f5f5f5"
+        ],
+        "line-width": {
+          "base": 1.2,
+          "stops": [
+            [
+              15,
+              1.2
+            ],
+            [
+              20,
+              4
+            ]
+          ]
+        },
+        "line-dasharray": [
+          1.5,
+          0.75
+        ]
+      }
+    },
+    {
+      "id": "highway-secondary-bridge-casing",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 7,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "!=",
+            "rnkWidth",
+            0
+          ],
+          [
+            "!=",
+            "rnkWidth",
+            4
+          ],
+          [
+            "in",
+            "ftCode",
+            2702,
+            2703
+          ],
+          [
+            "!=",
+            "motorway",
+            1
+          ],
+          [
+            "in",
+            "rdCtg",
+            0,
+            1,
+            2
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "ftCode",
+            52700
+          ],
+          [
+            "<",
+            "ftCode",
+            52800
+          ],
+          [
+            "!=",
+            "ftCode",
+            52703
+          ]
+        ]
+      ],
+      "layout": {
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": "rgba(222, 222, 222, 1)",
+        "line-opacity": 1,
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.6,
+          12,
+          0.9,
+          14,
+          4,
+          16,
+          14,
+          18,
+          24,
+          19,
+          72,
+          20,
+          166
+        ]
+      }
+    },
+    {
+      "id": "highway-secondary-bridge",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 7,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "!=",
+            "rnkWidth",
+            0
+          ],
+          [
+            "!=",
+            "rnkWidth",
+            4
+          ],
+          [
+            "in",
+            "ftCode",
+            2702,
+            2703
+          ],
+          [
+            "!=",
+            "motorway",
+            1
+          ],
+          [
+            "in",
+            "rdCtg",
+            0,
+            1,
+            2
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "ftCode",
+            52700
+          ],
+          [
+            "<",
+            "ftCode",
+            52800
+          ],
+          [
+            "!=",
+            "ftCode",
+            52703
+          ]
+        ]
+      ],
+      "layout": {
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": [
+          "step",
+          [
+            "zoom"
+          ],
+          "#ffffff",
+          16,
+          "#f5f5f5"
+        ],
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.5,
+          12,
+          0.8,
+          14,
+          3,
+          16,
+          10,
+          18,
+          20,
+          19,
+          68,
+          20,
+          160
+        ]
+      }
+    },
+    {
+      "id": "highway-primary-bridge-casing",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 7,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "==",
+            "rnkWidth",
+            4
+          ],
+          [
+            "in",
+            "ftCode",
+            2702,
+            2703
+          ],
+          [
+            "!=",
+            "motorway",
+            1
+          ],
+          [
+            "in",
+            "rdCtg",
+            0,
+            1,
+            2
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "ftCode",
+            52700
+          ],
+          [
+            "<",
+            "ftCode",
+            52800
+          ],
+          [
+            "!=",
+            "ftCode",
+            52703
+          ]
+        ]
+      ],
+      "layout": {
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": "rgba(222, 222, 222, 1)",
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.6,
+          12,
+          0.9,
+          14,
+          4,
+          16,
+          14,
+          18,
+          24,
+          19,
+          72,
+          20,
+          166
+        ]
+      }
+    },
+    {
+      "id": "highway-primary-bridge",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 7,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "==",
+            "rnkWidth",
+            4
+          ],
+          [
+            "in",
+            "ftCode",
+            2702,
+            2703
+          ],
+          [
+            "!=",
+            "motorway",
+            1
+          ],
+          [
+            "in",
+            "rdCtg",
+            0,
+            1,
+            2
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "ftCode",
+            52700
+          ],
+          [
+            "<",
+            "ftCode",
+            52800
+          ],
+          [
+            "!=",
+            "ftCode",
+            52703
+          ]
+        ]
+      ],
+      "layout": {
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": [
+          "step",
+          [
+            "zoom"
+          ],
+          "#ffffff",
+          16,
+          "#f5f5f5"
+        ],
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.5,
+          12,
+          0.8,
+          14,
+          3,
+          16,
+          10,
+          18,
+          20,
+          19,
+          68,
+          20,
+          160
+        ]
+      }
+    },
+    {
+      "id": "highway-motorway-bridge-casing",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 6,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "in",
+            "ftCode",
+            2702,
+            2703
+          ],
+          [
+            "any",
+            [
+              "==",
+              "motorway",
+              1
+            ],
+            [
+              "==",
+              "rdCtg",
+              3
+            ]
+          ]
+        ],
+        [
+          "==",
+          "ftCode",
+          52703
+        ]
+      ],
+      "layout": {
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": "#4ed19e",
+        "line-opacity": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          11,
+          1
+        ],
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.6,
+          12,
+          0.9,
+          14,
+          4,
+          16,
+          14,
+          18,
+          24,
+          19,
+          72,
+          20,
+          166
+        ]
+      }
+    },
+    {
+      "id": "highway-motorway-bridge",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "road",
+      "minzoom": 6,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "in",
+            "ftCode",
+            2702,
+            2703
+          ],
+          [
+            "any",
+            [
+              "==",
+              "motorway",
+              1
+            ],
+            [
+              "==",
+              "rdCtg",
+              3
+            ]
+          ]
+        ],
+        [
+          "==",
+          "ftCode",
+          52703
+        ]
+      ],
+      "layout": {
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          6,
+          "#00A54E",
+          13,
+          "#3dcc80"
+        ],
+        "line-width": [
+          "interpolate",
+          [
+            "exponential",
+            0.9
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          0,
+          9,
+          0.5,
+          12,
+          0.8,
+          14,
+          3,
+          16,
+          10,
+          18,
+          20,
+          19,
+          68,
+          20,
+          160
+        ]
+      }
+    },
+    {
+      "id": "railway-subway",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "railway",
+      "minzoom": 13,
+      "filter": [
+        "any",
+        [
+          "==",
+          "rtCode10",
+          "2"
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "rtCode",
+            "40203000000"
+          ],
+          [
+            "<",
+            "rtCode",
+            "40204000000"
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "rtCode1",
+            "40203000000"
+          ],
+          [
+            "<",
+            "rtCode1",
+            "40204000000"
+          ]
+        ]
+      ],
+      "paint": {
+        "line-color": "#9dabdd",
+        "line-opacity": 1,
+        "line-width": 1.5
+      }
+    },
+    {
+      "id": "railway-tunnel",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "railway",
+      "minzoom": 10,
+      "filter": [
+        "all",
+        [
+          "in",
+          "railState",
+          100,
+          200,
+          300,
+          2,
+          3,
+          4
+        ]
+      ],
+      "paint": {
+        "line-color": "#908150",
+        "line-opacity": 0.6,
+        "line-width": {
+          "stops": [
+            [
+              10,
+              1
+            ],
+            [
+              22,
+              3
+            ]
+          ]
+        },
+        "line-dasharray": [
+          3,
+          2
+        ]
+      }
+    },
+    {
+      "id": "railway-minor",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "railway",
+      "minzoom": 14,
+      "filter": [
+        "all",
+        [
+          "in",
+          "railState",
+          0,
+          200,
+          400,
+          4,
+          5,
+          6,
+          7
+        ],
+        [
+          "any",
+          [
+            "==",
+            "rtCode10",
+            "0"
+          ],
+          [
+            "!has",
+            "rtCode10"
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "rtCode1",
+            "40217000000"
+          ],
+          [
+            "<",
+            "rtCode1",
+            "40218000000"
+          ]
+        ]
+      ],
+      "paint": {
+        "line-color": "#999999",
+        "line-width": {
+          "stops": [
+            [
+              10,
+              1
+            ],
+            [
+              22,
+              2
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "railway-minor-hatching",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "railway",
+      "minzoom": 14,
+      "filter": [
+        "all",
+        [
+          "in",
+          "railState",
+          0,
+          200,
+          400,
+          4,
+          5,
+          6,
+          7
+        ],
+        [
+          "any",
+          [
+            "==",
+            "rtCode10",
+            "0"
+          ],
+          [
+            "!has",
+            "rtCode10"
+          ]
+        ],
+        [
+          "all",
+          [
+            ">=",
+            "rtCode1",
+            "40217000000"
+          ],
+          [
+            "<",
+            "rtCode1",
+            "40218000000"
+          ]
+        ]
+      ],
+      "paint": {
+        "line-color": "#999999",
+        "line-dasharray": [
+          0.2,
+          1.5
+        ],
+        "line-width": {
+          "stops": [
+            [
+              10,
+              4
+            ],
+            [
+              22,
+              8
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "railway-secondary",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "railway",
+      "minzoom": 10,
+      "filter": [
+        "all",
+        [
+          "in",
+          "railState",
+          0,
+          200,
+          400,
+          4,
+          5,
+          6,
+          7
+        ],
+        [
+          "any",
+          [
+            "==",
+            "rtCode10",
+            "0"
+          ],
+          [
+            "!has",
+            "rtCode10"
+          ]
+        ],
+        [
+          "any",
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40202000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40203000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40202000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40203000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40205000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40206000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40205000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40206000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40204000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40205000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40217000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40218000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40204000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40205000000"
+            ]
+          ]
+        ]
+      ],
+      "paint": {
+        "line-color": "#999999",
+        "line-width": {
+          "stops": [
+            [
+              10,
+              1
+            ],
+            [
+              22,
+              2
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "railway-secondary-hatching",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "railway",
+      "minzoom": 10,
+      "filter": [
+        "all",
+        [
+          "in",
+          "railState",
+          0,
+          200,
+          400,
+          4,
+          5,
+          6,
+          7
+        ],
+        [
+          "any",
+          [
+            "==",
+            "rtCode10",
+            "0"
+          ],
+          [
+            "!has",
+            "rtCode10"
+          ]
+        ],
+        [
+          "any",
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40202000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40203000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40202000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40203000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40205000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40206000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40205000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40206000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40204000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40205000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40217000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40218000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40204000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40205000000"
+            ]
+          ]
+        ]
+      ],
+      "paint": {
+        "line-color": "#999999",
+        "line-dasharray": [
+          0.2,
+          1.5
+        ],
+        "line-width": {
+          "stops": [
+            [
+              10,
+              4
+            ],
+            [
+              22,
+              8
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "railway-jr",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "railway",
+      "minzoom": 10,
+      "filter": [
+        "all",
+        [
+          "in",
+          "railState",
+          0,
+          200,
+          400,
+          4,
+          5,
+          6,
+          7
+        ],
+        [
+          "any",
+          [
+            "==",
+            "rtCode10",
+            "0"
+          ],
+          [
+            "==",
+            "rtCode10",
+            "1"
+          ],
+          [
+            "!has",
+            "rtCode10"
+          ]
+        ],
+        [
+          "any",
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40201000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40202000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40201000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40202000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40216000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40217000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40216000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40217000000"
+            ]
+          ]
+        ]
+      ],
+      "paint": {
+        "line-color": "#999999",
+        "line-width": {
+          "stops": [
+            [
+              6,
+              2
+            ],
+            [
+              10,
+              3
+            ],
+            [
+              18,
+              4
+            ],
+            [
+              22,
+              20
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "railway-jr-hatching",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "railway",
+      "minzoom": 10,
+      "filter": [
+        "all",
+        [
+          "in",
+          "railState",
+          0,
+          200,
+          400,
+          4,
+          5,
+          6,
+          7
+        ],
+        [
+          "any",
+          [
+            "==",
+            "rtCode10",
+            "0"
+          ],
+          [
+            "==",
+            "rtCode10",
+            "1"
+          ],
+          [
+            "!has",
+            "rtCode10"
+          ]
+        ],
+        [
+          "any",
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40201000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40202000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40201000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40202000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40216000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40217000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40216000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40217000000"
+            ]
+          ]
+        ]
+      ],
+      "paint": {
+        "line-color": "#FFFFFF",
+        "line-dasharray": [
+          3,
+          4
+        ],
+        "line-width": {
+          "stops": [
+            [
+              6,
+              1
+            ],
+            [
+              10,
+              2
+            ],
+            [
+              18,
+              3
+            ],
+            [
+              22,
+              19
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "railway-jr-bridge",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "railway",
+      "minzoom": 10,
+      "filter": [
+        "all",
+        [
+          "==",
+          "railState",
+          1
+        ],
+        [
+          "any",
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40201000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40202000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40201000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40202000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40216000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40217000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40216000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40217000000"
+            ]
+          ]
+        ]
+      ],
+      "paint": {
+        "line-color": "#999999",
+        "line-width": {
+          "stops": [
+            [
+              6,
+              2
+            ],
+            [
+              10,
+              3
+            ],
+            [
+              18,
+              4
+            ],
+            [
+              22,
+              20
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "railway-secondary-bridge",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "railway",
+      "minzoom": 10,
+      "filter": [
+        "all",
+        [
+          "in",
+          "railState",
+          1
+        ],
+        [
+          "any",
+          [
+            "==",
+            "rtCode10",
+            "0"
+          ],
+          [
+            "==",
+            "rtCode10",
+            "1"
+          ],
+          [
+            "!has",
+            "rtCode10"
+          ]
+        ],
+        [
+          "any",
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40202000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40203000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40202000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40203000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40205000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40206000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40205000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40206000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40204000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40205000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40217000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40218000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40204000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40205000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40217000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40218000000"
+            ]
+          ]
+        ]
+      ],
+      "paint": {
+        "line-color": "#999999",
+        "line-width": {
+          "stops": [
+            [
+              10,
+              1
+            ],
+            [
+              22,
+              2
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "railway-secondary-bridge-hatching",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "railway",
+      "minzoom": 10,
+      "filter": [
+        "all",
+        [
+          "in",
+          "railState",
+          1
+        ],
+        [
+          "any",
+          [
+            "==",
+            "rtCode10",
+            "0"
+          ],
+          [
+            "==",
+            "rtCode10",
+            "1"
+          ],
+          [
+            "!has",
+            "rtCode10"
+          ]
+        ],
+        [
+          "any",
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40202000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40203000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40202000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40203000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40205000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40206000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40205000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40206000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40204000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40205000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40217000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40218000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40204000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40205000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40217000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40218000000"
+            ]
+          ]
+        ]
+      ],
+      "paint": {
+        "line-color": "#999999",
+        "line-dasharray": [
+          0.2,
+          1.5
+        ],
+        "line-width": {
+          "stops": [
+            [
+              10,
+              4
+            ],
+            [
+              22,
+              8
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "railway-jr-bridge-hatching",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "railway",
+      "minzoom": 10,
+      "filter": [
+        "all",
+        [
+          "==",
+          "railState",
+          1
+        ],
+        [
+          "any",
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40201000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40202000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40201000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40202000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode",
+              "40216000000"
+            ],
+            [
+              "<",
+              "rtCode",
+              "40217000000"
+            ]
+          ],
+          [
+            "all",
+            [
+              ">=",
+              "rtCode1",
+              "40216000000"
+            ],
+            [
+              "<",
+              "rtCode1",
+              "40217000000"
+            ]
+          ]
+        ]
+      ],
+      "paint": {
+        "line-color": "#FFFFFF",
+        "line-dasharray": [
+          3,
+          4
+        ],
+        "line-width": {
+          "stops": [
+            [
+              6,
+              1
+            ],
+            [
+              10,
+              2
+            ],
+            [
+              18,
+              3
+            ],
+            [
+              22,
+              19
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "railway-jr-high-speed",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "railway",
+      "minzoom": 5,
+      "filter": [
+        "any",
+        [
+          "==",
+          "rtCode10",
+          "1"
+        ],
+        [
+          "==",
+          "ftCode",
+          58203
+        ],
+        [
+          "==",
+          "ftCode",
+          58204
+        ]
+      ],
+      "paint": {
+        "line-color": "#5747C7",
+        "line-width": {
+          "stops": [
+            [
+              5,
+              2
+            ],
+            [
+              10,
+              3
+            ],
+            [
+              18,
+              4
+            ],
+            [
+              22,
+              20
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "railway-jr-high-speed-hatching",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "railway",
+      "minzoom": 5,
+      "filter": [
+        "any",
+        [
+          "==",
+          "rtCode10",
+          "1"
+        ],
+        [
+          "==",
+          "ftCode",
+          58203
+        ],
+        [
+          "==",
+          "ftCode",
+          58204
+        ]
+      ],
+      "paint": {
+        "line-color": "#FFFFFF",
+        "line-dasharray": [
+          3,
+          4
+        ],
+        "line-width": {
+          "stops": [
+            [
+              5,
+              1
+            ],
+            [
+              10,
+              2
+            ],
+            [
+              18,
+              3
+            ],
+            [
+              22,
+              19
+            ]
+          ]
+        }
+      }
+    },
+    {
+      "id": "boundary-sea",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "boundary",
+      "minzoom": 6,
+      "maxzoom": 8,
+      "filter": [
+        "all",
+        [
+          "in",
+          "ftCode",
+          51221
+        ]
+      ],
+      "layout": {
+        "line-join": "round",
+        "visibility": "visible"
+      },
+      "paint": {
+        "line-color": "#9e9cab",
+        "line-dasharray": [
+          4,
+          1,
+          1,
+          1
+        ],
+        "line-width": 2
+      }
+    },
+    {
+      "id": "boundary",
+      "type": "line",
+      "source": "gsi-japan",
+      "source-layer": "boundary",
+      "minzoom": 6,
+      "maxzoom": 14,
+      "filter": [
+        "all",
+        [
+          "in",
+          "ftCode",
+          1211,
+          1212,
+          51212
+        ]
+      ],
+      "layout": {
+        "line-join": "round"
+      },
+      "paint": {
+        "line-color": "rgba(68,68,68,0.7)",
+        "line-dasharray": [
+          3,
+          1,
+          1,
+          1
+        ],
+        "line-width": {
+          "base": 1.4,
+          "stops": [
+            [
+              8,
+              1.2
+            ],
+            [
+              12,
+              2
+            ]
+          ]
+        },
+        "line-opacity": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          6,
+          1,
+          14,
+          0.1
+        ]
+      }
+    },
+    {
+      "id": "building-3d",
+      "type": "fill-extrusion",
+      "metadata": {
+        "visible-on-3d": true
+      },
+      "source": "gsi-japan",
+      "source-layer": "building",
+      "minzoom": 16,
+      "layout": {
+        "visibility": "none"
+      },
+      "paint": {
+        "fill-extrusion-color": "#D7D4D1",
+        "fill-extrusion-height": [
+          "match",
+          [
+            "get",
+            "ftCode"
+          ],
+          3101,
+          3,
+          3102,
+          30,
+          3013,
+          100,
+          3111,
+          3,
+          3112,
+          10,
+          10
+        ],
+        "fill-extrusion-opacity": 0.5
+      }
+    },
+    {
+      "id": "structurea-3d",
+      "type": "fill-extrusion",
+      "metadata": {
+        "visible-on-3d": true
+      },
+      "source": "gsi-japan",
+      "source-layer": "structurea",
+      "minzoom": 16,
+      "layout": {
+        "visibility": "none"
+      },
+      "paint": {
+        "fill-extrusion-color": "#EEEEEE",
+        "fill-extrusion-height": 30,
+        "fill-extrusion-opacity": 0.4
+      }
+    },
+    {
+      "id": "poi",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "poi",
+      "minzoom": 16,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Point"
+        ],
+        [
+          ">",
+          "rank",
+          25
+        ],
+        [
+          "has",
+          "name"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "icon-image": [
+          "coalesce",
+          [
+            "image",
+            [
+              "get",
+              "class"
+            ]
+          ],
+          [
+            "image",
+            "circle"
+          ]
+        ],
+        "text-field": "{name}",
+        "text-size": 12,
+        "text-max-width": 9,
+        "text-variable-anchor": [
+          "top",
+          "bottom",
+          "left",
+          "right"
+        ],
+        "text-radial-offset": 0.7,
+        "text-justify": "center",
+        "text-anchor": "center"
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#666",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "oc-label-town",
+      "type": "symbol",
+      "source": "oceanus",
+      "source-layer": "oc-label",
+      "minzoom": 6,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "town"
+        ],
+        [
+          "==",
+          [
+            "has",
+            "jflag"
+          ],
+          false
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "icon-image": "circle",
+        "text-field": "{name}",
+        "text-offset": [
+          0,
+          0.6
+        ],
+        "text-size": 12,
+        "text-max-width": 9
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#666",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "oc-label-town-ja",
+      "type": "symbol",
+      "source": "oceanus",
+      "source-layer": "oc-label",
+      "minzoom": 7,
+      "maxzoom": 8,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "town"
+        ],
+        [
+          "has",
+          "jflag"
+        ],
+        [
+          "==",
+          [
+            "has",
+            "pref-capital"
+          ],
+          false
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "icon-image": "circle-stroked",
+        "icon-size": 0.8,
+        "text-field": [
+          "match",
+          [
+            "length",
+            [
+              "get",
+              "name"
+            ]
+          ],
+          2,
+          [
+            "get",
+            "name"
+          ],
+          3,
+          [
+            "slice",
+            [
+              "get",
+              "name"
+            ],
+            0,
+            2
+          ],
+          4,
+          [
+            "slice",
+            [
+              "get",
+              "name"
+            ],
+            0,
+            3
+          ],
+          5,
+          [
+            "slice",
+            [
+              "get",
+              "name"
+            ],
+            0,
+            4
+          ],
+          [
+            "get",
+            "name"
+          ]
+        ],
+        "text-offset": [
+          0,
+          0.6
+        ],
+        "text-size": 12,
+        "text-max-width": 9
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#333",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "oc-label-pref",
+      "type": "symbol",
+      "source": "oceanus",
+      "source-layer": "oc-label",
+      "minzoom": 5,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "pref"
+        ],
+        [
+          "==",
+          [
+            "has",
+            "jflag"
+          ],
+          false
+        ]
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": {
+          "stops": [
+            [
+              5,
+              12
+            ],
+            [
+              8,
+              14
+            ]
+          ]
+        },
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "text-color": "rgba(102, 102, 102, 1)",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "oc-label-pref-ja",
+      "type": "symbol",
+      "source": "oceanus",
+      "source-layer": "oc-label",
+      "minzoom": 6,
+      "maxzoom": 8,
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "pref"
+        ],
+        [
+          "has",
+          "jflag"
+        ]
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": {
+          "stops": [
+            [
+              6,
+              13
+            ],
+            [
+              8,
+              17
+            ]
+          ]
+        },
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "text-color": "rgba(126, 126, 126, 1)",
+        "text-halo-width": 1,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "oc-label-pref-capital-ja",
+      "type": "symbol",
+      "source": "oceanus",
+      "source-layer": "oc-label",
+      "minzoom": 7,
+      "maxzoom": 8,
+      "filter": [
+        "all",
+        [
+          "has",
+          "jflag"
+        ],
+        [
+          "has",
+          "pref-capital"
+        ],
+        [
+          "!in",
+          "name",
+          "福岡市",
+          "広島市",
+          "大阪市",
+          "神戸市",
+          "名古屋市",
+          "横浜市",
+          "東京",
+          "新潟市",
+          "仙台市",
+          "盛岡市",
+          "札幌市"
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "text-variable-anchor": [
+          "top",
+          "bottom",
+          "left",
+          "right"
+        ],
+        "icon-image": "circle-stroked",
+        "icon-size": 0.8,
+        "icon-allow-overlap": true,
+        "text-field": [
+          "match",
+          [
+            "length",
+            [
+              "get",
+              "name"
+            ]
+          ],
+          2,
+          [
+            "get",
+            "name"
+          ],
+          3,
+          [
+            "slice",
+            [
+              "get",
+              "name"
+            ],
+            0,
+            2
+          ],
+          4,
+          [
+            "slice",
+            [
+              "get",
+              "name"
+            ],
+            0,
+            3
+          ],
+          5,
+          [
+            "slice",
+            [
+              "get",
+              "name"
+            ],
+            0,
+            4
+          ],
+          [
+            "get",
+            "name"
+          ]
+        ],
+        "text-offset": [
+          0.6,
+          0.6
+        ],
+        "text-size": 12,
+        "text-max-width": 9
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "rgba(71, 71, 71, 1)",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "oc-label-pref-capital-popular-ja",
+      "type": "symbol",
+      "source": "oceanus",
+      "source-layer": "oc-label",
+      "minzoom": 5,
+      "maxzoom": 8,
+      "filter": [
+        "all",
+        [
+          "has",
+          "jflag"
+        ],
+        [
+          "has",
+          "pref-capital"
+        ],
+        [
+          "in",
+          "name",
+          "福岡市",
+          "鹿児島市",
+          "長崎市",
+          "広島市",
+          "岡山市",
+          "大阪市",
+          "神戸市",
+          "京都市",
+          "名古屋市",
+          "金沢市",
+          "静岡市",
+          "横浜市",
+          "東京",
+          "宇都宮市",
+          "新潟市",
+          "福島市",
+          "仙台市",
+          "盛岡市",
+          "青森市",
+          "札幌市"
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans CJK JP Bold"
+        ],
+        "text-anchor": "top",
+        "text-variable-anchor": [
+          "top",
+          "bottom",
+          "left",
+          "right"
+        ],
+        "icon-image": "circle-stroked",
+        "icon-size": 0.8,
+        "icon-allow-overlap": true,
+        "text-field": [
+          "match",
+          [
+            "length",
+            [
+              "get",
+              "name"
+            ]
+          ],
+          2,
+          [
+            "get",
+            "name"
+          ],
+          3,
+          [
+            "slice",
+            [
+              "get",
+              "name"
+            ],
+            0,
+            2
+          ],
+          4,
+          [
+            "slice",
+            [
+              "get",
+              "name"
+            ],
+            0,
+            3
+          ],
+          5,
+          [
+            "slice",
+            [
+              "get",
+              "name"
+            ],
+            0,
+            4
+          ],
+          [
+            "get",
+            "name"
+          ]
+        ],
+        "text-offset": [
+          0.6,
+          0.6
+        ],
+        "text-size": {
+          "stops": [
+            [
+              5,
+              13
+            ],
+            [
+              8,
+              17
+            ]
+          ]
+        },
+        "text-max-width": 9
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "rgba(30, 30, 30, 1)",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "oc-label-country",
+      "type": "symbol",
+      "source": "oceanus",
+      "source-layer": "oc-label",
+      "maxzoom": 7,
+      "filter": [
+        "==",
+        [
+          "get",
+          "class"
+        ],
+        "country"
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans CJK JP Bold"
+        ],
+        "text-size": {
+          "stops": [
+            [
+              0,
+              9
+            ],
+            [
+              8,
+              16
+            ]
+          ]
+        },
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "text-color": "rgba(68, 68, 68, 1)",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "poi-z16",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "poi",
+      "minzoom": 16,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Point"
+        ],
+        [
+          "has",
+          "name"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "icon-anchor": "bottom",
+        "icon-image": "circle-stroked",
+        "icon-size": 0.6,
+        "text-field": "{name}",
+        "text-offset": [
+          0,
+          0.3
+        ],
+        "text-size": 12,
+        "text-max-width": 9
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#666",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "poi-z16-primary",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "poi",
+      "minzoom": 16,
+      "filter": [
+        "any",
+        [
+          "all",
+          [
+            "==",
+            "$type",
+            "Point"
+          ],
+          [
+            "has",
+            "name"
+          ],
+          [
+            "in",
+            "class",
+            "cemetery",
+            "restaurant",
+            "bar",
+            "cafe",
+            "sushi",
+            "restaurant_noodle",
+            "fast_food",
+            "ice_cream",
+            "restaurant_pizza",
+            "restaurant_seafood",
+            "beer",
+            "library",
+            "fuel",
+            "post",
+            "police",
+            "fire_station",
+            "entrance",
+            "bus",
+            "attraction",
+            "art_gallery"
+          ],
+          [
+            "!=",
+            "disputed",
+            "japan_northern_territories"
+          ]
+        ],
+        [
+          "all",
+          [
+            "in",
+            "subclass",
+            "community_centre"
+          ],
+          [
+            "!=",
+            "disputed",
+            "japan_northern_territories"
+          ]
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "icon-anchor": "bottom",
+        "icon-image": [
+          "coalesce",
+          [
+            "image",
+            [
+              "get",
+              "class"
+            ]
+          ],
+          [
+            "image",
+            "circle-stroked"
+          ]
+        ],
+        "text-field": "{name}",
+        "text-offset": [
+          0,
+          0.3
+        ],
+        "text-size": 12,
+        "text-max-width": 9
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#666",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "poi-z15",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "poi",
+      "minzoom": 15,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Point"
+        ],
+        [
+          "has",
+          "name"
+        ],
+        [
+          "in",
+          "class",
+          "bank",
+          "parking",
+          "grocery",
+          "shop",
+          "school",
+          "hospital"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "icon-anchor": "bottom",
+        "icon-image": [
+          "coalesce",
+          [
+            "image",
+            [
+              "get",
+              "class"
+            ]
+          ],
+          [
+            "image",
+            "circle-stroked"
+          ]
+        ],
+        "text-field": "{name}",
+        "text-offset": [
+          0,
+          0.3
+        ],
+        "text-size": 12,
+        "text-max-width": 9
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#666",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "poi-z14",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "poi",
+      "minzoom": 14,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Point"
+        ],
+        [
+          "has",
+          "name"
+        ],
+        [
+          "in",
+          "class",
+          "college",
+          "castle",
+          "aquarium",
+          "cinema",
+          "theatre",
+          "zoo",
+          "convenience",
+          "lodging"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "icon-anchor": "bottom",
+        "icon-image": [
+          "coalesce",
+          [
+            "image",
+            [
+              "get",
+              "class"
+            ]
+          ],
+          [
+            "image",
+            "circle-stroked"
+          ]
+        ],
+        "text-field": "{name}",
+        "text-offset": [
+          0,
+          0.3
+        ],
+        "text-size": 12,
+        "text-max-width": 9
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#666",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "poi-z13",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "poi",
+      "minzoom": 13,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Point"
+        ],
+        [
+          "has",
+          "name"
+        ],
+        [
+          "in",
+          "class",
+          "stadium",
+          "landmark",
+          "monument",
+          "museum",
+          "town_hall",
+          "golf"
+        ],
+        [
+          "!in",
+          "subclass",
+          "community_centre"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "icon-anchor": "bottom",
+        "icon-image": [
+          "coalesce",
+          [
+            "image",
+            [
+              "get",
+              "class"
+            ]
+          ],
+          [
+            "image",
+            "circle-stroked"
+          ]
+        ],
+        "text-field": "{name}",
+        "text-offset": [
+          0,
+          0.3
+        ],
+        "text-size": 12,
+        "text-max-width": 9
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#666",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "poi-worship",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "poi",
+      "minzoom": 16,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Point"
+        ],
+        [
+          "has",
+          "name"
+        ],
+        [
+          "!has",
+          "wikidata"
+        ],
+        [
+          "in",
+          "class",
+          "place_of_worship"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "icon-anchor": "bottom",
+        "icon-image": [
+          "coalesce",
+          [
+            "image",
+            [
+              "get",
+              "class"
+            ]
+          ],
+          [
+            "image",
+            "circle-stroked"
+          ]
+        ],
+        "text-field": "{name}",
+        "text-offset": [
+          0,
+          0.3
+        ],
+        "text-size": 12,
+        "text-max-width": 9
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#666",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "poi-worship-primary",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "poi",
+      "minzoom": 14,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Point"
+        ],
+        [
+          "has",
+          "name"
+        ],
+        [
+          "has",
+          "wikidata"
+        ],
+        [
+          "in",
+          "class",
+          "place_of_worship"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "icon-anchor": "bottom",
+        "icon-image": [
+          "coalesce",
+          [
+            "image",
+            [
+              "get",
+              "class"
+            ]
+          ],
+          [
+            "image",
+            "circle-stroked"
+          ]
+        ],
+        "text-field": "{name}",
+        "icon-padding": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          11,
+          30,
+          15,
+          2
+        ],
+        "text-offset": [
+          0,
+          0.3
+        ],
+        "text-size": 12,
+        "text-max-width": 9
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#666",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "poi-park",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "poi",
+      "minzoom": 16,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Point"
+        ],
+        [
+          "has",
+          "name"
+        ],
+        [
+          "!has",
+          "wikidata"
+        ],
+        [
+          "in",
+          "class",
+          "park"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "icon-anchor": "bottom",
+        "icon-image": [
+          "coalesce",
+          [
+            "image",
+            [
+              "get",
+              "class"
+            ]
+          ],
+          [
+            "image",
+            "circle-stroked"
+          ]
+        ],
+        "text-field": "{name}",
+        "text-offset": [
+          0,
+          0.3
+        ],
+        "text-size": 12,
+        "text-max-width": 9
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#666",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "poi-park-primary",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "poi",
+      "minzoom": 13,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Point"
+        ],
+        [
+          "has",
+          "name"
+        ],
+        [
+          "has",
+          "wikidata"
+        ],
+        [
+          "in",
+          "class",
+          "park"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "icon-anchor": "bottom",
+        "icon-image": [
+          "coalesce",
+          [
+            "image",
+            [
+              "get",
+              "class"
+            ]
+          ],
+          [
+            "image",
+            "circle-stroked"
+          ]
+        ],
+        "icon-padding": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          11,
+          15,
+          15,
+          2
+        ],
+        "text-field": "{name}",
+        "text-offset": [
+          0,
+          0.3
+        ],
+        "text-size": 12,
+        "text-max-width": 9
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#666",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "poi-railway",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "poi",
+      "minzoom": 11,
+      "filter": [
+        "all",
+        [
+          "==",
+          "$type",
+          "Point"
+        ],
+        [
+          "has",
+          "name"
+        ],
+        [
+          "==",
+          "class",
+          "railway"
+        ],
+        [
+          "==",
+          "subclass",
+          "station"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans CJK JP Bold"
+        ],
+        "text-anchor": "top",
+        "icon-anchor": "bottom",
+        "icon-image": [
+          "coalesce",
+          [
+            "image",
+            "railway"
+          ],
+          [
+            "image",
+            "circle-stroked"
+          ]
+        ],
+        "icon-padding": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          11,
+          50,
+          13,
+          30,
+          15,
+          2
+        ],
+        "text-field": "{name}",
+        "text-offset": [
+          0,
+          0.3
+        ],
+        "text-size": 12,
+        "text-max-width": 9,
+        "icon-optional": false,
+        "icon-ignore-placement": false,
+        "icon-allow-overlap": false,
+        "text-ignore-placement": false,
+        "text-allow-overlap": false,
+        "text-optional": true
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#415CBD",
+        "text-halo-width": 2,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "poi-airport-primary",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "aerodrome_label",
+      "minzoom": 10,
+      "filter": [
+        "all",
+        [
+          "has",
+          "iata"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "icon-image": "airport",
+        "text-field": "{name}",
+        "text-offset": [
+          0,
+          0.6
+        ],
+        "text-size": 12,
+        "text-max-width": 9,
+        "visibility": "visible",
+        "icon-size": 1,
+        "text-optional": true
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#666",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "label-gsi",
+      "type": "symbol",
+      "source": "gsi-japan",
+      "source-layer": "label",
+      "minzoom": 10,
+      "maxzoom": 15,
+      "filter": [
+        "all",
+        [
+          "in",
+          "ftCode",
+          100,
+          50100
+        ],
+        [
+          "in",
+          "annoCtg",
+          311,
+          314,
+          315
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "icon-anchor": "bottom",
+        "icon-image": [
+          "coalesce",
+          [
+            "image",
+            "mountain"
+          ],
+          [
+            "image",
+            "circle-stroked"
+          ]
+        ],
+        "icon-padding": [
+          "interpolate",
+          [
+            "linear"
+          ],
+          [
+            "zoom"
+          ],
+          8,
+          50,
+          11,
+          100,
+          20,
+          2
+        ],
+        "text-field": "{knj}",
+        "text-offset": [
+          0,
+          0.3
+        ],
+        "text-size": 12,
+        "text-max-width": 9,
+        "visibility": "visible"
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#666",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "road_shield_national",
+      "type": "symbol",
+      "source": "gsi-japan",
+      "source-layer": "transp",
+      "minzoom": 9,
+      "maxzoom": 20,
+      "filter": [
+        "all",
+        [
+          "in",
+          "ftCode",
+          2901
+        ]
+      ],
+      "layout": {
+        "icon-image": [
+          "match",
+          [
+            "length",
+            [
+              "to-string",
+              [
+                "get",
+                "nRNo"
+              ]
+            ]
+          ],
+          1,
+          "national-JP_1",
+          2,
+          "national-JP_2",
+          3,
+          "national-JP_3",
+          "national-JP_3"
+        ],
+        "icon-padding": 13,
+        "text-field": [
+          "get",
+          "nRNo"
+        ],
+        "text-font": [
+          "Noto Sans CJK JP Bold"
+        ],
+        "text-offset": [
+          0,
+          -0.1
+        ],
+        "text-rotation-alignment": "viewport",
+        "text-size": 10,
+        "icon-size": 1
+      },
+      "paint": {
+        "text-color": "#ffffff"
+      }
+    },
+    {
+      "id": "road_shield_highway",
+      "type": "symbol",
+      "source": "gsi-japan",
+      "source-layer": "transp",
+      "minzoom": 8,
+      "filter": [
+        "all",
+        [
+          "in",
+          "ftCode",
+          2903,
+          2904
+        ]
+      ],
+      "layout": {
+        "icon-image": [
+          "match",
+          [
+            "length",
+            [
+              "case",
+              [
+                "has",
+                "uRNo"
+              ],
+              [
+                "get",
+                "uRNo"
+              ],
+              [
+                "has",
+                "nRNo"
+              ],
+              [
+                "get",
+                "nRNo"
+              ],
+              ""
+            ]
+          ],
+          1,
+          "highway-JP_1",
+          2,
+          "highway-JP_2",
+          3,
+          "highway-JP_3",
+          "highway-JP_3"
+        ],
+        "icon-rotation-alignment": "viewport",
+        "icon-padding": 13,
+        "text-field": [
+          "case",
+          [
+            "has",
+            "uRNo"
+          ],
+          [
+            "get",
+            "uRNo"
+          ],
+          [
+            "has",
+            "nRNo"
+          ],
+          [
+            "get",
+            "nRNo"
+          ],
+          ""
+        ],
+        "text-font": [
+          "Noto Sans CJK JP Bold"
+        ],
+        "text-offset": [
+          0,
+          -0.1
+        ],
+        "text-rotation-alignment": "viewport",
+        "text-size": 10,
+        "icon-size": 1
+      },
+      "paint": {
+        "text-color": "#ffffff"
+      }
+    },
+    {
+      "id": "railway-label",
+      "type": "symbol",
+      "source": "gsi-japan",
+      "source-layer": "label",
+      "minzoom": 10,
+      "maxzoom": 15,
+      "filter": [
+        "all",
+        [
+          "==",
+          "ftCode",
+          100
+        ],
+        [
+          "==",
+          "annoCtg",
+          421
+        ]
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-keep-upright": true,
+        "text-field": "{knj}",
+        "text-size": 12,
+        "text-allow-overlap": true,
+        "text-rotate": [
+          "case",
+          [
+            "==",
+            [
+              "get",
+              "arrng"
+            ],
+            2
+          ],
+          [
+            "*",
+            [
+              "+",
+              [
+                "to-number",
+                [
+                  "get",
+                  "arrngAgl"
+                ]
+              ],
+              90
+            ],
+            -1
+          ],
+          [
+            "*",
+            [
+              "to-number",
+              [
+                "get",
+                "arrngAgl"
+              ]
+            ],
+            -1
+          ]
+        ],
+        "text-anchor": [
+          "case",
+          [
+            "==",
+            [
+              "get",
+              "arrng"
+            ],
+            2
+          ],
+          [
+            "case",
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "LC"
+            ],
+            "top",
+            "center"
+          ],
+          [
+            "case",
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "LT"
+            ],
+            "top-left",
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "CT"
+            ],
+            "top",
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "RT"
+            ],
+            "top-right",
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "LC"
+            ],
+            "left",
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "CC"
+            ],
+            "center",
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "RC"
+            ],
+            "right",
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "LB"
+            ],
+            "bottom-left",
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "CB"
+            ],
+            "bottom",
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "RB"
+            ],
+            "bottom-right",
+            "center"
+          ]
+        ],
+        "text-pitch-alignment": "viewport",
+        "text-rotation-alignment": "viewport",
+        "icon-pitch-alignment": "auto",
+        "icon-rotation-alignment": "auto",
+        "text-offset": [
+          "case",
+          [
+            "any",
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "LT"
+            ],
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "LC"
+            ],
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "LB"
+            ]
+          ],
+          [
+            "literal",
+            [
+              0.5,
+              0
+            ]
+          ],
+          [
+            "any",
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "RT"
+            ],
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "RC"
+            ],
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "RB"
+            ]
+          ],
+          [
+            "literal",
+            [
+              -0.5,
+              0
+            ]
+          ],
+          [
+            "any",
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "CT"
+            ]
+          ],
+          [
+            "literal",
+            [
+              0,
+              0.5
+            ]
+          ],
+          [
+            "any",
+            [
+              "==",
+              [
+                "get",
+                "dspPos"
+              ],
+              "CB"
+            ]
+          ],
+          [
+            "literal",
+            [
+              0,
+              -0.5
+            ]
+          ],
+          [
+            "literal",
+            [
+              0,
+              0
+            ]
+          ]
+        ],
+        "visibility": "visible"
+      },
+      "paint": {
+        "text-color": "rgba(68, 68, 68, 1)",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "airport-label-major",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "aerodrome_label",
+      "minzoom": 5,
+      "filter": [
+        "all",
+        [
+          "has",
+          "iata"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-padding": 2,
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-anchor": "top",
+        "icon-image": "airport",
+        "text-field": "{name}",
+        "text-offset": [
+          0,
+          0.6
+        ],
+        "text-size": 12,
+        "text-max-width": 9
+      },
+      "paint": {
+        "text-halo-blur": 0.5,
+        "text-color": "#666",
+        "text-halo-width": 1,
+        "text-halo-color": "#ffffff"
+      }
+    },
+    {
+      "id": "place-village",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "place",
+      "minzoom": 9,
+      "maxzoom": 13,
+      "filter": [
+        "all",
+        [
+          "==",
+          "class",
+          "village"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "icon-image": "circle",
+        "icon-size": 0.3,
+        "text-anchor": "top",
+        "text-offset": [
+          0,
+          0.1
+        ],
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": {
+          "base": 1.2,
+          "stops": [
+            [
+              10,
+              12
+            ],
+            [
+              15,
+              22
+            ]
+          ]
+        },
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "icon-color": "#000000",
+        "icon-opacity": {
+          "stops": [
+            [
+              11.9,
+              1
+            ],
+            [
+              12,
+              0
+            ]
+          ]
+        },
+        "text-color": "#333",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "place-town",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "place",
+      "minzoom": 8.5,
+      "maxzoom": 13,
+      "filter": [
+        "all",
+        [
+          "==",
+          "class",
+          "town"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "icon-image": "circle",
+        "icon-size": 0.3,
+        "text-anchor": "top",
+        "text-offset": [
+          0,
+          0.1
+        ],
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 12,
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "icon-color": "#000000",
+        "icon-opacity": {
+          "stops": [
+            [
+              11.9,
+              1
+            ],
+            [
+              12,
+              0
+            ]
+          ]
+        },
+        "text-color": "rgba(102, 102, 102, 1)",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "place-island-name",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "place",
+      "filter": [
+        "all",
+        [
+          "==",
+          [
+            "get",
+            "class"
+          ],
+          "island"
+        ],
+        [
+          "!=",
+          [
+            "get",
+            "disputed"
+          ],
+          "japan_northern_territories"
+        ],
+        [
+          "any",
+          [
+            "!=",
+            [
+              "get",
+              "subclass"
+            ],
+            "islet"
+          ],
+          [
+            ">=",
+            [
+              "zoom"
+            ],
+            16
+          ]
+        ]
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 11,
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "text-color": "rgba(102, 102, 102, 1)",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "place-city-rank10",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "place",
+      "minzoom": 8,
+      "maxzoom": 13,
+      "filter": [
+        "all",
+        [
+          "!=",
+          "capital",
+          2
+        ],
+        [
+          "==",
+          "class",
+          "city"
+        ],
+        [
+          "==",
+          "rank",
+          10
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "icon-image": "circle",
+        "icon-size": 0.3,
+        "text-anchor": "top",
+        "text-offset": [
+          0,
+          0.1
+        ],
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "icon-color": "#000000",
+        "icon-opacity": {
+          "stops": [
+            [
+              11.9,
+              1
+            ],
+            [
+              12,
+              0
+            ]
+          ]
+        },
+        "text-color": "rgba(102, 102, 102, 1)",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "place-city-rank9",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "place",
+      "minzoom": 8,
+      "maxzoom": 13,
+      "filter": [
+        "all",
+        [
+          "!=",
+          "capital",
+          2
+        ],
+        [
+          "==",
+          "class",
+          "city"
+        ],
+        [
+          "==",
+          "rank",
+          9
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "icon-image": "circle",
+        "icon-size": 0.3,
+        "text-anchor": "top",
+        "text-offset": [
+          0,
+          0.1
+        ],
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "icon-color": "#000000",
+        "icon-opacity": {
+          "stops": [
+            [
+              11.9,
+              1
+            ],
+            [
+              12,
+              0
+            ]
+          ]
+        },
+        "text-color": "rgba(102, 102, 102, 1)",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "place-city-rank8",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "place",
+      "minzoom": 8,
+      "maxzoom": 13,
+      "filter": [
+        "all",
+        [
+          "!=",
+          "capital",
+          2
+        ],
+        [
+          "==",
+          "class",
+          "city"
+        ],
+        [
+          "==",
+          "rank",
+          8
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "icon-image": "circle",
+        "icon-size": 0.3,
+        "text-anchor": "top",
+        "text-offset": [
+          0,
+          0.1
+        ],
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "icon-color": "#000000",
+        "icon-opacity": {
+          "stops": [
+            [
+              11.9,
+              1
+            ],
+            [
+              12,
+              0
+            ]
+          ]
+        },
+        "text-color": "rgba(102, 102, 102, 1)",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "place-city-rank7",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "place",
+      "minzoom": 8,
+      "maxzoom": 13,
+      "filter": [
+        "all",
+        [
+          "!=",
+          "capital",
+          2
+        ],
+        [
+          "==",
+          "class",
+          "city"
+        ],
+        [
+          "==",
+          "rank",
+          7
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "icon-image": "circle",
+        "icon-size": 0.3,
+        "text-anchor": "top",
+        "text-offset": [
+          0,
+          0.1
+        ],
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "icon-color": "#000000",
+        "icon-opacity": {
+          "stops": [
+            [
+              11.9,
+              1
+            ],
+            [
+              12,
+              0
+            ]
+          ]
+        },
+        "text-color": "rgba(102, 102, 102, 1)",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "place-city-rank6",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "place",
+      "minzoom": 11,
+      "maxzoom": 13,
+      "filter": [
+        "all",
+        [
+          "!=",
+          "capital",
+          2
+        ],
+        [
+          "==",
+          "class",
+          "city"
+        ],
+        [
+          "==",
+          "rank",
+          6
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "icon-image": "circle",
+        "icon-size": 0.3,
+        "text-anchor": "top",
+        "text-offset": [
+          0,
+          0.1
+        ],
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "icon-color": "#000000",
+        "icon-opacity": {
+          "stops": [
+            [
+              11.9,
+              1
+            ],
+            [
+              12,
+              0
+            ]
+          ]
+        },
+        "text-color": "rgba(102, 102, 102, 1)",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "place-city-rank5",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "place",
+      "minzoom": 10,
+      "maxzoom": 13,
+      "filter": [
+        "all",
+        [
+          "!=",
+          "capital",
+          2
+        ],
+        [
+          "==",
+          "class",
+          "city"
+        ],
+        [
+          "==",
+          "rank",
+          5
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "icon-image": "circle",
+        "icon-size": 0.3,
+        "text-anchor": "top",
+        "text-offset": [
+          0,
+          0.1
+        ],
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "icon-color": "#000000",
+        "icon-opacity": {
+          "stops": [
+            [
+              11.9,
+              1
+            ],
+            [
+              12,
+              0
+            ]
+          ]
+        },
+        "text-color": "rgba(102, 102, 102, 1)",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "place-city-rank4",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "place",
+      "minzoom": 9,
+      "maxzoom": 13,
+      "filter": [
+        "all",
+        [
+          "!=",
+          "capital",
+          2
+        ],
+        [
+          "==",
+          "class",
+          "city"
+        ],
+        [
+          "==",
+          "rank",
+          4
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "icon-image": "circle",
+        "icon-size": 0.3,
+        "text-anchor": "top",
+        "text-offset": [
+          0,
+          0.1
+        ],
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 14,
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "icon-color": "#000000",
+        "icon-opacity": {
+          "stops": [
+            [
+              11.9,
+              1
+            ],
+            [
+              12,
+              0
+            ]
+          ]
+        },
+        "text-color": "rgba(102, 102, 102, 1)",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "place-city-rank3",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "place",
+      "minzoom": 8,
+      "maxzoom": 13,
+      "filter": [
+        "all",
+        [
+          "!=",
+          "capital",
+          2
+        ],
+        [
+          "==",
+          "class",
+          "city"
+        ],
+        [
+          "==",
+          "rank",
+          3
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "icon-image": "circle",
+        "icon-size": 0.4,
+        "text-anchor": "top",
+        "text-offset": [
+          0,
+          0.1
+        ],
+        "text-font": [
+          "Noto Sans Regular"
+        ],
+        "text-size": 16,
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "icon-color": "#000000",
+        "icon-opacity": {
+          "stops": [
+            [
+              11.9,
+              1
+            ],
+            [
+              12,
+              0
+            ]
+          ]
+        },
+        "text-color": "rgba(102, 102, 102, 1)",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "place-city-rank2",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "place",
+      "minzoom": 8,
+      "maxzoom": 13,
+      "filter": [
+        "all",
+        [
+          "!=",
+          "capital",
+          2
+        ],
+        [
+          "==",
+          "class",
+          "city"
+        ],
+        [
+          "==",
+          "rank",
+          2
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "icon-image": "circle-stroked",
+        "icon-size": 0.8,
+        "text-anchor": "top",
+        "text-offset": [
+          0,
+          0.2
+        ],
+        "text-font": [
+          "Noto Sans CJK JP Bold"
+        ],
+        "text-size": 17,
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "visibility": "visible"
+      },
+      "paint": {
+        "icon-color": "#000000",
+        "icon-opacity": {
+          "stops": [
+            [
+              11.9,
+              1
+            ],
+            [
+              12,
+              0
+            ]
+          ]
+        },
+        "text-color": "rgba(68, 68, 68, 1)",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    },
+    {
+      "id": "place-city-capital",
+      "type": "symbol",
+      "source": "geolonia-gsi-custom",
+      "source-layer": "place",
+      "maxzoom": 11,
+      "filter": [
+        "all",
+        [
+          "==",
+          "capital",
+          2
+        ],
+        [
+          "==",
+          "class",
+          "city"
+        ],
+        [
+          "!=",
+          "disputed",
+          "japan_northern_territories"
+        ]
+      ],
+      "layout": {
+        "text-font": [
+          "Noto Sans CJK JP Bold"
+        ],
+        "text-size": 18,
+        "text-field": "{name}",
+        "text-max-width": 8,
+        "icon-image": "star",
+        "text-offset": [
+          0.4,
+          -0.1
+        ],
+        "icon-size": 1,
+        "text-anchor": "left",
+        "visibility": "visible"
+      },
+      "paint": {
+        "text-color": "#333",
+        "text-halo-width": 1.2,
+        "text-halo-color": "rgba(255,255,255,0.8)"
+      }
+    }
+  ]
+}
diff --git a/icons/aerialway.svg b/icons/aerialway.svg
new file mode 100644
index 0000000..b4307d9
--- /dev/null
+++ b/icons/aerialway.svg
@@ -0,0 +1,4 @@
+aerialway-11.svg
\ No newline at end of file
diff --git a/icons/airfield.svg b/icons/airfield.svg
new file mode 100644
index 0000000..28549d8
--- /dev/null
+++ b/icons/airfield.svg
@@ -0,0 +1,2 @@
+airfield-11.svg
\ No newline at end of file
diff --git a/icons/airport.svg b/icons/airport.svg
new file mode 100644
index 0000000..1fb2168
--- /dev/null
+++ b/icons/airport.svg
@@ -0,0 +1,2 @@
+airport-11.svg
\ No newline at end of file
diff --git a/icons/alcohol_shop.svg b/icons/alcohol_shop.svg
new file mode 100644
index 0000000..d602ae2
--- /dev/null
+++ b/icons/alcohol_shop.svg
@@ -0,0 +1,7 @@
+alcohol-shop-11.svg
\ No newline at end of file
diff --git a/icons/america_football.svg b/icons/america_football.svg
new file mode 100644
index 0000000..46b59cb
--- /dev/null
+++ b/icons/america_football.svg
@@ -0,0 +1,2 @@
+america-football-11.svg
\ No newline at end of file
diff --git a/icons/american_football.svg b/icons/american_football.svg
new file mode 100644
index 0000000..264172b
--- /dev/null
+++ b/icons/american_football.svg
@@ -0,0 +1,2 @@
+american-football-11.svg
\ No newline at end of file
diff --git a/icons/amusement_park.svg b/icons/amusement_park.svg
new file mode 100644
index 0000000..13ce5af
--- /dev/null
+++ b/icons/amusement_park.svg
@@ -0,0 +1,12 @@
+amusement-park-11.svg
\ No newline at end of file
diff --git a/icons/aquarium.svg b/icons/aquarium.svg
new file mode 100644
index 0000000..78d54bd
--- /dev/null
+++ b/icons/aquarium.svg
@@ -0,0 +1,7 @@
+aquarium-11.svg
\ No newline at end of file
diff --git a/icons/art_gallery.svg b/icons/art_gallery.svg
new file mode 100644
index 0000000..6b34022
--- /dev/null
+++ b/icons/art_gallery.svg
@@ -0,0 +1,4 @@
+art-gallery-11.svg
\ No newline at end of file
diff --git a/icons/attraction.svg b/icons/attraction.svg
new file mode 100644
index 0000000..0599ce7
--- /dev/null
+++ b/icons/attraction.svg
@@ -0,0 +1,3 @@
+attraction-11.svg
\ No newline at end of file
diff --git a/icons/bakery.svg b/icons/bakery.svg
new file mode 100644
index 0000000..c8cd937
--- /dev/null
+++ b/icons/bakery.svg
@@ -0,0 +1,3 @@
+bakery-11.svg
\ No newline at end of file
diff --git a/icons/bank.svg b/icons/bank.svg
new file mode 100644
index 0000000..5e3d4d5
--- /dev/null
+++ b/icons/bank.svg
@@ -0,0 +1 @@
+bank-JP-11.svg
\ No newline at end of file
diff --git a/icons/bar.svg b/icons/bar.svg
new file mode 100644
index 0000000..7a3a5ab
--- /dev/null
+++ b/icons/bar.svg
@@ -0,0 +1,2 @@
+bar-11.svg
\ No newline at end of file
diff --git a/icons/barrier.svg b/icons/barrier.svg
new file mode 100644
index 0000000..c0902f5
--- /dev/null
+++ b/icons/barrier.svg
@@ -0,0 +1 @@
+barrier-11.svg
\ No newline at end of file
diff --git a/icons/baseball.svg b/icons/baseball.svg
new file mode 100644
index 0000000..a76a2b5
--- /dev/null
+++ b/icons/baseball.svg
@@ -0,0 +1,6 @@
+baseball-11.svg
\ No newline at end of file
diff --git a/icons/basketball.svg b/icons/basketball.svg
new file mode 100644
index 0000000..79ec71d
--- /dev/null
+++ b/icons/basketball.svg
@@ -0,0 +1 @@
+basketball-11.svg
\ No newline at end of file
diff --git a/icons/bbq.svg b/icons/bbq.svg
new file mode 100644
index 0000000..78b61d0
--- /dev/null
+++ b/icons/bbq.svg
@@ -0,0 +1,13 @@
+bbq-11.svg
\ No newline at end of file
diff --git a/icons/beach.svg b/icons/beach.svg
new file mode 100644
index 0000000..d2d78c5
--- /dev/null
+++ b/icons/beach.svg
@@ -0,0 +1 @@
+beach-11.svg
\ No newline at end of file
diff --git a/icons/beer.svg b/icons/beer.svg
new file mode 100644
index 0000000..c177126
--- /dev/null
+++ b/icons/beer.svg
@@ -0,0 +1,5 @@
+beer-11.svg
\ No newline at end of file
diff --git a/icons/bicycle.svg b/icons/bicycle.svg
new file mode 100644
index 0000000..50ed178
--- /dev/null
+++ b/icons/bicycle.svg
@@ -0,0 +1,8 @@
+bicycle-11.svg
\ No newline at end of file
diff --git a/icons/bicycle_share.svg b/icons/bicycle_share.svg
new file mode 100644
index 0000000..524fcee
--- /dev/null
+++ b/icons/bicycle_share.svg
@@ -0,0 +1 @@
+bicycle-share-11.svg
\ No newline at end of file
diff --git a/icons/blood_bank.svg b/icons/blood_bank.svg
new file mode 100644
index 0000000..e8a63b7
--- /dev/null
+++ b/icons/blood_bank.svg
@@ -0,0 +1 @@
+blood-bank-11.svg
\ No newline at end of file
diff --git a/icons/bowling_alley.svg b/icons/bowling_alley.svg
new file mode 100644
index 0000000..52ddad1
--- /dev/null
+++ b/icons/bowling_alley.svg
@@ -0,0 +1 @@
+bowling-alley-11.svg
\ No newline at end of file
diff --git a/icons/bridge.svg b/icons/bridge.svg
new file mode 100644
index 0000000..08f07c0
--- /dev/null
+++ b/icons/bridge.svg
@@ -0,0 +1,4 @@
+bridge-11.svg
\ No newline at end of file
diff --git a/icons/buddhism.svg b/icons/buddhism.svg
new file mode 100644
index 0000000..dc65d24
--- /dev/null
+++ b/icons/buddhism.svg
@@ -0,0 +1,12 @@
+buddhism-11.svg
\ No newline at end of file
diff --git a/icons/building.svg b/icons/building.svg
new file mode 100644
index 0000000..7fcdeec
--- /dev/null
+++ b/icons/building.svg
@@ -0,0 +1 @@
+building-11.svg
\ No newline at end of file
diff --git a/icons/building_alt1.svg b/icons/building_alt1.svg
new file mode 100644
index 0000000..64f8757
--- /dev/null
+++ b/icons/building_alt1.svg
@@ -0,0 +1 @@
+building-alt1-11.svg
\ No newline at end of file
diff --git a/icons/bus.svg b/icons/bus.svg
new file mode 100644
index 0000000..5cc8d3e
--- /dev/null
+++ b/icons/bus.svg
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/icons/cafe.svg b/icons/cafe.svg
new file mode 100644
index 0000000..a9f5626
--- /dev/null
+++ b/icons/cafe.svg
@@ -0,0 +1,3 @@
+cafe-11.svg
\ No newline at end of file
diff --git a/icons/campsite.svg b/icons/campsite.svg
new file mode 100644
index 0000000..ae6a0a6
--- /dev/null
+++ b/icons/campsite.svg
@@ -0,0 +1,4 @@
+campsite-11.svg
\ No newline at end of file
diff --git a/icons/car.svg b/icons/car.svg
new file mode 100644
index 0000000..db0b8b8
--- /dev/null
+++ b/icons/car.svg
@@ -0,0 +1,4 @@
+car-11.svg
\ No newline at end of file
diff --git a/icons/car_rental.svg b/icons/car_rental.svg
new file mode 100644
index 0000000..c3a3fdd
--- /dev/null
+++ b/icons/car_rental.svg
@@ -0,0 +1,7 @@
+car-rental-11.svg
\ No newline at end of file
diff --git a/icons/car_repair.svg b/icons/car_repair.svg
new file mode 100644
index 0000000..bbcaf22
--- /dev/null
+++ b/icons/car_repair.svg
@@ -0,0 +1,6 @@
+car-repair-11.svg
\ No newline at end of file
diff --git a/icons/casino.svg b/icons/casino.svg
new file mode 100644
index 0000000..0ca5445
--- /dev/null
+++ b/icons/casino.svg
@@ -0,0 +1,5 @@
+casino-11.svg
\ No newline at end of file
diff --git a/icons/castle.svg b/icons/castle.svg
new file mode 100644
index 0000000..112c607
--- /dev/null
+++ b/icons/castle.svg
@@ -0,0 +1 @@
+castle-JP-11.svg
\ No newline at end of file
diff --git a/icons/cemetery.svg b/icons/cemetery.svg
new file mode 100644
index 0000000..01f6eed
--- /dev/null
+++ b/icons/cemetery.svg
@@ -0,0 +1 @@
+cemetery-JP-11.svg
\ No newline at end of file
diff --git a/icons/charging_station.svg b/icons/charging_station.svg
new file mode 100644
index 0000000..ec6e547
--- /dev/null
+++ b/icons/charging_station.svg
@@ -0,0 +1,4 @@
+charging-station-11.svg
\ No newline at end of file
diff --git a/icons/cinema.svg b/icons/cinema.svg
new file mode 100644
index 0000000..ac32bdb
--- /dev/null
+++ b/icons/cinema.svg
@@ -0,0 +1,6 @@
+cinema-11.svg
\ No newline at end of file
diff --git a/icons/circle-stroked.svg b/icons/circle-stroked.svg
new file mode 100644
index 0000000..5681863
--- /dev/null
+++ b/icons/circle-stroked.svg
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/icons/circle.svg b/icons/circle.svg
new file mode 100644
index 0000000..4b964fb
--- /dev/null
+++ b/icons/circle.svg
@@ -0,0 +1 @@
+circle-11.svg
\ No newline at end of file
diff --git a/icons/city.svg b/icons/city.svg
new file mode 100644
index 0000000..fb3fe00
--- /dev/null
+++ b/icons/city.svg
@@ -0,0 +1,15 @@
+city-11.svg
\ No newline at end of file
diff --git a/icons/clothing_store.svg b/icons/clothing_store.svg
new file mode 100644
index 0000000..c513257
--- /dev/null
+++ b/icons/clothing_store.svg
@@ -0,0 +1,2 @@
+clothing-store-11.svg
\ No newline at end of file
diff --git a/icons/college.svg b/icons/college.svg
new file mode 100644
index 0000000..54fdcb9
--- /dev/null
+++ b/icons/college.svg
@@ -0,0 +1 @@
+college-JP-11.svg
\ No newline at end of file
diff --git a/icons/commercial.svg b/icons/commercial.svg
new file mode 100644
index 0000000..9633f7a
--- /dev/null
+++ b/icons/commercial.svg
@@ -0,0 +1 @@
+commercial-11.svg
\ No newline at end of file
diff --git a/icons/communications_tower.svg b/icons/communications_tower.svg
new file mode 100644
index 0000000..40464b1
--- /dev/null
+++ b/icons/communications_tower.svg
@@ -0,0 +1 @@
+communications-tower-11.svg
\ No newline at end of file
diff --git a/icons/confectionery.svg b/icons/confectionery.svg
new file mode 100644
index 0000000..12ed67e
--- /dev/null
+++ b/icons/confectionery.svg
@@ -0,0 +1 @@
+confectionery-11.svg
\ No newline at end of file
diff --git a/icons/convenience.svg b/icons/convenience.svg
new file mode 100644
index 0000000..5cb72ad
--- /dev/null
+++ b/icons/convenience.svg
@@ -0,0 +1 @@
+convenience-11.svg
\ No newline at end of file
diff --git a/icons/cricket.svg b/icons/cricket.svg
new file mode 100644
index 0000000..bec4ce5
--- /dev/null
+++ b/icons/cricket.svg
@@ -0,0 +1,8 @@
+cricket-11.svg
\ No newline at end of file
diff --git a/icons/cross.svg b/icons/cross.svg
new file mode 100644
index 0000000..3814acc
--- /dev/null
+++ b/icons/cross.svg
@@ -0,0 +1,9 @@
+cross-11.svg
\ No newline at end of file
diff --git a/icons/dam.svg b/icons/dam.svg
new file mode 100644
index 0000000..ddb9862
--- /dev/null
+++ b/icons/dam.svg
@@ -0,0 +1,19 @@
+dam-11.svg
\ No newline at end of file
diff --git a/icons/danger.svg b/icons/danger.svg
new file mode 100644
index 0000000..17a7aa5
--- /dev/null
+++ b/icons/danger.svg
@@ -0,0 +1,11 @@
+danger-11.svg
\ No newline at end of file
diff --git a/icons/default_1.svg b/icons/default_1.svg
new file mode 100644
index 0000000..9a3e4f3
--- /dev/null
+++ b/icons/default_1.svg
@@ -0,0 +1,53 @@
+
+
+  
+  
+    
+      
+        image/svg+xml
+        
+        
+      
+    
+  
+  
+    
+      
+      
+    
+  
+
diff --git a/icons/default_2.svg b/icons/default_2.svg
new file mode 100644
index 0000000..74d8798
--- /dev/null
+++ b/icons/default_2.svg
@@ -0,0 +1,54 @@
+
+
+  
+  
+    
+      
+        image/svg+xml
+        
+        
+      
+    
+  
+  
+    
+      
+      
+    
+  
+
diff --git a/icons/default_3.svg b/icons/default_3.svg
new file mode 100644
index 0000000..218ab62
--- /dev/null
+++ b/icons/default_3.svg
@@ -0,0 +1,53 @@
+
+
+  
+  
+    
+      
+        image/svg+xml
+        
+        
+      
+    
+  
+  
+    
+      
+      
+    
+  
+
diff --git a/icons/default_4.svg b/icons/default_4.svg
new file mode 100644
index 0000000..f0f4ff1
--- /dev/null
+++ b/icons/default_4.svg
@@ -0,0 +1,53 @@
+
+
+  
+  
+    
+      
+        image/svg+xml
+        
+        
+      
+    
+  
+  
+    
+      
+      
+    
+  
+
diff --git a/icons/default_5.svg b/icons/default_5.svg
new file mode 100644
index 0000000..35ee92b
--- /dev/null
+++ b/icons/default_5.svg
@@ -0,0 +1,53 @@
+
+
+  
+  
+    
+      
+        image/svg+xml
+        
+        
+      
+    
+  
+  
+    
+      
+      
+    
+  
+
diff --git a/icons/default_6.svg b/icons/default_6.svg
new file mode 100644
index 0000000..1959bd9
--- /dev/null
+++ b/icons/default_6.svg
@@ -0,0 +1,56 @@
+
+
+  
+  
+    
+      
+        image/svg+xml
+        
+        
+      
+    
+  
+  
+    
+      
+        
+        
+      
+    
+  
+
diff --git a/icons/defibrillator.svg b/icons/defibrillator.svg
new file mode 100644
index 0000000..6c97291
--- /dev/null
+++ b/icons/defibrillator.svg
@@ -0,0 +1 @@
+defibrillator-11.svg
\ No newline at end of file
diff --git a/icons/dentist.svg b/icons/dentist.svg
new file mode 100644
index 0000000..10e38c3
--- /dev/null
+++ b/icons/dentist.svg
@@ -0,0 +1,3 @@
+dentist-11.svg
\ No newline at end of file
diff --git a/icons/doctor.svg b/icons/doctor.svg
new file mode 100644
index 0000000..223a51d
--- /dev/null
+++ b/icons/doctor.svg
@@ -0,0 +1,9 @@
+doctor-11.svg
\ No newline at end of file
diff --git a/icons/dog_park.svg b/icons/dog_park.svg
new file mode 100644
index 0000000..9ed3624
--- /dev/null
+++ b/icons/dog_park.svg
@@ -0,0 +1,6 @@
+dog-park-11.svg
\ No newline at end of file
diff --git a/icons/drinking_water.svg b/icons/drinking_water.svg
new file mode 100644
index 0000000..fa7484d
--- /dev/null
+++ b/icons/drinking_water.svg
@@ -0,0 +1 @@
+drinking-water-11.svg
\ No newline at end of file
diff --git a/icons/embassy.svg b/icons/embassy.svg
new file mode 100644
index 0000000..4b1d58b
--- /dev/null
+++ b/icons/embassy.svg
@@ -0,0 +1,6 @@
+embassy-11.svg
\ No newline at end of file
diff --git a/icons/emergency_phone.svg b/icons/emergency_phone.svg
new file mode 100644
index 0000000..a101934
--- /dev/null
+++ b/icons/emergency_phone.svg
@@ -0,0 +1 @@
+emergency-phone-11.svg
\ No newline at end of file
diff --git a/icons/entrance.svg b/icons/entrance.svg
new file mode 100644
index 0000000..de4db5d
--- /dev/null
+++ b/icons/entrance.svg
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/icons/entrance_alt1.svg b/icons/entrance_alt1.svg
new file mode 100644
index 0000000..daed35a
--- /dev/null
+++ b/icons/entrance_alt1.svg
@@ -0,0 +1 @@
+entrance-alt1-11.svg
\ No newline at end of file
diff --git a/icons/farm.svg b/icons/farm.svg
new file mode 100644
index 0000000..c8be22b
--- /dev/null
+++ b/icons/farm.svg
@@ -0,0 +1 @@
+farm-11.svg
\ No newline at end of file
diff --git a/icons/fast_food.svg b/icons/fast_food.svg
new file mode 100644
index 0000000..532df3c
--- /dev/null
+++ b/icons/fast_food.svg
@@ -0,0 +1,6 @@
+fast-food-11.svg
\ No newline at end of file
diff --git a/icons/fence.svg b/icons/fence.svg
new file mode 100644
index 0000000..42cd39c
--- /dev/null
+++ b/icons/fence.svg
@@ -0,0 +1 @@
+fence-11.svg
\ No newline at end of file
diff --git a/icons/ferry.svg b/icons/ferry.svg
new file mode 100644
index 0000000..892c085
--- /dev/null
+++ b/icons/ferry.svg
@@ -0,0 +1,11 @@
+ferry-11.svg
\ No newline at end of file
diff --git a/icons/fire_station.svg b/icons/fire_station.svg
new file mode 100644
index 0000000..e9dae55
--- /dev/null
+++ b/icons/fire_station.svg
@@ -0,0 +1 @@
+fire-station-JP-11.svg
\ No newline at end of file
diff --git a/icons/fitness_centre.svg b/icons/fitness_centre.svg
new file mode 100644
index 0000000..1d5eb47
--- /dev/null
+++ b/icons/fitness_centre.svg
@@ -0,0 +1 @@
+fitness-centre-11.svg
\ No newline at end of file
diff --git a/icons/florist.svg b/icons/florist.svg
new file mode 100644
index 0000000..ef88a65
--- /dev/null
+++ b/icons/florist.svg
@@ -0,0 +1 @@
+florist-11.svg
\ No newline at end of file
diff --git a/icons/fuel.svg b/icons/fuel.svg
new file mode 100644
index 0000000..2890298
--- /dev/null
+++ b/icons/fuel.svg
@@ -0,0 +1,5 @@
+fuel-11.svg
\ No newline at end of file
diff --git a/icons/furniture.svg b/icons/furniture.svg
new file mode 100644
index 0000000..f12fa36
--- /dev/null
+++ b/icons/furniture.svg
@@ -0,0 +1,4 @@
+furniture-11.svg
\ No newline at end of file
diff --git a/icons/gaming.svg b/icons/gaming.svg
new file mode 100644
index 0000000..ae4adfc
--- /dev/null
+++ b/icons/gaming.svg
@@ -0,0 +1 @@
+gaming-11.svg
\ No newline at end of file
diff --git a/icons/garden.svg b/icons/garden.svg
new file mode 100644
index 0000000..1daedea
--- /dev/null
+++ b/icons/garden.svg
@@ -0,0 +1,7 @@
+garden-11.svg
\ No newline at end of file
diff --git a/icons/garden_center.svg b/icons/garden_center.svg
new file mode 100644
index 0000000..a0fab81
--- /dev/null
+++ b/icons/garden_center.svg
@@ -0,0 +1 @@
+garden-center-11.svg
\ No newline at end of file
diff --git a/icons/garden_centre.svg b/icons/garden_centre.svg
new file mode 100644
index 0000000..8284a18
--- /dev/null
+++ b/icons/garden_centre.svg
@@ -0,0 +1 @@
+garden-centre-11.svg
\ No newline at end of file
diff --git a/icons/gift.svg b/icons/gift.svg
new file mode 100644
index 0000000..a0134d6
--- /dev/null
+++ b/icons/gift.svg
@@ -0,0 +1,10 @@
+gift-11.svg
\ No newline at end of file
diff --git a/icons/globe.svg b/icons/globe.svg
new file mode 100644
index 0000000..e43a053
--- /dev/null
+++ b/icons/globe.svg
@@ -0,0 +1,11 @@
+globe-11.svg
\ No newline at end of file
diff --git a/icons/golf.svg b/icons/golf.svg
new file mode 100644
index 0000000..68837b0
--- /dev/null
+++ b/icons/golf.svg
@@ -0,0 +1,7 @@
+golf-11.svg
\ No newline at end of file
diff --git a/icons/grocery.svg b/icons/grocery.svg
new file mode 100644
index 0000000..625c6be
--- /dev/null
+++ b/icons/grocery.svg
@@ -0,0 +1,6 @@
+grocery-11.svg
\ No newline at end of file
diff --git a/icons/hairdresser.svg b/icons/hairdresser.svg
new file mode 100644
index 0000000..9b9cadb
--- /dev/null
+++ b/icons/hairdresser.svg
@@ -0,0 +1,6 @@
+hairdresser-11.svg
\ No newline at end of file
diff --git a/icons/harbor.svg b/icons/harbor.svg
new file mode 100644
index 0000000..1e78c25
--- /dev/null
+++ b/icons/harbor.svg
@@ -0,0 +1,6 @@
+harbor-11.svg
\ No newline at end of file
diff --git a/icons/hardware.svg b/icons/hardware.svg
new file mode 100644
index 0000000..beb7ab6
--- /dev/null
+++ b/icons/hardware.svg
@@ -0,0 +1,6 @@
+hardware-11.svg
\ No newline at end of file
diff --git a/icons/heart.svg b/icons/heart.svg
new file mode 100644
index 0000000..5a4c46c
--- /dev/null
+++ b/icons/heart.svg
@@ -0,0 +1,5 @@
+heart-11.svg
\ No newline at end of file
diff --git a/icons/heliport.svg b/icons/heliport.svg
new file mode 100644
index 0000000..3eaafdf
--- /dev/null
+++ b/icons/heliport.svg
@@ -0,0 +1,5 @@
+heliport-11.svg
\ No newline at end of file
diff --git a/icons/highway-JP_1.svg b/icons/highway-JP_1.svg
new file mode 100644
index 0000000..2583585
--- /dev/null
+++ b/icons/highway-JP_1.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/highway-JP_2.svg b/icons/highway-JP_2.svg
new file mode 100644
index 0000000..d029e54
--- /dev/null
+++ b/icons/highway-JP_2.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/highway-JP_3.svg b/icons/highway-JP_3.svg
new file mode 100644
index 0000000..1aa5e21
--- /dev/null
+++ b/icons/highway-JP_3.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/highway-JP_4.svg b/icons/highway-JP_4.svg
new file mode 100644
index 0000000..a997850
--- /dev/null
+++ b/icons/highway-JP_4.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/highway-JP_5.svg b/icons/highway-JP_5.svg
new file mode 100644
index 0000000..4331f5c
--- /dev/null
+++ b/icons/highway-JP_5.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/highway-JP_6.svg b/icons/highway-JP_6.svg
new file mode 100644
index 0000000..57ec8c3
--- /dev/null
+++ b/icons/highway-JP_6.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/home.svg b/icons/home.svg
new file mode 100644
index 0000000..42fb8d5
--- /dev/null
+++ b/icons/home.svg
@@ -0,0 +1,9 @@
+home-11.svg
\ No newline at end of file
diff --git a/icons/horse_riding.svg b/icons/horse_riding.svg
new file mode 100644
index 0000000..209ec29
--- /dev/null
+++ b/icons/horse_riding.svg
@@ -0,0 +1 @@
+horse-riding-11.svg
\ No newline at end of file
diff --git a/icons/hospital.svg b/icons/hospital.svg
new file mode 100644
index 0000000..e0cedc5
--- /dev/null
+++ b/icons/hospital.svg
@@ -0,0 +1,3 @@
+hospital-11.svg
\ No newline at end of file
diff --git a/icons/ice_cream.svg b/icons/ice_cream.svg
new file mode 100644
index 0000000..d57d2e8
--- /dev/null
+++ b/icons/ice_cream.svg
@@ -0,0 +1,4 @@
+ice-cream-11.svg
\ No newline at end of file
diff --git a/icons/industry.svg b/icons/industry.svg
new file mode 100644
index 0000000..fe44bfe
--- /dev/null
+++ b/icons/industry.svg
@@ -0,0 +1,3 @@
+industry-11.svg
\ No newline at end of file
diff --git a/icons/information.svg b/icons/information.svg
new file mode 100644
index 0000000..30e5c5a
--- /dev/null
+++ b/icons/information.svg
@@ -0,0 +1,7 @@
+information-11.svg
\ No newline at end of file
diff --git a/icons/jewelry_store.svg b/icons/jewelry_store.svg
new file mode 100644
index 0000000..0a553ae
--- /dev/null
+++ b/icons/jewelry_store.svg
@@ -0,0 +1,3 @@
+jewelry-store-11.svg
\ No newline at end of file
diff --git a/icons/karaoke.svg b/icons/karaoke.svg
new file mode 100644
index 0000000..255fe7a
--- /dev/null
+++ b/icons/karaoke.svg
@@ -0,0 +1,2 @@
+karaoke-11.svg
\ No newline at end of file
diff --git a/icons/landmark.svg b/icons/landmark.svg
new file mode 100644
index 0000000..b72dae4
--- /dev/null
+++ b/icons/landmark.svg
@@ -0,0 +1 @@
+landmark-JP-11.svg
\ No newline at end of file
diff --git a/icons/landuse.svg b/icons/landuse.svg
new file mode 100644
index 0000000..5680a77
--- /dev/null
+++ b/icons/landuse.svg
@@ -0,0 +1 @@
+landuse-11.svg
\ No newline at end of file
diff --git a/icons/laundry.svg b/icons/laundry.svg
new file mode 100644
index 0000000..68d3a51
--- /dev/null
+++ b/icons/laundry.svg
@@ -0,0 +1,2 @@
+laundry-11.svg
\ No newline at end of file
diff --git a/icons/library.svg b/icons/library.svg
new file mode 100644
index 0000000..67a60c6
--- /dev/null
+++ b/icons/library.svg
@@ -0,0 +1,10 @@
+library-11.svg
\ No newline at end of file
diff --git a/icons/lighthouse.svg b/icons/lighthouse.svg
new file mode 100644
index 0000000..2358fcd
--- /dev/null
+++ b/icons/lighthouse.svg
@@ -0,0 +1,3 @@
+lighthouse-11.svg
\ No newline at end of file
diff --git a/icons/lodging.svg b/icons/lodging.svg
new file mode 100644
index 0000000..3b1ab80
--- /dev/null
+++ b/icons/lodging.svg
@@ -0,0 +1,4 @@
+lodging-11.svg
\ No newline at end of file
diff --git a/icons/logging.svg b/icons/logging.svg
new file mode 100644
index 0000000..24eb531
--- /dev/null
+++ b/icons/logging.svg
@@ -0,0 +1 @@
+logging-11.svg
\ No newline at end of file
diff --git a/icons/marker-stroked.svg b/icons/marker-stroked.svg
new file mode 100644
index 0000000..696d3c3
--- /dev/null
+++ b/icons/marker-stroked.svg
@@ -0,0 +1 @@
+marker-stroked-11.svg
\ No newline at end of file
diff --git a/icons/marker.svg b/icons/marker.svg
new file mode 100644
index 0000000..7415eca
--- /dev/null
+++ b/icons/marker.svg
@@ -0,0 +1,3 @@
+marker-11.svg
\ No newline at end of file
diff --git a/icons/mobile_phone.svg b/icons/mobile_phone.svg
new file mode 100644
index 0000000..86e4d94
--- /dev/null
+++ b/icons/mobile_phone.svg
@@ -0,0 +1 @@
+mobile-phone-11.svg
\ No newline at end of file
diff --git a/icons/monument.svg b/icons/monument.svg
new file mode 100644
index 0000000..9fddacb
--- /dev/null
+++ b/icons/monument.svg
@@ -0,0 +1,2 @@
+monument-11.svg
\ No newline at end of file
diff --git a/icons/mountain.svg b/icons/mountain.svg
new file mode 100644
index 0000000..adcfcc1
--- /dev/null
+++ b/icons/mountain.svg
@@ -0,0 +1,4 @@
+mountain-11.svg
\ No newline at end of file
diff --git a/icons/museum.svg b/icons/museum.svg
new file mode 100644
index 0000000..afa9609
--- /dev/null
+++ b/icons/museum.svg
@@ -0,0 +1,4 @@
+museum-11.svg
\ No newline at end of file
diff --git a/icons/music.svg b/icons/music.svg
new file mode 100644
index 0000000..14b0d2d
--- /dev/null
+++ b/icons/music.svg
@@ -0,0 +1,4 @@
+music-11.svg
\ No newline at end of file
diff --git a/icons/national-JP_1.svg b/icons/national-JP_1.svg
new file mode 100644
index 0000000..520e6d3
--- /dev/null
+++ b/icons/national-JP_1.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/national-JP_2.svg b/icons/national-JP_2.svg
new file mode 100644
index 0000000..85d7bb6
--- /dev/null
+++ b/icons/national-JP_2.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/national-JP_3.svg b/icons/national-JP_3.svg
new file mode 100644
index 0000000..0039ee8
--- /dev/null
+++ b/icons/national-JP_3.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/natural.svg b/icons/natural.svg
new file mode 100644
index 0000000..c965653
--- /dev/null
+++ b/icons/natural.svg
@@ -0,0 +1 @@
+natural-11.svg
\ No newline at end of file
diff --git a/icons/oneway.svg b/icons/oneway.svg
new file mode 100644
index 0000000..7aedd4c
--- /dev/null
+++ b/icons/oneway.svg
@@ -0,0 +1,7 @@
+oneway.svg
\ No newline at end of file
diff --git a/icons/optician.svg b/icons/optician.svg
new file mode 100644
index 0000000..4b795f2
--- /dev/null
+++ b/icons/optician.svg
@@ -0,0 +1,7 @@
+optician-11.svg
\ No newline at end of file
diff --git a/icons/paint.svg b/icons/paint.svg
new file mode 100644
index 0000000..1140da4
--- /dev/null
+++ b/icons/paint.svg
@@ -0,0 +1,5 @@
+paint-11.svg
\ No newline at end of file
diff --git a/icons/park.svg b/icons/park.svg
new file mode 100644
index 0000000..2f796e4
--- /dev/null
+++ b/icons/park.svg
@@ -0,0 +1,9 @@
+park-11.svg
\ No newline at end of file
diff --git a/icons/park_alt1.svg b/icons/park_alt1.svg
new file mode 100644
index 0000000..6eadd8c
--- /dev/null
+++ b/icons/park_alt1.svg
@@ -0,0 +1 @@
+park-alt1-11.svg
\ No newline at end of file
diff --git a/icons/parking.svg b/icons/parking.svg
new file mode 100644
index 0000000..d2d9039
--- /dev/null
+++ b/icons/parking.svg
@@ -0,0 +1,3 @@
+parking-11.svg
\ No newline at end of file
diff --git a/icons/parking_garage.svg b/icons/parking_garage.svg
new file mode 100644
index 0000000..2d41a33
--- /dev/null
+++ b/icons/parking_garage.svg
@@ -0,0 +1,6 @@
+parking-garage-11.svg
\ No newline at end of file
diff --git a/icons/pharmacy.svg b/icons/pharmacy.svg
new file mode 100644
index 0000000..27aec9e
--- /dev/null
+++ b/icons/pharmacy.svg
@@ -0,0 +1,2 @@
+pharmacy-11.svg
\ No newline at end of file
diff --git a/icons/picnic_site.svg b/icons/picnic_site.svg
new file mode 100644
index 0000000..c823019
--- /dev/null
+++ b/icons/picnic_site.svg
@@ -0,0 +1,3 @@
+picnic-site-11.svg
\ No newline at end of file
diff --git a/icons/pitch.svg b/icons/pitch.svg
new file mode 100644
index 0000000..33f6547
--- /dev/null
+++ b/icons/pitch.svg
@@ -0,0 +1,4 @@
+pitch-11.svg
\ No newline at end of file
diff --git a/icons/place_of_worship.svg b/icons/place_of_worship.svg
new file mode 100644
index 0000000..e4f5cdf
--- /dev/null
+++ b/icons/place_of_worship.svg
@@ -0,0 +1,2 @@
+place-of-worship-11.svg
\ No newline at end of file
diff --git a/icons/playground.svg b/icons/playground.svg
new file mode 100644
index 0000000..9908741
--- /dev/null
+++ b/icons/playground.svg
@@ -0,0 +1,9 @@
+playground-11.svg
\ No newline at end of file
diff --git a/icons/police.svg b/icons/police.svg
new file mode 100644
index 0000000..f84dfa8
--- /dev/null
+++ b/icons/police.svg
@@ -0,0 +1 @@
+police-JP-11.svg
\ No newline at end of file
diff --git a/icons/post.svg b/icons/post.svg
new file mode 100644
index 0000000..fab8286
--- /dev/null
+++ b/icons/post.svg
@@ -0,0 +1 @@
+post-JP-11.svg
\ No newline at end of file
diff --git a/icons/prefectural-JP_1.svg b/icons/prefectural-JP_1.svg
new file mode 100644
index 0000000..98de741
--- /dev/null
+++ b/icons/prefectural-JP_1.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/prefectural-JP_2.svg b/icons/prefectural-JP_2.svg
new file mode 100644
index 0000000..8f8b665
--- /dev/null
+++ b/icons/prefectural-JP_2.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/prefectural-JP_3.svg b/icons/prefectural-JP_3.svg
new file mode 100644
index 0000000..b972fa1
--- /dev/null
+++ b/icons/prefectural-JP_3.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/prefectural-JP_4.svg b/icons/prefectural-JP_4.svg
new file mode 100644
index 0000000..191f251
--- /dev/null
+++ b/icons/prefectural-JP_4.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/prefectural-JP_5.svg b/icons/prefectural-JP_5.svg
new file mode 100644
index 0000000..751859d
--- /dev/null
+++ b/icons/prefectural-JP_5.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/prefectural-JP_6.svg b/icons/prefectural-JP_6.svg
new file mode 100644
index 0000000..5d54bfa
--- /dev/null
+++ b/icons/prefectural-JP_6.svg
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
diff --git a/icons/prison.svg b/icons/prison.svg
new file mode 100644
index 0000000..d8c1a62
--- /dev/null
+++ b/icons/prison.svg
@@ -0,0 +1,2 @@
+prison-11.svg
\ No newline at end of file
diff --git a/icons/rail.svg b/icons/rail.svg
new file mode 100644
index 0000000..6034e2c
--- /dev/null
+++ b/icons/rail.svg
@@ -0,0 +1,8 @@
+rail-11.svg
\ No newline at end of file
diff --git a/icons/rail_light.svg b/icons/rail_light.svg
new file mode 100644
index 0000000..36f6b36
--- /dev/null
+++ b/icons/rail_light.svg
@@ -0,0 +1,4 @@
+rail-light-11.svg
\ No newline at end of file
diff --git a/icons/rail_metro.svg b/icons/rail_metro.svg
new file mode 100644
index 0000000..3577086
--- /dev/null
+++ b/icons/rail_metro.svg
@@ -0,0 +1,4 @@
+rail-metro-11.svg
\ No newline at end of file
diff --git a/icons/railway.svg b/icons/railway.svg
new file mode 100644
index 0000000..5548f6b
--- /dev/null
+++ b/icons/railway.svg
@@ -0,0 +1,8 @@
+railway-11.svg
\ No newline at end of file
diff --git a/icons/railway_light.svg b/icons/railway_light.svg
new file mode 100644
index 0000000..64d0ddd
--- /dev/null
+++ b/icons/railway_light.svg
@@ -0,0 +1,4 @@
+railway-light-11.svg
\ No newline at end of file
diff --git a/icons/railway_metro.svg b/icons/railway_metro.svg
new file mode 100644
index 0000000..41b6ff2
--- /dev/null
+++ b/icons/railway_metro.svg
@@ -0,0 +1,4 @@
+railway-metro-11.svg
\ No newline at end of file
diff --git a/icons/ranger_station.svg b/icons/ranger_station.svg
new file mode 100644
index 0000000..e340b36
--- /dev/null
+++ b/icons/ranger_station.svg
@@ -0,0 +1,2 @@
+ranger-station-11.svg
\ No newline at end of file
diff --git a/icons/recycling.svg b/icons/recycling.svg
new file mode 100644
index 0000000..b73bf54
--- /dev/null
+++ b/icons/recycling.svg
@@ -0,0 +1,15 @@
+recycling-11.svg
\ No newline at end of file
diff --git a/icons/religious_buddhist.svg b/icons/religious_buddhist.svg
new file mode 100644
index 0000000..2d6f6b2
--- /dev/null
+++ b/icons/religious_buddhist.svg
@@ -0,0 +1,12 @@
+religious-buddhist-11.svg
\ No newline at end of file
diff --git a/icons/religious_christian.svg b/icons/religious_christian.svg
new file mode 100644
index 0000000..b55c65c
--- /dev/null
+++ b/icons/religious_christian.svg
@@ -0,0 +1 @@
+religious-christian-11.svg
\ No newline at end of file
diff --git a/icons/religious_jewish.svg b/icons/religious_jewish.svg
new file mode 100644
index 0000000..0eeb136
--- /dev/null
+++ b/icons/religious_jewish.svg
@@ -0,0 +1 @@
+religious-jewish-11.svg
\ No newline at end of file
diff --git a/icons/religious_muslim.svg b/icons/religious_muslim.svg
new file mode 100644
index 0000000..a3cf814
--- /dev/null
+++ b/icons/religious_muslim.svg
@@ -0,0 +1,3 @@
+religious-muslim-11.svg
\ No newline at end of file
diff --git a/icons/religious_shinto.svg b/icons/religious_shinto.svg
new file mode 100644
index 0000000..d9b5543
--- /dev/null
+++ b/icons/religious_shinto.svg
@@ -0,0 +1 @@
+religious-shinto-11.svg
\ No newline at end of file
diff --git a/icons/residential_community.svg b/icons/residential_community.svg
new file mode 100644
index 0000000..9383a9c
--- /dev/null
+++ b/icons/residential_community.svg
@@ -0,0 +1,3 @@
+residential-community-11.svg
\ No newline at end of file
diff --git a/icons/restaurant.svg b/icons/restaurant.svg
new file mode 100644
index 0000000..581a4b7
--- /dev/null
+++ b/icons/restaurant.svg
@@ -0,0 +1,2 @@
+restaurant-11.svg
\ No newline at end of file
diff --git a/icons/restaurant_noodle.svg b/icons/restaurant_noodle.svg
new file mode 100644
index 0000000..e072c8c
--- /dev/null
+++ b/icons/restaurant_noodle.svg
@@ -0,0 +1 @@
+restaurant-noodle-11.svg
\ No newline at end of file
diff --git a/icons/restaurant_pizza.svg b/icons/restaurant_pizza.svg
new file mode 100644
index 0000000..4f604df
--- /dev/null
+++ b/icons/restaurant_pizza.svg
@@ -0,0 +1 @@
+restaurant-pizza-11.svg
\ No newline at end of file
diff --git a/icons/restaurant_seafood.svg b/icons/restaurant_seafood.svg
new file mode 100644
index 0000000..4367529
--- /dev/null
+++ b/icons/restaurant_seafood.svg
@@ -0,0 +1 @@
+restaurant-seafood-11.svg
\ No newline at end of file
diff --git a/icons/roadblock.svg b/icons/roadblock.svg
new file mode 100644
index 0000000..e9393df
--- /dev/null
+++ b/icons/roadblock.svg
@@ -0,0 +1 @@
+roadblock-11.svg
\ No newline at end of file
diff --git a/icons/rocket.svg b/icons/rocket.svg
new file mode 100644
index 0000000..2cb27b0
--- /dev/null
+++ b/icons/rocket.svg
@@ -0,0 +1,3 @@
+rocket-11.svg
\ No newline at end of file
diff --git a/icons/school.svg b/icons/school.svg
new file mode 100644
index 0000000..1a64e52
--- /dev/null
+++ b/icons/school.svg
@@ -0,0 +1 @@
+school-JP-11.svg
\ No newline at end of file
diff --git a/icons/scooter.svg b/icons/scooter.svg
new file mode 100644
index 0000000..94ebd7c
--- /dev/null
+++ b/icons/scooter.svg
@@ -0,0 +1 @@
+scooter-11.svg
\ No newline at end of file
diff --git a/icons/shelter.svg b/icons/shelter.svg
new file mode 100644
index 0000000..9e7f1b9
--- /dev/null
+++ b/icons/shelter.svg
@@ -0,0 +1 @@
+shelter-11.svg
\ No newline at end of file
diff --git a/icons/shoe.svg b/icons/shoe.svg
new file mode 100644
index 0000000..4dddd5d
--- /dev/null
+++ b/icons/shoe.svg
@@ -0,0 +1,5 @@
+shoe-11.svg
\ No newline at end of file
diff --git a/icons/shop.svg b/icons/shop.svg
new file mode 100644
index 0000000..afc43b2
--- /dev/null
+++ b/icons/shop.svg
@@ -0,0 +1,6 @@
+shop-11.svg
\ No newline at end of file
diff --git a/icons/skateboard.svg b/icons/skateboard.svg
new file mode 100644
index 0000000..c1fbe3d
--- /dev/null
+++ b/icons/skateboard.svg
@@ -0,0 +1 @@
+skateboard-11.svg
\ No newline at end of file
diff --git a/icons/skiing.svg b/icons/skiing.svg
new file mode 100644
index 0000000..34c45b7
--- /dev/null
+++ b/icons/skiing.svg
@@ -0,0 +1,6 @@
+skiing-11.svg
\ No newline at end of file
diff --git a/icons/slaughterhouse.svg b/icons/slaughterhouse.svg
new file mode 100644
index 0000000..cc81e77
--- /dev/null
+++ b/icons/slaughterhouse.svg
@@ -0,0 +1 @@
+slaughterhouse-11.svg
\ No newline at end of file
diff --git a/icons/slipway.svg b/icons/slipway.svg
new file mode 100644
index 0000000..2a20aea
--- /dev/null
+++ b/icons/slipway.svg
@@ -0,0 +1 @@
+slipway-11.svg
\ No newline at end of file
diff --git a/icons/snowmobile.svg b/icons/snowmobile.svg
new file mode 100644
index 0000000..2031bfd
--- /dev/null
+++ b/icons/snowmobile.svg
@@ -0,0 +1 @@
+snowmobile-11.svg
\ No newline at end of file
diff --git a/icons/soccer.svg b/icons/soccer.svg
new file mode 100644
index 0000000..6de9fb0
--- /dev/null
+++ b/icons/soccer.svg
@@ -0,0 +1,8 @@
+soccer-11.svg
\ No newline at end of file
diff --git a/icons/square-stroked.svg b/icons/square-stroked.svg
new file mode 100644
index 0000000..d620194
--- /dev/null
+++ b/icons/square-stroked.svg
@@ -0,0 +1,3 @@
+square-stroked-11.svg
\ No newline at end of file
diff --git a/icons/square.svg b/icons/square.svg
new file mode 100644
index 0000000..538913a
--- /dev/null
+++ b/icons/square.svg
@@ -0,0 +1 @@
+square-11.svg
\ No newline at end of file
diff --git a/icons/stadium.svg b/icons/stadium.svg
new file mode 100644
index 0000000..2616f3e
--- /dev/null
+++ b/icons/stadium.svg
@@ -0,0 +1,6 @@
+stadium-11.svg
\ No newline at end of file
diff --git a/icons/star-stroked.svg b/icons/star-stroked.svg
new file mode 100644
index 0000000..c9ca832
--- /dev/null
+++ b/icons/star-stroked.svg
@@ -0,0 +1,5 @@
+star-stroked-11.svg
\ No newline at end of file
diff --git a/icons/star.svg b/icons/star.svg
new file mode 100644
index 0000000..a156ba7
--- /dev/null
+++ b/icons/star.svg
@@ -0,0 +1,3 @@
+star-11.svg
\ No newline at end of file
diff --git a/icons/suitcase.svg b/icons/suitcase.svg
new file mode 100644
index 0000000..d6ceee2
--- /dev/null
+++ b/icons/suitcase.svg
@@ -0,0 +1,3 @@
+suitcase-11.svg
\ No newline at end of file
diff --git a/icons/sushi.svg b/icons/sushi.svg
new file mode 100644
index 0000000..4db6139
--- /dev/null
+++ b/icons/sushi.svg
@@ -0,0 +1,7 @@
+sushi-11.svg
\ No newline at end of file
diff --git a/icons/swimming.svg b/icons/swimming.svg
new file mode 100644
index 0000000..e799735
--- /dev/null
+++ b/icons/swimming.svg
@@ -0,0 +1,5 @@
+swimming-11.svg
\ No newline at end of file
diff --git a/icons/table_tennis.svg b/icons/table_tennis.svg
new file mode 100644
index 0000000..eac894f
--- /dev/null
+++ b/icons/table_tennis.svg
@@ -0,0 +1 @@
+table-tennis-11.svg
\ No newline at end of file
diff --git a/icons/teahouse.svg b/icons/teahouse.svg
new file mode 100644
index 0000000..b453578
--- /dev/null
+++ b/icons/teahouse.svg
@@ -0,0 +1,3 @@
+teahouse-11.svg
\ No newline at end of file
diff --git a/icons/telephone.svg b/icons/telephone.svg
new file mode 100644
index 0000000..8cf0ef9
--- /dev/null
+++ b/icons/telephone.svg
@@ -0,0 +1 @@
+telephone-11.svg
\ No newline at end of file
diff --git a/icons/tennis.svg b/icons/tennis.svg
new file mode 100644
index 0000000..cd20243
--- /dev/null
+++ b/icons/tennis.svg
@@ -0,0 +1 @@
+tennis-11.svg
\ No newline at end of file
diff --git a/icons/theatre.svg b/icons/theatre.svg
new file mode 100644
index 0000000..210a80c
--- /dev/null
+++ b/icons/theatre.svg
@@ -0,0 +1,9 @@
+theatre-11.svg
\ No newline at end of file
diff --git a/icons/toilet.svg b/icons/toilet.svg
new file mode 100644
index 0000000..17b2c91
--- /dev/null
+++ b/icons/toilet.svg
@@ -0,0 +1,10 @@
+toilet-11.svg
\ No newline at end of file
diff --git a/icons/town.svg b/icons/town.svg
new file mode 100644
index 0000000..a142dfd
--- /dev/null
+++ b/icons/town.svg
@@ -0,0 +1 @@
+town-11.svg
\ No newline at end of file
diff --git a/icons/town_hall.svg b/icons/town_hall.svg
new file mode 100644
index 0000000..c23beab
--- /dev/null
+++ b/icons/town_hall.svg
@@ -0,0 +1 @@
+town-hall-11.svg
\ No newline at end of file
diff --git a/icons/triangle-stroked.svg b/icons/triangle-stroked.svg
new file mode 100644
index 0000000..80a0b95
--- /dev/null
+++ b/icons/triangle-stroked.svg
@@ -0,0 +1,5 @@
+triangle-stroked-11.svg
\ No newline at end of file
diff --git a/icons/triangle.svg b/icons/triangle.svg
new file mode 100644
index 0000000..3106c84
--- /dev/null
+++ b/icons/triangle.svg
@@ -0,0 +1,5 @@
+triangle-11.svg
\ No newline at end of file
diff --git a/icons/veterinary.svg b/icons/veterinary.svg
new file mode 100644
index 0000000..f756779
--- /dev/null
+++ b/icons/veterinary.svg
@@ -0,0 +1,12 @@
+veterinary-11.svg
\ No newline at end of file
diff --git a/icons/viewpoint.svg b/icons/viewpoint.svg
new file mode 100644
index 0000000..b0c5b04
--- /dev/null
+++ b/icons/viewpoint.svg
@@ -0,0 +1 @@
+viewpoint-11.svg
\ No newline at end of file
diff --git a/icons/village.svg b/icons/village.svg
new file mode 100644
index 0000000..f88e068
--- /dev/null
+++ b/icons/village.svg
@@ -0,0 +1 @@
+village-11.svg
\ No newline at end of file
diff --git a/icons/volcano.svg b/icons/volcano.svg
new file mode 100644
index 0000000..7300df5
--- /dev/null
+++ b/icons/volcano.svg
@@ -0,0 +1,3 @@
+volcano-11.svg
\ No newline at end of file
diff --git a/icons/volleyball.svg b/icons/volleyball.svg
new file mode 100644
index 0000000..bc60378
--- /dev/null
+++ b/icons/volleyball.svg
@@ -0,0 +1 @@
+volleyball-11.svg
\ No newline at end of file
diff --git a/icons/warehouse.svg b/icons/warehouse.svg
new file mode 100644
index 0000000..3ff2954
--- /dev/null
+++ b/icons/warehouse.svg
@@ -0,0 +1,7 @@
+warehouse-11.svg
\ No newline at end of file
diff --git a/icons/waste_basket.svg b/icons/waste_basket.svg
new file mode 100644
index 0000000..a60966f
--- /dev/null
+++ b/icons/waste_basket.svg
@@ -0,0 +1,2 @@
+waste-basket-11.svg
\ No newline at end of file
diff --git a/icons/watch.svg b/icons/watch.svg
new file mode 100644
index 0000000..c969f86
--- /dev/null
+++ b/icons/watch.svg
@@ -0,0 +1,4 @@
+watch-11.svg
\ No newline at end of file
diff --git a/icons/water.svg b/icons/water.svg
new file mode 100644
index 0000000..3e73f19
--- /dev/null
+++ b/icons/water.svg
@@ -0,0 +1 @@
+water-11.svg
\ No newline at end of file
diff --git a/icons/waterfall.svg b/icons/waterfall.svg
new file mode 100644
index 0000000..6c7fb9a
--- /dev/null
+++ b/icons/waterfall.svg
@@ -0,0 +1,5 @@
+waterfall-11.svg
\ No newline at end of file
diff --git a/icons/watermill.svg b/icons/watermill.svg
new file mode 100644
index 0000000..2186844
--- /dev/null
+++ b/icons/watermill.svg
@@ -0,0 +1,21 @@
+watermill-11.svg
\ No newline at end of file
diff --git a/icons/wetland.svg b/icons/wetland.svg
new file mode 100644
index 0000000..ec7db12
--- /dev/null
+++ b/icons/wetland.svg
@@ -0,0 +1,15 @@
+wetland-11.svg
\ No newline at end of file
diff --git a/icons/wheelchair.svg b/icons/wheelchair.svg
new file mode 100644
index 0000000..d3a9a7f
--- /dev/null
+++ b/icons/wheelchair.svg
@@ -0,0 +1,21 @@
+wheelchair-11.svg
\ No newline at end of file
diff --git a/icons/windmill.svg b/icons/windmill.svg
new file mode 100644
index 0000000..82fdc05
--- /dev/null
+++ b/icons/windmill.svg
@@ -0,0 +1,9 @@
+windmill-11.svg
\ No newline at end of file
diff --git a/icons/zoo.svg b/icons/zoo.svg
new file mode 100644
index 0000000..2491c13
--- /dev/null
+++ b/icons/zoo.svg
@@ -0,0 +1,4 @@
+zoo-11.svg
\ No newline at end of file
diff --git a/layers/airport-label-major.yml b/layers/airport-label-major.yml
new file mode 100644
index 0000000..9869bf5
--- /dev/null
+++ b/layers/airport-label-major.yml
@@ -0,0 +1,29 @@
+id: airport-label-major
+type: symbol
+source: geolonia-gsi-custom
+source-layer: aerodrome_label
+minzoom: 5
+filter:
+  - all
+  - - has
+    - iata
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  icon-image: airport
+  text-field: '{name}'
+  text-offset:
+    - 0
+    - 0.6
+  text-size: 12
+  text-max-width: 9
+paint:
+  text-halo-blur: 0.5
+  text-color: '#666'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
diff --git a/layers/background.yml b/layers/background.yml
new file mode 100644
index 0000000..1adcee1
--- /dev/null
+++ b/layers/background.yml
@@ -0,0 +1,15 @@
+id: background
+type: background
+paint:
+  background-color:
+    stops:
+    - - 1
+      - '#f2f5d6'
+    - - 5
+      - '#dae2c1'
+    - - 8
+      - '#EDE6DD'
+    - - 10
+      - '#e6e5e3'
+    - - 16
+      - '#f5f5f5'
diff --git a/layers/boundary-sea.yml b/layers/boundary-sea.yml
new file mode 100644
index 0000000..347bacc
--- /dev/null
+++ b/layers/boundary-sea.yml
@@ -0,0 +1,22 @@
+id: boundary-sea
+type: line
+source: gsi-japan
+source-layer: boundary
+minzoom: 6
+maxzoom: 8
+filter:
+  - all
+  - - in
+    - ftCode
+    - 51221
+layout:
+  line-join: round
+  visibility: visible
+paint:
+  line-color: '#9e9cab'
+  line-dasharray:
+    - 4
+    - 1
+    - 1
+    - 1
+  line-width: 2
diff --git a/layers/boundary.yml b/layers/boundary.yml
new file mode 100644
index 0000000..1a500eb
--- /dev/null
+++ b/layers/boundary.yml
@@ -0,0 +1,37 @@
+id: boundary
+type: line
+source: gsi-japan
+source-layer: boundary
+minzoom: 6
+maxzoom: 14
+filter:
+  - all
+  - - in
+    - ftCode
+    - 1211
+    - 1212
+    - 51212
+layout:
+  line-join: round
+paint:
+  line-color: 'rgba(68,68,68,0.7)'
+  line-dasharray:
+    - 3
+    - 1
+    - 1
+    - 1
+  line-width:
+    base: 1.4
+    stops:
+      - - 8
+        - 1.2
+      - - 12
+        - 2
+  line-opacity:
+    - interpolate
+    - - linear
+    - - zoom
+    - 6
+    - 1
+    - 14
+    - 0.1
diff --git a/layers/building-3d.yml b/layers/building-3d.yml
new file mode 100644
index 0000000..f35fdd3
--- /dev/null
+++ b/layers/building-3d.yml
@@ -0,0 +1,27 @@
+id: building-3d
+type: fill-extrusion
+metadata:
+  visible-on-3d: true
+source: gsi-japan
+source-layer: building
+minzoom: 16
+layout:
+  visibility: none
+paint:
+  fill-extrusion-color: '#D7D4D1'
+  fill-extrusion-height:
+    - match
+    - - get
+      - ftCode
+    - 3101
+    - 3
+    - 3102
+    - 30
+    - 3013
+    - 100
+    - 3111
+    - 3
+    - 3112
+    - 10
+    - 10
+  fill-extrusion-opacity: 0.5
diff --git a/layers/building-nowall.yml b/layers/building-nowall.yml
new file mode 100644
index 0000000..608747e
--- /dev/null
+++ b/layers/building-nowall.yml
@@ -0,0 +1,19 @@
+id: building-nowall
+type: fill
+source: gsi-japan
+source-layer: building
+minzoom: 15
+filter:
+  - all
+  - - '=='
+    - $type
+    - Polygon
+  - - in
+    - ftCode
+    - 3111
+    - 3112
+paint:
+  fill-color: '#e2dcd4'
+  fill-outline-color: '#d7cfc2'
+  fill-opacity: 0.6
+  fill-antialias: true
diff --git a/layers/building.yml b/layers/building.yml
new file mode 100644
index 0000000..53a6323
--- /dev/null
+++ b/layers/building.yml
@@ -0,0 +1,18 @@
+id: building
+type: fill
+source: gsi-japan
+source-layer: building
+minzoom: 15
+filter:
+  - all
+  - - '=='
+    - $type
+    - Polygon
+  - - '!in'
+    - ftCode
+    - 3112
+    - 3111
+paint:
+  fill-color: 'rgba(236, 236, 236, 0.9)'
+  fill-outline-color: '#ccc'
+  fill-antialias: true
diff --git a/layers/components/broad-road-width-casing.yml b/layers/components/broad-road-width-casing.yml
new file mode 100644
index 0000000..c7a0b53
--- /dev/null
+++ b/layers/components/broad-road-width-casing.yml
@@ -0,0 +1,20 @@
+  - interpolate
+  - - exponential
+    - 0.9 # カーブが大きい
+  - - zoom
+  - 8     # zl 8
+  - 0     # 0 から始めて
+  - 9     # zl 9 から本格的に描画
+  - 0.6
+  - 12    # zl
+  - 0.9
+  - 14    # zl
+  - 4
+  - 16    # zl 16 で building の表示が始まり、太さコントロールが必要になる
+  - 14
+  - 18    # zl
+  - 24
+  - 19    # zl
+  - 72
+  - 20   # 最大zl, つまり20で
+  - 166  # 太さ180 ならはみ出さない
diff --git a/layers/components/broad-road-width.yml b/layers/components/broad-road-width.yml
new file mode 100644
index 0000000..fbb6946
--- /dev/null
+++ b/layers/components/broad-road-width.yml
@@ -0,0 +1,20 @@
+  - interpolate
+  - - exponential
+    - 0.9 # カーブが大きい
+  - - zoom
+  - 8    # zl 8
+  - 0    # 0 から始めて
+  - 9    # zl 9 から本格的に描画
+  - 0.5
+  - 12   # zl 10 まで太くしない
+  - 0.8
+  - 14
+  - 3
+  - 16   # zl 16 で building の表示が始まり、太さコントロールが必要になる
+  - 10
+  - 18
+  - 20
+  - 19
+  - 68
+  - 20   # 最大zl, つまり20で
+  - 160  # はみ出さない太さ
diff --git a/layers/components/motorway-road-width.yml b/layers/components/motorway-road-width.yml
new file mode 100644
index 0000000..b4ebc4d
--- /dev/null
+++ b/layers/components/motorway-road-width.yml
@@ -0,0 +1,17 @@
+  - interpolate
+  - - linear
+  - - zoom
+  - 6    # zl 6
+  - 2    # 2 から始めて
+  - 8    # zl 8
+  - 2    # width: 2
+  - 14
+  - 3
+  - 16   # zl 16 で building の表示が始まり、太さコントロールが必要になる
+  - 10
+  - 18
+  - 20
+  - 19
+  - 68
+  - 20   # 最大zl, つまり20で
+  - 160  # はみ出さない太さ
diff --git a/layers/components/remove-place-suffix.yml b/layers/components/remove-place-suffix.yml
new file mode 100644
index 0000000..65f6548
--- /dev/null
+++ b/layers/components/remove-place-suffix.yml
@@ -0,0 +1,11 @@
+# 市」を削除するために、文字数に応じて最後の文字以外を取得する。
+# TODO: タイル側で対応する。
+[
+  "match",
+  ["length", ["get", "name"]],
+  2, ["get", "name"], # 2文字の場合はそのまま表示
+  3, ["slice", ["get", "name"], 0, 2], # 3文字の場合は最後の文字を削除
+  4, ["slice", ["get", "name"], 0, 3], # 4文字の場合は最後の文字を削除
+  5, ["slice", ["get", "name"], 0, 4], # 5文字の場合は最後の文字を削除
+  ["get", "name"] # フォールバック
+]
diff --git a/layers/components/road-blur-opacity.yml b/layers/components/road-blur-opacity.yml
new file mode 100644
index 0000000..e38a3f8
--- /dev/null
+++ b/layers/components/road-blur-opacity.yml
@@ -0,0 +1,9 @@
+  - interpolate
+  - - linear
+  - - zoom
+  - 14
+  - 0.2
+  - 17
+  - 0.8
+  - 18
+  - 0
diff --git a/layers/components/road-color.yml b/layers/components/road-color.yml
new file mode 100644
index 0000000..e35376e
--- /dev/null
+++ b/layers/components/road-color.yml
@@ -0,0 +1,5 @@
+  - step
+  - - zoom
+  - '#ffffff'
+  - 16
+  - '#f5f5f5'
diff --git a/layers/components/tunnel-casing-color.yml b/layers/components/tunnel-casing-color.yml
new file mode 100644
index 0000000..611b740
--- /dev/null
+++ b/layers/components/tunnel-casing-color.yml
@@ -0,0 +1 @@
+'#9C9DA2'
diff --git a/layers/components/tunnel-color.yml b/layers/components/tunnel-color.yml
new file mode 100644
index 0000000..48ef42a
--- /dev/null
+++ b/layers/components/tunnel-color.yml
@@ -0,0 +1 @@
+'#D8D8D8'
diff --git a/layers/components/water-blur-paint.yml b/layers/components/water-blur-paint.yml
new file mode 100644
index 0000000..e33c048
--- /dev/null
+++ b/layers/components/water-blur-paint.yml
@@ -0,0 +1,14 @@
+line-color: '#62cffc'
+line-width:
+  stops:
+    - - 17
+      - 3
+    - - 20
+      - 5
+line-translate:
+  stops:
+    - - 17
+      - [1, 1]
+    - - 20
+      - [-2, -2]
+line-blur: 2
diff --git a/layers/geolonia-water-ocean.yml b/layers/geolonia-water-ocean.yml
new file mode 100644
index 0000000..d543f6f
--- /dev/null
+++ b/layers/geolonia-water-ocean.yml
@@ -0,0 +1,8 @@
+id: geolonia-water-ocean
+type: fill
+source: geolonia-water
+source-layer: water
+layout:
+  visibility: visible
+paint:
+  fill-color: '#65cbf9'
diff --git a/layers/highway-minor-bridge-casing-blur.yml b/layers/highway-minor-bridge-casing-blur.yml
new file mode 100644
index 0000000..cbc41aa
--- /dev/null
+++ b/layers/highway-minor-bridge-casing-blur.yml
@@ -0,0 +1,48 @@
+id: highway-minor-bridge-casing-blur
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 7
+filter:
+  - all
+  - - in
+    - ftCode
+    - 2702
+    - 2703
+  - - '!='
+    - motorway
+    - 1
+  - - '!='
+    - rdCtg
+    - 0
+  - - '!='
+    - rdCtg
+    - 1
+  - - '!='
+    - rdCtg
+    - 2
+  - - '!='
+    - rdCtg
+    - 3
+paint:
+  line-color: '#000000'
+  line-width:
+    base: 1.2
+    stops:
+      - - 15
+        - 1.2
+      - - 20
+        - 15
+  line-translate:
+    stops:
+      - - 14
+        - [0, 0]
+      - - 17
+        - [5, 2]
+  line-opacity: !!inc/file layers/components/road-blur-opacity.yml
+  line-blur:
+    stops:
+      - - 14
+        - 20
+      - - 17
+        - 25
diff --git a/layers/highway-minor-bridge-casing.yml b/layers/highway-minor-bridge-casing.yml
new file mode 100644
index 0000000..17d9e67
--- /dev/null
+++ b/layers/highway-minor-bridge-casing.yml
@@ -0,0 +1,35 @@
+id: highway-minor-bridge-casing
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 7
+filter:
+  - all
+  - - in
+    - ftCode
+    - 2702
+    - 2703
+  - - '!='
+    - motorway
+    - 1
+  - - '!='
+    - rdCtg
+    - 0
+  - - '!='
+    - rdCtg
+    - 1
+  - - '!='
+    - rdCtg
+    - 2
+  - - '!='
+    - rdCtg
+    - 3
+paint:
+  line-color: '#f8f4f0'
+  line-width:
+    base: 1.2
+    stops:
+      - - 15
+        - 1.2
+      - - 20
+        - 18
diff --git a/layers/highway-minor-bridge.yml b/layers/highway-minor-bridge.yml
new file mode 100644
index 0000000..f2fe584
--- /dev/null
+++ b/layers/highway-minor-bridge.yml
@@ -0,0 +1,38 @@
+id: highway-minor-bridge
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 7
+filter:
+  - all
+  - - in
+    - ftCode
+    - 2702
+    - 2703
+  - - '!='
+    - motorway
+    - 1
+  - - '!='
+    - rdCtg
+    - 0
+  - - '!='
+    - rdCtg
+    - 1
+  - - '!='
+    - rdCtg
+    - 2
+  - - '!='
+    - rdCtg
+    - 3
+paint:
+  line-color: !!inc/file layers/components/road-color.yml
+  line-width:
+    base: 1.2
+    stops:
+      - - 15
+        - 1.2
+      - - 20
+        - 4
+  line-dasharray:
+    - 1.5
+    - 0.75
diff --git a/layers/highway-minor.yml b/layers/highway-minor.yml
new file mode 100644
index 0000000..4c91186
--- /dev/null
+++ b/layers/highway-minor.yml
@@ -0,0 +1,33 @@
+id: highway-minor
+type: line
+source: gsi-japan
+source-layer: road
+filter:
+  - all
+  - - '>='
+    - ftCode
+    - 2700
+  - - <
+    - ftCode
+    - 2800
+  - - '!='
+    - ftCode
+    - 2704
+layout:
+  line-cap: butt
+  line-join: bevel
+paint:
+  line-color: !!inc/file layers/components/road-color.yml
+  line-width:
+    - interpolate
+    - - exponential
+      - 0.9 # カーブが大きい
+    - - zoom
+    - 13.5 # zl 8
+    - 0    # 0 から始めて
+    - 14    # zl 9 から本格的に描画
+    - 1.2
+    - 16   # zl 16 で building の表示が始まり、太さコントロールが必要になる
+    - 2.2
+    - 20   # 最大zl, つまり20で
+    - 16   # 太さ20 ならはみ出さない
diff --git a/layers/highway-motorway-bridge-casing-blur.yml b/layers/highway-motorway-bridge-casing-blur.yml
new file mode 100644
index 0000000..8b60b76
--- /dev/null
+++ b/layers/highway-motorway-bridge-casing-blur.yml
@@ -0,0 +1,46 @@
+id: highway-motorway-bridge-casing-blur
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 6
+filter:
+  - any
+  - - all
+    - - in
+      - ftCode
+      - 2702
+      - 2703
+    - - any
+      - - '=='
+        - motorway
+        - 1
+      - - '=='
+        - rdCtg
+        - 3
+  - - '=='
+    - ftCode
+    - 52703
+layout:
+  line-join: round
+  line-cap: "round"
+paint:
+  line-color: '#000000'
+  line-translate:
+    stops:
+      - - 14
+        - [0, 0]
+      - - 17
+        - [5, 2]
+  line-opacity:
+    stops:
+      - - 14
+        - 0.2
+      - - 17
+        - 0.6
+  line-blur:
+    stops:
+      - - 14
+        - 20
+      - - 17
+        - 30
+  line-width: !!inc/file layers/components/broad-road-width-casing.yml
diff --git a/layers/highway-motorway-bridge-casing.yml b/layers/highway-motorway-bridge-casing.yml
new file mode 100644
index 0000000..7ff2936
--- /dev/null
+++ b/layers/highway-motorway-bridge-casing.yml
@@ -0,0 +1,35 @@
+id: highway-motorway-bridge-casing
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 6
+filter:
+  - any
+  - - all
+    - - in
+      - ftCode
+      - 2702
+      - 2703
+    - - any
+      - - '=='
+        - motorway
+        - 1
+      - - '=='
+        - rdCtg
+        - 3
+  - - '=='
+    - ftCode
+    - 52703
+layout:
+  line-join: round
+paint:
+  line-color: '#4ed19e'
+  line-opacity:
+    - interpolate
+    - - linear
+    - - zoom
+    - 8
+    - 0
+    - 11
+    - 1
+  line-width: !!inc/file layers/components/broad-road-width-casing.yml
diff --git a/layers/highway-motorway-bridge.yml b/layers/highway-motorway-bridge.yml
new file mode 100644
index 0000000..bbb3e21
--- /dev/null
+++ b/layers/highway-motorway-bridge.yml
@@ -0,0 +1,34 @@
+id: highway-motorway-bridge
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 6
+filter:
+  - any
+  - - all
+    - - in
+      - ftCode
+      - 2702
+      - 2703
+    - - any
+      - - '=='
+        - motorway
+        - 1
+      - - '=='
+        - rdCtg
+        - 3
+  - - '=='
+    - ftCode
+    - 52703
+layout:
+  line-join: round
+paint:
+  line-color:
+    - interpolate
+    - - linear
+    - - zoom
+    - 6
+    - '#00A54E'
+    - 13
+    - '#3dcc80'
+  line-width: !!inc/file layers/components/broad-road-width.yml
diff --git a/layers/highway-motorway-casing.yml b/layers/highway-motorway-casing.yml
new file mode 100644
index 0000000..8162df0
--- /dev/null
+++ b/layers/highway-motorway-casing.yml
@@ -0,0 +1,48 @@
+id: highway-motorway-casing
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 4
+filter:
+  - any
+  - - all
+    - - '>='
+      - ftCode
+      - 2700
+    - - <
+      - ftCode
+      - 2800
+    - - '!='
+      - ftCode
+      - 2702
+    - - '!='
+      - ftCode
+      - 2703
+    - - '!='
+      - ftCode
+      - 2704
+    - - any
+      - - '=='
+        - motorway
+        - 1
+      - - '=='
+        - rdCtg
+        - 3
+  - - '=='
+    - ftCode
+    - 52703
+layout:
+  line-cap: butt
+  line-join: round
+  visibility: visible
+paint:
+  line-color: '#4ed19e'
+  line-width: !!inc/file layers/components/broad-road-width-casing.yml
+  line-opacity:
+    - interpolate
+    - - linear
+    - - zoom
+    - 8
+    - 0.6
+    - 11
+    - 1
diff --git a/layers/highway-motorway-tunnel-casing.yml b/layers/highway-motorway-tunnel-casing.yml
new file mode 100644
index 0000000..a0a8f7c
--- /dev/null
+++ b/layers/highway-motorway-tunnel-casing.yml
@@ -0,0 +1,26 @@
+id: highway-motorway-tunnel-casing
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 6
+filter:
+  - all
+  - - '=='
+    - ftCode
+    - 2704
+  - - any
+    - - '=='
+      - motorway
+      - 1
+    - - '=='
+      - rdCtg
+      - 3
+layout:
+  line-join: round
+  visibility: visible
+paint:
+  line-color: !!inc/file layers/components/tunnel-casing-color.yml
+  line-dasharray:
+    - 0.5
+    - 0.25
+  line-width: !!inc/file layers/components/broad-road-width-casing.yml
diff --git a/layers/highway-motorway-tunnel.yml b/layers/highway-motorway-tunnel.yml
new file mode 100644
index 0000000..1162503
--- /dev/null
+++ b/layers/highway-motorway-tunnel.yml
@@ -0,0 +1,28 @@
+id: highway-motorway-tunnel
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 6
+filter:
+  - all
+  - - '=='
+    - ftCode
+    - 2704
+  - - any
+    - - '=='
+      - motorway
+      - 1
+    - - '=='
+      - rdCtg
+      - 3
+layout:
+  line-join: round
+  visibility: visible
+paint:
+  line-color:
+    stops:
+    - - 8
+      - '#00A54E'
+    - - 13 # z13 からトンネル独自の色に変更
+      - '#D8D8D8' #トンネル色
+  line-width: !!inc/file layers/components/motorway-road-width.yml
diff --git a/layers/highway-motorway.yml b/layers/highway-motorway.yml
new file mode 100644
index 0000000..3bb3a95
--- /dev/null
+++ b/layers/highway-motorway.yml
@@ -0,0 +1,47 @@
+id: highway-motorway
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 6
+filter:
+  - any
+  - - all
+    - - '>='
+      - ftCode
+      - 2700
+    - - <
+      - ftCode
+      - 2800
+    - - '!='
+      - ftCode
+      - 2702
+    - - '!='
+      - ftCode
+      - 2703
+    - - '!='
+      - ftCode
+      - 2704
+    - - any
+      - - '=='
+        - motorway
+        - 1
+      - - '=='
+        - rdCtg
+        - 3
+  - - '=='
+    - ftCode
+    - 52703
+layout:
+  line-cap: round
+  line-join: round
+paint:
+  line-color:
+    - interpolate
+    - - linear
+    - - zoom
+    - 6
+    - '#00A54E'
+    - 13
+    - '#3dcc80'
+  line-width: !!inc/file layers/components/motorway-road-width.yml
+
diff --git a/layers/highway-primary-bridge-casing-blur.yml b/layers/highway-primary-bridge-casing-blur.yml
new file mode 100644
index 0000000..563d1a7
--- /dev/null
+++ b/layers/highway-primary-bridge-casing-blur.yml
@@ -0,0 +1,52 @@
+id: highway-primary-bridge-casing-blur
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 7
+filter:
+  - any
+  - - all
+    - - '=='
+      - rnkWidth
+      - 4
+    - - in
+      - ftCode
+      - 2702
+      - 2703
+    - - '!='
+      - motorway
+      - 1
+    - - in
+      - rdCtg
+      - 0
+      - 1
+      - 2
+  - - all
+    - - '>='
+      - ftCode
+      - 52700
+    - - <
+      - ftCode
+      - 52800
+    - - '!='
+      - ftCode
+      - 52703
+layout:
+  line-join: round
+  line-cap: "round"
+paint:
+  line-color: '#000000'
+  line-width: !!inc/file layers/components/broad-road-width-casing.yml
+  line-translate:
+    stops:
+      - - 14
+        - [0, 0]
+      - - 17
+        - [5, 2]
+  line-opacity: !!inc/file layers/components/road-blur-opacity.yml
+  line-blur:
+    stops:
+      - - 14
+        - 20
+      - - 17
+        - 25
diff --git a/layers/highway-primary-bridge-casing.yml b/layers/highway-primary-bridge-casing.yml
new file mode 100644
index 0000000..1f74486
--- /dev/null
+++ b/layers/highway-primary-bridge-casing.yml
@@ -0,0 +1,38 @@
+id: highway-primary-bridge-casing
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 7
+filter:
+  - any
+  - - all
+    - - '=='
+      - rnkWidth
+      - 4
+    - - in
+      - ftCode
+      - 2702
+      - 2703
+    - - '!='
+      - motorway
+      - 1
+    - - in
+      - rdCtg
+      - 0
+      - 1
+      - 2
+  - - all
+    - - '>='
+      - ftCode
+      - 52700
+    - - <
+      - ftCode
+      - 52800
+    - - '!='
+      - ftCode
+      - 52703
+layout:
+  line-join: round
+paint:
+  line-color: rgba(222, 222, 222, 1)
+  line-width: !!inc/file layers/components/broad-road-width-casing.yml
diff --git a/layers/highway-primary-bridge.yml b/layers/highway-primary-bridge.yml
new file mode 100644
index 0000000..541fcf3
--- /dev/null
+++ b/layers/highway-primary-bridge.yml
@@ -0,0 +1,38 @@
+id: highway-primary-bridge
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 7
+filter:
+  - any
+  - - all
+    - - '=='
+      - rnkWidth
+      - 4
+    - - in
+      - ftCode
+      - 2702
+      - 2703
+    - - '!='
+      - motorway
+      - 1
+    - - in
+      - rdCtg
+      - 0
+      - 1
+      - 2
+  - - all
+    - - '>='
+      - ftCode
+      - 52700
+    - - <
+      - ftCode
+      - 52800
+    - - '!='
+      - ftCode
+      - 52703
+layout:
+  line-join: round
+paint:
+  line-color: !!inc/file layers/components/road-color.yml
+  line-width: !!inc/file layers/components/broad-road-width.yml
diff --git a/layers/highway-primary-tunnel-casing.yml b/layers/highway-primary-tunnel-casing.yml
new file mode 100644
index 0000000..c808005
--- /dev/null
+++ b/layers/highway-primary-tunnel-casing.yml
@@ -0,0 +1,40 @@
+id: highway-primary-tunnel-casing
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 7
+filter:
+  - any
+  - - all
+    - - '=='
+      - rnkWidth
+      - 4
+    - - in
+      - ftCode
+      - 2704
+    - - '!='
+      - motorway
+      - 1
+    - - in
+      - rdCtg
+      - 0
+      - 1
+      - 2
+  - - all
+    - - '>='
+      - ftCode
+      - 52700
+    - - <
+      - ftCode
+      - 52800
+    - - '!='
+      - ftCode
+      - 52703
+layout:
+  line-join: round
+paint:
+  line-color: !!inc/file layers/components/tunnel-casing-color.yml
+  line-dasharray:
+    - 0.5
+    - 0.25
+  line-width: !!inc/file layers/components/broad-road-width-casing.yml
diff --git a/layers/highway-primary-tunnel.yml b/layers/highway-primary-tunnel.yml
new file mode 100644
index 0000000..ec9a813
--- /dev/null
+++ b/layers/highway-primary-tunnel.yml
@@ -0,0 +1,38 @@
+id: highway-primary-tunnel
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 7
+filter:
+  - any
+  - - all
+    - - '=='
+      - rnkWidth
+      - 4
+    - - in
+      - ftCode
+      - 2704
+    - - '!='
+      - motorway
+      - 1
+    - - in
+      - rdCtg
+      - 0
+      - 1
+      - 2
+  - - all
+    - - '>='
+      - ftCode
+      - 52700
+    - - <
+      - ftCode
+      - 52800
+    - - '!='
+      - ftCode
+      - 52703
+layout:
+  line-join: round
+  visibility: visible
+paint:
+  line-color: !!inc/file layers/components/tunnel-color.yml
+  line-width: !!inc/file layers/components/broad-road-width.yml
diff --git a/layers/highway-primary.yml b/layers/highway-primary.yml
new file mode 100644
index 0000000..464e893
--- /dev/null
+++ b/layers/highway-primary.yml
@@ -0,0 +1,43 @@
+id: highway-primary
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 7
+filter:
+  - any
+  - - all
+    - - '=='
+      - rnkWidth
+      - 4
+    - - any
+      - - '=='
+        - ftCode
+        - 2701
+    - - '!='
+      - motorway
+      - 1
+    - - '!='
+      - rdCtg
+      - 3
+    - - in
+      - rdCtg
+      - 0
+      - 1
+      - 2
+      - 6
+  - - all
+    - - '>='
+      - ftCode
+      - 52700
+    - - <
+      - ftCode
+      - 52800
+    - - '!='
+      - ftCode
+      - 52703
+layout:
+  line-cap: round
+  line-join: round
+paint:
+  line-color: !!inc/file layers/components/road-color.yml
+  line-width: !!inc/file layers/components/broad-road-width.yml
diff --git a/layers/highway-secondary-bridge-casing-blur.yml b/layers/highway-secondary-bridge-casing-blur.yml
new file mode 100644
index 0000000..52193eb
--- /dev/null
+++ b/layers/highway-secondary-bridge-casing-blur.yml
@@ -0,0 +1,55 @@
+id: highway-secondary-bridge-casing-blur
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 7
+filter:
+  - any
+  - - all
+    - - '!='
+      - rnkWidth
+      - 0
+    - - '!='
+      - rnkWidth
+      - 4
+    - - in
+      - ftCode
+      - 2702
+      - 2703
+    - - '!='
+      - motorway
+      - 1
+    - - in
+      - rdCtg
+      - 0
+      - 1
+      - 2
+  - - all
+    - - '>='
+      - ftCode
+      - 52700
+    - - <
+      - ftCode
+      - 52800
+    - - '!='
+      - ftCode
+      - 52703
+layout:
+  line-join: round
+  line-cap: "round"
+paint:
+  line-color: '#000000'
+  line-translate:
+    stops:
+      - - 14
+        - [0, 0]
+      - - 17
+        - [5, 2]
+  line-opacity: !!inc/file layers/components/road-blur-opacity.yml
+  line-blur:
+    stops:
+      - - 14
+        - 20
+      - - 17
+        - 25
+  line-width: !!inc/file layers/components/broad-road-width-casing.yml
diff --git a/layers/highway-secondary-bridge-casing.yml b/layers/highway-secondary-bridge-casing.yml
new file mode 100644
index 0000000..e15d52e
--- /dev/null
+++ b/layers/highway-secondary-bridge-casing.yml
@@ -0,0 +1,42 @@
+id: highway-secondary-bridge-casing
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 7
+filter:
+  - any
+  - - all
+    - - '!='
+      - rnkWidth
+      - 0
+    - - '!='
+      - rnkWidth
+      - 4
+    - - in
+      - ftCode
+      - 2702
+      - 2703
+    - - '!='
+      - motorway
+      - 1
+    - - in
+      - rdCtg
+      - 0
+      - 1
+      - 2
+  - - all
+    - - '>='
+      - ftCode
+      - 52700
+    - - <
+      - ftCode
+      - 52800
+    - - '!='
+      - ftCode
+      - 52703
+layout:
+  line-join: round
+paint:
+  line-color: rgba(222, 222, 222, 1)
+  line-opacity: 1
+  line-width: !!inc/file layers/components/broad-road-width-casing.yml
diff --git a/layers/highway-secondary-bridge.yml b/layers/highway-secondary-bridge.yml
new file mode 100644
index 0000000..3e9f31a
--- /dev/null
+++ b/layers/highway-secondary-bridge.yml
@@ -0,0 +1,41 @@
+id: highway-secondary-bridge
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 7
+filter:
+  - any
+  - - all
+    - - '!='
+      - rnkWidth
+      - 0
+    - - '!='
+      - rnkWidth
+      - 4
+    - - in
+      - ftCode
+      - 2702
+      - 2703
+    - - '!='
+      - motorway
+      - 1
+    - - in
+      - rdCtg
+      - 0
+      - 1
+      - 2
+  - - all
+    - - '>='
+      - ftCode
+      - 52700
+    - - <
+      - ftCode
+      - 52800
+    - - '!='
+      - ftCode
+      - 52703
+layout:
+  line-join: round
+paint:
+  line-color: !!inc/file layers/components/road-color.yml
+  line-width: !!inc/file layers/components/broad-road-width.yml
diff --git a/layers/highway-secondary-tunnel-casing.yml b/layers/highway-secondary-tunnel-casing.yml
new file mode 100644
index 0000000..d14e47e
--- /dev/null
+++ b/layers/highway-secondary-tunnel-casing.yml
@@ -0,0 +1,44 @@
+id: highway-secondary-tunnel-casing
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 4
+filter:
+  - any
+  - - all
+    - - '=='
+      - ftCode
+      - 2704
+    - - '!='
+      - motorway
+      - 1
+    - - '!='
+      - rdCtg
+      - 3
+    - - any
+      - - in
+        - rdCtg
+        - 0
+        - 1
+        - 2
+      - - '=='
+        - rnkWidth
+        - 4
+  - - all
+    - - '>='
+      - ftCode
+      - 52700
+    - - <
+      - ftCode
+      - 52800
+    - - '!='
+      - ftCode
+      - 52703
+layout:
+  line-join: round
+paint:
+  line-color: !!inc/file layers/components/tunnel-casing-color.yml
+  line-dasharray:
+    - 0.5
+    - 0.25
+  line-width: !!inc/file layers/components/broad-road-width-casing.yml
diff --git a/layers/highway-secondary-tunnel.yml b/layers/highway-secondary-tunnel.yml
new file mode 100644
index 0000000..6b45248
--- /dev/null
+++ b/layers/highway-secondary-tunnel.yml
@@ -0,0 +1,41 @@
+id: highway-secondary-tunnel
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 4
+filter:
+  - any
+  - - all
+    - - '=='
+      - ftCode
+      - 2704
+    - - '!='
+      - motorway
+      - 1
+    - - '!='
+      - rdCtg
+      - 3
+    - - any
+      - - in
+        - rdCtg
+        - 0
+        - 1
+        - 2
+      - - '=='
+        - rnkWidth
+        - 4
+  - - all
+    - - '>='
+      - ftCode
+      - 52700
+    - - <
+      - ftCode
+      - 52800
+    - - '!='
+      - ftCode
+      - 52703
+layout:
+  line-join: round
+paint:
+  line-color: !!inc/file layers/components/tunnel-color.yml
+  line-width: !!inc/file layers/components/broad-road-width.yml
diff --git a/layers/highway-secondary.yml b/layers/highway-secondary.yml
new file mode 100644
index 0000000..166a14b
--- /dev/null
+++ b/layers/highway-secondary.yml
@@ -0,0 +1,44 @@
+id: highway-secondary
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 7
+filter:
+  - any
+  - - all
+    - - any
+      - - '=='
+        - ftCode
+        - 2701
+    - - '!='
+      - motorway
+      - 1
+    - - '!='
+      - rdCtg
+      - 3
+    - - any
+      - - in
+        - rdCtg
+        - 0
+        - 1
+        - 2
+      - - '=='
+        - rnkWidth
+        - 4
+  - - all
+    - - '>='
+      - ftCode
+      - 52700
+    - - <
+      - ftCode
+      - 52800
+    - - '!='
+      - ftCode
+      - 52703
+layout:
+  line-cap: butt
+  line-join: bevel
+  visibility: visible
+paint:
+  line-color: !!inc/file layers/components/road-color.yml
+  line-width: !!inc/file layers/components/broad-road-width.yml
diff --git a/layers/hillshading.yml b/layers/hillshading.yml
new file mode 100644
index 0000000..cc9acd9
--- /dev/null
+++ b/layers/hillshading.yml
@@ -0,0 +1,12 @@
+id: hillshading
+source: dem
+type: hillshade
+maxzoom: 12
+paint:
+  hillshade-exaggeration:
+    stops:
+      - - 4
+        - 0.15
+      - - 12
+        - 0
+  hillshade-shadow-color: "#000000"
diff --git a/layers/landcover-grass-park.yml b/layers/landcover-grass-park.yml
new file mode 100644
index 0000000..e012ecd
--- /dev/null
+++ b/layers/landcover-grass-park.yml
@@ -0,0 +1,13 @@
+id: landcover-grass-park
+type: fill
+source: geolonia-gsi-custom
+source-layer: park
+filter:
+  - '=='
+  - class
+  - public_park
+layout:
+  visibility: visible
+paint:
+  fill-color: '#d8e8c8'
+  fill-opacity: 0.8
diff --git a/layers/landcover-grass.yml b/layers/landcover-grass.yml
new file mode 100644
index 0000000..78ec111
--- /dev/null
+++ b/layers/landcover-grass.yml
@@ -0,0 +1,13 @@
+id: landcover-grass
+type: fill
+source: geolonia-gsi-custom
+source-layer: landcover
+filter:
+  - '=='
+  - class
+  - grass
+layout:
+  visibility: visible
+paint:
+  fill-color: '#daeca9'
+  fill-opacity: 1
diff --git a/layers/landcover-wood-blur.yml b/layers/landcover-wood-blur.yml
new file mode 100644
index 0000000..a84e312
--- /dev/null
+++ b/layers/landcover-wood-blur.yml
@@ -0,0 +1,26 @@
+id: landcover-wood-blur
+type: line
+source: geolonia-gsi-custom
+source-layer: landcover
+filter:
+  - '=='
+  - class
+  - wood
+layout:
+  visibility: visible
+paint:
+  line-color: '#bce398'
+  line-width: 5
+  line-translate:
+    stops:
+      - - 14
+        - [0, 0]
+      - - 17
+        - [0, 2]
+  line-opacity:
+    stops:
+      - - 14
+        - 0
+      - - 17
+        - 0.4
+  line-blur: 10
diff --git a/layers/landcover-wood.yml b/layers/landcover-wood.yml
new file mode 100644
index 0000000..9ca2d5e
--- /dev/null
+++ b/layers/landcover-wood.yml
@@ -0,0 +1,19 @@
+id: landcover-wood
+type: fill
+source: geolonia-gsi-custom
+source-layer: landcover
+filter:
+  - '=='
+  - class
+  - wood
+layout:
+  visibility: visible
+paint:
+  fill-color: '#bce398'
+  fill-antialias:
+    base: 1
+    stops:
+      - - 0
+        - false
+      - - 9
+        - true
diff --git a/layers/landuse-cemetery.yml b/layers/landuse-cemetery.yml
new file mode 100644
index 0000000..289da12
--- /dev/null
+++ b/layers/landuse-cemetery.yml
@@ -0,0 +1,10 @@
+id: landuse-cemetery
+type: fill
+source: geolonia-gsi-custom
+source-layer: landuse
+filter:
+  - '=='
+  - class
+  - cemetery
+paint:
+  fill-color: '#e0e4dd'
diff --git a/layers/landuse-commercial.yml b/layers/landuse-commercial.yml
new file mode 100644
index 0000000..c14b078
--- /dev/null
+++ b/layers/landuse-commercial.yml
@@ -0,0 +1,14 @@
+id: landuse-commercial
+type: fill
+source: geolonia-gsi-custom
+source-layer: landuse
+filter:
+  - all
+  - - '=='
+    - $type
+    - Polygon
+  - - '=='
+    - class
+    - commercial
+paint:
+  fill-color: hsla(0, 60%, 87%, 0.23)
diff --git a/layers/landuse-hospital.yml b/layers/landuse-hospital.yml
new file mode 100644
index 0000000..310a64f
--- /dev/null
+++ b/layers/landuse-hospital.yml
@@ -0,0 +1,10 @@
+id: landuse-hospital
+type: fill
+source: geolonia-gsi-custom
+source-layer: landuse
+filter:
+  - '=='
+  - class
+  - hospital
+paint:
+  fill-color: '#fde'
diff --git a/layers/landuse-industrial.yml b/layers/landuse-industrial.yml
new file mode 100644
index 0000000..ff4a258
--- /dev/null
+++ b/layers/landuse-industrial.yml
@@ -0,0 +1,14 @@
+id: landuse-industrial
+type: fill
+source: geolonia-gsi-custom
+source-layer: landuse
+filter:
+  - all
+  - - '=='
+    - $type
+    - Polygon
+  - - '=='
+    - class
+    - industrial
+paint:
+  fill-color: hsla(49, 100%, 88%, 0.34)
diff --git a/layers/landuse-railway.yml b/layers/landuse-railway.yml
new file mode 100644
index 0000000..d2e8d46
--- /dev/null
+++ b/layers/landuse-railway.yml
@@ -0,0 +1,10 @@
+id: landuse-railway
+type: fill
+source: geolonia-gsi-custom
+source-layer: landuse
+filter:
+  - '=='
+  - class
+  - railway
+paint:
+  fill-color: hsla(30, 19%, 90%, 0.4)
diff --git a/layers/landuse-school.yml b/layers/landuse-school.yml
new file mode 100644
index 0000000..a116716
--- /dev/null
+++ b/layers/landuse-school.yml
@@ -0,0 +1,10 @@
+id: landuse-school
+type: fill
+source: geolonia-gsi-custom
+source-layer: landuse
+filter:
+  - '=='
+  - class
+  - school
+paint:
+  fill-color: '#f0e8f8'
diff --git a/layers/nt-water-name-ocean.yml b/layers/nt-water-name-ocean.yml
new file mode 100644
index 0000000..b621c70
--- /dev/null
+++ b/layers/nt-water-name-ocean.yml
@@ -0,0 +1,24 @@
+id: nt-water-name-ocean
+type: symbol
+source: oceanus
+source-layer: nt-water-name
+minzoom: 8
+filter:
+  - '=='
+  - - get
+    - class
+  - ocean
+layout:
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 5
+  text-rotation-alignment: map
+  symbol-placement: point
+  symbol-spacing: 350
+  text-letter-spacing: 0.2
+paint:
+  text-color: '#74aee9'
+  text-halo-width: 1.5
+  text-halo-color: rgba(255,255,255,0.7)
diff --git a/layers/nt-water-name-river.yml b/layers/nt-water-name-river.yml
new file mode 100644
index 0000000..8300272
--- /dev/null
+++ b/layers/nt-water-name-river.yml
@@ -0,0 +1,24 @@
+id: nt-water-name-river
+type: symbol
+source: oceanus
+source-layer: nt-water-name
+minzoom: 13
+filter:
+  - '=='
+  - - get
+    - class
+  - river
+layout:
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 5
+  text-rotation-alignment: map
+  symbol-placement: point
+  symbol-spacing: 350
+  text-letter-spacing: 0.2
+paint:
+  text-color: '#74aee9'
+  text-halo-width: 1.5
+  text-halo-color: rgba(255,255,255,0.7)
diff --git a/layers/oc-boundary-land-level-0.yml b/layers/oc-boundary-land-level-0.yml
new file mode 100644
index 0000000..c916600
--- /dev/null
+++ b/layers/oc-boundary-land-level-0.yml
@@ -0,0 +1,15 @@
+id: oc-boundary-land-level-0
+type: line
+source: oceanus
+source-layer: oc-boundary
+filter:
+  - '=='
+  - - get
+    - admin_level
+  - 0
+layout:
+  line-join: round
+paint:
+  line-color: '#9e9cab'
+  line-width: 1
+  line-blur: 0.4
diff --git a/layers/oc-boundary-land-level-1-ja.yml b/layers/oc-boundary-land-level-1-ja.yml
new file mode 100644
index 0000000..3dd85de
--- /dev/null
+++ b/layers/oc-boundary-land-level-1-ja.yml
@@ -0,0 +1,34 @@
+id: oc-boundary-land-level-1-ja
+type: line
+source: oceanus
+source-layer: oc-boundary
+minzoom: 4
+maxzoom: 6
+filter:
+  - all
+  - - '=='
+    - - get
+      - admin_level
+    - 1
+  - - has
+    - jflag
+layout:
+  line-join: round
+paint:
+  line-color:
+    stops:
+      - - 4
+        - 'rgba(102,102,102,0.7)'
+      - - 7
+        - 'rgba(136,136,136,0.7)'
+  line-dasharray:
+    - 3
+    - 1
+    - 1
+    - 1
+  line-width:
+    stops:
+      - - 4
+        - 0.5
+      - - 7
+        - 1.8
diff --git a/layers/oc-boundary-land-level-1.yml b/layers/oc-boundary-land-level-1.yml
new file mode 100644
index 0000000..2608932
--- /dev/null
+++ b/layers/oc-boundary-land-level-1.yml
@@ -0,0 +1,26 @@
+id: oc-boundary-land-level-1
+type: line
+source: oceanus
+source-layer: oc-boundary
+minzoom: 4
+maxzoom: 8
+filter:
+  - all
+  - - '=='
+    - - get
+      - admin_level
+    - 1
+  - - '=='
+    - - has
+      - jflag
+    - false
+layout:
+  line-join: round
+paint:
+  line-color: '#9e9cab'
+  line-dasharray:
+    - 3
+    - 1
+    - 1
+    - 1
+  line-width: 1
diff --git a/layers/oc-forest.yml b/layers/oc-forest.yml
new file mode 100644
index 0000000..2e78247
--- /dev/null
+++ b/layers/oc-forest.yml
@@ -0,0 +1,15 @@
+id: oc-forest
+type: fill
+source: oceanus
+source-layer: oc-forest
+minzoom: 0
+maxzoom: 9
+layout:
+  visibility: visible
+paint:
+  fill-color:
+    stops:
+      - - 5
+        - '#a5d47b'
+      - - 8
+        - '#bce398'
diff --git a/layers/oc-glacier.yml b/layers/oc-glacier.yml
new file mode 100644
index 0000000..e201a75
--- /dev/null
+++ b/layers/oc-glacier.yml
@@ -0,0 +1,9 @@
+id: oc-glacier
+type: fill
+source: oceanus
+source-layer: oc-glacier
+maxzoom: 8
+layout:
+  visibility: visible
+paint:
+  fill-color: rgba(241, 248, 254, 1)
diff --git a/layers/oc-label-country.yml b/layers/oc-label-country.yml
new file mode 100644
index 0000000..9430696
--- /dev/null
+++ b/layers/oc-label-country.yml
@@ -0,0 +1,26 @@
+id: oc-label-country
+type: symbol
+source: oceanus
+source-layer: oc-label
+maxzoom: 7
+filter:
+  - '=='
+  - - get
+    - class
+  - country
+layout:
+  text-font:
+    - Noto Sans CJK JP Bold
+  text-size:
+    stops:
+      - - 0
+        - 9
+      - - 8
+        - 16
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  text-color: rgba(68, 68, 68, 1)
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/oc-label-pref-capital-ja.yml b/layers/oc-label-pref-capital-ja.yml
new file mode 100644
index 0000000..9e6e66b
--- /dev/null
+++ b/layers/oc-label-pref-capital-ja.yml
@@ -0,0 +1,49 @@
+id: oc-label-pref-capital-ja
+type: symbol
+source: oceanus
+source-layer: oc-label
+minzoom: 7
+maxzoom: 8
+filter:
+  - all
+  - - has
+    - jflag
+  - - has
+    - pref-capital
+  - - '!in' # TODO: タイル側で対応する https://github.com/geoloniamaps/gsi/pull/112
+    - name
+    - '福岡市'
+    - '広島市'
+    - '大阪市'
+    - '神戸市'
+    - '名古屋市'
+    - '横浜市'
+    - '東京'
+    - '新潟市'
+    - '仙台市'
+    - '盛岡市'
+    - '札幌市'
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  text-variable-anchor:
+    - top
+    - bottom
+    - left
+    - right
+  icon-image: circle-stroked
+  icon-size: 0.8
+  icon-allow-overlap: true
+  text-field: !!inc/file layers/components/remove-place-suffix.yml
+  text-offset:
+    - 0.6
+    - 0.6
+  text-size: 12
+  text-max-width: 9
+paint:
+  text-halo-blur: 0.5
+  text-color: 'rgba(71, 71, 71, 1)'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
diff --git a/layers/oc-label-pref-capital-popular-ja.yml b/layers/oc-label-pref-capital-popular-ja.yml
new file mode 100644
index 0000000..1f96dcd
--- /dev/null
+++ b/layers/oc-label-pref-capital-popular-ja.yml
@@ -0,0 +1,63 @@
+id: oc-label-pref-capital-popular-ja
+type: symbol
+source: oceanus
+source-layer: oc-label
+minzoom: 5
+maxzoom: 8
+filter:
+  - all
+  - - has
+    - jflag
+  - - has
+    - pref-capital
+  - - in # TODO: タイル側で対応する https://github.com/geoloniamaps/gsi/pull/112
+    - name
+    - '福岡市'
+    - '鹿児島市'
+    - '長崎市'
+    - '広島市'
+    - '岡山市'
+    - '大阪市'
+    - '神戸市'
+    - '京都市'
+    - '名古屋市'
+    - '金沢市'
+    - '静岡市'
+    - '横浜市'
+    - '東京'
+    - '宇都宮市'
+    - '新潟市'
+    - '福島市'
+    - '仙台市'
+    - '盛岡市'
+    - '青森市'
+    - '札幌市'
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans CJK JP Bold
+  text-anchor: top
+  text-variable-anchor:
+    - top
+    - bottom
+    - left
+    - right
+  icon-image: circle-stroked
+  icon-size: 0.8
+  icon-allow-overlap: true
+  text-field: !!inc/file layers/components/remove-place-suffix.yml
+  text-offset:
+    - 0.6
+    - 0.6
+  text-size:
+    stops:
+      - - 5
+        - 13
+      - - 8
+        - 17
+  text-max-width: 9
+paint:
+  text-halo-blur: 0.5
+  text-color: 'rgba(30, 30, 30, 1)'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
diff --git a/layers/oc-label-pref-ja.yml b/layers/oc-label-pref-ja.yml
new file mode 100644
index 0000000..d928552
--- /dev/null
+++ b/layers/oc-label-pref-ja.yml
@@ -0,0 +1,30 @@
+id: oc-label-pref-ja
+type: symbol
+source: oceanus
+source-layer: oc-label
+minzoom: 6
+maxzoom: 8
+filter:
+  - all
+  - - '=='
+    - - get
+      - class
+    - pref
+  - - has
+    - jflag
+layout:
+  text-font:
+    - Noto Sans Regular
+  text-size:
+    stops:
+      - - 6
+        - 13
+      - - 8
+        - 17
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  text-color: rgba(126, 126, 126, 1)
+  text-halo-width: 1
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/oc-label-pref.yml b/layers/oc-label-pref.yml
new file mode 100644
index 0000000..e77ec97
--- /dev/null
+++ b/layers/oc-label-pref.yml
@@ -0,0 +1,31 @@
+id: oc-label-pref
+type: symbol
+source: oceanus
+source-layer: oc-label
+minzoom: 5
+filter:
+  - all
+  - - '=='
+    - - get
+      - class
+    - pref
+  - - '=='
+    - - has
+      - jflag
+    - false
+layout:
+  text-font:
+    - Noto Sans Regular
+  text-size:
+    stops:
+      - - 5
+        - 12
+      - - 8
+        - 14
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  text-color: rgba(102, 102, 102, 1)
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/oc-label-town-ja.yml b/layers/oc-label-town-ja.yml
new file mode 100644
index 0000000..d7f6727
--- /dev/null
+++ b/layers/oc-label-town-ja.yml
@@ -0,0 +1,36 @@
+id: oc-label-town-ja
+type: symbol
+source: oceanus
+source-layer: oc-label
+minzoom: 7
+maxzoom: 8
+filter:
+  - all
+  - - '=='
+    - - get
+      - class
+    - town
+  - - has
+    - jflag
+  - - '=='
+    - - has
+      - pref-capital
+    - false
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  icon-image: circle-stroked
+  icon-size: 0.8
+  text-field: !!inc/file layers/components/remove-place-suffix.yml
+  text-offset:
+    - 0
+    - 0.6
+  text-size: 12
+  text-max-width: 9
+paint:
+  text-halo-blur: 0.5
+  text-color: '#333'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
diff --git a/layers/oc-label-town.yml b/layers/oc-label-town.yml
new file mode 100644
index 0000000..1006199
--- /dev/null
+++ b/layers/oc-label-town.yml
@@ -0,0 +1,32 @@
+id: oc-label-town
+type: symbol
+source: oceanus
+source-layer: oc-label
+minzoom: 6
+filter:
+  - all
+  - - '=='
+    - - get
+      - class
+    - town
+  - - '=='
+    - - has
+      - jflag
+    - false
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  icon-image: circle
+  text-field: '{name}'
+  text-offset:
+    - 0
+    - 0.6
+  text-size: 12
+  text-max-width: 9
+paint:
+  text-halo-blur: 0.5
+  text-color: '#666'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
diff --git a/layers/oc-lake-blur.yml b/layers/oc-lake-blur.yml
new file mode 100644
index 0000000..59383d9
--- /dev/null
+++ b/layers/oc-lake-blur.yml
@@ -0,0 +1,19 @@
+id: oc-lake-blur
+type: line
+source: oceanus
+source-layer: oc-water
+minzoom: 17
+filter:
+  - all
+  - - '=='
+    - - get
+      - class
+    - lakes
+  - - '=='
+    - - has
+      - jflag
+    - false
+layout:
+  line-join: "round"
+  visibility: visible
+paint: !!inc/file layers/components/water-blur-paint.yml
diff --git a/layers/oc-lake-ja.yml b/layers/oc-lake-ja.yml
new file mode 100644
index 0000000..f685ecb
--- /dev/null
+++ b/layers/oc-lake-ja.yml
@@ -0,0 +1,20 @@
+
+
+id: oc-lake-ja
+type: fill
+source: oceanus
+source-layer: oc-water
+minzoom: 4
+maxzoom: 8
+filter:
+  - all
+  - - '=='
+    - - get
+      - class
+    - lakes
+  - - has
+    - jflag
+layout:
+  visibility: visible
+paint:
+  fill-color: '#65cbf9'
diff --git a/layers/oc-lake.yml b/layers/oc-lake.yml
new file mode 100644
index 0000000..6d998f7
--- /dev/null
+++ b/layers/oc-lake.yml
@@ -0,0 +1,19 @@
+id: oc-lake
+type: fill
+source: oceanus
+source-layer: oc-water
+minzoom: 4
+filter:
+  - all
+  - - '=='
+    - - get
+      - class
+    - lakes
+  - - '=='
+    - - has
+      - jflag
+    - false
+layout:
+  visibility: visible
+paint:
+  fill-color: '#65cbf9'
diff --git a/layers/oc-landuse-commercial-ja.yml b/layers/oc-landuse-commercial-ja.yml
new file mode 100644
index 0000000..e61f991
--- /dev/null
+++ b/layers/oc-landuse-commercial-ja.yml
@@ -0,0 +1,19 @@
+id: oc-landuse-commercial-ja
+type: fill
+source: oceanus
+source-layer: oc-landuse
+minzoom: 5
+maxzoom: 8
+filter:
+  - all
+  - - '=='
+    - - geometry-type
+    - Polygon
+  - - '=='
+    - - get
+      - class
+    - commercial
+  - - has
+    - jflag
+paint:
+  fill-color: hsla(0, 60%, 87%, 0.23)
diff --git a/layers/oc-landuse-commercial.yml b/layers/oc-landuse-commercial.yml
new file mode 100644
index 0000000..abab2ae
--- /dev/null
+++ b/layers/oc-landuse-commercial.yml
@@ -0,0 +1,20 @@
+id: oc-landuse-commercial
+type: fill
+source: oceanus
+source-layer: oc-landuse
+minzoom: 5
+filter:
+  - all
+  - - '=='
+    - - geometry-type
+    - Polygon
+  - - '=='
+    - - get
+      - class
+    - commercial
+  - - '=='
+    - - has
+      - jflag
+    - false
+paint:
+  fill-color: hsla(0, 60%, 87%, 0.23)
diff --git a/layers/oc-motorway.yml b/layers/oc-motorway.yml
new file mode 100644
index 0000000..5036b1e
--- /dev/null
+++ b/layers/oc-motorway.yml
@@ -0,0 +1,21 @@
+id: oc-motorway
+type: line
+source: oceanus
+source-layer: oc-road
+minzoom: 6
+maxzoom: 6
+filter:
+  - all
+  - - '=='
+    - - get
+      - class
+    - highway
+  - - '=='
+    - - has
+      - jflag
+    - true
+layout:
+  line-cap: round
+paint:
+  line-color: '#00A54E'
+  line-width: 2
diff --git a/layers/oc-ocean.yml b/layers/oc-ocean.yml
new file mode 100644
index 0000000..b6e9164
--- /dev/null
+++ b/layers/oc-ocean.yml
@@ -0,0 +1,47 @@
+id: oc-ocean
+type: fill
+source: oceanus
+source-layer: oc-water
+maxzoom: 10
+filter:
+  - all
+  - - '=='
+    - - get
+      - class
+    - ocean
+layout:
+  visibility: visible
+
+paint:
+  fill-opacity:
+    stops:
+    - - 9
+      - 1
+    - - 10
+      - 0
+  fill-color:
+    - match
+    - ['get', 'depth']
+    - 200
+    - "#5bc2f8"
+    - 1000
+    - "#52baf7"
+    - 2000
+    - "#4ab2f7"
+    - 3000
+    - "#40a8f6"
+    - 4000
+    - "#36a0f5"
+    - 5000
+    - "#319bf6"
+    - 6000
+    - "#2a94f5"
+    - 7000
+    - "#238df4"
+    - 8000
+    - "#1c88f4"
+    - 9000
+    - "#147ff3"
+    - 10000
+    - "#0e7af2"
+    - "#0673f2"
diff --git a/layers/oc-water-name-ocean.yml b/layers/oc-water-name-ocean.yml
new file mode 100644
index 0000000..528d85c
--- /dev/null
+++ b/layers/oc-water-name-ocean.yml
@@ -0,0 +1,27 @@
+id: oc-water-name-ocean
+type: symbol
+source: oceanus
+source-layer: oc-water_name
+filter:
+  - all
+  - - '=='
+    - - geometry-type
+    - Point
+  - - '=='
+    - - get
+      - class
+    - ocean
+layout:
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 5
+  text-rotation-alignment: map
+  symbol-placement: point
+  symbol-spacing: 350
+  text-letter-spacing: 0.2
+paint:
+  text-color: '#74aee9'
+  text-halo-width: 1.5
+  text-halo-color: rgba(255,255,255,0.7)
diff --git a/layers/oc-water-name-other.yml b/layers/oc-water-name-other.yml
new file mode 100644
index 0000000..102295f
--- /dev/null
+++ b/layers/oc-water-name-other.yml
@@ -0,0 +1,34 @@
+id: oc-water-name-other
+type: symbol
+source: oceanus
+source-layer: oc-water
+minzoom: 6
+filter:
+  - all
+  - - '=='
+    - - geometry-type
+    - Polygon
+  - - has
+    - name
+layout:
+  text-font:
+    - Noto Sans Regular
+  text-size:
+    - interpolate
+    - - linear
+    - - zoom
+    - 0
+    - 10
+    - 6
+    - 14
+  text-field: '{name}'
+  text-max-width: 5
+  text-rotation-alignment: map
+  symbol-placement: point
+  symbol-spacing: 350
+  text-letter-spacing: 0.2
+  visibility: visible
+paint:
+  text-color: '#74aee9'
+  text-halo-width: 1.5
+  text-halo-color: rgba(255,255,255,0.7)
diff --git a/layers/oc-waterway-name-ja.yml b/layers/oc-waterway-name-ja.yml
new file mode 100644
index 0000000..2496e61
--- /dev/null
+++ b/layers/oc-waterway-name-ja.yml
@@ -0,0 +1,29 @@
+id: oc-waterway-name-ja
+type: symbol
+source: oceanus
+source-layer: oc-waterway
+minzoom: 6
+maxzoom: 8
+filter:
+  - all
+  - - '=='
+    - $type
+    - LineString
+  - - has
+    - name
+  - - has
+    - jflag
+layout:
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 5
+  text-rotation-alignment: map
+  symbol-placement: line
+  symbol-spacing: 350
+  text-letter-spacing: 0.2
+paint:
+  text-color: '#74aee9'
+  text-halo-width: 1.5
+  text-halo-color: rgba(255,255,255,0.7)
diff --git a/layers/oc-waterway-name.yml b/layers/oc-waterway-name.yml
new file mode 100644
index 0000000..1990a22
--- /dev/null
+++ b/layers/oc-waterway-name.yml
@@ -0,0 +1,27 @@
+id: oc-waterway-name
+type: symbol
+source: oceanus
+source-layer: oc-waterway
+minzoom: 6
+filter:
+  - all
+  - - has
+    - name
+  - - '=='
+    - - has
+      - jflag
+    - false
+layout:
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 5
+  text-rotation-alignment: map
+  symbol-placement: line
+  symbol-spacing: 350
+  text-letter-spacing: 0.2
+paint:
+  text-color: '#74aee9'
+  text-halo-width: 1.5
+  text-halo-color: rgba(255,255,255,0.7)
diff --git a/layers/oc-waterway-river-ja.yml b/layers/oc-waterway-river-ja.yml
new file mode 100644
index 0000000..82fae31
--- /dev/null
+++ b/layers/oc-waterway-river-ja.yml
@@ -0,0 +1,31 @@
+id: oc-waterway-river-ja
+type: line
+source: oceanus
+source-layer: oc-waterway
+minzoom: 4
+maxzoom: 8
+filter:
+  - all
+  - - '=='
+    - - get
+      - class
+    - river
+  - - '!='
+    - - get
+      - brunnel
+    - tunnel
+  - - has
+    - jflag
+layout:
+  line-cap: round
+paint:
+  line-color: '#a0c8f0'
+  line-width:
+    - interpolate
+    - - exponential
+      - 1.2
+    - - zoom
+    - 10
+    - 0.8
+    - 20
+    - 6
diff --git a/layers/oc-waterway-river.yml b/layers/oc-waterway-river.yml
new file mode 100644
index 0000000..e0dbe0f
--- /dev/null
+++ b/layers/oc-waterway-river.yml
@@ -0,0 +1,32 @@
+id: oc-waterway-river
+type: line
+source: oceanus
+source-layer: oc-waterway
+minzoom: 4
+filter:
+  - all
+  - - '=='
+    - - get
+      - class
+    - river
+  - - '!='
+    - - get
+      - brunnel
+    - tunnel
+  - - '=='
+    - - has
+      - jflag
+    - false
+layout:
+  line-cap: round
+paint:
+  line-color: '#a0c8f0'
+  line-width:
+    - interpolate
+    - - exponential
+      - 1.2
+    - - zoom
+    - 10
+    - 0.8
+    - 20
+    - 6
diff --git a/layers/park.yml b/layers/park.yml
new file mode 100644
index 0000000..2517211
--- /dev/null
+++ b/layers/park.yml
@@ -0,0 +1,22 @@
+id: park
+type: fill
+source: geolonia-gsi-custom
+source-layer: park
+filter:
+  - all
+  - - '=='
+    - $type
+    - Polygon
+  - - '!='
+    - class
+    - national_park
+layout:
+  visibility: visible
+paint:
+  fill-color: rgba(102, 170, 68, 1)
+  fill-opacity:
+    stops:
+      - - 7
+        - 0
+      - - 9
+        - 0.2
diff --git a/layers/place-city-capital.yml b/layers/place-city-capital.yml
new file mode 100644
index 0000000..6b50ca4
--- /dev/null
+++ b/layers/place-city-capital.yml
@@ -0,0 +1,33 @@
+id: place-city-capital
+type: symbol
+source: geolonia-gsi-custom
+source-layer: place
+maxzoom: 11
+filter:
+  - all
+  - - '=='
+    - capital
+    - 2
+  - - '=='
+    - class
+    - city
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-font:
+    - Noto Sans CJK JP Bold
+  text-size: 18
+  text-field: '{name}'
+  text-max-width: 8
+  icon-image: star
+  text-offset:
+    - 0.4
+    - -0.1
+  icon-size: 1
+  text-anchor: left
+  visibility: visible
+paint:
+  text-color: '#333'
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/place-city-rank10.yml b/layers/place-city-rank10.yml
new file mode 100644
index 0000000..69746a6
--- /dev/null
+++ b/layers/place-city-rank10.yml
@@ -0,0 +1,44 @@
+id: place-city-rank10
+type: symbol
+source: geolonia-gsi-custom
+source-layer: place
+minzoom: 8
+maxzoom: 13
+filter:
+  - all
+  - - '!='
+    - capital
+    - 2
+  - - '=='
+    - class
+    - city
+  - - '=='
+    - rank
+    - 10
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  icon-image: circle
+  icon-size: 0.3
+  text-anchor: top
+  text-offset:
+    - 0
+    - 0.1
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  icon-color: '#000000'
+  icon-opacity:
+    stops:
+      - - 11.9
+        - 1
+      - - 12
+        - 0
+  text-color: rgba(102, 102, 102, 1)
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/place-city-rank2.yml b/layers/place-city-rank2.yml
new file mode 100644
index 0000000..38b7f5b
--- /dev/null
+++ b/layers/place-city-rank2.yml
@@ -0,0 +1,44 @@
+id: place-city-rank2
+type: symbol
+source: geolonia-gsi-custom
+source-layer: place
+minzoom: 8
+maxzoom: 13
+filter:
+  - all
+  - - '!='
+    - capital
+    - 2
+  - - '=='
+    - class
+    - city
+  - - '=='
+    - rank
+    - 2
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  icon-image: circle-stroked
+  icon-size: 0.8
+  text-anchor: top
+  text-offset:
+    - 0
+    - 0.2
+  text-font:
+    - Noto Sans CJK JP Bold
+  text-size: 17
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  icon-color: '#000000'
+  icon-opacity:
+    stops:
+      - - 11.9
+        - 1
+      - - 12
+        - 0
+  text-color: rgba(68, 68, 68, 1)
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/place-city-rank3.yml b/layers/place-city-rank3.yml
new file mode 100644
index 0000000..82a58fe
--- /dev/null
+++ b/layers/place-city-rank3.yml
@@ -0,0 +1,44 @@
+id: place-city-rank3
+type: symbol
+source: geolonia-gsi-custom
+source-layer: place
+minzoom: 8
+maxzoom: 13
+filter:
+  - all
+  - - '!='
+    - capital
+    - 2
+  - - '=='
+    - class
+    - city
+  - - '=='
+    - rank
+    - 3
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  icon-image: circle
+  icon-size: 0.4
+  text-anchor: top
+  text-offset:
+    - 0
+    - 0.1
+  text-font:
+    - Noto Sans Regular
+  text-size: 16
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  icon-color: '#000000'
+  icon-opacity:
+    stops:
+      - - 11.9
+        - 1
+      - - 12
+        - 0
+  text-color: rgba(102, 102, 102, 1)
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/place-city-rank4.yml b/layers/place-city-rank4.yml
new file mode 100644
index 0000000..fb1e377
--- /dev/null
+++ b/layers/place-city-rank4.yml
@@ -0,0 +1,44 @@
+id: place-city-rank4
+type: symbol
+source: geolonia-gsi-custom
+source-layer: place
+minzoom: 9
+maxzoom: 13
+filter:
+  - all
+  - - '!='
+    - capital
+    - 2
+  - - '=='
+    - class
+    - city
+  - - '=='
+    - rank
+    - 4
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  icon-image: circle
+  icon-size: 0.3
+  text-anchor: top
+  text-offset:
+    - 0
+    - 0.1
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  icon-color: '#000000'
+  icon-opacity:
+    stops:
+      - - 11.9
+        - 1
+      - - 12
+        - 0
+  text-color: rgba(102, 102, 102, 1)
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/place-city-rank5.yml b/layers/place-city-rank5.yml
new file mode 100644
index 0000000..f48fbd3
--- /dev/null
+++ b/layers/place-city-rank5.yml
@@ -0,0 +1,44 @@
+id: place-city-rank5
+type: symbol
+source: geolonia-gsi-custom
+source-layer: place
+minzoom: 10
+maxzoom: 13
+filter:
+  - all
+  - - '!='
+    - capital
+    - 2
+  - - '=='
+    - class
+    - city
+  - - '=='
+    - rank
+    - 5
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  icon-image: circle
+  icon-size: 0.3
+  text-anchor: top
+  text-offset:
+    - 0
+    - 0.1
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  icon-color: '#000000'
+  icon-opacity:
+    stops:
+      - - 11.9
+        - 1
+      - - 12
+        - 0
+  text-color: rgba(102, 102, 102, 1)
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/place-city-rank6.yml b/layers/place-city-rank6.yml
new file mode 100644
index 0000000..3cddee4
--- /dev/null
+++ b/layers/place-city-rank6.yml
@@ -0,0 +1,44 @@
+id: place-city-rank6
+type: symbol
+source: geolonia-gsi-custom
+source-layer: place
+minzoom: 11
+maxzoom: 13
+filter:
+  - all
+  - - '!='
+    - capital
+    - 2
+  - - '=='
+    - class
+    - city
+  - - '=='
+    - rank
+    - 6
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  icon-image: circle
+  icon-size: 0.3
+  text-anchor: top
+  text-offset:
+    - 0
+    - 0.1
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  icon-color: '#000000'
+  icon-opacity:
+    stops:
+      - - 11.9
+        - 1
+      - - 12
+        - 0
+  text-color: rgba(102, 102, 102, 1)
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/place-city-rank7.yml b/layers/place-city-rank7.yml
new file mode 100644
index 0000000..8e1adc2
--- /dev/null
+++ b/layers/place-city-rank7.yml
@@ -0,0 +1,44 @@
+id: place-city-rank7
+type: symbol
+source: geolonia-gsi-custom
+source-layer: place
+minzoom: 8
+maxzoom: 13
+filter:
+  - all
+  - - '!='
+    - capital
+    - 2
+  - - '=='
+    - class
+    - city
+  - - '=='
+    - rank
+    - 7
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  icon-image: circle
+  icon-size: 0.3
+  text-anchor: top
+  text-offset:
+    - 0
+    - 0.1
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  icon-color: '#000000'
+  icon-opacity:
+    stops:
+      - - 11.9
+        - 1
+      - - 12
+        - 0
+  text-color: rgba(102, 102, 102, 1)
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/place-city-rank8.yml b/layers/place-city-rank8.yml
new file mode 100644
index 0000000..3a0dcd9
--- /dev/null
+++ b/layers/place-city-rank8.yml
@@ -0,0 +1,44 @@
+id: place-city-rank8
+type: symbol
+source: geolonia-gsi-custom
+source-layer: place
+minzoom: 8
+maxzoom: 13
+filter:
+  - all
+  - - '!='
+    - capital
+    - 2
+  - - '=='
+    - class
+    - city
+  - - '=='
+    - rank
+    - 8
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  icon-image: circle
+  icon-size: 0.3
+  text-anchor: top
+  text-offset:
+    - 0
+    - 0.1
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  icon-color: '#000000'
+  icon-opacity:
+    stops:
+      - - 11.9
+        - 1
+      - - 12
+        - 0
+  text-color: rgba(102, 102, 102, 1)
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/place-city-rank9.yml b/layers/place-city-rank9.yml
new file mode 100644
index 0000000..f57a3e8
--- /dev/null
+++ b/layers/place-city-rank9.yml
@@ -0,0 +1,44 @@
+id: place-city-rank9
+type: symbol
+source: geolonia-gsi-custom
+source-layer: place
+minzoom: 8
+maxzoom: 13
+filter:
+  - all
+  - - '!='
+    - capital
+    - 2
+  - - '=='
+    - class
+    - city
+  - - '=='
+    - rank
+    - 9
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  icon-image: circle
+  icon-size: 0.3
+  text-anchor: top
+  text-offset:
+    - 0
+    - 0.1
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  icon-color: '#000000'
+  icon-opacity:
+    stops:
+      - - 11.9
+        - 1
+      - - 12
+        - 0
+  text-color: rgba(102, 102, 102, 1)
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/place-island-name.yml b/layers/place-island-name.yml
new file mode 100644
index 0000000..fb88b17
--- /dev/null
+++ b/layers/place-island-name.yml
@@ -0,0 +1,33 @@
+id: place-island-name
+type: symbol
+source: geolonia-gsi-custom
+source-layer: place
+filter:
+  - all
+  - - '=='
+    - - get
+      - class
+    - island
+  - - '!='
+    - - get
+      - disputed
+    - japan_northern_territories
+  - - any
+    - - '!='
+      - - get
+        - subclass
+      - islet
+    - - '>='
+      - - zoom
+      - 16
+layout:
+  text-font:
+    - Noto Sans Regular
+  text-size: 11
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  text-color: rgba(102, 102, 102, 1)
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/place-town.yml b/layers/place-town.yml
new file mode 100644
index 0000000..e95b9c8
--- /dev/null
+++ b/layers/place-town.yml
@@ -0,0 +1,38 @@
+id: place-town
+type: symbol
+source: geolonia-gsi-custom
+source-layer: place
+minzoom: 8.5
+maxzoom: 13
+filter:
+  - all
+  - - '=='
+    - class
+    - town
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  icon-image: circle
+  icon-size: 0.3
+  text-anchor: top
+  text-offset:
+    - 0
+    - 0.1
+  text-font:
+    - Noto Sans Regular
+  text-size: 12
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  icon-color: '#000000'
+  icon-opacity:
+    stops:
+      - - 11.9
+        - 1
+      - - 12
+        - 0
+  text-color: rgba(102, 102, 102, 1)
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/place-village.yml b/layers/place-village.yml
new file mode 100644
index 0000000..9a3ce35
--- /dev/null
+++ b/layers/place-village.yml
@@ -0,0 +1,44 @@
+id: place-village
+type: symbol
+source: geolonia-gsi-custom
+source-layer: place
+minzoom: 9
+maxzoom: 13
+filter:
+  - all
+  - - '=='
+    - class
+    - village
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  icon-image: circle
+  icon-size: 0.3
+  text-anchor: top
+  text-offset:
+    - 0
+    - 0.1
+  text-font:
+    - Noto Sans Regular
+  text-size:
+    base: 1.2
+    stops:
+      - - 10
+        - 12
+      - - 15
+        - 22
+  text-field: '{name}'
+  text-max-width: 8
+  visibility: visible
+paint:
+  icon-color: '#000000'
+  icon-opacity:
+    stops:
+      - - 11.9
+        - 1
+      - - 12
+        - 0
+  text-color: '#333'
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/poi-airport-primary.yml b/layers/poi-airport-primary.yml
new file mode 100644
index 0000000..b7f7573
--- /dev/null
+++ b/layers/poi-airport-primary.yml
@@ -0,0 +1,32 @@
+id: poi-airport-primary
+type: symbol
+source: geolonia-gsi-custom
+source-layer: aerodrome_label
+minzoom: 10
+filter:
+  - all
+  - - has
+    - iata
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  icon-image: airport
+  text-field: '{name}'
+  text-offset:
+    - 0
+    - 0.6
+  text-size: 12
+  text-max-width: 9
+  visibility: visible
+  icon-size: 1
+  text-optional: true
+paint:
+  text-halo-blur: 0.5
+  text-color: '#666'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
diff --git a/layers/poi-mountain.yml b/layers/poi-mountain.yml
new file mode 100644
index 0000000..b1c1976
--- /dev/null
+++ b/layers/poi-mountain.yml
@@ -0,0 +1,51 @@
+id: label-gsi
+type: symbol
+source: gsi-japan
+source-layer: label
+minzoom: 10
+maxzoom: 15
+filter:
+  - all
+  - - in
+    - ftCode
+    - 100
+    - 50100
+  - - in
+    - annoCtg
+    - 311
+    - 314
+    - 315
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  icon-anchor: bottom
+  icon-image:
+    - coalesce
+    - - image
+      - 'mountain'
+    - - image
+      - circle-stroked
+  icon-padding:
+    - interpolate
+    - - linear
+    - - zoom
+    - 8
+    - 50
+    - 11
+    - 100
+    - 20
+    - 2
+  text-field: '{knj}'
+  text-offset:
+    - 0
+    - 0.3
+  text-size: 12
+  text-max-width: 9
+  visibility: visible
+paint:
+  text-halo-blur: 0.5
+  text-color: '#666'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
diff --git a/layers/poi-park-primary.yml b/layers/poi-park-primary.yml
new file mode 100644
index 0000000..8a60b3c
--- /dev/null
+++ b/layers/poi-park-primary.yml
@@ -0,0 +1,52 @@
+id: poi-park-primary
+type: symbol
+source: geolonia-gsi-custom
+source-layer: poi
+minzoom: 13
+filter:
+  - all
+  - - '=='
+    - $type
+    - Point
+  - - has
+    - name
+  - - has
+    - wikidata
+  - - 'in'
+    - class
+    - park
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  icon-anchor: bottom
+  icon-image:
+    - coalesce
+    - - image
+      - - get
+        - class
+    - - image
+      - circle-stroked
+  icon-padding:
+    - interpolate
+    - - linear
+    - - zoom
+    - 11
+    - 15
+    - 15
+    - 2
+  text-field: '{name}'
+  text-offset:
+    - 0
+    - 0.3
+  text-size: 12
+  text-max-width: 9
+paint:
+  text-halo-blur: 0.5
+  text-color: '#666'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
diff --git a/layers/poi-park.yml b/layers/poi-park.yml
new file mode 100644
index 0000000..780acf5
--- /dev/null
+++ b/layers/poi-park.yml
@@ -0,0 +1,44 @@
+id: poi-park
+type: symbol
+source: geolonia-gsi-custom
+source-layer: poi
+minzoom: 16
+filter:
+  - all
+  - - '=='
+    - $type
+    - Point
+  - - has
+    - name
+  - - '!has'
+    - wikidata
+  - - 'in'
+    - class
+    - park
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  icon-anchor: bottom
+  icon-image:
+    - coalesce
+    - - image
+      - - get
+        - class
+    - - image
+      - circle-stroked
+  text-field: '{name}'
+  text-offset:
+    - 0
+    - 0.3
+  text-size: 12
+  text-max-width: 9
+paint:
+  text-halo-blur: 0.5
+  text-color: '#666'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
\ No newline at end of file
diff --git a/layers/poi-railway.yml b/layers/poi-railway.yml
new file mode 100644
index 0000000..62e40a2
--- /dev/null
+++ b/layers/poi-railway.yml
@@ -0,0 +1,60 @@
+id: poi-railway
+type: symbol
+source: geolonia-gsi-custom
+source-layer: poi
+minzoom: 11
+filter:
+  - all
+  - - '=='
+    - $type
+    - Point
+  - - has
+    - name
+  - - '=='
+    - class
+    - railway
+  - - '=='
+    - subclass
+    - station
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans CJK JP Bold
+  text-anchor: top
+  icon-anchor: bottom
+  icon-image:
+    - coalesce
+    - - image
+      - railway
+    - - image
+      - circle-stroked
+  icon-padding:
+    - interpolate
+    - - linear
+    - - zoom
+    - 11
+    - 50
+    - 13
+    - 30
+    - 15
+    - 2
+  text-field: '{name}'
+  text-offset:
+    - 0
+    - 0.3
+  text-size: 12
+  text-max-width: 9
+  icon-optional: false
+  icon-ignore-placement: false
+  icon-allow-overlap: false
+  text-ignore-placement: false
+  text-allow-overlap: false
+  text-optional: true
+paint:
+  text-halo-blur: 0.5
+  text-color: '#415CBD'
+  text-halo-width: 2
+  text-halo-color: '#ffffff'
diff --git a/layers/poi-worship-primary.yml b/layers/poi-worship-primary.yml
new file mode 100644
index 0000000..d68f2c5
--- /dev/null
+++ b/layers/poi-worship-primary.yml
@@ -0,0 +1,52 @@
+id: poi-worship-primary
+type: symbol
+source: geolonia-gsi-custom
+source-layer: poi
+minzoom: 14
+filter:
+  - all
+  - - '=='
+    - $type
+    - Point
+  - - has
+    - name
+  - - has
+    - wikidata
+  - - 'in'
+    - class
+    - place_of_worship
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  icon-anchor: bottom
+  icon-image:
+    - coalesce
+    - - image
+      - - get
+        - class
+    - - image
+      - circle-stroked
+  text-field: '{name}'
+  icon-padding:
+    - interpolate
+    - - linear
+    - - zoom
+    - 11
+    - 30
+    - 15
+    - 2
+  text-offset:
+    - 0
+    - 0.3
+  text-size: 12
+  text-max-width: 9
+paint:
+  text-halo-blur: 0.5
+  text-color: '#666'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
\ No newline at end of file
diff --git a/layers/poi-worship.yml b/layers/poi-worship.yml
new file mode 100644
index 0000000..94f57bd
--- /dev/null
+++ b/layers/poi-worship.yml
@@ -0,0 +1,44 @@
+id: poi-worship
+type: symbol
+source: geolonia-gsi-custom
+source-layer: poi
+minzoom: 16
+filter:
+  - all
+  - - '=='
+    - $type
+    - Point
+  - - has
+    - name
+  - - '!has'
+    - wikidata
+  - - 'in'
+    - class
+    - place_of_worship
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  icon-anchor: bottom
+  icon-image:
+    - coalesce
+    - - image
+      - - get
+        - class
+    - - image
+      - circle-stroked
+  text-field: '{name}'
+  text-offset:
+    - 0
+    - 0.3
+  text-size: 12
+  text-max-width: 9
+paint:
+  text-halo-blur: 0.5
+  text-color: '#666'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
\ No newline at end of file
diff --git a/layers/poi-z13.yml b/layers/poi-z13.yml
new file mode 100644
index 0000000..faee8e0
--- /dev/null
+++ b/layers/poi-z13.yml
@@ -0,0 +1,50 @@
+id: poi-z13
+type: symbol
+source: geolonia-gsi-custom
+source-layer: poi
+minzoom: 13
+filter:
+  - all
+  - - '=='
+    - $type
+    - Point
+  - - has
+    - name
+  - - 'in'
+    - class
+    - stadium
+    - landmark
+    - monument
+    - museum
+    - town_hall
+    - golf
+  - - '!in'
+    - subclass
+    - community_centre # class town_hall内でも
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  icon-anchor: bottom
+  icon-image:
+    - coalesce
+    - - image
+      - - get
+        - class
+    - - image
+      - circle-stroked
+  text-field: '{name}'
+  text-offset:
+    - 0
+    - 0.3
+  text-size: 12
+  text-max-width: 9
+paint:
+  text-halo-blur: 0.5
+  text-color: '#666'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
diff --git a/layers/poi-z14.yml b/layers/poi-z14.yml
new file mode 100644
index 0000000..69567a1
--- /dev/null
+++ b/layers/poi-z14.yml
@@ -0,0 +1,49 @@
+id: poi-z14
+type: symbol
+source: geolonia-gsi-custom
+source-layer: poi
+minzoom: 14
+filter:
+  - all
+  - - '=='
+    - $type
+    - Point
+  - - has
+    - name
+  - - 'in'
+    - class
+    - college
+    - castle
+    - aquarium
+    - cinema
+    - theatre
+    - zoo
+    - convenience
+    - lodging
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  icon-anchor: bottom
+  icon-image:
+    - coalesce
+    - - image
+      - - get
+        - class
+    - - image
+      - circle-stroked
+  text-field: '{name}'
+  text-offset:
+    - 0
+    - 0.3
+  text-size: 12
+  text-max-width: 9
+paint:
+  text-halo-blur: 0.5
+  text-color: '#666'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
\ No newline at end of file
diff --git a/layers/poi-z15.yml b/layers/poi-z15.yml
new file mode 100644
index 0000000..e4f2715
--- /dev/null
+++ b/layers/poi-z15.yml
@@ -0,0 +1,47 @@
+id: poi-z15
+type: symbol
+source: geolonia-gsi-custom
+source-layer: poi
+minzoom: 15
+filter:
+  - all
+  - - '=='
+    - $type
+    - Point
+  - - has
+    - name
+  - - 'in'
+    - class
+    - bank
+    - parking
+    - grocery
+    - shop
+    - school
+    - hospital
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  icon-anchor: bottom
+  icon-image:
+    - coalesce
+    - - image
+      - - get
+        - class
+    - - image
+      - circle-stroked
+  text-field: '{name}'
+  text-offset:
+    - 0
+    - 0.3
+  text-size: 12
+  text-max-width: 9
+paint:
+  text-halo-blur: 0.5
+  text-color: '#666'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
\ No newline at end of file
diff --git a/layers/poi-z16-primary.yml b/layers/poi-z16-primary.yml
new file mode 100644
index 0000000..1e02f76
--- /dev/null
+++ b/layers/poi-z16-primary.yml
@@ -0,0 +1,69 @@
+id: poi-z16-primary
+type: symbol
+source: geolonia-gsi-custom
+source-layer: poi
+minzoom: 16
+filter:
+  - any
+  - - all
+    - - '=='
+      - $type
+      - Point
+    - - has
+      - name
+    - - 'in'
+      - class
+      - cemetery
+      - restaurant
+      - bar
+      - cafe
+      - sushi
+      - restaurant_noodle
+      - fast_food
+      - ice_cream
+      - restaurant_pizza
+      - restaurant_seafood
+      - beer
+      - library
+      - fuel
+      - post
+      - police
+      - fire_station
+      - entrance
+      - bus
+      - attraction
+      - art_gallery
+    - - '!='
+      - disputed
+      - japan_northern_territories
+  - - all
+    - - 'in'
+      - subclass
+      - community_centre
+    - - '!='
+      - disputed
+      - japan_northern_territories
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  icon-anchor: bottom
+  icon-image:
+    - coalesce
+    - - image
+      - - get
+        - class
+    - - image
+      - circle-stroked
+  text-field: '{name}'
+  text-offset:
+    - 0
+    - 0.3
+  text-size: 12
+  text-max-width: 9
+paint:
+  text-halo-blur: 0.5
+  text-color: '#666'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
\ No newline at end of file
diff --git a/layers/poi-z16.yml b/layers/poi-z16.yml
new file mode 100644
index 0000000..f618c9b
--- /dev/null
+++ b/layers/poi-z16.yml
@@ -0,0 +1,34 @@
+id: poi-z16
+type: symbol
+source: geolonia-gsi-custom
+source-layer: poi
+minzoom: 16
+filter:
+  - all
+  - - '=='
+    - $type
+    - Point
+  - - has
+    - name
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  text-anchor: top
+  icon-anchor: bottom
+  icon-image: circle-stroked
+  icon-size: 0.6
+  text-field: '{name}'
+  text-offset:
+    - 0
+    - 0.3
+  text-size: 12
+  text-max-width: 9
+paint:
+  text-halo-blur: 0.5
+  text-color: '#666'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
\ No newline at end of file
diff --git a/layers/poi.yml b/layers/poi.yml
new file mode 100644
index 0000000..eea399c
--- /dev/null
+++ b/layers/poi.yml
@@ -0,0 +1,45 @@
+id: poi
+type: symbol
+source: geolonia-gsi-custom
+source-layer: poi
+minzoom: 16
+filter:
+  - all
+  - - '=='
+    - $type
+    - Point
+  - - '>'
+    - rank
+    - 25
+  - - has
+    - name
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-padding: 2
+  text-font:
+    - Noto Sans Regular
+  icon-image:
+    - coalesce
+    - - image
+      - - get
+        - class
+    - - image
+      - circle
+  text-field: '{name}'
+  text-size: 12
+  text-max-width: 9
+  text-variable-anchor:
+    - top
+    - bottom
+    - left
+    - right
+  text-radial-offset: 0.7
+  text-justify: center
+  text-anchor: center
+paint:
+  text-halo-blur: 0.5
+  text-color: '#666'
+  text-halo-width: 1
+  text-halo-color: '#ffffff'
diff --git a/layers/railway-jr-bridge-hatching.yml b/layers/railway-jr-bridge-hatching.yml
new file mode 100644
index 0000000..1d1338a
--- /dev/null
+++ b/layers/railway-jr-bridge-hatching.yml
@@ -0,0 +1,54 @@
+id: railway-jr-bridge-hatching
+type: line
+source: gsi-japan
+source-layer: railway
+minzoom: 10
+filter:
+  - all
+  - - '=='
+    - railState
+    - 1
+  - - any
+    - - all
+      - - '>='
+        - rtCode
+        - '40201000000'
+      - - <
+        - rtCode
+        - '40202000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40201000000'
+      - - <
+        - rtCode1
+        - '40202000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40216000000'
+      - - <
+        - rtCode
+        - '40217000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40216000000'
+      - - <
+        - rtCode1
+        - '40217000000'
+paint:
+  line-color: '#FFFFFF'
+  line-dasharray:
+    - 3
+    - 4
+  line-width:
+    stops:
+      - - 6
+        - 1
+      - - 10
+        - 2
+      - - 18
+        - 3
+      - - 22
+        - 19
diff --git a/layers/railway-jr-bridge.yml b/layers/railway-jr-bridge.yml
new file mode 100644
index 0000000..e7c8e02
--- /dev/null
+++ b/layers/railway-jr-bridge.yml
@@ -0,0 +1,51 @@
+id: railway-jr-bridge
+type: line
+source: gsi-japan
+source-layer: railway
+minzoom: 10
+filter:
+  - all
+  - - '=='
+    - railState
+    - 1
+  - - any
+    - - all
+      - - '>='
+        - rtCode
+        - '40201000000'
+      - - <
+        - rtCode
+        - '40202000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40201000000'
+      - - <
+        - rtCode1
+        - '40202000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40216000000'
+      - - <
+        - rtCode
+        - '40217000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40216000000'
+      - - <
+        - rtCode1
+        - '40217000000'
+paint:
+  line-color: '#999999'
+  line-width:
+    stops:
+      - - 6
+        - 2
+      - - 10
+        - 3
+      - - 18
+        - 4
+      - - 22
+        - 20
diff --git a/layers/railway-jr-hatching.yml b/layers/railway-jr-hatching.yml
new file mode 100644
index 0000000..1bd661b
--- /dev/null
+++ b/layers/railway-jr-hatching.yml
@@ -0,0 +1,69 @@
+id: railway-jr-hatching
+type: line
+source: gsi-japan
+source-layer: railway
+minzoom: 10
+filter:
+  - all
+  - - in
+    - railState
+    - 0
+    - 200
+    - 400
+    - 4
+    - 5
+    - 6
+    - 7
+  - - any
+    - - '=='
+      - rtCode10
+      - '0'
+    - - '=='
+      - rtCode10
+      - '1'
+    - - '!has'
+      - rtCode10
+  - - any
+    - - all
+      - - '>='
+        - rtCode
+        - '40201000000'
+      - - <
+        - rtCode
+        - '40202000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40201000000'
+      - - <
+        - rtCode1
+        - '40202000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40216000000'
+      - - <
+        - rtCode
+        - '40217000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40216000000'
+      - - <
+        - rtCode1
+        - '40217000000'
+paint:
+  line-color: '#FFFFFF'
+  line-dasharray:
+    - 3
+    - 4
+  line-width:
+    stops:
+      - - 6
+        - 1
+      - - 10
+        - 2
+      - - 18
+        - 3
+      - - 22
+        - 19
diff --git a/layers/railway-jr-high-speed-hatching.yml b/layers/railway-jr-high-speed-hatching.yml
new file mode 100644
index 0000000..f290aa8
--- /dev/null
+++ b/layers/railway-jr-high-speed-hatching.yml
@@ -0,0 +1,31 @@
+id: railway-jr-high-speed-hatching
+type: line
+source: gsi-japan
+source-layer: railway
+minzoom: 5
+filter:
+  - any
+  - - '=='
+    - rtCode10
+    - '1'
+  - - '=='
+    - ftCode
+    - 58203
+  - - '=='
+    - ftCode
+    - 58204
+paint:
+  line-color: '#FFFFFF'
+  line-dasharray:
+    - 3
+    - 4
+  line-width:
+    stops:
+      - - 5
+        - 1
+      - - 10
+        - 2
+      - - 18
+        - 3
+      - - 22
+        - 19
diff --git a/layers/railway-jr-high-speed.yml b/layers/railway-jr-high-speed.yml
new file mode 100644
index 0000000..ed38b33
--- /dev/null
+++ b/layers/railway-jr-high-speed.yml
@@ -0,0 +1,28 @@
+id: railway-jr-high-speed
+type: line
+source: gsi-japan
+source-layer: railway
+minzoom: 5
+filter:
+  - any
+  - - '=='
+    - rtCode10
+    - '1'
+  - - '=='
+    - ftCode
+    - 58203
+  - - '=='
+    - ftCode
+    - 58204
+paint:
+  line-color: '#5747C7'
+  line-width:
+    stops:
+      - - 5
+        - 2
+      - - 10
+        - 3
+      - - 18
+        - 4
+      - - 22
+        - 20
diff --git a/layers/railway-jr.yml b/layers/railway-jr.yml
new file mode 100644
index 0000000..480fe1b
--- /dev/null
+++ b/layers/railway-jr.yml
@@ -0,0 +1,66 @@
+id: railway-jr
+type: line
+source: gsi-japan
+source-layer: railway
+minzoom: 10
+filter:
+  - all
+  - - in
+    - railState
+    - 0
+    - 200
+    - 400
+    - 4
+    - 5
+    - 6
+    - 7
+  - - any
+    - - '=='
+      - rtCode10
+      - '0'
+    - - '=='
+      - rtCode10
+      - '1'
+    - - '!has'
+      - rtCode10
+  - - any
+    - - all
+      - - '>='
+        - rtCode
+        - '40201000000'
+      - - <
+        - rtCode
+        - '40202000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40201000000'
+      - - <
+        - rtCode1
+        - '40202000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40216000000'
+      - - <
+        - rtCode
+        - '40217000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40216000000'
+      - - <
+        - rtCode1
+        - '40217000000'
+paint:
+  line-color: '#999999'
+  line-width:
+    stops:
+      - - 6
+        - 2
+      - - 10
+        - 3
+      - - 18
+        - 4
+      - - 22
+        - 20
diff --git a/layers/railway-label.yml b/layers/railway-label.yml
new file mode 100644
index 0000000..3bdbc5f
--- /dev/null
+++ b/layers/railway-label.yml
@@ -0,0 +1,161 @@
+id: railway-label
+type: symbol
+source: gsi-japan
+source-layer: label
+minzoom: 10
+maxzoom: 15
+filter:
+  - all
+  - - '=='
+    - ftCode
+    - 100
+  - - '=='
+    - annoCtg
+    - 421
+layout:
+  text-font:
+    - Noto Sans Regular
+  text-keep-upright: true
+  text-field: '{knj}'
+  text-size: 12
+  text-allow-overlap: true
+  text-rotate:
+    - case
+    - - '=='
+      - - get
+        - arrng
+      - 2
+    - - '*'
+      - - +
+        - - to-number
+          - - get
+            - arrngAgl
+        - 90
+      - -1
+    - - '*'
+      - - to-number
+        - - get
+          - arrngAgl
+      - -1
+  text-anchor:
+    - case
+    - - '=='
+      - - get
+        - arrng
+      - 2
+    - - case
+      - - '=='
+        - - get
+          - dspPos
+        - LC
+      - top
+      - center
+    - - case
+      - - '=='
+        - - get
+          - dspPos
+        - LT
+      - top-left
+      - - '=='
+        - - get
+          - dspPos
+        - CT
+      - top
+      - - '=='
+        - - get
+          - dspPos
+        - RT
+      - top-right
+      - - '=='
+        - - get
+          - dspPos
+        - LC
+      - left
+      - - '=='
+        - - get
+          - dspPos
+        - CC
+      - center
+      - - '=='
+        - - get
+          - dspPos
+        - RC
+      - right
+      - - '=='
+        - - get
+          - dspPos
+        - LB
+      - bottom-left
+      - - '=='
+        - - get
+          - dspPos
+        - CB
+      - bottom
+      - - '=='
+        - - get
+          - dspPos
+        - RB
+      - bottom-right
+      - center
+  text-pitch-alignment: viewport
+  text-rotation-alignment: viewport
+  icon-pitch-alignment: auto
+  icon-rotation-alignment: auto
+  text-offset:
+    - case
+    - - any
+      - - '=='
+        - - get
+          - dspPos
+        - LT
+      - - '=='
+        - - get
+          - dspPos
+        - LC
+      - - '=='
+        - - get
+          - dspPos
+        - LB
+    - - literal
+      - - 0.5
+        - 0
+    - - any
+      - - '=='
+        - - get
+          - dspPos
+        - RT
+      - - '=='
+        - - get
+          - dspPos
+        - RC
+      - - '=='
+        - - get
+          - dspPos
+        - RB
+    - - literal
+      - - -0.5
+        - 0
+    - - any
+      - - '=='
+        - - get
+          - dspPos
+        - CT
+    - - literal
+      - - 0
+        - 0.5
+    - - any
+      - - '=='
+        - - get
+          - dspPos
+        - CB
+    - - literal
+      - - 0
+        - -0.5
+    - - literal
+      - - 0
+        - 0
+  visibility: visible
+paint:
+  text-color: rgba(68, 68, 68, 1)
+  text-halo-width: 1.2
+  text-halo-color: rgba(255,255,255,0.8)
diff --git a/layers/railway-minor-hatching.yml b/layers/railway-minor-hatching.yml
new file mode 100644
index 0000000..d87baee
--- /dev/null
+++ b/layers/railway-minor-hatching.yml
@@ -0,0 +1,40 @@
+id: railway-minor-hatching
+type: line
+source: gsi-japan
+source-layer: railway
+minzoom: 14
+filter:
+  - all
+  - - in
+    - railState
+    - 0
+    - 200
+    - 400
+    - 4
+    - 5
+    - 6
+    - 7
+  - - any
+    - - '=='
+      - rtCode10
+      - '0'
+    - - '!has'
+      - rtCode10
+  - - all
+    - - '>='
+      - rtCode1
+      - '40217000000'
+    - - <
+      - rtCode1
+      - '40218000000'
+paint:
+  line-color: '#999999'
+  line-dasharray:
+    - 0.2
+    - 1.5
+  line-width:
+    stops:
+      - - 10
+        - 4
+      - - 22
+        - 8
diff --git a/layers/railway-minor.yml b/layers/railway-minor.yml
new file mode 100644
index 0000000..ecbf95f
--- /dev/null
+++ b/layers/railway-minor.yml
@@ -0,0 +1,37 @@
+id: railway-minor
+type: line
+source: gsi-japan
+source-layer: railway
+minzoom: 14
+filter:
+  - all
+  - - in
+    - railState
+    - 0
+    - 200
+    - 400
+    - 4
+    - 5
+    - 6
+    - 7
+  - - any
+    - - '=='
+      - rtCode10
+      - '0'
+    - - '!has'
+      - rtCode10
+  - - all
+    - - '>='
+      - rtCode1
+      - '40217000000'
+    - - <
+      - rtCode1
+      - '40218000000'
+paint:
+  line-color: '#999999'
+  line-width:
+    stops:
+      - - 10
+        - 1
+      - - 22
+        - 2
diff --git a/layers/railway-secondary-bridge-hatching.yml b/layers/railway-secondary-bridge-hatching.yml
new file mode 100644
index 0000000..f5a8b51
--- /dev/null
+++ b/layers/railway-secondary-bridge-hatching.yml
@@ -0,0 +1,87 @@
+id: railway-secondary-bridge-hatching
+type: line
+source: gsi-japan
+source-layer: railway
+minzoom: 10
+filter:
+  - all
+  - - in
+    - railState
+    - 1
+  - - any
+    - - '=='
+      - rtCode10
+      - '0'
+    - - '=='
+      - rtCode10
+      - '1'
+    - - '!has'
+      - rtCode10
+  - - any
+    - - all
+      - - '>='
+        - rtCode
+        - '40202000000'
+      - - <
+        - rtCode
+        - '40203000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40202000000'
+      - - <
+        - rtCode1
+        - '40203000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40205000000'
+      - - <
+        - rtCode
+        - '40206000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40205000000'
+      - - <
+        - rtCode1
+        - '40206000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40204000000'
+      - - <
+        - rtCode
+        - '40205000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40217000000'
+      - - <
+        - rtCode
+        - '40218000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40204000000'
+      - - <
+        - rtCode1
+        - '40205000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40217000000'
+      - - <
+        - rtCode1
+        - '40218000000'
+paint:
+  line-color: '#999999'
+  line-dasharray:
+    - 0.2
+    - 1.5
+  line-width:
+    stops:
+      - - 10
+        - 4
+      - - 22
+        - 8
diff --git a/layers/railway-secondary-bridge.yml b/layers/railway-secondary-bridge.yml
new file mode 100644
index 0000000..3e63cc6
--- /dev/null
+++ b/layers/railway-secondary-bridge.yml
@@ -0,0 +1,84 @@
+id: railway-secondary-bridge
+type: line
+source: gsi-japan
+source-layer: railway
+minzoom: 10
+filter:
+  - all
+  - - in
+    - railState
+    - 1
+  - - any
+    - - '=='
+      - rtCode10
+      - '0'
+    - - '=='
+      - rtCode10
+      - '1'
+    - - '!has'
+      - rtCode10
+  - - any
+    - - all
+      - - '>='
+        - rtCode
+        - '40202000000'
+      - - <
+        - rtCode
+        - '40203000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40202000000'
+      - - <
+        - rtCode1
+        - '40203000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40205000000'
+      - - <
+        - rtCode
+        - '40206000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40205000000'
+      - - <
+        - rtCode1
+        - '40206000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40204000000'
+      - - <
+        - rtCode
+        - '40205000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40217000000'
+      - - <
+        - rtCode
+        - '40218000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40204000000'
+      - - <
+        - rtCode1
+        - '40205000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40217000000'
+      - - <
+        - rtCode1
+        - '40218000000'
+paint:
+  line-color: '#999999'
+  line-width:
+    stops:
+      - - 10
+        - 1
+      - - 22
+        - 2
diff --git a/layers/railway-secondary-hatching.yml b/layers/railway-secondary-hatching.yml
new file mode 100644
index 0000000..69b14da
--- /dev/null
+++ b/layers/railway-secondary-hatching.yml
@@ -0,0 +1,83 @@
+id: railway-secondary-hatching
+type: line
+source: gsi-japan
+source-layer: railway
+minzoom: 10
+filter:
+  - all
+  - - in
+    - railState
+    - 0
+    - 200
+    - 400
+    - 4
+    - 5
+    - 6
+    - 7
+  - - any
+    - - '=='
+      - rtCode10
+      - '0'
+    - - '!has'
+      - rtCode10
+  - - any
+    - - all
+      - - '>='
+        - rtCode
+        - '40202000000'
+      - - <
+        - rtCode
+        - '40203000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40202000000'
+      - - <
+        - rtCode1
+        - '40203000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40205000000'
+      - - <
+        - rtCode
+        - '40206000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40205000000'
+      - - <
+        - rtCode1
+        - '40206000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40204000000'
+      - - <
+        - rtCode
+        - '40205000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40217000000'
+      - - <
+        - rtCode
+        - '40218000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40204000000'
+      - - <
+        - rtCode1
+        - '40205000000'
+paint:
+  line-color: '#999999'
+  line-dasharray:
+    - 0.2
+    - 1.5
+  line-width:
+    stops:
+      - - 10
+        - 4
+      - - 22
+        - 8
diff --git a/layers/railway-secondary.yml b/layers/railway-secondary.yml
new file mode 100644
index 0000000..8a32fe6
--- /dev/null
+++ b/layers/railway-secondary.yml
@@ -0,0 +1,80 @@
+id: railway-secondary
+type: line
+source: gsi-japan
+source-layer: railway
+minzoom: 10
+filter:
+  - all
+  - - in
+    - railState
+    - 0
+    - 200
+    - 400
+    - 4
+    - 5
+    - 6
+    - 7
+  - - any
+    - - '=='
+      - rtCode10
+      - '0'
+    - - '!has'
+      - rtCode10
+  - - any
+    - - all
+      - - '>='
+        - rtCode
+        - '40202000000'
+      - - <
+        - rtCode
+        - '40203000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40202000000'
+      - - <
+        - rtCode1
+        - '40203000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40205000000'
+      - - <
+        - rtCode
+        - '40206000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40205000000'
+      - - <
+        - rtCode1
+        - '40206000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40204000000'
+      - - <
+        - rtCode
+        - '40205000000'
+    - - all
+      - - '>='
+        - rtCode
+        - '40217000000'
+      - - <
+        - rtCode
+        - '40218000000'
+    - - all
+      - - '>='
+        - rtCode1
+        - '40204000000'
+      - - <
+        - rtCode1
+        - '40205000000'
+paint:
+  line-color: '#999999'
+  line-width:
+    stops:
+      - - 10
+        - 1
+      - - 22
+        - 2
diff --git a/layers/railway-subway.yml b/layers/railway-subway.yml
new file mode 100644
index 0000000..d8e17f9
--- /dev/null
+++ b/layers/railway-subway.yml
@@ -0,0 +1,28 @@
+id: railway-subway
+type: line
+source: gsi-japan
+source-layer: railway
+minzoom: 13
+filter:
+  - any
+  - - '=='
+    - rtCode10
+    - '2'
+  - - all
+    - - '>='
+      - rtCode
+      - '40203000000'
+    - - <
+      - rtCode
+      - '40204000000'
+  - - all
+    - - '>='
+      - rtCode1
+      - '40203000000'
+    - - <
+      - rtCode1
+      - '40204000000'
+paint:
+  line-color: '#9dabdd'
+  line-opacity: 1
+  line-width: 1.5
diff --git a/layers/railway-tunnel.yml b/layers/railway-tunnel.yml
new file mode 100644
index 0000000..04977a8
--- /dev/null
+++ b/layers/railway-tunnel.yml
@@ -0,0 +1,29 @@
+id: railway-tunnel
+type: line
+source: gsi-japan
+source-layer: railway
+minzoom: 10
+filter:
+  - all
+  - - in
+    - railState
+    # ズームレベル 8~13
+    - 100 # トンネル
+    - 200 # 雪覆い
+    - 300 # 地下
+    # ズームレベル 14~16
+    - 2 # トンネル
+    - 3 # 地下
+    - 4 # 雪覆い
+paint:
+  line-color: '#908150'
+  line-opacity: 0.6
+  line-width:
+    stops:
+      - - 10
+        - 1
+      - - 22
+        - 3
+  line-dasharray:
+    - 3
+    - 2
diff --git a/layers/road-outline.yml b/layers/road-outline.yml
new file mode 100644
index 0000000..791523c
--- /dev/null
+++ b/layers/road-outline.yml
@@ -0,0 +1,20 @@
+id: road-outline
+type: line
+source: gsi-japan
+source-layer: road
+minzoom: 16
+filter:
+  - all
+  - - '>='
+    - ftCode
+    - 2200
+  - - <
+    - ftCode
+    - 2700
+layout:
+  line-cap: round
+  line-join: round
+  visibility: visible
+paint:
+  line-color: '#DDDDDD'
+  line-width: 2
diff --git a/layers/road_shield_highway.yml b/layers/road_shield_highway.yml
new file mode 100644
index 0000000..45a9219
--- /dev/null
+++ b/layers/road_shield_highway.yml
@@ -0,0 +1,51 @@
+id: road_shield_highway
+type: symbol
+source: gsi-japan
+source-layer: transp
+minzoom: 8 #データのズームレベル z8~13
+filter:
+  - all
+  - - in
+    - ftCode
+    - 2903 # 都市高速道路番号
+    - 2904 # 高速道路番号
+layout:
+  icon-image: [
+    "match",
+    ["length", [
+        "case",
+        ["has", "uRNo"],
+        ["get", "uRNo"],
+        ["has", "nRNo"],
+        ["get", "nRNo"],
+        "",
+      ]
+    ],
+    1, highway-JP_1, # 1桁
+    2, highway-JP_2, # 2桁
+    3, highway-JP_3, # 3桁
+    highway-JP_3 # フォールバック
+  ]
+  icon-rotation-alignment: viewport
+  icon-padding: 13
+  text-field:
+    - case
+    - - has
+      - uRNo
+    - - get
+      - uRNo
+    - - has
+      - nRNo
+    - - get
+      - nRNo
+    - ''
+  text-font:
+    - Noto Sans CJK JP Bold
+  text-offset:
+    - 0
+    - -0.1
+  text-rotation-alignment: viewport
+  text-size: 10
+  icon-size: 1
+paint:
+  text-color: '#ffffff'
diff --git a/layers/road_shield_national.yml b/layers/road_shield_national.yml
new file mode 100644
index 0000000..4c53750
--- /dev/null
+++ b/layers/road_shield_national.yml
@@ -0,0 +1,32 @@
+id: road_shield_national
+type: symbol
+source: gsi-japan
+source-layer: transp
+minzoom: 9 #データのズームレベル z9~17
+maxzoom: 20
+filter:
+  - all
+  - - in
+    - ftCode
+    - 2901 # 国道番号
+layout:
+  icon-image: [
+    "match",
+    ["length", ["to-string", ["get", "nRNo"]]], #z11以降の値が数字になるので、文字列に変換
+    1, national-JP_1, # 1桁
+    2, national-JP_2, # 2桁
+    3, national-JP_3, # 3桁
+    national-JP_3 # フォールバック
+  ]
+  icon-padding: 13
+  text-field: ["get", "nRNo"]
+  text-font:
+    - Noto Sans CJK JP Bold
+  text-offset:
+    - 0
+    - -0.1
+  text-rotation-alignment: viewport
+  text-size: 10
+  icon-size: 1
+paint:
+  text-color: '#ffffff'
diff --git a/layers/structurea-3d.yml b/layers/structurea-3d.yml
new file mode 100644
index 0000000..5168527
--- /dev/null
+++ b/layers/structurea-3d.yml
@@ -0,0 +1,13 @@
+id: structurea-3d
+type: fill-extrusion
+metadata:
+  visible-on-3d: true
+source: gsi-japan
+source-layer: structurea
+minzoom: 16
+layout:
+  visibility: none
+paint:
+  fill-extrusion-color: '#EEEEEE'
+  fill-extrusion-height: 30
+  fill-extrusion-opacity: 0.4
diff --git a/layers/structurea-casing.yml b/layers/structurea-casing.yml
new file mode 100644
index 0000000..2d2ff57
--- /dev/null
+++ b/layers/structurea-casing.yml
@@ -0,0 +1,20 @@
+id: structurea-casing
+type: line
+source: gsi-japan
+source-layer: structurea
+minzoom: 15
+filter:
+  - all
+  - - '=='
+    - $type
+    - Polygon
+layout:
+  visibility: visible
+paint:
+  line-color: '#DEDEDE'
+  line-width:
+    stops:
+      - - 15
+        - 1
+      - - 18
+        - 3
diff --git a/layers/structurea.yml b/layers/structurea.yml
new file mode 100644
index 0000000..ce6e622
--- /dev/null
+++ b/layers/structurea.yml
@@ -0,0 +1,14 @@
+id: structurea
+type: fill
+source: gsi-japan
+source-layer: structurea
+minzoom: 15
+filter:
+  - all
+  - - '=='
+    - $type
+    - Polygon
+layout:
+  visibility: visible
+paint:
+  fill-color: '#FAFAFA'
diff --git a/layers/water-blur-gsi.yml b/layers/water-blur-gsi.yml
new file mode 100644
index 0000000..d330cd1
--- /dev/null
+++ b/layers/water-blur-gsi.yml
@@ -0,0 +1,9 @@
+id: water-blur-gsi
+type: line
+source: gsi-japan
+source-layer: river
+minzoom: 17
+layout:
+  line-join: "round"
+  visibility: visible
+paint: !!inc/file layers/components/water-blur-paint.yml
diff --git a/layers/water-blur.yml b/layers/water-blur.yml
new file mode 100644
index 0000000..a3ddeee
--- /dev/null
+++ b/layers/water-blur.yml
@@ -0,0 +1,10 @@
+id: water-blur
+type: line
+source: geolonia-water
+source-layer: water
+minzoom: 17
+layout:
+  line-join: "round"
+  visibility: visible
+paint: !!inc/file layers/components/water-blur-paint.yml
+
diff --git a/layers/water-gsi.yml b/layers/water-gsi.yml
new file mode 100644
index 0000000..5487430
--- /dev/null
+++ b/layers/water-gsi.yml
@@ -0,0 +1,24 @@
+id: water-gsi
+type: line
+source: gsi-japan
+source-layer: river
+minzoom: 16
+filter:
+  - all
+  - - '!='
+    - ftCode
+    - 5322
+layout:
+  line-join: "round"
+  line-round-limit: 0.5
+  visibility: visible
+paint:
+  line-color: '#65cbf9'
+  line-width:
+    - interpolate
+    - - linear
+    - - zoom
+    - 16
+    - 1
+    - 20
+    - 5
diff --git a/layers/water-name-lakeline.yml b/layers/water-name-lakeline.yml
new file mode 100644
index 0000000..3c58cbc
--- /dev/null
+++ b/layers/water-name-lakeline.yml
@@ -0,0 +1,26 @@
+id: water-name-lakeline
+type: symbol
+source: geolonia-gsi-custom
+source-layer: water_name
+filter:
+  - all
+  - - '=='
+    - $type
+    - LineString
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 5
+  text-rotation-alignment: map
+  symbol-placement: line
+  symbol-spacing: 350
+  text-letter-spacing: 0.2
+paint:
+  text-color: '#74aee9'
+  text-halo-width: 1.5
+  text-halo-color: rgba(255,255,255,0.7)
diff --git a/layers/water-name-ocean.yml b/layers/water-name-ocean.yml
new file mode 100644
index 0000000..b3a707d
--- /dev/null
+++ b/layers/water-name-ocean.yml
@@ -0,0 +1,29 @@
+id: water-name-ocean
+type: symbol
+source: geolonia-gsi-custom
+source-layer: water_name
+filter:
+  - all
+  - - '=='
+    - $type
+    - Point
+  - - '=='
+    - class
+    - ocean
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 5
+  text-rotation-alignment: map
+  symbol-placement: point
+  symbol-spacing: 350
+  text-letter-spacing: 0.2
+paint:
+  text-color: '#74aee9'
+  text-halo-width: 1.5
+  text-halo-color: rgba(255,255,255,0.7)
diff --git a/layers/water-name-other.yml b/layers/water-name-other.yml
new file mode 100644
index 0000000..c24eb7c
--- /dev/null
+++ b/layers/water-name-other.yml
@@ -0,0 +1,39 @@
+
+id: water-name-other
+type: symbol
+source: geolonia-gsi-custom
+source-layer: water_name
+filter:
+  - all
+  - - '=='
+    - $type
+    - Point
+  - - '!in'
+    - class
+    - ocean
+  - - '!='
+    - disputed
+    - japan_northern_territories
+  - - '!='
+    - subclass
+    - moat
+layout:
+  text-font:
+    - Noto Sans Regular
+  text-size:
+    stops:
+      - - 0
+        - 10
+      - - 6
+        - 14
+  text-field: '{name}'
+  text-max-width: 5
+  text-rotation-alignment: map
+  symbol-placement: point
+  symbol-spacing: 350
+  text-letter-spacing: 0.2
+  visibility: visible
+paint:
+  text-color: '#74aee9'
+  text-halo-width: 1.5
+  text-halo-color: rgba(255,255,255,0.7)
diff --git a/layers/water.yml b/layers/water.yml
new file mode 100644
index 0000000..c41d096
--- /dev/null
+++ b/layers/water.yml
@@ -0,0 +1,10 @@
+id: water
+type: fill
+source: gsi-japan
+source-layer: waterarea
+filter:
+  - all
+layout:
+  visibility: visible
+paint:
+  fill-color: '#65cbf9'
diff --git a/layers/waterway-name.yml b/layers/waterway-name.yml
new file mode 100644
index 0000000..d6a8236
--- /dev/null
+++ b/layers/waterway-name.yml
@@ -0,0 +1,29 @@
+id: waterway-name
+type: symbol
+source: geolonia-gsi-custom
+source-layer: waterway
+minzoom: 13
+filter:
+  - all
+  - - '=='
+    - $type
+    - LineString
+  - - has
+    - name
+  - - '!='
+    - disputed
+    - japan_northern_territories
+layout:
+  text-font:
+    - Noto Sans Regular
+  text-size: 14
+  text-field: '{name}'
+  text-max-width: 5
+  text-rotation-alignment: map
+  symbol-placement: line
+  text-letter-spacing: 0.2
+  symbol-spacing: 350
+paint:
+  text-color: '#65cbf9'
+  text-halo-width: 1.5
+  text-halo-color: rgba(255,255,255,0.7)
diff --git a/layers/waterway-other.yml b/layers/waterway-other.yml
new file mode 100644
index 0000000..a7b8203
--- /dev/null
+++ b/layers/waterway-other.yml
@@ -0,0 +1,21 @@
+id: waterway-other
+type: line
+source: geolonia-gsi-custom
+source-layer: waterway
+filter:
+  - '!in'
+  - class
+  - canal
+  - river
+  - stream
+layout:
+  line-cap: round
+paint:
+  line-color: '#65cbf9'
+  line-width:
+    base: 1.3
+    stops:
+      - - 13
+        - 0.5
+      - - 20
+        - 2
diff --git a/layers/waterway-stream-canal.yml b/layers/waterway-stream-canal.yml
new file mode 100644
index 0000000..4720bc6
--- /dev/null
+++ b/layers/waterway-stream-canal.yml
@@ -0,0 +1,24 @@
+id: waterway-stream-canal
+type: line
+source: geolonia-gsi-custom
+source-layer: waterway
+filter:
+  - all
+  - - in
+    - class
+    - canal
+    - stream
+  - - '!='
+    - brunnel
+    - tunnel
+layout:
+  line-cap: round
+paint:
+  line-color: '#65cbf9'
+  line-width:
+    base: 1.3
+    stops:
+      - - 13
+        - 0.5
+      - - 20
+        - 6
diff --git a/layers/waterway_tunnel.yml b/layers/waterway_tunnel.yml
new file mode 100644
index 0000000..3b6259e
--- /dev/null
+++ b/layers/waterway_tunnel.yml
@@ -0,0 +1,29 @@
+id: waterway_tunnel
+type: line
+source: geolonia-gsi-custom
+source-layer: waterway
+minzoom: 14
+filter:
+  - all
+  - - in
+    - class
+    - river
+    - stream
+    - canal
+  - - '=='
+    - brunnel
+    - tunnel
+layout:
+  line-cap: round
+paint:
+  line-color: '#65cbf9'
+  line-width:
+    base: 1.3
+    stops:
+      - - 13
+        - 0.5
+      - - 20
+        - 6
+  line-dasharray:
+    - 2
+    - 4
diff --git a/netlify.toml b/netlify.toml
new file mode 100644
index 0000000..9a7dcb1
--- /dev/null
+++ b/netlify.toml
@@ -0,0 +1,18 @@
+[[headers]]
+  for = "/*"
+  [headers.values]
+    Access-Control-Allow-Origin = "*"
+
+# Settings in the [build] context are global and are applied to
+# all contexts unless otherwise overridden by more specific contexts.
+[build]
+  # Directory that contains the deploy-ready HTML files and
+  # assets generated by the build. This is relative to the base
+  # directory if one has been set, or the root directory if
+  # a base has not been set. This sample publishes the directory
+  # located at the absolute path "root/project/build-output"
+
+  publish = "docs/"
+
+  # Default build command.
+  command = "charites build style.yml ./docs/style.json --sprite-input icons/ --sprite-output docs/ --sprite-url ${DEPLOY_PRIME_URL}/gsi"
diff --git a/package-lock.json b/package-lock.json
new file mode 100644
index 0000000..e81f46c
--- /dev/null
+++ b/package-lock.json
@@ -0,0 +1,2566 @@
+{
+  "name": "geolonia-gsi",
+  "version": "0.1.0",
+  "lockfileVersion": 2,
+  "requires": true,
+  "packages": {
+    "": {
+      "name": "geolonia-gsi",
+      "version": "0.1.0",
+      "license": "MIT",
+      "devDependencies": {
+        "@unvt/charites": "^0.4.0",
+        "http-close": "^1.0.0",
+        "node-fetch": "^2.6.7",
+        "puppeteer": "^16.1.0"
+      }
+    },
+    "node_modules/@mapbox/jsonlint-lines-primitives": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz",
+      "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/@mapbox/mapbox-gl-style-spec": {
+      "version": "13.28.0",
+      "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.28.0.tgz",
+      "integrity": "sha512-B8xM7Fp1nh5kejfIl4SWeY0gtIeewbuRencqO3cJDrCHZpaPg7uY+V8abuR+esMeuOjRl5cLhVTP40v+1ywxbg==",
+      "dev": true,
+      "dependencies": {
+        "@mapbox/jsonlint-lines-primitives": "~2.0.2",
+        "@mapbox/point-geometry": "^0.1.0",
+        "@mapbox/unitbezier": "^0.0.0",
+        "csscolorparser": "~1.0.2",
+        "json-stringify-pretty-compact": "^2.0.0",
+        "minimist": "^1.2.6",
+        "rw": "^1.3.3",
+        "sort-object": "^0.3.2"
+      },
+      "bin": {
+        "gl-style-composite": "bin/gl-style-composite.js",
+        "gl-style-format": "bin/gl-style-format.js",
+        "gl-style-migrate": "bin/gl-style-migrate.js",
+        "gl-style-validate": "bin/gl-style-validate.js"
+      }
+    },
+    "node_modules/@mapbox/point-geometry": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz",
+      "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==",
+      "dev": true
+    },
+    "node_modules/@mapbox/unitbezier": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz",
+      "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==",
+      "dev": true
+    },
+    "node_modules/@maplibre/maplibre-gl-style-spec": {
+      "version": "17.0.2",
+      "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-17.0.2.tgz",
+      "integrity": "sha512-iW63wG/ZzeJ2PawkR2g2m4VnFYlUJW22Uu966YhR6K0nDJflDE6QBLanX4wsfZb6adLT6Z106N/apgWKvS2/8g==",
+      "dev": true,
+      "dependencies": {
+        "@mapbox/jsonlint-lines-primitives": "~2.0.2",
+        "@mapbox/unitbezier": "^0.0.0",
+        "csscolorparser": "~1.0.2",
+        "json-stringify-pretty-compact": "^2.0.0",
+        "minimist": "^1.2.5",
+        "rw": "^1.3.3",
+        "sort-object": "^0.3.2"
+      },
+      "bin": {
+        "gl-style-format": "bin/gl-style-format.js",
+        "gl-style-migrate": "bin/gl-style-migrate.js",
+        "gl-style-validate": "bin/gl-style-validate.js"
+      }
+    },
+    "node_modules/@types/jsonminify": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/@types/jsonminify/-/jsonminify-0.4.1.tgz",
+      "integrity": "sha512-CkbsT83tCMuFefGh+aXlsunetd66yN62QxtjBfk4lX4zMVBPRlWyHQvZvIPOMUznVA7MXdt6RtqHa9fra1PlCw==",
+      "dev": true
+    },
+    "node_modules/@types/node": {
+      "version": "18.7.3",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.3.tgz",
+      "integrity": "sha512-LJgzOEwWuMTBxHzgBR/fhhBOWrvBjvO+zPteUgbbuQi80rYIZHrk1mNbRUqPZqSLP2H7Rwt1EFLL/tNLD1Xx/w==",
+      "dev": true,
+      "optional": true
+    },
+    "node_modules/@types/yauzl": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
+      "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
+      "dev": true,
+      "optional": true,
+      "dependencies": {
+        "@types/node": "*"
+      }
+    },
+    "node_modules/@unvt/charites": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/@unvt/charites/-/charites-0.4.0.tgz",
+      "integrity": "sha512-UHXtUvjnjhNHc4jnY/knQJIJOorf1qi08djf6gv9ZOJGeKqOUq7vxzKWHI3PaHSfyuciUBomDn6DovCb/gF89w==",
+      "dev": true,
+      "dependencies": {
+        "@mapbox/mapbox-gl-style-spec": "^13.27.0",
+        "@maplibre/maplibre-gl-style-spec": "^17.0.2",
+        "@types/jsonminify": "^0.4.1",
+        "@unvt/sprite-one": "^0.0.9",
+        "axios": "^1.2.2",
+        "commander": "^9.4.1",
+        "glob": "^8.0.3",
+        "js-yaml": "^4.0.0",
+        "jsonminify": "^0.4.2",
+        "node-watch": "^0.7.3",
+        "open": "^8.2.1",
+        "ws": "^8.11.0",
+        "yaml-include": "^1.2.1"
+      },
+      "bin": {
+        "charites": "dist/cli.js"
+      }
+    },
+    "node_modules/@unvt/charites/node_modules/brace-expansion": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+      "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0"
+      }
+    },
+    "node_modules/@unvt/charites/node_modules/glob": {
+      "version": "8.0.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
+      "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
+      "dev": true,
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^5.0.1",
+        "once": "^1.3.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/@unvt/charites/node_modules/minimatch": {
+      "version": "5.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz",
+      "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^2.0.1"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/@unvt/charites/node_modules/ws": {
+      "version": "8.12.0",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz",
+      "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==",
+      "dev": true,
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": ">=5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@unvt/sprite-one": {
+      "version": "0.0.9",
+      "resolved": "https://registry.npmjs.org/@unvt/sprite-one/-/sprite-one-0.0.9.tgz",
+      "integrity": "sha512-zUqEbA9bRmSPxLbNxs8+3LBqhwapgzd2x74QT4QrCs2lwiQpfPF4cfxozUrBZ5AgzHaLdq3oismNzfg8pNtjew==",
+      "dev": true,
+      "dependencies": {
+        "bin-pack": "^1.0.2",
+        "commander": "^9.4.0",
+        "sharp": "^0.30.7"
+      },
+      "bin": {
+        "sprite-one": "dist/bin/index.js"
+      }
+    },
+    "node_modules/agent-base": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+      "dev": true,
+      "dependencies": {
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6.0.0"
+      }
+    },
+    "node_modules/argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "dev": true
+    },
+    "node_modules/asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+      "dev": true
+    },
+    "node_modules/axios": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz",
+      "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==",
+      "dev": true,
+      "dependencies": {
+        "follow-redirects": "^1.15.0",
+        "form-data": "^4.0.0",
+        "proxy-from-env": "^1.1.0"
+      }
+    },
+    "node_modules/balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "node_modules/base64-js": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
+    },
+    "node_modules/bin-pack": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/bin-pack/-/bin-pack-1.0.2.tgz",
+      "integrity": "sha512-aOk0SxEon5LF9cMxQFViSKb4qccG6rs7XKyMXIb1J8f8LA2acTIWnHdT0IOTe4gYBbqgjdbuTZ5f+UP+vlh4Mw==",
+      "dev": true
+    },
+    "node_modules/bl": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+      "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+      "dev": true,
+      "dependencies": {
+        "buffer": "^5.5.0",
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.4.0"
+      }
+    },
+    "node_modules/brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "dependencies": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "node_modules/buffer": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "dependencies": {
+        "base64-js": "^1.3.1",
+        "ieee754": "^1.1.13"
+      }
+    },
+    "node_modules/buffer-crc32": {
+      "version": "0.2.13",
+      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+      "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+      "dev": true,
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/color": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+      "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+      "dev": true,
+      "dependencies": {
+        "color-convert": "^2.0.1",
+        "color-string": "^1.9.0"
+      },
+      "engines": {
+        "node": ">=12.5.0"
+      }
+    },
+    "node_modules/color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "~1.1.4"
+      },
+      "engines": {
+        "node": ">=7.0.0"
+      }
+    },
+    "node_modules/color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "node_modules/color-string": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+      "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+      "dev": true,
+      "dependencies": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "node_modules/combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dev": true,
+      "dependencies": {
+        "delayed-stream": "~1.0.0"
+      },
+      "engines": {
+        "node": ">= 0.8"
+      }
+    },
+    "node_modules/commander": {
+      "version": "9.5.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+      "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+      "dev": true,
+      "engines": {
+        "node": "^12.20.0 || >=14"
+      }
+    },
+    "node_modules/concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
+    "node_modules/cross-fetch": {
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
+      "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
+      "dev": true,
+      "dependencies": {
+        "node-fetch": "2.6.7"
+      }
+    },
+    "node_modules/csscolorparser": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz",
+      "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==",
+      "dev": true
+    },
+    "node_modules/debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "dependencies": {
+        "ms": "2.1.2"
+      },
+      "engines": {
+        "node": ">=6.0"
+      },
+      "peerDependenciesMeta": {
+        "supports-color": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/decompress-response": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+      "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+      "dev": true,
+      "dependencies": {
+        "mimic-response": "^3.1.0"
+      },
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/deep-extend": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+      "dev": true,
+      "engines": {
+        "node": ">=4.0.0"
+      }
+    },
+    "node_modules/define-lazy-prop": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+      "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/detect-libc": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
+      "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/devtools-protocol": {
+      "version": "0.0.1019158",
+      "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz",
+      "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==",
+      "dev": true
+    },
+    "node_modules/end-of-stream": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+      "dev": true,
+      "dependencies": {
+        "once": "^1.4.0"
+      }
+    },
+    "node_modules/esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "dev": true,
+      "bin": {
+        "esparse": "bin/esparse.js",
+        "esvalidate": "bin/esvalidate.js"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/expand-template": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
+      "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/extract-zip": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+      "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.1.1",
+        "get-stream": "^5.1.0",
+        "yauzl": "^2.10.0"
+      },
+      "bin": {
+        "extract-zip": "cli.js"
+      },
+      "engines": {
+        "node": ">= 10.17.0"
+      },
+      "optionalDependencies": {
+        "@types/yauzl": "^2.9.1"
+      }
+    },
+    "node_modules/fd-slicer": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+      "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+      "dev": true,
+      "dependencies": {
+        "pend": "~1.2.0"
+      }
+    },
+    "node_modules/find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "dev": true,
+      "dependencies": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/follow-redirects": {
+      "version": "1.15.2",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
+      "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "individual",
+          "url": "https://github.com/sponsors/RubenVerborgh"
+        }
+      ],
+      "engines": {
+        "node": ">=4.0"
+      },
+      "peerDependenciesMeta": {
+        "debug": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/form-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "dev": true,
+      "dependencies": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/fs-constants": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+      "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+      "dev": true
+    },
+    "node_modules/fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "node_modules/get-stream": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+      "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+      "dev": true,
+      "dependencies": {
+        "pump": "^3.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/github-from-package": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+      "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
+      "dev": true
+    },
+    "node_modules/glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "dev": true,
+      "dependencies": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      },
+      "engines": {
+        "node": "*"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/http-close": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/http-close/-/http-close-1.0.0.tgz",
+      "integrity": "sha512-lqMabfHDuVOlz4nd3uJCfClyFs/CRCwT2abwBcGTXjdfiX5vJdt7UIolFPqORBPoRZJItliNsXJKPd9+YFAR4A==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.1.1"
+      }
+    },
+    "node_modules/https-proxy-agent": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+      "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+      "dev": true,
+      "dependencies": {
+        "agent-base": "6",
+        "debug": "4"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
+    },
+    "node_modules/inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "dependencies": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "node_modules/inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "node_modules/ini": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+      "dev": true
+    },
+    "node_modules/is-arrayish": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+      "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+      "dev": true
+    },
+    "node_modules/is-docker": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+      "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+      "dev": true,
+      "bin": {
+        "is-docker": "cli.js"
+      },
+      "engines": {
+        "node": ">=8"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/is-wsl": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+      "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+      "dev": true,
+      "dependencies": {
+        "is-docker": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^2.0.1"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/json-stringify-pretty-compact": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz",
+      "integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ==",
+      "dev": true
+    },
+    "node_modules/jsonminify": {
+      "version": "0.4.2",
+      "resolved": "https://registry.npmjs.org/jsonminify/-/jsonminify-0.4.2.tgz",
+      "integrity": "sha512-mEtP5ECD0293D+s45JhDutqF5mFCkWY8ClrPFxjSFR2KUoantofky7noSzyKnAnD9Gd8pXHZSUd5bgzLDUBbfA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.8.0",
+        "npm": ">=1.1.0"
+      }
+    },
+    "node_modules/locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "dev": true,
+      "dependencies": {
+        "p-locate": "^4.1.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/lodash.merge": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+      "dev": true
+    },
+    "node_modules/lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dev": true,
+      "dependencies": {
+        "yallist": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+      "dev": true,
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "dev": true,
+      "dependencies": {
+        "mime-db": "1.52.0"
+      },
+      "engines": {
+        "node": ">= 0.6"
+      }
+    },
+    "node_modules/mimic-response": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+      "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "dependencies": {
+        "brace-expansion": "^1.1.7"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/minimist": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
+      "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
+      "dev": true,
+      "funding": {
+        "url": "https://github.com/sponsors/ljharb"
+      }
+    },
+    "node_modules/mkdirp-classic": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+      "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+      "dev": true
+    },
+    "node_modules/ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "node_modules/napi-build-utils": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
+      "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
+      "dev": true
+    },
+    "node_modules/node-abi": {
+      "version": "3.31.0",
+      "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.31.0.tgz",
+      "integrity": "sha512-eSKV6s+APenqVh8ubJyiu/YhZgxQpGP66ntzUb3lY1xB9ukSRaGnx0AIxI+IM+1+IVYC1oWobgG5L3Lt9ARykQ==",
+      "dev": true,
+      "dependencies": {
+        "semver": "^7.3.5"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/node-addon-api": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz",
+      "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==",
+      "dev": true
+    },
+    "node_modules/node-fetch": {
+      "version": "2.6.7",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+      "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+      "dev": true,
+      "dependencies": {
+        "whatwg-url": "^5.0.0"
+      },
+      "engines": {
+        "node": "4.x || >=6.0.0"
+      },
+      "peerDependencies": {
+        "encoding": "^0.1.0"
+      },
+      "peerDependenciesMeta": {
+        "encoding": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/node-watch": {
+      "version": "0.7.3",
+      "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz",
+      "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dev": true,
+      "dependencies": {
+        "wrappy": "1"
+      }
+    },
+    "node_modules/open": {
+      "version": "8.4.0",
+      "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
+      "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
+      "dev": true,
+      "dependencies": {
+        "define-lazy-prop": "^2.0.0",
+        "is-docker": "^2.1.1",
+        "is-wsl": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=12"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "dev": true,
+      "dependencies": {
+        "p-try": "^2.0.0"
+      },
+      "engines": {
+        "node": ">=6"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "dev": true,
+      "dependencies": {
+        "p-limit": "^2.2.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "dev": true,
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/pend": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+      "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+      "dev": true
+    },
+    "node_modules/pkg-dir": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+      "dev": true,
+      "dependencies": {
+        "find-up": "^4.0.0"
+      },
+      "engines": {
+        "node": ">=8"
+      }
+    },
+    "node_modules/prebuild-install": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
+      "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
+      "dev": true,
+      "dependencies": {
+        "detect-libc": "^2.0.0",
+        "expand-template": "^2.0.3",
+        "github-from-package": "0.0.0",
+        "minimist": "^1.2.3",
+        "mkdirp-classic": "^0.5.3",
+        "napi-build-utils": "^1.0.1",
+        "node-abi": "^3.3.0",
+        "pump": "^3.0.0",
+        "rc": "^1.2.7",
+        "simple-get": "^4.0.0",
+        "tar-fs": "^2.0.0",
+        "tunnel-agent": "^0.6.0"
+      },
+      "bin": {
+        "prebuild-install": "bin.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/progress": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.4.0"
+      }
+    },
+    "node_modules/proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+      "dev": true
+    },
+    "node_modules/pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+      "dev": true,
+      "dependencies": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "node_modules/puppeteer": {
+      "version": "16.1.0",
+      "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-16.1.0.tgz",
+      "integrity": "sha512-lhykJLbH2bbBaP3NfYI2Vj0T4ctrdfVdEVf8glZITPnLfqrJ0nfUzAYuIz5YcA79k5lmFKANIhEXex+jQChU3g==",
+      "dev": true,
+      "hasInstallScript": true,
+      "dependencies": {
+        "cross-fetch": "3.1.5",
+        "debug": "4.3.4",
+        "devtools-protocol": "0.0.1019158",
+        "extract-zip": "2.0.1",
+        "https-proxy-agent": "5.0.1",
+        "pkg-dir": "4.2.0",
+        "progress": "2.0.3",
+        "proxy-from-env": "1.1.0",
+        "rimraf": "3.0.2",
+        "tar-fs": "2.1.1",
+        "unbzip2-stream": "1.4.3",
+        "ws": "8.8.1"
+      },
+      "engines": {
+        "node": ">=14.1.0"
+      }
+    },
+    "node_modules/rc": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+      "dev": true,
+      "dependencies": {
+        "deep-extend": "^0.6.0",
+        "ini": "~1.3.0",
+        "minimist": "^1.2.0",
+        "strip-json-comments": "~2.0.1"
+      },
+      "bin": {
+        "rc": "cli.js"
+      }
+    },
+    "node_modules/readable-stream": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+      "dev": true,
+      "dependencies": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      },
+      "engines": {
+        "node": ">= 6"
+      }
+    },
+    "node_modules/recursive-readdir-sync": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/recursive-readdir-sync/-/recursive-readdir-sync-1.0.6.tgz",
+      "integrity": "sha1-Hb9tMvPFu4083pemxYjVR6nhPVY=",
+      "dev": true
+    },
+    "node_modules/rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "dev": true,
+      "dependencies": {
+        "glob": "^7.1.3"
+      },
+      "bin": {
+        "rimraf": "bin.js"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/isaacs"
+      }
+    },
+    "node_modules/rw": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
+      "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==",
+      "dev": true
+    },
+    "node_modules/safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
+    },
+    "node_modules/semver": {
+      "version": "7.3.8",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+      "dev": true,
+      "dependencies": {
+        "lru-cache": "^6.0.0"
+      },
+      "bin": {
+        "semver": "bin/semver.js"
+      },
+      "engines": {
+        "node": ">=10"
+      }
+    },
+    "node_modules/sharp": {
+      "version": "0.30.7",
+      "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz",
+      "integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==",
+      "dev": true,
+      "hasInstallScript": true,
+      "dependencies": {
+        "color": "^4.2.3",
+        "detect-libc": "^2.0.1",
+        "node-addon-api": "^5.0.0",
+        "prebuild-install": "^7.1.1",
+        "semver": "^7.3.7",
+        "simple-get": "^4.0.1",
+        "tar-fs": "^2.1.1",
+        "tunnel-agent": "^0.6.0"
+      },
+      "engines": {
+        "node": ">=12.13.0"
+      },
+      "funding": {
+        "url": "https://opencollective.com/libvips"
+      }
+    },
+    "node_modules/simple-concat": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
+      "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ]
+    },
+    "node_modules/simple-get": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
+      "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+      "dev": true,
+      "funding": [
+        {
+          "type": "github",
+          "url": "https://github.com/sponsors/feross"
+        },
+        {
+          "type": "patreon",
+          "url": "https://www.patreon.com/feross"
+        },
+        {
+          "type": "consulting",
+          "url": "https://feross.org/support"
+        }
+      ],
+      "dependencies": {
+        "decompress-response": "^6.0.0",
+        "once": "^1.3.1",
+        "simple-concat": "^1.0.0"
+      }
+    },
+    "node_modules/simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+      "dev": true,
+      "dependencies": {
+        "is-arrayish": "^0.3.1"
+      }
+    },
+    "node_modules/sort-asc": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.1.0.tgz",
+      "integrity": "sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sort-desc": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.1.1.tgz",
+      "integrity": "sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sort-object": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-0.3.2.tgz",
+      "integrity": "sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA==",
+      "dev": true,
+      "dependencies": {
+        "sort-asc": "^0.1.0",
+        "sort-desc": "^0.1.1"
+      },
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
+    },
+    "node_modules/string_decoder": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+      "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "~5.2.0"
+      }
+    },
+    "node_modules/strip-json-comments": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+      "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+      "dev": true,
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/tar-fs": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+      "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+      "dev": true,
+      "dependencies": {
+        "chownr": "^1.1.1",
+        "mkdirp-classic": "^0.5.2",
+        "pump": "^3.0.0",
+        "tar-stream": "^2.1.4"
+      }
+    },
+    "node_modules/tar-fs/node_modules/chownr": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+      "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+      "dev": true
+    },
+    "node_modules/tar-stream": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+      "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+      "dev": true,
+      "dependencies": {
+        "bl": "^4.0.3",
+        "end-of-stream": "^1.4.1",
+        "fs-constants": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^3.1.1"
+      },
+      "engines": {
+        "node": ">=6"
+      }
+    },
+    "node_modules/through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+      "dev": true
+    },
+    "node_modules/tr46": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+      "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
+      "dev": true
+    },
+    "node_modules/tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+      "dev": true,
+      "dependencies": {
+        "safe-buffer": "^5.0.1"
+      },
+      "engines": {
+        "node": "*"
+      }
+    },
+    "node_modules/unbzip2-stream": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+      "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+      "dev": true,
+      "dependencies": {
+        "buffer": "^5.2.1",
+        "through": "^2.3.8"
+      }
+    },
+    "node_modules/util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+      "dev": true
+    },
+    "node_modules/webidl-conversions": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+      "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
+      "dev": true
+    },
+    "node_modules/whatwg-url": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+      "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
+      "dev": true,
+      "dependencies": {
+        "tr46": "~0.0.3",
+        "webidl-conversions": "^3.0.0"
+      }
+    },
+    "node_modules/wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+      "dev": true
+    },
+    "node_modules/ws": {
+      "version": "8.8.1",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz",
+      "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==",
+      "dev": true,
+      "engines": {
+        "node": ">=10.0.0"
+      },
+      "peerDependencies": {
+        "bufferutil": "^4.0.1",
+        "utf-8-validate": "^5.0.2"
+      },
+      "peerDependenciesMeta": {
+        "bufferutil": {
+          "optional": true
+        },
+        "utf-8-validate": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true
+    },
+    "node_modules/yaml-include": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/yaml-include/-/yaml-include-1.2.1.tgz",
+      "integrity": "sha512-d2Ayx9GykZwXHRdSlnlOOdcgbGzb8jjC0WPZicsTUjEbvwDMXDbJ8AMwLe8YCMa3BYeZSiUPcUYdUEjnwlUNGw==",
+      "dev": true,
+      "dependencies": {
+        "debug": "^4.1.1",
+        "js-yaml": "^3.13.1",
+        "lodash.merge": "^4.6.2",
+        "recursive-readdir-sync": "^1.0.6"
+      },
+      "engines": {
+        "node": ">=4"
+      }
+    },
+    "node_modules/yaml-include/node_modules/argparse": {
+      "version": "1.0.10",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+      "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+      "dev": true,
+      "dependencies": {
+        "sprintf-js": "~1.0.2"
+      }
+    },
+    "node_modules/yaml-include/node_modules/js-yaml": {
+      "version": "3.14.1",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+      "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+      "dev": true,
+      "dependencies": {
+        "argparse": "^1.0.7",
+        "esprima": "^4.0.0"
+      },
+      "bin": {
+        "js-yaml": "bin/js-yaml.js"
+      }
+    },
+    "node_modules/yauzl": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+      "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+      "dev": true,
+      "dependencies": {
+        "buffer-crc32": "~0.2.3",
+        "fd-slicer": "~1.1.0"
+      }
+    }
+  },
+  "dependencies": {
+    "@mapbox/jsonlint-lines-primitives": {
+      "version": "2.0.2",
+      "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz",
+      "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==",
+      "dev": true
+    },
+    "@mapbox/mapbox-gl-style-spec": {
+      "version": "13.28.0",
+      "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-style-spec/-/mapbox-gl-style-spec-13.28.0.tgz",
+      "integrity": "sha512-B8xM7Fp1nh5kejfIl4SWeY0gtIeewbuRencqO3cJDrCHZpaPg7uY+V8abuR+esMeuOjRl5cLhVTP40v+1ywxbg==",
+      "dev": true,
+      "requires": {
+        "@mapbox/jsonlint-lines-primitives": "~2.0.2",
+        "@mapbox/point-geometry": "^0.1.0",
+        "@mapbox/unitbezier": "^0.0.0",
+        "csscolorparser": "~1.0.2",
+        "json-stringify-pretty-compact": "^2.0.0",
+        "minimist": "^1.2.6",
+        "rw": "^1.3.3",
+        "sort-object": "^0.3.2"
+      }
+    },
+    "@mapbox/point-geometry": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz",
+      "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==",
+      "dev": true
+    },
+    "@mapbox/unitbezier": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz",
+      "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==",
+      "dev": true
+    },
+    "@maplibre/maplibre-gl-style-spec": {
+      "version": "17.0.2",
+      "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-17.0.2.tgz",
+      "integrity": "sha512-iW63wG/ZzeJ2PawkR2g2m4VnFYlUJW22Uu966YhR6K0nDJflDE6QBLanX4wsfZb6adLT6Z106N/apgWKvS2/8g==",
+      "dev": true,
+      "requires": {
+        "@mapbox/jsonlint-lines-primitives": "~2.0.2",
+        "@mapbox/unitbezier": "^0.0.0",
+        "csscolorparser": "~1.0.2",
+        "json-stringify-pretty-compact": "^2.0.0",
+        "minimist": "^1.2.5",
+        "rw": "^1.3.3",
+        "sort-object": "^0.3.2"
+      }
+    },
+    "@types/jsonminify": {
+      "version": "0.4.1",
+      "resolved": "https://registry.npmjs.org/@types/jsonminify/-/jsonminify-0.4.1.tgz",
+      "integrity": "sha512-CkbsT83tCMuFefGh+aXlsunetd66yN62QxtjBfk4lX4zMVBPRlWyHQvZvIPOMUznVA7MXdt6RtqHa9fra1PlCw==",
+      "dev": true
+    },
+    "@types/node": {
+      "version": "18.7.3",
+      "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.3.tgz",
+      "integrity": "sha512-LJgzOEwWuMTBxHzgBR/fhhBOWrvBjvO+zPteUgbbuQi80rYIZHrk1mNbRUqPZqSLP2H7Rwt1EFLL/tNLD1Xx/w==",
+      "dev": true,
+      "optional": true
+    },
+    "@types/yauzl": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.0.tgz",
+      "integrity": "sha512-Cn6WYCm0tXv8p6k+A8PvbDG763EDpBoTzHdA+Q/MF6H3sapGjCm9NzoaJncJS9tUKSuCoDs9XHxYYsQDgxR6kw==",
+      "dev": true,
+      "optional": true,
+      "requires": {
+        "@types/node": "*"
+      }
+    },
+    "@unvt/charites": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/@unvt/charites/-/charites-0.4.0.tgz",
+      "integrity": "sha512-UHXtUvjnjhNHc4jnY/knQJIJOorf1qi08djf6gv9ZOJGeKqOUq7vxzKWHI3PaHSfyuciUBomDn6DovCb/gF89w==",
+      "dev": true,
+      "requires": {
+        "@mapbox/mapbox-gl-style-spec": "^13.27.0",
+        "@maplibre/maplibre-gl-style-spec": "^17.0.2",
+        "@types/jsonminify": "^0.4.1",
+        "@unvt/sprite-one": "^0.0.9",
+        "axios": "^1.2.2",
+        "commander": "^9.4.1",
+        "glob": "^8.0.3",
+        "js-yaml": "^4.0.0",
+        "jsonminify": "^0.4.2",
+        "node-watch": "^0.7.3",
+        "open": "^8.2.1",
+        "ws": "^8.11.0",
+        "yaml-include": "^1.2.1"
+      },
+      "dependencies": {
+        "brace-expansion": {
+          "version": "2.0.1",
+          "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",
+          "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",
+          "dev": true,
+          "requires": {
+            "balanced-match": "^1.0.0"
+          }
+        },
+        "glob": {
+          "version": "8.0.3",
+          "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz",
+          "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==",
+          "dev": true,
+          "requires": {
+            "fs.realpath": "^1.0.0",
+            "inflight": "^1.0.4",
+            "inherits": "2",
+            "minimatch": "^5.0.1",
+            "once": "^1.3.0"
+          }
+        },
+        "minimatch": {
+          "version": "5.1.2",
+          "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.2.tgz",
+          "integrity": "sha512-bNH9mmM9qsJ2X4r2Nat1B//1dJVcn3+iBLa3IgqJ7EbGaDNepL9QSHOxN4ng33s52VMMhhIfgCYDk3C4ZmlDAg==",
+          "dev": true,
+          "requires": {
+            "brace-expansion": "^2.0.1"
+          }
+        },
+        "ws": {
+          "version": "8.12.0",
+          "resolved": "https://registry.npmjs.org/ws/-/ws-8.12.0.tgz",
+          "integrity": "sha512-kU62emKIdKVeEIOIKVegvqpXMSTAMLJozpHZaJNDYqBjzlSYXQGviYwN1osDLJ9av68qHd4a2oSjd7yD4pacig==",
+          "dev": true,
+          "requires": {}
+        }
+      }
+    },
+    "@unvt/sprite-one": {
+      "version": "0.0.9",
+      "resolved": "https://registry.npmjs.org/@unvt/sprite-one/-/sprite-one-0.0.9.tgz",
+      "integrity": "sha512-zUqEbA9bRmSPxLbNxs8+3LBqhwapgzd2x74QT4QrCs2lwiQpfPF4cfxozUrBZ5AgzHaLdq3oismNzfg8pNtjew==",
+      "dev": true,
+      "requires": {
+        "bin-pack": "^1.0.2",
+        "commander": "^9.4.0",
+        "sharp": "^0.30.7"
+      }
+    },
+    "agent-base": {
+      "version": "6.0.2",
+      "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz",
+      "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==",
+      "dev": true,
+      "requires": {
+        "debug": "4"
+      }
+    },
+    "argparse": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
+      "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
+      "dev": true
+    },
+    "asynckit": {
+      "version": "0.4.0",
+      "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
+      "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
+      "dev": true
+    },
+    "axios": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz",
+      "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==",
+      "dev": true,
+      "requires": {
+        "follow-redirects": "^1.15.0",
+        "form-data": "^4.0.0",
+        "proxy-from-env": "^1.1.0"
+      }
+    },
+    "balanced-match": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
+      "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
+      "dev": true
+    },
+    "base64-js": {
+      "version": "1.5.1",
+      "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
+      "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==",
+      "dev": true
+    },
+    "bin-pack": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/bin-pack/-/bin-pack-1.0.2.tgz",
+      "integrity": "sha512-aOk0SxEon5LF9cMxQFViSKb4qccG6rs7XKyMXIb1J8f8LA2acTIWnHdT0IOTe4gYBbqgjdbuTZ5f+UP+vlh4Mw==",
+      "dev": true
+    },
+    "bl": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
+      "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
+      "dev": true,
+      "requires": {
+        "buffer": "^5.5.0",
+        "inherits": "^2.0.4",
+        "readable-stream": "^3.4.0"
+      }
+    },
+    "brace-expansion": {
+      "version": "1.1.11",
+      "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
+      "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
+      "dev": true,
+      "requires": {
+        "balanced-match": "^1.0.0",
+        "concat-map": "0.0.1"
+      }
+    },
+    "buffer": {
+      "version": "5.7.1",
+      "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
+      "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==",
+      "dev": true,
+      "requires": {
+        "base64-js": "^1.3.1",
+        "ieee754": "^1.1.13"
+      }
+    },
+    "buffer-crc32": {
+      "version": "0.2.13",
+      "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz",
+      "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==",
+      "dev": true
+    },
+    "color": {
+      "version": "4.2.3",
+      "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz",
+      "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==",
+      "dev": true,
+      "requires": {
+        "color-convert": "^2.0.1",
+        "color-string": "^1.9.0"
+      }
+    },
+    "color-convert": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",
+      "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",
+      "dev": true,
+      "requires": {
+        "color-name": "~1.1.4"
+      }
+    },
+    "color-name": {
+      "version": "1.1.4",
+      "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",
+      "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",
+      "dev": true
+    },
+    "color-string": {
+      "version": "1.9.1",
+      "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
+      "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
+      "dev": true,
+      "requires": {
+        "color-name": "^1.0.0",
+        "simple-swizzle": "^0.2.2"
+      }
+    },
+    "combined-stream": {
+      "version": "1.0.8",
+      "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
+      "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
+      "dev": true,
+      "requires": {
+        "delayed-stream": "~1.0.0"
+      }
+    },
+    "commander": {
+      "version": "9.5.0",
+      "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz",
+      "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==",
+      "dev": true
+    },
+    "concat-map": {
+      "version": "0.0.1",
+      "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
+      "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=",
+      "dev": true
+    },
+    "cross-fetch": {
+      "version": "3.1.5",
+      "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.5.tgz",
+      "integrity": "sha512-lvb1SBsI0Z7GDwmuid+mU3kWVBwTVUbe7S0H52yaaAdQOXq2YktTCZdlAcNKFzE6QtRz0snpw9bNiPeOIkkQvw==",
+      "dev": true,
+      "requires": {
+        "node-fetch": "2.6.7"
+      }
+    },
+    "csscolorparser": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz",
+      "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==",
+      "dev": true
+    },
+    "debug": {
+      "version": "4.3.4",
+      "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
+      "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
+      "dev": true,
+      "requires": {
+        "ms": "2.1.2"
+      }
+    },
+    "decompress-response": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz",
+      "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==",
+      "dev": true,
+      "requires": {
+        "mimic-response": "^3.1.0"
+      }
+    },
+    "deep-extend": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
+      "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==",
+      "dev": true
+    },
+    "define-lazy-prop": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz",
+      "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==",
+      "dev": true
+    },
+    "delayed-stream": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
+      "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
+      "dev": true
+    },
+    "detect-libc": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.1.tgz",
+      "integrity": "sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==",
+      "dev": true
+    },
+    "devtools-protocol": {
+      "version": "0.0.1019158",
+      "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1019158.tgz",
+      "integrity": "sha512-wvq+KscQ7/6spEV7czhnZc9RM/woz1AY+/Vpd8/h2HFMwJSdTliu7f/yr1A6vDdJfKICZsShqsYpEQbdhg8AFQ==",
+      "dev": true
+    },
+    "end-of-stream": {
+      "version": "1.4.4",
+      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz",
+      "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==",
+      "dev": true,
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
+    "esprima": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz",
+      "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==",
+      "dev": true
+    },
+    "expand-template": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz",
+      "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==",
+      "dev": true
+    },
+    "extract-zip": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz",
+      "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==",
+      "dev": true,
+      "requires": {
+        "@types/yauzl": "^2.9.1",
+        "debug": "^4.1.1",
+        "get-stream": "^5.1.0",
+        "yauzl": "^2.10.0"
+      }
+    },
+    "fd-slicer": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz",
+      "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==",
+      "dev": true,
+      "requires": {
+        "pend": "~1.2.0"
+      }
+    },
+    "find-up": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz",
+      "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==",
+      "dev": true,
+      "requires": {
+        "locate-path": "^5.0.0",
+        "path-exists": "^4.0.0"
+      }
+    },
+    "follow-redirects": {
+      "version": "1.15.2",
+      "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
+      "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
+      "dev": true
+    },
+    "form-data": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
+      "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
+      "dev": true,
+      "requires": {
+        "asynckit": "^0.4.0",
+        "combined-stream": "^1.0.8",
+        "mime-types": "^2.1.12"
+      }
+    },
+    "fs-constants": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+      "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==",
+      "dev": true
+    },
+    "fs.realpath": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
+      "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
+      "dev": true
+    },
+    "get-stream": {
+      "version": "5.2.0",
+      "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz",
+      "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==",
+      "dev": true,
+      "requires": {
+        "pump": "^3.0.0"
+      }
+    },
+    "github-from-package": {
+      "version": "0.0.0",
+      "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz",
+      "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==",
+      "dev": true
+    },
+    "glob": {
+      "version": "7.2.3",
+      "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz",
+      "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==",
+      "dev": true,
+      "requires": {
+        "fs.realpath": "^1.0.0",
+        "inflight": "^1.0.4",
+        "inherits": "2",
+        "minimatch": "^3.1.1",
+        "once": "^1.3.0",
+        "path-is-absolute": "^1.0.0"
+      }
+    },
+    "http-close": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/http-close/-/http-close-1.0.0.tgz",
+      "integrity": "sha512-lqMabfHDuVOlz4nd3uJCfClyFs/CRCwT2abwBcGTXjdfiX5vJdt7UIolFPqORBPoRZJItliNsXJKPd9+YFAR4A==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.1"
+      }
+    },
+    "https-proxy-agent": {
+      "version": "5.0.1",
+      "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz",
+      "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==",
+      "dev": true,
+      "requires": {
+        "agent-base": "6",
+        "debug": "4"
+      }
+    },
+    "ieee754": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz",
+      "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==",
+      "dev": true
+    },
+    "inflight": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
+      "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
+      "dev": true,
+      "requires": {
+        "once": "^1.3.0",
+        "wrappy": "1"
+      }
+    },
+    "inherits": {
+      "version": "2.0.4",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
+      "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
+      "dev": true
+    },
+    "ini": {
+      "version": "1.3.8",
+      "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
+      "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==",
+      "dev": true
+    },
+    "is-arrayish": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
+      "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
+      "dev": true
+    },
+    "is-docker": {
+      "version": "2.2.1",
+      "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz",
+      "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==",
+      "dev": true
+    },
+    "is-wsl": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz",
+      "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==",
+      "dev": true,
+      "requires": {
+        "is-docker": "^2.0.0"
+      }
+    },
+    "js-yaml": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
+      "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
+      "dev": true,
+      "requires": {
+        "argparse": "^2.0.1"
+      }
+    },
+    "json-stringify-pretty-compact": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-2.0.0.tgz",
+      "integrity": "sha512-WRitRfs6BGq4q8gTgOy4ek7iPFXjbra0H3PmDLKm2xnZ+Gh1HUhiKGgCZkSPNULlP7mvfu6FV/mOLhCarspADQ==",
+      "dev": true
+    },
+    "jsonminify": {
+      "version": "0.4.2",
+      "resolved": "https://registry.npmjs.org/jsonminify/-/jsonminify-0.4.2.tgz",
+      "integrity": "sha512-mEtP5ECD0293D+s45JhDutqF5mFCkWY8ClrPFxjSFR2KUoantofky7noSzyKnAnD9Gd8pXHZSUd5bgzLDUBbfA==",
+      "dev": true
+    },
+    "locate-path": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz",
+      "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==",
+      "dev": true,
+      "requires": {
+        "p-locate": "^4.1.0"
+      }
+    },
+    "lodash.merge": {
+      "version": "4.6.2",
+      "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz",
+      "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==",
+      "dev": true
+    },
+    "lru-cache": {
+      "version": "6.0.0",
+      "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
+      "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
+      "dev": true,
+      "requires": {
+        "yallist": "^4.0.0"
+      }
+    },
+    "mime-db": {
+      "version": "1.52.0",
+      "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
+      "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
+      "dev": true
+    },
+    "mime-types": {
+      "version": "2.1.35",
+      "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
+      "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
+      "dev": true,
+      "requires": {
+        "mime-db": "1.52.0"
+      }
+    },
+    "mimic-response": {
+      "version": "3.1.0",
+      "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz",
+      "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==",
+      "dev": true
+    },
+    "minimatch": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+      "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
+      "dev": true,
+      "requires": {
+        "brace-expansion": "^1.1.7"
+      }
+    },
+    "minimist": {
+      "version": "1.2.7",
+      "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz",
+      "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==",
+      "dev": true
+    },
+    "mkdirp-classic": {
+      "version": "0.5.3",
+      "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz",
+      "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==",
+      "dev": true
+    },
+    "ms": {
+      "version": "2.1.2",
+      "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
+      "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
+      "dev": true
+    },
+    "napi-build-utils": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz",
+      "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==",
+      "dev": true
+    },
+    "node-abi": {
+      "version": "3.31.0",
+      "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.31.0.tgz",
+      "integrity": "sha512-eSKV6s+APenqVh8ubJyiu/YhZgxQpGP66ntzUb3lY1xB9ukSRaGnx0AIxI+IM+1+IVYC1oWobgG5L3Lt9ARykQ==",
+      "dev": true,
+      "requires": {
+        "semver": "^7.3.5"
+      }
+    },
+    "node-addon-api": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.0.0.tgz",
+      "integrity": "sha512-CvkDw2OEnme7ybCykJpVcKH+uAOLV2qLqiyla128dN9TkEWfrYmxG6C2boDe5KcNQqZF3orkqzGgOMvZ/JNekA==",
+      "dev": true
+    },
+    "node-fetch": {
+      "version": "2.6.7",
+      "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.7.tgz",
+      "integrity": "sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==",
+      "dev": true,
+      "requires": {
+        "whatwg-url": "^5.0.0"
+      }
+    },
+    "node-watch": {
+      "version": "0.7.3",
+      "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz",
+      "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==",
+      "dev": true
+    },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "dev": true,
+      "requires": {
+        "wrappy": "1"
+      }
+    },
+    "open": {
+      "version": "8.4.0",
+      "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz",
+      "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==",
+      "dev": true,
+      "requires": {
+        "define-lazy-prop": "^2.0.0",
+        "is-docker": "^2.1.1",
+        "is-wsl": "^2.2.0"
+      }
+    },
+    "p-limit": {
+      "version": "2.3.0",
+      "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz",
+      "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==",
+      "dev": true,
+      "requires": {
+        "p-try": "^2.0.0"
+      }
+    },
+    "p-locate": {
+      "version": "4.1.0",
+      "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz",
+      "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==",
+      "dev": true,
+      "requires": {
+        "p-limit": "^2.2.0"
+      }
+    },
+    "p-try": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz",
+      "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==",
+      "dev": true
+    },
+    "path-exists": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz",
+      "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==",
+      "dev": true
+    },
+    "path-is-absolute": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
+      "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=",
+      "dev": true
+    },
+    "pend": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz",
+      "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==",
+      "dev": true
+    },
+    "pkg-dir": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz",
+      "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==",
+      "dev": true,
+      "requires": {
+        "find-up": "^4.0.0"
+      }
+    },
+    "prebuild-install": {
+      "version": "7.1.1",
+      "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz",
+      "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==",
+      "dev": true,
+      "requires": {
+        "detect-libc": "^2.0.0",
+        "expand-template": "^2.0.3",
+        "github-from-package": "0.0.0",
+        "minimist": "^1.2.3",
+        "mkdirp-classic": "^0.5.3",
+        "napi-build-utils": "^1.0.1",
+        "node-abi": "^3.3.0",
+        "pump": "^3.0.0",
+        "rc": "^1.2.7",
+        "simple-get": "^4.0.0",
+        "tar-fs": "^2.0.0",
+        "tunnel-agent": "^0.6.0"
+      }
+    },
+    "progress": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz",
+      "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==",
+      "dev": true
+    },
+    "proxy-from-env": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
+      "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
+      "dev": true
+    },
+    "pump": {
+      "version": "3.0.0",
+      "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
+      "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==",
+      "dev": true,
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
+    "puppeteer": {
+      "version": "16.1.0",
+      "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-16.1.0.tgz",
+      "integrity": "sha512-lhykJLbH2bbBaP3NfYI2Vj0T4ctrdfVdEVf8glZITPnLfqrJ0nfUzAYuIz5YcA79k5lmFKANIhEXex+jQChU3g==",
+      "dev": true,
+      "requires": {
+        "cross-fetch": "3.1.5",
+        "debug": "4.3.4",
+        "devtools-protocol": "0.0.1019158",
+        "extract-zip": "2.0.1",
+        "https-proxy-agent": "5.0.1",
+        "pkg-dir": "4.2.0",
+        "progress": "2.0.3",
+        "proxy-from-env": "1.1.0",
+        "rimraf": "3.0.2",
+        "tar-fs": "2.1.1",
+        "unbzip2-stream": "1.4.3",
+        "ws": "8.8.1"
+      }
+    },
+    "rc": {
+      "version": "1.2.8",
+      "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
+      "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
+      "dev": true,
+      "requires": {
+        "deep-extend": "^0.6.0",
+        "ini": "~1.3.0",
+        "minimist": "^1.2.0",
+        "strip-json-comments": "~2.0.1"
+      }
+    },
+    "readable-stream": {
+      "version": "3.6.0",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz",
+      "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==",
+      "dev": true,
+      "requires": {
+        "inherits": "^2.0.3",
+        "string_decoder": "^1.1.1",
+        "util-deprecate": "^1.0.1"
+      }
+    },
+    "recursive-readdir-sync": {
+      "version": "1.0.6",
+      "resolved": "https://registry.npmjs.org/recursive-readdir-sync/-/recursive-readdir-sync-1.0.6.tgz",
+      "integrity": "sha1-Hb9tMvPFu4083pemxYjVR6nhPVY=",
+      "dev": true
+    },
+    "rimraf": {
+      "version": "3.0.2",
+      "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
+      "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==",
+      "dev": true,
+      "requires": {
+        "glob": "^7.1.3"
+      }
+    },
+    "rw": {
+      "version": "1.3.3",
+      "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz",
+      "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==",
+      "dev": true
+    },
+    "safe-buffer": {
+      "version": "5.2.1",
+      "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
+      "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
+      "dev": true
+    },
+    "semver": {
+      "version": "7.3.8",
+      "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz",
+      "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==",
+      "dev": true,
+      "requires": {
+        "lru-cache": "^6.0.0"
+      }
+    },
+    "sharp": {
+      "version": "0.30.7",
+      "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz",
+      "integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==",
+      "dev": true,
+      "requires": {
+        "color": "^4.2.3",
+        "detect-libc": "^2.0.1",
+        "node-addon-api": "^5.0.0",
+        "prebuild-install": "^7.1.1",
+        "semver": "^7.3.7",
+        "simple-get": "^4.0.1",
+        "tar-fs": "^2.1.1",
+        "tunnel-agent": "^0.6.0"
+      }
+    },
+    "simple-concat": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz",
+      "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==",
+      "dev": true
+    },
+    "simple-get": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz",
+      "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==",
+      "dev": true,
+      "requires": {
+        "decompress-response": "^6.0.0",
+        "once": "^1.3.1",
+        "simple-concat": "^1.0.0"
+      }
+    },
+    "simple-swizzle": {
+      "version": "0.2.2",
+      "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
+      "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
+      "dev": true,
+      "requires": {
+        "is-arrayish": "^0.3.1"
+      }
+    },
+    "sort-asc": {
+      "version": "0.1.0",
+      "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.1.0.tgz",
+      "integrity": "sha512-jBgdDd+rQ+HkZF2/OHCmace5dvpos/aWQpcxuyRs9QUbPRnkEJmYVo81PIGpjIdpOcsnJ4rGjStfDHsbn+UVyw==",
+      "dev": true
+    },
+    "sort-desc": {
+      "version": "0.1.1",
+      "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.1.1.tgz",
+      "integrity": "sha512-jfZacW5SKOP97BF5rX5kQfJmRVZP5/adDUTY8fCSPvNcXDVpUEe2pr/iKGlcyZzchRJZrswnp68fgk3qBXgkJw==",
+      "dev": true
+    },
+    "sort-object": {
+      "version": "0.3.2",
+      "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-0.3.2.tgz",
+      "integrity": "sha512-aAQiEdqFTTdsvUFxXm3umdo04J7MRljoVGbBlkH7BgNsMvVNAJyGj7C/wV1A8wHWAJj/YikeZbfuCKqhggNWGA==",
+      "dev": true,
+      "requires": {
+        "sort-asc": "^0.1.0",
+        "sort-desc": "^0.1.1"
+      }
+    },
+    "sprintf-js": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz",
+      "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=",
+      "dev": true
+    },
+    "string_decoder": {
+      "version": "1.3.0",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
+      "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "~5.2.0"
+      }
+    },
+    "strip-json-comments": {
+      "version": "2.0.1",
+      "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
+      "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==",
+      "dev": true
+    },
+    "tar-fs": {
+      "version": "2.1.1",
+      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz",
+      "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==",
+      "dev": true,
+      "requires": {
+        "chownr": "^1.1.1",
+        "mkdirp-classic": "^0.5.2",
+        "pump": "^3.0.0",
+        "tar-stream": "^2.1.4"
+      },
+      "dependencies": {
+        "chownr": {
+          "version": "1.1.4",
+          "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
+          "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==",
+          "dev": true
+        }
+      }
+    },
+    "tar-stream": {
+      "version": "2.2.0",
+      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
+      "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
+      "dev": true,
+      "requires": {
+        "bl": "^4.0.3",
+        "end-of-stream": "^1.4.1",
+        "fs-constants": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^3.1.1"
+      }
+    },
+    "through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+      "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==",
+      "dev": true
+    },
+    "tr46": {
+      "version": "0.0.3",
+      "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz",
+      "integrity": "sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o=",
+      "dev": true
+    },
+    "tunnel-agent": {
+      "version": "0.6.0",
+      "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
+      "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==",
+      "dev": true,
+      "requires": {
+        "safe-buffer": "^5.0.1"
+      }
+    },
+    "unbzip2-stream": {
+      "version": "1.4.3",
+      "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz",
+      "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==",
+      "dev": true,
+      "requires": {
+        "buffer": "^5.2.1",
+        "through": "^2.3.8"
+      }
+    },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=",
+      "dev": true
+    },
+    "webidl-conversions": {
+      "version": "3.0.1",
+      "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz",
+      "integrity": "sha1-JFNCdeKnvGvnvIZhHMFq4KVlSHE=",
+      "dev": true
+    },
+    "whatwg-url": {
+      "version": "5.0.0",
+      "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz",
+      "integrity": "sha1-lmRU6HZUYuN2RNNib2dCzotwll0=",
+      "dev": true,
+      "requires": {
+        "tr46": "~0.0.3",
+        "webidl-conversions": "^3.0.0"
+      }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=",
+      "dev": true
+    },
+    "ws": {
+      "version": "8.8.1",
+      "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz",
+      "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==",
+      "dev": true,
+      "requires": {}
+    },
+    "yallist": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
+      "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
+      "dev": true
+    },
+    "yaml-include": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/yaml-include/-/yaml-include-1.2.1.tgz",
+      "integrity": "sha512-d2Ayx9GykZwXHRdSlnlOOdcgbGzb8jjC0WPZicsTUjEbvwDMXDbJ8AMwLe8YCMa3BYeZSiUPcUYdUEjnwlUNGw==",
+      "dev": true,
+      "requires": {
+        "debug": "^4.1.1",
+        "js-yaml": "^3.13.1",
+        "lodash.merge": "^4.6.2",
+        "recursive-readdir-sync": "^1.0.6"
+      },
+      "dependencies": {
+        "argparse": {
+          "version": "1.0.10",
+          "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz",
+          "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==",
+          "dev": true,
+          "requires": {
+            "sprintf-js": "~1.0.2"
+          }
+        },
+        "js-yaml": {
+          "version": "3.14.1",
+          "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz",
+          "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==",
+          "dev": true,
+          "requires": {
+            "argparse": "^1.0.7",
+            "esprima": "^4.0.0"
+          }
+        }
+      }
+    },
+    "yauzl": {
+      "version": "2.10.0",
+      "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz",
+      "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==",
+      "dev": true,
+      "requires": {
+        "buffer-crc32": "~0.2.3",
+        "fd-slicer": "~1.1.0"
+      }
+    }
+  }
+}
diff --git a/package.json b/package.json
new file mode 100644
index 0000000..c2d4b0e
--- /dev/null
+++ b/package.json
@@ -0,0 +1,29 @@
+{
+  "name": "geolonia-gsi",
+  "version": "0.1.0",
+  "description": "3D style based on default style for [Geolonia](https://geolonia.com/).",
+  "main": "style.json",
+  "scripts": {
+    "start": "charites serve style.yml --provider geolonia",
+    "build": "charites build style.yml ./docs/style.json --sprite-input ./icons --sprite-output ./docs"
+  },
+  "repository": {
+    "type": "git",
+    "url": "git+https://github.com/geoloniamaps/gsi.git"
+  },
+  "author": {
+    "name": "Geolonia Inc.",
+    "url": "https://geolonia.com/"
+  },
+  "license": "MIT",
+  "bugs": {
+    "url": "https://github.com/geoloniamaps/gsi/issues"
+  },
+  "homepage": "https://github.com/geoloniamaps/gsi#readme",
+  "devDependencies": {
+    "@unvt/charites": "^0.4.0",
+    "http-close": "^1.0.0",
+    "node-fetch": "^2.6.7",
+    "puppeteer": "^16.1.0"
+  }
+}
diff --git a/style.yml b/style.yml
new file mode 100644
index 0000000..7a6e313
--- /dev/null
+++ b/style.yml
@@ -0,0 +1,167 @@
+version: 8
+name: GSI Japan + OpenStreetMap based style for Geolonia
+sources:
+  oceanus:
+    type: vector
+    url: https://tileserver.geolonia.com/oceanus/tiles.json?key=YOUR-API-KEY
+  gsi-japan:
+    type: vector
+    url: https://tileserver.geolonia.com/gsi_experimental_bvmap/tiles.json?key=YOUR-API-KEY
+    minzoom: 5
+  geolonia-water:
+    type: vector
+    url: https://tileserver.geolonia.com/water/tiles.json?key=YOUR-API-KEY
+  geolonia-gsi-custom:
+    type: vector
+    url: https://tileserver.geolonia.com/gsi-extra-v2/tiles.json?key=YOUR-API-KEY
+  dem:
+    type: raster-dem
+    url: https://tileserver.geolonia.com/gsi-dem/tiles.json?key=YOUR-API-KEY
+    attribution: © GSI Japan
+sprite: https://geoloniamaps.github.io/gsi/gsi
+glyphs: https://glyphs.geolonia.com/{fontstack}/{range}.pbf
+layers:
+  - !!inc/file layers/background.yml
+  - !!inc/file layers/landcover-grass.yml
+  - !!inc/file layers/landcover-wood-blur.yml
+  - !!inc/file layers/landcover-wood.yml
+  - !!inc/file layers/landcover-grass-park.yml
+  - !!inc/file layers/geolonia-water-ocean.yml
+  - !!inc/file layers/water-blur.yml
+  - !!inc/file layers/water-blur-gsi.yml
+  - !!inc/file layers/water-gsi.yml
+  - !!inc/file layers/water.yml
+  - !!inc/file layers/oc-ocean.yml
+  - !!inc/file layers/oc-glacier.yml
+  - !!inc/file layers/oc-landuse-commercial-ja.yml
+  - !!inc/file layers/oc-landuse-commercial.yml
+  - !!inc/file layers/oc-forest.yml
+  - !!inc/file layers/hillshading.yml
+  - !!inc/file layers/oc-waterway-river-ja.yml
+  - !!inc/file layers/oc-waterway-river.yml
+  - !!inc/file layers/oc-waterway-name-ja.yml
+  - !!inc/file layers/oc-waterway-name.yml
+  - !!inc/file layers/oc-lake-blur.yml
+  - !!inc/file layers/oc-lake-ja.yml
+  - !!inc/file layers/oc-lake.yml
+  - !!inc/file layers/oc-boundary-land-level-1-ja.yml
+  - !!inc/file layers/oc-boundary-land-level-1.yml
+  - !!inc/file layers/oc-boundary-land-level-0.yml
+  - !!inc/file layers/oc-water-name-ocean.yml
+  - !!inc/file layers/oc-water-name-other.yml
+  - !!inc/file layers/oc-motorway.yml
+  - !!inc/file layers/nt-water-name-ocean.yml
+  - !!inc/file layers/nt-water-name-river.yml
+  - !!inc/file layers/landuse-commercial.yml
+  - !!inc/file layers/landuse-industrial.yml
+  - !!inc/file layers/park.yml
+  - !!inc/file layers/landuse-cemetery.yml
+  - !!inc/file layers/landuse-hospital.yml
+  - !!inc/file layers/landuse-school.yml
+  - !!inc/file layers/landuse-railway.yml
+  - !!inc/file layers/waterway_tunnel.yml
+  - !!inc/file layers/waterway-other.yml
+  - !!inc/file layers/waterway-stream-canal.yml
+  - !!inc/file layers/waterway-name.yml
+  - !!inc/file layers/water-name-lakeline.yml
+  - !!inc/file layers/water-name-ocean.yml
+  - !!inc/file layers/water-name-other.yml
+
+  # Shadow effects
+  - !!inc/file layers/highway-minor-bridge-casing-blur.yml
+  - !!inc/file layers/highway-secondary-bridge-casing-blur.yml
+  - !!inc/file layers/highway-primary-bridge-casing-blur.yml
+  - !!inc/file layers/highway-motorway-bridge-casing-blur.yml
+
+  # Road casings
+  - !!inc/file layers/highway-motorway-casing.yml
+
+  # Roads
+  - !!inc/file layers/highway-minor.yml
+  - !!inc/file layers/highway-secondary.yml
+  - !!inc/file layers/highway-primary.yml
+  - !!inc/file layers/road-outline.yml
+  - !!inc/file layers/highway-motorway.yml
+
+  # Buildings
+  - !!inc/file layers/building.yml
+  - !!inc/file layers/building-nowall.yml
+  - !!inc/file layers/structurea-casing.yml
+  - !!inc/file layers/structurea.yml
+
+  # Tunnels
+  - !!inc/file layers/highway-secondary-tunnel-casing.yml
+  - !!inc/file layers/highway-secondary-tunnel.yml
+  - !!inc/file layers/highway-primary-tunnel-casing.yml
+  - !!inc/file layers/highway-primary-tunnel.yml
+  - !!inc/file layers/highway-motorway-tunnel-casing.yml
+  - !!inc/file layers/highway-motorway-tunnel.yml
+
+  # Bridges
+  - !!inc/file layers/highway-minor-bridge-casing.yml
+  - !!inc/file layers/highway-minor-bridge.yml
+  - !!inc/file layers/highway-secondary-bridge-casing.yml
+  - !!inc/file layers/highway-secondary-bridge.yml
+  - !!inc/file layers/highway-primary-bridge-casing.yml
+  - !!inc/file layers/highway-primary-bridge.yml
+  - !!inc/file layers/highway-motorway-bridge-casing.yml
+  - !!inc/file layers/highway-motorway-bridge.yml
+
+  # Railways
+  - !!inc/file layers/railway-subway.yml
+  - !!inc/file layers/railway-tunnel.yml
+  - !!inc/file layers/railway-minor.yml
+  - !!inc/file layers/railway-minor-hatching.yml
+  - !!inc/file layers/railway-secondary.yml
+  - !!inc/file layers/railway-secondary-hatching.yml
+  - !!inc/file layers/railway-jr.yml
+  - !!inc/file layers/railway-jr-hatching.yml
+  - !!inc/file layers/railway-jr-bridge.yml
+  - !!inc/file layers/railway-secondary-bridge.yml
+  - !!inc/file layers/railway-secondary-bridge-hatching.yml
+  - !!inc/file layers/railway-jr-bridge-hatching.yml
+
+  - !!inc/file layers/railway-jr-high-speed.yml
+  - !!inc/file layers/railway-jr-high-speed-hatching.yml
+
+  - !!inc/file layers/boundary-sea.yml
+  - !!inc/file layers/boundary.yml
+  - !!inc/file layers/building-3d.yml
+  - !!inc/file layers/structurea-3d.yml
+  - !!inc/file layers/poi.yml
+  - !!inc/file layers/oc-label-town.yml
+  - !!inc/file layers/oc-label-town-ja.yml
+  - !!inc/file layers/oc-label-pref.yml
+  - !!inc/file layers/oc-label-pref-ja.yml
+  - !!inc/file layers/oc-label-pref-capital-ja.yml
+  - !!inc/file layers/oc-label-pref-capital-popular-ja.yml
+  - !!inc/file layers/oc-label-country.yml
+  - !!inc/file layers/poi-z16.yml
+  - !!inc/file layers/poi-z16-primary.yml
+  - !!inc/file layers/poi-z15.yml
+  - !!inc/file layers/poi-z14.yml
+  - !!inc/file layers/poi-z13.yml
+  - !!inc/file layers/poi-worship.yml
+  - !!inc/file layers/poi-worship-primary.yml
+  - !!inc/file layers/poi-park.yml
+  - !!inc/file layers/poi-park-primary.yml
+  - !!inc/file layers/poi-railway.yml
+  - !!inc/file layers/poi-airport-primary.yml
+  - !!inc/file layers/poi-mountain.yml
+  - !!inc/file layers/road_shield_national.yml
+  - !!inc/file layers/road_shield_highway.yml
+  - !!inc/file layers/railway-label.yml
+  - !!inc/file layers/airport-label-major.yml
+  - !!inc/file layers/place-village.yml
+  - !!inc/file layers/place-town.yml
+  - !!inc/file layers/place-island-name.yml
+  - !!inc/file layers/place-city-rank10.yml
+  - !!inc/file layers/place-city-rank9.yml
+  - !!inc/file layers/place-city-rank8.yml
+  - !!inc/file layers/place-city-rank7.yml
+  - !!inc/file layers/place-city-rank6.yml
+  - !!inc/file layers/place-city-rank5.yml
+  - !!inc/file layers/place-city-rank4.yml
+  - !!inc/file layers/place-city-rank3.yml
+  - !!inc/file layers/place-city-rank2.yml
+  - !!inc/file layers/place-city-capital.yml