From ce39ea00563c7051d2bfcab1b8992d448ca4eefb Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Sat, 28 Oct 2023 15:18:34 +0000 Subject: [PATCH] Website updates --- .../apidoc/module-ol_source_StadiaMaps-StadiaMaps.html | 4 ++-- dist/en/main/apidoc/module-ol_source_StadiaMaps.html | 4 ++-- dist/en/main/examples/common.js.map | 2 +- dist/en/main/ol/dist/ol.js.map | 2 +- dist/en/main/ol/source/StadiaMaps.d.ts | 8 ++++---- dist/en/main/ol/source/StadiaMaps.d.ts.map | 2 +- dist/en/main/ol/source/StadiaMaps.js | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) diff --git a/dist/en/main/apidoc/module-ol_source_StadiaMaps-StadiaMaps.html b/dist/en/main/apidoc/module-ol_source_StadiaMaps-StadiaMaps.html index 40decd7e88..24e08228cb 100644 --- a/dist/en/main/apidoc/module-ol_source_StadiaMaps-StadiaMaps.html +++ b/dist/en/main/apidoc/module-ol_source_StadiaMaps-StadiaMaps.html @@ -515,7 +515,7 @@

string - + | undefined @@ -540,7 +540,7 @@

boolean - + | undefined diff --git a/dist/en/main/apidoc/module-ol_source_StadiaMaps.html b/dist/en/main/apidoc/module-ol_source_StadiaMaps.html index a899c842fe..127e80cc10 100644 --- a/dist/en/main/apidoc/module-ol_source_StadiaMaps.html +++ b/dist/en/main/apidoc/module-ol_source_StadiaMaps.html @@ -485,7 +485,7 @@

Properties:
string - + | undefined @@ -508,7 +508,7 @@
Properties:
boolean - + | undefined diff --git a/dist/en/main/examples/common.js.map b/dist/en/main/examples/common.js.map index 875c2d9415..850474bd04 100644 --- a/dist/en/main/examples/common.js.map +++ b/dist/en/main/examples/common.js.map @@ -1 +1 @@ -{"version":3,"file":"common.js","mappings":"gBAAIA,ECAAC,E,kCCEJC,EAAOC,QAAU,CAChB,UAAa,CAAC,IAAK,IAAK,KACxB,aAAgB,CAAC,IAAK,IAAK,KAC3B,KAAQ,CAAC,EAAG,IAAK,KACjB,WAAc,CAAC,IAAK,IAAK,KACzB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,OAAU,CAAC,IAAK,IAAK,KACrB,MAAS,CAAC,EAAG,EAAG,GAChB,eAAkB,CAAC,IAAK,IAAK,KAC7B,KAAQ,CAAC,EAAG,EAAG,KACf,WAAc,CAAC,IAAK,GAAI,KACxB,MAAS,CAAC,IAAK,GAAI,IACnB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,WAAc,CAAC,IAAK,IAAK,GACzB,UAAa,CAAC,IAAK,IAAK,IACxB,MAAS,CAAC,IAAK,IAAK,IACpB,eAAkB,CAAC,IAAK,IAAK,KAC7B,SAAY,CAAC,IAAK,IAAK,KACvB,QAAW,CAAC,IAAK,GAAI,IACrB,KAAQ,CAAC,EAAG,IAAK,KACjB,SAAY,CAAC,EAAG,EAAG,KACnB,SAAY,CAAC,EAAG,IAAK,KACrB,cAAiB,CAAC,IAAK,IAAK,IAC5B,SAAY,CAAC,IAAK,IAAK,KACvB,UAAa,CAAC,EAAG,IAAK,GACtB,SAAY,CAAC,IAAK,IAAK,KACvB,UAAa,CAAC,IAAK,IAAK,KACxB,YAAe,CAAC,IAAK,EAAG,KACxB,eAAkB,CAAC,GAAI,IAAK,IAC5B,WAAc,CAAC,IAAK,IAAK,GACzB,WAAc,CAAC,IAAK,GAAI,KACxB,QAAW,CAAC,IAAK,EAAG,GACpB,WAAc,CAAC,IAAK,IAAK,KACzB,aAAgB,CAAC,IAAK,IAAK,KAC3B,cAAiB,CAAC,GAAI,GAAI,KAC1B,cAAiB,CAAC,GAAI,GAAI,IAC1B,cAAiB,CAAC,GAAI,GAAI,IAC1B,cAAiB,CAAC,EAAG,IAAK,KAC1B,WAAc,CAAC,IAAK,EAAG,KACvB,SAAY,CAAC,IAAK,GAAI,KACtB,YAAe,CAAC,EAAG,IAAK,KACxB,QAAW,CAAC,IAAK,IAAK,KACtB,QAAW,CAAC,IAAK,IAAK,KACtB,WAAc,CAAC,GAAI,IAAK,KACxB,UAAa,CAAC,IAAK,GAAI,IACvB,YAAe,CAAC,IAAK,IAAK,KAC1B,YAAe,CAAC,GAAI,IAAK,IACzB,QAAW,CAAC,IAAK,EAAG,KACpB,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,KAAQ,CAAC,IAAK,IAAK,GACnB,UAAa,CAAC,IAAK,IAAK,IACxB,KAAQ,CAAC,IAAK,IAAK,KACnB,MAAS,CAAC,EAAG,IAAK,GAClB,YAAe,CAAC,IAAK,IAAK,IAC1B,KAAQ,CAAC,IAAK,IAAK,KACnB,SAAY,CAAC,IAAK,IAAK,KACvB,QAAW,CAAC,IAAK,IAAK,KACtB,UAAa,CAAC,IAAK,GAAI,IACvB,OAAU,CAAC,GAAI,EAAG,KAClB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,SAAY,CAAC,IAAK,IAAK,KACvB,cAAiB,CAAC,IAAK,IAAK,KAC5B,UAAa,CAAC,IAAK,IAAK,GACxB,aAAgB,CAAC,IAAK,IAAK,KAC3B,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,qBAAwB,CAAC,IAAK,IAAK,KACnC,UAAa,CAAC,IAAK,IAAK,KACxB,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,YAAe,CAAC,IAAK,IAAK,KAC1B,cAAiB,CAAC,GAAI,IAAK,KAC3B,aAAgB,CAAC,IAAK,IAAK,KAC3B,eAAkB,CAAC,IAAK,IAAK,KAC7B,eAAkB,CAAC,IAAK,IAAK,KAC7B,eAAkB,CAAC,IAAK,IAAK,KAC7B,YAAe,CAAC,IAAK,IAAK,KAC1B,KAAQ,CAAC,EAAG,IAAK,GACjB,UAAa,CAAC,GAAI,IAAK,IACvB,MAAS,CAAC,IAAK,IAAK,KACpB,QAAW,CAAC,IAAK,EAAG,KACpB,OAAU,CAAC,IAAK,EAAG,GACnB,iBAAoB,CAAC,IAAK,IAAK,KAC/B,WAAc,CAAC,EAAG,EAAG,KACrB,aAAgB,CAAC,IAAK,GAAI,KAC1B,aAAgB,CAAC,IAAK,IAAK,KAC3B,eAAkB,CAAC,GAAI,IAAK,KAC5B,gBAAmB,CAAC,IAAK,IAAK,KAC9B,kBAAqB,CAAC,EAAG,IAAK,KAC9B,gBAAmB,CAAC,GAAI,IAAK,KAC7B,gBAAmB,CAAC,IAAK,GAAI,KAC7B,aAAgB,CAAC,GAAI,GAAI,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,SAAY,CAAC,IAAK,IAAK,KACvB,YAAe,CAAC,IAAK,IAAK,KAC1B,KAAQ,CAAC,EAAG,EAAG,KACf,QAAW,CAAC,IAAK,IAAK,KACtB,MAAS,CAAC,IAAK,IAAK,GACpB,UAAa,CAAC,IAAK,IAAK,IACxB,OAAU,CAAC,IAAK,IAAK,GACrB,UAAa,CAAC,IAAK,GAAI,GACvB,OAAU,CAAC,IAAK,IAAK,KACrB,cAAiB,CAAC,IAAK,IAAK,KAC5B,UAAa,CAAC,IAAK,IAAK,KACxB,cAAiB,CAAC,IAAK,IAAK,KAC5B,cAAiB,CAAC,IAAK,IAAK,KAC5B,WAAc,CAAC,IAAK,IAAK,KACzB,UAAa,CAAC,IAAK,IAAK,KACxB,KAAQ,CAAC,IAAK,IAAK,IACnB,KAAQ,CAAC,IAAK,IAAK,KACnB,KAAQ,CAAC,IAAK,IAAK,KACnB,WAAc,CAAC,IAAK,IAAK,KACzB,OAAU,CAAC,IAAK,EAAG,KACnB,cAAiB,CAAC,IAAK,GAAI,KAC3B,IAAO,CAAC,IAAK,EAAG,GAChB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,YAAe,CAAC,IAAK,GAAI,IACzB,OAAU,CAAC,IAAK,IAAK,KACrB,WAAc,CAAC,IAAK,IAAK,IACzB,SAAY,CAAC,GAAI,IAAK,IACtB,SAAY,CAAC,IAAK,IAAK,KACvB,OAAU,CAAC,IAAK,GAAI,IACpB,OAAU,CAAC,IAAK,IAAK,KACrB,QAAW,CAAC,IAAK,IAAK,KACtB,UAAa,CAAC,IAAK,GAAI,KACvB,UAAa,CAAC,IAAK,IAAK,KACxB,UAAa,CAAC,IAAK,IAAK,KACxB,KAAQ,CAAC,IAAK,IAAK,KACnB,YAAe,CAAC,EAAG,IAAK,KACxB,UAAa,CAAC,GAAI,IAAK,KACvB,IAAO,CAAC,IAAK,IAAK,KAClB,KAAQ,CAAC,EAAG,IAAK,KACjB,QAAW,CAAC,IAAK,IAAK,KACtB,OAAU,CAAC,IAAK,GAAI,IACpB,UAAa,CAAC,GAAI,IAAK,KACvB,OAAU,CAAC,IAAK,IAAK,KACrB,MAAS,CAAC,IAAK,IAAK,KACpB,MAAS,CAAC,IAAK,IAAK,KACpB,WAAc,CAAC,IAAK,IAAK,KACzB,OAAU,CAAC,IAAK,IAAK,GACrB,YAAe,CAAC,IAAK,IAAK,I,iCCjJ3B,SAASC,EAAOC,EAAMC,EAAaC,GAE/BA,EAAMA,GAAO,EAEb,IAOIC,EAAMC,EAAMC,EAAMC,EAAMC,EAAGC,EAAGC,EAP9BC,EAAWT,GAAeA,EAAYU,OACtCC,EAAWF,EAAWT,EAAY,GAAKC,EAAMF,EAAKW,OAClDE,EAAYC,EAAWd,EAAM,EAAGY,EAAUV,GAAK,GAC/Ca,EAAY,GAEhB,IAAKF,GAAaA,EAAUG,OAASH,EAAUI,KAAM,OAAOF,EAO5D,GAHIL,IAAUG,EA2PlB,SAAwBb,EAAMC,EAAaY,EAAWX,GAClD,IACIgB,EAAGC,EAAiBC,EADpBC,EAAQ,GAGZ,IAAKH,EAAI,EAAGC,EAAMlB,EAAYU,OAAQO,EAAIC,EAAKD,KAG3CE,EAAON,EAAWd,EAFVC,EAAYiB,GAAKhB,EACnBgB,EAAIC,EAAM,EAAIlB,EAAYiB,EAAI,GAAKhB,EAAMF,EAAKW,OAChBT,GAAK,MAC5BkB,EAAKJ,OAAMI,EAAKE,SAAU,GACvCD,EAAME,KAAKC,EAAYJ,IAM3B,IAHAC,EAAMI,KAAKC,GAGNR,EAAI,EAAGA,EAAIG,EAAMV,OAAQO,IAC1BL,EAAYc,EAAcN,EAAMH,GAAIL,GAGxC,OAAOA,CACX,CA/Q8Be,CAAe5B,EAAMC,EAAaY,EAAWX,IAGnEF,EAAKW,OAAS,GAAKT,EAAK,CACxBC,EAAOE,EAAOL,EAAK,GACnBI,EAAOE,EAAON,EAAK,GAEnB,IAAK,IAAIkB,EAAIhB,EAAKgB,EAAIN,EAAUM,GAAKhB,GACjCK,EAAIP,EAAKkB,IAEDf,IAAMA,EAAOI,IADrBC,EAAIR,EAAKkB,EAAI,IAELd,IAAMA,EAAOI,GACjBD,EAAIF,IAAMA,EAAOE,GACjBC,EAAIF,IAAMA,EAAOE,GAKzBC,EAAsB,KADtBA,EAAUoB,KAAKC,IAAIzB,EAAOF,EAAMG,EAAOF,IACb,MAAQK,EAAU,CAChD,CAIA,OAFAsB,EAAalB,EAAWE,EAAWb,EAAKC,EAAMC,EAAMK,EAAS,GAEtDM,CACX,CAGA,SAASD,EAAWd,EAAMgC,EAAOC,EAAK/B,EAAKgC,GACvC,IAAIhB,EAAGiB,EAEP,GAAID,IAAeE,EAAWpC,EAAMgC,EAAOC,EAAK/B,GAAO,EACnD,IAAKgB,EAAIc,EAAOd,EAAIe,EAAKf,GAAKhB,EAAKiC,EAAOE,EAAWnB,EAAGlB,EAAKkB,GAAIlB,EAAKkB,EAAI,GAAIiB,QAE9E,IAAKjB,EAAIe,EAAM/B,EAAKgB,GAAKc,EAAOd,GAAKhB,EAAKiC,EAAOE,EAAWnB,EAAGlB,EAAKkB,GAAIlB,EAAKkB,EAAI,GAAIiB,GAQzF,OALIA,GAAQG,EAAOH,EAAMA,EAAKnB,QAC1BuB,EAAWJ,GACXA,EAAOA,EAAKnB,MAGTmB,CACX,CAGA,SAASK,EAAaR,EAAOC,GACzB,IAAKD,EAAO,OAAOA,EACdC,IAAKA,EAAMD,GAEhB,IACIS,EADAC,EAAIV,EAER,GAGI,GAFAS,GAAQ,EAEHC,EAAEpB,UAAYgB,EAAOI,EAAGA,EAAE1B,OAAqC,IAA5B2B,EAAKD,EAAEzB,KAAMyB,EAAGA,EAAE1B,MAOtD0B,EAAIA,EAAE1B,SAP8D,CAGpE,GAFAuB,EAAWG,IACXA,EAAIT,EAAMS,EAAEzB,QACFyB,EAAE1B,KAAM,MAClByB,GAAQ,CAEZ,QAGKA,GAASC,IAAMT,GAExB,OAAOA,CACX,CAGA,SAASF,EAAaa,EAAK7B,EAAWb,EAAKC,EAAMC,EAAMK,EAASoC,GAC5D,GAAKD,EAAL,EAGKC,GAAQpC,GAuRjB,SAAoBuB,EAAO7B,EAAMC,EAAMK,GACnC,IAAIiC,EAAIV,EACR,GACgB,IAARU,EAAEI,IAASJ,EAAEI,EAAIC,EAAOL,EAAEnC,EAAGmC,EAAElC,EAAGL,EAAMC,EAAMK,IAClDiC,EAAEM,MAAQN,EAAEzB,KACZyB,EAAEO,MAAQP,EAAE1B,KACZ0B,EAAIA,EAAE1B,WACD0B,IAAMV,GAEfU,EAAEM,MAAMC,MAAQ,KAChBP,EAAEM,MAAQ,KAOd,SAAoB5B,GAChB,IAAIF,EAAGwB,EAAGQ,EAAGC,EAAGC,EAAMC,EAAWC,EAAOC,EACpCC,EAAS,EAEb,EAAG,CAMC,IALAd,EAAItB,EACJA,EAAO,KACPgC,EAAO,KACPC,EAAY,EAELX,GAAG,CAIN,IAHAW,IACAH,EAAIR,EACJY,EAAQ,EACHpC,EAAI,EAAGA,EAAIsC,IACZF,IACAJ,EAAIA,EAAED,OAFc/B,KAOxB,IAFAqC,EAAQC,EAEDF,EAAQ,GAAMC,EAAQ,GAAKL,GAEhB,IAAVI,IAA0B,IAAVC,IAAgBL,GAAKR,EAAEI,GAAKI,EAAEJ,IAC9CK,EAAIT,EACJA,EAAIA,EAAEO,MACNK,MAEAH,EAAID,EACJA,EAAIA,EAAED,MACNM,KAGAH,EAAMA,EAAKH,MAAQE,EAClB/B,EAAO+B,EAEZA,EAAEH,MAAQI,EACVA,EAAOD,EAGXT,EAAIQ,CACR,CAEAE,EAAKH,MAAQ,KACbO,GAAU,CAEd,OAASH,EAAY,EAGzB,CAtDII,CAAWf,EACf,CApS0BgB,CAAWd,EAAKzC,EAAMC,EAAMK,GAMlD,IAJA,IACIQ,EAAMD,EADN2C,EAAOf,EAIJA,EAAI3B,OAAS2B,EAAI5B,MAIpB,GAHAC,EAAO2B,EAAI3B,KACXD,EAAO4B,EAAI5B,KAEPP,EAAUmD,EAAYhB,EAAKzC,EAAMC,EAAMK,GAAWoD,EAAMjB,GAExD7B,EAAUQ,KAAKN,EAAKC,EAAIhB,EAAM,GAC9Ba,EAAUQ,KAAKqB,EAAI1B,EAAIhB,EAAM,GAC7Ba,EAAUQ,KAAKP,EAAKE,EAAIhB,EAAM,GAE9BqC,EAAWK,GAGXA,EAAM5B,EAAKA,KACX2C,EAAO3C,EAAKA,UAQhB,IAHA4B,EAAM5B,KAGM2C,EAAM,CAETd,EAIe,IAATA,EAEPd,EADAa,EAAMkB,EAAuBtB,EAAaI,GAAM7B,EAAWb,GACzCa,EAAWb,EAAKC,EAAMC,EAAMK,EAAS,GAGvC,IAAToC,GACPkB,EAAYnB,EAAK7B,EAAWb,EAAKC,EAAMC,EAAMK,GAT7CsB,EAAaS,EAAaI,GAAM7B,EAAWb,EAAKC,EAAMC,EAAMK,EAAS,GAYzE,KACJ,CA/CY,CAiDpB,CAGA,SAASoD,EAAMjB,GACX,IAAIoB,EAAIpB,EAAI3B,KACRgD,EAAIrB,EACJsB,EAAItB,EAAI5B,KAEZ,GAAI2B,EAAKqB,EAAGC,EAAGC,IAAM,EAAG,OAAO,EAY/B,IATA,IAAIC,EAAKH,EAAEzD,EAAG6D,EAAKH,EAAE1D,EAAG8D,EAAKH,EAAE3D,EAAG+D,EAAKN,EAAExD,EAAG+D,EAAKN,EAAEzD,EAAGgE,EAAKN,EAAE1D,EAGzDiE,EAAKN,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EACrDK,EAAKJ,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EACrDG,EAAKR,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EACrDO,EAAKN,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EAErD9B,EAAIwB,EAAElD,KACH0B,IAAMsB,GAAG,CACZ,GAAItB,EAAEnC,GAAKkE,GAAM/B,EAAEnC,GAAKoE,GAAMjC,EAAElC,GAAKkE,GAAMhC,EAAElC,GAAKoE,GAC9CC,EAAgBV,EAAIG,EAAIF,EAAIG,EAAIF,EAAIG,EAAI9B,EAAEnC,EAAGmC,EAAElC,IAC/CmC,EAAKD,EAAEzB,KAAMyB,EAAGA,EAAE1B,OAAS,EAAG,OAAO,EACzC0B,EAAIA,EAAE1B,IACV,CAEA,OAAO,CACX,CAEA,SAAS4C,EAAYhB,EAAKzC,EAAMC,EAAMK,GAClC,IAAIuD,EAAIpB,EAAI3B,KACRgD,EAAIrB,EACJsB,EAAItB,EAAI5B,KAEZ,GAAI2B,EAAKqB,EAAGC,EAAGC,IAAM,EAAG,OAAO,EAkB/B,IAhBA,IAAIC,EAAKH,EAAEzD,EAAG6D,EAAKH,EAAE1D,EAAG8D,EAAKH,EAAE3D,EAAG+D,EAAKN,EAAExD,EAAG+D,EAAKN,EAAEzD,EAAGgE,EAAKN,EAAE1D,EAGzDiE,EAAKN,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EACrDK,EAAKJ,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EACrDG,EAAKR,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EACrDO,EAAKN,EAAKC,EAAMD,EAAKE,EAAKF,EAAKE,EAAOD,EAAKC,EAAKD,EAAKC,EAGrDM,EAAO/B,EAAO0B,EAAIC,EAAIvE,EAAMC,EAAMK,GAClCsE,EAAOhC,EAAO4B,EAAIC,EAAIzE,EAAMC,EAAMK,GAElCiC,EAAIE,EAAII,MACRgC,EAAIpC,EAAIK,MAGLP,GAAKA,EAAEI,GAAKgC,GAAQE,GAAKA,EAAElC,GAAKiC,GAAM,CACzC,GAAIrC,EAAEnC,GAAKkE,GAAM/B,EAAEnC,GAAKoE,GAAMjC,EAAElC,GAAKkE,GAAMhC,EAAElC,GAAKoE,GAAMlC,IAAMsB,GAAKtB,IAAMwB,GACrEW,EAAgBV,EAAIG,EAAIF,EAAIG,EAAIF,EAAIG,EAAI9B,EAAEnC,EAAGmC,EAAElC,IAAMmC,EAAKD,EAAEzB,KAAMyB,EAAGA,EAAE1B,OAAS,EAAG,OAAO,EAG9F,GAFA0B,EAAIA,EAAEM,MAEFgC,EAAEzE,GAAKkE,GAAMO,EAAEzE,GAAKoE,GAAMK,EAAExE,GAAKkE,GAAMM,EAAExE,GAAKoE,GAAMI,IAAMhB,GAAKgB,IAAMd,GACrEW,EAAgBV,EAAIG,EAAIF,EAAIG,EAAIF,EAAIG,EAAIQ,EAAEzE,EAAGyE,EAAExE,IAAMmC,EAAKqC,EAAE/D,KAAM+D,EAAGA,EAAEhE,OAAS,EAAG,OAAO,EAC9FgE,EAAIA,EAAE/B,KACV,CAGA,KAAOP,GAAKA,EAAEI,GAAKgC,GAAM,CACrB,GAAIpC,EAAEnC,GAAKkE,GAAM/B,EAAEnC,GAAKoE,GAAMjC,EAAElC,GAAKkE,GAAMhC,EAAElC,GAAKoE,GAAMlC,IAAMsB,GAAKtB,IAAMwB,GACrEW,EAAgBV,EAAIG,EAAIF,EAAIG,EAAIF,EAAIG,EAAI9B,EAAEnC,EAAGmC,EAAElC,IAAMmC,EAAKD,EAAEzB,KAAMyB,EAAGA,EAAE1B,OAAS,EAAG,OAAO,EAC9F0B,EAAIA,EAAEM,KACV,CAGA,KAAOgC,GAAKA,EAAElC,GAAKiC,GAAM,CACrB,GAAIC,EAAEzE,GAAKkE,GAAMO,EAAEzE,GAAKoE,GAAMK,EAAExE,GAAKkE,GAAMM,EAAExE,GAAKoE,GAAMI,IAAMhB,GAAKgB,IAAMd,GACrEW,EAAgBV,EAAIG,EAAIF,EAAIG,EAAIF,EAAIG,EAAIQ,EAAEzE,EAAGyE,EAAExE,IAAMmC,EAAKqC,EAAE/D,KAAM+D,EAAGA,EAAEhE,OAAS,EAAG,OAAO,EAC9FgE,EAAIA,EAAE/B,KACV,CAEA,OAAO,CACX,CAGA,SAASa,EAAuB9B,EAAOjB,EAAWb,GAC9C,IAAIwC,EAAIV,EACR,EAAG,CACC,IAAIgC,EAAItB,EAAEzB,KACNgD,EAAIvB,EAAE1B,KAAKA,MAEVsB,EAAO0B,EAAGC,IAAMgB,EAAWjB,EAAGtB,EAAGA,EAAE1B,KAAMiD,IAAMiB,EAAclB,EAAGC,IAAMiB,EAAcjB,EAAGD,KAExFjD,EAAUQ,KAAKyC,EAAE9C,EAAIhB,EAAM,GAC3Ba,EAAUQ,KAAKmB,EAAExB,EAAIhB,EAAM,GAC3Ba,EAAUQ,KAAK0C,EAAE/C,EAAIhB,EAAM,GAG3BqC,EAAWG,GACXH,EAAWG,EAAE1B,MAEb0B,EAAIV,EAAQiC,GAEhBvB,EAAIA,EAAE1B,IACV,OAAS0B,IAAMV,GAEf,OAAOQ,EAAaE,EACxB,CAGA,SAASqB,EAAY/B,EAAOjB,EAAWb,EAAKC,EAAMC,EAAMK,GAEpD,IAAIuD,EAAIhC,EACR,EAAG,CAEC,IADA,IAAIiC,EAAID,EAAEhD,KAAKA,KACRiD,IAAMD,EAAE/C,MAAM,CACjB,GAAI+C,EAAE9C,IAAM+C,EAAE/C,GAAKiE,EAAgBnB,EAAGC,GAAI,CAEtC,IAAIC,EAAIkB,EAAapB,EAAGC,GASxB,OANAD,EAAIxB,EAAawB,EAAGA,EAAEhD,MACtBkD,EAAI1B,EAAa0B,EAAGA,EAAElD,MAGtBe,EAAaiC,EAAGjD,EAAWb,EAAKC,EAAMC,EAAMK,EAAS,QACrDsB,EAAamC,EAAGnD,EAAWb,EAAKC,EAAMC,EAAMK,EAAS,EAEzD,CACAwD,EAAIA,EAAEjD,IACV,CACAgD,EAAIA,EAAEhD,IACV,OAASgD,IAAMhC,EACnB,CAyBA,SAASN,EAASsC,EAAGC,GACjB,OAAOD,EAAEzD,EAAI0D,EAAE1D,CACnB,CAGA,SAASoB,EAAc0D,EAAMxE,GACzB,IAAIyE,EAaR,SAAwBD,EAAMxE,GAC1B,IAII0E,EAJA7C,EAAI7B,EACJ2E,EAAKH,EAAK9E,EACVkF,EAAKJ,EAAK7E,EACVkF,GAAMC,IAKV,EAAG,CACC,GAAIF,GAAM/C,EAAElC,GAAKiF,GAAM/C,EAAE1B,KAAKR,GAAKkC,EAAE1B,KAAKR,IAAMkC,EAAElC,EAAG,CACjD,IAAID,EAAImC,EAAEnC,GAAKkF,EAAK/C,EAAElC,IAAMkC,EAAE1B,KAAKT,EAAImC,EAAEnC,IAAMmC,EAAE1B,KAAKR,EAAIkC,EAAElC,GAC5D,GAAID,GAAKiF,GAAMjF,EAAImF,IACfA,EAAKnF,EACLgF,EAAI7C,EAAEnC,EAAImC,EAAE1B,KAAKT,EAAImC,EAAIA,EAAE1B,KACvBT,IAAMiF,GAAI,OAAOD,CAE7B,CACA7C,EAAIA,EAAE1B,IACV,OAAS0B,IAAM7B,GAEf,IAAK0E,EAAG,OAAO,KAMf,IAIIK,EAJAjC,EAAO4B,EACPM,EAAKN,EAAEhF,EACPuF,EAAKP,EAAE/E,EACPuF,EAASJ,IAGbjD,EAAI6C,EAEJ,GACQC,GAAM9C,EAAEnC,GAAKmC,EAAEnC,GAAKsF,GAAML,IAAO9C,EAAEnC,GAC/BsE,EAAgBY,EAAKK,EAAKN,EAAKE,EAAID,EAAII,EAAIC,EAAIL,EAAKK,EAAKJ,EAAKF,EAAIC,EAAI/C,EAAEnC,EAAGmC,EAAElC,KAEjFoF,EAAM/D,KAAKmE,IAAIP,EAAK/C,EAAElC,IAAMgF,EAAK9C,EAAEnC,GAE/B2E,EAAcxC,EAAG2C,KAChBO,EAAMG,GAAWH,IAAQG,IAAWrD,EAAEnC,EAAIgF,EAAEhF,GAAMmC,EAAEnC,IAAMgF,EAAEhF,GAAK0F,EAAqBV,EAAG7C,OAC1F6C,EAAI7C,EACJqD,EAASH,IAIjBlD,EAAIA,EAAE1B,WACD0B,IAAMiB,GAEf,OAAO4B,CACX,CAjEiBW,CAAeb,EAAMxE,GAClC,IAAKyE,EACD,OAAOzE,EAGX,IAAIsF,EAAgBf,EAAaE,EAAQD,GAIzC,OADA7C,EAAa2D,EAAeA,EAAcnF,MACnCwB,EAAa8C,EAAQA,EAAOtE,KACvC,CA0DA,SAASiF,EAAqBV,EAAG7C,GAC7B,OAAOC,EAAK4C,EAAEtE,KAAMsE,EAAG7C,EAAEzB,MAAQ,GAAK0B,EAAKD,EAAE1B,KAAMuE,EAAGA,EAAEvE,MAAQ,CACpE,CAwEA,SAAS+B,EAAOxC,EAAGC,EAAGL,EAAMC,EAAMK,GAe9B,OAPAF,EAAqB,aADrBA,EAAqB,YADrBA,EAAqB,YADrBA,EAAqB,WAHrBA,GAAKA,EAAIJ,GAAQM,EAAU,GAGjBF,GAAK,IACLA,GAAK,IACLA,GAAK,IACLA,GAAK,KAKfC,EAAqB,aADrBA,EAAqB,YADrBA,EAAqB,YADrBA,EAAqB,WAPrBA,GAAKA,EAAIJ,GAAQK,EAAU,GAOjBD,GAAK,IACLA,GAAK,IACLA,GAAK,IACLA,GAAK,KAEE,CACrB,CAGA,SAASgB,EAAYQ,GACjB,IAAIU,EAAIV,EACJoE,EAAWpE,EACf,IACQU,EAAEnC,EAAI6F,EAAS7F,GAAMmC,EAAEnC,IAAM6F,EAAS7F,GAAKmC,EAAElC,EAAI4F,EAAS5F,KAAI4F,EAAW1D,GAC7EA,EAAIA,EAAE1B,WACD0B,IAAMV,GAEf,OAAOoE,CACX,CAGA,SAASvB,EAAgBV,EAAIG,EAAIF,EAAIG,EAAIF,EAAIG,EAAI6B,EAAIC,GACjD,OAAQjC,EAAKgC,IAAO/B,EAAKgC,KAAQnC,EAAKkC,IAAO7B,EAAK8B,KAC1CnC,EAAKkC,IAAO9B,EAAK+B,KAAQlC,EAAKiC,IAAO/B,EAAKgC,KAC1ClC,EAAKiC,IAAO7B,EAAK8B,KAAQjC,EAAKgC,IAAO9B,EAAK+B,EACtD,CAGA,SAASnB,EAAgBnB,EAAGC,GACxB,OAAOD,EAAEhD,KAAKE,IAAM+C,EAAE/C,GAAK8C,EAAE/C,KAAKC,IAAM+C,EAAE/C,IA2C9C,SAA2B8C,EAAGC,GAC1B,IAAIvB,EAAIsB,EACR,EAAG,CACC,GAAItB,EAAExB,IAAM8C,EAAE9C,GAAKwB,EAAE1B,KAAKE,IAAM8C,EAAE9C,GAAKwB,EAAExB,IAAM+C,EAAE/C,GAAKwB,EAAE1B,KAAKE,IAAM+C,EAAE/C,GAC7D+D,EAAWvC,EAAGA,EAAE1B,KAAMgD,EAAGC,GAAI,OAAO,EAC5CvB,EAAIA,EAAE1B,IACV,OAAS0B,IAAMsB,GAEf,OAAO,CACX,CApDoDuC,CAAkBvC,EAAGC,KAC7DiB,EAAclB,EAAGC,IAAMiB,EAAcjB,EAAGD,IA6DpD,SAAsBA,EAAGC,GACrB,IAAIvB,EAAIsB,EACJwC,GAAS,EACTH,GAAMrC,EAAEzD,EAAI0D,EAAE1D,GAAK,EACnB+F,GAAMtC,EAAExD,EAAIyD,EAAEzD,GAAK,EACvB,GACUkC,EAAElC,EAAI8F,GAAS5D,EAAE1B,KAAKR,EAAI8F,GAAQ5D,EAAE1B,KAAKR,IAAMkC,EAAElC,GAC9C6F,GAAM3D,EAAE1B,KAAKT,EAAImC,EAAEnC,IAAM+F,EAAK5D,EAAElC,IAAMkC,EAAE1B,KAAKR,EAAIkC,EAAElC,GAAKkC,EAAEnC,IAC/DiG,GAAUA,GACd9D,EAAIA,EAAE1B,WACD0B,IAAMsB,GAEf,OAAOwC,CACX,CA1E0DC,CAAazC,EAAGC,KAC7DtB,EAAKqB,EAAE/C,KAAM+C,EAAGC,EAAEhD,OAAS0B,EAAKqB,EAAGC,EAAEhD,KAAMgD,KAC5C3B,EAAO0B,EAAGC,IAAMtB,EAAKqB,EAAE/C,KAAM+C,EAAGA,EAAEhD,MAAQ,GAAK2B,EAAKsB,EAAEhD,KAAMgD,EAAGA,EAAEjD,MAAQ,EACrF,CAGA,SAAS2B,EAAKD,EAAGQ,EAAGwD,GAChB,OAAQxD,EAAE1C,EAAIkC,EAAElC,IAAMkG,EAAEnG,EAAI2C,EAAE3C,IAAM2C,EAAE3C,EAAImC,EAAEnC,IAAMmG,EAAElG,EAAI0C,EAAE1C,EAC9D,CAGA,SAAS8B,EAAOqE,EAAIC,GAChB,OAAOD,EAAGpG,IAAMqG,EAAGrG,GAAKoG,EAAGnG,IAAMoG,EAAGpG,CACxC,CAGA,SAASyE,EAAW0B,EAAIE,EAAID,EAAIE,GAC5B,IAAIC,EAAKC,EAAKrE,EAAKgE,EAAIE,EAAID,IACvBK,EAAKD,EAAKrE,EAAKgE,EAAIE,EAAIC,IACvBI,EAAKF,EAAKrE,EAAKiE,EAAIE,EAAIH,IACvBQ,EAAKH,EAAKrE,EAAKiE,EAAIE,EAAID,IAE3B,OAAIE,IAAOE,GAAMC,IAAOC,MAEb,IAAPJ,IAAYK,EAAUT,EAAIC,EAAIC,QACvB,IAAPI,IAAYG,EAAUT,EAAIG,EAAID,QACvB,IAAPK,IAAYE,EAAUR,EAAID,EAAIG,OACvB,IAAPK,IAAYC,EAAUR,EAAIC,EAAIC,MAGtC,CAGA,SAASM,EAAU1E,EAAGQ,EAAGwD,GACrB,OAAOxD,EAAE3C,GAAKsB,KAAKC,IAAIY,EAAEnC,EAAGmG,EAAEnG,IAAM2C,EAAE3C,GAAKsB,KAAKwF,IAAI3E,EAAEnC,EAAGmG,EAAEnG,IAAM2C,EAAE1C,GAAKqB,KAAKC,IAAIY,EAAElC,EAAGkG,EAAElG,IAAM0C,EAAE1C,GAAKqB,KAAKwF,IAAI3E,EAAElC,EAAGkG,EAAElG,EACzH,CAEA,SAASwG,EAAKM,GACV,OAAOA,EAAM,EAAI,EAAIA,EAAM,GAAK,EAAI,CACxC,CAeA,SAASpC,EAAclB,EAAGC,GACtB,OAAOtB,EAAKqB,EAAE/C,KAAM+C,EAAGA,EAAEhD,MAAQ,EAC7B2B,EAAKqB,EAAGC,EAAGD,EAAEhD,OAAS,GAAK2B,EAAKqB,EAAGA,EAAE/C,KAAMgD,IAAM,EACjDtB,EAAKqB,EAAGC,EAAGD,EAAE/C,MAAQ,GAAK0B,EAAKqB,EAAGA,EAAEhD,KAAMiD,GAAK,CACvD,CAoBA,SAASmB,EAAapB,EAAGC,GACrB,IAAIsD,EAAK,IAAIC,EAAKxD,EAAE9C,EAAG8C,EAAEzD,EAAGyD,EAAExD,GAC1BiH,EAAK,IAAID,EAAKvD,EAAE/C,EAAG+C,EAAE1D,EAAG0D,EAAEzD,GAC1BkH,EAAK1D,EAAEhD,KACP2G,EAAK1D,EAAEhD,KAcX,OAZA+C,EAAEhD,KAAOiD,EACTA,EAAEhD,KAAO+C,EAETuD,EAAGvG,KAAO0G,EACVA,EAAGzG,KAAOsG,EAEVE,EAAGzG,KAAOuG,EACVA,EAAGtG,KAAOwG,EAEVE,EAAG3G,KAAOyG,EACVA,EAAGxG,KAAO0G,EAEHF,CACX,CAGA,SAASpF,EAAWnB,EAAGX,EAAGC,EAAG2B,GACzB,IAAIO,EAAI,IAAI8E,EAAKtG,EAAGX,EAAGC,GAYvB,OAVK2B,GAKDO,EAAE1B,KAAOmB,EAAKnB,KACd0B,EAAEzB,KAAOkB,EACTA,EAAKnB,KAAKC,KAAOyB,EACjBP,EAAKnB,KAAO0B,IAPZA,EAAEzB,KAAOyB,EACTA,EAAE1B,KAAO0B,GAQNA,CACX,CAEA,SAASH,EAAWG,GAChBA,EAAE1B,KAAKC,KAAOyB,EAAEzB,KAChByB,EAAEzB,KAAKD,KAAO0B,EAAE1B,KAEZ0B,EAAEM,QAAON,EAAEM,MAAMC,MAAQP,EAAEO,OAC3BP,EAAEO,QAAOP,EAAEO,MAAMD,MAAQN,EAAEM,MACnC,CAEA,SAASwE,EAAKtG,EAAGX,EAAGC,GAEhBoH,KAAK1G,EAAIA,EAGT0G,KAAKrH,EAAIA,EACTqH,KAAKpH,EAAIA,EAGToH,KAAK3G,KAAO,KACZ2G,KAAK5G,KAAO,KAGZ4G,KAAK9E,EAAI,EAGT8E,KAAK5E,MAAQ,KACb4E,KAAK3E,MAAQ,KAGb2E,KAAKtG,SAAU,CACnB,CA+BA,SAASc,EAAWpC,EAAMgC,EAAOC,EAAK/B,GAElC,IADA,IAAI2H,EAAM,EACD3G,EAAIc,EAAO8F,EAAI7F,EAAM/B,EAAKgB,EAAIe,EAAKf,GAAKhB,EAC7C2H,IAAQ7H,EAAK8H,GAAK9H,EAAKkB,KAAOlB,EAAKkB,EAAI,GAAKlB,EAAK8H,EAAI,IACrDA,EAAI5G,EAER,OAAO2G,CACX,CAppBAhI,EAAOC,QAAUC,EACjBF,EAAOC,QAAP,QAAyBC,EAinBzBA,EAAOgI,UAAY,SAAU/H,EAAMC,EAAaC,EAAKa,GACjD,IAAIL,EAAWT,GAAeA,EAAYU,OACtCC,EAAWF,EAAWT,EAAY,GAAKC,EAAMF,EAAKW,OAElDqH,EAAcnG,KAAKmE,IAAI5D,EAAWpC,EAAM,EAAGY,EAAUV,IACzD,GAAIQ,EACA,IAAK,IAAIQ,EAAI,EAAGC,EAAMlB,EAAYU,OAAQO,EAAIC,EAAKD,IAAK,CACpD,IAAIc,EAAQ/B,EAAYiB,GAAKhB,EACzB+B,EAAMf,EAAIC,EAAM,EAAIlB,EAAYiB,EAAI,GAAKhB,EAAMF,EAAKW,OACxDqH,GAAenG,KAAKmE,IAAI5D,EAAWpC,EAAMgC,EAAOC,EAAK/B,GACzD,CAGJ,IAAI+H,EAAgB,EACpB,IAAK/G,EAAI,EAAGA,EAAIH,EAAUJ,OAAQO,GAAK,EAAG,CACtC,IAAI8C,EAAIjD,EAAUG,GAAKhB,EACnB+D,EAAIlD,EAAUG,EAAI,GAAKhB,EACvBgE,EAAInD,EAAUG,EAAI,GAAKhB,EAC3B+H,GAAiBpG,KAAKmE,KACjBhG,EAAKgE,GAAKhE,EAAKkE,KAAOlE,EAAKiE,EAAI,GAAKjE,EAAKgE,EAAI,KAC7ChE,EAAKgE,GAAKhE,EAAKiE,KAAOjE,EAAKkE,EAAI,GAAKlE,EAAKgE,EAAI,IACtD,CAEA,OAAuB,IAAhBgE,GAAuC,IAAlBC,EAAsB,EAC9CpG,KAAKmE,KAAKiC,EAAgBD,GAAeA,EACjD,EAYAjI,EAAOmI,QAAU,SAAUlI,GAKvB,IAJA,IAAIE,EAAMF,EAAK,GAAG,GAAGW,OACjBwH,EAAS,CAACC,SAAU,GAAIC,MAAO,GAAIC,WAAYpI,GAC/CqI,EAAY,EAEPrH,EAAI,EAAGA,EAAIlB,EAAKW,OAAQO,IAAK,CAClC,IAAK,IAAI4G,EAAI,EAAGA,EAAI9H,EAAKkB,GAAGP,OAAQmH,IAChC,IAAK,IAAIU,EAAI,EAAGA,EAAItI,EAAKsI,IAAKL,EAAOC,SAAS7G,KAAKvB,EAAKkB,GAAG4G,GAAGU,IAE9DtH,EAAI,IACJqH,GAAavI,EAAKkB,EAAI,GAAGP,OACzBwH,EAAOE,MAAM9G,KAAKgH,GAE1B,CACA,OAAOJ,CACX,C;;ACvqBArI,EAAQ2I,KAAO,SAAUC,EAAQC,EAAQC,EAAMC,EAAMC,GACnD,IAAI3F,EAAGoC,EACHwD,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACThI,EAAI0H,EAAQE,EAAS,EAAK,EAC1BN,EAAII,GAAQ,EAAI,EAChBO,EAAIT,EAAOC,EAASzH,GAOxB,IALAA,GAAKsH,EAELrF,EAAIgG,GAAM,IAAOD,GAAU,EAC3BC,KAAQD,EACRA,GAASH,EACFG,EAAQ,EAAG/F,EAAS,IAAJA,EAAWuF,EAAOC,EAASzH,GAAIA,GAAKsH,EAAGU,GAAS,GAKvE,IAHA3D,EAAIpC,GAAM,IAAO+F,GAAU,EAC3B/F,KAAQ+F,EACRA,GAASL,EACFK,EAAQ,EAAG3D,EAAS,IAAJA,EAAWmD,EAAOC,EAASzH,GAAIA,GAAKsH,EAAGU,GAAS,GAEvE,GAAU,IAAN/F,EACFA,EAAI,EAAI8F,MACH,IAAI9F,IAAM6F,EACf,OAAOzD,EAAI6D,IAAsBzD,KAAdwD,GAAK,EAAI,GAE5B5D,GAAQ1D,KAAKwH,IAAI,EAAGR,GACpB1F,GAAQ8F,CACV,CACA,OAAQE,GAAK,EAAI,GAAK5D,EAAI1D,KAAKwH,IAAI,EAAGlG,EAAI0F,EAC5C,EAEA/I,EAAQwJ,MAAQ,SAAUZ,EAAQa,EAAOZ,EAAQC,EAAMC,EAAMC,GAC3D,IAAI3F,EAAGoC,EAAGrB,EACN6E,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBQ,EAAe,KAATX,EAAchH,KAAKwH,IAAI,GAAI,IAAMxH,KAAKwH,IAAI,GAAI,IAAM,EAC1DnI,EAAI0H,EAAO,EAAKE,EAAS,EACzBN,EAAII,EAAO,GAAK,EAChBO,EAAII,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQ1H,KAAKmE,IAAIuD,GAEbE,MAAMF,IAAUA,IAAU5D,KAC5BJ,EAAIkE,MAAMF,GAAS,EAAI,EACvBpG,EAAI6F,IAEJ7F,EAAItB,KAAK6H,MAAM7H,KAAK8H,IAAIJ,GAAS1H,KAAK+H,KAClCL,GAASrF,EAAIrC,KAAKwH,IAAI,GAAIlG,IAAM,IAClCA,IACAe,GAAK,IAGLqF,GADEpG,EAAI8F,GAAS,EACNO,EAAKtF,EAELsF,EAAK3H,KAAKwH,IAAI,EAAG,EAAIJ,IAEpB/E,GAAK,IACff,IACAe,GAAK,GAGHf,EAAI8F,GAASD,GACfzD,EAAI,EACJpC,EAAI6F,GACK7F,EAAI8F,GAAS,GACtB1D,GAAMgE,EAAQrF,EAAK,GAAKrC,KAAKwH,IAAI,EAAGR,GACpC1F,GAAQ8F,IAER1D,EAAIgE,EAAQ1H,KAAKwH,IAAI,EAAGJ,EAAQ,GAAKpH,KAAKwH,IAAI,EAAGR,GACjD1F,EAAI,IAID0F,GAAQ,EAAGH,EAAOC,EAASzH,GAAS,IAAJqE,EAAUrE,GAAKsH,EAAGjD,GAAK,IAAKsD,GAAQ,GAI3E,IAFA1F,EAAKA,GAAK0F,EAAQtD,EAClBwD,GAAQF,EACDE,EAAO,EAAGL,EAAOC,EAASzH,GAAS,IAAJiC,EAAUjC,GAAKsH,EAAGrF,GAAK,IAAK4F,GAAQ,GAE1EL,EAAOC,EAASzH,EAAIsH,IAAU,IAAJW,CAC5B,C,qCClFAtJ,EAAOC,QAAU+J,EAEjB,IAAIC,EAAU,EAAQ,OAEtB,SAASD,EAAIE,GACTnC,KAAKmC,IAAMC,YAAYC,QAAUD,YAAYC,OAAOF,GAAOA,EAAM,IAAIG,WAAWH,GAAO,GACvFnC,KAAKuC,IAAM,EACXvC,KAAKwC,KAAO,EACZxC,KAAKjH,OAASiH,KAAKmC,IAAIpJ,MAC3B,CAEAkJ,EAAIQ,OAAU,EACdR,EAAIS,QAAU,EACdT,EAAIU,MAAU,EACdV,EAAIW,QAAU,EAEd,IAAIC,EAAgB,WAChBC,EAAiB,EAAID,EAKrBE,EAAyC,oBAAhBC,YAA8B,KAAO,IAAIA,YAAY,QAwYlF,SAASC,EAAcC,GACnB,OAAOA,EAAIV,OAASP,EAAIU,MACpBO,EAAIC,aAAeD,EAAIX,IAAMW,EAAIX,IAAM,CAC/C,CAEA,SAASa,EAAMC,EAAKC,EAAMC,GACtB,OAAIA,EACc,WAAPD,GAAsBD,IAAQ,GAGlB,YAAdC,IAAS,IAAqBD,IAAQ,EACnD,CAiDA,SAASG,EAAuBC,EAAUlK,EAAK2J,GAC3C,IAAIQ,EACAnK,GAAO,MAAS,EAChBA,GAAO,QAAW,EAClBA,GAAO,UAAY,EAAIU,KAAK6H,MAAM7H,KAAK8H,IAAIxI,IAAmB,EAAXU,KAAK+H,MAG5DkB,EAAIS,QAAQD,GACZ,IAAK,IAAIpK,EAAI4J,EAAIX,IAAM,EAAGjJ,GAAKmK,EAAUnK,IAAK4J,EAAIf,IAAI7I,EAAIoK,GAAYR,EAAIf,IAAI7I,EAClF,CAEA,SAASsK,EAAkBC,EAAKX,GAAS,IAAK,IAAI5J,EAAI,EAAGA,EAAIuK,EAAI9K,OAAQO,IAAK4J,EAAIY,YAAYD,EAAIvK,GAAO,CACzG,SAASyK,EAAmBF,EAAKX,GAAQ,IAAK,IAAI5J,EAAI,EAAGA,EAAIuK,EAAI9K,OAAQO,IAAK4J,EAAIc,aAAaH,EAAIvK,GAAM,CACzG,SAAS2K,EAAiBJ,EAAKX,GAAU,IAAK,IAAI5J,EAAI,EAAGA,EAAIuK,EAAI9K,OAAQO,IAAK4J,EAAIgB,WAAWL,EAAIvK,GAAQ,CACzG,SAAS6K,EAAkBN,EAAKX,GAAS,IAAK,IAAI5J,EAAI,EAAGA,EAAIuK,EAAI9K,OAAQO,IAAK4J,EAAIkB,YAAYP,EAAIvK,GAAO,CACzG,SAAS+K,EAAmBR,EAAKX,GAAQ,IAAK,IAAI5J,EAAI,EAAGA,EAAIuK,EAAI9K,OAAQO,IAAK4J,EAAIoB,aAAaT,EAAIvK,GAAM,CACzG,SAASiL,EAAmBV,EAAKX,GAAQ,IAAK,IAAI5J,EAAI,EAAGA,EAAIuK,EAAI9K,OAAQO,IAAK4J,EAAIsB,aAAaX,EAAIvK,GAAM,CACzG,SAASmL,EAAoBZ,EAAKX,GAAO,IAAK,IAAI5J,EAAI,EAAGA,EAAIuK,EAAI9K,OAAQO,IAAK4J,EAAIwB,cAAcb,EAAIvK,GAAK,CACzG,SAASqL,EAAmBd,EAAKX,GAAQ,IAAK,IAAI5J,EAAI,EAAGA,EAAIuK,EAAI9K,OAAQO,IAAK4J,EAAI0B,aAAaf,EAAIvK,GAAM,CACzG,SAASuL,EAAoBhB,EAAKX,GAAO,IAAK,IAAI5J,EAAI,EAAGA,EAAIuK,EAAI9K,OAAQO,IAAK4J,EAAI4B,cAAcjB,EAAIvK,GAAK,CAIzG,SAASyL,EAAW5C,EAAKI,GACrB,OAASJ,EAAII,GACRJ,EAAII,EAAM,IAAM,EAChBJ,EAAII,EAAM,IAAM,IACD,SAAfJ,EAAII,EAAM,EACnB,CAEA,SAASyC,EAAW7C,EAAK8C,EAAK1C,GAC1BJ,EAAII,GAAO0C,EACX9C,EAAII,EAAM,GAAM0C,IAAQ,EACxB9C,EAAII,EAAM,GAAM0C,IAAQ,GACxB9C,EAAII,EAAM,GAAM0C,IAAQ,EAC5B,CAEA,SAASC,EAAU/C,EAAKI,GACpB,OAASJ,EAAII,GACRJ,EAAII,EAAM,IAAM,EAChBJ,EAAII,EAAM,IAAM,KAChBJ,EAAII,EAAM,IAAM,GACzB,CA5eAN,EAAIkD,UAAY,CAEZC,QAAS,WACLpF,KAAKmC,IAAM,IACf,EAIAkD,WAAY,SAASC,EAAW/E,EAAQlG,GAGpC,IAFAA,EAAMA,GAAO2F,KAAKjH,OAEXiH,KAAKuC,IAAMlI,GAAK,CACnB,IAAI4K,EAAMjF,KAAKmD,aACXoC,EAAMN,GAAO,EACbxB,EAAWzD,KAAKuC,IAEpBvC,KAAKwC,KAAa,EAANyC,EACZK,EAAUC,EAAKhF,EAAQP,MAEnBA,KAAKuC,MAAQkB,GAAUzD,KAAKwF,KAAKP,EACzC,CACA,OAAO1E,CACX,EAEAkF,YAAa,SAASH,EAAW/E,GAC7B,OAAOP,KAAKqF,WAAWC,EAAW/E,EAAQP,KAAKmD,aAAenD,KAAKuC,IACvE,EAEAmD,YAAa,WACT,IAAIT,EAAMF,EAAW/E,KAAKmC,IAAKnC,KAAKuC,KAEpC,OADAvC,KAAKuC,KAAO,EACL0C,CACX,EAEAU,aAAc,WACV,IAAIV,EAAMC,EAAUlF,KAAKmC,IAAKnC,KAAKuC,KAEnC,OADAvC,KAAKuC,KAAO,EACL0C,CACX,EAIAW,YAAa,WACT,IAAIX,EAAMF,EAAW/E,KAAKmC,IAAKnC,KAAKuC,KAAOwC,EAAW/E,KAAKmC,IAAKnC,KAAKuC,IAAM,GAAKM,EAEhF,OADA7C,KAAKuC,KAAO,EACL0C,CACX,EAEAY,aAAc,WACV,IAAIZ,EAAMF,EAAW/E,KAAKmC,IAAKnC,KAAKuC,KAAO2C,EAAUlF,KAAKmC,IAAKnC,KAAKuC,IAAM,GAAKM,EAE/E,OADA7C,KAAKuC,KAAO,EACL0C,CACX,EAEAa,UAAW,WACP,IAAIb,EAAM/C,EAAQrB,KAAKb,KAAKmC,IAAKnC,KAAKuC,KAAK,EAAM,GAAI,GAErD,OADAvC,KAAKuC,KAAO,EACL0C,CACX,EAEAc,WAAY,WACR,IAAId,EAAM/C,EAAQrB,KAAKb,KAAKmC,IAAKnC,KAAKuC,KAAK,EAAM,GAAI,GAErD,OADAvC,KAAKuC,KAAO,EACL0C,CACX,EAEA9B,WAAY,SAASI,GACjB,IACI0B,EAAK5I,EADL8F,EAAMnC,KAAKmC,IAG+B,OAAzB8C,EAAY,KAAjC5I,EAAI8F,EAAInC,KAAKuC,QAAqClG,EAAI,IAAa4I,GAC9CA,IAAY,KAAjC5I,EAAI8F,EAAInC,KAAKuC,UAA6B,EAAQlG,EAAI,IAAa4I,GAC9CA,IAAY,KAAjC5I,EAAI8F,EAAInC,KAAKuC,UAA6B,GAAQlG,EAAI,IAAa4I,GAC9CA,IAAY,KAAjC5I,EAAI8F,EAAInC,KAAKuC,UAA6B,GAAQlG,EAAI,IAAa4I,EA+S3E,SAA6Be,EAAGzE,EAAGzG,GAC/B,IACImL,EAAG5J,EADH8F,EAAMrH,EAAEqH,IAG6B,GAAzC9F,EAAI8F,EAAIrH,EAAEyH,OAAQ0D,GAAU,IAAJ5J,IAAa,EAAQA,EAAI,IAAM,OAAO+G,EAAM4C,EAAGC,EAAG1E,GACjC,GAAzClF,EAAI8F,EAAIrH,EAAEyH,OAAQ0D,IAAU,IAAJ5J,IAAa,EAAQA,EAAI,IAAM,OAAO+G,EAAM4C,EAAGC,EAAG1E,GACjC,GAAzClF,EAAI8F,EAAIrH,EAAEyH,OAAQ0D,IAAU,IAAJ5J,IAAa,GAAQA,EAAI,IAAM,OAAO+G,EAAM4C,EAAGC,EAAG1E,GACjC,GAAzClF,EAAI8F,EAAIrH,EAAEyH,OAAQ0D,IAAU,IAAJ5J,IAAa,GAAQA,EAAI,IAAM,OAAO+G,EAAM4C,EAAGC,EAAG1E,GACjC,GAAzClF,EAAI8F,EAAIrH,EAAEyH,OAAQ0D,IAAU,IAAJ5J,IAAa,GAAQA,EAAI,IAAM,OAAO+G,EAAM4C,EAAGC,EAAG1E,GACjC,GAAzClF,EAAI8F,EAAIrH,EAAEyH,OAAQ0D,IAAU,EAAJ5J,IAAa,GAAQA,EAAI,IAAM,OAAO+G,EAAM4C,EAAGC,EAAG1E,GAE1E,MAAM,IAAI2E,MAAM,yCACpB,CAxTeC,CAFclB,IAAY,IAAjC5I,EAAI8F,EAAInC,KAAKuC,QAA6B,GAEVgB,EAAUvD,QAC9C,EAEAoG,aAAc,WACV,OAAOpG,KAAKmD,YAAW,EAC3B,EAEAkD,YAAa,WACT,IAAI3G,EAAMM,KAAKmD,aACf,OAAOzD,EAAM,GAAM,GAAKA,EAAM,IAAM,EAAIA,EAAM,CAClD,EAEA4G,YAAa,WACT,OAAOC,QAAQvG,KAAKmD,aACxB,EAEAqD,WAAY,WACR,IAAInM,EAAM2F,KAAKmD,aAAenD,KAAKuC,IAC/BA,EAAMvC,KAAKuC,IAGf,OAFAvC,KAAKuC,IAAMlI,EAEPA,EAAMkI,GApGY,IAoGsBQ,EA+cpD,SAA6BZ,EAAKI,EAAKlI,GACnC,OAAO0I,EAAgB0D,OAAOtE,EAAIuE,SAASnE,EAAKlI,GACpD,CA/cmBsM,CAAoB3G,KAAKmC,IAAKI,EAAKlI,GA2YtD,SAAkB8H,EAAKI,EAAKlI,GACxB,IAAIuM,EAAM,GACNtN,EAAIiJ,EAER,KAAOjJ,EAAIe,GAAK,CACZ,IASIwM,EAAIhH,EAAIiH,EATRC,EAAK5E,EAAI7I,GACTgD,EAAI,KACJ0K,EACAD,EAAK,IAAO,EACZA,EAAK,IAAO,EACZA,EAAK,IAAO,EAAI,EAEpB,GAAIzN,EAAI0N,EAAmB3M,EAAK,MAIP,IAArB2M,EACID,EAAK,MACLzK,EAAIyK,GAEoB,IAArBC,EAEa,MAAV,KADVH,EAAK1E,EAAI7I,EAAI,OAETgD,GAAU,GAALyK,IAAc,EAAY,GAALF,IACjB,MACLvK,EAAI,MAGgB,IAArB0K,GACPH,EAAK1E,EAAI7I,EAAI,GACbuG,EAAKsC,EAAI7I,EAAI,GACO,MAAV,IAALuN,IAAuC,MAAV,IAALhH,MACzBvD,GAAU,GAALyK,IAAa,IAAY,GAALF,IAAc,EAAY,GAALhH,IACrC,MAAUvD,GAAK,OAAUA,GAAK,SACnCA,EAAI,OAGgB,IAArB0K,IACPH,EAAK1E,EAAI7I,EAAI,GACbuG,EAAKsC,EAAI7I,EAAI,GACbwN,EAAK3E,EAAI7I,EAAI,GACO,MAAV,IAALuN,IAAuC,MAAV,IAALhH,IAAuC,MAAV,IAALiH,MACjDxK,GAAU,GAALyK,IAAa,IAAa,GAALF,IAAc,IAAY,GAALhH,IAAc,EAAY,GAALiH,IAC3D,OAAUxK,GAAK,WACpBA,EAAI,OAKN,OAANA,GACAA,EAAI,MACJ0K,EAAmB,GAEZ1K,EAAI,QACXA,GAAK,MACLsK,GAAOK,OAAOC,aAAa5K,IAAM,GAAK,KAAQ,OAC9CA,EAAI,MAAa,KAAJA,GAGjBsK,GAAOK,OAAOC,aAAa5K,GAC3BhD,GAAK0N,CACT,CAEA,OAAOJ,CACX,CAxceO,CAASnH,KAAKmC,IAAKI,EAAKlI,EACnC,EAEA+M,UAAW,WACP,IAAI/M,EAAM2F,KAAKmD,aAAenD,KAAKuC,IAC/BzB,EAASd,KAAKmC,IAAIuE,SAAS1G,KAAKuC,IAAKlI,GAEzC,OADA2F,KAAKuC,IAAMlI,EACJyG,CACX,EAIAuG,iBAAkB,SAASxD,EAAKN,GAC5B,GAAIvD,KAAKwC,OAASP,EAAIU,MAAO,OAAOkB,EAAIlK,KAAKqG,KAAKmD,WAAWI,IAC7D,IAAIlJ,EAAM4I,EAAcjD,MAExB,IADA6D,EAAMA,GAAO,GACN7D,KAAKuC,IAAMlI,GAAKwJ,EAAIlK,KAAKqG,KAAKmD,WAAWI,IAChD,OAAOM,CACX,EACAyD,kBAAmB,SAASzD,GACxB,GAAI7D,KAAKwC,OAASP,EAAIU,MAAO,OAAOkB,EAAIlK,KAAKqG,KAAKqG,eAClD,IAAIhM,EAAM4I,EAAcjD,MAExB,IADA6D,EAAMA,GAAO,GACN7D,KAAKuC,IAAMlI,GAAKwJ,EAAIlK,KAAKqG,KAAKqG,eACrC,OAAOxC,CACX,EACA0D,kBAAmB,SAAS1D,GACxB,GAAI7D,KAAKwC,OAASP,EAAIU,MAAO,OAAOkB,EAAIlK,KAAKqG,KAAKsG,eAClD,IAAIjM,EAAM4I,EAAcjD,MAExB,IADA6D,EAAMA,GAAO,GACN7D,KAAKuC,IAAMlI,GAAKwJ,EAAIlK,KAAKqG,KAAKsG,eACrC,OAAOzC,CACX,EACA2D,gBAAiB,SAAS3D,GACtB,GAAI7D,KAAKwC,OAASP,EAAIU,MAAO,OAAOkB,EAAIlK,KAAKqG,KAAK8F,aAClD,IAAIzL,EAAM4I,EAAcjD,MAExB,IADA6D,EAAMA,GAAO,GACN7D,KAAKuC,IAAMlI,GAAKwJ,EAAIlK,KAAKqG,KAAK8F,aACrC,OAAOjC,CACX,EACA4D,iBAAkB,SAAS5D,GACvB,GAAI7D,KAAKwC,OAASP,EAAIU,MAAO,OAAOkB,EAAIlK,KAAKqG,KAAK+F,cAClD,IAAI1L,EAAM4I,EAAcjD,MAExB,IADA6D,EAAMA,GAAO,GACN7D,KAAKuC,IAAMlI,GAAKwJ,EAAIlK,KAAKqG,KAAK+F,cACrC,OAAOlC,CACX,EACA6D,kBAAmB,SAAS7D,GACxB,GAAI7D,KAAKwC,OAASP,EAAIU,MAAO,OAAOkB,EAAIlK,KAAKqG,KAAK0F,eAClD,IAAIrL,EAAM4I,EAAcjD,MAExB,IADA6D,EAAMA,GAAO,GACN7D,KAAKuC,IAAMlI,GAAKwJ,EAAIlK,KAAKqG,KAAK0F,eACrC,OAAO7B,CACX,EACA8D,mBAAoB,SAAS9D,GACzB,GAAI7D,KAAKwC,OAASP,EAAIU,MAAO,OAAOkB,EAAIlK,KAAKqG,KAAK2F,gBAClD,IAAItL,EAAM4I,EAAcjD,MAExB,IADA6D,EAAMA,GAAO,GACN7D,KAAKuC,IAAMlI,GAAKwJ,EAAIlK,KAAKqG,KAAK2F,gBACrC,OAAO9B,CACX,EACA+D,kBAAmB,SAAS/D,GACxB,GAAI7D,KAAKwC,OAASP,EAAIU,MAAO,OAAOkB,EAAIlK,KAAKqG,KAAK4F,eAClD,IAAIvL,EAAM4I,EAAcjD,MAExB,IADA6D,EAAMA,GAAO,GACN7D,KAAKuC,IAAMlI,GAAKwJ,EAAIlK,KAAKqG,KAAK4F,eACrC,OAAO/B,CACX,EACAgE,mBAAoB,SAAShE,GACzB,GAAI7D,KAAKwC,OAASP,EAAIU,MAAO,OAAOkB,EAAIlK,KAAKqG,KAAK6F,gBAClD,IAAIxL,EAAM4I,EAAcjD,MAExB,IADA6D,EAAMA,GAAO,GACN7D,KAAKuC,IAAMlI,GAAKwJ,EAAIlK,KAAKqG,KAAK6F,gBACrC,OAAOhC,CACX,EAEA2B,KAAM,SAASP,GACX,IAAIzC,EAAa,EAANyC,EACX,GAAIzC,IAASP,EAAIQ,OAAQ,KAAOzC,KAAKmC,IAAInC,KAAKuC,OAAS,WAClD,GAAIC,IAASP,EAAIU,MAAO3C,KAAKuC,IAAMvC,KAAKmD,aAAenD,KAAKuC,SAC5D,GAAIC,IAASP,EAAIW,QAAS5C,KAAKuC,KAAO,MACtC,IAAIC,IAASP,EAAIS,QACjB,MAAM,IAAIwD,MAAM,uBAAyB1D,GADfxC,KAAKuC,KAAO,CACQ,CACvD,EAIAuF,SAAU,SAASvC,EAAK/C,GACpBxC,KAAK8D,YAAayB,GAAO,EAAK/C,EAClC,EAEAmB,QAAS,SAASlE,GAGd,IAFA,IAAI1G,EAASiH,KAAKjH,QAAU,GAErBA,EAASiH,KAAKuC,IAAM9C,GAAK1G,GAAU,EAE1C,GAAIA,IAAWiH,KAAKjH,OAAQ,CACxB,IAAIoJ,EAAM,IAAIG,WAAWvJ,GACzBoJ,EAAI4F,IAAI/H,KAAKmC,KACbnC,KAAKmC,IAAMA,EACXnC,KAAKjH,OAASA,CAClB,CACJ,EAEAiP,OAAQ,WAGJ,OAFAhI,KAAKjH,OAASiH,KAAKuC,IACnBvC,KAAKuC,IAAM,EACJvC,KAAKmC,IAAIuE,SAAS,EAAG1G,KAAKjH,OACrC,EAEAyL,aAAc,SAASS,GACnBjF,KAAK2D,QAAQ,GACbqB,EAAWhF,KAAKmC,IAAK8C,EAAKjF,KAAKuC,KAC/BvC,KAAKuC,KAAO,CAChB,EAEAmC,cAAe,SAASO,GACpBjF,KAAK2D,QAAQ,GACbqB,EAAWhF,KAAKmC,IAAK8C,EAAKjF,KAAKuC,KAC/BvC,KAAKuC,KAAO,CAChB,EAEAqC,aAAc,SAASK,GACnBjF,KAAK2D,QAAQ,GACbqB,EAAWhF,KAAKmC,KAAY,EAAP8C,EAAUjF,KAAKuC,KACpCyC,EAAWhF,KAAKmC,IAAKlI,KAAK6H,MAAMmD,EAAMnC,GAAiB9C,KAAKuC,IAAM,GAClEvC,KAAKuC,KAAO,CAChB,EAEAuC,cAAe,SAASG,GACpBjF,KAAK2D,QAAQ,GACbqB,EAAWhF,KAAKmC,KAAY,EAAP8C,EAAUjF,KAAKuC,KACpCyC,EAAWhF,KAAKmC,IAAKlI,KAAK6H,MAAMmD,EAAMnC,GAAiB9C,KAAKuC,IAAM,GAClEvC,KAAKuC,KAAO,CAChB,EAEAuB,YAAa,SAASmB,IAClBA,GAAOA,GAAO,GAEJ,WAAaA,EAAM,EAkKrC,SAAwBA,EAAK/B,GACzB,IAAIG,EAAKC,EAEL2B,GAAO,GACP5B,EAAQ4B,EAAM,WAAe,EAC7B3B,EAAQ2B,EAAM,WAAe,IAG7B3B,KAAU2B,EAAM,YAEN,YAHV5B,KAAU4B,EAAM,aAIZ5B,EAAOA,EAAM,EAAK,GAElBA,EAAM,EACNC,EAAQA,EAAO,EAAK,IAI5B,GAAI2B,GAAO,qBAAuBA,GAAO,oBACrC,MAAM,IAAIiB,MAAM,0CAGpBhD,EAAIS,QAAQ,IAMhB,SAA2BN,EAAKC,EAAMJ,GAClCA,EAAIf,IAAIe,EAAIX,OAAe,IAANc,EAAa,IAAMA,KAAS,EACjDH,EAAIf,IAAIe,EAAIX,OAAe,IAANc,EAAa,IAAMA,KAAS,EACjDH,EAAIf,IAAIe,EAAIX,OAAe,IAANc,EAAa,IAAMA,KAAS,EACjDH,EAAIf,IAAIe,EAAIX,OAAe,IAANc,EAAa,IAAMA,KAAS,EACjDH,EAAIf,IAAIe,EAAIX,KAAe,IAANc,CACzB,CAVI4E,CAAkB5E,EAAKC,EAAMJ,GAYjC,SAA4BI,EAAMJ,GAC9B,IAAIgF,GAAc,EAAP5E,IAAgB,EAEqC,GAAhEJ,EAAIf,IAAIe,EAAIX,QAAU2F,IAAgB5E,KAAU,GAAK,IAAO,IAASA,EAAM,OACX,GAAhEJ,EAAIf,IAAIe,EAAIX,OAAiB,IAAPe,IAAgBA,KAAU,GAAK,IAAO,IAASA,EAAM,OACX,GAAhEJ,EAAIf,IAAIe,EAAIX,OAAiB,IAAPe,IAAgBA,KAAU,GAAK,IAAO,IAASA,EAAM,OACX,GAAhEJ,EAAIf,IAAIe,EAAIX,OAAiB,IAAPe,IAAgBA,KAAU,GAAK,IAAO,IAASA,EAAM,OACX,GAAhEJ,EAAIf,IAAIe,EAAIX,OAAiB,IAAPe,IAAgBA,KAAU,GAAK,IAAO,IAASA,EAAM,OAC3EJ,EAAIf,IAAIe,EAAIX,OAAiB,IAAPe,CAC1B,CApBI6E,CAAmB7E,EAAMJ,EAC7B,CA3LYkF,CAAenD,EAAKjF,OAIxBA,KAAK2D,QAAQ,GAEb3D,KAAKmC,IAAInC,KAAKuC,OAAyB,IAAN0C,GAAeA,EAAM,IAAO,IAAO,GAAQA,GAAO,MACnFjF,KAAKmC,IAAInC,KAAKuC,OAAyB,KAAd0C,KAAS,IAAcA,EAAM,IAAO,IAAO,GAAQA,GAAO,MACnFjF,KAAKmC,IAAInC,KAAKuC,OAAyB,KAAd0C,KAAS,IAAcA,EAAM,IAAO,IAAO,GAAQA,GAAO,MACnFjF,KAAKmC,IAAInC,KAAKuC,OAAY0C,IAAQ,EAAK,OAC3C,EAEAjB,aAAc,SAASiB,GACnBjF,KAAK8D,YAAYmB,EAAM,EAAW,GAANA,EAAU,EAAU,EAANA,EAC9C,EAEAX,aAAc,SAASW,GACnBjF,KAAK8D,YAAYyC,QAAQtB,GAC7B,EAEAoD,YAAa,SAASzB,GAClBA,EAAMK,OAAOL,GACb5G,KAAK2D,QAAqB,EAAbiD,EAAI7N,QAEjBiH,KAAKuC,MAEL,IAAIkB,EAAWzD,KAAKuC,IAEpBvC,KAAKuC,IAsSb,SAAmBJ,EAAKyE,EAAKrE,GACzB,IAAK,IAAWjG,EAAGgM,EAAVhP,EAAI,EAAYA,EAAIsN,EAAI7N,OAAQO,IAAK,CAG1C,IAFAgD,EAAIsK,EAAI2B,WAAWjP,IAEX,OAAUgD,EAAI,MAAQ,CAC1B,IAAIgM,EAWG,CACChM,EAAI,OAAWhD,EAAI,IAAMsN,EAAI7N,QAC7BoJ,EAAII,KAAS,IACbJ,EAAII,KAAS,IACbJ,EAAII,KAAS,KAEb+F,EAAOhM,EAEX,QACJ,CAnBI,GAAIA,EAAI,MAAQ,CACZ6F,EAAII,KAAS,IACbJ,EAAII,KAAS,IACbJ,EAAII,KAAS,IACb+F,EAAOhM,EACP,QACJ,CACIA,EAAIgM,EAAO,OAAU,GAAKhM,EAAI,MAAS,MACvCgM,EAAO,IAYnB,MAAWA,IACPnG,EAAII,KAAS,IACbJ,EAAII,KAAS,IACbJ,EAAII,KAAS,IACb+F,EAAO,MAGPhM,EAAI,IACJ6F,EAAII,KAASjG,GAETA,EAAI,KACJ6F,EAAII,KAASjG,GAAK,EAAM,KAEpBA,EAAI,MACJ6F,EAAII,KAASjG,GAAK,GAAM,KAExB6F,EAAII,KAASjG,GAAK,GAAO,IACzB6F,EAAII,KAASjG,GAAK,GAAM,GAAO,KAEnC6F,EAAII,KAASjG,GAAK,EAAM,GAAO,KAEnC6F,EAAII,KAAa,GAAJjG,EAAW,IAEhC,CACA,OAAOiG,CACX,CAzVmBiG,CAAUxI,KAAKmC,IAAKyE,EAAK5G,KAAKuC,KACzC,IAAIhJ,EAAMyG,KAAKuC,IAAMkB,EAEjBlK,GAAO,KAAMiK,EAAuBC,EAAUlK,EAAKyG,MAGvDA,KAAKuC,IAAMkB,EAAW,EACtBzD,KAAK8D,YAAYvK,GACjByG,KAAKuC,KAAOhJ,CAChB,EAEA2K,WAAY,SAASe,GACjBjF,KAAK2D,QAAQ,GACbzB,EAAQR,MAAM1B,KAAKmC,IAAK8C,EAAKjF,KAAKuC,KAAK,EAAM,GAAI,GACjDvC,KAAKuC,KAAO,CAChB,EAEA6B,YAAa,SAASa,GAClBjF,KAAK2D,QAAQ,GACbzB,EAAQR,MAAM1B,KAAKmC,IAAK8C,EAAKjF,KAAKuC,KAAK,EAAM,GAAI,GACjDvC,KAAKuC,KAAO,CAChB,EAEAkG,WAAY,SAAS3H,GACjB,IAAIvH,EAAMuH,EAAO/H,OACjBiH,KAAK8D,YAAYvK,GACjByG,KAAK2D,QAAQpK,GACb,IAAK,IAAID,EAAI,EAAGA,EAAIC,EAAKD,IAAK0G,KAAKmC,IAAInC,KAAKuC,OAASzB,EAAOxH,EAChE,EAEAoP,gBAAiB,SAASC,EAAIC,GAC1B5I,KAAKuC,MAGL,IAAIkB,EAAWzD,KAAKuC,IACpBoG,EAAGC,EAAK5I,MACR,IAAIzG,EAAMyG,KAAKuC,IAAMkB,EAEjBlK,GAAO,KAAMiK,EAAuBC,EAAUlK,EAAKyG,MAGvDA,KAAKuC,IAAMkB,EAAW,EACtBzD,KAAK8D,YAAYvK,GACjByG,KAAKuC,KAAOhJ,CAChB,EAEAsP,aAAc,SAAStD,EAAKoD,EAAIC,GAC5B5I,KAAK8H,SAASvC,EAAKtD,EAAIU,OACvB3C,KAAK0I,gBAAgBC,EAAIC,EAC7B,EAEAhF,kBAAqB,SAAS2B,EAAK1B,GAAWA,EAAI9K,QAAQiH,KAAK6I,aAAatD,EAAK3B,EAAmBC,EAAQ,EAC5GE,mBAAqB,SAASwB,EAAK1B,GAAWA,EAAI9K,QAAQiH,KAAK6I,aAAatD,EAAKxB,EAAoBF,EAAO,EAC5GQ,mBAAqB,SAASkB,EAAK1B,GAAWA,EAAI9K,QAAQiH,KAAK6I,aAAatD,EAAKlB,EAAoBR,EAAO,EAC5GI,iBAAqB,SAASsB,EAAK1B,GAAWA,EAAI9K,QAAQiH,KAAK6I,aAAatD,EAAKtB,EAAkBJ,EAAS,EAC5GM,kBAAqB,SAASoB,EAAK1B,GAAWA,EAAI9K,QAAQiH,KAAK6I,aAAatD,EAAKpB,EAAmBN,EAAQ,EAC5GU,mBAAqB,SAASgB,EAAK1B,GAAWA,EAAI9K,QAAQiH,KAAK6I,aAAatD,EAAKhB,EAAoBV,EAAO,EAC5GY,oBAAqB,SAASc,EAAK1B,GAAWA,EAAI9K,QAAQiH,KAAK6I,aAAatD,EAAKd,EAAqBZ,EAAM,EAC5Gc,mBAAqB,SAASY,EAAK1B,GAAWA,EAAI9K,QAAQiH,KAAK6I,aAAatD,EAAKZ,EAAoBd,EAAO,EAC5GgB,oBAAqB,SAASU,EAAK1B,GAAWA,EAAI9K,QAAQiH,KAAK6I,aAAatD,EAAKV,EAAqBhB,EAAM,EAE5GiF,gBAAiB,SAASvD,EAAKzE,GAC3Bd,KAAK8H,SAASvC,EAAKtD,EAAIU,OACvB3C,KAAKyI,WAAW3H,EACpB,EACAiI,kBAAmB,SAASxD,EAAKN,GAC7BjF,KAAK8H,SAASvC,EAAKtD,EAAIW,SACvB5C,KAAKwE,aAAaS,EACtB,EACA+D,mBAAoB,SAASzD,EAAKN,GAC9BjF,KAAK8H,SAASvC,EAAKtD,EAAIW,SACvB5C,KAAK0E,cAAcO,EACvB,EACAgE,kBAAmB,SAAS1D,EAAKN,GAC7BjF,KAAK8H,SAASvC,EAAKtD,EAAIS,SACvB1C,KAAK4E,aAAaK,EACtB,EACAiE,mBAAoB,SAAS3D,EAAKN,GAC9BjF,KAAK8H,SAASvC,EAAKtD,EAAIS,SACvB1C,KAAK8E,cAAcG,EACvB,EACAkE,iBAAkB,SAAS5D,EAAKN,GAC5BjF,KAAK8H,SAASvC,EAAKtD,EAAIQ,QACvBzC,KAAK8D,YAAYmB,EACrB,EACAmE,kBAAmB,SAAS7D,EAAKN,GAC7BjF,KAAK8H,SAASvC,EAAKtD,EAAIQ,QACvBzC,KAAKgE,aAAaiB,EACtB,EACAoE,iBAAkB,SAAS9D,EAAKqB,GAC5B5G,KAAK8H,SAASvC,EAAKtD,EAAIU,OACvB3C,KAAKqI,YAAYzB,EACrB,EACA0C,gBAAiB,SAAS/D,EAAKN,GAC3BjF,KAAK8H,SAASvC,EAAKtD,EAAIW,SACvB5C,KAAKkE,WAAWe,EACpB,EACAsE,iBAAkB,SAAShE,EAAKN,GAC5BjF,KAAK8H,SAASvC,EAAKtD,EAAIS,SACvB1C,KAAKoE,YAAYa,EACrB,EACAuE,kBAAmB,SAASjE,EAAKN,GAC7BjF,KAAKmJ,iBAAiB5D,EAAKgB,QAAQtB,GACvC,E,sEC/YG,IAAIwE,EAAa,EACbC,EAAa,EACbC,EAAgB,EAEhBC,EAAc,EACdC,EAAsB,QACtBC,EAAsB,YACtBC,EAAqB,qBACrBC,EAAa,oBACbC,EAAUhQ,KAAKiQ,GAAG,EAElBC,EAAQ,mBAERC,EAAM,mBAENC,EAAM,oBACNC,EAAQ,MAIRC,EAAM,oBACNC,EAAM,kBACNC,EAASxQ,KAAKiQ,GAAG,EACjBQ,EAAmB,EAAVzQ,KAAKiQ,GAKdS,EAAM,cC5Bb,EAAU,CAGd,UAAoB,EACpB,QAAkB,eAClB,MAAgB,eAChB,QAAkB,gBAClB,QAAkB,eAClB,KAAe,gBACf,KAAe,eACf,QAAkB,iBAClB,OAAiB,gBACjB,SAAmB,SACnB,UAAoB,gBACpB,OAAiB,WACjB,KAAe,iBCff,GACEC,GAAI,CAACC,SAAU,OACf,QAAS,CAACA,SAAU,KAAO,OCFzBC,EAAc,iBACH,SAASC,EAAMnC,EAAKoC,GACjC,GAAIpC,EAAIoC,GACN,OAAOpC,EAAIoC,GAMb,IAJA,IAGIC,EAHAC,EAAOC,OAAOD,KAAKtC,GACnBwC,EAAOJ,EAAIK,cAAcC,QAAQR,EAAa,IAC9CxR,GAAK,IAEAA,EAAI4R,EAAKnS,QAGhB,IAFAkS,EAAUC,EAAK5R,IACQ+R,cAAcC,QAAQR,EAAa,MACrCM,EACnB,OAAOxC,EAAIqC,EAGjB,CCXe,WAASM,GACtB,IAWIC,EAAWC,EAAUC,EAXrBC,EAAO,CAAC,EACRC,EAAWL,EAAQM,MAAM,KAAKC,KAAI,SAASC,GAC7C,OAAOA,EAAEC,MACX,IAAGC,QAAO,SAAS7P,GACjB,OAAOA,CACT,IAAG8P,QAAO,SAASpR,EAAGsB,GACpB,IAAIyP,EAAQzP,EAAEyP,MAAM,KAGpB,OAFAA,EAAMlS,MAAK,GACXmB,EAAE+Q,EAAM,GAAGR,eAAiBQ,EAAM,GAC3B/Q,CACT,GAAG,CAAC,GAEAqR,EAAS,CACXC,KAAM,WACNC,MAAO,YACPC,GAAI,SAASP,GACXJ,EAAKW,GAAKC,WAAWR,EACvB,EACAS,MAAO,SAAST,GACdJ,EAAKc,KAAOV,EAAIxB,CAClB,EACAmC,MAAO,SAASX,GACdJ,EAAKgB,KAAOZ,EAAIxB,CAClB,EACAqC,MAAO,SAASb,GACdJ,EAAKkB,KAAOd,EAAIxB,CAClB,EACAuC,OAAQ,SAASf,GACfJ,EAAKmB,OAASf,EAAIxB,CACpB,EACAwC,MAAO,SAAShB,GACdJ,EAAKqB,MAAQjB,EAAIxB,CACnB,EACA0C,MAAO,SAASlB,GACdJ,EAAKuB,MAAQnB,EAAIxB,CACnB,EACA4C,MAAO,SAASpB,GACdJ,EAAKyB,MAAQrB,EAAIxB,CACnB,EACA8C,MAAO,SAAStB,GACdJ,EAAK0B,MAAQd,WAAWR,GAAKxB,CAC/B,EACA+C,MAAO,SAASvB,GACdJ,EAAK4B,qBAAuBhB,WAAWR,EACzC,EACAyB,KAAM,SAASzB,GACbJ,EAAK8B,MAAQ1B,EAAIxB,CACnB,EACAmD,IAAK,SAAS3B,GACZJ,EAAK9O,GAAK0P,WAAWR,EACvB,EACA4B,IAAK,SAAS5B,GACZJ,EAAK7O,GAAKyP,WAAWR,EACvB,EACA6B,IAAK,SAAS7B,GACZJ,EAAKkC,GAAKtB,WAAWR,EACvB,EACA+B,EAAG,SAAS/B,GACVJ,EAAKkC,GAAKtB,WAAWR,EACvB,EACA3P,EAAG,SAAS2P,GACVJ,EAAKvP,EAAImQ,WAAWR,EACtB,EACA1P,EAAG,SAAS0P,GACVJ,EAAKtP,EAAIkQ,WAAWR,EACtB,EACAgC,IAAK,WACHpC,EAAKqC,KAAM,CACb,EACAC,KAAM,SAASlC,GACbJ,EAAKsC,KAAOC,SAASnC,EAAG,GAC1B,EACAoC,MAAO,WACLxC,EAAKyC,UAAW,CAClB,EACAC,QAAS,SAAStC,GAChBJ,EAAK2C,aAAevC,EAAEF,MAAM,KAAKC,KAAI,SAAS1P,GAC5C,OAAOmQ,WAAWnQ,EACpB,GACF,EACAyO,SAAU,SAASkB,GACjBJ,EAAKd,SAAW0B,WAAWR,EAC7B,EACAwC,MAAO,SAASxC,GACdJ,EAAK4C,MAAQxC,EACb,IAAIyC,EAAOzD,EAAMwD,EAAOxC,GACpByC,IACF7C,EAAKd,SAAW2D,EAAK3D,SAEzB,EACA4D,eAAgB,SAAS1C,GACvBJ,EAAK8C,eAAiB1C,EAAIxB,CAC5B,EACAmE,GAAI,SAAS3C,GACX,IAAI2C,EAAK3D,EAAM,EAAegB,GAC9BJ,EAAK8C,gBAAkBC,GAAUnC,WAAWR,IAAMxB,CACpD,EACAoE,SAAU,SAAS5C,GACP,UAANA,EACFJ,EAAKiD,UAAY,OAGjBjD,EAAKgD,SAAW5C,CAEpB,EACA8C,KAAM,SAAS9C,GACb,IAAI+C,EAAY,SACC,IAAb/C,EAAEhT,SAAuD,IAAvC+V,EAAUC,QAAQhD,EAAEiD,OAAO,EAAG,MAAqD,IAAvCF,EAAUC,QAAQhD,EAAEiD,OAAO,EAAG,MAAqD,IAAvCF,EAAUC,QAAQhD,EAAEiD,OAAO,EAAG,MAC1IrD,EAAKkD,KAAO9C,EAEhB,EACAkD,OAAQ,WACNtD,EAAKsD,QAAS,CAChB,GAEF,IAAKzD,KAAaI,EAChBH,EAAWG,EAASJ,GAChBA,KAAaW,EAEa,mBAD5BT,EAAeS,EAAOX,IAEpBE,EAAaD,GAGbE,EAAKD,GAAgBD,EAIvBE,EAAKH,GAAaC,EAMtB,MAH6B,iBAAnBE,EAAKiD,WAA6C,UAAnBjD,EAAKiD,YAC5CjD,EAAKiD,UAAYjD,EAAKiD,UAAUvD,eAE3BM,CACT,CC5IA,MAqKA,SAAqBuD,GACnB,IAAIC,EAAS,IAAIC,EAAOF,GACxB,OAAOC,EAAOE,QAChB,EAtKIC,EAAU,EAMVC,EAAa,KACbC,EAAQ,WACRC,EAAU,cACVC,EAAY,QACZC,EAAS,cAEb,SAASP,EAAOQ,GACd,GAAoB,iBAATA,EACT,MAAM,IAAI1J,MAAM,gBAElBlG,KAAK4P,KAAOA,EAAK5D,OACjBhM,KAAK6P,MAAQ,EACb7P,KAAK8P,MAAQ,EACb9P,KAAK+P,KAAO,KACZ/P,KAAKgQ,MAAQ,GACbhQ,KAAKiQ,cAAgB,KACrBjQ,KAAKkQ,MAAQZ,CACf,CCvBA,SAASa,EAAMvH,EAAKoC,EAAKrJ,GACnByO,MAAMC,QAAQrF,KAChBrJ,EAAM2O,QAAQtF,GACdA,EAAM,MAER,IAAIuF,EAAQvF,EAAM,CAAC,EAAIpC,EAEnB4H,EAAM7O,EAAMuK,QAAO,SAASuE,EAAQC,GAEtC,OADAC,EAAMD,EAAMD,GACLA,CACT,GAAGF,GACCvF,IACFpC,EAAIoC,GAAOwF,EAEf,CAEO,SAASG,EAAM5E,EAAGnD,GACvB,GAAKwH,MAAMC,QAAQtE,GAAnB,CAIA,IAAIf,EAAMe,EAAE6E,QAIZ,GAHY,cAAR5F,IACFA,EAAMe,EAAE6E,SAEO,IAAb7E,EAAEhT,OACJ,OAAIqX,MAAMC,QAAQtE,EAAE,KAClBnD,EAAIoC,GAAO,CAAC,OACZ2F,EAAM5E,EAAE,GAAInD,EAAIoC,UAGlBpC,EAAIoC,GAAOe,EAAE,IAGf,GAAKA,EAAEhT,OAIP,GAAY,YAARiS,EAAJ,CAIA,GAAY,SAARA,EAKF,OAJMA,KAAOpC,IACXA,EAAIoC,GAAO,SAEbpC,EAAIoC,GAAKrR,KAAKoS,GAOhB,IAAIzS,EACJ,OALK8W,MAAMC,QAAQrF,KACjBpC,EAAIoC,GAAO,CAAC,GAINA,GACN,IAAK,OACL,IAAK,SACL,IAAK,aAQH,OAPApC,EAAIoC,GAAO,CACT6F,KAAM9E,EAAE,GAAGV,cACXyF,QAAS/E,EAAE,SAEI,IAAbA,EAAEhT,QACJ4X,EAAM5E,EAAE,GAAInD,EAAIoC,KAGpB,IAAK,WACL,IAAK,YASH,OARApC,EAAIoC,GAAO,CACT6F,KAAM9E,EAAE,GACR3P,EAAG2P,EAAE,GACLO,GAAIP,EAAE,SAES,IAAbA,EAAEhT,QACJ4X,EAAM5E,EAAE,GAAInD,EAAIoC,KAGpB,IAAK,eACL,IAAK,UACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,WACL,IAAK,UACL,IAAK,cACL,IAAK,gBACL,IAAK,SACL,IAAK,mBACL,IAAK,UACL,IAAK,UACL,IAAK,cACL,IAAK,WACL,IAAK,cACL,IAAK,iBACL,IAAK,SACL,IAAK,YACL,IAAK,cACL,IAAK,QAGH,OAFAe,EAAE,GAAK,CAAC,OAAQA,EAAE,SAClBoE,EAAMvH,EAAKoC,EAAKe,GAElB,QAEE,IADAzS,GAAK,IACIA,EAAIyS,EAAEhT,QACb,IAAKqX,MAAMC,QAAQtE,EAAEzS,IACnB,OAAOqX,EAAM5E,EAAGnD,EAAIoC,IAGxB,OAAOmF,EAAMvH,EAAKoC,EAAKe,GAnE3B,MAFEnD,EAAIoC,GAAOe,OAJXnD,EAAIoC,IAAO,CAfb,MAFEpC,EAAImD,IAAK,CA4Fb,CDtFAqD,EAAOjK,UAAU4L,cAAgB,WAC/B,IAAIC,EAAOhR,KAAK4P,KAAK5P,KAAK8P,SAC1B,GAvBW,IAuBP9P,KAAKkQ,MACP,KAAOX,EAAW0B,KAAKD,IAAO,CAC5B,GAAIhR,KAAK8P,OAAS9P,KAAK4P,KAAK7W,OAC1B,OAEFiY,EAAOhR,KAAK4P,KAAK5P,KAAK8P,QACxB,CAEF,OAAQ9P,KAAKkQ,OACX,KAAKZ,EACH,OAAOtP,KAAKkR,QAAQF,GACtB,KApCU,EAqCR,OAAOhR,KAAKyP,QAAQuB,GACtB,KApCS,EAqCP,OAAOhR,KAAKmR,OAAOH,GACrB,KArCa,EAsCX,OAAOhR,KAAKoR,WAAWJ,GACzB,KAzCS,EA0CP,OAAOhR,KAAKqR,OAAOL,GACrB,KAxCQ,EAyCN,OAEN,EACA5B,EAAOjK,UAAUiM,WAAa,SAASJ,GACrC,GAAa,MAATA,EAGF,OAFAhR,KAAKsR,MAAQ,SACbtR,KAAKkQ,MAjDI,GAoDX,GAAIR,EAAUuB,KAAKD,GAGjB,OAFAhR,KAAKsR,KAAOtR,KAAKsR,KAAKtF,YACtBhM,KAAKuR,UAAUP,GAGjB,MAAM,IAAI9K,MAAM,oBAAqB8K,EAAO,8BAAgChR,KAAK8P,MACnF,EACAV,EAAOjK,UAAUoM,UAAY,SAASP,GACpC,MAAa,MAATA,GACgB,OAAdhR,KAAKsR,MACPtR,KAAKiQ,cAActW,KAAKqG,KAAKsR,MAE/BtR,KAAKsR,KAAO,UACZtR,KAAKkQ,MAAQZ,IAGF,MAAT0B,GACFhR,KAAK6P,QACa,OAAd7P,KAAKsR,OACPtR,KAAKiQ,cAActW,KAAKqG,KAAKsR,MAC7BtR,KAAKsR,KAAO,MAEdtR,KAAKkQ,MAAQZ,EACbtP,KAAKiQ,cAAgBjQ,KAAKgQ,MAAMwB,WAC3BxR,KAAKiQ,gBACRjQ,KAAKkQ,OA3EC,UAkEV,CAcF,EACAd,EAAOjK,UAAUkM,OAAS,SAASL,GACjC,IAAIrB,EAAOsB,KAAKD,GAAhB,CAIA,GAAItB,EAAUuB,KAAKD,GAGjB,OAFAhR,KAAKsR,KAAO/E,WAAWvM,KAAKsR,WAC5BtR,KAAKuR,UAAUP,GAGjB,MAAM,IAAI9K,MAAM,oBAAqB8K,EAAO,0BAA4BhR,KAAK8P,MAN7E,CAFE9P,KAAKsR,MAAQN,CASjB,EACA5B,EAAOjK,UAAUgM,OAAS,SAASH,GACpB,MAATA,EAIJhR,KAAKsR,MAAQN,EAHXhR,KAAKkQ,MAhGQ,CAqGjB,EACAd,EAAOjK,UAAUsK,QAAU,SAASuB,GAClC,GAAIvB,EAAQwB,KAAKD,GACfhR,KAAKsR,MAAQN,MADf,CAIA,GAAa,MAATA,EAAc,CAChB,IAAIS,EAAa,GAWjB,OAVAA,EAAW9X,KAAKqG,KAAKsR,MACrBtR,KAAK6P,QACa,OAAd7P,KAAK+P,KACP/P,KAAK+P,KAAO0B,EAEZzR,KAAKiQ,cAActW,KAAK8X,GAE1BzR,KAAKgQ,MAAMrW,KAAKqG,KAAKiQ,eACrBjQ,KAAKiQ,cAAgBwB,OACrBzR,KAAKkQ,MAAQZ,EAEf,CACA,IAAII,EAAUuB,KAAKD,GAInB,MAAM,IAAI9K,MAAM,oBAAqB8K,EAAO,2BAA6BhR,KAAK8P,OAH5E9P,KAAKuR,UAAUP,EAhBjB,CAoBF,EACA5B,EAAOjK,UAAU+L,QAAU,SAASF,GAClC,GAAIxB,EAAMyB,KAAKD,GAGb,OAFAhR,KAAKsR,KAAON,OACZhR,KAAKkQ,MArIK,GAwIZ,GAAa,MAATc,EAGF,OAFAhR,KAAKsR,KAAO,QACZtR,KAAKkQ,MAxII,GA2IX,GAAIP,EAAOsB,KAAKD,GAGd,OAFAhR,KAAKsR,KAAON,OACZhR,KAAKkQ,MA9II,GAiJX,IAAIR,EAAUuB,KAAKD,GAInB,MAAM,IAAI9K,MAAM,oBAAqB8K,EAAO,2BAA6BhR,KAAK8P,OAH5E9P,KAAKuR,UAAUP,EAInB,EACA5B,EAAOjK,UAAUkK,OAAS,WACxB,KAAOrP,KAAK8P,MAAQ9P,KAAK4P,KAAK7W,QAC5BiH,KAAK+Q,gBAEP,IAxJU,IAwJN/Q,KAAKkQ,MACP,OAAOlQ,KAAK+P,KAEd,MAAM,IAAI7J,MAAM,2BAA4BlG,KAAK4P,KAAO,eAAiB5P,KAAKkQ,MAChF,EEnKA,IAAI,EAAM,oBAiBV,SAASwB,EAAIC,GACX,OAAOA,EAAQ,CACjB,CA+Ke,WAASC,GACtB,IAAIC,EAAO1C,EAAOyC,GACdpP,EAAOqP,EAAKjB,QACZC,EAAOgB,EAAKjB,QAChBiB,EAAKvB,QAAQ,CAAC,OAAQO,IACtBgB,EAAKvB,QAAQ,CAAC,OAAQ9N,IACtB,IAAIoG,EAAM,CAAC,EAGX,OAFA+H,EAAMkB,EAAMjJ,GApLd,SAAkBgJ,GAahB,GAZiB,WAAbA,EAAIpP,KACNoP,EAAIE,SAAW,UACO,aAAbF,EAAIpP,MACboP,EAAIE,SAAW,WACfF,EAAIG,OAAQ,GAEkB,iBAAnBH,EAAII,WACbJ,EAAIE,SAAW3G,OAAOD,KAAK0G,EAAII,YAAY,GAE3CJ,EAAIE,SAAWF,EAAII,WAGnBJ,EAAIK,KAAM,CAEZ,IADA,IAAIC,EAAY,GACP5Y,EAAI,EAAG6Y,EAAKP,EAAIK,KAAKlZ,OAAQO,EAAI6Y,IAAM7Y,EAAG,CACjD,IAAIuV,EAAO,CAAC+C,EAAIK,KAAK3Y,GAAG,GAAG+R,cAAeuG,EAAIK,KAAK3Y,GAAG,GAAG+R,gBACvB,IAA9BwD,EAAK,GAAGE,QAAQ,WAAiC,MAAZF,EAAK,IAA0B,QAAZA,EAAK,KAA6B,UAAZA,EAAK,GACrFqD,GAAa,KAC0B,IAA9BrD,EAAK,GAAGE,QAAQ,WAAiC,MAAZF,EAAK,IAA0B,QAAZA,EAAK,KAA6B,UAAZA,EAAK,GAC5FqD,GAAa,KACyB,IAA7BrD,EAAK,GAAGE,QAAQ,UAAgC,MAAZF,EAAK,IAA0B,QAAZA,EAAK,KAA6B,SAAZA,EAAK,GAC3FqD,GAAa,KACyB,IAA7BrD,EAAK,GAAGE,QAAQ,UAAgC,MAAZF,EAAK,IAA0B,QAAZA,EAAK,IAA6B,SAAZA,EAAK,MAC3FqD,GAAa,IAEjB,CACyB,IAArBA,EAAUnZ,SACZmZ,GAAa,KAEU,IAArBA,EAAUnZ,SACZ6Y,EAAI/C,KAAOqD,EAEf,CACIN,EAAIQ,OACNR,EAAIrD,MAAQqD,EAAIQ,KAAKvB,KAAKxF,cACR,UAAduG,EAAIrD,QACNqD,EAAIrD,MAAQ,SAEVqD,EAAIQ,KAAKtB,UACM,WAAbc,EAAIpP,KACFoP,EAAIS,OAAST,EAAIS,MAAMC,WACzBV,EAAI/G,SAAW+G,EAAIQ,KAAKtB,QAAQc,EAAIS,MAAMC,SAASlW,GAGrDwV,EAAI/G,SAAW+G,EAAIQ,KAAKtB,UAI9B,IAAIyB,EAASX,EAAIY,OAoEjB,SAASC,EAAQd,GAEf,OAAOA,GADKC,EAAI/G,UAAY,EAE9B,CAtEiB,WAAb+G,EAAIpP,OACN+P,EAASX,GAEPW,IAIEA,EAAOF,MACTT,EAAIhD,UAAY2D,EAAOF,MAAMxB,KAAKxF,cAElCuG,EAAIhD,UAAY2D,EAAO1B,KAAKxF,cAEI,OAA9BuG,EAAIhD,UAAU8D,MAAM,EAAG,KACzBd,EAAIhD,UAAYgD,EAAIhD,UAAU8D,MAAM,IAEhB,oCAAlBd,EAAIhD,WAAqE,qBAAlBgD,EAAIhD,YAC7DgD,EAAIhD,UAAY,UAEI,aAAlBgD,EAAIhD,WAA8C,+BAAlBgD,EAAIhD,YACf,8BAAnBgD,EAAII,aACNJ,EAAIe,QAAS,GAEff,EAAIhD,UAAY,SAEc,WAA5BgD,EAAIhD,UAAU8D,OAAO,KACvBd,EAAIhD,UAAYgD,EAAIhD,UAAU8D,MAAM,GAAK,IAEX,aAA5Bd,EAAIhD,UAAU8D,OAAO,KACvBd,EAAIhD,UAAYgD,EAAIhD,UAAU8D,MAAM,GAAK,KAEtCd,EAAIhD,UAAUG,QAAQ,WACzB6C,EAAIhD,UAAY,SAEd2D,EAAOF,OAASE,EAAOF,MAAMC,WAC/BV,EAAIgB,MAAQL,EAAOF,MAAMC,SAASzB,KAAKvF,QAAQ,MAAO,IAAIA,QAAQ,gBAAiB,QACtC,kBAAzCsG,EAAIgB,MAAMvH,cAAcqH,MAAM,EAAG,MACnCd,EAAIgB,MAAQ,QAGdhB,EAAIxV,EAAImW,EAAOF,MAAMC,SAASlW,EAC9BwV,EAAItF,GAAKC,WAAWgG,EAAOF,MAAMC,SAAShG,GAAI,KAG5CiG,EAAOF,OAASE,EAAOF,MAAMQ,UAC/BjB,EAAItD,aAAeiE,EAAOF,MAAMQ,UAE7BjB,EAAIhD,UAAUG,QAAQ,eACzB6C,EAAIhD,UAAY,WAEbgD,EAAIhD,UAAUG,QAAQ,eACzB6C,EAAIhD,UAAY,YAEbgD,EAAIhD,UAAUG,QAAQ,UACrB6C,EAAIhD,UAAUG,QAAQ,6BAC1B6C,EAAIhD,UAAY,SAEI,YAAlBgD,EAAIhD,YACNgD,EAAIhD,UAAY,WAEbgD,EAAIhD,UAAUG,QAAQ,YACzB6C,EAAIhD,UAAY,UAGhBgD,EAAIvV,IAAMyW,SAASlB,EAAIvV,KACzBuV,EAAIvV,EAAIuV,EAAIxV,GAUH,CACT,CAAC,sBAAuB,uBACxB,CAAC,sBAAuB,qCACxB,CAAC,sBAAuB,uBACxB,CAAC,sBAAuB,qCACxB,CAAC,gBAAiB,iBAClB,CAAC,gBAAiB,iBAClB,CAAC,gBAAiB,2BAClB,CAAC,iBAAkB,kBACnB,CAAC,iBAAkB,kBACnB,CAAC,iBAAkB,4BACnB,CAAC,mBAAoB,oBACrB,CAAC,mBAAoB,+BACrB,CAAC,mBAAoB,6BACrB,CAAC,qBAAsB,sBACvB,CAAC,qBAAsB,oBACvB,CAAC,qBAAsB,8BACvB,CAAC,qBAAsB,4BACvB,CAAC,eAAgB,gBACjB,CAAC,KAAM,gBACP,CAAC,qBAAsB,sBACvB,CAAC,qBAAsB,sBACvB,CAAC,OAAQ,qBAAsBsV,GAC/B,CAAC,sBAAuB,uBACxB,CAAC,sBAAuB,uBACxB,CAAC,QAAS,sBAAuBA,GACjC,CAAC,KAAM,gBAAiBe,GACxB,CAAC,KAAM,iBAAkBA,GACzB,CAAC,QAAS,mBAAoBf,GAC9B,CAAC,OAAQ,qBAAsBA,GAC/B,CAAC,OAAQ,sBAAuBA,GAChC,CAAC,OAAQ,sBAAuBA,GAChC,CAAC,OAAQ,sBAAuBA,GAChC,CAAC,UAAW,WACZ,CAAC,QAAS,UAAWA,GACrB,CAAC,UAAW,SAETqB,SAxCS,SAAS3W,GACrB,OAzIJ,SAAgBwM,EAAKuD,GACnB,IAAI6G,EAAU7G,EAAO,GACjB8G,EAAS9G,EAAO,KACd6G,KAAWpK,IAASqK,KAAUrK,IAClCA,EAAIoK,GAAWpK,EAAIqK,GACG,IAAlB9G,EAAOpT,SACT6P,EAAIoK,GAAW7G,EAAO,GAAGvD,EAAIoK,KAGnC,CAgIWE,CAAOtB,EAAKxV,EACrB,IAuCKwV,EAAI5E,QAAS4E,EAAInE,OAA2B,4BAAjBmE,EAAIE,UAA2D,iCAAjBF,EAAIE,WAChFF,EAAI5E,MAAQ4E,EAAInE,OAEbmE,EAAI9E,SAAU8E,EAAIjF,MAA0B,6BAAjBiF,EAAIE,UAA4D,oCAAjBF,EAAIE,UAGvEF,EAAI9E,QAAU8E,EAAInF,MAAyB,wBAAjBmF,EAAIE,WACxCF,EAAI9E,OAAS8E,EAAInF,KACjBmF,EAAInF,KAAOiF,EAAIE,EAAInF,KAAO,EAAI,IAAM,MAJpCmF,EAAInF,KAAOiF,EAAIE,EAAIjF,KAAO,EAAI,IAAM,IACpCiF,EAAI9E,OAAS8E,EAAIjF,KAKrB,CASEwG,CAASvK,GACFA,CACT,CCxMA,SAASwK,EAAKvC,GAEZ,IAAIwC,EAAOrT,KACX,GAAyB,IAArBsT,UAAUva,OAAc,CAC1B,IAAIwa,EAAMD,UAAU,GACD,iBAARC,EACa,MAAlBA,EAAIC,OAAO,GACbJ,EAAKvC,GAAQ,EAAUyC,UAAU,IAGjCF,EAAKvC,GAAQ,EAAIyC,UAAU,IAG7BF,EAAKvC,GAAQ0C,CAEjB,MACK,GAAyB,IAArBD,UAAUva,OAAc,CAC/B,GAAIqX,MAAMC,QAAQQ,GAChB,OAAOA,EAAK/E,KAAI,SAASC,GACnBqE,MAAMC,QAAQtE,GAChBqH,EAAKK,MAAMJ,EAAMtH,GAGjBqH,EAAKrH,EAET,IAEG,GAAoB,iBAAT8E,GACd,GAAIA,KAAQuC,EACV,OAAOA,EAAKvC,OAGP,SAAUA,EACjBuC,EAAK,QAAUvC,EAAK6C,MAAQ7C,EAErB,SAAUA,EACjBuC,EAAK,QAAUvC,EAAK8C,MAAQ9C,EAErB,YAAaA,EACpBuC,EAAK,WAAavC,EAAK+C,SAAW/C,EAGlCgD,QAAQ9R,IAAI8O,GAEd,MACF,CAGF,ECpDe,SAASuC,GACtBA,EAAK,YAAa,mFAClBA,EAAK,YAAa,mHAClBA,EAAK,YAAa,oJAElBA,EAAKU,MAAQV,EAAK,aAClBA,EAAK,aAAeA,EAAK,aACzBA,EAAKW,OAASX,EAAK,aACnBA,EAAK,eAAiBA,EAAK,aAC3BA,EAAK,eAAiBA,EAAK,YAC7B,CD2CAY,CAAQZ,GACR,QE5CA,IAAIa,EAAY,CAAC,eAAgB,UAAW,SAAS,SAAS,SAAS,WAAY,UAAW,cAAe,gBAAiB,SAAU,kBAMxI,IAAIC,EAAQ,CAAC,OAAQ,SAAU,OAAQ,UA6CvC,MA1BA,SAAeC,GACb,IAhCF,SAAiBA,GACf,MAAuB,iBAATA,CAChB,CA8BMC,CAAQD,GAqBV,OAAOA,EAnBP,GA/BJ,SAAiBA,GACf,OAAOA,KAAQ,CACjB,CA6BQE,CAAQF,GACV,OAAO,EAAKA,GAEd,GA9BJ,SAAiBA,GACf,OAAOF,EAAUK,MAAK,SAAUhD,GAC9B,OAAO6C,EAAKpF,QAAQuC,IAAS,CAC/B,GACF,CA0BQiD,CAAQJ,GAAO,CACjB,IAAI3D,EAAM,EAAI2D,GAEd,GA3BN,SAAuBzD,GACrB,IAAI8D,EAAOzJ,EAAM2F,EAAM,aACvB,GAAK8D,EAAL,CAGA,IAAIL,EAAOpJ,EAAMyJ,EAAM,QACvB,OAAOL,GAAQD,EAAMnF,QAAQoF,IAAS,CAFtC,CAGF,CAoBUM,CAAcjE,GAChB,OAAO,EAAK,aAEd,IAAIkE,EAtBV,SAAsBhE,GACpB,IAAIiE,EAAM5J,EAAM2F,EAAM,aACtB,GAAKiE,EAGL,OAAO5J,EAAM4J,EAAK,QACpB,CAgByBC,CAAapE,GAChC,OAAIkE,EACK,EAAQA,GAEVlE,CACT,CACA,OArBJ,SAAkB2D,GAChB,MAAmB,MAAZA,EAAK,EACd,CAmBQU,CAASV,GACJ,EAAQA,QADjB,CAMJ,EC3De,WAASW,EAAaC,GAEnC,IAAIpT,EAAOqT,EACX,GAFAF,EAAcA,GAAe,CAAC,GAEzBC,EACH,OAAOD,EAET,IAAKE,KAAYD,OAEDE,KADdtT,EAAQoT,EAAOC,MAEbF,EAAYE,GAAYrT,GAG5B,OAAOmT,CACT,CCbe,WAASI,EAAQC,EAAQC,GACtC,IAAIC,EAAMH,EAASC,EACnB,OAAOC,EAAUnb,KAAKqb,KAAK,EAAID,EAAMA,EACvC,CCHe,WAAS1c,GACtB,OAAOA,EAAE,GAAK,EAAI,CACpB,CCEe,WAASA,GACtB,OAAQsB,KAAKmE,IAAIzF,IAAMgS,EAAOhS,EAAKA,EAAKyG,EAAKzG,GAAK+R,CACpD,CCJe,WAASwK,EAAQK,EAAKJ,GACnC,IAAIE,EAAMH,EAASC,EACfK,EAAM,GAAMN,EAEhB,OADAG,EAAMpb,KAAKwH,KAAM,EAAI4T,IAAQ,EAAIA,GAAOG,GAChCvb,KAAK+D,IAAI,IAAOiM,EAAUsL,IAAQF,CAC5C,CCLe,WAASH,EAAQO,GAI9B,IAHA,IACIJ,EAAKK,EADLC,EAAS,GAAMT,EAEfK,EAAMtL,EAAU,EAAIhQ,KAAK2b,KAAKH,GACzBnc,EAAI,EAAGA,GAAK,GAAIA,IAIvB,GAHA+b,EAAMH,EAASjb,KAAK4b,IAAIN,GAExBA,GADAG,EAAOzL,EAAU,EAAIhQ,KAAK2b,KAAKH,EAAMxb,KAAKwH,KAAM,EAAI4T,IAAQ,EAAIA,GAAOM,IAAYJ,EAE/Etb,KAAKmE,IAAIsX,IAAS,MACpB,OAAOH,EAIX,OAAQ,IACV,CCZA,SAASO,EAASC,GAChB,OAAOA,CACT,CAGO,ICPHC,EAAQ,CC4FZ,CACEC,KAzFK,WACL,IAAIZ,EAAMrV,KAAK3D,EAAI2D,KAAK5D,EACxB4D,KAAKkW,GAAK,EAAIb,EAAMA,EACf,OAAQrV,OACXA,KAAKnD,GAAK,GAEP,OAAQmD,OACXA,KAAKlD,GAAK,GAEZkD,KAAKzE,EAAItB,KAAKqb,KAAKtV,KAAKkW,IACpBlW,KAAK8M,OACH9M,KAAK2S,OACP3S,KAAK6N,GAAK5T,KAAKkc,IAAInW,KAAK8M,QAGxB9M,KAAK6N,GAAKuI,EAAMpW,KAAKzE,EAAGtB,KAAK4b,IAAI7V,KAAK8M,QAAS7S,KAAKkc,IAAInW,KAAK8M,SAI1D9M,KAAK6N,KACJ7N,KAAK8N,EACP9N,KAAK6N,GAAK7N,KAAK8N,EAGf9N,KAAK6N,GAAK,EAIlB,EA8DEwI,QAzDK,SAAiBvb,GACtB,IAOInC,EAAGC,EAPH0d,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAEZ,GAAI2d,EAAM/L,EAAM,IAAM+L,EAAM/L,GAAO,IAAM8L,EAAM9L,EAAM,KAAO8L,EAAM9L,GAAO,IACvE,OAAO,KAIT,GAAIvQ,KAAKmE,IAAInE,KAAKmE,IAAImY,GAAOtM,IAAYK,EACvC,OAAO,KAGP,GAAItK,KAAK2S,OACPha,EAAIqH,KAAKnD,GAAKmD,KAAK5D,EAAI4D,KAAK6N,GAAK2I,EAAWF,EAAMtW,KAAKgN,OACvDpU,EAAIoH,KAAKlD,GAAKkD,KAAK5D,EAAI4D,KAAK6N,GAAK5T,KAAK8H,IAAI9H,KAAK+D,IAAIyM,EAAS,GAAM8L,QAE/D,CACH,IAAIpB,EAASlb,KAAK4b,IAAIU,GAClBd,EAAKgB,EAAMzW,KAAKzE,EAAGgb,EAAKpB,GAC5Bxc,EAAIqH,KAAKnD,GAAKmD,KAAK5D,EAAI4D,KAAK6N,GAAK2I,EAAWF,EAAMtW,KAAKgN,OACvDpU,EAAIoH,KAAKlD,GAAKkD,KAAK5D,EAAI4D,KAAK6N,GAAK5T,KAAK8H,IAAI0T,EAC5C,CAGA,OAFA3a,EAAEnC,EAAIA,EACNmC,EAAElC,EAAIA,EACCkC,CAEX,EA+BE4b,QA3BK,SAAiB5b,GAEtB,IAEIwb,EAAKC,EAFL5d,EAAImC,EAAEnC,EAAIqH,KAAKnD,GACfjE,EAAIkC,EAAElC,EAAIoH,KAAKlD,GAGnB,GAAIkD,KAAK2S,OACP4D,EAAMtM,EAAU,EAAIhQ,KAAK2b,KAAK3b,KAAK0c,KAAK/d,GAAKoH,KAAK5D,EAAI4D,KAAK6N,UAExD,CACH,IAAI4H,EAAKxb,KAAK0c,KAAK/d,GAAKoH,KAAK5D,EAAI4D,KAAK6N,KAEtC,IAAa,QADb0I,EAAMK,EAAM5W,KAAKzE,EAAGka,IAElB,OAAO,IAEX,CAKA,OAJAa,EAAME,EAAWxW,KAAKgN,MAAQrU,GAAKqH,KAAK5D,EAAI4D,KAAK6N,KAEjD/S,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,CACT,EAOE+b,MALiB,CAAC,WAAY,wCAAyC,eAAgB,4BAA6B,SFnFtH,CACEZ,KAXK,WAEP,EAUEI,QAASP,EACTY,QAASZ,EACTe,MALiB,CAAC,UAAW,cCN3B,EAAQ,CAAC,EACTC,EAAY,GAEhB,SAASC,GAAI3K,EAAM9S,GACjB,IAAIC,EAAMud,EAAU/d,OACpB,OAAKqT,EAAKyK,OAIVC,EAAUvd,GAAO6S,EACjBA,EAAKyK,MAAM9D,SAAQ,SAAS3V,GAC1B,EAAMA,EAAEiO,eAAiB9R,CAC3B,IACOyG,OAPL6T,QAAQ9R,IAAIzI,IACL,EAOX,CAiBA,QACEc,MAJK,WACL4b,EAAMjD,QAAQgE,GAChB,EAGEA,IAAKA,GACLC,IAhBK,SAAanG,GAClB,IAAKA,EACH,OAAO,EAET,IAAIzT,EAAIyT,EAAKxF,cACb,YAAwB,IAAb,EAAMjO,IAAsB0Z,EAAU,EAAM1Z,IAC9C0Z,EAAU,EAAM1Z,SADzB,CAGF,GE7BI,GAAU,CAEd,MAAgB,CACdhB,EAAG,QACHkQ,GAAI,QACJ2K,YAAa,cAGf,MAAgB,CACd7a,EAAG,QACHkQ,GAAI,QACJ2K,YAAa,6BAGf,MAAgB,CACd7a,EAAG,QACHkQ,GAAI,cACJ2K,YAAa,wBAGf,MAAgB,CACd7a,EAAG,QACHkQ,GAAI,QACJ2K,YAAa,YAGf,KAAe,CACb7a,EAAG,YACHC,EAAG,WACH4a,YAAa,aAGf,KAAe,CACb7a,EAAG,QACHkQ,GAAI,OACJ2K,YAAa,uBAGf,MAAgB,CACd7a,EAAG,QACHkQ,GAAI,OACJ2K,YAAa,4BAGf,SAAmB,CACjB7a,EAAG,YACHC,EAAG,YACH4a,YAAa,iBAGf,OAAiB,CACf7a,EAAG,WACHkQ,GAAI,IACJ2K,YAAa,8BAGf,QAAkB,CAChB7a,EAAG,QACHkQ,GAAI,OACJ2K,YAAa,mCAGf,MAAgB,CACd7a,EAAG,QACHkQ,GAAI,cACJ2K,YAAa,qBAGf,OAAiB,CACf7a,EAAG,YACHkQ,GAAI,YACJ2K,YAAa,eAGf,SAAmB,CACjB7a,EAAG,YACHkQ,GAAI,YACJ2K,YAAa,yBAGf,OAAiB,CACf7a,EAAG,UACHC,EAAG,UACH4a,YAAa,eAGf,OAAiB,CACf7a,EAAG,YACHkQ,GAAI,SACJ2K,YAAa,oBAGf,UAAoB,CAClB7a,EAAG,UACHC,EAAG,QACHiQ,GAAI,YACJ2K,YAAa,qBAGf,OAAiB,CACf7a,EAAG,kBACHkQ,GAAI,kBACJ2K,YAAa,eAGf,IAAc,CACZ7a,EAAG,UACHkQ,GAAI,OACJ2K,YAAa,mCAGf,OAAiB,CACf7a,EAAG,QACHkQ,GAAI,MACJ2K,YAAa,2BAGf,QAAkB,CAChB7a,EAAG,WACHkQ,GAAI,SACJ2K,YAAa,gBAGf,QAAkB,CAChB7a,EAAG,YACHkQ,GAAI,SACJ2K,YAAa,gBAGf,QAAkB,CAChB7a,EAAG,YACHkQ,GAAI,SACJ2K,YAAa,gBAGf,QAAkB,CAChB7a,EAAG,YACHkQ,GAAI,SACJ2K,YAAa,gBAGf,QAAkB,CAChB7a,EAAG,YACHkQ,GAAI,SACJ2K,YAAa,gBAGf,QAAkB,CAChB7a,EAAG,YACHkQ,GAAI,SACJ2K,YAAa,6BAGf,QAAkB,CAChB7a,EAAG,QACHkQ,GAAI,MACJ2K,YAAa,gCAGf,SAAmB,CACjB7a,EAAG,QACHkQ,GAAI,MACJ2K,YAAa,gBAGf,QAAkB,CAChB7a,EAAG,QACHkQ,GAAI,MACJ2K,YAAa,gBAGf,QAAkB,CAChB7a,EAAG,QACHkQ,GAAI,MACJ2K,YAAa,gBAGf,MAAgB,CACd7a,EAAG,QACHkQ,GAAI,IACJ2K,YAAa,SAGf,KAAe,CACb7a,EAAG,QACHkQ,GAAI,IACJ2K,YAAa,gCAGf,MAAgB,CACd7a,EAAG,QACHkQ,GAAI,OACJ2K,YAAa,cAGf,MAAgB,CACd7a,EAAG,QACHkQ,GAAI,QACJ2K,YAAa,cAGf,MAAgB,CACd7a,EAAG,QACHkQ,GAAI,IACJ2K,YAAa,mBAGf,SAAmB,CACjB7a,EAAG,UACHC,EAAG,UACH4a,YAAa,0BAGf,QAAkB,CAChB7a,EAAG,QACHkQ,GAAI,QACJ2K,YAAa,yBAGf,MAAgB,CACd7a,EAAG,QACHkQ,GAAI,MACJ2K,YAAa,oBAGf,OAAiB,CACf7a,EAAG,QACHC,EAAG,aACH4a,YAAa,kBAGf,QAAkB,CAChB7a,EAAG,QACHC,EAAG,aACH4a,YAAa,WAGf,MAAgB,CACd7a,EAAG,QACHkQ,GAAI,MACJ2K,YAAa,UAGf,MAAgB,CACd7a,EAAG,QACHkQ,GAAI,OACJ2K,YAAa,UAGf,KAAe,CACb7a,EAAG,QACHkQ,GAAI,OACJ2K,YAAa,WAGJnD,GAAQ,GAAQA,MAAQ,CACjC1X,EAAG,QACHkQ,GAAI,cACJ2K,YAAa,UAGf,GAAQtE,OAAS,CACfvW,EAAG,QACHC,EAAG,QACH4a,YAAa,6BCxQf,IAAI,GAAU,CAAC,EAEf,GAAQC,MAAQ,CACd7I,QAAS,QACT8I,QAAS,QACTC,UAAW,SAGb,GAAQC,OAAS,CACfhJ,QAAS,yBACT8I,QAAS,SACTC,UAAW,SAGb,GAAQE,OAAS,CACfjJ,QAAS,uBACT8I,QAAS,QACTC,UAAW,wCAGb,GAAQG,MAAQ,CACdlJ,QAAS,QACT8I,QAAS,QACTC,UAAW,6BAGb,GAAQI,MAAQ,CACd7I,SAAU,2CACVwI,QAAS,SACTC,UAAW,6BAGb,GAAQK,QAAU,CAChBpJ,QAAS,0CACT8I,QAAS,SACTC,UAAW,+BAGb,GAAQM,SAAW,CACjBrJ,QAAS,mBACT8I,QAAS,UACTC,UAAW,yBAGb,GAAQO,cAAgB,CACtBtJ,QAAS,kDACT8I,QAAS,SACTC,UAAW,iBAGb,GAAQQ,OAAS,CACfvJ,QAAS,qDACT8I,QAAS,OACTC,UAAW,kBAGb,GAAQS,MAAQ,CACdxJ,QAAS,qDACT8I,QAAS,WACTC,UAAW,gBAGb,GAAQU,WAAa,CACnBzJ,QAAS,yBACT8I,QAAS,OACTC,UAAW,cAGb,GAAQW,OAAS,CACf1J,QAAS,6CACT8I,QAAS,OACTC,UAAW,mCAGb,GAAQY,OAAS,CACf3J,QAAS,yDACT8I,QAAS,OACTC,UAAW,aAGb,GAAQa,OAAS,CACf5J,QAAS,aACT8I,QAAS,SACTC,UAAW,kBAGb,GAAQc,SAAW,CACjB7J,QAAS,eACT8I,QAAS,SACTC,UAAW,YAGb,GAAQe,cAAgB,CACtB9J,QAAS,cACT8I,QAAS,SACTC,UAAW,yBAGb,GAAQgB,MAAQ,CACd/J,QAAS,wDACT8I,QAAS,OACTC,UAAW,8BC/Db,OApCA,SAAexI,EAAWN,EAAclS,EAAGC,EAAG6Z,EAAImC,EAAK1J,GACrD,IAAI6B,EAAM,CAAC,EAgCX,OA7BEA,EAAI8H,gBADYrD,IAAdrG,GAAyC,SAAdA,EACZhF,EtBHE,EsBQjB0E,IACFkC,EAAIlC,aAAeA,EAAaxC,IAAIS,YACR,IAAxBiE,EAAIlC,aAAa,IAAoC,IAAxBkC,EAAIlC,aAAa,IAAoC,IAAxBkC,EAAIlC,aAAa,KAC7EkC,EAAI8H,WAAa7O,GAEf+G,EAAIlC,aAAavV,OAAS,IACA,IAAxByX,EAAIlC,aAAa,IAAoC,IAAxBkC,EAAIlC,aAAa,IAAoC,IAAxBkC,EAAIlC,aAAa,IAAoC,IAAxBkC,EAAIlC,aAAa,KAC1GkC,EAAI8H,WAAa5O,EACjB8G,EAAIlC,aAAa,IAAMtE,EACvBwG,EAAIlC,aAAa,IAAMtE,EACvBwG,EAAIlC,aAAa,IAAMtE,EACvBwG,EAAIlC,aAAa,GAAMkC,EAAIlC,aAAa,GAAK,IAAa,KAK5DK,IACF6B,EAAI8H,WAAa3O,EACjB6G,EAAI+H,MAAQ5J,GAEd6B,EAAIpU,EAAIA,EACRoU,EAAInU,EAAIA,EACRmU,EAAI0F,GAAKA,EACT1F,EAAI6H,IAAMA,EACH7H,CACT,EC9BIgI,GAAiB,CAAC,EA6BtB,SAASC,GAAmB9W,GAC1B,GAAqB,IAAjBA,EAAM5I,OACR,OAAO,KAET,IAAI2f,EAAwB,MAAb/W,EAAM,GAIrB,OAHI+W,IACF/W,EAAQA,EAAM+Q,MAAM,IAER,SAAV/Q,EACK,CAACkP,KAAM,OAAQ8H,WAAYD,EAAUE,KAAM,KAAMC,QAAQ,GAE3D,CACLhI,KAAMlP,EACNgX,WAAYD,EACZE,KAAMJ,GAAe7W,IAAU,KAC/BkX,QAAQ,EAEZ,CAEA,SAASC,GAAiBC,GACxB,OAAQA,EAAU,KAAQ9e,KAAKiQ,GAAK,GACtC,CA2BA,SAAS8O,GAAaC,EAAM7e,EAAOC,GACjC,OAAO4M,OAAOC,aAAauM,MAAM,KAAM,IAAInR,WAAW2W,EAAKnY,OAAO4R,MAAMtY,EAAOC,IACjF,CAwBA,SAAS6e,GAASC,GAChB,OAAOA,EAAMrN,KAAI,SAAUhN,GAAI,MAAO,CAACga,GAAiBha,EAAEsa,gBAAiBN,GAAiBha,EAAEua,eAAgB,GAChH,CAEA,SAASC,GAAeL,EAAMlY,EAAQwY,GACpC,MAAO,CACL1I,KAAMmI,GAAaC,EAAMlY,EAAS,EAAGA,EAAS,IAAIiL,OAClDwN,OAAQR,GAAaC,EAAMlY,EAAS,GAAIA,EAAS,GAAK,GAAGiL,OACzDyN,cAAeR,EAAKS,WAAW3Y,EAAS,GAAIwY,GAC5CI,cAAeV,EAAKS,WAAW3Y,EAAS,GAAIwY,GAC5CK,eAAgBX,EAAKS,WAAW3Y,EAAS,IAAKwY,GAC9CM,eAAgBZ,EAAKS,WAAW3Y,EAAS,IAAKwY,GAC9CO,iBAAkBb,EAAKS,WAAW3Y,EAAS,IAAKwY,GAChDQ,kBAAmBd,EAAKS,WAAW3Y,EAAS,IAAKwY,GACjDS,cAAef,EAAKgB,SAASlZ,EAAS,IAAKwY,GAE/C,CAEA,SAASW,GAAcjB,EAAMlY,EAAQoZ,EAAYZ,GAI/C,IAHA,IAAIa,EAAcrZ,EAAS,IAEvBsZ,EAAmB,GACd/gB,EAAI,EAAGA,EAAI6gB,EAAWH,cAAe1gB,IAAK,CACjD,IAAIghB,EAAS,CACXjB,cAAeJ,EAAKsB,WAAWH,EAJZ,GAI0B9gB,EAAsBigB,GACnEH,eAAgBH,EAAKsB,WAAWH,EALb,GAK2B9gB,EAAuB,EAAGigB,GACxEiB,iBAAkBvB,EAAKsB,WAAWH,EANf,GAM6B9gB,EAAuB,EAAGigB,GAC1EkB,kBAAmBxB,EAAKsB,WAAWH,EAPhB,GAO8B9gB,EAAuB,GAAIigB,IAE9Ec,EAAiB1gB,KAAK2gB,EACxB,CACA,OAAOD,CACT,CCpIA,SAASK,GAAWC,EAAQC,GAC1B,KAAM5a,gBAAgB0a,IACpB,OAAO,IAAIA,GAAWC,GAExBC,EAAWA,GAAY,SAASC,GAC9B,GAAGA,EACD,MAAMA,CAEV,EACA,IAAIC,EAAOC,EAAUJ,GACrB,GAAmB,iBAATG,EAAV,CAIA,IAAIE,EAAUN,GAAWO,YAAYjE,IAAI8D,EAAKhJ,UAC9C,GAAIkJ,EAAJ,CAIA,GAAIF,EAAKlM,WAAgC,SAAnBkM,EAAKlM,UAAsB,CAC/C,IAAIsM,EAAWnQ,EAAM,GAAO+P,EAAKlM,WAC7BsM,IACFJ,EAAKxM,aAAewM,EAAKxM,eAAiB4M,EAAS7M,QAAU6M,EAAS7M,QAAQxC,MAAM,KAAO,MAC3FiP,EAAKlI,MAAQsI,EAAS/D,QACtB2D,EAAK1D,UAAY8D,EAAS9D,UAAY8D,EAAS9D,UAAY0D,EAAKlM,UAEpE,CACAkM,EAAKjN,GAAKiN,EAAKjN,IAAM,EACrBiN,EAAKjM,KAAOiM,EAAKjM,MAAQ,MACzBiM,EAAKlI,MAAQkI,EAAKlI,OAAS,QAC3BkI,EAAKnO,KAAOmO,EAAKnO,MAAQmO,EAAKrO,KAE9B,ICrC2BrQ,EAAGC,EAAO2R,EACjCrO,EACAE,EACAqW,EACA3a,EDiCA4f,EClBC,SAAgB/e,EAAGC,EAAGiQ,EAAIsG,EAAOD,GACtC,IAAKvW,EAAG,CACN,IAAI+a,EAAUpM,EAAM,GAAW6H,GAC1BuE,IACHA,EAAUrD,IAEZ1X,EAAI+a,EAAQ/a,EACZC,EAAI8a,EAAQ9a,EACZiQ,EAAK6K,EAAQ7K,EACf,CASA,OAPIA,IAAOjQ,IACTA,GAAK,EAAM,EAAMiQ,GAAMlQ,IAEd,IAAPkQ,GAAYrS,KAAKmE,IAAIhC,EAAIC,GAAKiO,KAChCqI,GAAS,EACTtW,EAAID,GAEC,CACLA,EAAGA,EACHC,EAAGA,EACHiQ,GAAIA,EACJqG,OAAQA,EAEZ,CDNgB,CAAUmI,EAAK1e,EAAG0e,EAAKze,EAAGye,EAAKxO,GAAIwO,EAAKlI,MAAOkI,EAAKnI,QAC9DyI,GCtCuBhf,EDsCD+e,EAAQ/e,ECtCJC,EDsCO8e,EAAQ9e,EAAG8e,EAAQ7O,GCtCnB0B,EDsCuB8M,EAAK9M,ICnC7DkI,IAFAvW,EAAKvD,EAAIA,IACTyD,EAAKxD,EAAIA,IACQsD,EACjBpE,EAAI,EACJyS,GAEFrO,GADAvD,GAAK,EAAI8Z,GAAM/L,EAAQ+L,GAAM9L,EAAM8L,EAAK7L,KAC/BjO,EACT8Z,EAAK,GAEL3a,EAAItB,KAAKqb,KAAKY,GAGT,CACLA,GAAIA,EACJ3a,EAAGA,EACH8c,KAJS1Y,EAAKE,GAAMA,ID2BlB8O,EDfC,SAAqBA,GAE1B,YAAiBsG,IAAbtG,EAAiC,KACzBA,EAAS9C,MAAM,KACdC,IAAI2M,GACnB,CCUiB4C,CAAYP,EAAKnM,UAC5B2M,EAAWR,EAAKzO,OAAS,GAAMyO,EAAKlM,UAAWkM,EAAKxM,aAAc6M,EAAQ/e,EAAG+e,EAAQ9e,EAAG+e,EAAIlF,GAAIkF,EAAI/C,IACtG1J,GAEF4M,EAAOvb,KAAM8a,GACbS,EAAOvb,KAAMgb,GAGbhb,KAAK5D,EAAI+e,EAAQ/e,EACjB4D,KAAK3D,EAAI8e,EAAQ9e,EACjB2D,KAAKsM,GAAK6O,EAAQ7O,GAClBtM,KAAK2S,OAASwI,EAAQxI,OAGtB3S,KAAKkW,GAAKkF,EAAIlF,GACdlW,KAAKzE,EAAI6f,EAAI7f,EACbyE,KAAKqY,IAAM+C,EAAI/C,IAGfrY,KAAKqM,MAAQiP,EAGbtb,KAAKiW,OAGL2E,EAAS,KAAM5a,KAzCf,MAFE4a,EAASD,EAHX,MAFEC,EAASD,EAkDb,CACAD,GAAWO,YAAcA,GACzBP,GAAWO,YAAY7gB,QACvB,UE1CO,SAASohB,GAAqB1gB,EAAGob,EAAI9Z,GAC1C,IAIIqf,EACAC,EACAC,EACAC,EAPAC,EAAY/gB,EAAEnC,EACdmjB,EAAWhhB,EAAElC,EACbmjB,EAASjhB,EAAEI,EAAIJ,EAAEI,EAAI,EAYzB,GAAI4gB,GAAY7R,GAAW6R,GAAY,MAAQ7R,EAC7C6R,GAAY7R,OACP,GAAI6R,EAAW7R,GAAW6R,EAAW,MAAQ7R,EAClD6R,EAAW7R,MACN,IAAI6R,GAAY7R,EAGrB,MAAO,CAAEtR,GAAIoF,IAAUnF,GAAImF,IAAU7C,EAAGJ,EAAEI,GACrC,GAAI4gB,EAAW7R,EAEpB,MAAO,CAAEtR,EAAGoF,IAAUnF,EAAGmF,IAAU7C,EAAGJ,EAAEI,EAC1C,CASA,OAPI2gB,EAAY5hB,KAAKiQ,KACnB2R,GAAc,EAAI5hB,KAAKiQ,IAEzBwR,EAAUzhB,KAAK4b,IAAIiG,GACnBF,EAAU3hB,KAAKkc,IAAI2F,GACnBH,EAAWD,EAAUA,EAEd,CACL/iB,IAFF8iB,EAAKrf,EAAKnC,KAAKqb,KAAK,EAAQY,EAAKyF,IAEtBI,GAAUH,EAAU3hB,KAAKkc,IAAI0F,GACtCjjB,GAAI6iB,EAAKM,GAAUH,EAAU3hB,KAAK4b,IAAIgG,GACtC3gB,GAAKugB,GAAM,EAAIvF,GAAO6F,GAAUL,EAEpC,CAEO,SAASM,GAAqBlhB,EAAGob,EAAI9Z,EAAGC,GAG7C,IAII4f,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EAKAhB,EAEAE,EAvBAe,EAAQ,MAkBRC,EAAIjiB,EAAEnC,EACNqkB,EAAIliB,EAAElC,EACNqkB,EAAIniB,EAAEI,EAAIJ,EAAEI,EAAI,EASpB,GAJA+gB,EAAIhiB,KAAKqb,KAAKyH,EAAIA,EAAIC,EAAIA,GAC1Bd,EAAKjiB,KAAKqb,KAAKyH,EAAIA,EAAIC,EAAIA,EAAIC,EAAIA,GAG/BhB,EAAI7f,EAAI0gB,GAOV,GAJAjB,EAAY,EAIRK,EAAK9f,EAAI0gB,EAGX,OAFW7S,EACX8R,GAAU1f,EACH,CACL1D,EAAGmC,EAAEnC,EACLC,EAAGkC,EAAElC,EACLsC,EAAGJ,EAAEI,QAMT2gB,EAAY5hB,KAAKijB,MAAMF,EAAGD,GAY5BZ,EAAKc,EAAIf,EAGTM,GAFAJ,EAAKH,EAAIC,IAEK,EAAMhG,IADpBmG,EAAK,EAAMpiB,KAAKqb,KAAK,EAAMY,GAAM,EAAMA,GAAMkG,EAAKA,IAElDK,EAAQN,EAAKE,EACbQ,EAAO,EAIP,GACEA,IAMAP,EAAKpG,GALLqG,EAAKngB,EAAInC,KAAKqb,KAAK,EAAMY,EAAKuG,EAAQA,KAKtBF,GAFhBR,EAASE,EAAIO,EAAQS,EAAIR,EAAQF,GAAM,EAAMrG,EAAKuG,EAAQA,KAM1DG,GADAD,EAAOR,GAFPE,EAAK,EAAMpiB,KAAKqb,KAAK,EAAMgH,GAAM,EAAMA,GAAMF,EAAKA,KAGnCI,GAFfE,EAAON,GAAM,EAAME,GAAMD,GAEKI,EAC9BD,EAAQE,EACRD,EAAQE,QAEHC,EAAQA,EAnFF,OAmFoBC,EAlFnB,IAsFd,MAAO,CACLlkB,EAAGkjB,EACHjjB,EAHSqB,KAAK2b,KAAK+G,EAAO1iB,KAAKmE,IAAIse,IAInCxhB,EAAG6gB,EAEP,CC7JA,SAASoB,GAAY3a,GACnB,OAAQA,IAASiH,GAAcjH,IAASkH,CAC1C,CAEe,YAASqL,EAAQqI,EAAMC,GAEpC,GDhBK,SAAuBtI,EAAQqI,GACpC,OAAIrI,EAAOuD,aAAe8E,EAAK9E,cAEpBvD,EAAO3Y,IAAMghB,EAAKhhB,GAAKnC,KAAKmE,IAAI2W,EAAOmB,GAAKkH,EAAKlH,IAAM,SAIvDnB,EAAOuD,aAAe7O,EACvBsL,EAAOzG,aAAa,KAAO8O,EAAK9O,aAAa,IAAMyG,EAAOzG,aAAa,KAAO8O,EAAK9O,aAAa,IAAMyG,EAAOzG,aAAa,KAAO8O,EAAK9O,aAAa,GAClJyG,EAAOuD,aAAe5O,GACvBqL,EAAOzG,aAAa,KAAO8O,EAAK9O,aAAa,IAAMyG,EAAOzG,aAAa,KAAO8O,EAAK9O,aAAa,IAAMyG,EAAOzG,aAAa,KAAO8O,EAAK9O,aAAa,IAAMyG,EAAOzG,aAAa,KAAO8O,EAAK9O,aAAa,IAAMyG,EAAOzG,aAAa,KAAO8O,EAAK9O,aAAa,IAAMyG,EAAOzG,aAAa,KAAO8O,EAAK9O,aAAa,IAAMyG,EAAOzG,aAAa,KAAO8O,EAAK9O,aAAa,GAI3W,CCEMgP,CAAcvI,EAAQqI,GACxB,OAAOC,EAMT,GAAItI,EAAOuD,aAAe1O,GAAewT,EAAK9E,aAAe1O,EAC3D,OAAOyT,EAIT,IAAIE,EAAWxI,EAAO3Y,EAClBohB,EAAYzI,EAAOmB,GACvB,GAAInB,EAAOuD,aAAe3O,EAAe,CAEvC,GAAsB,IADF8T,GAAe1I,GAAQ,EAAOsI,GAEhD,OAEFE,EAAW1T,EACX2T,EAAYzT,CACd,CAEA,IAAI2T,EAASN,EAAKhhB,EACduhB,EAASP,EAAK/gB,EACduhB,EAAUR,EAAKlH,GAQnB,GAPIkH,EAAK9E,aAAe3O,IACtB+T,EAAS7T,EACT8T,EAAS7T,EACT8T,EAAU7T,GAIRyT,IAAcI,GAAWL,IAAaG,IAAWP,GAAYpI,EAAOuD,cAAiB6E,GAAYC,EAAK9E,YACxG,OAAO+E,EAcT,IAVAA,EAAQ7B,GAAqB6B,EAAOG,EAAWD,GAE3CJ,GAAYpI,EAAOuD,cACrB+E,ED0HG,SAA2BviB,EAAGwd,EAAYhK,GAE/C,GAAIgK,IAAe7O,EAGjB,MAAO,CACL9Q,EAAGmC,EAAEnC,EAAI2V,EAAa,GACtB1V,EAAGkC,EAAElC,EAAI0V,EAAa,GACtBpT,EAAGJ,EAAEI,EAAIoT,EAAa,IAEnB,GAAIgK,IAAe5O,EAAY,CACpC,IAAImU,EAAQvP,EAAa,GACrBwP,EAAQxP,EAAa,GACrByP,EAAQzP,EAAa,GACrB0P,EAAQ1P,EAAa,GACrB2P,EAAQ3P,EAAa,GACrB4P,EAAQ5P,EAAa,GACrB6P,EAAO7P,EAAa,GAGxB,MAAO,CACL3V,EAAGwlB,GAAQrjB,EAAEnC,EAAIulB,EAAQpjB,EAAElC,EAAIqlB,EAAQnjB,EAAEI,GAAK2iB,EAC9CjlB,EAAGulB,GAAQD,EAAQpjB,EAAEnC,EAAImC,EAAElC,EAAIolB,EAAQljB,EAAEI,GAAK4iB,EAC9C5iB,EAAGijB,IAASF,EAAQnjB,EAAEnC,EAAIqlB,EAAQljB,EAAElC,EAAIkC,EAAEI,GAAK6iB,EAEnD,CACF,CCpJYK,CAAkBf,EAAOtI,EAAOuD,WAAYvD,EAAOzG,eAEzD6O,GAAYC,EAAK9E,cACnB+E,EDuJG,SAA6BviB,EAAGwd,EAAYhK,GAEjD,GAAIgK,IAAe7O,EAGjB,MAAO,CACL9Q,EAAGmC,EAAEnC,EAAI2V,EAAa,GACtB1V,EAAGkC,EAAElC,EAAI0V,EAAa,GACtBpT,EAAGJ,EAAEI,EAAIoT,EAAa,IAGnB,GAAIgK,IAAe5O,EAAY,CACpC,IAAImU,EAAQvP,EAAa,GACrBwP,EAAQxP,EAAa,GACrByP,EAAQzP,EAAa,GACrB0P,EAAQ1P,EAAa,GACrB2P,EAAQ3P,EAAa,GACrB4P,EAAQ5P,EAAa,GACrB6P,EAAO7P,EAAa,GACpB+P,GAASvjB,EAAEnC,EAAIklB,GAASM,EACxBG,GAASxjB,EAAElC,EAAIklB,GAASK,EACxBI,GAASzjB,EAAEI,EAAI6iB,GAASI,EAI5B,MAAO,CACLxlB,EAAG0lB,EAAQH,EAAQI,EAAQL,EAAQM,EACnC3lB,GAAIslB,EAAQG,EAAQC,EAAQN,EAAQO,EACpCrjB,EAAG+iB,EAAQI,EAAQL,EAAQM,EAAQC,EAEvC,CACF,CCtLYC,CAAoBnB,EAAOD,EAAK9E,WAAY8E,EAAK9O,eAE3D+O,EAAQrB,GAAqBqB,EAAOO,EAASF,EAAQC,GAEjDP,EAAK9E,aAAe3O,IAEM,IADF8T,GAAeL,GAAM,EAAMC,GAEnD,OAIJ,OAAOA,CACT,CAEO,SAASI,GAAe1I,EAAQ2B,EAAS2G,GAC9C,GAAqB,OAAjBtI,EAAOwD,OAA0C,IAAxBxD,EAAOwD,MAAMxf,OAExC,OADA8a,QAAQ9R,IAAI,+BACJ,EAMV,IAJA,IAAI4P,EAAQ,CAAChZ,GAAI0kB,EAAM1kB,EAAGC,EAAGykB,EAAMzkB,GAC/ByW,EAAS,CAAC1W,EAAG8lB,OAAOjd,IAAK5I,EAAG6lB,OAAOjd,KAEnCkd,EAAiB,GACZplB,EAAI,EAAGA,EAAIyb,EAAOwD,MAAMxf,OAAQO,IAAK,CAC5C,IAAIsf,EAAO7D,EAAOwD,MAAMjf,GAExB,GADAolB,EAAe/kB,KAAKif,EAAK/H,MACrB+H,EAAKC,OAAQ,CACfxJ,EAASsC,EACT,KACF,CAEA,GADqBiH,EAAKD,UACR,OAAdC,EAAKA,KAAT,CAOA,IAAI+F,EAAU/F,EAAKA,KAAKgG,SAAS,GAE7BC,GAAW5kB,KAAKmE,IAAIugB,EAAQG,IAAI,IAAM7kB,KAAKmE,IAAIugB,EAAQG,IAAI,KAAO,IAClEvmB,EAAOomB,EAAQI,GAAG,GAAKF,EACvBrmB,EAAOmmB,EAAQI,GAAG,GAAKF,EACvBpmB,EAAOkmB,EAAQI,GAAG,IAAMJ,EAAQK,IAAI,GAAK,GAAKL,EAAQG,IAAI,GAAKD,EAC/DnmB,EAAOimB,EAAQI,GAAG,IAAMJ,EAAQK,IAAI,GAAK,GAAKL,EAAQG,IAAI,GAAKD,EACnE,KAAIrmB,EAAOmZ,EAAM/Y,GAAKL,EAAOoZ,EAAMhZ,GAAKD,EAAOiZ,EAAM/Y,GAAKH,EAAOkZ,EAAMhZ,IAGvE0W,EAAS4P,GAAkBtN,EAAO+E,EAASiI,GACtC9c,MAAMwN,EAAO1W,KAChB,KAbF,MALE,GAAIigB,EAAKD,UAEP,OADA9E,QAAQ9R,IAAI,kCAAoC6W,EAAK/H,KAAO,MACpD,CAkBd,CACA,OAAIhP,MAAMwN,EAAO1W,IACfkb,QAAQ9R,IAAI,oDACT4P,EAAMhZ,EAAI6R,EAAM,IAAMmH,EAAM/Y,EAAI4R,EAAM,YAAckU,EAAiB,MAChE,IAEVrB,EAAM1kB,GAAK0W,EAAO1W,EAClB0kB,EAAMzkB,EAAIyW,EAAOzW,EACV,EACT,CAEA,SAASqmB,GAAkBC,EAAKxI,EAASyI,GACvC,IAAIla,EAAM,CAACtM,EAAG8lB,OAAOjd,IAAK5I,EAAG6lB,OAAOjd,KACpC,GAAIK,MAAMqd,EAAIvmB,GAAM,OAAOsM,EAC3B,IAAIma,EAAK,CAACzmB,EAAGumB,EAAIvmB,EAAGC,EAAGsmB,EAAItmB,GAC3BwmB,EAAGzmB,GAAKwmB,EAAGJ,GAAG,GACdK,EAAGxmB,GAAKumB,EAAGJ,GAAG,GACdK,EAAGzmB,EAAI6d,EAAW4I,EAAGzmB,EAAIsB,KAAKiQ,IAAMjQ,KAAKiQ,GACzC,IAAImV,EAAIC,GAAeF,EAAID,GAC3B,GAAIzI,EAAS,CACX,GAAI7U,MAAMwd,EAAE1mB,GACV,OAAOsM,EAEToa,EAAE1mB,EAAIymB,EAAGzmB,EAAI0mB,EAAE1mB,EACf0mB,EAAEzmB,EAAIwmB,EAAGxmB,EAAIymB,EAAEzmB,EACf,IACI2mB,EAAKT,EADLxlB,EAAI,EAER,EAAG,CAED,GADAwlB,EAAMQ,GAAeD,EAAGF,GACpBtd,MAAMid,EAAInmB,GAAI,CAChBkb,QAAQ9R,IAAI,6FACZ,KACF,CACAwd,EAAM,CAAC5mB,EAAGymB,EAAGzmB,GAAKmmB,EAAInmB,EAAI0mB,EAAE1mB,GAAIC,EAAGwmB,EAAGxmB,GAAKkmB,EAAIlmB,EAAIymB,EAAEzmB,IACrDymB,EAAE1mB,GAAK4mB,EAAI5mB,EACX0mB,EAAEzmB,GAAK2mB,EAAI3mB,CACb,OAASU,KAAOW,KAAKmE,IAAImhB,EAAI5mB,GAXZ,OAWwBsB,KAAKmE,IAAImhB,EAAI3mB,GAXrC,OAYjB,GAAIU,EAAI,EAEN,OADAua,QAAQ9R,IAAI,mDACLkD,EAETA,EAAItM,EAAI6d,EAAW6I,EAAE1mB,EAAIwmB,EAAGJ,GAAG,IAC/B9Z,EAAIrM,EAAIymB,EAAEzmB,EAAIumB,EAAGJ,GAAG,EACtB,MACOld,MAAMwd,EAAE1mB,KACXsM,EAAItM,EAAIumB,EAAIvmB,EAAI0mB,EAAE1mB,EAClBsM,EAAIrM,EAAIsmB,EAAItmB,EAAIymB,EAAEzmB,GAGtB,OAAOqM,CACT,CAEA,SAASqa,GAAeJ,EAAKC,GAC3B,IAIIK,EAJAH,EAAI,CAAC1mB,EAAGumB,EAAIvmB,EAAIwmB,EAAGL,IAAI,GAAIlmB,EAAGsmB,EAAItmB,EAAIumB,EAAGL,IAAI,IAC7CW,EAAWxlB,KAAK6H,MAAMud,EAAE1mB,GAAxB8mB,EAA+BxlB,KAAK6H,MAAMud,EAAEzmB,GAC5C8mB,EAAWL,EAAE1mB,EAAI,EAAM8mB,EAAvBC,EAAkCL,EAAEzmB,EAAI,EAAM6mB,EAC9Cxa,EAAK,CAACtM,EAAG8lB,OAAOjd,IAAK5I,EAAG6lB,OAAOjd,KAEnC,GAAIie,EAAS,GAAKA,GAAUN,EAAGH,IAAI,GACjC,OAAO/Z,EAET,GAAIwa,EAAS,GAAKA,GAAUN,EAAGH,IAAI,GACjC,OAAO/Z,EAETua,EAAOC,EAASN,EAAGH,IAAI,GAAMS,EAC7B,IAAIE,EAAUR,EAAGS,IAAIJ,GAAK,GAAtBG,EAA6BR,EAAGS,IAAIJ,GAAK,GAC7CA,IACA,IAAIK,EAASV,EAAGS,IAAIJ,GAAK,GAArBK,EAA4BV,EAAGS,IAAIJ,GAAK,GAC5CA,GAAOL,EAAGH,IAAI,GACd,IAAIc,EAAUX,EAAGS,IAAIJ,GAAK,GAAtBM,EAA6BX,EAAGS,IAAIJ,GAAK,GAC7CA,IACA,IAAIO,EAAUZ,EAAGS,IAAIJ,GAAK,GAAtBO,EAA6BZ,EAAGS,IAAIJ,GAAK,GACzCQ,EAAMN,EAASA,EAAQO,EAAMP,GAAU,EAAMA,GAC/CQ,GAAO,EAAMR,IAAW,EAAMA,GAASS,GAAO,EAAMT,GAAUA,EAGhE,OAFAza,EAAItM,EAAKunB,EAAMP,EAAQM,EAAMJ,EAAQM,EAAMJ,EAAQC,EAAMF,EACzD7a,EAAIrM,EAAKsnB,EAAMP,EAAQM,EAAMJ,EAAQM,EAAMJ,EAAQC,EAAMF,EAClD7a,CACT,CC/Le,YAASmb,EAAKC,EAAQhD,GACnC,IAGItR,EAAGsT,EAAG/lB,EAHNgnB,EAAMjD,EAAM1kB,EACd4nB,EAAMlD,EAAMzkB,EACZ4nB,EAAMnD,EAAMniB,GAAK,EAEfsV,EAAM,CAAC,EACX,IAAKlX,EAAI,EAAGA,EAAI,EAAGA,IACjB,IAAI+mB,GAAgB,IAAN/mB,QAAuB2b,IAAZoI,EAAMniB,EAwB/B,OArBU,IAAN5B,GACFyS,EAAIuU,EAEFjB,GADiC,IAA/B,KAAKtQ,QAAQqR,EAAIvR,KAAKvV,IACpB,IAEA,KAIO,IAANA,GACPyS,EAAIwU,EAEFlB,GADiC,IAA/B,KAAKtQ,QAAQqR,EAAIvR,KAAKvV,IACpB,IAEA,MAINyS,EAAIyU,EACJnB,EAAI,KAEEe,EAAIvR,KAAKvV,IACjB,IAAK,IAML,IAAK,IACHkX,EAAI6O,GAAKtT,EACT,MALF,IAAK,IAML,IAAK,IACHyE,EAAI6O,IAAMtT,EACV,MACF,IAAK,SACckJ,IAAboI,EAAMgC,KACR7O,EAAItV,EAAI6Q,GAEV,MACF,IAAK,SACckJ,IAAboI,EAAMgC,KACR7O,EAAItV,GAAK6Q,GAEX,MACF,QAEE,OAAO,KAGX,OAAOyE,CACT,CC5De,SAAS,GAACiQ,GACvB,IAAIjQ,EAAM,CACR7X,EAAG8nB,EAAM,GACT7nB,EAAG6nB,EAAM,IAQX,OANIA,EAAM1nB,OAAO,IACfyX,EAAItV,EAAIulB,EAAM,IAEZA,EAAM1nB,OAAO,IACfyX,EAAI7S,EAAI8iB,EAAM,IAETjQ,CACT,CCRA,SAASkQ,GAAWhhB,GAClB,GAA+B,mBAApB+e,OAAO3L,SAAyB,CACzC,GAAI2L,OAAO3L,SAASpT,GAClB,OAEF,MAAM,IAAIihB,UAAU,qCACtB,CACA,GAAmB,iBAARjhB,GAAoBA,GAAQA,IAAQoT,SAASpT,GACtD,MAAM,IAAIihB,UAAU,qCAExB,CCDe,SAASC,GAAU7L,EAAQqI,EAAMC,EAAOwD,GACrD,IAAI3J,EAYA4J,OAAmB7L,KAVrBoI,EADEjN,MAAMC,QAAQgN,GACR0D,GAAQ1D,GAGR,CACN1kB,EAAG0kB,EAAM1kB,EACTC,EAAGykB,EAAMzkB,EACTsC,EAAGmiB,EAAMniB,EACTyC,EAAG0f,EAAM1f,IAGIzC,EAajB,GDvCa,SAAUmiB,GACvBqD,GAAWrD,EAAM1kB,GACjB+nB,GAAWrD,EAAMzkB,EACnB,CCwBEooB,CAAY3D,GAERtI,EAAO1I,OAAS+Q,EAAK/Q,OAtB3B,SAAqB0I,EAAQqI,GAC3B,OACGrI,EAAO1I,MAAMiM,aAAe7O,GAAcsL,EAAO1I,MAAMiM,aAAe5O,GAAcqL,EAAO1I,MAAMiM,aAAe3O,IAAqC,UAAnByT,EAAKxO,YACtIwO,EAAK/Q,MAAMiM,aAAe7O,GAAc2T,EAAK/Q,MAAMiM,aAAe5O,GAAc0T,EAAK/Q,MAAMiM,aAAe3O,IAAuC,UAArBoL,EAAOnG,SACzI,CAkBoCqS,CAAYlM,EAAQqI,KAEpDC,EAAQuD,GAAU7L,EADlBmC,EAAQ,IAAI,GAAK,SACgBmG,EAAOwD,GACxC9L,EAASmC,GAGP2J,GAA+B,QAAhB9L,EAAOlG,OACxBwO,EAAQ6D,GAAYnM,GAAQ,EAAOsI,IAGb,YAApBtI,EAAOjD,SACTuL,EAAQ,CACN1kB,EAAG0kB,EAAM1kB,EAAI4R,EACb3R,EAAGykB,EAAMzkB,EAAI2R,EACbrP,EAAGmiB,EAAMniB,GAAK,QAWhB,GARI6Z,EAAOlK,WACTwS,EAAQ,CACN1kB,EAAG0kB,EAAM1kB,EAAIoc,EAAOlK,SACpBjS,EAAGykB,EAAMzkB,EAAImc,EAAOlK,SACpB3P,EAAGmiB,EAAMniB,GAAK,MAGlBmiB,EAAQtI,EAAO2B,QAAQ2G,IAErB,OAUJ,GANItI,EAAOtG,iBACT4O,EAAM1kB,GAAKoc,EAAOtG,gBAIpB4O,EAAQ8D,GAAgBpM,EAAO1I,MAAO+Q,EAAK/Q,MAAOgR,GAiClD,OA3BID,EAAK3O,iBACP4O,EAAQ,CACN1kB,EAAG0kB,EAAM1kB,EAAIykB,EAAK3O,eAClB7V,EAAGykB,EAAMzkB,EACTsC,EAAGmiB,EAAMniB,GAAK,IAII,YAAlBkiB,EAAKtL,SAEPuL,EAAQ,CACN1kB,EAAG0kB,EAAM1kB,EAAI6R,EACb5R,EAAGykB,EAAMzkB,EAAI4R,EACbtP,EAAGmiB,EAAMniB,GAAK,IAGhBmiB,EAAQD,EAAK/G,QAAQgH,GACjBD,EAAKvS,WACPwS,EAAQ,CACN1kB,EAAG0kB,EAAM1kB,EAAIykB,EAAKvS,SAClBjS,EAAGykB,EAAMzkB,EAAIwkB,EAAKvS,SAClB3P,EAAGmiB,EAAMniB,GAAK,KAMhB2lB,GAA6B,QAAdzD,EAAKvO,KACfqS,GAAY9D,GAAM,EAAMC,IAG7BA,IAAUyD,UACLzD,EAAMniB,EAERmiB,EACT,CCvGA,IAAInG,GAAQ,GAAK,SAEjB,SAASkK,GAAYC,EAAMC,EAAIC,EAAQV,GACrC,IAAIW,EAAkBhR,EAAKtF,EAC3B,OAAIkF,MAAMC,QAAQkR,IAChBC,EAAmBZ,GAAUS,EAAMC,EAAIC,EAAQV,IAAgB,CAACloB,EAAG6I,IAAK5I,EAAG4I,KACvE+f,EAAOxoB,OAAS,OACQ,IAAdsoB,EAAKxQ,MAAsC,YAAdwQ,EAAKxQ,WAA2C,IAAZyQ,EAAGzQ,MAAoC,YAAZyQ,EAAGzQ,KACvE,iBAAvB2Q,EAAiBtmB,EACnB,CAACsmB,EAAiB7oB,EAAG6oB,EAAiB5oB,EAAG4oB,EAAiBtmB,GAAGumB,OAAOF,EAAOG,OAAO,IAElF,CAACF,EAAiB7oB,EAAG6oB,EAAiB5oB,EAAG2oB,EAAO,IAAIE,OAAOF,EAAOG,OAAO,IAG3E,CAACF,EAAiB7oB,EAAG6oB,EAAiB5oB,GAAG6oB,OAAOF,EAAOG,OAAO,IAGhE,CAACF,EAAiB7oB,EAAG6oB,EAAiB5oB,KAG/C4X,EAAMoQ,GAAUS,EAAMC,EAAIC,EAAQV,GAEd,KADpB3V,EAAOC,OAAOD,KAAKqW,IACVxoB,QAGTmS,EAAK6H,SAAQ,SAAU/H,GACrB,QAA0B,IAAdqW,EAAKxQ,MAAsC,YAAdwQ,EAAKxQ,WAA2C,IAAZyQ,EAAGzQ,MAAoC,YAAZyQ,EAAGzQ,MACzG,GAAY,MAAR7F,GAAuB,MAARA,GAAuB,MAARA,EAChC,YAGF,GAAY,MAARA,GAAuB,MAARA,EACjB,OAGJwF,EAAIxF,GAAOuW,EAAOvW,EACpB,IAbSwF,EAgBb,CAEA,SAASmR,GAAUjR,GACjB,OAAIA,aAAgB,GACXA,EAELA,EAAKkR,MACAlR,EAAKkR,MAEP,GAAKlR,EACd,CAkCA,OAhCA,SAAemR,EAAUC,EAAQC,GAC/BF,EAAWF,GAAUE,GACrB,IACIjZ,EADAoZ,GAAS,EAab,YAXsB,IAAXF,GACTA,EAASD,EACTA,EAAW3K,GACX8K,GAAS,SACoB,IAAbF,EAAOnpB,GAAqByX,MAAMC,QAAQyR,MAC1DC,EAAQD,EACRA,EAASD,EACTA,EAAW3K,GACX8K,GAAS,GAEXF,EAASH,GAAUG,GACfC,EACKX,GAAYS,EAAUC,EAAQC,IAErCnZ,EAAM,CACJyN,QAAS,SAAUkL,EAAQV,GACzB,OAAOO,GAAYS,EAAUC,EAAQP,EAAQV,EAC/C,EACAnK,QAAS,SAAU6K,EAAQV,GACzB,OAAOO,GAAYU,EAAQD,EAAUN,EAAQV,EAC/C,GAEEmB,IACFpZ,EAAIgZ,MAAQE,GAEPlZ,EAEX,EC3EIqZ,GAAgB,EAQhBC,GAA4B,SAQ5BC,GAAyB,SAEzBC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJC,GAAI,GACJtF,GAAI,GACR,IACE5G,QAAS,GACTK,QA4BK,SAAiB8L,GACtB,IAAIC,EAAOC,GAAQjc,GAAO+b,EAAKG,gBAC/B,GAAIF,EAAKlM,KAAOkM,EAAKnM,IACnB,MAAO,CAACmM,EAAKnM,IAAKmM,EAAKlM,IAAKkM,EAAKnM,IAAKmM,EAAKlM,KAE7C,MAAO,CAACkM,EAAKG,KAAMH,EAAKI,OAAQJ,EAAKK,MAAOL,EAAKM,IACnD,EAjCEhC,QAAS,IAWJ,SAAS,GAAQhC,EAAIiE,GAE1B,OADAA,EAAWA,GAAY,EA6TzB,SAAgBC,EAAKD,GAEnB,IAAIE,EAAW,QAAUD,EAAIE,QAC3BC,EAAY,QAAUH,EAAII,SAE5B,OAAOJ,EAAIK,WAAaL,EAAIM,YAaXJ,EAbkCF,EAAIE,QAa7BE,EAbsCJ,EAAII,SAahCC,EAb0CL,EAAIK,WAc9EE,EAAUC,GAAkBH,GAC5BI,EAAYzpB,KAAK6H,MAAMqhB,EAAU,KACjCQ,EAAS1pB,KAAK6H,MAAMuhB,EAAW,KAAU,GAoCtBO,EAnCAF,EAmCQG,EAnCGF,EAmCEG,EAnCMN,EAqCtCO,EAAQD,EAAO,EACfE,EAAY9B,GAA0B3Z,WAAWwb,GACjDE,EAAY9B,GAAuB5Z,WAAWwb,GAG9CG,EAASF,EAAYJ,EAAS,EAC9BO,EAASF,EAAYJ,EACrBO,GAAW,EAEXF,EAASjH,KACXiH,EAASA,EAASjH,GAAImF,GAAI,EAC1BgC,GAAW,IAGTF,IAAW7B,IAAM2B,EAAY3B,IAAK6B,EAAS7B,KAAQ6B,EAAS7B,IAAK2B,EAAY3B,KAAM+B,IACrFF,KAGEA,IAAW5B,IAAM0B,EAAY1B,IAAK4B,EAAS5B,KAAQ4B,EAAS5B,IAAK0B,EAAY1B,KAAM8B,MACrFF,IAEe7B,IACb6B,IAIAA,EAASjH,KACXiH,EAASA,EAASjH,GAAImF,GAAI,GAGxB+B,EAAS5B,IACX4B,EAASA,EAAS5B,GAAIH,GAAI,EAC1BgC,GAAW,GAGXA,GAAW,GAGPD,IAAW9B,IAAQ4B,EAAY5B,IAAO8B,EAAS9B,KAAW8B,EAAS9B,IAAO4B,EAAY5B,KAAO+B,IACjGD,KAGIA,IAAW7B,IAAQ2B,EAAY3B,IAAO6B,EAAS7B,KAAW6B,EAAS7B,IAAO2B,EAAY3B,KAAO8B,MACjGD,IAEe9B,IACb8B,IAIAA,EAAS5B,KACX4B,EAASA,EAAS5B,GAAIH,GAAI,GAGZnb,OAAOC,aAAagd,GAAUjd,OAAOC,aAAaid,IA5G8BjB,EAASlU,OAAOkU,EAASnqB,OAAS,EAAGiqB,GAAYI,EAAUpU,OAAOoU,EAAUrqB,OAAS,EAAGiqB,GAoD1L,IAAyBY,EAAQC,EAAKC,EAEhCC,EACAC,EACAC,EAGAC,EACAC,EACAC,EAhDN,IAAmBjB,EAASE,EAAUC,EAChCE,EACAE,EACAC,CAfN,CAlUSU,CA8DT,SAAiBtF,GACf,IAMIuF,EACAC,EAAGC,EAAGC,EAAGrC,EAAGsC,EAGZC,EACAC,EAXAC,EAAM9F,EAAGxI,IACTuO,EAAO/F,EAAGzI,IACVla,EAAI,QACJ2oB,EAAa,UACblX,EAAK,MAILmX,EAASC,GAASJ,GAClBK,EAAUD,GAASH,GAIvBF,EAAa3qB,KAAK6H,OAAOgjB,EAAO,KAAO,GAAK,EAG/B,MAATA,IACFF,EAAa,IAIXC,GAAO,IAAQA,EAAM,IAAQC,GAAQ,GAAOA,EAAO,KACrDF,EAAa,IAIXC,GAAO,IAAQA,EAAM,KACnBC,GAAQ,GAAOA,EAAO,EACxBF,EAAa,GAENE,GAAQ,GAAOA,EAAO,GAC7BF,EAAa,GAENE,GAAQ,IAAQA,EAAO,GAC9BF,EAAa,GAENE,GAAQ,IAAQA,EAAO,KAC9BF,EAAa,KAOjBD,EAAgBM,GAHgB,GAAlBL,EAAa,GAAS,IAAM,GAK1CN,EAAkB,GAAgB,EAAIS,GAEtCR,EAAInoB,EAAInC,KAAKqb,KAAK,EAAIyP,EAAa9qB,KAAK4b,IAAImP,GAAU/qB,KAAK4b,IAAImP,IAC/DR,EAAIvqB,KAAK+D,IAAIgnB,GAAU/qB,KAAK+D,IAAIgnB,GAChCP,EAAIH,EAAkBrqB,KAAKkc,IAAI6O,GAAU/qB,KAAKkc,IAAI6O,GAClD5C,EAAInoB,KAAKkc,IAAI6O,IAAWE,EAAUP,GAElCD,EAAItoB,IAAM,EAAI2oB,EAAa,EAAI,EAAIA,EAAaA,EAAa,GAAK,EAAIA,EAAaA,EAAaA,EAAa,KAAOC,GAAU,EAAID,EAAa,EAAI,EAAIA,EAAaA,EAAa,GAAK,GAAKA,EAAaA,EAAaA,EAAa,MAAQ9qB,KAAK4b,IAAI,EAAImP,IAAW,GAAKD,EAAaA,EAAa,IAAM,GAAKA,EAAaA,EAAaA,EAAa,MAAQ9qB,KAAK4b,IAAI,EAAImP,GAAW,GAAKD,EAAaA,EAAaA,EAAa,KAAQ9qB,KAAK4b,IAAI,EAAImP,IAEpb,IAAIG,EAActX,EAAK0W,GAAKnC,GAAK,EAAIoC,EAAIC,GAAKrC,EAAIA,EAAIA,EAAI,GAAO,EAAI,GAAKoC,EAAIA,EAAIA,EAAI,GAAKC,EAAI,GAAKH,GAAmBlC,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,KAAS,IAEhJgD,EAAevX,GAAM6W,EAAIH,EAAItqB,KAAK+D,IAAIgnB,IAAW5C,EAAIA,EAAI,GAAK,EAAIoC,EAAI,EAAIC,EAAI,EAAIA,EAAIA,GAAKrC,EAAIA,EAAIA,EAAIA,EAAI,IAAQ,GAAK,GAAKoC,EAAIA,EAAIA,EAAI,IAAMC,EAAI,IAAMH,GAAmBlC,EAAIA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,MACpMyC,EAAM,IACRO,GAAe,KAIjB,MAAO,CACL/B,SAAUppB,KAAKorB,MAAMD,GACrBjC,QAASlpB,KAAKorB,MAAMF,GACpB7B,WAAYsB,EACZrB,WAAY+B,GAAoBT,GAEpC,CApIgBU,CAAQ,CACpBhP,IAAKwI,EAAG,GACRzI,IAAKyI,EAAG,KACNiE,EACN,CAkBO,SAAS,GAAQR,GACtB,IAAIC,EAAOC,GAAQjc,GAAO+b,EAAKG,gBAC/B,OAAIF,EAAKlM,KAAOkM,EAAKnM,IACZ,CAACmM,EAAKnM,IAAKmM,EAAKlM,KAElB,EAAEkM,EAAKG,KAAOH,EAAKK,OAAS,GAAIL,EAAKM,IAAMN,EAAKI,QAAU,EACnE,CAQA,SAASoC,GAASO,GAChB,OAAQA,GAAOvrB,KAAKiQ,GAAK,IAC3B,CASA,SAASub,GAASC,GAChB,OAAiBA,EAAMzrB,KAAKiQ,GAApB,GACV,CAoGA,SAASwY,GAAQO,GAEf,IAAImC,EAAcnC,EAAII,SAClB8B,EAAalC,EAAIE,QACjBI,EAAaN,EAAIM,WACjBD,EAAaL,EAAIK,WAErB,GAAIA,EAAa,GAAKA,EAAa,GACjC,OAAO,KAGT,IAGIgB,EAEAqB,EAAIC,EAAIC,EAAIC,EAAIC,EAChBC,EACAC,EAAIC,EAPJrY,EAAK,MACLzR,EAAI,QACJ2oB,EAAa,UAEboB,GAAM,EAAIlsB,KAAKqb,KAAK,aAAoB,EAAIrb,KAAKqb,KAAK,YAMtD3c,EAAIwsB,EAAa,IACjBvsB,EAAIwsB,EAMJ7B,EAAa,MACf3qB,GAAK,KAKPotB,EAAgC,GAAlB1C,EAAa,GAAS,IAAM,EAI1CgB,EAAkB,oBAKlB4B,GAFAD,EADIrtB,EAAIiV,EACC,oBAEO,EAAIsY,EAAK,EAAI,GAAKA,EAAKA,EAAKA,EAAK,IAAMlsB,KAAK4b,IAAI,EAAIoQ,IAAO,GAAKE,EAAKA,EAAK,GAAK,GAAKA,EAAKA,EAAKA,EAAKA,EAAK,IAAMlsB,KAAK4b,IAAI,EAAIoQ,GAAO,IAAME,EAAKA,EAAKA,EAAK,GAAMlsB,KAAK4b,IAAI,EAAIoQ,GAG1LN,EAAKvpB,EAAInC,KAAKqb,KAAK,EAAIyP,EAAa9qB,KAAK4b,IAAIqQ,GAAWjsB,KAAK4b,IAAIqQ,IACjEN,EAAK3rB,KAAK+D,IAAIkoB,GAAWjsB,KAAK+D,IAAIkoB,GAClCL,EAAKvB,EAAkBrqB,KAAKkc,IAAI+P,GAAWjsB,KAAKkc,IAAI+P,GACpDJ,EAAS,UAAJ1pB,EAAuBnC,KAAKwH,IAAI,EAAIsjB,EAAa9qB,KAAK4b,IAAIqQ,GAAWjsB,KAAK4b,IAAIqQ,GAAU,KAC7FH,EAAIptB,GAAKgtB,EAAK9X,GAEd,IAAI0I,EAAM2P,EAAWP,EAAK1rB,KAAK+D,IAAIkoB,GAAWJ,GAAOC,EAAIA,EAAI,GAAK,EAAI,EAAIH,EAAK,GAAKC,EAAK,EAAIA,EAAKA,EAAK,EAAIvB,GAAmByB,EAAIA,EAAIA,EAAIA,EAAI,IAAM,GAAK,GAAKH,EAAK,IAAMC,EAAK,GAAKD,EAAKA,EAAK,mBAAwB,EAAIC,EAAKA,GAAME,EAAIA,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,KAC5PxP,EAAMkP,GAASlP,GAEf,IAGIhW,EAHA+V,GAAOyP,GAAK,EAAI,EAAIH,EAAKC,GAAME,EAAIA,EAAIA,EAAI,GAAK,EAAI,EAAIF,EAAK,GAAKD,EAAK,EAAIC,EAAKA,EAAK,EAAIvB,EAAkB,GAAKsB,EAAKA,GAAMG,EAAIA,EAAIA,EAAIA,EAAIA,EAAI,KAAO9rB,KAAKkc,IAAI+P,GAInK,GAHA5P,EAAM0P,EAAaP,GAASnP,GAGxB2M,EAAID,SAAU,CAChB,IAAIoD,EAAW1D,GAAQ,CACrBW,SAAUJ,EAAII,SAAWJ,EAAID,SAC7BG,QAASF,EAAIE,QAAUF,EAAID,SAC3BO,WAAYN,EAAIM,WAChBD,WAAYL,EAAIK,aAElB/iB,EAAS,CACPwiB,IAAKqD,EAAS7P,IACduM,MAAOsD,EAAS9P,IAChBuM,OAAQtM,EACRqM,KAAMtM,EAEV,MAEE/V,EAAS,CACPgW,IAAKA,EACLD,IAAKA,GAGT,OAAO/V,CACT,CAUA,SAAS+kB,GAAoB/O,GAG3B,IAAI8P,EAAmB,IA8DvB,OA5DK,IAAM9P,GAASA,GAAO,GACzB8P,EAAmB,IAEX,GAAK9P,GAASA,GAAO,GAC7B8P,EAAmB,IAEX,GAAK9P,GAASA,GAAO,GAC7B8P,EAAmB,IAEX,GAAK9P,GAASA,GAAO,GAC7B8P,EAAmB,IAEX,GAAK9P,GAASA,GAAO,GAC7B8P,EAAmB,IAEX,GAAK9P,GAASA,GAAO,GAC7B8P,EAAmB,IAEX,GAAK9P,GAASA,GAAO,GAC7B8P,EAAmB,IAEX,GAAK9P,GAASA,GAAO,GAC7B8P,EAAmB,IAEX,GAAK9P,GAASA,GAAO,EAC7B8P,EAAmB,IAEX,EAAI9P,GAASA,GAAO,EAC5B8P,EAAmB,IAEX,EAAI9P,GAASA,IAAQ,EAC7B8P,EAAmB,KAEV,EAAI9P,GAASA,IAAQ,GAC9B8P,EAAmB,KAEV,GAAK9P,GAASA,IAAQ,GAC/B8P,EAAmB,KAEV,GAAK9P,GAASA,IAAQ,GAC/B8P,EAAmB,KAEV,GAAK9P,GAASA,IAAQ,GAC/B8P,EAAmB,KAEV,GAAK9P,GAASA,IAAQ,GAC/B8P,EAAmB,KAEV,GAAK9P,GAASA,IAAQ,GAC/B8P,EAAmB,KAEV,GAAK9P,GAASA,IAAQ,GAC/B8P,EAAmB,KAEV,GAAK9P,GAASA,IAAQ,GAC/B8P,EAAmB,KAEV,GAAK9P,GAASA,IAAQ,KAC/B8P,EAAmB,KAEdA,CACT,CA2CA,SAAS5C,GAAkBnqB,GACzB,IAAIkqB,EAAUlqB,EAAI2oB,GAKlB,OAJgB,IAAZuB,IACFA,EAAUvB,IAGLuB,CACT,CAsFA,SAAS/c,GAAO6f,GAEd,GAAIA,GAAoC,IAAtBA,EAAWvtB,OAC3B,KAAM,mCAWR,IARA,IAIIwtB,EAJAxtB,EAASutB,EAAWvtB,OAEpBytB,EAAO,KACPC,EAAK,GAELntB,EAAI,GAGA,QAAU2X,KAAKsV,EAAWD,EAAW9S,OAAOla,KAAK,CACvD,GAAIA,GAAK,EACP,KAAO,kCAAoCgtB,EAE7CG,GAAMF,EACNjtB,GACF,CAEA,IAAIgqB,EAAapV,SAASuY,EAAI,IAE9B,GAAU,IAANntB,GAAWA,EAAI,EAAIP,EAGrB,KAAO,kCAAoCutB,EAG7C,IAAI/C,EAAa+C,EAAW9S,OAAOla,KAGnC,GAAIiqB,GAAc,KAAsB,MAAfA,GAAqC,MAAfA,GAAsBA,GAAc,KAAsB,MAAfA,GAAqC,MAAfA,EAC9G,KAAO,yBAA2BA,EAAa,iBAAmB+C,EAGpEE,EAAOF,EAAWI,UAAUptB,EAAGA,GAAK,GAWpC,IATA,IAAIyO,EAAM0b,GAAkBH,GAExBqD,EAqDN,SAA4BprB,EAAGwM,GAG7B,IAAI6e,EAAS1E,GAA0B3Z,WAAWR,EAAM,GACpD8e,EAAe,IACfC,GAAe,EAEnB,KAAOF,IAAWrrB,EAAEgN,WAAW,IAAI,CAQjC,KAPAqe,IACevE,IACbuE,IAEEA,IAAWtE,IACbsE,IAEEA,EAAS3J,GAAG,CACd,GAAI6J,EACF,KAAO,kBAAoBvrB,EAE7BqrB,EAASxE,GACT0E,GAAe,CACjB,CACAD,GAAgB,GAClB,CAEA,OAAOA,CACT,CA/EiBE,CAAmBP,EAAKhT,OAAO,GAAIzL,GAC9Cif,EAgGN,SAA6B5pB,EAAG2K,GAE9B,GAAI3K,EAAI,IACN,KAAO,oCAAsCA,EAK/C,IAAI6pB,EAAS9E,GAAuB5Z,WAAWR,EAAM,GACjDmf,EAAgB,EAChBJ,GAAe,EAEnB,KAAOG,IAAW7pB,EAAEmL,WAAW,IAAI,CAUjC,KATA0e,IACe5E,IACb4E,IAEEA,IAAW3E,IACb2E,IAIEA,EAAS1E,GAAG,CACd,GAAIuE,EACF,KAAO,kBAAoB1pB,EAE7B6pB,EAAS7E,GACT0E,GAAe,CACjB,CACAI,GAAiB,GACnB,CAEA,OAAOA,CACT,CAjIkBC,CAAoBX,EAAKhT,OAAO,GAAIzL,GAM7Cif,EAAYI,GAAe7D,IAChCyD,GAAa,IAIf,IAAIK,EAAYtuB,EAASO,EAEzB,GAAI+tB,EAAY,GAAM,EACpB,KAAO,oKAAsKf,EAG/K,IAIIgB,EAAeC,EAAkBC,EAJjCC,EAAMJ,EAAY,EAElBK,EAAa,EACbC,EAAc,EAalB,OAXIF,EAAM,IACRH,EAAgB,IAAWrtB,KAAKwH,IAAI,GAAIgmB,GACxCF,EAAmBjB,EAAWI,UAAUptB,EAAGA,EAAImuB,GAC/CC,EAAanb,WAAWgb,GAAoBD,EAC5CE,EAAoBlB,EAAWI,UAAUptB,EAAImuB,GAC7CE,EAAcpb,WAAWib,GAAqBF,GAMzC,CACLnE,QAJQuE,EAAaf,EAKrBtD,SAJSsE,EAAcX,EAKvBzD,WAAYA,EACZD,WAAYA,EACZN,SAAUsE,EAEd,CAqGA,SAASF,GAAe7D,GACtB,IAAIF,EACJ,OAAQE,GACR,IAAK,IACHF,EAAW,KACX,MACF,IAAK,IACHA,EAAW,IACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,EACX,MACF,IAAK,IACHA,EAAW,IACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,IAAK,IACHA,EAAW,IACX,MACF,IAAK,IACHA,EAAW,KACX,MACF,QACEA,GAAY,EAEd,GAAIA,GAAY,EACd,OAAOA,EAGP,KAAO,wBAA0BE,CAGrC,CCvuBA,SAASqE,GAAMjvB,EAAGC,EAAGsC,GACnB,KAAM8E,gBAAgB4nB,IACpB,OAAO,IAAIA,GAAMjvB,EAAGC,EAAGsC,GAEzB,GAAIkV,MAAMC,QAAQ1X,GAChBqH,KAAKrH,EAAIA,EAAE,GACXqH,KAAKpH,EAAID,EAAE,GACXqH,KAAK9E,EAAIvC,EAAE,IAAM,OACZ,GAAgB,iBAANA,EACfqH,KAAKrH,EAAIA,EAAEA,EACXqH,KAAKpH,EAAID,EAAEC,EACXoH,KAAK9E,EAAIvC,EAAEuC,GAAK,OACX,GAAiB,iBAANvC,QAA+B,IAANC,EAAmB,CAC5D,IAAI2oB,EAAS5oB,EAAEkT,MAAM,KACrB7L,KAAKrH,EAAI4T,WAAWgV,EAAO,GAAI,IAC/BvhB,KAAKpH,EAAI2T,WAAWgV,EAAO,GAAI,IAC/BvhB,KAAK9E,EAAIqR,WAAWgV,EAAO,GAAI,KAAO,CACxC,MACEvhB,KAAKrH,EAAIA,EACTqH,KAAKpH,EAAIA,EACToH,KAAK9E,EAAIA,GAAK,EAEhB2Y,QAAQgU,KAAK,8DACf,CAEAD,GAAME,SAAW,SAASC,GACxB,OAAO,IAAIH,GAAM,GAAQG,GAC3B,EACAH,GAAMziB,UAAU6iB,OAAS,SAAShF,GAChC,OAAO,GAAQ,CAAChjB,KAAKrH,EAAGqH,KAAKpH,GAAIoqB,EACnC,EACA,UCjCIiF,GAAM,EACNC,GAAM,IACNC,GAAM,QACNC,GAAM,UACNC,GAAM,gBACNC,GAAM,IACNC,GAAM,OACNC,GAAM,oBACNC,GAAM,oBACNC,GAAM,kBACNC,GAAM,oBACNC,GAAM,YAEK,YAAS1S,GACtB,IAAI2S,EAAK,GACTA,EAAG,GAAKZ,GAAM/R,GAAMgS,GAAMhS,GAAMiS,GAAMjS,GAAMkS,GAAMlS,EAAKmS,MACvDQ,EAAG,GAAK3S,GAAMoS,GAAMpS,GAAMiS,GAAMjS,GAAMkS,GAAMlS,EAAKmS,MACjD,IAAIhJ,EAAInJ,EAAKA,EAKb,OAJA2S,EAAG,GAAKxJ,GAAKkJ,GAAMrS,GAAMsS,GAAMtS,EAAKuS,KACpCpJ,GAAKnJ,EACL2S,EAAG,GAAKxJ,GAAKqJ,GAAMxS,EAAKyS,IACxBE,EAAG,GAAKxJ,EAAInJ,EAAK0S,GACVC,CACT,CCvBe,YAAStT,EAAKuT,EAAMC,EAAMF,GAGvC,OAFAE,GAAQD,EACRA,GAAQA,EACAD,EAAG,GAAKtT,EAAMwT,GAAQF,EAAG,GAAKC,GAAQD,EAAG,GAAKC,GAAQD,EAAG,GAAKC,EAAOD,EAAG,KAClF,CCDA,IAAIG,GAAW,GAEA,YAASC,EAAK/S,EAAI2S,GAG/B,IAFA,IAAI/a,EAAI,GAAK,EAAIoI,GACbX,EAAM0T,EACD3vB,EAAI0vB,GAAU1vB,IAAKA,EAAG,CAC7B,IAAIiI,EAAItH,KAAK4b,IAAIN,GACb8J,EAAI,EAAInJ,EAAK3U,EAAIA,EAKrB,GADAgU,GADA8J,GAAK6J,GAAQ3T,EAAKhU,EAAGtH,KAAKkc,IAAIZ,GAAMsT,GAAMI,IAAQ5J,EAAIplB,KAAKqb,KAAK+J,IAAMvR,EAElE7T,KAAKmE,IAAIihB,GAAK/U,EAChB,OAAOiL,CAEX,CAEA,OAAOA,CACT,CCiJO,IACP,IACEU,KA7JK,WACLjW,KAAKnD,QAAiBoY,IAAZjV,KAAKnD,GAAmBmD,KAAKnD,GAAK,EAC5CmD,KAAKlD,QAAiBmY,IAAZjV,KAAKlD,GAAmBkD,KAAKlD,GAAK,EAC5CkD,KAAKgN,WAAuBiI,IAAfjV,KAAKgN,MAAsBhN,KAAKgN,MAAQ,EACrDhN,KAAKyM,UAAqBwI,IAAdjV,KAAKyM,KAAqBzM,KAAKyM,KAAO,EAE9CzM,KAAKkW,KACPlW,KAAK6oB,GAAKM,GAAQnpB,KAAKkW,IACvBlW,KAAKopB,IAAMF,GAAQlpB,KAAKyM,KAAMxS,KAAK4b,IAAI7V,KAAKyM,MAAOxS,KAAKkc,IAAInW,KAAKyM,MAAOzM,KAAK6oB,IAEjF,EAoJExS,QA9IK,SAAiBvb,GACtB,IAIIua,EACA1c,EAAGC,EALH0d,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAERywB,EAAY7S,EAAWF,EAAMtW,KAAKgN,OAGlCsc,EAAUrvB,KAAK4b,IAAIU,GACnBgT,EAAUtvB,KAAKkc,IAAII,GAEvB,GAAKvW,KAAKkW,GA8BL,CACH,IAAIsT,EAAKD,EAAUF,EACfI,EAAMxvB,KAAKwH,IAAI+nB,EAAI,GACnBltB,EAAI0D,KAAKqY,IAAMpe,KAAKwH,IAAI8nB,EAAS,GACjCG,EAAKzvB,KAAKwH,IAAInF,EAAG,GACjBqtB,EAAK1vB,KAAKmE,IAAImrB,GAAWjf,EAAQrQ,KAAK+D,IAAIuY,GAAO,EACjD8I,EAAIplB,KAAKwH,IAAIkoB,EAAI,GACjBlU,EAAKxb,KAAKwH,IAAI4d,EAAG,GACrBhK,EAAM,EAAIrV,KAAKkW,GAAKjc,KAAKwH,IAAI6nB,EAAS,GACtCE,GAAUvvB,KAAKqb,KAAKD,GACpB,IAAIuU,EAAKV,GAAQ3S,EAAK+S,EAASC,EAASvpB,KAAK6oB,IAE7ClwB,EAAIqH,KAAK5D,GAAK4D,KAAK6N,GAAK2b,GAAM,EAC5BC,EAAM,GAAK,EAAIpK,EAAI/iB,EACnBmtB,EAAM,IAAM,EAAI,GAAKpK,EAAI5J,EAAK,GAAKnZ,EAAI,GAAK+iB,EAAI/iB,EAChDmtB,EAAM,IAAM,GAAK,IAAMhU,EAAKA,EAAK4J,EAAI,IAAMA,OAC3Crf,KAAKnD,GAEPjE,EAAIoH,KAAK5D,GAAK4D,KAAK6N,IAAM+b,EAAK5pB,KAAKopB,IACjCE,EAAUD,EAAYG,EAAK,GAAK,EAChCC,EAAM,IAAM,EAAIpK,EAAI,EAAI/iB,EAAI,EAAIotB,EAChCD,EAAM,IAAM,GAAKhU,EAAK,GAAK4J,EAAI,IAAM/iB,EAAI,IAAM+iB,EAAI/iB,EACnDmtB,EAAM,IAAM,KAAO,IAAMhU,EAAKA,EAAK4J,EAAI,KAAOA,QAC9Crf,KAAKlD,EACT,KAtDc,CACZ,IAAIT,EAAIktB,EAAUtvB,KAAK4b,IAAIwT,GAE3B,GAAKpvB,KAAKmE,IAAInE,KAAKmE,IAAI/B,GAAK,GAAMiO,EAChC,OAAO,GAOP,GAJA3R,EAAI,GAAMqH,KAAK5D,EAAI4D,KAAK6N,GAAK5T,KAAK8H,KAAK,EAAI1F,IAAM,EAAIA,IAAM2D,KAAKnD,GAChEjE,EAAI2wB,EAAUtvB,KAAKkc,IAAIkT,GAAapvB,KAAKqb,KAAK,EAAIrb,KAAKwH,IAAIpF,EAAG,KAC9DA,EAAIpC,KAAKmE,IAAIxF,KAEJ,EAAG,CACV,GAAKyD,EAAI,EAAKiO,EACZ,OAAO,GAGP1R,EAAI,CAER,MAEEA,EAAIqB,KAAK4vB,KAAKjxB,GAGZ2d,EAAM,IACR3d,GAAKA,GAGPA,EAAIoH,KAAK5D,EAAI4D,KAAK6N,IAAMjV,EAAIoH,KAAKyM,MAAQzM,KAAKlD,EAElD,CA8BA,OAHAhC,EAAEnC,EAAIA,EACNmC,EAAElC,EAAIA,EAECkC,CACT,EAyEE4b,QApEK,SAAiB5b,GACtB,IAAIua,EAAKE,EACLgB,EAAKD,EACL3d,GAAKmC,EAAEnC,EAAIqH,KAAKnD,KAAO,EAAImD,KAAK5D,GAChCxD,GAAKkC,EAAElC,EAAIoH,KAAKlD,KAAO,EAAIkD,KAAK5D,GAEpC,GAAK4D,KAAKkW,GAuBR,GAFAX,EAAMuU,GADNzU,EAAMrV,KAAKopB,IAAMxwB,EAAIoH,KAAK6N,GACH7N,KAAKkW,GAAIlW,KAAK6oB,IAEjC5uB,KAAKmE,IAAImX,GAAOtL,EAAS,CAC3B,IAAIqf,EAAUrvB,KAAK4b,IAAIN,GACnBgU,EAAUtvB,KAAKkc,IAAIZ,GACnBwU,EAAU9vB,KAAKmE,IAAImrB,GAAWjf,EAAQrQ,KAAK+D,IAAIuX,GAAO,EACtDjZ,EAAI0D,KAAKqY,IAAMpe,KAAKwH,IAAI8nB,EAAS,GACjCG,EAAKzvB,KAAKwH,IAAInF,EAAG,GACjB+iB,EAAIplB,KAAKwH,IAAIsoB,EAAS,GACtBtU,EAAKxb,KAAKwH,IAAI4d,EAAG,GACrBhK,EAAM,EAAIrV,KAAKkW,GAAKjc,KAAKwH,IAAI6nB,EAAS,GACtC,IAAI1oB,EAAIjI,EAAIsB,KAAKqb,KAAKD,GAAOrV,KAAK6N,GAC9Bmc,EAAK/vB,KAAKwH,IAAIb,EAAG,GAGrB2V,EAAMhB,GAFNF,GAAY0U,GAEOC,GAAM,EAAIhqB,KAAKkW,IAAO,IAAO,EAC9C8T,EAAK,IAAM,EAAI,EAAI3K,EAAI,EAAI/iB,EAAI+iB,EAAI/iB,EAAI,EAAIotB,EAC3CM,EAAK,IAAM,GAAK,GAAK3K,EAAI,IAAM/iB,EAAI+iB,EAAI,GAAK5J,EAAK,GAAKnZ,EACtD0tB,EAAK,IAAM,KAAO,KAAO3K,EAAI,KAAO5J,EAAK,KAAOA,EAAK4J,MAEvD/I,EAAME,EAAWxW,KAAKgN,MAASpM,GAAK,EAClCopB,EAAK,GAAK,EAAI,EAAI3K,EAAI/iB,EACtB0tB,EAAK,IAAM,EAAI,GAAK3K,EAAI,GAAK5J,EAAK,EAAInZ,EAAI+iB,EAAI,EAAI/iB,EAClD0tB,EAAK,IAAM,GAAK,IAAM3K,EAAI,KAAO5J,EAAK,IAAMA,EAAK4J,MAAQkK,EAC7D,MAEEhT,EAAMtM,EAAU7K,EAAKxG,GACrB0d,EAAM,MAhDI,CACZ,IAAI2T,EAAIhwB,KAAK0c,IAAIhe,EAAIqH,KAAK6N,IACtBqc,EAAI,IAAOD,EAAI,EAAIA,GACnBE,EAAOnqB,KAAKyM,KAAO7T,EAAIoH,KAAK6N,GAC5B5H,EAAIhM,KAAKkc,IAAIgU,GACjB9U,EAAMpb,KAAKqb,MAAM,EAAIrb,KAAKwH,IAAIwE,EAAG,KAAO,EAAIhM,KAAKwH,IAAIyoB,EAAG,KACxD3T,EAAMtc,KAAKmwB,KAAK/U,GAEZzc,EAAI,IACN2d,GAAOA,GAIPD,EADS,IAAN4T,GAAmB,IAANjkB,EACV,EAGAuQ,EAAWvc,KAAKijB,MAAMgN,EAAGjkB,GAAKjG,KAAKgN,MAE7C,CAqCA,OAHAlS,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EAECzb,CACT,EAOE+b,MALiB,CAAC,2BAA4B,6BCtKjC,YAASle,GACtB,IAAImG,EAAI7E,KAAK0c,IAAIhe,GAEjB,OADAmG,GAAKA,EAAI,EAAIA,GAAK,CAEpB,CCJe,YAASnG,EAAGC,GACzBD,EAAIsB,KAAKmE,IAAIzF,GACbC,EAAIqB,KAAKmE,IAAIxF,GACb,IAAIwD,EAAInC,KAAKC,IAAIvB,EAAGC,GAChByD,EAAIpC,KAAKwF,IAAI9G,EAAGC,IAAMwD,GAAQ,GAElC,OAAOA,EAAInC,KAAKqb,KAAK,EAAIrb,KAAKwH,IAAIpF,EAAG,GACvC,CCJe,YAAS1D,GACtB,IAAIC,EAAIqB,KAAKmE,IAAIzF,GAGjB,OAFAC,ECLa,SAASD,GACtB,IAAIC,EAAI,EAAID,EACRuC,EAAItC,EAAI,EAEZ,OAAa,IAANsC,EAAUvC,EAAIA,EAAIsB,KAAK8H,IAAInJ,GAAKsC,CACzC,CDAMmvB,CAAOzxB,GAAK,EAAIA,GAAK0xB,GAAM,EAAG1xB,GAAK,KAEhCD,EAAI,GAAKC,EAAIA,CACtB,CERe,YAAS2xB,EAAIC,GAO1B,IANA,IAIIvkB,EAJAwkB,EAAS,EAAIxwB,KAAKkc,IAAI,EAAIqU,GAC1BlxB,EAAIixB,EAAGxxB,OAAS,EAChB2xB,EAAKH,EAAGjxB,GACRqxB,EAAK,IAGArxB,GAAK,GACZ2M,EAAUwkB,EAASC,EAAdC,EAAmBJ,EAAGjxB,GAC3BqxB,EAAKD,EACLA,EAAKzkB,EAGP,OAAQukB,EAAIvkB,EAAIhM,KAAK4b,IAAI,EAAI2U,EAC/B,CCXe,YAASD,EAAIK,EAAOC,GAejC,IAdA,IAWIC,EACAC,EAZAC,EAAY/wB,KAAK4b,IAAI+U,GACrBK,EAAYhxB,KAAKkc,IAAIyU,GACrBM,EAAaC,GAAKN,GAClBO,ECPS,SAASzyB,GACtB,IAAImG,EAAI7E,KAAK0c,IAAIhe,GAEjB,OADKmG,EAAI,EAAIA,GAAK,CAEpB,CDGmBusB,CAAKR,GAClB/rB,EAAI,EAAImsB,EAAYG,EACpB9xB,GAAK,EAAI0xB,EAAYE,EACrBhrB,EAAIqqB,EAAGxxB,OAAS,EAChBuyB,EAAKf,EAAGrqB,GACRqrB,EAAM,EACNC,EAAM,EACNC,EAAK,IAIAvrB,GAAK,GACZ4qB,EAAMU,EACNT,EAAMQ,EAGND,EAAYxsB,GAFZ0sB,EAAMF,GAEAR,EAAgBxxB,GADtBiyB,EAAME,GAC0BlB,EAAGrqB,GACnCurB,EAAYnyB,EAAIkyB,EAAVT,EAAgBjsB,EAAIysB,EAM5B,MAAO,EAHPzsB,EAAIksB,EAAYI,GAGJE,GAFZhyB,EAAI2xB,EAAYC,GAEKO,EAAI3sB,EAAI2sB,EAAKnyB,EAAIgyB,EACxC,CEsIO,IACP,IACErV,KA3JK,WACL,IAAKjW,KAAKiP,SAAWpN,MAAM7B,KAAKkW,KAAOlW,KAAKkW,IAAM,GAChD,MAAM,IAAIhQ,MAAM,sIAEdlG,KAAKiP,SAEPyc,GAAMzV,KAAKxC,MAAMzT,MACjBA,KAAKqW,QAAUqV,GAAMrV,QACrBrW,KAAK0W,QAAUgV,GAAMhV,SAGvB1W,KAAKnD,QAAiBoY,IAAZjV,KAAKnD,GAAmBmD,KAAKnD,GAAK,EAC5CmD,KAAKlD,QAAiBmY,IAAZjV,KAAKlD,GAAmBkD,KAAKlD,GAAK,EAC5CkD,KAAKgN,WAAuBiI,IAAfjV,KAAKgN,MAAsBhN,KAAKgN,MAAQ,EACrDhN,KAAKyM,UAAqBwI,IAAdjV,KAAKyM,KAAqBzM,KAAKyM,KAAO,EAElDzM,KAAK2rB,IAAM,GACX3rB,KAAK4rB,IAAM,GACX5rB,KAAK6rB,IAAM,GACX7rB,KAAK8rB,IAAM,GAEX,IAAI7B,EAAIjqB,KAAKkW,IAAM,EAAIjc,KAAKqb,KAAK,EAAItV,KAAKkW,KACtC9Y,EAAI6sB,GAAK,EAAIA,GACb8B,EAAK3uB,EAET4C,KAAK2rB,IAAI,GAAKvuB,GAAK,EAAIA,IAAM,EAAI,EAAIA,GAAUA,GAAK,IAAM,GAAKA,GAAK,GAAK,GAAKA,IAAM,KAAO,OAAhD,KAC3C4C,KAAK4rB,IAAI,GAAKxuB,GAAUA,GAAM,EAAI,EAAIA,GAAM,EAAI,EAAIA,IAAM,GAAK,GAAKA,GAAK,GAAK,GAAKA,GAAK,KAAO,UAA3E,GAEpB2uB,GAAU3uB,EACV4C,KAAK2rB,IAAI,GAAKI,GAAM,EAAI,EAAI3uB,GAAcA,IAAM,IAAM,GAAKA,GAAK,KAAO,IAAMA,GAAK,KAAO,OAAxD,MACjC4C,KAAK4rB,IAAI,GAAKG,GAAM,EAAI,EAAI3uB,IAAM,GAAK,GAAKA,IAAO,GAAK,EAAIA,GAAK,IAAM,IAAMA,IAAM,KAAO,SAE1F2uB,GAAU3uB,EACV4C,KAAK2rB,IAAI,GAAKI,GAAM,GAAK,GAAK3uB,IAAM,IAAM,GAAKA,IAAM,KAAO,IAAMA,GAAK,MAAQ,SAC/E4C,KAAK4rB,IAAI,GAAKG,IAAO,GAAK,GAAK3uB,GAAK,GAAK,GAAKA,GAAK,IAAQA,IAAM,MAAQ,SAEzE2uB,GAAU3uB,EACV4C,KAAK2rB,IAAI,GAAKI,GAAM,KAAO,IAAM3uB,IAAM,IAAM,GAAKA,IAAM,OAAS,SACjE4C,KAAK4rB,IAAI,GAAKG,GAAM,KAAO,IAAM3uB,GAAeA,IAAO,MAAQ,OAAzB,MAEtC2uB,GAAU3uB,EACV4C,KAAK2rB,IAAI,GAAKI,GAAM,KAAO,IAAM3uB,IAAM,OAAS,OAChD4C,KAAK4rB,IAAI,GAAKG,IAAO,IAAM,IAAM3uB,GAAK,OAAS,QAE/C2uB,GAAU3uB,EACV4C,KAAK2rB,IAAI,GAAKI,GAAM,OAAS,OAC7B/rB,KAAK4rB,IAAI,GAAKG,GAAM,OAAS,QAE7BA,EAAK9xB,KAAKwH,IAAIrE,EAAG,GACjB4C,KAAKgsB,GAAKhsB,KAAK6N,IAAM,EAAIzQ,IAAM,EAAI2uB,GAAM,EAAI,EAAIA,GAAM,EAAI,GAAKA,EAAK,OAErE/rB,KAAK6rB,IAAI,GAAKzuB,GAAYA,GAAM,EAAI,EAAIA,IAAM,GAAK,GAAKA,GAAM,EAAI,IAAMA,GAAK,GAAK,IAAMA,IAAM,MAAQ,YAAlF,IACpB4C,KAAK8rB,IAAI,GAAK1uB,GAAK,GAAMA,IAAM,EAAI,EAAIA,GAAK,EAAI,GAAKA,GAAK,GAAK,IAAMA,IAAM,IAAM,IAAMA,GAAK,KAAO,YAEnG4C,KAAK6rB,IAAI,GAAKE,IAAO,EAAI,GAAK3uB,IAAM,EAAI,GAAKA,GAAK,IAAM,KAAOA,IAAM,GAAK,IAAMA,GAAK,QAAU,aAC/F4C,KAAK8rB,IAAI,GAAKC,GAAM,GAAK,GAAK3uB,GAAcA,GAAK,IAAM,KAAOA,GAAK,IAAM,IAAMA,IAAM,QAAU,WAA5D,KAEnC2uB,GAAU3uB,EACV4C,KAAK6rB,IAAI,GAAKE,IAAO,GAAK,IAAM3uB,GAAK,GAAK,IAAMA,GAAK,IAAM,KAAOA,IAAM,KAAO,UAC/E4C,KAAK8rB,IAAI,GAAKC,GAAM,GAAK,IAAM3uB,IAAM,IAAM,IAAMA,GAAK,MAAQ,MAAQA,GAAK,OAAS,WAEpF2uB,GAAU3uB,EACV4C,KAAK6rB,IAAI,GAAKE,IAAO,KAAO,OAAS3uB,GAAK,GAAK,IAAMA,GAAK,OAAS,WACnE4C,KAAK8rB,IAAI,GAAKC,GAAM,MAAQ,OAAS3uB,IAAM,IAAM,IAAMA,GAAK,QAAU,WAEtE2uB,GAAU3uB,EACV4C,KAAK6rB,IAAI,GAAKE,IAAO,KAAO,OAAS3uB,GAAK,OAAS,UACnD4C,KAAK8rB,IAAI,GAAKC,GAAM,MAAQ,MAAQ3uB,IAAM,QAAU,UAEpD2uB,GAAU3uB,EACV4C,KAAK6rB,IAAI,GAAKE,IAAO,SAAW,WAChC/rB,KAAK8rB,IAAI,GAAU,kBAALC,EAEd,IAAI9O,EAAIgP,GAAKjsB,KAAK4rB,IAAK5rB,KAAKyM,MAC5BzM,KAAKksB,IAAMlsB,KAAKgsB,IAAM/O,ECtFT,SAASsN,EAAIK,GAO1B,IANA,IAIIU,EAJAxsB,EAAI,EAAI7E,KAAKkc,IAAIyU,GACjBtxB,EAAIixB,EAAGxxB,OAAS,EAChByyB,EAAMjB,EAAGjxB,GACTwxB,EAAM,IAGDxxB,GAAK,GACZgyB,EAAYxsB,EAAI0sB,EAAVV,EAAgBP,EAAGjxB,GACzBwxB,EAAMU,EACNA,EAAMF,EAGR,OAAOrxB,KAAK4b,IAAI+U,GAASU,CAC3B,CDwE4Ba,CAAMnsB,KAAK8rB,IAAK,EAAI7O,GAChD,EAiFE5G,QA/EK,SAAiBvb,GACtB,IAAIsxB,EAAK5V,EAAW1b,EAAEnC,EAAIqH,KAAKgN,OAC3Bqf,EAAKvxB,EAAElC,EAEXyzB,EAAKJ,GAAKjsB,KAAK4rB,IAAKS,GACpB,IAAIC,EAASryB,KAAK4b,IAAIwW,GAClBE,EAAStyB,KAAKkc,IAAIkW,GAClBG,EAASvyB,KAAK4b,IAAIuW,GAClBK,EAASxyB,KAAKkc,IAAIiW,GAEtBC,EAAKpyB,KAAKijB,MAAMoP,EAAQG,EAASF,GACjCH,EAAKnyB,KAAKijB,MAAMsP,EAASD,EAAQjC,GAAMgC,EAAQC,EAASE,IACxDL,EAAKM,GAAOzyB,KAAK+D,IAAIouB,IAErB,IAKIzzB,EACAC,EANA+zB,EAAMC,GAAY5sB,KAAK8rB,IAAK,EAAIO,EAAI,EAAID,GAoB5C,OAlBAC,GAAUM,EAAI,GACdP,GAAUO,EAAI,GAKV1yB,KAAKmE,IAAIguB,IAAO,gBAClBzzB,EAAIqH,KAAK5D,GAAK4D,KAAKgsB,GAAKI,GAAMpsB,KAAKnD,GACnCjE,EAAIoH,KAAK5D,GAAK4D,KAAKgsB,GAAKK,EAAKrsB,KAAKksB,IAAMlsB,KAAKlD,KAG7CnE,EAAIoF,IACJnF,EAAImF,KAGNjD,EAAEnC,EAAIA,EACNmC,EAAElC,EAAIA,EAECkC,CACT,EA6CE4b,QA3CK,SAAiB5b,GACtB,IAMIwb,EACAC,EAPA6V,GAAMtxB,EAAEnC,EAAIqH,KAAKnD,KAAO,EAAImD,KAAK5D,GACjCiwB,GAAMvxB,EAAElC,EAAIoH,KAAKlD,KAAO,EAAIkD,KAAK5D,GAQrC,GANAiwB,GAAMA,EAAKrsB,KAAKksB,IAAMlsB,KAAKgsB,GAC3BI,GAAUpsB,KAAKgsB,GAKX/xB,KAAKmE,IAAIguB,IAAO,eAAgB,CAClC,IAAIO,EAAMC,GAAY5sB,KAAK6rB,IAAK,EAAIQ,EAAI,EAAID,GAE5CC,GAAUM,EAAI,GACdP,GAAUO,EAAI,GACdP,EAAKnyB,KAAK2b,KAAKuV,GAAKiB,IAEpB,IAAIE,EAASryB,KAAK4b,IAAIwW,GAClBE,EAAStyB,KAAKkc,IAAIkW,GAClBG,EAASvyB,KAAK4b,IAAIuW,GAClBK,EAASxyB,KAAKkc,IAAIiW,GAEtBC,EAAKpyB,KAAKijB,MAAMoP,EAASG,EAAQnC,GAAMkC,EAAQC,EAASF,IAGxDjW,EAAME,GAFN4V,EAAKnyB,KAAKijB,MAAMsP,EAAQC,EAASF,IAEXvsB,KAAKgN,OAC3BuJ,EAAM0V,GAAKjsB,KAAK2rB,IAAKU,EACvB,MAEE/V,EAAMvY,IACNwY,EAAMxY,IAMR,OAHAjD,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EAECzb,CACT,EAOE+b,MALiB,CAAC,+BAAgC,+BAAgC,SAAU,sBAAuB,sBAAuB,UE/IrI,IACP,IACEZ,KAlBK,WACL,IAAIhI,ECLS,SAASA,EAAMqI,GAC5B,QAAarB,IAAThH,EAAoB,CAGtB,IAFAA,EAAOhU,KAAK6H,MAAoC,IAA7B0U,EAAWF,GAAOrc,KAAKiQ,IAAWjQ,KAAKiQ,IAAM,GAErD,EACT,OAAO,EACF,GAAI+D,EAAO,GAChB,OAAO,EAEX,CACA,OAAOA,CACT,CDNa4e,CAAY7sB,KAAKiO,KAAMjO,KAAKgN,OACvC,QAAaiI,IAAThH,EACF,MAAM,IAAI/H,MAAM,oBAElBlG,KAAKyM,KAAO,EACZzM,KAAKgN,OAAW,EAAI/S,KAAKmE,IAAI6P,GAAS,KAAO1D,EAC7CvK,KAAKnD,GAAK,IACVmD,KAAKlD,GAAKkD,KAAKoO,SAAW,IAAW,EACrCpO,KAAK6N,GAAK,MAEVif,GAAO7W,KAAKxC,MAAMzT,MAClBA,KAAKqW,QAAUyW,GAAOzW,QACtBrW,KAAK0W,QAAUoW,GAAOpW,OACxB,EAKEG,MAHiB,CAAC,uCAAwC,OAI1DkW,UAxBqB,UEFR,YAASC,EAAOrW,GAC7B,OAAQ1c,KAAKwH,KAAK,EAAIurB,IAAU,EAAIA,GAAQrW,EAC9C,CC2CO,IACP,IACEV,KA3CK,WACL,IAAI6S,EAAO7uB,KAAK4b,IAAI7V,KAAKyM,MACrBsc,EAAO9uB,KAAKkc,IAAInW,KAAKyM,MACzBsc,GAAQA,EACR/oB,KAAKitB,GAAKhzB,KAAKqb,KAAK,EAAItV,KAAKkW,KAAO,EAAIlW,KAAKkW,GAAK4S,EAAOA,GACzD9oB,KAAKykB,EAAIxqB,KAAKqb,KAAK,EAAItV,KAAKkW,GAAK6S,EAAOA,GAAQ,EAAI/oB,KAAKkW,KACzDlW,KAAKktB,MAAQjzB,KAAKmwB,KAAKtB,EAAO9oB,KAAKykB,GACnCzkB,KAAKmtB,OAAS,GAAMntB,KAAKykB,EAAIzkB,KAAKzE,EAClCyE,KAAKotB,EAAInzB,KAAK+D,IAAI,GAAMgC,KAAKktB,MAAQziB,IAAWxQ,KAAKwH,IAAIxH,KAAK+D,IAAI,GAAMgC,KAAKyM,KAAOhC,GAASzK,KAAKykB,GAAK4I,GAAKrtB,KAAKzE,EAAIutB,EAAM9oB,KAAKmtB,QAClI,EAmCE9W,QAjCK,SAAiBvb,GACtB,IAAIwb,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAIZ,OAFAkC,EAAElC,EAAI,EAAIqB,KAAK2b,KAAK5V,KAAKotB,EAAInzB,KAAKwH,IAAIxH,KAAK+D,IAAI,GAAMuY,EAAM9L,GAASzK,KAAKykB,GAAK4I,GAAKrtB,KAAKzE,EAAItB,KAAK4b,IAAIU,GAAMvW,KAAKmtB,SAAWljB,EAC3HnP,EAAEnC,EAAIqH,KAAKykB,EAAInO,EACRxb,CACT,EA2BE4b,QAzBK,SAAiB5b,GAKtB,IAJA,IACIwb,EAAMxb,EAAEnC,EAAIqH,KAAKykB,EACjBlO,EAAMzb,EAAElC,EACR8G,EAAMzF,KAAKwH,IAAIxH,KAAK+D,IAAI,GAAMuY,EAAM9L,GAAUzK,KAAKotB,EAAG,EAAIptB,KAAKykB,GAC1DnrB,EA5BI,GA4BUA,EAAI,IACzBid,EAAM,EAAItc,KAAK2b,KAAKlW,EAAM2tB,GAAKrtB,KAAKzE,EAAItB,KAAK4b,IAAI/a,EAAElC,IAAM,GAAMoH,KAAKzE,IAAM0O,IACtEhQ,KAAKmE,IAAImY,EAAMzb,EAAElC,GANT,UAIkBU,EAK9BwB,EAAElC,EAAI2d,EAGR,OAAKjd,GAGLwB,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,GAJE,IAKX,EAOE+b,MALiB,CAAC,UCYb,IACP,IACEZ,KAxDK,WACLqX,GAAMrX,KAAKxC,MAAMzT,MACZA,KAAKitB,KAGVjtB,KAAKutB,MAAQtzB,KAAK4b,IAAI7V,KAAKktB,OAC3BltB,KAAKwtB,MAAQvzB,KAAKkc,IAAInW,KAAKktB,OAC3BltB,KAAKytB,GAAK,EAAIztB,KAAKitB,GACdjtB,KAAK0tB,QACR1tB,KAAK0tB,MAAQ,qCAEjB,EA8CErX,QA5CK,SAAiBvb,GACtB,IAAI6yB,EAAMC,EAAMC,EAAM/f,EAWtB,OAVAhT,EAAEnC,EAAI6d,EAAW1b,EAAEnC,EAAIqH,KAAKgN,OAC5BsgB,GAAMjX,QAAQ5C,MAAMzT,KAAM,CAAClF,IAC3B6yB,EAAO1zB,KAAK4b,IAAI/a,EAAElC,GAClBg1B,EAAO3zB,KAAKkc,IAAIrb,EAAElC,GAClBi1B,EAAO5zB,KAAKkc,IAAIrb,EAAEnC,GAClBmV,EAAI9N,KAAK6N,GAAK7N,KAAKytB,IAAM,EAAIztB,KAAKutB,MAAQI,EAAO3tB,KAAKwtB,MAAQI,EAAOC,GACrE/yB,EAAEnC,EAAImV,EAAI8f,EAAO3zB,KAAK4b,IAAI/a,EAAEnC,GAC5BmC,EAAElC,EAAIkV,GAAK9N,KAAKwtB,MAAQG,EAAO3tB,KAAKutB,MAAQK,EAAOC,GACnD/yB,EAAEnC,EAAIqH,KAAK5D,EAAItB,EAAEnC,EAAIqH,KAAKnD,GAC1B/B,EAAElC,EAAIoH,KAAK5D,EAAItB,EAAElC,EAAIoH,KAAKlD,GACnBhC,CACT,EAgCE4b,QA9BK,SAAiB5b,GACtB,IAAI6yB,EAAMC,EAAMtX,EAAKC,EAAKuX,EAM1B,GALAhzB,EAAEnC,GAAKmC,EAAEnC,EAAIqH,KAAKnD,IAAMmD,KAAK5D,EAC7BtB,EAAElC,GAAKkC,EAAElC,EAAIoH,KAAKlD,IAAMkD,KAAK5D,EAE7BtB,EAAEnC,GAAKqH,KAAK6N,GACZ/S,EAAElC,GAAKoH,KAAK6N,GACPigB,EAAM7zB,KAAKqb,KAAKxa,EAAEnC,EAAImC,EAAEnC,EAAImC,EAAElC,EAAIkC,EAAElC,GAAK,CAC5C,IAAI0D,EAAI,EAAIrC,KAAKijB,MAAM4Q,EAAK9tB,KAAKytB,IACjCE,EAAO1zB,KAAK4b,IAAIvZ,GAChBsxB,EAAO3zB,KAAKkc,IAAI7Z,GAChBia,EAAMtc,KAAKmwB,KAAKwD,EAAO5tB,KAAKutB,MAAQzyB,EAAElC,EAAI+0B,EAAO3tB,KAAKwtB,MAAQM,GAC9DxX,EAAMrc,KAAKijB,MAAMpiB,EAAEnC,EAAIg1B,EAAMG,EAAM9tB,KAAKwtB,MAAQI,EAAO9yB,EAAElC,EAAIoH,KAAKutB,MAAQI,EAC5E,MAEEpX,EAAMvW,KAAKktB,MACX5W,EAAM,EAOR,OAJAxb,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACN+W,GAAM5W,QAAQjD,MAAMzT,KAAM,CAAClF,IAC3BA,EAAEnC,EAAI6d,EAAW1b,EAAEnC,EAAIqH,KAAKgN,OACrBlS,CACT,EAOE+b,MALiB,CAAC,2BAA4B,wBAAyB,SAAS,oCAAoC,yBCsH/G,IACP,IACEZ,KApKK,WAGLjW,KAAKnD,GAAKmD,KAAKnD,IAAM,EACrBmD,KAAKlD,GAAKkD,KAAKlD,IAAM,EACrBkD,KAAKyM,KAAOzM,KAAKyM,MAAQ,EACzBzM,KAAKgN,MAAQhN,KAAKgN,OAAS,EAE3BhN,KAAK+tB,QAAU9zB,KAAKkc,IAAInW,KAAKyM,MAC7BzM,KAAKguB,QAAU/zB,KAAK4b,IAAI7V,KAAKyM,MACzBzM,KAAK2S,OACS,IAAZ3S,KAAK6N,KAAahM,MAAM7B,KAAK8M,SAAW7S,KAAKmE,IAAI4B,KAAK+tB,UAAYzjB,IACpEtK,KAAK6N,GAAK,IAAO,EAAIzO,EAAKY,KAAKyM,MAAQxS,KAAK4b,IAAI7V,KAAK8M,WAInD7S,KAAKmE,IAAI4B,KAAK+tB,UAAYzjB,IACxBtK,KAAKyM,KAAO,EAGdzM,KAAKqV,IAAM,EAKXrV,KAAKqV,KAAO,GAGhBrV,KAAKiuB,KAAOh0B,KAAKqb,KAAKrb,KAAKwH,IAAI,EAAIzB,KAAKzE,EAAG,EAAIyE,KAAKzE,GAAKtB,KAAKwH,IAAI,EAAIzB,KAAKzE,EAAG,EAAIyE,KAAKzE,IACvE,IAAZyE,KAAK6N,KAAahM,MAAM7B,KAAK8M,SAAW7S,KAAKmE,IAAI4B,KAAK+tB,UAAYzjB,GAASrQ,KAAKmE,IAAInE,KAAKkc,IAAInW,KAAK8M,SAAWxC,IAG/GtK,KAAK6N,GAAK,GAAM7N,KAAKiuB,KAAO7X,EAAMpW,KAAKzE,EAAGtB,KAAK4b,IAAI7V,KAAK8M,QAAS7S,KAAKkc,IAAInW,KAAK8M,SAAW2J,EAAMzW,KAAKzE,EAAGyE,KAAKqV,IAAMrV,KAAK8M,OAAQ9M,KAAKqV,IAAMpb,KAAK4b,IAAI7V,KAAK8M,UAE3J9M,KAAKkuB,IAAM9X,EAAMpW,KAAKzE,EAAGyE,KAAKguB,QAAShuB,KAAK+tB,SAC5C/tB,KAAKmuB,GAAK,EAAIl0B,KAAK2b,KAAK5V,KAAKouB,MAAMpuB,KAAKyM,KAAMzM,KAAKguB,QAAShuB,KAAKzE,IAAM0O,EACvEjK,KAAKquB,MAAQp0B,KAAKkc,IAAInW,KAAKmuB,IAC3BnuB,KAAKsuB,MAAQr0B,KAAK4b,IAAI7V,KAAKmuB,IAE/B,EA8HE9X,QA3HK,SAAiBvb,GACtB,IAIIsnB,EAAGrF,EAAGwR,EAAMC,EAAM/Y,EAAIgZ,EAJtBnY,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EACR81B,EAASz0B,KAAK4b,IAAIU,GAClBoY,EAAS10B,KAAKkc,IAAII,GAElBqY,EAAOpY,EAAWF,EAAMtW,KAAKgN,OAEjC,OAAI/S,KAAKmE,IAAInE,KAAKmE,IAAIkY,EAAMtW,KAAKgN,OAAS/S,KAAKiQ,KAAOI,GAASrQ,KAAKmE,IAAImY,EAAMvW,KAAKyM,OAASnC,GAG1FxP,EAAEnC,EAAI6I,IACN1G,EAAElC,EAAI4I,IACC1G,GAELkF,KAAK2S,QAEPyP,EAAI,EAAIpiB,KAAK6N,IAAM,EAAI7N,KAAKguB,QAAUU,EAAS1uB,KAAK+tB,QAAUY,EAAS10B,KAAKkc,IAAIyY,IAChF9zB,EAAEnC,EAAIqH,KAAK5D,EAAIgmB,EAAIuM,EAAS10B,KAAK4b,IAAI+Y,GAAQ5uB,KAAKnD,GAClD/B,EAAElC,EAAIoH,KAAK5D,EAAIgmB,GAAKpiB,KAAK+tB,QAAUW,EAAS1uB,KAAKguB,QAAUW,EAAS10B,KAAKkc,IAAIyY,IAAS5uB,KAAKlD,GACpFhC,IAGPiiB,EAAI,EAAI9iB,KAAK2b,KAAK5V,KAAKouB,MAAM7X,EAAKmY,EAAQ1uB,KAAKzE,IAAM0O,EACrDukB,EAAOv0B,KAAKkc,IAAI4G,GAChBwR,EAAOt0B,KAAK4b,IAAIkH,GACZ9iB,KAAKmE,IAAI4B,KAAK+tB,UAAYzjB,GAC5BmL,EAAKgB,EAAMzW,KAAKzE,EAAGgb,EAAMvW,KAAKqV,IAAKrV,KAAKqV,IAAMqZ,GAC9CD,EAAK,EAAIzuB,KAAK5D,EAAI4D,KAAK6N,GAAK4H,EAAKzV,KAAKiuB,KACtCnzB,EAAEnC,EAAIqH,KAAKnD,GAAK4xB,EAAKx0B,KAAK4b,IAAIS,EAAMtW,KAAKgN,OACzClS,EAAElC,EAAIoH,KAAKlD,GAAKkD,KAAKqV,IAAMoZ,EAAKx0B,KAAKkc,IAAIG,EAAMtW,KAAKgN,OAE7ClS,IAEAb,KAAKmE,IAAI4B,KAAKguB,SAAW1jB,GAGhC8X,EAAI,EAAIpiB,KAAK5D,EAAI4D,KAAK6N,IAAM,EAAI2gB,EAAOv0B,KAAKkc,IAAIyY,IAChD9zB,EAAElC,EAAIwpB,EAAImM,IAKVnM,EAAI,EAAIpiB,KAAK5D,EAAI4D,KAAK6N,GAAK7N,KAAKkuB,KAAOluB,KAAKquB,OAAS,EAAIruB,KAAKsuB,MAAQC,EAAOvuB,KAAKquB,MAAQG,EAAOv0B,KAAKkc,IAAIyY,KAC1G9zB,EAAElC,EAAIwpB,GAAKpiB,KAAKquB,MAAQE,EAAOvuB,KAAKsuB,MAAQE,EAAOv0B,KAAKkc,IAAIyY,IAAS5uB,KAAKlD,IAE5EhC,EAAEnC,EAAIypB,EAAIoM,EAAOv0B,KAAK4b,IAAI+Y,GAAQ5uB,KAAKnD,GAGlC/B,GACT,EA0EE4b,QAvEK,SAAiB5b,GAGtB,IAAIwb,EAAKC,EAAKd,EAAIoZ,EAAIC,EAFtBh0B,EAAEnC,GAAKqH,KAAKnD,GACZ/B,EAAElC,GAAKoH,KAAKlD,GAEZ,IAAI2xB,EAAKx0B,KAAKqb,KAAKxa,EAAEnC,EAAImC,EAAEnC,EAAImC,EAAElC,EAAIkC,EAAElC,GACvC,GAAIoH,KAAK2S,OAAQ,CACf,IAAIrW,EAAI,EAAIrC,KAAK2b,KAAK6Y,GAAM,EAAIzuB,KAAK5D,EAAI4D,KAAK6N,KAG9C,OAFAyI,EAAMtW,KAAKgN,MACXuJ,EAAMvW,KAAKyM,KACPgiB,GAAMnkB,GACRxP,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,IAETyb,EAAMtc,KAAKmwB,KAAKnwB,KAAKkc,IAAI7Z,GAAK0D,KAAKguB,QAAUlzB,EAAElC,EAAIqB,KAAK4b,IAAIvZ,GAAK0D,KAAK+tB,QAAUU,GAG5EnY,EAFArc,KAAKmE,IAAI4B,KAAK+tB,SAAWzjB,EACvBtK,KAAKyM,KAAO,EACR+J,EAAWxW,KAAKgN,MAAQ/S,KAAKijB,MAAMpiB,EAAEnC,GAAK,EAAImC,EAAElC,IAGhD4d,EAAWxW,KAAKgN,MAAQ/S,KAAKijB,MAAMpiB,EAAEnC,EAAGmC,EAAElC,IAI5C4d,EAAWxW,KAAKgN,MAAQ/S,KAAKijB,MAAMpiB,EAAEnC,EAAIsB,KAAK4b,IAAIvZ,GAAImyB,EAAKzuB,KAAK+tB,QAAU9zB,KAAKkc,IAAI7Z,GAAKxB,EAAElC,EAAIoH,KAAKguB,QAAU/zB,KAAK4b,IAAIvZ,KAE9HxB,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,EACT,CAEE,GAAIb,KAAKmE,IAAI4B,KAAK+tB,UAAYzjB,EAAO,CACnC,GAAImkB,GAAMnkB,EAMR,OALAiM,EAAMvW,KAAKyM,KACX6J,EAAMtW,KAAKgN,MACXlS,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EAECzb,EAETA,EAAEnC,GAAKqH,KAAKqV,IACZva,EAAElC,GAAKoH,KAAKqV,IACZI,EAAKgZ,EAAKzuB,KAAKiuB,MAAQ,EAAIjuB,KAAK5D,EAAI4D,KAAK6N,IACzC0I,EAAMvW,KAAKqV,IAAMuB,EAAM5W,KAAKzE,EAAGka,GAC/Ba,EAAMtW,KAAKqV,IAAMmB,EAAWxW,KAAKqV,IAAMrV,KAAKgN,MAAQ/S,KAAKijB,MAAMpiB,EAAEnC,GAAK,EAAImC,EAAElC,GAC9E,MAEEi2B,EAAK,EAAI50B,KAAK2b,KAAK6Y,EAAKzuB,KAAKquB,OAAS,EAAIruB,KAAK5D,EAAI4D,KAAK6N,GAAK7N,KAAKkuB,MAClE5X,EAAMtW,KAAKgN,MACPyhB,GAAMnkB,EACRwkB,EAAM9uB,KAAKmuB,IAGXW,EAAM70B,KAAKmwB,KAAKnwB,KAAKkc,IAAI0Y,GAAM7uB,KAAKsuB,MAAQxzB,EAAElC,EAAIqB,KAAK4b,IAAIgZ,GAAM7uB,KAAKquB,MAAQI,GAC9EnY,EAAME,EAAWxW,KAAKgN,MAAQ/S,KAAKijB,MAAMpiB,EAAEnC,EAAIsB,KAAK4b,IAAIgZ,GAAKJ,EAAKzuB,KAAKquB,MAAQp0B,KAAKkc,IAAI0Y,GAAM/zB,EAAElC,EAAIoH,KAAKsuB,MAAQr0B,KAAK4b,IAAIgZ,MAE5HtY,GAAO,EAAIK,EAAM5W,KAAKzE,EAAGtB,KAAK+D,IAAI,IAAOiM,EAAU6kB,KAOvD,OAJAh0B,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EAGCzb,CAET,EAOE+b,MALiB,CAAC,QAAS,2BAA4B,kCAAmC,uBAM1FuX,MA7KK,SAAeW,EAAM5Z,EAAQ6Z,GAElC,OADA7Z,GAAU6Z,EACF/0B,KAAK+D,IAAI,IAAOiM,EAAU8kB,IAAS90B,KAAKwH,KAAK,EAAI0T,IAAW,EAAIA,GAAS,GAAM6Z,EACzF,GCoEO,IACP,IACE/Y,KAzEK,WACL,IAAIgZ,EAAOjvB,KAAKyM,KAChBzM,KAAKkvB,QAAUlvB,KAAKgN,MACpB,IAAImiB,EAAUl1B,KAAK4b,IAAIoZ,GACnBG,EAAgBpvB,KAAK5D,EAErBizB,EAAa,EADNrvB,KAAKsM,GAEZgjB,EAAK,EAAID,EAAap1B,KAAKwH,IAAI4tB,EAAY,GAC3C9zB,EAAIyE,KAAKzE,EAAItB,KAAKqb,KAAKga,GAC3BtvB,KAAKuvB,EAAIvvB,KAAK6N,GAAKuhB,EAAgBn1B,KAAKqb,KAAK,EAAIga,IAAO,EAAIA,EAAKr1B,KAAKwH,IAAI0tB,EAAS,IACnFnvB,KAAKqN,MAAQpT,KAAKqb,KAAK,EAAIga,GAAM,EAAIA,GAAMr1B,KAAKwH,IAAIxH,KAAKkc,IAAI8Y,GAAO,IACpEjvB,KAAK+G,GAAK9M,KAAKmwB,KAAK+E,EAAUnvB,KAAKqN,OACnC,IAAImiB,EAAKv1B,KAAK8H,IAAI9H,KAAK+D,IAAI/D,KAAKiQ,GAAK,EAAIlK,KAAK+G,GAAK,IAC/C0oB,EAAKx1B,KAAK8H,IAAI9H,KAAK+D,IAAI/D,KAAKiQ,GAAK,EAAI+kB,EAAO,IAC5CS,EAAKz1B,KAAK8H,KAAK,EAAIxG,EAAI4zB,IAAY,EAAI5zB,EAAI4zB,IAC/CnvB,KAAKotB,EAAIoC,EAAKxvB,KAAKqN,MAAQoiB,EAAKzvB,KAAKqN,MAAQ9R,EAAI,EAAIm0B,CACvD,EA0DErZ,QAxDK,SAAiBvb,GACtB,IAAI60B,EAAM11B,KAAK8H,IAAI9H,KAAK+D,IAAI/D,KAAKiQ,GAAK,EAAIpP,EAAElC,EAAI,IAC5Cg3B,EAAM5vB,KAAKzE,EAAI,EAAItB,KAAK8H,KAAK,EAAI/B,KAAKzE,EAAItB,KAAK4b,IAAI/a,EAAElC,KAAO,EAAIoH,KAAKzE,EAAItB,KAAK4b,IAAI/a,EAAElC,KACpFi3B,GAAK7vB,KAAKqN,OAASsiB,EAAMC,GAAO5vB,KAAKotB,EAGrC/wB,EAAI,GAAKpC,KAAK2b,KAAK3b,KAAK0c,IAAIkZ,IAAM51B,KAAKiQ,GAAK,GAG5CmY,EAAIriB,KAAKqN,OAASvS,EAAEnC,EAAIqH,KAAKkvB,SAG7BY,EAAO71B,KAAK2b,KAAK3b,KAAK4b,IAAIwM,IAAMpoB,KAAK4b,IAAI7V,KAAK+G,IAAM9M,KAAK+D,IAAI3B,GAAKpC,KAAKkc,IAAInW,KAAK+G,IAAM9M,KAAKkc,IAAIkM,KAE/F0N,EAAO91B,KAAKmwB,KAAKnwB,KAAKkc,IAAInW,KAAK+G,IAAM9M,KAAK4b,IAAIxZ,GAAKpC,KAAK4b,IAAI7V,KAAK+G,IAAM9M,KAAKkc,IAAI9Z,GAAKpC,KAAKkc,IAAIkM,IAIlG,OAFAvnB,EAAElC,EAAIoH,KAAKuvB,EAAI,EAAIt1B,KAAK8H,KAAK,EAAI9H,KAAK4b,IAAIka,KAAU,EAAI91B,KAAK4b,IAAIka,KAAU/vB,KAAKlD,GAChFhC,EAAEnC,EAAIqH,KAAKuvB,EAAIO,EAAO9vB,KAAKnD,GACpB/B,CACT,EAsCE4b,QApCK,SAAiB5b,GAgBtB,IAfA,IAAIkiB,EAAIliB,EAAEnC,EAAIqH,KAAKnD,GACfkgB,EAAIjiB,EAAElC,EAAIoH,KAAKlD,GAEfgzB,EAAO9S,EAAIhd,KAAKuvB,EAChBQ,EAAO,GAAK91B,KAAK2b,KAAK3b,KAAK0c,IAAIoG,EAAI/c,KAAKuvB,IAAMt1B,KAAKiQ,GAAK,GAExD7N,EAAIpC,KAAKmwB,KAAKnwB,KAAKkc,IAAInW,KAAK+G,IAAM9M,KAAK4b,IAAIka,GAAQ91B,KAAK4b,IAAI7V,KAAK+G,IAAM9M,KAAKkc,IAAI4Z,GAAQ91B,KAAKkc,IAAI2Z,IACjGzN,EAAIpoB,KAAK2b,KAAK3b,KAAK4b,IAAIia,IAAS71B,KAAKkc,IAAInW,KAAK+G,IAAM9M,KAAKkc,IAAI2Z,GAAQ71B,KAAK4b,IAAI7V,KAAK+G,IAAM9M,KAAK+D,IAAI+xB,KAElGC,EAAShwB,KAAKkvB,QAAU7M,EAAIriB,KAAKqN,MAEjCwiB,EAAI,EACJI,EAAM5zB,EACN6zB,GAAW,IACXC,EAAY,EACTl2B,KAAKmE,IAAI6xB,EAAMC,GAAW,MAAW,CAC1C,KAAMC,EAAY,GAEhB,OAGFN,EAAI,EAAI7vB,KAAKqN,OAASpT,KAAK8H,IAAI9H,KAAK+D,IAAI/D,KAAKiQ,GAAK,EAAI7N,EAAI,IAAM2D,KAAKotB,GAAKptB,KAAKzE,EAAItB,KAAK8H,IAAI9H,KAAK+D,IAAI/D,KAAKiQ,GAAK,EAAIjQ,KAAKmwB,KAAKpqB,KAAKzE,EAAItB,KAAK4b,IAAIoa,IAAQ,IACvJC,EAAUD,EACVA,EAAM,EAAIh2B,KAAK2b,KAAK3b,KAAK0c,IAAIkZ,IAAM51B,KAAKiQ,GAAK,CAC/C,CAIA,OAFApP,EAAEnC,EAAIq3B,EACNl1B,EAAElC,EAAIq3B,EACCn1B,CACT,EAOE+b,MALiB,CAAC,WC1EhBuZ,GAAM,KAqOH,IACP,IACEna,KA3NK,WACL,IAAIZ,EAAKG,EAAK6a,EAAQtK,EAAGuK,EAAGC,EAAGC,EAAGC,EAAQ31B,EAAG41B,EAC3CC,EAZa1U,EAEX2U,EAS4CtjB,EAAQ,EAC9CujB,EAAO,EAAGC,EAAO,EAAGC,EAAO,EAAGC,EAAO,EAAGC,EAAO,EAAGC,EAAU,EAItElxB,KAAKmxB,QAdDP,EAAyC,iBAF9B3U,EAgBOjc,MAdQgS,WAA0B7G,OAAOD,KAAK+Q,EAAEjK,YAAY,GAAKiK,EAAEjK,WAElF,YAAaiK,GAAK,WAAYA,IAAmD,IAHjE,CAAC,0BAA0B,kDAGSlN,QAAQ6hB,IAanE5wB,KAAKoxB,OAAS,WAAYpxB,KAE1B,IAAIqxB,GAAM,EACN,UAAWrxB,OACbqxB,GAAM,GAGR,IAAIC,GAAM,EAaV,GAZI,yBAA0BtxB,OAC5BsxB,GAAM,GAGJD,IACFH,EAAUlxB,KAAKqN,OAGbikB,IACFhkB,EAAStN,KAAKuN,qBAAuBhD,GAGnC8mB,GAAOC,EACTT,EAAO7wB,KAAKyN,WAOZ,GALAqjB,EAAO9wB,KAAKkN,MACZ8jB,EAAOhxB,KAAK2M,KACZokB,EAAO/wB,KAAKoN,MACZ6jB,EAAOjxB,KAAK6M,KAER5S,KAAKmE,IAAI4yB,EAAOC,IAASb,KAAQ/a,EAAMpb,KAAKmE,IAAI4yB,KAAUZ,IAC1Dn2B,KAAKmE,IAAIiX,EAAMpL,IAAYmmB,IAAOn2B,KAAKmE,IAAInE,KAAKmE,IAAI4B,KAAKyM,MAAQxC,IAAYmmB,IAC7En2B,KAAKmE,IAAInE,KAAKmE,IAAI6yB,GAAQhnB,IAAYmmB,GACxC,MAAM,IAAIlqB,MAId,IAAIqrB,EAAS,EAAMvxB,KAAKkW,GACxBV,EAAMvb,KAAKqb,KAAKic,GAEZt3B,KAAKmE,IAAI4B,KAAKyM,MAAQnC,GACxBmmB,EAASx2B,KAAK4b,IAAI7V,KAAKyM,MACvB4jB,EAASp2B,KAAKkc,IAAInW,KAAKyM,MACvB4I,EAAM,EAAIrV,KAAKkW,GAAKua,EAASA,EAC7BzwB,KAAKwqB,EAAI6F,EAASA,EAClBrwB,KAAKwqB,EAAIvwB,KAAKqb,KAAK,EAAItV,KAAKkW,GAAKlW,KAAKwqB,EAAIxqB,KAAKwqB,EAAI+G,GACnDvxB,KAAKoiB,EAAIpiB,KAAKwqB,EAAIxqB,KAAK6N,GAAK2H,EAAMH,GAElCib,GADAvK,EAAI/lB,KAAKwqB,EAAIhV,GAAO6a,EAASp2B,KAAKqb,KAAKD,KAC/B0Q,EAAG,IAEF,EACPuK,EAAI,GAEJA,EAAIr2B,KAAKqb,KAAKgb,GACVtwB,KAAKyM,KAAO,IACd6jB,GAAKA,IAITtwB,KAAKwxB,EAAIlB,GAAKvK,EACd/lB,KAAKwxB,GAAKv3B,KAAKwH,IAAIgV,EAAMzW,KAAKzE,EAAGyE,KAAKyM,KAAMgkB,GAASzwB,KAAKwqB,KAE1DxqB,KAAKwqB,EAAI,EAAIhV,EACbxV,KAAKoiB,EAAIpiB,KAAK6N,GACd7N,KAAKwxB,EAAIzL,EAAIuK,EAAI,GAGfe,GAAOC,GACLD,GACFV,EAAS12B,KAAKmwB,KAAKnwB,KAAK4b,IAAIqb,GAAWnL,GAClCuL,IACHhkB,EAAQ4jB,KAGVP,EAASrjB,EACT4jB,EAAUj3B,KAAKmwB,KAAKrE,EAAI9rB,KAAK4b,IAAI8a,KAEnC3wB,KAAKyxB,KAAOZ,EAAO52B,KAAKmwB,KAAK,IAAOkG,EAAI,EAAIA,GAAKr2B,KAAK+D,IAAI2yB,IAAW3wB,KAAKwqB,IAE1E+F,EAAIt2B,KAAKwH,IAAIgV,EAAMzW,KAAKzE,EAAGy1B,EAAM/2B,KAAK4b,IAAImb,IAAQhxB,KAAKwqB,GACvDgG,EAAIv2B,KAAKwH,IAAIgV,EAAMzW,KAAKzE,EAAG01B,EAAMh3B,KAAK4b,IAAIob,IAAQjxB,KAAKwqB,GACvD8F,EAAItwB,KAAKwxB,EAAIjB,EACbz1B,GAAK01B,EAAID,IAAMC,EAAID,GAEnBG,IADAA,EAAI1wB,KAAKwxB,EAAIxxB,KAAKwxB,GACThB,EAAID,IAAMG,EAAIF,EAAID,IAC3Blb,EAAMyb,EAAOC,IAEF92B,KAAKy3B,GACdX,GAAOrmB,EACE2K,EAAMpb,KAAKy3B,KACpBX,GAAQrmB,GAGV1K,KAAKyxB,KAAOjb,EAAW,IAAOsa,EAAOC,GAAQ92B,KAAK2b,KAAK8a,EAAIz2B,KAAK+D,IAAI,GAAMgC,KAAKwqB,GAAKsG,EAAOC,IAASj2B,GAAKkF,KAAKwqB,GAC9GmG,EAAS12B,KAAK2b,KAAK,EAAI3b,KAAK4b,IAAI7V,KAAKwqB,EAAIhU,EAAWsa,EAAO9wB,KAAKyxB,QAAUnB,EAAI,EAAIA,IAClFhjB,EAAQ4jB,EAAUj3B,KAAKmwB,KAAKrE,EAAI9rB,KAAK4b,IAAI8a,KAG3C3wB,KAAK2xB,OAAS13B,KAAK4b,IAAI8a,GACvB3wB,KAAK4xB,OAAS33B,KAAKkc,IAAIwa,GACvB3wB,KAAK6xB,OAAS53B,KAAK4b,IAAIvI,GACvBtN,KAAK8xB,OAAS73B,KAAKkc,IAAI7I,GAEvBtN,KAAK+xB,GAAK,EAAI/xB,KAAKwqB,EACnBxqB,KAAKgyB,IAAMhyB,KAAKoiB,EAAIpiB,KAAK+xB,GACzB/xB,KAAKiyB,IAAM,EAAIjyB,KAAKgyB,IACfhyB,KAAKoiB,EAAIpiB,KAAKwqB,EAEfxqB,KAAKmxB,OACPnxB,KAAKkyB,IAAM,GAEXlyB,KAAKkyB,IAAMj4B,KAAKmE,IAAI4B,KAAKgyB,IAAM/3B,KAAK2b,KAAK3b,KAAKqb,KAAKyQ,EAAIA,EAAI,GAAK9rB,KAAKkc,IAAI+a,KAErElxB,KAAKyM,KAAO,IACdzM,KAAKkyB,KAAQlyB,KAAKkyB,MAItB5B,EAAI,GAAMK,EACV3wB,KAAKmyB,SAAWnyB,KAAKgyB,IAAM/3B,KAAK8H,IAAI9H,KAAK+D,IAAIyM,EAAS6lB,IACtDtwB,KAAKoyB,SAAWpyB,KAAKgyB,IAAM/3B,KAAK8H,IAAI9H,KAAK+D,IAAIyM,EAAS6lB,GACxD,EA8FEja,QAzFK,SAAiBvb,GACtB,IACI+0B,EAAGrL,EAAG6N,EAAG9P,EAAG+P,EAAGnI,EAAMoI,EAAGxmB,EADxBwV,EAAS,CAAC,EAId,GAFAzmB,EAAEnC,EAAImC,EAAEnC,EAAIqH,KAAKyxB,KAEbx3B,KAAKmE,IAAInE,KAAKmE,IAAItD,EAAElC,GAAKqR,GAAWK,EAAO,CAS7C,GALAulB,EAAI,KAHJyC,EAAItyB,KAAKwxB,EAAIv3B,KAAKwH,IAAIgV,EAAMzW,KAAKzE,EAAGT,EAAElC,EAAGqB,KAAK4b,IAAI/a,EAAElC,IAAKoH,KAAKwqB,KAE9DL,EAAO,EAAImI,IAEX9N,EAAI,IAAO8N,EAAInI,GACf5H,EAAItoB,KAAK4b,IAAI7V,KAAKwqB,EAAI1vB,EAAEnC,GACxB05B,GAAKxC,EAAI7vB,KAAK2xB,OAASpP,EAAIviB,KAAK4xB,QAAUpN,EAEtCvqB,KAAKmE,IAAInE,KAAKmE,IAAIi0B,GAAK,GAAO/nB,EAChC,MAAM,IAAIpE,MAGZ6F,EAAI,GAAM/L,KAAKgyB,IAAM/3B,KAAK8H,KAAK,EAAIswB,IAAI,EAAIA,IAC3ClI,EAAOlwB,KAAKkc,IAAInW,KAAKwqB,EAAI1vB,EAAEnC,GAGzB45B,EADEt4B,KAAKmE,IAAI+rB,GAAQiG,GACfpwB,KAAKoiB,EAAItnB,EAAEnC,EAEXqH,KAAKgyB,IAAM/3B,KAAKijB,MAAO2S,EAAI7vB,KAAK4xB,OAASrP,EAAIviB,KAAK2xB,OAASxH,EAEnE,MACEpe,EAAIjR,EAAElC,EAAI,EAAIoH,KAAKmyB,SAAWnyB,KAAKoyB,SACnCG,EAAIvyB,KAAKgyB,IAAMl3B,EAAElC,EAenB,OAZIoH,KAAKoxB,QACP7P,EAAO5oB,EAAI45B,EACXhR,EAAO3oB,EAAImT,IAEXwmB,GAAKvyB,KAAKkyB,IACV3Q,EAAO5oB,EAAIoT,EAAI/L,KAAK8xB,OAASS,EAAIvyB,KAAK6xB,OACtCtQ,EAAO3oB,EAAI25B,EAAIvyB,KAAK8xB,OAAS/lB,EAAI/L,KAAK6xB,QAGxCtQ,EAAO5oB,EAAKqH,KAAK5D,EAAImlB,EAAO5oB,EAAIqH,KAAKnD,GACrC0kB,EAAO3oB,EAAKoH,KAAK5D,EAAImlB,EAAO3oB,EAAIoH,KAAKlD,GAE9BykB,CACT,EA8CE7K,QA5CK,SAAiB5b,GACtB,IAAIy3B,EAAGxmB,EAAGymB,EAAIC,EAAIC,EAAIC,EAAIC,EACtBrR,EAAS,CAAC,EAmBd,GAjBAzmB,EAAEnC,GAAKmC,EAAEnC,EAAIqH,KAAKnD,KAAO,EAAMmD,KAAK5D,GACpCtB,EAAElC,GAAKkC,EAAElC,EAAIoH,KAAKlD,KAAO,EAAMkD,KAAK5D,GAEhC4D,KAAKoxB,QACPrlB,EAAIjR,EAAElC,EACN25B,EAAIz3B,EAAEnC,IAENoT,EAAIjR,EAAEnC,EAAIqH,KAAK8xB,OAASh3B,EAAElC,EAAIoH,KAAK6xB,OACnCU,EAAIz3B,EAAElC,EAAIoH,KAAK8xB,OAASh3B,EAAEnC,EAAIqH,KAAK6xB,OAAS7xB,KAAKkyB,KAInDO,EAAK,KADLD,EAAKv4B,KAAK0c,KAAK3W,KAAKiyB,IAAMlmB,IACT,EAAIymB,GACrBE,EAAK,IAAOF,EAAK,EAAIA,GAErBI,IADAD,EAAK14B,KAAK4b,IAAI7V,KAAKiyB,IAAMM,IACdvyB,KAAK4xB,OAASa,EAAKzyB,KAAK2xB,QAAUe,EAEzCz4B,KAAKmE,IAAInE,KAAKmE,IAAIw0B,GAAM,GAAKtoB,EAC/BiX,EAAO5oB,EAAI,EACX4oB,EAAO3oB,EAAIg6B,EAAK,GAAK3oB,EAAUA,MAC1B,CAIL,GAHAsX,EAAO3oB,EAAIoH,KAAKwxB,EAAIv3B,KAAKqb,MAAM,EAAIsd,IAAO,EAAIA,IAC9CrR,EAAO3oB,EAAIge,EAAM5W,KAAKzE,EAAGtB,KAAKwH,IAAI8f,EAAO3oB,EAAG,EAAIoH,KAAKwqB,IAEjDjJ,EAAO3oB,IAAMmF,IACf,MAAM,IAAImI,MAGZqb,EAAO5oB,GAAKqH,KAAK+xB,GAAK93B,KAAKijB,MAAOuV,EAAKzyB,KAAK4xB,OAASe,EAAK3yB,KAAK2xB,OAAS13B,KAAKkc,IAAInW,KAAKiyB,IAAMM,GAC9F,CAIA,OAFAhR,EAAO5oB,GAAKqH,KAAKyxB,KAEVlQ,CACT,EAOE1K,MALiB,CAAC,0BAA2B,0BAA2B,iDAAkD,mDAAoD,yCAA0C,mBAAoB,UCpGvO,IAUP,IACEZ,KA3IK,WAuBL,GATKjW,KAAK6M,OACR7M,KAAK6M,KAAO7M,KAAK2M,MAEd3M,KAAK6N,KACR7N,KAAK6N,GAAK,GAEZ7N,KAAKnD,GAAKmD,KAAKnD,IAAM,EACrBmD,KAAKlD,GAAKkD,KAAKlD,IAAM,IAEjB7C,KAAKmE,IAAI4B,KAAK2M,KAAO3M,KAAK6M,MAAQvC,GAAtC,CAIA,IAAI6f,EAAOnqB,KAAK3D,EAAI2D,KAAK5D,EACzB4D,KAAKzE,EAAItB,KAAKqb,KAAK,EAAI6U,EAAOA,GAE9B,IAAI0I,EAAO54B,KAAK4b,IAAI7V,KAAK2M,MACrBmmB,EAAO74B,KAAKkc,IAAInW,KAAK2M,MACrBuhB,EAAM9X,EAAMpW,KAAKzE,EAAGs3B,EAAMC,GAC1BC,EAAMtc,EAAMzW,KAAKzE,EAAGyE,KAAK2M,KAAMkmB,GAE/BG,EAAO/4B,KAAK4b,IAAI7V,KAAK6M,MACrBomB,EAAOh5B,KAAKkc,IAAInW,KAAK6M,MACrBqmB,EAAM9c,EAAMpW,KAAKzE,EAAGy3B,EAAMC,GAC1BE,EAAM1c,EAAMzW,KAAKzE,EAAGyE,KAAK6M,KAAMmmB,GAE/BI,EAAM3c,EAAMzW,KAAKzE,EAAGyE,KAAKyM,KAAMxS,KAAK4b,IAAI7V,KAAKyM,OAE7CxS,KAAKmE,IAAI4B,KAAK2M,KAAO3M,KAAK6M,MAAQvC,EACpCtK,KAAKqzB,GAAKp5B,KAAK8H,IAAImsB,EAAMgF,GAAOj5B,KAAK8H,IAAIgxB,EAAMI,GAG/CnzB,KAAKqzB,GAAKR,EAERhxB,MAAM7B,KAAKqzB,MACbrzB,KAAKqzB,GAAKR,GAEZ7yB,KAAKszB,GAAKpF,GAAOluB,KAAKqzB,GAAKp5B,KAAKwH,IAAIsxB,EAAK/yB,KAAKqzB,KAC9CrzB,KAAKyuB,GAAKzuB,KAAK5D,EAAI4D,KAAKszB,GAAKr5B,KAAKwH,IAAI2xB,EAAKpzB,KAAKqzB,IAC3CrzB,KAAK0tB,QACR1tB,KAAK0tB,MAAQ,0BA7Bf,CA+BF,EAoFErX,QAhFK,SAAiBvb,GAEtB,IAAIwb,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAGRqB,KAAKmE,IAAI,EAAInE,KAAKmE,IAAImY,GAAOtc,KAAKiQ,KAAOI,IAC3CiM,EAAMnX,EAAKmX,IAAQtM,EAAU,EAAIK,IAGnC,IACImL,EAAI8d,EADJle,EAAMpb,KAAKmE,IAAInE,KAAKmE,IAAImY,GAAOtM,GAEnC,GAAIoL,EAAM/K,EACRmL,EAAKgB,EAAMzW,KAAKzE,EAAGgb,EAAKtc,KAAK4b,IAAIU,IACjCgd,EAAMvzB,KAAK5D,EAAI4D,KAAKszB,GAAKr5B,KAAKwH,IAAIgU,EAAIzV,KAAKqzB,QAExC,CAEH,IADAhe,EAAMkB,EAAMvW,KAAKqzB,KACN,EACT,OAAO,KAETE,EAAM,CACR,CACA,IAAIC,EAAQxzB,KAAKqzB,GAAK7c,EAAWF,EAAMtW,KAAKgN,OAI5C,OAHAlS,EAAEnC,EAAIqH,KAAK6N,IAAM0lB,EAAMt5B,KAAK4b,IAAI2d,IAAUxzB,KAAKnD,GAC/C/B,EAAElC,EAAIoH,KAAK6N,IAAM7N,KAAKyuB,GAAK8E,EAAMt5B,KAAKkc,IAAIqd,IAAUxzB,KAAKlD,GAElDhC,CACT,EAqDE4b,QAjDK,SAAiB5b,GAEtB,IAAIy4B,EAAKle,EAAKI,EACVc,EAAKD,EACL3d,GAAKmC,EAAEnC,EAAIqH,KAAKnD,IAAMmD,KAAK6N,GAC3BjV,EAAKoH,KAAKyuB,IAAM3zB,EAAElC,EAAIoH,KAAKlD,IAAMkD,KAAK6N,GACtC7N,KAAKqzB,GAAK,GACZE,EAAMt5B,KAAKqb,KAAK3c,EAAIA,EAAIC,EAAIA,GAC5Byc,EAAM,IAGNke,GAAOt5B,KAAKqb,KAAK3c,EAAIA,EAAIC,EAAIA,GAC7Byc,GAAO,GAET,IAAIme,EAAQ,EAIZ,GAHY,IAARD,IACFC,EAAQv5B,KAAKijB,MAAO7H,EAAM1c,EAAK0c,EAAMzc,IAE1B,IAAR26B,GAAevzB,KAAKqzB,GAAK,GAI5B,GAHAhe,EAAM,EAAIrV,KAAKqzB,GACf5d,EAAKxb,KAAKwH,IAAK8xB,GAAOvzB,KAAK5D,EAAI4D,KAAKszB,IAAMje,IAE7B,QADbkB,EAAMK,EAAM5W,KAAKzE,EAAGka,IAElB,OAAO,UAITc,GAAOtM,EAMT,OAJAqM,EAAME,EAAWgd,EAAQxzB,KAAKqzB,GAAKrzB,KAAKgN,OAExClS,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,CACT,EAgBE+b,MAdiB,CACjB,gDACA,0BACA,8BACA,8BACA,MACA,gCACA,kCC1CK,IACP,IACEZ,KAnGK,WACLjW,KAAK5D,EAAI,YACT4D,KAAKkW,GAAK,iBACVlW,KAAKzE,EAAItB,KAAKqb,KAAKtV,KAAKkW,IACnBlW,KAAKyM,OACRzM,KAAKyM,KAAO,kBAETzM,KAAKgN,QACRhN,KAAKgN,MAAQ,mBAGVhN,KAAK6N,KACR7N,KAAK6N,GAAK,OAEZ7N,KAAKyzB,IAAM,iBACXzzB,KAAK0zB,IAAM,EAAI1zB,KAAKyzB,IACpBzzB,KAAK2zB,IAAM3zB,KAAKyM,KAChBzM,KAAKsvB,GAAKtvB,KAAKkW,GACflW,KAAKzE,EAAItB,KAAKqb,KAAKtV,KAAKsvB,IACxBtvB,KAAK4zB,KAAO35B,KAAKqb,KAAK,EAAKtV,KAAKsvB,GAAKr1B,KAAKwH,IAAIxH,KAAKkc,IAAInW,KAAK2zB,KAAM,IAAO,EAAI3zB,KAAKsvB,KAClFtvB,KAAK6zB,GAAK,iBACV7zB,KAAK8zB,GAAK75B,KAAKmwB,KAAKnwB,KAAK4b,IAAI7V,KAAK2zB,KAAO3zB,KAAK4zB,MAC9C5zB,KAAKkqB,EAAIjwB,KAAKwH,KAAK,EAAIzB,KAAKzE,EAAItB,KAAK4b,IAAI7V,KAAK2zB,OAAS,EAAI3zB,KAAKzE,EAAItB,KAAK4b,IAAI7V,KAAK2zB,MAAO3zB,KAAK4zB,KAAO5zB,KAAKzE,EAAI,GAC9GyE,KAAK8N,EAAI7T,KAAK+D,IAAIgC,KAAK8zB,GAAK,EAAI9zB,KAAKyzB,KAAOx5B,KAAKwH,IAAIxH,KAAK+D,IAAIgC,KAAK2zB,IAAM,EAAI3zB,KAAKyzB,KAAMzzB,KAAK4zB,MAAQ5zB,KAAKkqB,EAC1GlqB,KAAKwvB,GAAKxvB,KAAK6N,GACf7N,KAAK+zB,GAAK/zB,KAAK5D,EAAInC,KAAKqb,KAAK,EAAItV,KAAKsvB,KAAO,EAAItvB,KAAKsvB,GAAKr1B,KAAKwH,IAAIxH,KAAK4b,IAAI7V,KAAK2zB,KAAM,IACxF3zB,KAAKg0B,GAAK,iBACVh0B,KAAK5C,EAAInD,KAAK4b,IAAI7V,KAAKg0B,IACvBh0B,KAAKi0B,IAAMj0B,KAAKwvB,GAAKxvB,KAAK+zB,GAAK95B,KAAK+D,IAAIgC,KAAKg0B,IAC7Ch0B,KAAKk0B,GAAKl0B,KAAK0zB,IAAM1zB,KAAK6zB,EAC5B,EAsEExd,QAjEK,SAAiBvb,GACtB,IAAIq5B,EAAK5B,EAAG6B,EAAQ7yB,EAAGX,EAAGyzB,EAAKC,EAC3Bhe,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EACRywB,EAAY7S,EAAWF,EAAMtW,KAAKgN,OAgBtC,OAdAmnB,EAAMl6B,KAAKwH,KAAM,EAAIzB,KAAKzE,EAAItB,KAAK4b,IAAIU,KAAS,EAAIvW,KAAKzE,EAAItB,KAAK4b,IAAIU,IAASvW,KAAK4zB,KAAO5zB,KAAKzE,EAAI,GACpGg3B,EAAI,GAAKt4B,KAAK2b,KAAK5V,KAAK8N,EAAI7T,KAAKwH,IAAIxH,KAAK+D,IAAIuY,EAAM,EAAIvW,KAAKyzB,KAAMzzB,KAAK4zB,MAAQO,GAAOn0B,KAAKyzB,KAC5FW,GAAU/K,EAAYrpB,KAAK4zB,KAC3BryB,EAAItH,KAAKmwB,KAAKnwB,KAAKkc,IAAInW,KAAKk0B,IAAMj6B,KAAK4b,IAAI0c,GAAKt4B,KAAK4b,IAAI7V,KAAKk0B,IAAMj6B,KAAKkc,IAAIoc,GAAKt4B,KAAKkc,IAAIie,IAC3FxzB,EAAI3G,KAAKmwB,KAAKnwB,KAAKkc,IAAIoc,GAAKt4B,KAAK4b,IAAIue,GAAUn6B,KAAKkc,IAAI5U,IACxD8yB,EAAMr0B,KAAK5C,EAAIwD,EACf0zB,EAAKt0B,KAAKi0B,IAAMh6B,KAAKwH,IAAIxH,KAAK+D,IAAIgC,KAAKg0B,GAAK,EAAIh0B,KAAKyzB,KAAMzzB,KAAK5C,GAAKnD,KAAKwH,IAAIxH,KAAK+D,IAAIuD,EAAI,EAAIvB,KAAKyzB,KAAMzzB,KAAK5C,GAC/GtC,EAAElC,EAAI07B,EAAKr6B,KAAKkc,IAAIke,GAAO,EAC3Bv5B,EAAEnC,EAAI27B,EAAKr6B,KAAK4b,IAAIwe,GAAO,EAEtBr0B,KAAKu0B,QACRz5B,EAAElC,IAAM,EACRkC,EAAEnC,IAAM,GAEH,CACT,EA6CE+d,QA1CK,SAAiB5b,GACtB,IAAIy3B,EAAG6B,EAAQ7yB,EAAGX,EAAQ0zB,EAAIE,EAC1BC,EAIA9H,EAAM7xB,EAAEnC,EACZmC,EAAEnC,EAAImC,EAAElC,EACRkC,EAAElC,EAAI+zB,EACD3sB,KAAKu0B,QACRz5B,EAAElC,IAAM,EACRkC,EAAEnC,IAAM,GAEV27B,EAAKr6B,KAAKqb,KAAKxa,EAAEnC,EAAImC,EAAEnC,EAAImC,EAAElC,EAAIkC,EAAElC,GAEnCgI,EADM3G,KAAKijB,MAAMpiB,EAAElC,EAAGkC,EAAEnC,GACdsB,KAAK4b,IAAI7V,KAAKg0B,IACxBzyB,EAAI,GAAKtH,KAAK2b,KAAK3b,KAAKwH,IAAIzB,KAAKi0B,IAAMK,EAAI,EAAIt0B,KAAK5C,GAAKnD,KAAK+D,IAAIgC,KAAKg0B,GAAK,EAAIh0B,KAAKyzB,MAAQzzB,KAAKyzB,KAClGlB,EAAIt4B,KAAKmwB,KAAKnwB,KAAKkc,IAAInW,KAAKk0B,IAAMj6B,KAAK4b,IAAItU,GAAKtH,KAAK4b,IAAI7V,KAAKk0B,IAAMj6B,KAAKkc,IAAI5U,GAAKtH,KAAKkc,IAAIvV,IAC3FwzB,EAASn6B,KAAKmwB,KAAKnwB,KAAKkc,IAAI5U,GAAKtH,KAAK4b,IAAIjV,GAAK3G,KAAKkc,IAAIoc,IACxDz3B,EAAEnC,EAAIqH,KAAKgN,MAAQonB,EAASp0B,KAAK4zB,KACjCY,EAAMjC,EACNkC,EAAK,EACL,IAAI5X,EAAO,EACX,GACE/hB,EAAElC,EAAI,GAAKqB,KAAK2b,KAAK3b,KAAKwH,IAAIzB,KAAK8N,GAAK,EAAI9N,KAAK4zB,MAAQ35B,KAAKwH,IAAIxH,KAAK+D,IAAIu0B,EAAI,EAAIvyB,KAAKyzB,KAAM,EAAIzzB,KAAK4zB,MAAQ35B,KAAKwH,KAAK,EAAIzB,KAAKzE,EAAItB,KAAK4b,IAAI2e,KAAS,EAAIx0B,KAAKzE,EAAItB,KAAK4b,IAAI2e,IAAOx0B,KAAKzE,EAAI,IAAMyE,KAAKyzB,KACrMx5B,KAAKmE,IAAIo2B,EAAM15B,EAAElC,GAAK,QACxB67B,EAAK,GAEPD,EAAM15B,EAAElC,EACRikB,GAAQ,QACM,IAAP4X,GAAY5X,EAAO,IAC5B,OAAIA,GAAQ,GACH,KAGF,CACT,EAOEhG,MALiB,CAAC,SAAU,WCnGf,YAAS6d,EAAIvO,EAAImJ,EAAIqF,EAAIpf,GACtC,OAAQmf,EAAKnf,EAAM4Q,EAAKlsB,KAAK4b,IAAI,EAAIN,GAAO+Z,EAAKr1B,KAAK4b,IAAI,EAAIN,GAAOof,EAAK16B,KAAK4b,IAAI,EAAIN,EACzF,CCFe,YAAS5c,GACtB,OAAQ,EAAI,IAAOA,GAAK,EAAIA,EAAI,IAAM,EAAI,KAAOA,GACnD,CCFe,YAASA,GACtB,MAAQ,KAAQA,GAAK,EAAI,IAAOA,GAAK,EAAI,OAAUA,GACrD,CCFe,YAASA,GACtB,MAAQ,UAAaA,EAAIA,GAAK,EAAI,IAAOA,EAC3C,CCFe,YAASA,GACtB,OAAQA,EAAIA,EAAIA,GAAK,GAAK,KAC5B,CCFe,YAASyD,EAAGb,EAAG4Z,GAC5B,IAAIgV,EAAO5uB,EAAI4Z,EACf,OAAO/Y,EAAInC,KAAKqb,KAAK,EAAI6U,EAAOA,EAClC,CCAe,YAASxxB,GACtB,OAAQsB,KAAKmE,IAAIzF,GAAKsR,EAAWtR,EAAKA,EAAKyG,EAAKzG,GAAKsB,KAAKiQ,EAC5D,CCLe,YAAS0f,EAAI8K,EAAIvO,EAAImJ,EAAIqF,GACtC,IAAIpf,EACAG,EAEJH,EAAMqU,EAAK8K,EACX,IAAK,IAAIp7B,EAAI,EAAGA,EAAI,GAAIA,IAGtB,GADAic,GADAG,GAAQkU,GAAM8K,EAAKnf,EAAM4Q,EAAKlsB,KAAK4b,IAAI,EAAIN,GAAO+Z,EAAKr1B,KAAK4b,IAAI,EAAIN,GAAOof,EAAK16B,KAAK4b,IAAI,EAAIN,MAAUmf,EAAK,EAAIvO,EAAKlsB,KAAKkc,IAAI,EAAIZ,GAAO,EAAI+Z,EAAKr1B,KAAKkc,IAAI,EAAIZ,GAAO,EAAIof,EAAK16B,KAAKkc,IAAI,EAAIZ,IAExLtb,KAAKmE,IAAIsX,IAAS,MACpB,OAAOH,EAKX,OAAO/T,GACT,CCsFO,IACP,IACEyU,KA5FK,WACAjW,KAAK2S,SACR3S,KAAK00B,GAAKE,GAAK50B,KAAKkW,IACpBlW,KAAKmmB,GAAK0O,GAAK70B,KAAKkW,IACpBlW,KAAKsvB,GAAKwF,GAAK90B,KAAKkW,IACpBlW,KAAK20B,GAAKI,GAAK/0B,KAAKkW,IACpBlW,KAAKopB,IAAMppB,KAAK5D,EAAI44B,GAAKh1B,KAAK00B,GAAI10B,KAAKmmB,GAAInmB,KAAKsvB,GAAItvB,KAAK20B,GAAI30B,KAAKyM,MAEtE,EAqFE4J,QAjFK,SAAiBvb,GAItB,IAAInC,EAAGC,EACHq8B,EAAMn6B,EAAEnC,EACR4c,EAAMza,EAAElC,EAGZ,GAFAq8B,EAAMze,EAAWye,EAAMj1B,KAAKgN,OAExBhN,KAAK2S,OACPha,EAAIqH,KAAK5D,EAAInC,KAAKmwB,KAAKnwB,KAAKkc,IAAIZ,GAAOtb,KAAK4b,IAAIof,IAChDr8B,EAAIoH,KAAK5D,GAAKnC,KAAKijB,MAAMjjB,KAAK+D,IAAIuX,GAAMtb,KAAKkc,IAAI8e,IAAQj1B,KAAKyM,UAE3D,CAEH,IAAI0I,EAASlb,KAAK4b,IAAIN,GAClBH,EAASnb,KAAKkc,IAAIZ,GAClB2f,EAAKC,GAAGn1B,KAAK5D,EAAG4D,KAAKzE,EAAG4Z,GACxBigB,EAAKn7B,KAAK+D,IAAIuX,GAAOtb,KAAK+D,IAAIuX,GAC9BiU,EAAKyL,EAAMh7B,KAAKkc,IAAIZ,GACpB8f,EAAM7L,EAAKA,EACX8L,EAAKt1B,KAAKkW,GAAKd,EAASA,GAAU,EAAIpV,KAAKkW,IAG/Cvd,EAAIu8B,EAAK1L,GAAM,EAAI6L,EAAMD,GAAM,EAAI,GAAK,EAAIA,EAAK,EAAIE,GAAMD,EAAM,MACjEz8B,EAHSoH,KAAK5D,EAAI44B,GAAKh1B,KAAK00B,GAAI10B,KAAKmmB,GAAInmB,KAAKsvB,GAAItvB,KAAK20B,GAAIpf,GAGlDvV,KAAKopB,IAAM8L,EAAK/f,EAASC,EAASigB,GAAO,IAAO,EAAID,EAAK,EAAIE,GAAMD,EAAM,GAGpF,CAIA,OAFAv6B,EAAEnC,EAAIA,EAAIqH,KAAKnD,GACf/B,EAAElC,EAAIA,EAAIoH,KAAKlD,GACRhC,CACT,EAiDE4b,QA7CK,SAAiB5b,GACtBA,EAAEnC,GAAKqH,KAAKnD,GACZ/B,EAAElC,GAAKoH,KAAKlD,GACZ,IAEIyY,EAAK0f,EAFLt8B,EAAImC,EAAEnC,EAAIqH,KAAK5D,EACfxD,EAAIkC,EAAElC,EAAIoH,KAAK5D,EAGnB,GAAI4D,KAAK2S,OAAQ,CACf,IAAI4iB,EAAK38B,EAAIoH,KAAKyM,KAClB8I,EAAMtb,KAAKmwB,KAAKnwB,KAAK4b,IAAI0f,GAAMt7B,KAAKkc,IAAIxd,IACxCs8B,EAAMh7B,KAAKijB,MAAMjjB,KAAK+D,IAAIrF,GAAIsB,KAAKkc,IAAIof,GACzC,KACK,CAEH,IACIvE,EAAOwE,GADDx1B,KAAKopB,IAAMppB,KAAK5D,EAAIxD,EACRoH,KAAK00B,GAAI10B,KAAKmmB,GAAInmB,KAAKsvB,GAAItvB,KAAK20B,IACtD,GAAI16B,KAAKmE,IAAInE,KAAKmE,IAAI4yB,GAAQ/mB,IAAYK,EAMxC,OALAxP,EAAEnC,EAAIqH,KAAKgN,MACXlS,EAAElC,EAAIqR,EACFrR,EAAI,IACNkC,EAAElC,IAAM,GAEHkC,EAET,IAAI26B,EAAMN,GAAGn1B,KAAK5D,EAAG4D,KAAKzE,EAAGtB,KAAK4b,IAAImb,IAElC0E,EAAMD,EAAMA,EAAMA,EAAMz1B,KAAK5D,EAAI4D,KAAK5D,GAAK,EAAI4D,KAAKkW,IACpDyf,EAAM17B,KAAKwH,IAAIxH,KAAK+D,IAAIgzB,GAAO,GAC/B4E,EAAKj9B,EAAIqH,KAAK5D,EAAIq5B,EAClBI,EAAMD,EAAKA,EACfrgB,EAAMyb,EAAOyE,EAAMx7B,KAAK+D,IAAIgzB,GAAQ0E,EAAME,EAAKA,GAAM,IAAO,EAAI,EAAID,GAAOC,EAAKA,EAAK,IACrFX,EAAMW,GAAM,EAAIC,GAAOF,EAAM,GAAK,EAAI,EAAIA,GAAOA,EAAME,EAAM,KAAO57B,KAAKkc,IAAI6a,EAE/E,CAIA,OAFAl2B,EAAEnC,EAAI6d,EAAWye,EAAMj1B,KAAKgN,OAC5BlS,EAAElC,EAAIk9B,GAAWvgB,GACVza,CAET,EAOE+b,MALiB,CAAC,UAAW,kBAAmB,SCrGnC,YAAS3B,EAAQC,GAC9B,IAAIE,EACJ,OAAIH,EAAS,MAEF,EAAIA,EAASA,IAAWC,GAAU,GAD3CE,EAAMH,EAASC,GACsCE,GAAQ,GAAMH,EAAUjb,KAAK8H,KAAK,EAAIsT,IAAQ,EAAIA,KAG/F,EAAIF,CAEhB,CC2PA,IAAI4gB,GAAM,kBAENC,GAAM,mBACNC,GAAM,mBACNC,GAAM,mBACNC,GAAM,kBACNC,GAAM,oBAqBH,IACP,IACEngB,KA7QK,WACL,IAWMd,EAXFkK,EAAIplB,KAAKmE,IAAI4B,KAAKyM,MAUtB,GATIxS,KAAKmE,IAAIihB,EAAIpV,GAAWK,EAC1BtK,KAAKq2B,KAAOr2B,KAAKyM,KAAO,EAAIzM,KAAKs2B,OAASt2B,KAAKu2B,OAExCt8B,KAAKmE,IAAIihB,GAAK/U,EACrBtK,KAAKq2B,KAAOr2B,KAAKw2B,MAGjBx2B,KAAKq2B,KAAOr2B,KAAKy2B,MAEfz2B,KAAKkW,GAAK,EAMZ,OAHAlW,KAAK02B,GAAKC,GAAM32B,KAAKzE,EAAG,GACxByE,KAAK42B,IAAM,IAAO,EAAI52B,KAAKkW,IAC3BlW,KAAK62B,IAwOT,SAAiB3gB,GACf,IAAImJ,EACAyX,EAAM,GASV,OARAA,EAAI,GAAK5gB,EAAK6f,GACd1W,EAAInJ,EAAKA,EACT4gB,EAAI,IAAMzX,EAAI2W,GACdc,EAAI,GAAKzX,EAAI6W,GACb7W,GAAKnJ,EACL4gB,EAAI,IAAMzX,EAAI4W,GACda,EAAI,IAAMzX,EAAI8W,GACdW,EAAI,GAAKzX,EAAI+W,GACNU,CACT,CApPeC,CAAQ/2B,KAAKkW,IAChBlW,KAAKq2B,MACb,KAAKr2B,KAAKu2B,OAGV,KAAKv2B,KAAKs2B,OACRt2B,KAAKu1B,GAAK,EACV,MACF,KAAKv1B,KAAKw2B,MACRx2B,KAAKg3B,GAAK/8B,KAAKqb,KAAK,GAAMtV,KAAK02B,IAC/B12B,KAAKu1B,GAAK,EAAIv1B,KAAKg3B,GACnBh3B,KAAKi3B,IAAM,EACXj3B,KAAKk3B,IAAM,GAAMl3B,KAAK02B,GACtB,MACF,KAAK12B,KAAKy2B,MACRz2B,KAAKg3B,GAAK/8B,KAAKqb,KAAK,GAAMtV,KAAK02B,IAC/BvhB,EAASlb,KAAK4b,IAAI7V,KAAKyM,MACvBzM,KAAKm3B,MAAQR,GAAM32B,KAAKzE,EAAG4Z,GAAUnV,KAAK02B,GAC1C12B,KAAKo3B,MAAQn9B,KAAKqb,KAAK,EAAItV,KAAKm3B,MAAQn3B,KAAKm3B,OAC7Cn3B,KAAKu1B,GAAKt7B,KAAKkc,IAAInW,KAAKyM,OAASxS,KAAKqb,KAAK,EAAItV,KAAKkW,GAAKf,EAASA,GAAUnV,KAAKg3B,GAAKh3B,KAAKo3B,OAC3Fp3B,KAAKk3B,KAAOl3B,KAAKi3B,IAAMj3B,KAAKg3B,IAAMh3B,KAAKu1B,GACvCv1B,KAAKi3B,KAAOj3B,KAAKu1B,QAKfv1B,KAAKq2B,OAASr2B,KAAKy2B,QACrBz2B,KAAKywB,OAASx2B,KAAK4b,IAAI7V,KAAKyM,MAC5BzM,KAAKqwB,OAASp2B,KAAKkc,IAAInW,KAAKyM,MAGlC,EA+NE4J,QA3NK,SAAiBvb,GAItB,IAAInC,EAAGC,EAAGy+B,EAAQC,EAAQniB,EAAQ7Z,EAAGi8B,EAAMC,EAAMn7B,EAAG+Y,EAChD6f,EAAMn6B,EAAEnC,EACR4c,EAAMza,EAAElC,EAGZ,GADAq8B,EAAMze,EAAWye,EAAMj1B,KAAKgN,OACxBhN,KAAK2S,QAIP,GAHAwC,EAASlb,KAAK4b,IAAIN,GAClBH,EAASnb,KAAKkc,IAAIZ,GAClB8hB,EAASp9B,KAAKkc,IAAI8e,GACdj1B,KAAKq2B,OAASr2B,KAAKy2B,OAASz2B,KAAKq2B,OAASr2B,KAAKw2B,MAAO,CAExD,IADA59B,EAAKoH,KAAKq2B,OAASr2B,KAAKw2B,MAAS,EAAIphB,EAASiiB,EAAS,EAAIr3B,KAAKywB,OAAStb,EAASnV,KAAKqwB,OAASjb,EAASiiB,IAChG/sB,EACP,OAAO,KAGT3R,GADAC,EAAIqB,KAAKqb,KAAK,EAAI1c,IACVwc,EAASnb,KAAK4b,IAAIof,GAC1Br8B,GAAMoH,KAAKq2B,OAASr2B,KAAKw2B,MAASrhB,EAASnV,KAAKqwB,OAASlb,EAASnV,KAAKywB,OAASrb,EAASiiB,CAC3F,MACK,GAAIr3B,KAAKq2B,OAASr2B,KAAKu2B,QAAUv2B,KAAKq2B,OAASr2B,KAAKs2B,OAAQ,CAI/D,GAHIt2B,KAAKq2B,OAASr2B,KAAKu2B,SACrBc,GAAUA,GAERp9B,KAAKmE,IAAImX,EAAMvV,KAAKyM,MAAQnC,EAC9B,OAAO,KAET1R,EAAI6R,EAAe,GAAN8K,EAEb5c,GADAC,EAAI,GAAMoH,KAAKq2B,OAASr2B,KAAKs2B,OAAUr8B,KAAKkc,IAAIvd,GAAKqB,KAAK4b,IAAIjd,KACtDqB,KAAK4b,IAAIof,GACjBr8B,GAAKy+B,CACP,MAEG,CAYH,OAXAE,EAAO,EACPC,EAAO,EACPn7B,EAAI,EACJg7B,EAASp9B,KAAKkc,IAAI8e,GAClBqC,EAASr9B,KAAK4b,IAAIof,GAClB9f,EAASlb,KAAK4b,IAAIN,GAClBja,EAAIq7B,GAAM32B,KAAKzE,EAAG4Z,GACdnV,KAAKq2B,OAASr2B,KAAKy2B,OAASz2B,KAAKq2B,OAASr2B,KAAKw2B,QACjDe,EAAOj8B,EAAI0E,KAAK02B,GAChBc,EAAOv9B,KAAKqb,KAAK,EAAIiiB,EAAOA,IAEtBv3B,KAAKq2B,MACb,KAAKr2B,KAAKy2B,MACRp6B,EAAI,EAAI2D,KAAKm3B,MAAQI,EAAOv3B,KAAKo3B,MAAQI,EAAOH,EAChD,MACF,KAAKr3B,KAAKw2B,MACRn6B,EAAI,EAAIm7B,EAAOH,EACf,MACF,KAAKr3B,KAAKu2B,OACRl6B,EAAI4N,EAAUsL,EACdja,EAAI0E,KAAK02B,GAAKp7B,EACd,MACF,KAAK0E,KAAKs2B,OACRj6B,EAAIkZ,EAAMtL,EACV3O,EAAI0E,KAAK02B,GAAKp7B,EAGhB,GAAIrB,KAAKmE,IAAI/B,GAAKiO,EAChB,OAAO,KAET,OAAQtK,KAAKq2B,MACb,KAAKr2B,KAAKy2B,MACV,KAAKz2B,KAAKw2B,MACRn6B,EAAIpC,KAAKqb,KAAK,EAAIjZ,GAEhBzD,EADEoH,KAAKq2B,OAASr2B,KAAKy2B,MACjBz2B,KAAKk3B,IAAM76B,GAAK2D,KAAKo3B,MAAQG,EAAOv3B,KAAKm3B,MAAQK,EAAOH,IAGvDh7B,EAAIpC,KAAKqb,KAAK,GAAK,EAAIkiB,EAAOH,KAAYE,EAAOv3B,KAAKk3B,IAE7Dv+B,EAAIqH,KAAKi3B,IAAM56B,EAAIm7B,EAAOF,EAC1B,MACF,KAAKt3B,KAAKu2B,OACV,KAAKv2B,KAAKs2B,OACJh7B,GAAK,GACP3C,GAAK0D,EAAIpC,KAAKqb,KAAKha,IAAMg8B,EACzB1+B,EAAIy+B,GAAWr3B,KAAKq2B,OAASr2B,KAAKs2B,OAAUj6B,GAAKA,IAGjD1D,EAAIC,EAAI,EAId,CAIA,OAFAkC,EAAEnC,EAAIqH,KAAK5D,EAAIzD,EAAIqH,KAAKnD,GACxB/B,EAAElC,EAAIoH,KAAK5D,EAAIxD,EAAIoH,KAAKlD,GACjBhC,CACT,EA8HE4b,QA1HK,SAAiB5b,GACtBA,EAAEnC,GAAKqH,KAAKnD,GACZ/B,EAAElC,GAAKoH,KAAKlD,GACZ,IAEIm4B,EAAK1f,EAAKkiB,EAAKC,EAAKp8B,EAAGwyB,EAAK6J,EA4GjBC,EAAMd,EACjBzX,EA/GA1mB,EAAImC,EAAEnC,EAAIqH,KAAK5D,EACfxD,EAAIkC,EAAElC,EAAIoH,KAAK5D,EAEnB,GAAI4D,KAAK2S,OAAQ,CACf,IACE8b,EADEoJ,EAAO,EACLC,EAAO,EAIb,IADAviB,EAAW,IADXkZ,EAAKx0B,KAAKqb,KAAK3c,EAAIA,EAAIC,EAAIA,KAEjB,EACR,OAAO,KAOT,OALA2c,EAAM,EAAItb,KAAKmwB,KAAK7U,GAChBvV,KAAKq2B,OAASr2B,KAAKy2B,OAASz2B,KAAKq2B,OAASr2B,KAAKw2B,QACjDsB,EAAO79B,KAAK4b,IAAIN,GAChBsiB,EAAO59B,KAAKkc,IAAIZ,IAEVvV,KAAKq2B,MACb,KAAKr2B,KAAKw2B,MACRjhB,EAAOtb,KAAKmE,IAAIqwB,IAAOnkB,EAAS,EAAIrQ,KAAKmwB,KAAKxxB,EAAIk/B,EAAOrJ,GACzD91B,GAAKm/B,EACLl/B,EAAIi/B,EAAOpJ,EACX,MACF,KAAKzuB,KAAKy2B,MACRlhB,EAAOtb,KAAKmE,IAAIqwB,IAAOnkB,EAAStK,KAAKyM,KAAOxS,KAAKmwB,KAAKyN,EAAO73B,KAAKywB,OAAS73B,EAAIk/B,EAAO93B,KAAKqwB,OAAS5B,GACpG91B,GAAKm/B,EAAO93B,KAAKqwB,OACjBz3B,GAAKi/B,EAAO59B,KAAK4b,IAAIN,GAAOvV,KAAKywB,QAAUhC,EAC3C,MACF,KAAKzuB,KAAKu2B,OACR39B,GAAKA,EACL2c,EAAMtL,EAAUsL,EAChB,MACF,KAAKvV,KAAKs2B,OACR/gB,GAAOtL,EAGTgrB,EAAa,IAANr8B,GAAYoH,KAAKq2B,OAASr2B,KAAKw2B,OAASx2B,KAAKq2B,OAASr2B,KAAKy2B,MAAcx8B,KAAKijB,MAAMvkB,EAAGC,GAAlB,CAC9E,KACK,CAEH,GADA++B,EAAK,EACD33B,KAAKq2B,OAASr2B,KAAKy2B,OAASz2B,KAAKq2B,OAASr2B,KAAKw2B,MAAO,CAIxD,GAHA79B,GAAKqH,KAAKu1B,GACV38B,GAAKoH,KAAKu1B,IACVzH,EAAM7zB,KAAKqb,KAAK3c,EAAIA,EAAIC,EAAIA,IAClB0R,EAGR,OAFAxP,EAAEnC,EAAIqH,KAAKgN,MACXlS,EAAElC,EAAIoH,KAAKyM,KACJ3R,EAET48B,EAAM,EAAIz9B,KAAKmwB,KAAK,GAAM0D,EAAM9tB,KAAKg3B,IACrCS,EAAMx9B,KAAKkc,IAAIuhB,GACf/+B,GAAM++B,EAAMz9B,KAAK4b,IAAI6hB,GACjB13B,KAAKq2B,OAASr2B,KAAKy2B,OACrBkB,EAAKF,EAAMz3B,KAAKm3B,MAAQv+B,EAAI8+B,EAAM13B,KAAKo3B,MAAQtJ,EAC/CxyB,EAAI0E,KAAK02B,GAAKiB,EACd/+B,EAAIk1B,EAAM9tB,KAAKo3B,MAAQK,EAAM7+B,EAAIoH,KAAKm3B,MAAQO,IAG9CC,EAAK/+B,EAAI8+B,EAAM5J,EACfxyB,EAAI0E,KAAK02B,GAAKiB,EACd/+B,EAAIk1B,EAAM2J,EAEd,MACK,GAAIz3B,KAAKq2B,OAASr2B,KAAKu2B,QAAUv2B,KAAKq2B,OAASr2B,KAAKs2B,OAAQ,CAK/D,GAJIt2B,KAAKq2B,OAASr2B,KAAKu2B,SACrB39B,GAAKA,KAEP0C,EAAK3C,EAAIA,EAAIC,EAAIA,GAIf,OAFAkC,EAAEnC,EAAIqH,KAAKgN,MACXlS,EAAElC,EAAIoH,KAAKyM,KACJ3R,EAET68B,EAAK,EAAIr8B,EAAI0E,KAAK02B,GACd12B,KAAKq2B,OAASr2B,KAAKs2B,SACrBqB,GAAMA,EAEV,CACA1C,EAAMh7B,KAAKijB,MAAMvkB,EAAGC,GAgCPg/B,EA/BC39B,KAAKmwB,KAAKuN,GA+BLb,EA/BU92B,KAAK62B,IAgChCxX,EAAIuY,EAAOA,EAhCbriB,EAiCMqiB,EAAOd,EAAI,GAAK78B,KAAK4b,IAAIwJ,GAAKyX,EAAI,GAAK78B,KAAK4b,IAAIwJ,EAAIA,GAAKyX,EAAI,GAAK78B,KAAK4b,IAAIwJ,EAAIA,EAAIA,EAhC3F,CAIA,OAFAvkB,EAAEnC,EAAI6d,EAAWxW,KAAKgN,MAAQioB,GAC9Bn6B,EAAElC,EAAI2c,EACCza,CACT,EAmCE+b,MALiB,CAAC,+BAAgC,+BAAgC,QAMlFyf,OAzRkB,EA0RlBC,OAxRkB,EAyRlBC,MAxRiB,EAyRjBC,MAxRiB,GChBJ,YAAS99B,GAItB,OAHIsB,KAAKmE,IAAIzF,GAAK,IAChBA,EAAKA,EAAI,EAAK,GAAK,GAEdsB,KAAKmwB,KAAKzxB,EACnB,CCoHO,IACP,IACEsd,KArHK,WAEDhc,KAAKmE,IAAI4B,KAAK2M,KAAO3M,KAAK6M,MAAQvC,IAGtCtK,KAAKmqB,KAAOnqB,KAAK3D,EAAI2D,KAAK5D,EAC1B4D,KAAKkW,GAAK,EAAIjc,KAAKwH,IAAIzB,KAAKmqB,KAAM,GAClCnqB,KAAK20B,GAAK16B,KAAKqb,KAAKtV,KAAKkW,IAEzBlW,KAAK+3B,OAAS99B,KAAK4b,IAAI7V,KAAK2M,MAC5B3M,KAAKg4B,OAAS/9B,KAAKkc,IAAInW,KAAK2M,MAC5B3M,KAAKi4B,GAAKj4B,KAAK+3B,OACf/3B,KAAKqV,IAAMrV,KAAK+3B,OAChB/3B,KAAKkuB,IAAM9X,EAAMpW,KAAK20B,GAAI30B,KAAK+3B,OAAQ/3B,KAAKg4B,QAC5Ch4B,KAAKk4B,IAAMvB,GAAM32B,KAAK20B,GAAI30B,KAAK+3B,QAE/B/3B,KAAK+3B,OAAS99B,KAAK4b,IAAI7V,KAAK6M,MAC5B7M,KAAKg4B,OAAS/9B,KAAKkc,IAAInW,KAAK6M,MAC5B7M,KAAKm4B,GAAKn4B,KAAK+3B,OACf/3B,KAAKkzB,IAAM9c,EAAMpW,KAAK20B,GAAI30B,KAAK+3B,OAAQ/3B,KAAKg4B,QAC5Ch4B,KAAKo4B,IAAMzB,GAAM32B,KAAK20B,GAAI30B,KAAK+3B,QAE/B/3B,KAAK+3B,OAAS99B,KAAK4b,IAAI7V,KAAKyM,MAC5BzM,KAAKg4B,OAAS/9B,KAAKkc,IAAInW,KAAKyM,MAC5BzM,KAAKq4B,GAAKr4B,KAAK+3B,OACf/3B,KAAKs4B,IAAM3B,GAAM32B,KAAK20B,GAAI30B,KAAK+3B,QAE3B99B,KAAKmE,IAAI4B,KAAK2M,KAAO3M,KAAK6M,MAAQvC,EACpCtK,KAAKu4B,KAAOv4B,KAAKkuB,IAAMluB,KAAKkuB,IAAMluB,KAAKkzB,IAAMlzB,KAAKkzB,MAAQlzB,KAAKo4B,IAAMp4B,KAAKk4B,KAG1El4B,KAAKu4B,IAAMv4B,KAAKqV,IAElBrV,KAAK1D,EAAI0D,KAAKkuB,IAAMluB,KAAKkuB,IAAMluB,KAAKu4B,IAAMv4B,KAAKk4B,IAC/Cl4B,KAAKyuB,GAAKzuB,KAAK5D,EAAInC,KAAKqb,KAAKtV,KAAK1D,EAAI0D,KAAKu4B,IAAMv4B,KAAKs4B,KAAOt4B,KAAKu4B,IACpE,EAmFEliB,QA/EK,SAAiBvb,GAEtB,IAAIwb,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAEZoH,KAAKspB,QAAUrvB,KAAK4b,IAAIU,GACxBvW,KAAKupB,QAAUtvB,KAAKkc,IAAII,GAExB,IAAIiiB,EAAK7B,GAAM32B,KAAK20B,GAAI30B,KAAKspB,SACzBiK,EAAMvzB,KAAK5D,EAAInC,KAAKqb,KAAKtV,KAAK1D,EAAI0D,KAAKu4B,IAAMC,GAAMx4B,KAAKu4B,IACxD/E,EAAQxzB,KAAKu4B,IAAM/hB,EAAWF,EAAMtW,KAAKgN,OACzCrU,EAAI46B,EAAMt5B,KAAK4b,IAAI2d,GAASxzB,KAAKnD,GACjCjE,EAAIoH,KAAKyuB,GAAK8E,EAAMt5B,KAAKkc,IAAIqd,GAASxzB,KAAKlD,GAI/C,OAFAhC,EAAEnC,EAAIA,EACNmC,EAAElC,EAAIA,EACCkC,CACT,EA+DE4b,QA7DK,SAAiB5b,GACtB,IAAIy4B,EAAKiF,EAAInjB,EAAKme,EAAOld,EAAKC,EA4B9B,OA1BAzb,EAAEnC,GAAKqH,KAAKnD,GACZ/B,EAAElC,EAAIoH,KAAKyuB,GAAK3zB,EAAElC,EAAIoH,KAAKlD,GACvBkD,KAAKu4B,KAAO,GACdhF,EAAMt5B,KAAKqb,KAAKxa,EAAEnC,EAAImC,EAAEnC,EAAImC,EAAElC,EAAIkC,EAAElC,GACpCyc,EAAM,IAGNke,GAAOt5B,KAAKqb,KAAKxa,EAAEnC,EAAImC,EAAEnC,EAAImC,EAAElC,EAAIkC,EAAElC,GACrCyc,GAAO,GAETme,EAAQ,EACI,IAARD,IACFC,EAAQv5B,KAAKijB,MAAM7H,EAAMva,EAAEnC,EAAG0c,EAAMva,EAAElC,IAExCyc,EAAMke,EAAMvzB,KAAKu4B,IAAMv4B,KAAK5D,EACxB4D,KAAK2S,OACP4D,EAAMtc,KAAKmwB,MAAMpqB,KAAK1D,EAAI+Y,EAAMA,IAAQ,EAAIrV,KAAKu4B,OAGjDC,GAAMx4B,KAAK1D,EAAI+Y,EAAMA,GAAOrV,KAAKu4B,IACjChiB,EAAMvW,KAAKy4B,MAAMz4B,KAAK20B,GAAI6D,IAG5BliB,EAAME,EAAWgd,EAAQxzB,KAAKu4B,IAAMv4B,KAAKgN,OACzClS,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,CACT,EAgCE+b,MALiB,CAAC,0BAA2B,SAAU,OAMvD4hB,MA5BK,SAAevjB,EAAQsjB,GAC5B,IAAIrjB,EAAgBE,EAAKG,EAAKE,EAC1BH,EAAMmjB,GAAM,GAAMF,GACtB,GAAItjB,EAAS5K,EACX,OAAOiL,EAIT,IADA,IAAIojB,EAASzjB,EAASA,EACb5b,EAAI,EAAGA,GAAK,GAAIA,IAOvB,GADAic,GADAG,EAAO,IADPF,EAAM,GADNH,EAAMH,GAFNC,EAASlb,KAAK4b,IAAIN,KAGFF,GACGG,EAHVvb,KAAKkc,IAAIZ,IAGiBijB,GAAM,EAAIG,GAAUxjB,EAASK,EAAM,GAAMN,EAASjb,KAAK8H,KAAK,EAAIsT,IAAQ,EAAIA,KAE3Gpb,KAAKmE,IAAIsX,IAAS,KACpB,OAAOH,EAGX,OAAO,IACT,GCtBO,IACP,IACEU,KAzFK,WAILjW,KAAK44B,QAAU3+B,KAAK4b,IAAI7V,KAAKyM,MAC7BzM,KAAK64B,QAAU5+B,KAAKkc,IAAInW,KAAKyM,MAE7BzM,KAAK84B,cAAgB,IAAO94B,KAAK5D,EACjC4D,KAAKitB,GAAK,CACZ,EAiFE5W,QA7EK,SAAiBvb,GACtB,IAAIqa,EAAQC,EACRwZ,EACAmK,EAEA7O,EACAvxB,EAAGC,EACH0d,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EA8BZ,OA3BAg2B,EAAOpY,EAAWF,EAAMtW,KAAKgN,OAE7BmI,EAASlb,KAAK4b,IAAIU,GAClBnB,EAASnb,KAAKkc,IAAII,GAElBwiB,EAAS9+B,KAAKkc,IAAIyY,GAEZ,GADN1E,EAAIlqB,KAAK44B,QAAUzjB,EAASnV,KAAK64B,QAAUzjB,EAAS2jB,GAE3C,GAAO9+B,KAAKmE,IAAI8rB,IAAM5f,GAC7B3R,EAAIqH,KAAKnD,GAFL,EAEUmD,KAAK5D,EAAUgZ,EAASnb,KAAK4b,IAAI+Y,GAAQ1E,EACvDtxB,EAAIoH,KAAKlD,GAHL,EAGUkD,KAAK5D,GAAW4D,KAAK64B,QAAU1jB,EAASnV,KAAK44B,QAAUxjB,EAAS2jB,GAAU7O,IAWxFvxB,EAAIqH,KAAKnD,GAAKmD,KAAK84B,cAAgB1jB,EAASnb,KAAK4b,IAAI+Y,GACrDh2B,EAAIoH,KAAKlD,GAAKkD,KAAK84B,eAAiB94B,KAAK64B,QAAU1jB,EAASnV,KAAK44B,QAAUxjB,EAAS2jB,IAGtFj+B,EAAEnC,EAAIA,EACNmC,EAAElC,EAAIA,EACCkC,CACT,EAuCE4b,QArCK,SAAiB5b,GACtB,IAAI2zB,EACAd,EAAMC,EACNtxB,EACAga,EAAKC,EA0BT,OAtBAzb,EAAEnC,GAAKmC,EAAEnC,EAAIqH,KAAKnD,IAAMmD,KAAK5D,EAC7BtB,EAAElC,GAAKkC,EAAElC,EAAIoH,KAAKlD,IAAMkD,KAAK5D,EAE7BtB,EAAEnC,GAAKqH,KAAK6N,GACZ/S,EAAElC,GAAKoH,KAAK6N,IAEP4gB,EAAKx0B,KAAKqb,KAAKxa,EAAEnC,EAAImC,EAAEnC,EAAImC,EAAElC,EAAIkC,EAAElC,KACtC0D,EAAIrC,KAAKijB,MAAMuR,EAAIzuB,KAAKitB,IACxBU,EAAO1zB,KAAK4b,IAAIvZ,GAGhBia,EAAMmiB,IAFN9K,EAAO3zB,KAAKkc,IAAI7Z,IAEG0D,KAAK44B,QAAW99B,EAAElC,EAAI+0B,EAAO3tB,KAAK64B,QAAWpK,GAChEnY,EAAMrc,KAAKijB,MAAMpiB,EAAEnC,EAAIg1B,EAAMc,EAAKzuB,KAAK64B,QAAUjL,EAAO9yB,EAAElC,EAAIoH,KAAK44B,QAAUjL,GAC7ErX,EAAME,EAAWxW,KAAKgN,MAAQsJ,KAG9BC,EAAMvW,KAAKktB,MACX5W,EAAM,GAGRxb,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,CACT,EAOE+b,MALiB,CAAC,SClCb,IACP,IACEZ,KAtDK,WAEAjW,KAAK2S,SACR3S,KAAK6N,GAAKuI,EAAMpW,KAAKzE,EAAGtB,KAAK4b,IAAI7V,KAAK8M,QAAS7S,KAAKkc,IAAInW,KAAK8M,SAEjE,EAkDEuJ,QA9CK,SAAiBvb,GACtB,IAEInC,EAAGC,EAFH0d,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAIRg2B,EAAOpY,EAAWF,EAAMtW,KAAKgN,OACjC,GAAIhN,KAAK2S,OACPha,EAAIqH,KAAKnD,GAAKmD,KAAK5D,EAAIwyB,EAAO30B,KAAKkc,IAAInW,KAAK8M,QAC5ClU,EAAIoH,KAAKlD,GAAKkD,KAAK5D,EAAInC,KAAK4b,IAAIU,GAAOtc,KAAKkc,IAAInW,KAAK8M,YAElD,CACH,IAAI0rB,EAAK7B,GAAM32B,KAAKzE,EAAGtB,KAAK4b,IAAIU,IAChC5d,EAAIqH,KAAKnD,GAAKmD,KAAK5D,EAAI4D,KAAK6N,GAAK+gB,EACjCh2B,EAAIoH,KAAKlD,GAAKkD,KAAK5D,EAAIo8B,EAAK,GAAMx4B,KAAK6N,EACzC,CAIA,OAFA/S,EAAEnC,EAAIA,EACNmC,EAAElC,EAAIA,EACCkC,CACT,EA2BE4b,QAvBK,SAAiB5b,GAGtB,IAAIwb,EAAKC,EAaT,OAfAzb,EAAEnC,GAAKqH,KAAKnD,GACZ/B,EAAElC,GAAKoH,KAAKlD,GAGRkD,KAAK2S,QACP2D,EAAME,EAAWxW,KAAKgN,MAASlS,EAAEnC,EAAIqH,KAAK5D,EAAKnC,KAAKkc,IAAInW,KAAK8M,SAC7DyJ,EAAMtc,KAAKmwB,KAAMtvB,EAAElC,EAAIoH,KAAK5D,EAAKnC,KAAKkc,IAAInW,KAAK8M,WAG/CyJ,ECpDW,SAASrB,EAAQ5Z,GAC9B,IAAI6uB,EAAO,GAAK,EAAIjV,EAASA,IAAW,EAAIA,GAAUjb,KAAK8H,KAAK,EAAImT,IAAW,EAAIA,IACnF,GAAIjb,KAAKmE,IAAInE,KAAKmE,IAAI9C,GAAK6uB,GAAQ,KACjC,OAAI7uB,EAAI,GACG,EAAI2O,EAGNA,EASX,IALA,IACIyL,EACA4T,EACAC,EACAlU,EAJAE,EAAMtb,KAAKmwB,KAAK,GAAM9uB,GAKjBhC,EAAI,EAAGA,EAAI,GAAIA,IAMtB,GALAgwB,EAAUrvB,KAAK4b,IAAIN,GACnBgU,EAAUtvB,KAAKkc,IAAIZ,GACnBF,EAAMH,EAASoU,EAEf/T,GADAG,EAAOzb,KAAKwH,IAAI,EAAI4T,EAAMA,EAAK,IAAM,EAAIkU,IAAYjuB,GAAK,EAAI4Z,EAASA,GAAUoU,GAAW,EAAIjU,EAAMA,GAAO,GAAMH,EAASjb,KAAK8H,KAAK,EAAIsT,IAAQ,EAAIA,KAElJpb,KAAKmE,IAAIsX,IAAS,MACpB,OAAOH,EAKX,OAAO/T,GACT,CDuBUw3B,CAAOh5B,KAAKzE,EAAG,EAAIT,EAAElC,EAAIoH,KAAK6N,GAAK7N,KAAK5D,GAC9Cka,EAAME,EAAWxW,KAAKgN,MAAQlS,EAAEnC,GAAKqH,KAAK5D,EAAI4D,KAAK6N,MAGrD/S,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,CACT,EAOE+b,MALiB,CAAC,QEtBb,IACP,IACEZ,KAxCK,WAELjW,KAAKnD,GAAKmD,KAAKnD,IAAM,EACrBmD,KAAKlD,GAAKkD,KAAKlD,IAAM,EACrBkD,KAAKyM,KAAOzM,KAAKyM,MAAQ,EACzBzM,KAAKgN,MAAQhN,KAAKgN,OAAS,EAC3BhN,KAAK8M,OAAS9M,KAAK8M,QAAU,EAC7B9M,KAAK0tB,MAAQ1tB,KAAK0tB,OAAS,wCAE3B1tB,KAAKitB,GAAKhzB,KAAKkc,IAAInW,KAAK8M,OAC1B,EA+BEuJ,QA3BK,SAAiBvb,GAEtB,IAAIwb,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAERg2B,EAAOpY,EAAWF,EAAMtW,KAAKgN,OAC7BisB,EAAOnD,GAAWvf,EAAMvW,KAAKyM,MAGjC,OAFA3R,EAAEnC,EAAIqH,KAAKnD,GAAMmD,KAAK5D,EAAIwyB,EAAO5uB,KAAKitB,GACtCnyB,EAAElC,EAAIoH,KAAKlD,GAAMkD,KAAK5D,EAAI68B,EACnBn+B,CACT,EAkBE4b,QAdK,SAAiB5b,GAEtB,IAAInC,EAAImC,EAAEnC,EACNC,EAAIkC,EAAElC,EAIV,OAFAkC,EAAEnC,EAAI6d,EAAWxW,KAAKgN,OAAUrU,EAAIqH,KAAKnD,KAAOmD,KAAK5D,EAAI4D,KAAKitB,KAC9DnyB,EAAElC,EAAIk9B,GAAW91B,KAAKyM,MAAS7T,EAAIoH,KAAKlD,IAAOkD,KAAM,GAC9ClF,CACT,EAOE+b,MALiB,CAAC,kBAAmB,0BAA2B,QCuF3D,IACP,IACEZ,KAtHK,WAGLjW,KAAKmqB,KAAOnqB,KAAK3D,EAAI2D,KAAK5D,EAC1B4D,KAAKkW,GAAK,EAAIjc,KAAKwH,IAAIzB,KAAKmqB,KAAM,GAClCnqB,KAAKzE,EAAItB,KAAKqb,KAAKtV,KAAKkW,IACxBlW,KAAK00B,GAAKE,GAAK50B,KAAKkW,IACpBlW,KAAKmmB,GAAK0O,GAAK70B,KAAKkW,IACpBlW,KAAKsvB,GAAKwF,GAAK90B,KAAKkW,IACpBlW,KAAK20B,GAAKI,GAAK/0B,KAAKkW,IACpBlW,KAAKopB,IAAMppB,KAAK5D,EAAI44B,GAAKh1B,KAAK00B,GAAI10B,KAAKmmB,GAAInmB,KAAKsvB,GAAItvB,KAAK20B,GAAI30B,KAAKyM,KACpE,EA4GE4J,QAxGK,SAAiBvb,GACtB,IAEInC,EAAGC,EAAGsgC,EAFN5iB,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAERg2B,EAAOpY,EAAWF,EAAMtW,KAAKgN,OAEjC,GADAksB,EAAKtK,EAAO30B,KAAK4b,IAAIU,GACjBvW,KAAK2S,OACH1Y,KAAKmE,IAAImY,IAAQjM,GACnB3R,EAAIqH,KAAK5D,EAAIwyB,EACbh2B,GAAK,EAAIoH,KAAK5D,EAAI4D,KAAKyM,OAGvB9T,EAAIqH,KAAK5D,EAAInC,KAAK4b,IAAIqjB,GAAMj/B,KAAK+D,IAAIuY,GACrC3d,EAAIoH,KAAK5D,GAAK05B,GAAWvf,EAAMvW,KAAKyM,OAAS,EAAIxS,KAAKkc,IAAI+iB,IAAOj/B,KAAK+D,IAAIuY,UAI5E,GAAItc,KAAKmE,IAAImY,IAAQjM,EACnB3R,EAAIqH,KAAK5D,EAAIwyB,EACbh2B,GAAK,EAAIoH,KAAKopB,QAEX,CACH,IAAI8L,EAAKC,GAAGn1B,KAAK5D,EAAG4D,KAAKzE,EAAGtB,KAAK4b,IAAIU,IAAQtc,KAAK+D,IAAIuY,GACtD5d,EAAIu8B,EAAKj7B,KAAK4b,IAAIqjB,GAClBtgC,EAAIoH,KAAK5D,EAAI44B,GAAKh1B,KAAK00B,GAAI10B,KAAKmmB,GAAInmB,KAAKsvB,GAAItvB,KAAK20B,GAAIpe,GAAOvW,KAAKopB,IAAM8L,GAAM,EAAIj7B,KAAKkc,IAAI+iB,GAC7F,CAKF,OAFAp+B,EAAEnC,EAAIA,EAAIqH,KAAKnD,GACf/B,EAAElC,EAAIA,EAAIoH,KAAKlD,GACRhC,CACT,EA0EE4b,QAtEK,SAAiB5b,GACtB,IAAIwb,EAAKC,EAAK5d,EAAGC,EAAGU,EAChBkwB,EAAI2P,EACJ5jB,EAAKG,EAIT,GAHA/c,EAAImC,EAAEnC,EAAIqH,KAAKnD,GACfjE,EAAIkC,EAAElC,EAAIoH,KAAKlD,GAEXkD,KAAK2S,OACP,GAAI1Y,KAAKmE,IAAIxF,EAAIoH,KAAK5D,EAAI4D,KAAKyM,OAASnC,EACtCgM,EAAME,EAAW7d,EAAIqH,KAAK5D,EAAI4D,KAAKgN,OACnCuJ,EAAM,MAEH,CAIH,IAAI6iB,EACJ,IAJA5P,EAAKxpB,KAAKyM,KAAO7T,EAAIoH,KAAK5D,EAC1B+8B,EAAKxgC,EAAIA,EAAIqH,KAAK5D,EAAI4D,KAAK5D,EAAIotB,EAAKA,EACpCjU,EAAMiU,EAEDlwB,EArEI,GAqEUA,IAAKA,EAItB,GADAic,GADAG,GAAQ,GAAK8T,GAAMjU,GADnB6jB,EAASn/B,KAAK+D,IAAIuX,IACgB,GAAKA,EAAM,IAAOA,EAAMA,EAAM4jB,GAAMC,KAAY7jB,EAAMiU,GAAM4P,EAAS,GAEnGn/B,KAAKmE,IAAIsX,IAASpL,EAAO,CAC3BiM,EAAMhB,EACN,KACF,CAEFe,EAAME,EAAWxW,KAAKgN,MAAS/S,KAAKmwB,KAAKzxB,EAAIsB,KAAK+D,IAAIuX,GAAOvV,KAAK5D,GAAMnC,KAAK4b,IAAIU,GACnF,MAGA,GAAItc,KAAKmE,IAAIxF,EAAIoH,KAAKopB,MAAQ9e,EAC5BiM,EAAM,EACND,EAAME,EAAWxW,KAAKgN,MAAQrU,EAAIqH,KAAK5D,OAEpC,CAKH,IAAIk5B,EAAI+D,EAAKC,EAAMC,EACflkB,EACJ,IALAmU,GAAMxpB,KAAKopB,IAAMxwB,GAAKoH,KAAK5D,EAC3B+8B,EAAKxgC,EAAIA,EAAIqH,KAAK5D,EAAI4D,KAAK5D,EAAIotB,EAAKA,EACpCjU,EAAMiU,EAGDlwB,EA7FI,GA6FUA,IAAKA,EAQtB,GAPA+b,EAAMrV,KAAKzE,EAAItB,KAAK4b,IAAIN,GACxB+f,EAAKr7B,KAAKqb,KAAK,EAAID,EAAMA,GAAOpb,KAAK+D,IAAIuX,GACzC8jB,EAAMr5B,KAAK5D,EAAI44B,GAAKh1B,KAAK00B,GAAI10B,KAAKmmB,GAAInmB,KAAKsvB,GAAItvB,KAAK20B,GAAIpf,GACxD+jB,EAAOt5B,KAAK00B,GAAK,EAAI10B,KAAKmmB,GAAKlsB,KAAKkc,IAAI,EAAIZ,GAAO,EAAIvV,KAAKsvB,GAAKr1B,KAAKkc,IAAI,EAAIZ,GAAO,EAAIvV,KAAK20B,GAAK16B,KAAKkc,IAAI,EAAIZ,GAGhHA,GADAG,GAAQ8T,GAAM8L,GADdiE,EAAKF,EAAMr5B,KAAK5D,GACQ,GAAKm9B,EAAK,GAAMjE,GAAMiE,EAAKA,EAAKJ,KAAQn5B,KAAKkW,GAAKjc,KAAK4b,IAAI,EAAIN,IAAQgkB,EAAKA,EAAKJ,EAAK,EAAI3P,EAAK+P,IAAO,EAAIjE,IAAO9L,EAAK+P,IAAOjE,EAAKgE,EAAO,EAAIr/B,KAAK4b,IAAI,EAAIN,IAAQ+jB,GAEtLr/B,KAAKmE,IAAIsX,IAASpL,EAAO,CAC3BiM,EAAMhB,EACN,KACF,CAIF+f,EAAKr7B,KAAKqb,KAAK,EAAItV,KAAKkW,GAAKjc,KAAKwH,IAAIxH,KAAK4b,IAAIU,GAAM,IAAMtc,KAAK+D,IAAIuY,GACpED,EAAME,EAAWxW,KAAKgN,MAAQ/S,KAAKmwB,KAAKzxB,EAAI28B,EAAKt1B,KAAK5D,GAAKnC,KAAK4b,IAAIU,GACtE,CAKF,OAFAzb,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,CACT,EAOE+b,MALiB,CAAC,YAAa,SC2F1B,IACP,IACEZ,KA3MK,WACLjW,KAAKoiB,EAAI,GACTpiB,KAAKoiB,EAAE,GAAK,YACZpiB,KAAKoiB,EAAE,IAAM,YACbpiB,KAAKoiB,EAAE,GAAK,WACZpiB,KAAKoiB,EAAE,IAAM,UACbpiB,KAAKoiB,EAAE,GAAK,SACZpiB,KAAKoiB,EAAE,IAAM,SACbpiB,KAAKoiB,EAAE,GAAK,SACZpiB,KAAKoiB,EAAE,IAAM,QACbpiB,KAAKoiB,EAAE,GAAK,MACZpiB,KAAKoiB,EAAE,KAAO,MAEdpiB,KAAKw5B,KAAO,GACZx5B,KAAKy5B,KAAO,GACZz5B,KAAKw5B,KAAK,GAAK,YACfx5B,KAAKy5B,KAAK,GAAK,EACfz5B,KAAKw5B,KAAK,GAAK,WACfx5B,KAAKy5B,KAAK,GAAK,WACfz5B,KAAKw5B,KAAK,IAAM,WAChBx5B,KAAKy5B,KAAK,GAAK,UACfz5B,KAAKw5B,KAAK,IAAM,UAChBx5B,KAAKy5B,KAAK,GAAK,UACfz5B,KAAKw5B,KAAK,IAAM,UAChBx5B,KAAKy5B,KAAK,IAAM,UAChBz5B,KAAKw5B,KAAK,IAAM,SAChBx5B,KAAKy5B,KAAK,IAAM,UAEhBz5B,KAAK05B,KAAO,GACZ15B,KAAK25B,KAAO,GACZ35B,KAAK05B,KAAK,GAAK,aACf15B,KAAK25B,KAAK,GAAK,EACf35B,KAAK05B,KAAK,IAAM,WAChB15B,KAAK25B,KAAK,IAAM,WAChB35B,KAAK05B,KAAK,GAAK,WACf15B,KAAK25B,KAAK,IAAM,WAChB35B,KAAK05B,KAAK,IAAM,UAChB15B,KAAK25B,KAAK,GAAK,UACf35B,KAAK05B,KAAK,GAAK,WACf15B,KAAK25B,KAAK,GAAK,WACf35B,KAAK05B,KAAK,GAAK,UACf15B,KAAK25B,KAAK,GAAK,UAEf35B,KAAK+lB,EAAI,GACT/lB,KAAK+lB,EAAE,GAAK,aACZ/lB,KAAK+lB,EAAE,GAAK,YACZ/lB,KAAK+lB,EAAE,IAAM,UACb/lB,KAAK+lB,EAAE,IAAM,SACb/lB,KAAK+lB,EAAE,IAAM,SACb/lB,KAAK+lB,EAAE,GAAK,QACZ/lB,KAAK+lB,EAAE,GAAK,MACZ/lB,KAAK+lB,EAAE,GAAK,OACZ/lB,KAAK+lB,EAAE,IAAM,KACf,EAuJE1P,QAjJK,SAAiBvb,GACtB,IAAIsC,EACAkZ,EAAMxb,EAAEnC,EAGRihC,EAFM9+B,EAAElC,EAEUoH,KAAKyM,KACvB4c,EAAY/S,EAAMtW,KAAKgN,MAIvB6sB,EAAQD,EAAY5vB,EAAa,KACjC8vB,EAAWzQ,EACX0Q,EAAU,EAEVC,EAAQ,EACZ,IAAK58B,EAAI,EAAGA,GAAK,GAAIA,IACnB28B,GAAoBF,EACpBG,GAAgBh6B,KAAKoiB,EAAEhlB,GAAK28B,EAI9B,IAOIE,EAPAC,EAAQF,EACRG,EAAQL,EAGRM,EAAU,EACVC,EAAU,EAIVC,EAAO,EACPC,EAAO,EACX,IAAKn9B,EAAI,EAAGA,GAAK,EAAGA,IAElB68B,EAAWI,EAAUH,EAAQE,EAAUD,EACvCC,EAFWA,EAAUF,EAAQG,EAAUF,EAGvCE,EAAUJ,EACVK,EAAOA,EAAOt6B,KAAKw5B,KAAKp8B,GAAKg9B,EAAUp6B,KAAKy5B,KAAKr8B,GAAKi9B,EACtDE,EAAOA,EAAOv6B,KAAKy5B,KAAKr8B,GAAKg9B,EAAUp6B,KAAKw5B,KAAKp8B,GAAKi9B,EAOxD,OAHAv/B,EAAEnC,EAAK4hC,EAAOv6B,KAAK5D,EAAK4D,KAAKnD,GAC7B/B,EAAElC,EAAK0hC,EAAOt6B,KAAK5D,EAAK4D,KAAKlD,GAEtBhC,CACT,EAoGE4b,QA/FK,SAAiB5b,GACtB,IAAIsC,EAeAo9B,EAdA7hC,EAAImC,EAAEnC,EACNC,EAAIkC,EAAElC,EAEN6hC,EAAU9hC,EAAIqH,KAAKnD,GAInBy9B,GAHU1hC,EAAIoH,KAAKlD,IAGFkD,KAAK5D,EACtBm+B,EAAOE,EAAUz6B,KAAK5D,EAGtBs+B,EAAS,EACTC,EAAS,EAITT,EAAQ,EACRC,EAAQ,EACZ,IAAK/8B,EAAI,EAAGA,GAAK,EAAGA,IAElBo9B,EAAUG,EAASL,EAAOI,EAASH,EACnCG,EAFUA,EAASJ,EAAOK,EAASJ,EAGnCI,EAASH,EACTN,EAAQA,EAAQl6B,KAAK05B,KAAKt8B,GAAKs9B,EAAS16B,KAAK25B,KAAKv8B,GAAKu9B,EACvDR,EAAQA,EAAQn6B,KAAK25B,KAAKv8B,GAAKs9B,EAAS16B,KAAK05B,KAAKt8B,GAAKu9B,EAOzD,IAAK,IAAIrhC,EAAI,EAAGA,EAAI0G,KAAK46B,WAAYthC,IAAK,CACxC,IAGI2gC,EAHAG,EAAUF,EACVG,EAAUF,EAIVU,EAASP,EACTQ,EAASP,EACb,IAAKn9B,EAAI,EAAGA,GAAK,EAAGA,IAElB68B,EAAWI,EAAUH,EAAQE,EAAUD,EACvCC,EAFWA,EAAUF,EAAQG,EAAUF,EAGvCE,EAAUJ,EACVY,IAAmBz9B,EAAI,IAAM4C,KAAKw5B,KAAKp8B,GAAKg9B,EAAUp6B,KAAKy5B,KAAKr8B,GAAKi9B,GACrES,IAAmB19B,EAAI,IAAM4C,KAAKy5B,KAAKr8B,GAAKg9B,EAAUp6B,KAAKw5B,KAAKp8B,GAAKi9B,GAGvED,EAAU,EACVC,EAAU,EACV,IAAIU,EAAS/6B,KAAKw5B,KAAK,GACnBwB,EAASh7B,KAAKy5B,KAAK,GACvB,IAAKr8B,EAAI,EAAGA,GAAK,EAAGA,IAElB68B,EAAWI,EAAUH,EAAQE,EAAUD,EACvCC,EAFWA,EAAUF,EAAQG,EAAUF,EAGvCE,EAAUJ,EACVc,GAAkB39B,GAAK4C,KAAKw5B,KAAKp8B,GAAKg9B,EAAUp6B,KAAKy5B,KAAKr8B,GAAKi9B,GAC/DW,GAAkB59B,GAAK4C,KAAKy5B,KAAKr8B,GAAKg9B,EAAUp6B,KAAKw5B,KAAKp8B,GAAKi9B,GAIjE,IAAIY,EAAOF,EAASA,EAASC,EAASA,EACtCd,GAASW,EAASE,EAASD,EAASE,GAAUC,EAC9Cd,GAASW,EAASC,EAASF,EAASG,GAAUC,CAChD,CAGA,IAAIjB,EAAQE,EACRJ,EAAWK,EACXe,EAAU,EAEVrB,EAAQ,EACZ,IAAKz8B,EAAI,EAAGA,GAAK,EAAGA,IAClB89B,GAAoBlB,EACpBH,GAAgB75B,KAAK+lB,EAAE3oB,GAAK89B,EAK9B,IAAI3kB,EAAMvW,KAAKyM,KAAQotB,EAAQ7vB,EAAa,IACxCsM,EAAMtW,KAAKgN,MAAQ8sB,EAKvB,OAHAh/B,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EAECzb,CACT,EAOE+b,MALiB,CAAC,uBAAwB,SC9KrC,IACP,IACEZ,KApCK,WAEP,EAmCEI,QA/BK,SAAiBvb,GACtB,IAAIwb,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAGRg2B,EAAOpY,EAAWF,EAAMtW,KAAKgN,OAC7BrU,EAAIqH,KAAKnD,GAAKmD,KAAK5D,EAAIwyB,EACvBh2B,EAAIoH,KAAKlD,GAAKkD,KAAK5D,EAAInC,KAAK8H,IAAI9H,KAAK+D,IAAK/D,KAAKiQ,GAAK,EAAMqM,EAAM,MAAS,KAI7E,OAFAzb,EAAEnC,EAAIA,EACNmC,EAAElC,EAAIA,EACCkC,CACT,EAoBE4b,QAhBK,SAAiB5b,GACtBA,EAAEnC,GAAKqH,KAAKnD,GACZ/B,EAAElC,GAAKoH,KAAKlD,GAEZ,IAAIwZ,EAAME,EAAWxW,KAAKgN,MAAQlS,EAAEnC,EAAIqH,KAAK5D,GACzCma,EAAM,KAAOtc,KAAK2b,KAAK3b,KAAK0c,IAAI,GAAM7b,EAAElC,EAAIoH,KAAK5D,IAAMnC,KAAKiQ,GAAK,GAIrE,OAFApP,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,CACT,EAOE+b,MALiB,CAAC,qBAAsB,SC+DnC,IACP,IACEZ,KAnGK,WAKAjW,KAAK2S,QAIR3S,KAAK5C,EAAI,EACT4C,KAAKrC,EAAI,EACTqC,KAAKkW,GAAK,EACVlW,KAAKm7B,IAAMlhC,KAAKqb,MAAMtV,KAAKrC,EAAI,GAAKqC,KAAK5C,GACzC4C,KAAKo7B,IAAMp7B,KAAKm7B,KAAOn7B,KAAKrC,EAAI,IAPhCqC,KAAK6oB,GAAKM,GAAQnpB,KAAKkW,GAU3B,EAoFEG,QAhFK,SAAiBvb,GACtB,IAAInC,EAAGC,EACH0d,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAKZ,GAFA0d,EAAME,EAAWF,EAAMtW,KAAKgN,OAExBhN,KAAK2S,OAAQ,CACf,GAAK3S,KAAKrC,EAKR,IADA,IAAImQ,EAAI9N,KAAK5C,EAAInD,KAAK4b,IAAIU,GACjBjd,EA1CA,GA0CcA,IAAKA,EAAG,CAC7B,IAAIipB,GAAKviB,KAAKrC,EAAI4Y,EAAMtc,KAAK4b,IAAIU,GAAOzI,IAAM9N,KAAKrC,EAAI1D,KAAKkc,IAAII,IAEhE,GADAA,GAAOgM,EACHtoB,KAAKmE,IAAImkB,GAAKjY,EAChB,KAEJ,MAVAiM,EAAiB,IAAXvW,KAAK5C,EAAUnD,KAAKmwB,KAAKpqB,KAAK5C,EAAInD,KAAK4b,IAAIU,IAAQA,EAY3D5d,EAAIqH,KAAK5D,EAAI4D,KAAKo7B,IAAM9kB,GAAOtW,KAAKrC,EAAI1D,KAAKkc,IAAII,IACjD3d,EAAIoH,KAAK5D,EAAI4D,KAAKm7B,IAAM5kB,CAE1B,KACK,CAEH,IAAIhV,EAAItH,KAAK4b,IAAIU,GACbja,EAAIrC,KAAKkc,IAAII,GACjB3d,EAAIoH,KAAK5D,EAAI8sB,GAAQ3S,EAAKhV,EAAGjF,EAAG0D,KAAK6oB,IACrClwB,EAAIqH,KAAK5D,EAAIka,EAAMha,EAAIrC,KAAKqb,KAAK,EAAItV,KAAKkW,GAAK3U,EAAIA,EACrD,CAIA,OAFAzG,EAAEnC,EAAIA,EACNmC,EAAElC,EAAIA,EACCkC,CACT,EA4CE4b,QA1CK,SAAiB5b,GACtB,IAAIyb,EAAWD,EAAK/U,EAkCpB,OAhCAzG,EAAEnC,GAAKqH,KAAKnD,GACZyZ,EAAMxb,EAAEnC,EAAIqH,KAAK5D,EACjBtB,EAAElC,GAAKoH,KAAKlD,GACZyZ,EAAMzb,EAAElC,EAAIoH,KAAK5D,EAEb4D,KAAK2S,QACP4D,GAAOvW,KAAKm7B,IACZ7kB,GAAatW,KAAKo7B,KAAOp7B,KAAKrC,EAAI1D,KAAKkc,IAAII,IACvCvW,KAAKrC,EACP4Y,EAAMmiB,IAAO14B,KAAKrC,EAAI4Y,EAAMtc,KAAK4b,IAAIU,IAAQvW,KAAK5C,GAEhC,IAAX4C,KAAK5C,IACZmZ,EAAMmiB,GAAMz+B,KAAK4b,IAAIU,GAAOvW,KAAK5C,IAEnCkZ,EAAME,EAAWF,EAAMtW,KAAKgN,OAC5BuJ,EAAMuf,GAAWvf,KAGjBA,EAAMuT,GAAYhvB,EAAElC,EAAIoH,KAAK5D,EAAG4D,KAAKkW,GAAIlW,KAAK6oB,KAC9CtnB,EAAItH,KAAKmE,IAAImY,IACLtM,GACN1I,EAAItH,KAAK4b,IAAIU,GAGbD,EAAME,EAFCxW,KAAKgN,MAAQlS,EAAEnC,EAAIsB,KAAKqb,KAAK,EAAItV,KAAKkW,GAAK3U,EAAIA,IAAMvB,KAAK5D,EAAInC,KAAKkc,IAAII,MAItEhV,EAAI+I,EAASL,IACrBqM,EAAMtW,KAAKgN,QAGflS,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,CACT,EAOE+b,MALiB,CAAC,aAAc,SChC3B,IACP,IACEZ,KA7EK,WAAiB,EA8EtBI,QA1EK,SAAiBvb,GAatB,IATA,IAAIwb,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAERywB,EAAY7S,EAAWF,EAAMtW,KAAKgN,OAClCwmB,EAAQjd,EACRlB,EAAMpb,KAAKiQ,GAAKjQ,KAAK4b,IAAIU,KAIhB,CACX,IAAI8kB,IAAgB7H,EAAQv5B,KAAK4b,IAAI2d,GAASne,IAAQ,EAAIpb,KAAKkc,IAAIqd,IAEnE,GADAA,GAAS6H,EACLphC,KAAKmE,IAAIi9B,GAAe/wB,EAC1B,KAEJ,CACAkpB,GAAS,EAKLv5B,KAAKiQ,GAAK,EAAIjQ,KAAKmE,IAAImY,GAAOjM,IAChC+e,EAAY,GAEd,IAAI1wB,EAAI,cAAiBqH,KAAK5D,EAAIitB,EAAYpvB,KAAKkc,IAAIqd,GAASxzB,KAAKnD,GACjEjE,EAAI,gBAAkBoH,KAAK5D,EAAInC,KAAK4b,IAAI2d,GAASxzB,KAAKlD,GAI1D,OAFAhC,EAAEnC,EAAIA,EACNmC,EAAElC,EAAIA,EACCkC,CACT,EAyCE4b,QAvCK,SAAiB5b,GACtB,IAAI04B,EACAvK,EAIJnuB,EAAEnC,GAAKqH,KAAKnD,GACZ/B,EAAElC,GAAKoH,KAAKlD,GACZmsB,EAAMnuB,EAAElC,GAAK,gBAAkBoH,KAAK5D,GAKhCnC,KAAKmE,IAAI6qB,GAAO,gBAClBA,EAAM,eAERuK,EAAQv5B,KAAKmwB,KAAKnB,GAClB,IAAI3S,EAAME,EAAWxW,KAAKgN,MAASlS,EAAEnC,GAAK,cAAiBqH,KAAK5D,EAAInC,KAAKkc,IAAIqd,KACzEld,GAAQrc,KAAKiQ,KACfoM,GAAOrc,KAAKiQ,IAEVoM,EAAMrc,KAAKiQ,KACboM,EAAMrc,KAAKiQ,IAEb+e,GAAO,EAAIuK,EAAQv5B,KAAK4b,IAAI,EAAI2d,IAAUv5B,KAAKiQ,GAC3CjQ,KAAKmE,IAAI6qB,GAAO,IAClBA,EAAM,GAER,IAAI1S,EAAMtc,KAAKmwB,KAAKnB,GAIpB,OAFAnuB,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,CACT,EAOE+b,MALiB,CAAC,YAAa,SCkC1B,IACP,IACEZ,KArGK,WAKDhc,KAAKmE,IAAI4B,KAAK2M,KAAO3M,KAAK6M,MAAQvC,IAGtCtK,KAAK6M,KAAO7M,KAAK6M,MAAQ7M,KAAK2M,KAC9B3M,KAAKmqB,KAAOnqB,KAAK3D,EAAI2D,KAAK5D,EAC1B4D,KAAKkW,GAAK,EAAIjc,KAAKwH,IAAIzB,KAAKmqB,KAAM,GAClCnqB,KAAKzE,EAAItB,KAAKqb,KAAKtV,KAAKkW,IACxBlW,KAAK00B,GAAKE,GAAK50B,KAAKkW,IACpBlW,KAAKmmB,GAAK0O,GAAK70B,KAAKkW,IACpBlW,KAAKsvB,GAAKwF,GAAK90B,KAAKkW,IACpBlW,KAAK20B,GAAKI,GAAK/0B,KAAKkW,IAEpBlW,KAAKmV,OAASlb,KAAK4b,IAAI7V,KAAK2M,MAC5B3M,KAAKoV,OAASnb,KAAKkc,IAAInW,KAAK2M,MAE5B3M,KAAKkuB,IAAM9X,EAAMpW,KAAKzE,EAAGyE,KAAKmV,OAAQnV,KAAKoV,QAC3CpV,KAAKs7B,IAAMtG,GAAKh1B,KAAK00B,GAAI10B,KAAKmmB,GAAInmB,KAAKsvB,GAAItvB,KAAK20B,GAAI30B,KAAK2M,MAErD1S,KAAKmE,IAAI4B,KAAK2M,KAAO3M,KAAK6M,MAAQvC,EACpCtK,KAAKqzB,GAAKrzB,KAAKmV,QAGfnV,KAAKmV,OAASlb,KAAK4b,IAAI7V,KAAK6M,MAC5B7M,KAAKoV,OAASnb,KAAKkc,IAAInW,KAAK6M,MAC5B7M,KAAKkzB,IAAM9c,EAAMpW,KAAKzE,EAAGyE,KAAKmV,OAAQnV,KAAKoV,QAC3CpV,KAAKu7B,IAAMvG,GAAKh1B,KAAK00B,GAAI10B,KAAKmmB,GAAInmB,KAAKsvB,GAAItvB,KAAK20B,GAAI30B,KAAK6M,MACzD7M,KAAKqzB,IAAMrzB,KAAKkuB,IAAMluB,KAAKkzB,MAAQlzB,KAAKu7B,IAAMv7B,KAAKs7B,MAErDt7B,KAAKkqB,EAAIlqB,KAAKs7B,IAAMt7B,KAAKkuB,IAAMluB,KAAKqzB,GACpCrzB,KAAKopB,IAAM4L,GAAKh1B,KAAK00B,GAAI10B,KAAKmmB,GAAInmB,KAAKsvB,GAAItvB,KAAK20B,GAAI30B,KAAKyM,MACzDzM,KAAKyuB,GAAKzuB,KAAK5D,GAAK4D,KAAKkqB,EAAIlqB,KAAKopB,KACpC,EAkEE/S,QA9DK,SAAiBvb,GACtB,IAEIy4B,EAFAjd,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAKZ,GAAIoH,KAAK2S,OACP4gB,EAAMvzB,KAAK5D,GAAK4D,KAAKkqB,EAAI3T,OAEtB,CACH,IAAIqT,EAAKoL,GAAKh1B,KAAK00B,GAAI10B,KAAKmmB,GAAInmB,KAAKsvB,GAAItvB,KAAK20B,GAAIpe,GAClDgd,EAAMvzB,KAAK5D,GAAK4D,KAAKkqB,EAAIN,EAC3B,CACA,IAAI4J,EAAQxzB,KAAKqzB,GAAK7c,EAAWF,EAAMtW,KAAKgN,OACxCrU,EAAIqH,KAAKnD,GAAK02B,EAAMt5B,KAAK4b,IAAI2d,GAC7B56B,EAAIoH,KAAKlD,GAAKkD,KAAKyuB,GAAK8E,EAAMt5B,KAAKkc,IAAIqd,GAG3C,OAFA14B,EAAEnC,EAAIA,EACNmC,EAAElC,EAAIA,EACCkC,CACT,EA2CE4b,QAvCK,SAAiB5b,GAGtB,IAAIua,EAAKke,EAAKhd,EAAKD,EAFnBxb,EAAEnC,GAAKqH,KAAKnD,GACZ/B,EAAElC,EAAIoH,KAAKyuB,GAAK3zB,EAAElC,EAAIoH,KAAKlD,GAEvBkD,KAAKqzB,IAAM,GACbE,EAAMt5B,KAAKqb,KAAKxa,EAAEnC,EAAImC,EAAEnC,EAAImC,EAAElC,EAAIkC,EAAElC,GACpCyc,EAAM,IAGNke,GAAOt5B,KAAKqb,KAAKxa,EAAEnC,EAAImC,EAAEnC,EAAImC,EAAElC,EAAIkC,EAAElC,GACrCyc,GAAO,GAET,IAAIme,EAAQ,EAKZ,OAJY,IAARD,IACFC,EAAQv5B,KAAKijB,MAAM7H,EAAMva,EAAEnC,EAAG0c,EAAMva,EAAElC,IAGpCoH,KAAK2S,QACP2D,EAAME,EAAWxW,KAAKgN,MAAQwmB,EAAQxzB,KAAKqzB,IAC3C9c,EAAMuf,GAAW91B,KAAKkqB,EAAIqJ,EAAMvzB,KAAK5D,GACrCtB,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,IAIPyb,EAAMif,GADGx1B,KAAKkqB,EAAIqJ,EAAMvzB,KAAK5D,EACb4D,KAAK00B,GAAI10B,KAAKmmB,GAAInmB,KAAKsvB,GAAItvB,KAAK20B,IAChDre,EAAME,EAAWxW,KAAKgN,MAAQwmB,EAAQxzB,KAAKqzB,IAC3Cv4B,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,EAGX,EAOE+b,MALiB,CAAC,oBAAqB,SCYlC,IACP,IACEZ,KApHK,WAELjW,KAAKuvB,EAAIvvB,KAAK5D,CAChB,EAkHEia,QAhHK,SAAiBvb,GAEtB,IAMInC,EAAGC,EANH0d,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAIRg2B,EAAOpY,EAAWF,EAAMtW,KAAKgN,OAG7B/S,KAAKmE,IAAImY,IAAQjM,IACnB3R,EAAIqH,KAAKnD,GAAKmD,KAAKuvB,EAAIX,EACvBh2B,EAAIoH,KAAKlD,IAEX,IAAI02B,EAAQkF,GAAM,EAAIz+B,KAAKmE,IAAImY,EAAMtc,KAAKiQ,MACrCjQ,KAAKmE,IAAIwwB,IAAStkB,GAAWrQ,KAAKmE,IAAInE,KAAKmE,IAAImY,GAAOtM,IAAYK,KACrE3R,EAAIqH,KAAKnD,GAEPjE,EADE2d,GAAO,EACLvW,KAAKlD,GAAK7C,KAAKiQ,GAAKlK,KAAKuvB,EAAIt1B,KAAK+D,IAAI,GAAMw1B,GAG5CxzB,KAAKlD,GAAK7C,KAAKiQ,GAAKlK,KAAKuvB,GAAKt1B,KAAK+D,IAAI,GAAMw1B,IAIrD,IAAIhK,EAAK,GAAMvvB,KAAKmE,IAAKnE,KAAKiQ,GAAK0kB,EAASA,EAAO30B,KAAKiQ,IACpDmrB,EAAM7L,EAAKA,EACXgS,EAAQvhC,KAAK4b,IAAI2d,GACjBiI,EAAQxhC,KAAKkc,IAAIqd,GAEjBtJ,EAAIuR,GAASD,EAAQC,EAAQ,GAC7BC,EAAMxR,EAAIA,EACVvsB,EAAIusB,GAAK,EAAIsR,EAAQ,GACrBG,EAAMh+B,EAAIA,EACV0X,EAAMpb,KAAKiQ,GAAKlK,KAAKuvB,GAAK/F,GAAMU,EAAIyR,GAAO1hC,KAAKqb,KAAK+f,GAAOnL,EAAIyR,IAAQzR,EAAIyR,IAAQA,EAAMtG,IAAQqG,EAAMC,MAAUA,EAAMtG,GACxHzG,EAAO,IACTvZ,GAAOA,GAET1c,EAAIqH,KAAKnD,GAAKwY,EAEd,IAAI/Z,EAAI+5B,EAAMnL,EAYd,OAXA7U,EAAMpb,KAAKiQ,GAAKlK,KAAKuvB,GAAK5xB,EAAIrC,EAAIkuB,EAAKvvB,KAAKqb,MAAMqmB,EAAMtG,IAAQA,EAAM,GAAK/5B,EAAIA,KAAOqgC,EAAMtG,GAG1Fz8B,EAFE2d,GAAO,EAELvW,KAAKlD,GAAKuY,EAIVrV,KAAKlD,GAAKuY,EAEhBva,EAAEnC,EAAIA,EACNmC,EAAElC,EAAIA,EACCkC,CACT,EA4DE4b,QAxDK,SAAiB5b,GACtB,IAAIwb,EAAKC,EACLqlB,EAAIC,EAAIC,EAAKC,EAAIC,EAAIC,EACrBC,EACAC,EACA9mB,EACA+mB,EA2CJ,OAtCAthC,EAAEnC,GAAKqH,KAAKnD,GACZ/B,EAAElC,GAAKoH,KAAKlD,GACZuY,EAAMpb,KAAKiQ,GAAKlK,KAAKuvB,EAGrBuM,GAFAF,EAAK9gC,EAAEnC,EAAI0c,GAEAumB,GADXC,EAAK/gC,EAAElC,EAAIyc,GACUwmB,EAOrBxmB,EAAQ,GAHJwmB,EAAKA,GADTI,GAAM,GAFNF,GAAM9hC,KAAKmE,IAAIy9B,IAAO,EAAIC,IAEX,EAAI,EAAID,EAAKA,EAAKC,EAAMA,IACnB,GAFpBE,EAAKD,EAAK,EAAIF,EAAKA,EAAKD,EAAKA,GAEAI,EAAKA,EAAKC,EAAKA,EAAKA,EAAK,EAAIF,EAAKC,EAAKC,EAAKA,GAAM,KAC/EC,GAAMH,EAAKC,EAAKA,EAAK,EAAIC,GAAMA,IAC/BE,EAAK,EAAIliC,KAAKqb,MAAM4mB,EAAK,IAErBjiC,KAAKmE,IAAIiX,GAAO,IAEhBA,EADEA,GAAO,EACH,GAGC,GAGX+mB,EAAMniC,KAAK4vB,KAAKxU,GAAO,EAErBkB,EADEzb,EAAElC,GAAK,IACDujC,EAAKliC,KAAKkc,IAAIimB,EAAMniC,KAAKiQ,GAAK,GAAK8xB,EAAK,EAAIC,GAAMhiC,KAAKiQ,MAGtDiyB,EAAKliC,KAAKkc,IAAIimB,EAAMniC,KAAKiQ,GAAK,GAAK8xB,EAAK,EAAIC,GAAMhiC,KAAKiQ,GAIhEoM,EADErc,KAAKmE,IAAIw9B,GAAMtxB,EACXtK,KAAKgN,MAGLwJ,EAAWxW,KAAKgN,MAAQ/S,KAAKiQ,IAAM4xB,EAAM,EAAI7hC,KAAKqb,KAAK,EAAI,GAAKsmB,EAAKA,EAAKC,EAAKA,GAAMC,EAAMA,IAAQ,EAAIF,GAG/G9gC,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,CACT,EAOE+b,MALiB,CAAC,oBAAqB,gBAAiB,UC+EnD,IACP,IACEZ,KA7LK,WACLjW,KAAKq8B,QAAUpiC,KAAK4b,IAAI7V,KAAKyM,MAC7BzM,KAAKs8B,QAAUriC,KAAKkc,IAAInW,KAAKyM,KAC/B,EA2LE4J,QAzLK,SAAiBvb,GACtB,IAKI45B,EAAIvO,EAAImJ,EAAIqF,EAAI4H,EAAKC,EAAIpD,EAAQqD,EAAKC,EAAIC,EAAKC,EAAIC,EAAGtM,EAAGuM,EAAIC,EAAIzgC,EAAG0gC,EAAIC,EAAO17B,EAAG27B,EAAIC,EAAIC,EAL1F9mB,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EACRuc,EAASlb,KAAK4b,IAAI/a,EAAElC,GACpBwc,EAASnb,KAAKkc,IAAIrb,EAAElC,GACpBg2B,EAAOpY,EAAWF,EAAMtW,KAAKgN,OAEjC,OAAIhN,KAAK2S,OACH1Y,KAAKmE,IAAI4B,KAAKq8B,QAAU,IAAM/xB,GAEhCxP,EAAEnC,EAAIqH,KAAKnD,GAAKmD,KAAK5D,GAAK6N,EAAUsM,GAAOtc,KAAK4b,IAAI+Y,GACpD9zB,EAAElC,EAAIoH,KAAKlD,GAAKkD,KAAK5D,GAAK6N,EAAUsM,GAAOtc,KAAKkc,IAAIyY,GAC7C9zB,GAEAb,KAAKmE,IAAI4B,KAAKq8B,QAAU,IAAM/xB,GAErCxP,EAAEnC,EAAIqH,KAAKnD,GAAKmD,KAAK5D,GAAK6N,EAAUsM,GAAOtc,KAAK4b,IAAI+Y,GACpD9zB,EAAElC,EAAIoH,KAAKlD,GAAKkD,KAAK5D,GAAK6N,EAAUsM,GAAOtc,KAAKkc,IAAIyY,GAC7C9zB,IAIPmiC,EAAQj9B,KAAKq8B,QAAUlnB,EAASnV,KAAKs8B,QAAUlnB,EAASnb,KAAKkc,IAAIyY,GAEjEoO,GADA1gC,EAAIrC,KAAK4vB,KAAKoT,IACL3gC,EAAIrC,KAAK4b,IAAIvZ,GAAK,EAC3BxB,EAAEnC,EAAIqH,KAAKnD,GAAKmD,KAAK5D,EAAI4gC,EAAK5nB,EAASnb,KAAK4b,IAAI+Y,GAChD9zB,EAAElC,EAAIoH,KAAKlD,GAAKkD,KAAK5D,EAAI4gC,GAAMh9B,KAAKs8B,QAAUnnB,EAASnV,KAAKq8B,QAAUjnB,EAASnb,KAAKkc,IAAIyY,IACjF9zB,IAIT45B,EAAKE,GAAK50B,KAAKkW,IACfiQ,EAAK0O,GAAK70B,KAAKkW,IACfoZ,EAAKwF,GAAK90B,KAAKkW,IACfye,EAAKI,GAAK/0B,KAAKkW,IACXjc,KAAKmE,IAAI4B,KAAKq8B,QAAU,IAAM/xB,GAEhCiyB,EAAMv8B,KAAK5D,EAAI44B,GAAKN,EAAIvO,EAAImJ,EAAIqF,EAAI1qB,GACpCuyB,EAAKx8B,KAAK5D,EAAI44B,GAAKN,EAAIvO,EAAImJ,EAAIqF,EAAIpe,GACnCzb,EAAEnC,EAAIqH,KAAKnD,IAAM0/B,EAAMC,GAAMviC,KAAK4b,IAAI+Y,GACtC9zB,EAAElC,EAAIoH,KAAKlD,IAAMy/B,EAAMC,GAAMviC,KAAKkc,IAAIyY,GAC/B9zB,GAEAb,KAAKmE,IAAI4B,KAAKq8B,QAAU,IAAM/xB,GAErCiyB,EAAMv8B,KAAK5D,EAAI44B,GAAKN,EAAIvO,EAAImJ,EAAIqF,EAAI1qB,GACpCuyB,EAAKx8B,KAAK5D,EAAI44B,GAAKN,EAAIvO,EAAImJ,EAAIqF,EAAIpe,GACnCzb,EAAEnC,EAAIqH,KAAKnD,IAAM0/B,EAAMC,GAAMviC,KAAK4b,IAAI+Y,GACtC9zB,EAAElC,EAAIoH,KAAKlD,IAAMy/B,EAAMC,GAAMviC,KAAKkc,IAAIyY,GAC/B9zB,IAIPs+B,EAASjkB,EAASC,EAClBqnB,EAAMtH,GAAGn1B,KAAK5D,EAAG4D,KAAKzE,EAAGyE,KAAKq8B,SAC9BK,EAAKvH,GAAGn1B,KAAK5D,EAAG4D,KAAKzE,EAAG4Z,GACxBwnB,EAAM1iC,KAAK2b,MAAM,EAAI5V,KAAKkW,IAAMkjB,EAASp5B,KAAKkW,GAAKumB,EAAMz8B,KAAKq8B,SAAWK,EAAKtnB,IAG5E7T,EADS,KADXq7B,EAAK3iC,KAAKijB,MAAMjjB,KAAK4b,IAAI+Y,GAAO5uB,KAAKs8B,QAAUriC,KAAK+D,IAAI2+B,GAAO38B,KAAKq8B,QAAUpiC,KAAKkc,IAAIyY,KAEjF30B,KAAKmwB,KAAKpqB,KAAKs8B,QAAUriC,KAAK4b,IAAI8mB,GAAO38B,KAAKq8B,QAAUpiC,KAAKkc,IAAIwmB,IAE9D1iC,KAAKmE,IAAInE,KAAKmE,IAAIw+B,GAAM3iC,KAAKiQ,KAAOI,GACtCrQ,KAAKmwB,KAAKpqB,KAAKs8B,QAAUriC,KAAK4b,IAAI8mB,GAAO38B,KAAKq8B,QAAUpiC,KAAKkc,IAAIwmB,IAGlE1iC,KAAKmwB,KAAKnwB,KAAK4b,IAAI+Y,GAAQ30B,KAAKkc,IAAIwmB,GAAO1iC,KAAK4b,IAAI+mB,IAE1DC,EAAI78B,KAAKzE,EAAIyE,KAAKq8B,QAAUpiC,KAAKqb,KAAK,EAAItV,KAAKkW,IAQ/C5Z,EAAImgC,EAAMl7B,GAAK,GAJf27B,EAAK37B,EAAIA,IADTw7B,GAFAxM,EAAIvwB,KAAKzE,EAAIyE,KAAKs8B,QAAUriC,KAAKkc,IAAIymB,GAAM3iC,KAAKqb,KAAK,EAAItV,KAAKkW,KAErDqa,IAKqB,EAAIwM,GAAM,GAHxCI,EAAKD,EAAK37B,GAGuC,GANjDu7B,EAAKD,EAAItM,IAMkD,EAAI,EAAIwM,IAFnEK,EAAKD,EAAK57B,GAEoE,KAAOw7B,GAAM,EAAI,EAAIA,GAAM,EAAIF,EAAIA,GAAK,EAAI,EAAIE,IADzHK,EAAK77B,EACgI,GAAKu7B,GAC/IhiC,EAAEnC,EAAIqH,KAAKnD,GAAKP,EAAIrC,KAAK4b,IAAI+mB,GAC7B9hC,EAAElC,EAAIoH,KAAKlD,GAAKR,EAAIrC,KAAKkc,IAAIymB,GACtB9hC,GAKb,EAuGE4b,QArGK,SAAiB5b,GAGtB,IAAI2zB,EAAIvzB,EAAG48B,EAAMD,EAAMvhB,EAAKC,EAAKlB,EAAKqf,EAAIvO,EAAImJ,EAAIqF,EAAI4H,EAAQ5W,EAAIgX,EAAKC,EAAIS,EAAO1Q,EAAKvK,EAAGoI,EAAGzE,EAAGuX,EAAIhN,EAAGiN,EACvG,GAHAziC,EAAEnC,GAAKqH,KAAKnD,GACZ/B,EAAElC,GAAKoH,KAAKlD,GAERkD,KAAK2S,OAAQ,CAEf,IADA8b,EAAKx0B,KAAKqb,KAAKxa,EAAEnC,EAAImC,EAAEnC,EAAImC,EAAElC,EAAIkC,EAAElC,IACzB,EAAIqR,EAAUjK,KAAK5D,EAC3B,OAoCF,OAlCAlB,EAAIuzB,EAAKzuB,KAAK5D,EAEd07B,EAAO79B,KAAK4b,IAAI3a,GAChB28B,EAAO59B,KAAKkc,IAAIjb,GAEhBob,EAAMtW,KAAKgN,MACP/S,KAAKmE,IAAIqwB,IAAOnkB,EAClBiM,EAAMvW,KAAKyM,MAGX8J,EAAMmiB,GAAMb,EAAO73B,KAAKq8B,QAAWvhC,EAAElC,EAAIk/B,EAAO93B,KAAKs8B,QAAW7N,GAChEpZ,EAAMpb,KAAKmE,IAAI4B,KAAKyM,MAAQxC,EAGxBqM,EAFArc,KAAKmE,IAAIiX,IAAQ/K,EACftK,KAAKyM,MAAQ,EACT+J,EAAWxW,KAAKgN,MAAQ/S,KAAKijB,MAAMpiB,EAAEnC,GAAKmC,EAAElC,IAG5C4d,EAAWxW,KAAKgN,MAAQ/S,KAAKijB,OAAOpiB,EAAEnC,EAAGmC,EAAElC,IAW7C4d,EAAWxW,KAAKgN,MAAQ/S,KAAKijB,MAAMpiB,EAAEnC,EAAIm/B,EAAMrJ,EAAKzuB,KAAKs8B,QAAUzE,EAAO/8B,EAAElC,EAAIoH,KAAKq8B,QAAUvE,KAIzGh9B,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,CACT,CAME,OAJA45B,EAAKE,GAAK50B,KAAKkW,IACfiQ,EAAK0O,GAAK70B,KAAKkW,IACfoZ,EAAKwF,GAAK90B,KAAKkW,IACfye,EAAKI,GAAK/0B,KAAKkW,IACXjc,KAAKmE,IAAI4B,KAAKq8B,QAAU,IAAM/xB,GAKhCiM,EAAMif,KAHN+G,EAAMv8B,KAAK5D,EAAI44B,GAAKN,EAAIvO,EAAImJ,EAAIqF,EAAI1qB,KACpCwkB,EAAKx0B,KAAKqb,KAAKxa,EAAEnC,EAAImC,EAAEnC,EAAImC,EAAElC,EAAIkC,EAAElC,KAEnBoH,KAAK5D,EAAGs4B,EAAIvO,EAAImJ,EAAIqF,GACpCre,EAAME,EAAWxW,KAAKgN,MAAQ/S,KAAKijB,MAAMpiB,EAAEnC,GAAK,EAAImC,EAAElC,IACtDkC,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,GAEAb,KAAKmE,IAAI4B,KAAKq8B,QAAU,IAAM/xB,GAErCiyB,EAAMv8B,KAAK5D,EAAI44B,GAAKN,EAAIvO,EAAImJ,EAAIqF,EAAI1qB,GAIpCsM,EAAMif,KAHN/G,EAAKx0B,KAAKqb,KAAKxa,EAAEnC,EAAImC,EAAEnC,EAAImC,EAAElC,EAAIkC,EAAElC,IAC1B2jC,GAEOv8B,KAAK5D,EAAGs4B,EAAIvO,EAAImJ,EAAIqF,GACpCre,EAAME,EAAWxW,KAAKgN,MAAQ/S,KAAKijB,MAAMpiB,EAAEnC,EAAGmC,EAAElC,IAChDkC,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,IAIP2zB,EAAKx0B,KAAKqb,KAAKxa,EAAEnC,EAAImC,EAAEnC,EAAImC,EAAElC,EAAIkC,EAAElC,GACnCgkC,EAAK3iC,KAAKijB,MAAMpiB,EAAEnC,EAAGmC,EAAElC,GACvB+sB,EAAKwP,GAAGn1B,KAAK5D,EAAG4D,KAAKzE,EAAGyE,KAAKq8B,SAC7BgB,EAAQpjC,KAAKkc,IAAIymB,GAEjBxa,IADAuK,EAAM3sB,KAAKzE,EAAIyE,KAAKs8B,QAAUe,GACnB1Q,GAAO,EAAI3sB,KAAKkW,IAC3BsU,EAAI,EAAIxqB,KAAKkW,IAAM,EAAIkM,GAAKpiB,KAAKq8B,QAAUr8B,KAAKs8B,QAAUe,GAAS,EAAIr9B,KAAKkW,IAG5Eoa,EAAI,EAAIlO,GADRkb,GADAvX,EAAI0I,EAAK9I,GACAvD,GAAK,EAAIA,GAAKnoB,KAAKwH,IAAIskB,EAAG,GAAK,EAAIyE,GAAK,EAAI,EAAIpI,GAAKnoB,KAAKwH,IAAIskB,EAAG,GAAK,IAC9DuX,EAAK,EAAIvX,EAAIuX,EAAKA,EAAKA,EAAK,EAC7CX,EAAM1iC,KAAKmwB,KAAKpqB,KAAKq8B,QAAUpiC,KAAKkc,IAAImnB,GAAMt9B,KAAKs8B,QAAUriC,KAAK4b,IAAIynB,GAAMD,GAC5E/mB,EAAME,EAAWxW,KAAKgN,MAAQ/S,KAAKmwB,KAAKnwB,KAAK4b,IAAI+mB,GAAM3iC,KAAK4b,IAAIynB,GAAMrjC,KAAKkc,IAAIwmB,KAC/EY,EAAStjC,KAAK4b,IAAI8mB,GAClBpmB,EAAMtc,KAAKijB,OAAOqgB,EAASv9B,KAAKkW,GAAKoa,EAAItwB,KAAKq8B,SAAWpiC,KAAK+D,IAAI2+B,GAAMY,GAAU,EAAIv9B,KAAKkW,KAC3Fpb,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,EAIb,EAOE+b,MALiB,CAAC,wBAAyB,SCrHtC,IACP,IACEZ,KAlFK,WAKLjW,KAAK44B,QAAU3+B,KAAK4b,IAAI7V,KAAKyM,MAC7BzM,KAAK64B,QAAU5+B,KAAKkc,IAAInW,KAAKyM,KAC/B,EA4EE4J,QAxEK,SAAiBvb,GACtB,IAAIqa,EAAQC,EACRwZ,EACAmK,EAEA7O,EAAGvxB,EAAGC,EACN0d,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAiBZ,OAdAg2B,EAAOpY,EAAWF,EAAMtW,KAAKgN,OAE7BmI,EAASlb,KAAK4b,IAAIU,GAClBnB,EAASnb,KAAKkc,IAAII,GAElBwiB,EAAS9+B,KAAKkc,IAAIyY,GAEZ,IADN1E,EAAIlqB,KAAK44B,QAAUzjB,EAASnV,KAAK64B,QAAUzjB,EAAS2jB,GAE3C,GAAO9+B,KAAKmE,IAAI8rB,IAAM5f,KAC7B3R,EAFI,EAEAqH,KAAK5D,EAAUgZ,EAASnb,KAAK4b,IAAI+Y,GACrCh2B,EAAIoH,KAAKlD,GAHL,EAGUkD,KAAK5D,GAAW4D,KAAK64B,QAAU1jB,EAASnV,KAAK44B,QAAUxjB,EAAS2jB,IAEhFj+B,EAAEnC,EAAIA,EACNmC,EAAElC,EAAIA,EACCkC,CACT,EAgDE4b,QA9CK,SAAiB5b,GACtB,IAAI2zB,EACAvzB,EACA48B,EAAMD,EACNxiB,EACAiB,EAAKC,EAYT,OATAzb,EAAEnC,GAAKqH,KAAKnD,GACZ/B,EAAElC,GAAKoH,KAAKlD,GAEZ5B,EAAIw9B,IADJjK,EAAKx0B,KAAKqb,KAAKxa,EAAEnC,EAAImC,EAAEnC,EAAImC,EAAElC,EAAIkC,EAAElC,IACpBoH,KAAK5D,GAEpB07B,EAAO79B,KAAK4b,IAAI3a,GAChB28B,EAAO59B,KAAKkc,IAAIjb,GAEhBob,EAAMtW,KAAKgN,MACP/S,KAAKmE,IAAIqwB,IAAOnkB,GAClBiM,EAAMvW,KAAKyM,KACX3R,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,IAETyb,EAAMmiB,GAAMb,EAAO73B,KAAK44B,QAAW99B,EAAElC,EAAIk/B,EAAO93B,KAAK64B,QAAWpK,GAChEpZ,EAAMpb,KAAKmE,IAAI4B,KAAKyM,MAAQxC,EACxBhQ,KAAKmE,IAAIiX,IAAQ/K,GAEjBgM,EADEtW,KAAKyM,MAAQ,EACT+J,EAAWxW,KAAKgN,MAAQ/S,KAAKijB,MAAMpiB,EAAEnC,GAAKmC,EAAElC,IAG5C4d,EAAWxW,KAAKgN,MAAQ/S,KAAKijB,OAAOpiB,EAAEnC,EAAGmC,EAAElC,IAEnDkC,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,IAETwb,EAAME,EAAWxW,KAAKgN,MAAQ/S,KAAKijB,MAAOpiB,EAAEnC,EAAIm/B,EAAOrJ,EAAKzuB,KAAK64B,QAAUhB,EAAO/8B,EAAElC,EAAIoH,KAAK44B,QAAUd,IACvGh9B,EAAEnC,EAAI2d,EACNxb,EAAElC,EAAI2d,EACCzb,GACT,EAOE+b,MALiB,CAAC,UC9EhB2mB,GACO,EADPA,GAEO,EAFPA,GAGM,EAHNA,GAIM,EAJNA,GAKK,EALLA,GAMQ,EAGRC,GAAY,CACZC,OAAQ,EACRC,OAAQ,EACRC,OAAQ,EACRC,OAAQ,GAmTZ,SAASC,GAAyBvoB,EAAK3c,EAAGD,EAAGoC,GAC3C,IAAIy4B,EAmBJ,OAlBIje,EAAMjL,GACRvP,EAAK4G,MAAQ87B,GAAUC,OACvBlK,EAAQ,IAERA,EAAQv5B,KAAKijB,MAAMtkB,EAAGD,GAClBsB,KAAKmE,IAAIo1B,IAAU/oB,EACrB1P,EAAK4G,MAAQ87B,GAAUC,OACdlK,EAAQ/oB,GAAU+oB,GAASvpB,EAAUQ,GAC9C1P,EAAK4G,MAAQ87B,GAAUE,OACvBnK,GAASvpB,GACAupB,EAAQvpB,EAAUQ,GAAU+oB,KAAWvpB,EAAUQ,IAC1D1P,EAAK4G,MAAQ87B,GAAUG,OACvBpK,EAASA,GAAS,EAAMA,EAAQ7oB,EAAM6oB,EAAQ7oB,IAE9C5P,EAAK4G,MAAQ87B,GAAUI,OACvBrK,GAASvpB,IAGNupB,CACT,CAGA,SAASuK,GAAqBznB,EAAKvV,GACjC,IAAIi9B,EAAO1nB,EAAMvV,EAMjB,OALIi9B,GAAQrzB,EACVqzB,GAAQtzB,EACCszB,GAAQrzB,IACjBqzB,GAAQtzB,GAEHszB,CACT,CAEO,IACP,IACE/nB,KApVK,WAELjW,KAAKnD,GAAKmD,KAAKnD,IAAM,EACrBmD,KAAKlD,GAAKkD,KAAKlD,IAAM,EACrBkD,KAAKyM,KAAOzM,KAAKyM,MAAQ,EACzBzM,KAAKgN,MAAQhN,KAAKgN,OAAS,EAC3BhN,KAAK8M,OAAS9M,KAAK8M,QAAU,EAC7B9M,KAAK0tB,MAAQ1tB,KAAK0tB,OAAS,mCAGvB1tB,KAAKyM,MAAQxC,EAAUQ,EAAS,EAClCzK,KAAKi+B,KAAOT,GACHx9B,KAAKyM,QAAUxC,EAAUQ,EAAS,GAC3CzK,KAAKi+B,KAAOT,GACHvjC,KAAKmE,IAAI4B,KAAKgN,QAAUvC,EACjCzK,KAAKi+B,KAAOT,GACHvjC,KAAKmE,IAAI4B,KAAKgN,QAAU/C,EAAUQ,EAC3CzK,KAAKi+B,KAAOj+B,KAAKgN,MAAQ,EAAMwwB,GAAkBA,GAEjDx9B,KAAKi+B,KAAOT,GAKE,IAAZx9B,KAAKkW,KACPlW,KAAKk+B,YAAc,GAAKl+B,KAAK5D,EAAI4D,KAAK3D,GAAK2D,KAAK5D,EAChD4D,KAAKm+B,oBAAsBn+B,KAAKk+B,YAAcl+B,KAAKk+B,YAEvD,EAyTE7nB,QArTK,SAAiBvb,GACtB,IACIyb,EAAKD,EACLkd,EAAOje,EACP8J,EAAG4G,EAHHmY,EAAK,CAACzlC,EAAG,EAAGC,EAAG,GAKfmC,EAAO,CAAC4G,MAAO,GAoBnB,GAjBA7G,EAAEnC,GAAKqH,KAAKgN,MAMVuJ,EADc,IAAZvW,KAAKkW,GACDjc,KAAK2b,KAAK5V,KAAKm+B,oBAAsBlkC,KAAK+D,IAAIlD,EAAElC,IAEhDkC,EAAElC,EAQV0d,EAAMxb,EAAEnC,EACJqH,KAAKi+B,OAAST,GAChBjoB,EAAMtL,EAAUsM,EACZD,GAAO7L,GAAU6L,GAAOrM,EAAUQ,GACpC1P,EAAK4G,MAAQ87B,GAAUC,OACvBlK,EAAQld,EAAMrM,GACLqM,EAAMrM,EAAUQ,GAAU6L,KAASrM,EAAUQ,IACtD1P,EAAK4G,MAAQ87B,GAAUE,OACvBnK,EAASld,EAAM,EAAMA,EAAM3L,EAAM2L,EAAM3L,GAC9B2L,IAAQrM,EAAUQ,IAAW6L,IAAQ7L,GAC9C1P,EAAK4G,MAAQ87B,GAAUG,OACvBpK,EAAQld,EAAMrM,IAEdlP,EAAK4G,MAAQ87B,GAAUI,OACvBrK,EAAQld,QAEL,GAAItW,KAAKi+B,OAAST,GACvBjoB,EAAMtL,EAAUsM,EACZD,GAAO7L,GAAU6L,GAAOrM,EAAUQ,GACpC1P,EAAK4G,MAAQ87B,GAAUC,OACvBlK,GAASld,EAAMrM,GACNqM,EAAM7L,GAAU6L,IAAQ7L,GACjC1P,EAAK4G,MAAQ87B,GAAUE,OACvBnK,GAASld,GACAA,GAAO7L,GAAU6L,KAASrM,EAAUQ,IAC7C1P,EAAK4G,MAAQ87B,GAAUG,OACvBpK,GAASld,EAAMrM,IAEflP,EAAK4G,MAAQ87B,GAAUI,OACvBrK,EAASld,EAAM,GAAOA,EAAM3L,GAAO2L,EAAM3L,OAEtC,CACL,IAAIrP,EAAGwD,EAAGyC,EACNmtB,EAAQC,EACR0P,EAEAr+B,KAAKi+B,OAAST,GAChBlnB,EAAMynB,GAAqBznB,GAAMrM,GACxBjK,KAAKi+B,OAAST,GACvBlnB,EAAMynB,GAAqBznB,GAAM3L,GACxB3K,KAAKi+B,OAAST,KACvBlnB,EAAMynB,GAAqBznB,GAAMrM,IAEnCykB,EAASz0B,KAAK4b,IAAIU,GAClBoY,EAAS10B,KAAKkc,IAAII,GAClB8nB,EAASpkC,KAAK4b,IAAIS,GAElBhb,EAAIqzB,EADK10B,KAAKkc,IAAIG,GAElBxX,EAAI6vB,EAAS0P,EACb98B,EAAImtB,EAEA1uB,KAAKi+B,OAAST,GAEhBhK,EAAQsK,GADRvoB,EAAMtb,KAAK4vB,KAAKvuB,GACsBiG,EAAGzC,EAAG/D,GACnCiF,KAAKi+B,OAAST,GAEvBhK,EAAQsK,GADRvoB,EAAMtb,KAAK4vB,KAAK/qB,GACsByC,GAAIjG,EAAGP,GACpCiF,KAAKi+B,OAAST,GAEvBhK,EAAQsK,GADRvoB,EAAMtb,KAAK4vB,MAAMvuB,GACqBiG,GAAIzC,EAAG/D,GACpCiF,KAAKi+B,OAAST,GAEvBhK,EAAQsK,GADRvoB,EAAMtb,KAAK4vB,MAAM/qB,GACqByC,EAAGjG,EAAGP,IAG5Cwa,EAAMie,EAAQ,EACdz4B,EAAK4G,MAAQ87B,GAAUC,OAE3B,CAyBA,OApBAzX,EAAKhsB,KAAK2b,KAAM,GAAKjL,GAAQ6oB,EAAQv5B,KAAK4vB,KAAK5vB,KAAK4b,IAAI2d,GAASv5B,KAAKkc,IAAI1L,IAAWR,IACrFoV,EAAIplB,KAAKqb,MAAM,EAAIrb,KAAKkc,IAAIZ,KAAStb,KAAKkc,IAAI8P,GAAMhsB,KAAKkc,IAAI8P,KAAQ,EAAIhsB,KAAKkc,IAAIlc,KAAK2b,KAAK,EAAI3b,KAAKkc,IAAIqd,OAGrGz4B,EAAK4G,QAAU87B,GAAUE,OAC3B1X,GAAMhc,EACGlP,EAAK4G,QAAU87B,GAAUG,OAClC3X,GAAMtb,EACG5P,EAAK4G,QAAU87B,GAAUI,SAClC5X,GAAM,IAAMtb,GAIdyzB,EAAGzlC,EAAI0mB,EAAIplB,KAAKkc,IAAI8P,GACpBmY,EAAGxlC,EAAIymB,EAAIplB,KAAK4b,IAAIoQ,GACpBmY,EAAGzlC,EAAIylC,EAAGzlC,EAAIqH,KAAK5D,EAAI4D,KAAKnD,GAC5BuhC,EAAGxlC,EAAIwlC,EAAGxlC,EAAIoH,KAAK5D,EAAI4D,KAAKlD,GAE5BhC,EAAEnC,EAAIylC,EAAGzlC,EACTmC,EAAElC,EAAIwlC,EAAGxlC,EACFkC,CACT,EA+LE4b,QA3LK,SAAiB5b,GACtB,IACImrB,EAAIqY,EAAIC,EAAOC,EACfC,EAAUjL,EAAOpe,EAAQG,EACzB8J,EA8HEqf,EACAtF,EAAQuF,EAlIVC,EAAK,CAAC3J,IAAK,EAAG1f,IAAK,GAInBxa,EAAO,CAAC4G,MAAO,GA4CnB,GAzCA7G,EAAEnC,GAAKmC,EAAEnC,EAAIqH,KAAKnD,IAAMmD,KAAK5D,EAC7BtB,EAAElC,GAAKkC,EAAElC,EAAIoH,KAAKlD,IAAMkD,KAAK5D,EAI7BkiC,EAAKrkC,KAAK2b,KAAK3b,KAAKqb,KAAKxa,EAAEnC,EAAImC,EAAEnC,EAAImC,EAAElC,EAAIkC,EAAElC,IAC7CqtB,EAAKhsB,KAAKijB,MAAMpiB,EAAElC,EAAGkC,EAAEnC,GACnBmC,EAAEnC,GAAK,GAAOmC,EAAEnC,GAAKsB,KAAKmE,IAAItD,EAAElC,GAClCmC,EAAK4G,MAAQ87B,GAAUC,OACd5iC,EAAElC,GAAK,GAAOkC,EAAElC,GAAKqB,KAAKmE,IAAItD,EAAEnC,IACzCoC,EAAK4G,MAAQ87B,GAAUE,OACvB1X,GAAMhc,GACGnP,EAAEnC,EAAI,IAAQmC,EAAEnC,GAAKsB,KAAKmE,IAAItD,EAAElC,IACzCmC,EAAK4G,MAAQ87B,GAAUG,OACvB3X,EAAMA,EAAK,EAAMA,EAAKtb,EAAMsb,EAAKtb,IAEjC5P,EAAK4G,MAAQ87B,GAAUI,OACvB5X,GAAMhc,GAQRoV,EAAK1U,EAAM,GAAM1Q,KAAK+D,IAAIioB,GAC1BwY,EAAWxkC,KAAK4b,IAAIwJ,IAAMplB,KAAKkc,IAAIkJ,GAAM,EAAIplB,KAAKqb,KAAK,IACvDke,EAAQv5B,KAAK2b,KAAK6oB,IAGlBrpB,EAAS,GAFTmpB,EAAQtkC,KAAKkc,IAAI8P,IAEIsY,GADrBC,EAAQvkC,KAAK+D,IAAIsgC,IACoBE,GAAS,EAAIvkC,KAAKkc,IAAIlc,KAAK2b,KAAK,EAAI3b,KAAKkc,IAAIqd,QACpE,EACZpe,GAAU,EACDA,EAAS,IAClBA,EAAS,GAOPpV,KAAKi+B,OAAST,GAChBjoB,EAAMtb,KAAK4vB,KAAKzU,GAChBwpB,EAAGrpB,IAAMtL,EAAUsL,EACfxa,EAAK4G,QAAU87B,GAAUC,OAC3BkB,EAAG3J,IAAMzB,EAAQvpB,EACRlP,EAAK4G,QAAU87B,GAAUE,OAClCiB,EAAG3J,IAAOzB,EAAQ,EAAMA,EAAQ7oB,EAAM6oB,EAAQ7oB,EACrC5P,EAAK4G,QAAU87B,GAAUG,OAClCgB,EAAG3J,IAAMzB,EAAQvpB,EAEjB20B,EAAG3J,IAAMzB,OAEN,GAAIxzB,KAAKi+B,OAAST,GACvBjoB,EAAMtb,KAAK4vB,KAAKzU,GAChBwpB,EAAGrpB,IAAMA,EAAMtL,EACXlP,EAAK4G,QAAU87B,GAAUC,OAC3BkB,EAAG3J,KAAOzB,EAAQvpB,EACTlP,EAAK4G,QAAU87B,GAAUE,OAClCiB,EAAG3J,KAAOzB,EACDz4B,EAAK4G,QAAU87B,GAAUG,OAClCgB,EAAG3J,KAAOzB,EAAQvpB,EAElB20B,EAAG3J,IAAOzB,EAAQ,GAAOA,EAAQ7oB,GAAO6oB,EAAQ7oB,MAE7C,CAEL,IAAIrP,EAAGwD,EAAGyC,EAEV8d,GADA/jB,EAAI8Z,GACI9Z,EAQNwD,GAFFugB,IAJE9d,EADE8d,GAAK,EACH,EAEAplB,KAAKqb,KAAK,EAAI+J,GAAKplB,KAAK4b,IAAI2d,IAEzBjyB,IACA,EACH,EAEAtH,KAAKqb,KAAK,EAAI+J,GAGhBtkB,EAAK4G,QAAU87B,GAAUE,QAC3Bte,EAAIvgB,EACJA,GAAKyC,EACLA,EAAI8d,GACKtkB,EAAK4G,QAAU87B,GAAUG,QAClC9+B,GAAKA,EACLyC,GAAKA,GACIxG,EAAK4G,QAAU87B,GAAUI,SAClCxe,EAAIvgB,EACJA,EAAIyC,EACJA,GAAK8d,GAGHrf,KAAKi+B,OAAST,IAChBne,EAAI/jB,EACJA,GAAKwD,EACLA,EAAIugB,GACKrf,KAAKi+B,OAAST,IACvBliC,GAAKA,EACLwD,GAAKA,GACIkB,KAAKi+B,OAAST,KACvBne,EAAI/jB,EACJA,EAAIwD,EACJA,GAAKugB,GAGPuf,EAAGrpB,IAAMtb,KAAK4vB,MAAMtoB,GAAK0I,EACzB20B,EAAG3J,IAAMh7B,KAAKijB,MAAMpe,EAAGxD,GACnB0E,KAAKi+B,OAAST,GAChBoB,EAAG3J,IAAM8I,GAAqBa,EAAG3J,KAAMhrB,GAC9BjK,KAAKi+B,OAAST,GACvBoB,EAAG3J,IAAM8I,GAAqBa,EAAG3J,KAAMtqB,GAC9B3K,KAAKi+B,OAAST,KACvBoB,EAAG3J,IAAM8I,GAAqBa,EAAG3J,KAAMhrB,GAE3C,CAmBA,OAfgB,IAAZjK,KAAKkW,KAGPwoB,EAAeE,EAAGrpB,IAAM,EAAI,EAAI,EAChC6jB,EAASn/B,KAAK+D,IAAI4gC,EAAGrpB,KACrBopB,EAAK3+B,KAAK3D,EAAIpC,KAAKqb,KAAK8jB,EAASA,EAASp5B,KAAKm+B,qBAC/CS,EAAGrpB,IAAMtb,KAAK2b,KAAK3b,KAAKqb,KAAKtV,KAAK5D,EAAI4D,KAAK5D,EAAIuiC,EAAKA,IAAO3+B,KAAKk+B,YAAcS,IAC1ED,IACFE,EAAGrpB,KAAOqpB,EAAGrpB,MAIjBqpB,EAAG3J,KAAOj1B,KAAKgN,MACflS,EAAEnC,EAAIimC,EAAG3J,IACTn6B,EAAElC,EAAIgmC,EAAGrpB,IACFza,CACT,EA2CE+b,MALiB,CAAC,mCAAoC,mCAAoC,QCjWxFgoB,GAAU,CACV,CAAC,EAAQ,WAAa,WAAa,WACnC,CAAC,OAAS,WAAc,UAAa,WACrC,CAAC,OAAS,UAAa,YAAc,YACrC,CAAC,KAAS,WAAa,SAAY,WACnC,CAAC,OAAS,WAAa,YAAc,YACrC,CAAC,MAAS,WAAa,WAAa,WACpC,CAAC,KAAS,WAAa,WAAa,YACpC,CAAC,OAAS,WAAa,YAAc,WACrC,CAAC,OAAS,WAAa,SAAY,YACnC,CAAC,OAAS,WAAa,YAAc,YACrC,CAAC,OAAS,WAAa,UAAa,YACpC,CAAC,MAAS,WAAa,WAAa,YACpC,CAAC,OAAS,WAAa,WAAa,YACpC,CAAC,OAAS,WAAa,UAAa,YACpC,CAAC,OAAS,WAAa,YAAc,WACrC,CAAC,OAAS,WAAa,UAAa,YACpC,CAAC,OAAS,QAAU,WAAa,YACjC,CAAC,OAAS,UAAY,OAAU,YAChC,CAAC,OAAS,UAAY,UAAa,aAGnCC,GAAU,CACV,EAAE,WAAa,MAAQ,YAAc,YACrC,CAAC,KAAQ,OAAS,WAAa,aAC/B,CAAC,KAAQ,MAAQ,YAAc,YAC/B,CAAC,KAAQ,UAAY,WAAa,YAClC,CAAC,KAAQ,SAAW,YAAc,SAClC,CAAC,IAAQ,UAAY,WAAa,YAClC,CAAC,KAAQ,SAAW,YAAc,YAClC,CAAC,KAAQ,UAAY,YAAc,YACnC,CAAC,MAAQ,UAAY,YAAc,YACnC,CAAC,MAAQ,UAAY,YAAc,YACnC,CAAC,MAAQ,UAAY,YAAc,YACnC,CAAC,MAAQ,SAAW,YAAc,YAClC,CAAC,MAAQ,UAAY,YAAc,YACnC,CAAC,MAAQ,UAAY,YAAc,YACnC,CAAC,MAAQ,UAAY,UAAa,YAClC,CAAC,MAAQ,WAAa,UAAa,SACnC,CAAC,MAAQ,WAAa,WAAc,WACpC,CAAC,MAAQ,WAAa,QAAW,WACjC,CAAC,EAAQ,WAAa,WAAc,YAGpCC,GAAM,MACNC,GAAM,OACNnZ,GAAKrb,EAAI,EACTy0B,GAAM,EAAEpZ,GACRqZ,GAAQ,GAERC,GAAY,SAASC,EAAOzmC,GAC5B,OAAOymC,EAAM,GAAKzmC,GAAKymC,EAAM,GAAKzmC,GAAKymC,EAAM,GAAKzmC,EAAIymC,EAAM,IAChE,EA+FO,IACP,IACEnpB,KA/EK,WACHjW,KAAKnD,GAAKmD,KAAKnD,IAAM,EACrBmD,KAAKlD,GAAKkD,KAAKlD,IAAM,EACrBkD,KAAKgN,MAAQhN,KAAKgN,OAAS,EAC3BhN,KAAKkW,GAAK,EACVlW,KAAK0tB,MAAQ1tB,KAAK0tB,OAAS,UAC/B,EA0EErX,QAxEK,SAAiB0I,GACpB,IAAIzI,EAAME,EAAWuI,EAAGpmB,EAAIqH,KAAKgN,OAE7B0I,EAAOzb,KAAKmE,IAAI2gB,EAAGnmB,GACnBU,EAAIW,KAAK6H,MAAM4T,EAAOmQ,IACtBvsB,EAAI,EACJA,EAAI,EACGA,GAAK4lC,KACZ5lC,EAAI4lC,IAGR,IAAId,EAAK,CACLzlC,EAAGwmC,GAAUN,GAAQvlC,GAFzBoc,EAAOlL,GAAOkL,EAAOupB,GAAM3lC,IAEUgd,EACjC1d,EAAGumC,GAAUL,GAAQxlC,GAAIoc,IAQ7B,OANIqJ,EAAGnmB,EAAI,IACPwlC,EAAGxlC,GAAKwlC,EAAGxlC,GAGfwlC,EAAGzlC,EAAIylC,EAAGzlC,EAAIqH,KAAK5D,EAAI2iC,GAAM/+B,KAAKnD,GAClCuhC,EAAGxlC,EAAIwlC,EAAGxlC,EAAIoH,KAAK5D,EAAI4iC,GAAMh/B,KAAKlD,GAC3BshC,CACX,EAmDE1nB,QAjDK,SAAiB0nB,GACpB,IAAIrf,EAAK,CACLpmB,GAAIylC,EAAGzlC,EAAIqH,KAAKnD,KAAOmD,KAAK5D,EAAI2iC,IAChCnmC,EAAGqB,KAAKmE,IAAIggC,EAAGxlC,EAAIoH,KAAKlD,KAAOkD,KAAK5D,EAAI4iC,KAG5C,GAAIjgB,EAAGnmB,GAAK,EACRmmB,EAAGpmB,GAAKkmC,GAAQK,IAAO,GACvBngB,EAAGnmB,EAAIwlC,EAAGxlC,EAAI,GAAKqR,EAAUA,MAC1B,CAEH,IAAI3Q,EAAIW,KAAK6H,MAAMid,EAAGnmB,EAAIsmC,IAM1B,IALI5lC,EAAI,EACJA,EAAI,EACGA,GAAK4lC,KACZ5lC,EAAI4lC,MAGJ,GAAIJ,GAAQxlC,GAAG,GAAKylB,EAAGnmB,IACjBU,MACC,MAAIwlC,GAAQxlC,EAAE,GAAG,IAAMylB,EAAGnmB,GAG7B,QAFEU,CAGN,CAGJ,IAAI8lC,EAAQN,GAAQxlC,GAChB+lB,EAAI,GAAKN,EAAGnmB,EAAIwmC,EAAM,KAAON,GAAQxlC,EAAE,GAAG,GAAK8lC,EAAM,IAEzD/f,EA1ER,SAAwBggB,EAAMjlC,EAAOklC,EAASC,GAE1C,IADA,IAAI5mC,EAAIyB,EACDmlC,IAASA,EAAO,CACnB,IAAIC,EAAMH,EAAK1mC,GAEf,GADAA,GAAK6mC,EACDvlC,KAAKmE,IAAIohC,GAAOF,EAChB,KAER,CACA,OAAO3mC,CACX,CAgEY8mC,EAAe,SAAS9mC,GACxB,OAAQwmC,GAAUC,EAAOzmC,GAAKomB,EAAGnmB,GA/E7B,SAASwmC,EAAOzmC,GAC5B,OAAOymC,EAAM,GAAKzmC,GAAK,EAAIymC,EAAM,GAAS,EAAJzmC,EAAQymC,EAAM,GACxD,CA6EkDM,CAAUN,EAAOzmC,EAC3D,GAAG0mB,EAAG/U,EAAO,KAEbyU,EAAGpmB,GAAKwmC,GAAUN,GAAQvlC,GAAI+lB,GAC9BN,EAAGnmB,GAAK,EAAIU,EAAI+lB,GAAK9U,EACjB6zB,EAAGxlC,EAAI,IACPmmB,EAAGnmB,GAAKmmB,EAAGnmB,EAEnB,CAGA,OADAmmB,EAAGpmB,EAAI6d,EAAWuI,EAAGpmB,EAAIqH,KAAKgN,OACvB+R,CACX,EAOElI,MALiB,CAAC,WAAY,UCtIzB,IACP,IACIZ,KAjBG,WACHjW,KAAK6Q,KAAO,SAEhB,EAeIwF,QAbG,SAAiBvb,GAEpB,OADY0gB,GAAqB1gB,EAAGkF,KAAKkW,GAAIlW,KAAK5D,EAEtD,EAWIsa,QATG,SAAiB5b,GAEpB,OADYkhB,GAAqBlhB,EAAGkF,KAAKkW,GAAIlW,KAAK5D,EAAG4D,KAAK3D,EAE9D,EAOIwa,MALe,CAAC,aAAc,aAAc,UAAW,YCnBvDwf,GACM,EADNA,GAEM,EAFNA,GAGK,EAHLA,GAIK,EAMLlqB,GAAS,CACXlG,EAAO,CAAEsN,IAAK,IAAQ7T,KAAK,GAC3BigC,IAAO,CAAEpsB,IAAK,EAAG7T,KAAK,EAAMkgC,SAAS,GACrCC,KAAO,CAAEtsB,IAAK,EAAG7T,KAAK,EAAMkgC,SAAS,GACrC5yB,MAAO,CAAEuG,IAAK,EAAG7T,KAAK,GACtB+M,KAAO,CAAE8G,IAAK,EAAG7T,KAAK,IAkJjB,IACP,IACEuW,KAjJK,WA0BL,GAzBA9K,OAAOD,KAAKiB,IAAQ4G,QAAQ,SAAUjY,GACpC,QAAuB,IAAZkF,KAAKlF,GACdkF,KAAKlF,GAAKqR,GAAOrR,GAAGyY,QACf,IAAIpH,GAAOrR,GAAG4E,KAAOmC,MAAM7B,KAAKlF,IACrC,MAAM,IAAIoL,MAAM,4CAA8CpL,EAAI,MAAQkF,KAAKlF,IACtEqR,GAAOrR,GAAG4E,MACnBM,KAAKlF,GAAKyR,WAAWvM,KAAKlF,IAC5B,CACIqR,GAAOrR,GAAG8kC,UACZ5/B,KAAKlF,GAAKkF,KAAKlF,GAAKyP,EAExB,EAAEu1B,KAAK9/B,OAEH/F,KAAKmE,IAAKnE,KAAKmE,IAAI4B,KAAKyM,MAAQxC,GAAYK,EAC9CtK,KAAKq2B,KAAOr2B,KAAKyM,KAAO,EAAI4pB,GAAcA,GACjCp8B,KAAKmE,IAAI4B,KAAKyM,MAAQnC,EAC/BtK,KAAKq2B,KAAOA,IAEZr2B,KAAKq2B,KAAOA,GACZr2B,KAAKywB,OAASx2B,KAAK4b,IAAI7V,KAAKyM,MAC5BzM,KAAKqwB,OAASp2B,KAAKkc,IAAInW,KAAKyM,OAG9BzM,KAAK+/B,IAAM//B,KAAKiG,EAAIjG,KAAK5D,EAErB4D,KAAK+/B,KAAO,GAAK//B,KAAK+/B,IAAM,KAC9B,MAAM,IAAI75B,MAAM,kBAGlBlG,KAAKlF,EAAI,EAAIkF,KAAK+/B,IAClB//B,KAAKggC,GAAK,EAAIhgC,KAAKlF,EACnBkF,KAAK0qB,GAAK,EAAI1qB,KAAK+/B,IACnB//B,KAAKigC,OAASjgC,KAAKlF,EAAI,GAAKkF,KAAK0qB,GACjC1qB,KAAKkW,GAAK,EAEV,IAAIgqB,EAAQlgC,KAAK6/B,KACbvyB,EAAQtN,KAAK2/B,IACjB3/B,KAAKmgC,GAAKlmC,KAAKkc,IAAI7I,GACnBtN,KAAKogC,GAAKnmC,KAAK4b,IAAIvI,GACnBtN,KAAKqgC,GAAKpmC,KAAKkc,IAAI+pB,GACnBlgC,KAAKsgC,GAAKrmC,KAAK4b,IAAIqqB,EACrB,EAwGE7pB,QAtGK,SAAiBvb,GACtBA,EAAEnC,GAAKqH,KAAKgN,MACZ,IAGIrU,EAAGC,EAkCH2nC,EAAIC,EArCJrrB,EAASlb,KAAK4b,IAAI/a,EAAElC,GACpBwc,EAASnb,KAAKkc,IAAIrb,EAAElC,GACpBy+B,EAASp9B,KAAKkc,IAAIrb,EAAEnC,GAExB,OAAQqH,KAAKq2B,MACX,KAAKA,GACHz9B,EAAIoH,KAAKywB,OAAStb,EAASnV,KAAKqwB,OAASjb,EAASiiB,EAClD,MACF,KAAKhB,GACHz9B,EAAIwc,EAASiiB,EACb,MACF,KAAKhB,GACHz9B,GAAKuc,EACL,MACF,KAAKkhB,GACHz9B,EAAIuc,EAMR,OAFAxc,GADAC,EAAIoH,KAAK+/B,KAAO//B,KAAKlF,EAAIlC,IACjBwc,EAASnb,KAAK4b,IAAI/a,EAAEnC,GAEpBqH,KAAKq2B,MACX,KAAKA,GACHz9B,GAAKoH,KAAKqwB,OAASlb,EAASnV,KAAKywB,OAASrb,EAASiiB,EACnD,MACF,KAAKhB,GACHz9B,GAAKuc,EACL,MACF,KAAKkhB,GACHz9B,IAAOwc,EAASiiB,EAChB,MACF,KAAKhB,GACHz9B,GAAKwc,EAASiiB,EAalB,OANAmJ,EAAK,IADLD,EAAK3nC,EAAIoH,KAAKmgC,GAAKxnC,EAAIqH,KAAKogC,IACbpgC,KAAKsgC,GAAKtgC,KAAK0qB,GAAK1qB,KAAKqgC,IACxC1nC,GAAKA,EAAIqH,KAAKmgC,GAAKvnC,EAAIoH,KAAKogC,IAAMpgC,KAAKqgC,GAAKG,EAC5C5nC,EAAI2nC,EAAKC,EAET1lC,EAAEnC,EAAIA,EAAIqH,KAAK5D,EACftB,EAAElC,EAAIA,EAAIoH,KAAK5D,EACRtB,CACT,EAuDE4b,QArDK,SAAiB5b,GACtBA,EAAEnC,GAAKqH,KAAK5D,EACZtB,EAAElC,GAAKoH,KAAK5D,EACZ,IAGIqkC,EAAIC,EAAIH,EAHRzhC,EAAI,CAAEnG,EAAGmC,EAAEnC,EAAGC,EAAGkC,EAAElC,GAIvB2nC,EAAK,GAAKvgC,KAAK+/B,IAAMjlC,EAAElC,EAAIoH,KAAKsgC,IAChCG,EAAKzgC,KAAK+/B,IAAMjlC,EAAEnC,EAAI4nC,EACtBG,EAAK1gC,KAAK+/B,IAAMjlC,EAAElC,EAAIoH,KAAKqgC,GAAKE,EAChCzlC,EAAEnC,EAAI8nC,EAAKzgC,KAAKmgC,GAAKO,EAAK1gC,KAAKogC,GAC/BtlC,EAAElC,EAAI8nC,EAAK1gC,KAAKmgC,GAAKM,EAAKzgC,KAAKogC,GAE/B,IAAI3R,EAAKnE,GAAMxvB,EAAEnC,EAAGmC,EAAElC,GACtB,GAAIqB,KAAKmE,IAAIqwB,GAAMnkB,EACjBxL,EAAEnG,EAAI,EACNmG,EAAElG,EAAIkC,EAAElC,MACH,CACL,IAAIi/B,EAAMC,EAIV,OAHAA,EAAO,EAAIrJ,EAAKA,EAAKzuB,KAAKigC,MAC1BnI,GAAQ93B,KAAKlF,EAAIb,KAAKqb,KAAKwiB,KAAU93B,KAAK+/B,IAAMtR,EAAKA,EAAKzuB,KAAK+/B,KAC/DlI,EAAO59B,KAAKqb,KAAK,EAAIwiB,EAAOA,GACpB93B,KAAKq2B,MACX,KAAKA,GACHv3B,EAAElG,EAAIqB,KAAKmwB,KAAKyN,EAAO73B,KAAKywB,OAAS31B,EAAElC,EAAIk/B,EAAO93B,KAAKqwB,OAAS5B,GAChE3zB,EAAElC,GAAKi/B,EAAO73B,KAAKywB,OAASx2B,KAAK4b,IAAI/W,EAAElG,IAAM61B,EAC7C3zB,EAAEnC,GAAKm/B,EAAO93B,KAAKqwB,OACnB,MACF,KAAKgG,GACHv3B,EAAElG,EAAIqB,KAAKmwB,KAAKtvB,EAAElC,EAAIk/B,EAAOrJ,GAC7B3zB,EAAElC,EAAIi/B,EAAOpJ,EACb3zB,EAAEnC,GAAKm/B,EACP,MACF,KAAKzB,GACHv3B,EAAElG,EAAIqB,KAAKmwB,KAAKyN,GAChB/8B,EAAElC,GAAKkC,EAAElC,EACT,MACF,KAAKy9B,GACHv3B,EAAElG,GAAKqB,KAAKmwB,KAAKyN,GAGrB/4B,EAAEnG,EAAIsB,KAAKijB,MAAMpiB,EAAEnC,EAAGmC,EAAElC,EAC1B,CAIA,OAFAkC,EAAEnC,EAAImG,EAAEnG,EAAIqH,KAAKgN,MACjBlS,EAAElC,EAAIkG,EAAElG,EACDkC,CACT,EAOE+b,MALiB,CAAC,qBAAsB,UCXnC,IACP,IACIZ,KAvJG,WAKH,GAJAjW,KAAK2gC,UAA4B,MAAf3gC,KAAK4gC,MAAgB,EAAI,EAC3C5gC,KAAKiG,EAAIwY,OAAOze,KAAKiG,GACrBjG,KAAK6gC,WAAa7gC,KAAKiG,EAAIjG,KAAK5D,EAE5B4D,KAAK6gC,YAAc,GAAK7gC,KAAK6gC,WAAa,KAC1C,MAAM,IAAI36B,MAMd,GAHAlG,KAAK8gC,SAAW,EAAM9gC,KAAK6gC,WAC3B7gC,KAAKykB,EAAIzkB,KAAK8gC,SAAW9gC,KAAK8gC,SAAW,EAEzB,IAAZ9gC,KAAKkW,GAAY,CACjB,IAAIqb,EAAS,EAAMvxB,KAAKkW,GACpB6qB,EAAU,EAAIxP,EAElBvxB,KAAKghC,SAAW/mC,KAAKqb,KAAKic,GAC1BvxB,KAAKihC,UAAY1P,EACjBvxB,KAAKkhC,cAAgBH,EAErB/gC,KAAKmhC,MAAQ,SACjB,MACInhC,KAAKghC,SAAW,EAChBhhC,KAAKihC,UAAY,EACjBjhC,KAAKkhC,cAAgB,EAErBlhC,KAAKmhC,MAAQ,SAGZnhC,KAAK0tB,QACN1tB,KAAK0tB,MAAQ,+BAErB,EAwHIrX,QAtHJ,SAAiBvb,GACb,IAEI6xB,EAAKyU,EAAKC,EAAKC,EAFfhrB,EAAMxb,EAAEnC,EACR4d,EAAMzb,EAAElC,EAIZ,GAFA0d,GAAYtW,KAAKgN,MAEE,YAAfhN,KAAKmhC,MAAqB,CAC1B5qB,EAAMtc,KAAK2b,KAAK5V,KAAKihC,UAAYhnC,KAAK+D,IAAIuY,IAC1C,IAAIzX,EAAIkB,KAAKghC,SAAW1W,GAAMtqB,KAAKghC,SAAW/mC,KAAKkc,IAAII,GAAMtc,KAAK4b,IAAIU,IAMtE,GAJA6qB,EAAMtiC,EAAI7E,KAAKkc,IAAIG,GAAOrc,KAAKkc,IAAII,GACnC8qB,EAAMviC,EAAI7E,KAAK4b,IAAIS,GAAOrc,KAAKkc,IAAII,GACnC+qB,EAAMxiC,EAAI7E,KAAK4b,IAAIU,IAEbvW,KAAK8gC,SAAWM,GAAOA,EAAMC,EAAMA,EAAMC,EAAMA,EAAMthC,KAAKkhC,cAAiB,EAG7E,OAFApmC,EAAEnC,EAAI8lB,OAAOjd,IACb1G,EAAElC,EAAI6lB,OAAOjd,IACN1G,EAGX6xB,EAAM3sB,KAAK8gC,SAAWM,EAClBphC,KAAK2gC,WACL7lC,EAAEnC,EAAIqH,KAAK6gC,WAAa5mC,KAAK2b,KAAKyrB,EAAM/W,GAAMgX,EAAK3U,IACnD7xB,EAAElC,EAAIoH,KAAK6gC,WAAa5mC,KAAK2b,KAAK0rB,EAAM3U,KAExC7xB,EAAEnC,EAAIqH,KAAK6gC,WAAa5mC,KAAK2b,KAAKyrB,EAAM1U,GACxC7xB,EAAElC,EAAIoH,KAAK6gC,WAAa5mC,KAAK2b,KAAK0rB,EAAMhX,GAAM+W,EAAK1U,IAE3D,KAA0B,WAAf3sB,KAAKmhC,QACZxU,EAAM1yB,KAAKkc,IAAII,GACf6qB,EAAMnnC,KAAKkc,IAAIG,GAAOqW,EACtB0U,EAAMpnC,KAAK4b,IAAIS,GAAOqW,EACtB2U,EAAMrnC,KAAK4b,IAAIU,GACfoW,EAAM3sB,KAAK8gC,SAAWM,EAElBphC,KAAK2gC,WACL7lC,EAAEnC,EAAIqH,KAAK6gC,WAAa5mC,KAAK2b,KAAKyrB,EAAM/W,GAAMgX,EAAK3U,IACnD7xB,EAAElC,EAAIoH,KAAK6gC,WAAa5mC,KAAK2b,KAAK0rB,EAAM3U,KAExC7xB,EAAEnC,EAAIqH,KAAK6gC,WAAa5mC,KAAK2b,KAAKyrB,EAAM1U,GACxC7xB,EAAElC,EAAIoH,KAAK6gC,WAAa5mC,KAAK2b,KAAK0rB,EAAMhX,GAAM+W,EAAK1U,MAK3D,OAFA7xB,EAAEnC,EAAImC,EAAEnC,EAAIqH,KAAK5D,EACjBtB,EAAElC,EAAIkC,EAAElC,EAAIoH,KAAK5D,EACVtB,CACX,EAyEI4b,QAvEJ,SAAiB5b,GACb,IAGIsB,EAAGC,EAAGklC,EAAKzzB,EAHXszB,GAAO,EACPC,EAAM,EACNC,EAAM,EAMV,GAHAxmC,EAAEnC,EAAImC,EAAEnC,EAAIqH,KAAK5D,EACjBtB,EAAElC,EAAIkC,EAAElC,EAAIoH,KAAK5D,EAEE,YAAf4D,KAAKmhC,MAAqB,CACtBnhC,KAAK2gC,WACLW,EAAMrnC,KAAK+D,IAAIlD,EAAElC,EAAIoH,KAAK6gC,YAC1BQ,EAAMpnC,KAAK+D,IAAIlD,EAAEnC,EAAIqH,KAAK6gC,YAAcvW,GAAM,EAAKgX,KAEnDD,EAAMpnC,KAAK+D,IAAIlD,EAAEnC,EAAIqH,KAAK6gC,YAC1BS,EAAMrnC,KAAK+D,IAAIlD,EAAElC,EAAIoH,KAAK6gC,YAAcvW,GAAM,EAAK+W,IAGvD,IAAIG,EAAOF,EAAMthC,KAAKghC,SAKtB,GAJA5kC,EAAIilC,EAAMA,EAAMG,EAAOA,EAAOJ,EAAMA,GAEpCG,GADAllC,EAAI,EAAI2D,KAAK8gC,SAAWM,GACb/kC,EAAK,EAAID,EAAI4D,KAAKykB,GAEnB,EAGN,OAFA3pB,EAAEnC,EAAI8lB,OAAOjd,IACb1G,EAAElC,EAAI6lB,OAAOjd,IACN1G,EAGXgT,IAAMzR,EAAIpC,KAAKqb,KAAKisB,KAAS,EAAMnlC,GACnCglC,EAAMphC,KAAK8gC,SAAWhzB,EAAIszB,EAC1BC,GAAOvzB,EACPwzB,GAAOxzB,EAEPhT,EAAEnC,EAAIsB,KAAKijB,MAAMmkB,EAAKD,GACtBtmC,EAAElC,EAAIqB,KAAK2b,KAAK0rB,EAAMrnC,KAAKkc,IAAIrb,EAAEnC,GAAKyoC,GACtCtmC,EAAElC,EAAIqB,KAAK2b,KAAK5V,KAAKkhC,cAAgBjnC,KAAK+D,IAAIlD,EAAElC,GACpD,MAAO,GAAmB,WAAfoH,KAAKmhC,MAAoB,CAYhC,GAXInhC,KAAK2gC,WACLW,EAAMrnC,KAAK+D,IAAIlD,EAAElC,EAAIoH,KAAK6gC,YAC1BQ,EAAMpnC,KAAK+D,IAAIlD,EAAEnC,EAAIqH,KAAK6gC,YAAc5mC,KAAKqb,KAAK,EAAMgsB,EAAMA,KAE9DD,EAAMpnC,KAAK+D,IAAIlD,EAAEnC,EAAIqH,KAAK6gC,YAC1BS,EAAMrnC,KAAK+D,IAAIlD,EAAElC,EAAIoH,KAAK6gC,YAAc5mC,KAAKqb,KAAK,EAAM+rB,EAAMA,IAGlEjlC,EAAIilC,EAAMA,EAAMC,EAAMA,EAAMF,EAAMA,GAElCG,GADAllC,EAAI,EAAI2D,KAAK8gC,SAAWM,GACb/kC,EAAK,EAAID,EAAI4D,KAAKykB,GACnB,EAGN,OAFA3pB,EAAEnC,EAAI8lB,OAAOjd,IACb1G,EAAElC,EAAI6lB,OAAOjd,IACN1G,EAGXgT,IAAMzR,EAAIpC,KAAKqb,KAAKisB,KAAS,EAAMnlC,GACnCglC,EAAMphC,KAAK8gC,SAAWhzB,EAAIszB,EAC1BC,GAAOvzB,EACPwzB,GAAOxzB,EAEPhT,EAAEnC,EAAIsB,KAAKijB,MAAMmkB,EAAKD,GACtBtmC,EAAElC,EAAIqB,KAAK2b,KAAK0rB,EAAMrnC,KAAKkc,IAAIrb,EAAEnC,GAAKyoC,EAC1C,CAEA,OADAtmC,EAAEnC,EAAImC,EAAEnC,EAAIqH,KAAKgN,MACVlS,CACX,EAOI+b,MALe,CAAC,+BAAgC,0BAA2B,SC7I/E,GAAM4qB,aAAe,QACrB,GAAMC,KAAOA,GACb,GAAM5tB,MAAQ,IAAI,GAAM4tB,KAAK,SAC7B,GAAM9Z,MAAQ,GACd,GAAM7G,QAAU,GAChB,GAAM3N,KAAO,EACb,GAAMuuB,QlEJS,SAAiB32B,EAAK5S,GACnC,IAAI6gB,EAAO,IAAI2oB,SAASxpC,GACpBmhB,EA4CN,SAA4BN,GAC1B,IAAI4oB,EAAU5oB,EAAKgB,SAAS,GAAG,GAC/B,GAAgB,KAAZ4nB,EACF,OAAO,EAETA,EAAU5oB,EAAKgB,SAAS,GAAG,GACX,KAAZ4nB,GACFhuB,QAAQgU,KAAK,qEAEf,OAAO,CACT,CAtDuBia,CAAmB7oB,GACpC8oB,EAuDN,SAAoB9oB,EAAMM,GACxB,MAAO,CACLsoB,QAAS5oB,EAAKgB,SAAS,EAAGV,GAC1ByoB,eAAgB/oB,EAAKgB,SAAS,GAAIV,GAClC0oB,UAAWhpB,EAAKgB,SAAS,GAAIV,GAC7B2oB,UAAWlpB,GAAaC,EAAM,GAAI,IAAQjN,OAC1Cm2B,kBAAmBlpB,EAAKS,WAAW,IAAKH,GACxC6oB,kBAAmBnpB,EAAKS,WAAW,IAAKH,GACxC8oB,gBAAiBppB,EAAKS,WAAW,IAAKH,GACtC+oB,gBAAiBrpB,EAAKS,WAAW,IAAKH,GAE1C,CAlEegpB,CAAWtpB,EAAMM,GAC1BwoB,EAAOE,UAAY,GACrBpuB,QAAQ9R,IAAI,uFAEd,IAAI6c,EAoEN,SAAsB3F,EAAM8oB,EAAQxoB,GAGlC,IAFA,IAAIipB,EAAa,IACbjqB,EAAQ,GACHjf,EAAI,EAAGA,EAAIyoC,EAAOE,UAAW3oC,IAAK,CACzC,IAAImpC,EAAYnpB,GAAeL,EAAMupB,EAAYjpB,GAC7CJ,EAAQe,GAAcjB,EAAMupB,EAAYC,EAAWlpB,GACnDmpB,EAAiBzoC,KAAKorB,MACxB,GAAKod,EAAU5oB,eAAiB4oB,EAAU7oB,gBAAkB6oB,EAAU1oB,mBACpE4oB,EAAiB1oC,KAAKorB,MACxB,GAAKod,EAAU9oB,cAAgB8oB,EAAUhpB,eAAiBgpB,EAAU3oB,kBAEtEvB,EAAM5e,KAAK,CACTolB,GAAI,CAACjG,GAAiB2pB,EAAU7oB,gBAAiBd,GAAiB2pB,EAAUhpB,gBAC5EqF,IAAK,CAAChG,GAAiB2pB,EAAU1oB,mBAAoBjB,GAAiB2pB,EAAU3oB,mBAChFkF,IAAK,CAAC0jB,EAAgBC,GACtBC,MAAOH,EAAUzoB,cACjB4F,IAAK1G,GAASC,IAElB,CACA,OAAOZ,CACT,CAxFiBsqB,CAAa5pB,EAAM8oB,EAAQxoB,GACtCooB,EAAU,CAACI,OAAQA,EAAQnjB,SAAUA,GAEzC,OADApG,GAAexN,GAAO22B,EACfA,CACT,EkENA,GAAM/gB,UAAYA,GAClB,GAAM4B,KAAOA,GACb,GAAMsgB,QAAU,cCUD,SAASC,GACtBA,EAAMrB,KAAKzmB,YAAYlE,IAAI2U,IAC3BqX,EAAMrB,KAAKzmB,YAAYlE,IAAI+V,IAC3BiW,EAAMrB,KAAKzmB,YAAYlE,IAAIkM,IAC3B8f,EAAMrB,KAAKzmB,YAAYlE,IAAIisB,IAC3BD,EAAMrB,KAAKzmB,YAAYlE,IAAIksB,IAC3BF,EAAMrB,KAAKzmB,YAAYlE,IAAImsB,IAC3BH,EAAMrB,KAAKzmB,YAAYlE,IAAIosB,IAC3BJ,EAAMrB,KAAKzmB,YAAYlE,IAAIqsB,IAC3BL,EAAMrB,KAAKzmB,YAAYlE,IAAIssB,IAC3BN,EAAMrB,KAAKzmB,YAAYlE,IAAIusB,IAC3BP,EAAMrB,KAAKzmB,YAAYlE,IAAIwsB,IAC3BR,EAAMrB,KAAKzmB,YAAYlE,IAAIysB,IAC3BT,EAAMrB,KAAKzmB,YAAYlE,IAAI0sB,IAC3BV,EAAMrB,KAAKzmB,YAAYlE,IAAI2sB,IAC3BX,EAAMrB,KAAKzmB,YAAYlE,IAAI4sB,IAC3BZ,EAAMrB,KAAKzmB,YAAYlE,IAAI6sB,IAC3Bb,EAAMrB,KAAKzmB,YAAYlE,IAAI8sB,IAC3Bd,EAAMrB,KAAKzmB,YAAYlE,IAAI+sB,IAC3Bf,EAAMrB,KAAKzmB,YAAYlE,IAAIgtB,IAC3BhB,EAAMrB,KAAKzmB,YAAYlE,IAAIitB,IAC3BjB,EAAMrB,KAAKzmB,YAAYlE,IAAIktB,IAC3BlB,EAAMrB,KAAKzmB,YAAYlE,IAAImtB,IAC3BnB,EAAMrB,KAAKzmB,YAAYlE,IAAIotB,IAC3BpB,EAAMrB,KAAKzmB,YAAYlE,IAAIqtB,IAC3BrB,EAAMrB,KAAKzmB,YAAYlE,IAAIstB,IAC3BtB,EAAMrB,KAAKzmB,YAAYlE,IAAIutB,IAC3BvB,EAAMrB,KAAKzmB,YAAYlE,IAAIwtB,IAC3BxB,EAAMrB,KAAKzmB,YAAYlE,IAAIytB,IAC3BzB,EAAMrB,KAAKzmB,YAAYlE,IAAI0tB,GAC7B,CDvCA,CAAoB,IACpB,S,oBErBoExsC,EAAOC,QAAwF,WAAW,aAAa,SAASmnB,EAAEA,EAAEvgB,EAAEvD,EAAEa,EAAE6J,IAAI,SAASoZ,EAAEjiB,EAAE0B,EAAEvD,EAAEa,EAAE6J,GAAG,KAAK7J,EAAEb,GAAG,CAAC,GAAGa,EAAEb,EAAE,IAAI,CAAC,IAAImpC,EAAEtoC,EAAEb,EAAE,EAAEgG,EAAEzC,EAAEvD,EAAE,EAAEyK,EAAE/L,KAAK8H,IAAI2iC,GAAGza,EAAE,GAAGhwB,KAAK0c,IAAI,EAAE3Q,EAAE,GAAGusB,EAAE,GAAGt4B,KAAKqb,KAAKtP,EAAEikB,GAAGya,EAAEza,GAAGya,IAAInjC,EAAEmjC,EAAE,EAAE,GAAG,EAAE,GAA+ErlB,EAAEjiB,EAAE0B,EAA9E7E,KAAKC,IAAIqB,EAAEtB,KAAK6H,MAAMhD,EAAEyC,EAAE0oB,EAAEya,EAAEnS,IAAMt4B,KAAKwF,IAAIrD,EAAEnC,KAAK6H,MAAMhD,GAAG4lC,EAAEnjC,GAAG0oB,EAAEya,EAAEnS,IAActsB,EAAE,CAAC,IAAInL,EAAEsC,EAAE0B,GAAG8B,EAAErF,EAAE5C,EAAEyD,EAAE,IAAI9C,EAAE8D,EAAE7B,EAAEuD,GAAGmH,EAAE7I,EAAEhB,GAAGtB,GAAG,GAAGxB,EAAE8D,EAAE7B,EAAEa,GAAGwE,EAAEjI,GAAG,CAAC,IAAIW,EAAE8D,EAAEwD,EAAEjI,GAAGiI,IAAIjI,IAAIsN,EAAE7I,EAAEwD,GAAG9F,GAAG,GAAG8F,IAAI,KAAKqF,EAAE7I,EAAEzE,GAAGmC,GAAG,GAAGnC,GAAG,CAAC,IAAIsN,EAAE7I,EAAE7B,GAAGT,GAAGxB,EAAE8D,EAAE7B,EAAE5C,GAAGW,EAAE8D,IAAIzE,EAAEyD,GAAGzD,GAAGmG,IAAIvD,EAAE5C,EAAE,GAAGmG,GAAGnG,IAAIyD,EAAEzD,EAAE,EAAE,CAAC,CAA9Z,CAAga0mB,EAAEvgB,EAAEvD,GAAG,EAAEa,GAAGijB,EAAEtmB,OAAO,EAAEkN,GAAG7I,EAAE,CAAC,SAAS9D,EAAE+lB,EAAE/lB,EAAE8D,GAAG,IAAI0B,EAAEugB,EAAE/lB,GAAG+lB,EAAE/lB,GAAG+lB,EAAEjiB,GAAGiiB,EAAEjiB,GAAG0B,CAAC,CAAC,SAAS1B,EAAEiiB,EAAE/lB,GAAG,OAAO+lB,EAAE/lB,GAAG,EAAE+lB,EAAE/lB,EAAE,EAAE,CAAC,CAAC,IAAIwF,EAAE,SAASugB,QAAG,IAASA,IAAIA,EAAE,GAAGrf,KAAK2kC,YAAY1qC,KAAKC,IAAI,EAAEmlB,GAAGrf,KAAK4kC,YAAY3qC,KAAKC,IAAI,EAAED,KAAK4qC,KAAK,GAAG7kC,KAAK2kC,cAAc3kC,KAAK8kC,OAAO,EAAE,SAASvpC,EAAE8jB,EAAE/lB,EAAE8D,GAAG,IAAIA,EAAE,OAAO9D,EAAEyV,QAAQsQ,GAAG,IAAI,IAAIvgB,EAAE,EAAEA,EAAExF,EAAEP,OAAO+F,IAAI,GAAG1B,EAAEiiB,EAAE/lB,EAAEwF,IAAI,OAAOA,EAAE,OAAO,CAAC,CAAC,SAAS1C,EAAEijB,EAAE/lB,GAAG2M,EAAEoZ,EAAE,EAAEA,EAAE0lB,SAAShsC,OAAOO,EAAE+lB,EAAE,CAAC,SAASpZ,EAAEoZ,EAAE/lB,EAAE8D,EAAE0B,EAAEvD,GAAGA,IAAIA,EAAET,EAAE,OAAOS,EAAEhD,KAAK,IAAIgD,EAAE/C,KAAK,IAAI+C,EAAE9C,MAAK,IAAK8C,EAAE7C,MAAK,IAAK,IAAI,IAAI0D,EAAE9C,EAAE8C,EAAEgB,EAAEhB,IAAI,CAAC,IAAI6J,EAAEoZ,EAAE0lB,SAAS3oC,GAAGsoC,EAAEnpC,EAAE8jB,EAAE2lB,KAAKlmC,EAAEmH,GAAGA,EAAE,CAAC,OAAO1K,CAAC,CAAC,SAASmpC,EAAErlB,EAAE/lB,GAAG,OAAO+lB,EAAE9mB,KAAK0B,KAAKwF,IAAI4f,EAAE9mB,KAAKe,EAAEf,MAAM8mB,EAAE7mB,KAAKyB,KAAKwF,IAAI4f,EAAE7mB,KAAKc,EAAEd,MAAM6mB,EAAE5mB,KAAKwB,KAAKC,IAAImlB,EAAE5mB,KAAKa,EAAEb,MAAM4mB,EAAE3mB,KAAKuB,KAAKC,IAAImlB,EAAE3mB,KAAKY,EAAEZ,MAAM2mB,CAAC,CAAC,SAAS9d,EAAE8d,EAAE/lB,GAAG,OAAO+lB,EAAE9mB,KAAKe,EAAEf,IAAI,CAAC,SAASyN,EAAEqZ,EAAE/lB,GAAG,OAAO+lB,EAAE7mB,KAAKc,EAAEd,IAAI,CAAC,SAASyxB,EAAE5K,GAAG,OAAOA,EAAE5mB,KAAK4mB,EAAE9mB,OAAO8mB,EAAE3mB,KAAK2mB,EAAE7mB,KAAK,CAAC,SAAS+5B,EAAElT,GAAG,OAAOA,EAAE5mB,KAAK4mB,EAAE9mB,MAAM8mB,EAAE3mB,KAAK2mB,EAAE7mB,KAAK,CAAC,SAASmF,EAAE0hB,EAAE/lB,GAAG,OAAO+lB,EAAE9mB,MAAMe,EAAEf,MAAM8mB,EAAE7mB,MAAMc,EAAEd,MAAMc,EAAEb,MAAM4mB,EAAE5mB,MAAMa,EAAEZ,MAAM2mB,EAAE3mB,IAAI,CAAC,SAAS4D,EAAE+iB,EAAE/lB,GAAG,OAAOA,EAAEf,MAAM8mB,EAAE5mB,MAAMa,EAAEd,MAAM6mB,EAAE3mB,MAAMY,EAAEb,MAAM4mB,EAAE9mB,MAAMe,EAAEZ,MAAM2mB,EAAE7mB,IAAI,CAAC,SAASsC,EAAEukB,GAAG,MAAM,CAAC0lB,SAAS1lB,EAAE4lB,OAAO,EAAED,MAAK,EAAGzsC,KAAK,IAAIC,KAAK,IAAIC,MAAK,IAAKC,MAAK,IAAK,CAAC,SAASkI,EAAEtH,EAAE8D,EAAE0B,EAAEvD,EAAEa,GAAG,IAAI,IAAI6J,EAAE,CAAC7I,EAAE0B,GAAGmH,EAAElN,QAAQ,MAAM+F,EAAEmH,EAAEuL,QAAQpU,EAAE6I,EAAEuL,QAAQjW,GAAG,CAAC,IAAImpC,EAAEtnC,EAAEnD,KAAK4qC,MAAM/lC,EAAE1B,GAAG7B,EAAE,GAAGA,EAAE8jB,EAAE/lB,EAAEorC,EAAEtnC,EAAE0B,EAAE1C,GAAG6J,EAAEtM,KAAKyD,EAAEsnC,EAAEA,EAAE5lC,EAAE,CAAC,CAAC,OAAOA,EAAEqG,UAAU+/B,IAAI,WAAW,OAAOllC,KAAKmlC,KAAKnlC,KAAK5H,KAAK,GAAG,EAAE0G,EAAEqG,UAAUigC,OAAO,SAAS/lB,GAAG,IAAI/lB,EAAE0G,KAAK5H,KAAKgF,EAAE,GAAG,IAAId,EAAE+iB,EAAE/lB,GAAG,OAAO8D,EAAE,IAAI,IAAI0B,EAAEkB,KAAKqlC,OAAO9pC,EAAE,GAAGjC,GAAG,CAAC,IAAI,IAAI8C,EAAE,EAAEA,EAAE9C,EAAEyrC,SAAShsC,OAAOqD,IAAI,CAAC,IAAI6J,EAAE3M,EAAEyrC,SAAS3oC,GAAGsoC,EAAEprC,EAAE0rC,KAAKlmC,EAAEmH,GAAGA,EAAE3J,EAAE+iB,EAAEqlB,KAAKprC,EAAE0rC,KAAK5nC,EAAEzD,KAAKsM,GAAGtI,EAAE0hB,EAAEqlB,GAAG1kC,KAAKmlC,KAAKl/B,EAAE7I,GAAG7B,EAAE5B,KAAKsM,GAAG,CAAC3M,EAAEiC,EAAEiW,KAAK,CAAC,OAAOpU,CAAC,EAAE0B,EAAEqG,UAAUmgC,SAAS,SAASjmB,GAAG,IAAI/lB,EAAE0G,KAAK5H,KAAK,IAAIkE,EAAE+iB,EAAE/lB,GAAG,OAAM,EAAG,IAAI,IAAI8D,EAAE,GAAG9D,GAAG,CAAC,IAAI,IAAIwF,EAAE,EAAEA,EAAExF,EAAEyrC,SAAShsC,OAAO+F,IAAI,CAAC,IAAIvD,EAAEjC,EAAEyrC,SAASjmC,GAAG1C,EAAE9C,EAAE0rC,KAAKhlC,KAAKqlC,OAAO9pC,GAAGA,EAAE,GAAGe,EAAE+iB,EAAEjjB,GAAG,CAAC,GAAG9C,EAAE0rC,MAAMrnC,EAAE0hB,EAAEjjB,GAAG,OAAM,EAAGgB,EAAEzD,KAAK4B,EAAE,CAAC,CAACjC,EAAE8D,EAAEoU,KAAK,CAAC,OAAM,CAAE,EAAE1S,EAAEqG,UAAUogC,KAAK,SAASlmB,GAAG,IAAIA,IAAIA,EAAEtmB,OAAO,OAAOiH,KAAK,GAAGqf,EAAEtmB,OAAOiH,KAAK4kC,YAAY,CAAC,IAAI,IAAItrC,EAAE,EAAEA,EAAE+lB,EAAEtmB,OAAOO,IAAI0G,KAAKwlC,OAAOnmB,EAAE/lB,IAAI,OAAO0G,IAAI,CAAC,IAAI5C,EAAE4C,KAAKylC,OAAOpmB,EAAE3M,QAAQ,EAAE2M,EAAEtmB,OAAO,EAAE,GAAG,GAAGiH,KAAK5H,KAAK2sC,SAAShsC,OAAO,GAAGiH,KAAK5H,KAAK6sC,SAAS7nC,EAAE6nC,OAAOjlC,KAAK0lC,WAAW1lC,KAAK5H,KAAKgF,OAAO,CAAC,GAAG4C,KAAK5H,KAAK6sC,OAAO7nC,EAAE6nC,OAAO,CAAC,IAAInmC,EAAEkB,KAAK5H,KAAK4H,KAAK5H,KAAKgF,EAAEA,EAAE0B,CAAC,CAACkB,KAAK2lC,QAAQvoC,EAAE4C,KAAK5H,KAAK6sC,OAAO7nC,EAAE6nC,OAAO,GAAE,EAAG,MAAMjlC,KAAK5H,KAAKgF,EAAE,OAAO4C,IAAI,EAAElB,EAAEqG,UAAUqgC,OAAO,SAASnmB,GAAG,OAAOA,GAAGrf,KAAK2lC,QAAQtmB,EAAErf,KAAK5H,KAAK6sC,OAAO,GAAGjlC,IAAI,EAAElB,EAAEqG,UAAU2/B,MAAM,WAAW,OAAO9kC,KAAK5H,KAAK0C,EAAE,IAAIkF,IAAI,EAAElB,EAAEqG,UAAUygC,OAAO,SAASvmB,EAAE/lB,GAAG,IAAI+lB,EAAE,OAAOrf,KAAK,IAAI,IAAI5C,EAAE0B,EAAE1C,EAAE6J,EAAEjG,KAAK5H,KAAKssC,EAAE1kC,KAAKqlC,OAAOhmB,GAAG9d,EAAE,GAAGyE,EAAE,GAAGC,GAAG1E,EAAExI,QAAQ,CAAC,GAAGkN,IAAIA,EAAE1E,EAAEiQ,MAAM1S,EAAEyC,EAAEA,EAAExI,OAAO,GAAGqE,EAAE4I,EAAEwL,MAAMpV,GAAE,GAAI6J,EAAE++B,KAAK,CAAC,IAAI/a,EAAE1uB,EAAE8jB,EAAEpZ,EAAE8+B,SAASzrC,GAAG,IAAI,IAAI2wB,EAAE,OAAOhkB,EAAE8+B,SAASrjB,OAAOuI,EAAE,GAAG1oB,EAAE5H,KAAKsM,GAAGjG,KAAK6lC,UAAUtkC,GAAGvB,IAAI,CAAC5D,GAAG6J,EAAE++B,OAAOrnC,EAAEsI,EAAEy+B,GAAG5lC,GAAG1B,IAAI6I,EAAEnH,EAAEimC,SAAS3nC,GAAGhB,GAAE,GAAI6J,EAAE,MAAM1E,EAAE5H,KAAKsM,GAAGD,EAAErM,KAAKyD,GAAGA,EAAE,EAAE0B,EAAEmH,EAAEA,EAAEA,EAAE8+B,SAAS,GAAG,CAAC,OAAO/kC,IAAI,EAAElB,EAAEqG,UAAUkgC,OAAO,SAAShmB,GAAG,OAAOA,CAAC,EAAEvgB,EAAEqG,UAAU2gC,YAAY,SAASzmB,EAAE/lB,GAAG,OAAO+lB,EAAE9mB,KAAKe,EAAEf,IAAI,EAAEuG,EAAEqG,UAAU4gC,YAAY,SAAS1mB,EAAE/lB,GAAG,OAAO+lB,EAAE7mB,KAAKc,EAAEd,IAAI,EAAEsG,EAAEqG,UAAU6gC,OAAO,WAAW,OAAOhmC,KAAK5H,IAAI,EAAE0G,EAAEqG,UAAU8gC,SAAS,SAAS5mB,GAAG,OAAOrf,KAAK5H,KAAKinB,EAAErf,IAAI,EAAElB,EAAEqG,UAAUggC,KAAK,SAAS9lB,EAAE/lB,GAAG,IAAI,IAAI8D,EAAE,GAAGiiB,GAAGA,EAAE2lB,KAAK1rC,EAAEK,KAAK8Z,MAAMna,EAAE+lB,EAAE0lB,UAAU3nC,EAAEzD,KAAK8Z,MAAMrW,EAAEiiB,EAAE0lB,UAAU1lB,EAAEjiB,EAAEoU,MAAM,OAAOlY,CAAC,EAAEwF,EAAEqG,UAAUsgC,OAAO,SAASpmB,EAAE/lB,EAAE8D,EAAE0B,GAAG,IAAIvD,EAAE0K,EAAE7I,EAAE9D,EAAE,EAAEorC,EAAE1kC,KAAK2kC,YAAY,GAAG1+B,GAAGy+B,EAAE,OAAOtoC,EAAEb,EAAET,EAAEukB,EAAE3M,MAAMpZ,EAAE8D,EAAE,IAAI4C,KAAKqlC,QAAQ9pC,EAAEuD,IAAIA,EAAE7E,KAAK4qC,KAAK5qC,KAAK8H,IAAIkE,GAAGhM,KAAK8H,IAAI2iC,IAAIA,EAAEzqC,KAAK4qC,KAAK5+B,EAAEhM,KAAKwH,IAAIijC,EAAE5lC,EAAE,MAAMvD,EAAET,EAAE,KAAKkqC,MAAK,EAAGzpC,EAAE0pC,OAAOnmC,EAAE,IAAIyC,EAAEtH,KAAK4qC,KAAK5+B,EAAEy+B,GAAG1+B,EAAEzE,EAAEtH,KAAK4qC,KAAK5qC,KAAKqb,KAAKovB,IAAI9jC,EAAEye,EAAE/lB,EAAE8D,EAAE4I,EAAEhG,KAAK8lC,aAAa,IAAI,IAAI7b,EAAE3wB,EAAE2wB,GAAG7sB,EAAE6sB,GAAGjkB,EAAE,CAAC,IAAIusB,EAAEt4B,KAAKwF,IAAIwqB,EAAEjkB,EAAE,EAAE5I,GAAGwD,EAAEye,EAAE4K,EAAEsI,EAAEhxB,EAAEvB,KAAK+lC,aAAa,IAAI,IAAIpoC,EAAEssB,EAAEtsB,GAAG40B,EAAE50B,GAAG4D,EAAE,CAAC,IAAIjF,EAAErC,KAAKwF,IAAI9B,EAAE4D,EAAE,EAAEgxB,GAAGh3B,EAAEwpC,SAASprC,KAAKqG,KAAKylC,OAAOpmB,EAAE1hB,EAAErB,EAAEwC,EAAE,GAAG,CAAC,CAAC,OAAO1C,EAAEb,EAAEyE,KAAKqlC,QAAQ9pC,CAAC,EAAEuD,EAAEqG,UAAU+gC,eAAe,SAAS7mB,EAAE/lB,EAAE8D,EAAE0B,GAAG,KAAKA,EAAEnF,KAAKL,IAAIA,EAAE0rC,MAAMlmC,EAAE/F,OAAO,IAAIqE,GAAG,CAAC,IAAI,IAAI7B,EAAE,IAAIa,EAAE,IAAI6J,OAAE,EAAOy+B,EAAE,EAAEA,EAAEprC,EAAEyrC,SAAShsC,OAAO2rC,IAAI,CAAC,IAAInjC,EAAEjI,EAAEyrC,SAASL,GAAG1+B,EAAEikB,EAAE1oB,GAAGgxB,GAAG50B,EAAE0hB,EAAE/iB,EAAEiF,GAAGtH,KAAKC,IAAIoC,EAAE7D,KAAKkF,EAAElF,MAAMwB,KAAKwF,IAAInD,EAAE/D,KAAKoF,EAAEpF,QAAQ0B,KAAKC,IAAIoC,EAAE5D,KAAKiF,EAAEjF,MAAMuB,KAAKwF,IAAInD,EAAE9D,KAAKmF,EAAEnF,OAAOwN,GAAGusB,EAAEn2B,GAAGA,EAAEm2B,EAAEh3B,EAAEyK,EAAEzK,EAAEyK,EAAEzK,EAAE0K,EAAE1E,GAAGgxB,IAAIn2B,GAAG4J,EAAEzK,IAAIA,EAAEyK,EAAEC,EAAE1E,EAAE,CAACjI,EAAE2M,GAAG3M,EAAEyrC,SAAS,EAAE,CAAC,IAAIpnC,EAAErB,EAAE,OAAOhD,CAAC,EAAEwF,EAAEqG,UAAUwgC,QAAQ,SAAStmB,EAAE/lB,EAAE8D,GAAG,IAAI0B,EAAE1B,EAAEiiB,EAAErf,KAAKqlC,OAAOhmB,GAAG9jB,EAAE,GAAGa,EAAE4D,KAAKkmC,eAAepnC,EAAEkB,KAAK5H,KAAKkB,EAAEiC,GAAG,IAAIa,EAAE2oC,SAASprC,KAAK0lB,GAAGqlB,EAAEtoC,EAAE0C,GAAGxF,GAAG,GAAGiC,EAAEjC,GAAGyrC,SAAShsC,OAAOiH,KAAK2kC,aAAa3kC,KAAKmmC,OAAO5qC,EAAEjC,GAAGA,IAAI0G,KAAKomC,oBAAoBtnC,EAAEvD,EAAEjC,EAAE,EAAEwF,EAAEqG,UAAUghC,OAAO,SAAS9mB,EAAE/lB,GAAG,IAAI8D,EAAEiiB,EAAE/lB,GAAGwF,EAAE1B,EAAE2nC,SAAShsC,OAAOwC,EAAEyE,KAAK4kC,YAAY5kC,KAAKqmC,iBAAiBjpC,EAAE7B,EAAEuD,GAAG,IAAImH,EAAEjG,KAAKsmC,kBAAkBlpC,EAAE7B,EAAEuD,GAAG4lC,EAAE5pC,EAAEsC,EAAE2nC,SAASrjB,OAAOzb,EAAE7I,EAAE2nC,SAAShsC,OAAOkN,IAAIy+B,EAAEO,OAAO7nC,EAAE6nC,OAAOP,EAAEM,KAAK5nC,EAAE4nC,KAAK5oC,EAAEgB,EAAE4C,KAAKqlC,QAAQjpC,EAAEsoC,EAAE1kC,KAAKqlC,QAAQ/rC,EAAE+lB,EAAE/lB,EAAE,GAAGyrC,SAASprC,KAAK+qC,GAAG1kC,KAAK0lC,WAAWtoC,EAAEsnC,EAAE,EAAE5lC,EAAEqG,UAAUugC,WAAW,SAASrmB,EAAE/lB,GAAG0G,KAAK5H,KAAK0C,EAAE,CAACukB,EAAE/lB,IAAI0G,KAAK5H,KAAK6sC,OAAO5lB,EAAE4lB,OAAO,EAAEjlC,KAAK5H,KAAK4sC,MAAK,EAAG5oC,EAAE4D,KAAK5H,KAAK4H,KAAKqlC,OAAO,EAAEvmC,EAAEqG,UAAUmhC,kBAAkB,SAASjnB,EAAE/lB,EAAE8D,GAAG,IAAI,IAAI0B,EAAEvD,EAAEa,EAAEsoC,EAAEnjC,EAAEyE,EAAEusB,EAAE50B,EAAE,IAAIrB,EAAE,IAAIxB,EAAExB,EAAEwB,GAAGsC,EAAE9D,EAAEwB,IAAI,CAAC,IAAI8F,EAAEqF,EAAEoZ,EAAE,EAAEvkB,EAAEkF,KAAKqlC,QAAQ1sC,EAAEsN,EAAEoZ,EAAEvkB,EAAEsC,EAAE4C,KAAKqlC,QAAQt5B,GAAGxQ,EAAEqF,EAAExE,EAAEzD,EAAE+rC,OAAE,EAAOnjC,OAAE,EAAOyE,OAAE,EAAOusB,OAAE,EAAOmS,EAAEzqC,KAAKC,IAAIqB,EAAEhD,KAAK6D,EAAE7D,MAAMgJ,EAAEtH,KAAKC,IAAIqB,EAAE/C,KAAK4D,EAAE5D,MAAMwN,EAAE/L,KAAKwF,IAAIlE,EAAE9C,KAAK2D,EAAE3D,MAAM85B,EAAEt4B,KAAKwF,IAAIlE,EAAE7C,KAAK0D,EAAE1D,MAAMuB,KAAKC,IAAI,EAAE8L,EAAE0+B,GAAGzqC,KAAKC,IAAI,EAAEq4B,EAAEhxB,IAAImjB,EAAEuF,EAAErpB,GAAGqpB,EAAEtxB,GAAGoT,EAAEpO,GAAGA,EAAEoO,EAAEjN,EAAEhE,EAAEwB,EAAEooB,EAAEpoB,EAAEooB,EAAEpoB,GAAGyP,IAAIpO,GAAG+mB,EAAEpoB,IAAIA,EAAEooB,EAAE5lB,EAAEhE,EAAE,CAAC,OAAOgE,GAAG1B,EAAE9D,CAAC,EAAEwF,EAAEqG,UAAUkhC,iBAAiB,SAAShnB,EAAE/lB,EAAE8D,GAAG,IAAI0B,EAAEugB,EAAE2lB,KAAKhlC,KAAK8lC,YAAYvkC,EAAEhG,EAAE8jB,EAAE2lB,KAAKhlC,KAAK+lC,YAAY//B,EAAEhG,KAAKumC,eAAelnB,EAAE/lB,EAAE8D,EAAE0B,GAAGkB,KAAKumC,eAAelnB,EAAE/lB,EAAE8D,EAAE7B,IAAI8jB,EAAE0lB,SAASlrC,KAAKiF,EAAE,EAAEA,EAAEqG,UAAUohC,eAAe,SAASlnB,EAAE/lB,EAAE8D,EAAE0B,GAAGugB,EAAE0lB,SAASlrC,KAAKiF,GAAG,IAAI,IAAIvD,EAAEyE,KAAKqlC,OAAOjpC,EAAE6J,EAAEoZ,EAAE,EAAE/lB,EAAEiC,GAAGgG,EAAE0E,EAAEoZ,EAAEjiB,EAAE9D,EAAE8D,EAAE7B,GAAGyK,EAAEusB,EAAEn2B,GAAGm2B,EAAEhxB,GAAG0oB,EAAE3wB,EAAE2wB,EAAE7sB,EAAE9D,EAAE2wB,IAAI,CAAC,IAAItsB,EAAE0hB,EAAE0lB,SAAS9a,GAAGya,EAAEtoC,EAAEijB,EAAE2lB,KAAKzpC,EAAEoC,GAAGA,GAAGqI,GAAGusB,EAAEn2B,EAAE,CAAC,IAAI,IAAIE,EAAEc,EAAE9D,EAAE,EAAEgD,GAAGhD,EAAEgD,IAAI,CAAC,IAAIxB,EAAEukB,EAAE0lB,SAASzoC,GAAGooC,EAAEnjC,EAAE8d,EAAE2lB,KAAKzpC,EAAET,GAAGA,GAAGkL,GAAGusB,EAAEhxB,EAAE,CAAC,OAAOyE,CAAC,EAAElH,EAAEqG,UAAUihC,oBAAoB,SAAS/mB,EAAE/lB,EAAE8D,GAAG,IAAI,IAAI0B,EAAE1B,EAAE0B,GAAG,EAAEA,IAAI4lC,EAAEprC,EAAEwF,GAAGugB,EAAE,EAAEvgB,EAAEqG,UAAU0gC,UAAU,SAASxmB,GAAG,IAAI,IAAI/lB,EAAE+lB,EAAEtmB,OAAO,EAAEqE,OAAE,EAAO9D,GAAG,EAAEA,IAAI,IAAI+lB,EAAE/lB,GAAGyrC,SAAShsC,OAAOO,EAAE,GAAG8D,EAAEiiB,EAAE/lB,EAAE,GAAGyrC,UAAUrjB,OAAOtkB,EAAE2R,QAAQsQ,EAAE/lB,IAAI,GAAG0G,KAAK8kC,QAAQ1oC,EAAEijB,EAAE/lB,GAAG0G,KAAKqlC,OAAO,EAAEvmC,CAAC,CAAzuMxF,E,wBCAnF,MAAMktC,EAAe,EAAQ,OAsC7BvuC,EAAOC,QApCP,SAAuBuuC,EAAKC,EAASC,GACnC,MAAMC,EAASD,GAAWA,EAAQC,QAAU,EAEtCC,EAAcF,GAAWA,EAAQE,YAAe,EAElDD,GAAO/yB,QAAQ9R,IAAI,8BAA+B2kC,EAAS,QAASC,GAExE,MAAMvsC,EAAQosC,EAAaC,EAAK,IAAKC,QAAgBG,GAErD,GADID,GAAO/yB,QAAQ9R,IAAI,SAAU3H,IAClB,IAAXA,EAAc,OAElB,MAAM0sC,EAAaL,EAAI/zB,MAAMtY,EAAQssC,EAAQ3tC,QAC7C,IAAIguC,EAAcP,EAAaM,EAAY,OAASJ,EAAU,IAAK,GACnE,MAAMM,GAA+B,IAAjBD,EAEhBC,IACFD,EAAcP,EAAaM,EAAY,QAAS,IAGlD,MAAMzsC,EAAMD,EAAQssC,EAAQ3tC,OAASguC,EAAc,GAAKC,EAAc,EAAIN,EAAQ3tC,QAAU,EAE5F,GADI6tC,GAAO/yB,QAAQ9R,IAAI,OAAQ1H,IAClB,IAATA,EAAY,OAEhB,MAAM4sC,EAAQR,EAAI/zB,MAAMtY,EAAOC,GAG/B,IAAI6sC,EAOJ,OALEA,EADEF,EACM,KAEAC,EAAMv0B,MAAMu0B,EAAMl4B,QAAQ,KAAO,EAAGk4B,EAAME,YAAY,MAGzD,CAAED,QAAOD,QAAO7sC,QAAOC,MAChC,C,wBCpCA,MAAM+sC,EAAgB,EAAQ,OAe9BnvC,EAAOC,QAbP,SAAwBuuC,EAAKC,EAASC,GACpC,MAAMU,EAAO,GACPT,EAASD,GAAWA,EAAQC,QAAU,EAC5C,IACIrhC,EADAshC,EAAcF,GAAWA,EAAQE,YAAe,EAEpD,KAAQthC,EAAM6hC,EAAcX,EAAKC,EAAS,CAAEE,QAAOC,gBACjDA,EAAathC,EAAIlL,IACjBgtC,EAAK1tC,KAAK4L,GAGZ,OADIqhC,GAAO/yB,QAAQ9R,IAAI,uBAAwBslC,EAAKtuC,OAAQ,QACrDsuC,CACT,C,oBCEApvC,EAAOC,QAfP,SAAsBqN,EAAK+hC,EAAeX,GACxC,MAAMC,EAASD,GAAWA,EAAQC,QAAU,EACxCA,GAAO/yB,QAAQ9R,IAAI,WAAaulC,EAAgB,OAAS/hC,GAE7D,MAAMkhC,EAAqB,iBAARlhC,EAAmBA,EAAI0hC,MAAQ1hC,EAE5CgiC,EAAU,GAAGD,gBACfV,GAAO/yB,QAAQ9R,IAAI,WAAYwlC,GAEnC,MACMx8B,EADK,IAAIy8B,OAAOD,GACLE,KAAKhB,GAEtB,GADIG,GAAO/yB,QAAQ9R,IAAI,SAAUgJ,GAC7BA,EAAO,OAAOA,EAAM,EAC1B,C,oBCNA9S,EAAOC,QAPP,SAAsBuuC,EAAKc,EAASV,GAClC,MACM97B,EADK,IAAIy8B,OAAOD,GACLE,KAAKhB,EAAI/zB,MAAMm0B,IAChC,OAAI97B,EAAc87B,EAAa97B,EAAMgZ,OACxB,CACf,C,8FCJe,SAAS2jB,IACd,MAAM3yB,EAAS,+gUACf,OAAO,IAAI4yB,OAAuB,oBAATC,KACrB,sCAAwCC,OAAOxmB,KAAKtM,EAAQ,UAAU+yB,SAAS,UAC/EC,IAAIC,gBAAgB,IAAIJ,KAAK,CAAC7yB,GAAS,CAACvS,KAAM,4BACpD,C,4QCND,MAAMylC,EAAgB,CAE3B,IAAQ,SACR,IAAQ,gBACR,IAAQ,aACR,IAAQ,YACR,IAAQ,WACR,IAAQ,cACR,MAAQ,YACR,IAAQ,WACR,IAAQ,eACR,IAAQ,YACR,IAAQ,iBACR,IAAQ,cACR,IAAQ,oBACR,IAAQ,mBACR,IAAQ,eACR,IAAQ,mBACR,IAAQ,cACR,IAAQ,aACR,IAAQ,OACR,IAAQ,iBACR,IAAQ,iBACR,IAAQ,QACR,IAAQ,iBACR,IAAQ,cACR,IAAQ,4BACR,IAAQ,sBACR,IAAQ,iBACR,IAAQ,eACR,IAAQ,kBACR,IAAQ,WACR,IAAQ,kBACR,IAAQ,eACR,IAAQ,cACR,IAAQ,gBACR,IAAQ,cACR,IAAQ,cAGR,IAAQ,cACR,IAAQ,eACR,IAAQ,WACR,IAAQ,yBACR,IAAQ,SACR,IAAQ,oBACR,IAAQ,eACR,IAAQ,WACR,IAAQ,gBACR,IAAQ,UACR,IAAQ,aACR,IAAQ,WACR,IAAQ,aACR,IAAQ,YACR,IAAQ,wBACR,IAAQ,sBACR,IAAQ,eACR,IAAQ,kBACR,IAAQ,kBACR,IAAQ,iBACR,IAAQ,UACR,IAAQ,YACR,IAAQ,YACR,IAAQ,iBACR,IAAQ,aACR,IAAQ,cACR,IAAQ,YACR,IAAQ,mBACR,IAAQ,aACR,IAAQ,iBACR,IAAQ,YACR,IAAQ,oBACR,IAAQ,mBACR,IAAQ,mBACR,IAAQ,iBACR,IAAQ,YAGR,MAAQ,gBACR,MAAQ,aACR,MAAQ,oBACR,MAAQ,mBACR,MAAQ,WACR,MAAQ,cACR,MAAQ,eACR,MAAQ,aACR,MAAQ,QACR,MAAQ,kBACR,MAAQ,UACR,MAAQ,gBACR,MAAQ,cACR,MAAQ,YACR,MAAQ,oBACR,MAAQ,cAGR,MAAQ,OAGR,MAAQ,cAGR,IAAQ,MAGR,MAAQ,gBACR,MAAQ,cAGR,MAAQ,YAGR,MAAQ,kBACR,MAAQ,gBACR,MAAQ,sBACR,MAAQ,kBACR,MAAQ,kBACR,MAAQ,iBAGR,MAAQ,kBAGGC,EAAY,CAAC,EAC1B,IAAK,MAAMl9B,KAAOi9B,EACZA,EAAcE,eAAen9B,KAC/Bk9B,EAAUD,EAAcj9B,IAAQkD,SAASlD,EAAK,KAI3C,MAsCMo9B,EAAc,CACzBF,EAAUG,cACVH,EAAUI,aACVJ,EAAUK,aACVL,EAAUM,gBACVN,EAAUO,aACVP,EAAUQ,eACVR,EAAUS,eACVT,EAAUU,YACVV,EAAUW,SAGCC,EAAiB,CAC5B,EAAQ,OACR,EAAQ,QACR,EAAQ,QACR,EAAQ,OACR,EAAQ,WACR,EAAQ,QACR,EAAQ,YACR,EAAQ,SACR,EAAQ,QACR,GAAQ,YACR,GAAQ,QACR,GAAQ,SAER,GAAQ,MAER,GAAQ,QACR,GAAQ,SACR,GAAQ,QAGGC,EAAa,CAAC,EAC3B,IAAK,MAAM/9B,KAAO89B,EACZA,EAAeX,eAAen9B,KAChC+9B,EAAWD,EAAe99B,IAAQkD,SAASlD,EAAK,KAI7C,MAAMg+B,EAA6B,CACxCC,YAAa,EACbC,YAAa,EACbC,IAAK,EACLC,QAAS,EACTC,iBAAkB,EAClBC,KAAM,EACNC,MAAO,EAEPC,OAAQ,EACRC,OAAQ,GAGGC,EAAqB,CAChCC,YAAa,EACbC,WAAY,EACZC,WAAY,GAGDC,EAAiB,CAC5BC,QAAS,EACTC,eAAgB,GAGLC,EAAqB,CAChCC,KAAM,EACNC,QAAS,GAGEC,EAAc,CACzB,KAAM,oBACN,KAAM,qBACN,KAAM,mBACN,KAAM,uBACN,KAAM,qBACN,KAAM,0BACN,KAAM,0BACN,KAAM,wBACN,KAAM,2BACN,KAAM,yBACN,KAAM,4BACN,KAAM,sBACN,KAAM,0BACN,KAAM,0BACN,KAAM,0BACN,KAAM,yBACN,KAAM,8BACN,KAAM,oBACN,KAAM,wBACN,KAAM,oBACN,KAAM,mBACN,KAAM,uBACN,KAAM,wBACN,KAAM,2BACN,KAAM,yBACN,KAAM,yBACN,KAAM,0BACN,KAAM,yBACN,KAAM,yBACN,KAAM,0BACN,KAAM,4BACN,KAAM,2BACN,KAAM,+BACN,KAAM,gCACN,KAAM,uBACN,KAAM,sBACN,KAAM,0BACN,KAAM,2BACN,KAAM,6BACN,KAAM,0BACN,KAAM,yBACN,KAAM,iCACN,KAAM,+BACN,KAAM,uBACN,KAAM,yBACN,KAAM,sBACN,KAAM,uBAGKC,EAAU,CAAC,EACxB,IAAK,MAAMr/B,KAAOo/B,EACZA,EAAYjC,eAAen9B,KAC7Bq/B,EAAQD,EAAYp/B,IAAQkD,SAASlD,EAAK,I,8hBC/P9C,SAASs/B,EAAyB3xC,GACjC,OAAOA,GAAKA,EAAE4xC,YAAcp/B,OAAOhG,UAAUgjC,eAAeqC,KAAK7xC,EAAG,WAAaA,EAAW,QAAIA,CACjG,CAEA,IAEI8xC,EAuBAC,EAAiB,CACjB,YAAe,CACX,EACA,EACA,EACA,GAEJ,UAAa,CACT,IACA,IACA,IACA,GAEJ,aAAgB,CACZ,IACA,IACA,IACA,GAEJ,KAAQ,CACJ,EACA,IACA,IACA,GAEJ,WAAc,CACV,IACA,IACA,IACA,GAEJ,MAAS,CACL,IACA,IACA,IACA,GAEJ,MAAS,CACL,IACA,IACA,IACA,GAEJ,OAAU,CACN,IACA,IACA,IACA,GAEJ,MAAS,CACL,EACA,EACA,EACA,GAEJ,eAAkB,CACd,IACA,IACA,IACA,GAEJ,KAAQ,CACJ,EACA,EACA,IACA,GAEJ,WAAc,CACV,IACA,GACA,IACA,GAEJ,MAAS,CACL,IACA,GACA,GACA,GAEJ,UAAa,CACT,IACA,IACA,IACA,GAEJ,UAAa,CACT,GACA,IACA,IACA,GAEJ,WAAc,CACV,IACA,IACA,EACA,GAEJ,UAAa,CACT,IACA,IACA,GACA,GAEJ,MAAS,CACL,IACA,IACA,GACA,GAEJ,eAAkB,CACd,IACA,IACA,IACA,GAEJ,SAAY,CACR,IACA,IACA,IACA,GAEJ,QAAW,CACP,IACA,GACA,GACA,GAEJ,KAAQ,CACJ,EACA,IACA,IACA,GAEJ,SAAY,CACR,EACA,EACA,IACA,GAEJ,SAAY,CACR,EACA,IACA,IACA,GAEJ,cAAiB,CACb,IACA,IACA,GACA,GAEJ,SAAY,CACR,IACA,IACA,IACA,GAEJ,UAAa,CACT,EACA,IACA,EACA,GAEJ,SAAY,CACR,IACA,IACA,IACA,GAEJ,UAAa,CACT,IACA,IACA,IACA,GAEJ,YAAe,CACX,IACA,EACA,IACA,GAEJ,eAAkB,CACd,GACA,IACA,GACA,GAEJ,WAAc,CACV,IACA,IACA,EACA,GAEJ,WAAc,CACV,IACA,GACA,IACA,GAEJ,QAAW,CACP,IACA,EACA,EACA,GAEJ,WAAc,CACV,IACA,IACA,IACA,GAEJ,aAAgB,CACZ,IACA,IACA,IACA,GAEJ,cAAiB,CACb,GACA,GACA,IACA,GAEJ,cAAiB,CACb,GACA,GACA,GACA,GAEJ,cAAiB,CACb,GACA,GACA,GACA,GAEJ,cAAiB,CACb,EACA,IACA,IACA,GAEJ,WAAc,CACV,IACA,EACA,IACA,GAEJ,SAAY,CACR,IACA,GACA,IACA,GAEJ,YAAe,CACX,EACA,IACA,IACA,GAEJ,QAAW,CACP,IACA,IACA,IACA,GAEJ,QAAW,CACP,IACA,IACA,IACA,GAEJ,WAAc,CACV,GACA,IACA,IACA,GAEJ,UAAa,CACT,IACA,GACA,GACA,GAEJ,YAAe,CACX,IACA,IACA,IACA,GAEJ,YAAe,CACX,GACA,IACA,GACA,GAEJ,QAAW,CACP,IACA,EACA,IACA,GAEJ,UAAa,CACT,IACA,IACA,IACA,GAEJ,WAAc,CACV,IACA,IACA,IACA,GAEJ,KAAQ,CACJ,IACA,IACA,EACA,GAEJ,UAAa,CACT,IACA,IACA,GACA,GAEJ,KAAQ,CACJ,IACA,IACA,IACA,GAEJ,MAAS,CACL,EACA,IACA,EACA,GAEJ,YAAe,CACX,IACA,IACA,GACA,GAEJ,KAAQ,CACJ,IACA,IACA,IACA,GAEJ,SAAY,CACR,IACA,IACA,IACA,GAEJ,QAAW,CACP,IACA,IACA,IACA,GAEJ,UAAa,CACT,IACA,GACA,GACA,GAEJ,OAAU,CACN,GACA,EACA,IACA,GAEJ,MAAS,CACL,IACA,IACA,IACA,GAEJ,MAAS,CACL,IACA,IACA,IACA,GAEJ,SAAY,CACR,IACA,IACA,IACA,GAEJ,cAAiB,CACb,IACA,IACA,IACA,GAEJ,UAAa,CACT,IACA,IACA,EACA,GAEJ,aAAgB,CACZ,IACA,IACA,IACA,GAEJ,UAAa,CACT,IACA,IACA,IACA,GAEJ,WAAc,CACV,IACA,IACA,IACA,GAEJ,UAAa,CACT,IACA,IACA,IACA,GAEJ,qBAAwB,CACpB,IACA,IACA,IACA,GAEJ,UAAa,CACT,IACA,IACA,IACA,GAEJ,WAAc,CACV,IACA,IACA,IACA,GAEJ,UAAa,CACT,IACA,IACA,IACA,GAEJ,UAAa,CACT,IACA,IACA,IACA,GAEJ,YAAe,CACX,IACA,IACA,IACA,GAEJ,cAAiB,CACb,GACA,IACA,IACA,GAEJ,aAAgB,CACZ,IACA,IACA,IACA,GAEJ,eAAkB,CACd,IACA,IACA,IA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","sources":["webpack:///webpack/runtime/chunk loaded","webpack:///webpack/runtime/load script","webpack:///../node_modules/color-name/index.js","webpack:///../node_modules/earcut/src/earcut.js","webpack:///../node_modules/ieee754/index.js","webpack:///../node_modules/pbf/index.js","webpack:///../node_modules/proj4/lib/constants/values.js","webpack:///../node_modules/proj4/lib/constants/PrimeMeridian.js","webpack:///../node_modules/proj4/lib/constants/units.js","webpack:///../node_modules/proj4/lib/match.js","webpack:///../node_modules/proj4/lib/projString.js","webpack:///../node_modules/wkt-parser/parser.js","webpack:///../node_modules/wkt-parser/process.js","webpack:///../node_modules/wkt-parser/index.js","webpack:///../node_modules/proj4/lib/defs.js","webpack:///../node_modules/proj4/lib/global.js","webpack:///../node_modules/proj4/lib/parseCode.js","webpack:///../node_modules/proj4/lib/extend.js","webpack:///../node_modules/proj4/lib/common/msfnz.js","webpack:///../node_modules/proj4/lib/common/sign.js","webpack:///../node_modules/proj4/lib/common/adjust_lon.js","webpack:///../node_modules/proj4/lib/common/tsfnz.js","webpack:///../node_modules/proj4/lib/common/phi2z.js","webpack:///../node_modules/proj4/lib/projections/longlat.js","webpack:///../node_modules/proj4/lib/projections.js","webpack:///../node_modules/proj4/lib/projections/merc.js","webpack:///../node_modules/proj4/lib/constants/Ellipsoid.js","webpack:///../node_modules/proj4/lib/constants/Datum.js","webpack:///../node_modules/proj4/lib/datum.js","webpack:///../node_modules/proj4/lib/nadgrid.js","webpack:///../node_modules/proj4/lib/Proj.js","webpack:///../node_modules/proj4/lib/deriveConstants.js","webpack:///../node_modules/proj4/lib/datumUtils.js","webpack:///../node_modules/proj4/lib/datum_transform.js","webpack:///../node_modules/proj4/lib/adjust_axis.js","webpack:///../node_modules/proj4/lib/common/toPoint.js","webpack:///../node_modules/proj4/lib/checkSanity.js","webpack:///../node_modules/proj4/lib/transform.js","webpack:///../node_modules/proj4/lib/core.js","webpack:///../node_modules/mgrs/mgrs.js","webpack:///../node_modules/proj4/lib/Point.js","webpack:///../node_modules/proj4/lib/common/pj_enfn.js","webpack:///../node_modules/proj4/lib/common/pj_mlfn.js","webpack:///../node_modules/proj4/lib/common/pj_inv_mlfn.js","webpack:///../node_modules/proj4/lib/projections/tmerc.js","webpack:///../node_modules/proj4/lib/common/sinh.js","webpack:///../node_modules/proj4/lib/common/hypot.js","webpack:///../node_modules/proj4/lib/common/asinhy.js","webpack:///../node_modules/proj4/lib/common/log1py.js","webpack:///../node_modules/proj4/lib/common/gatg.js","webpack:///../node_modules/proj4/lib/common/clens_cmplx.js","webpack:///../node_modules/proj4/lib/common/cosh.js","webpack:///../node_modules/proj4/lib/projections/etmerc.js","webpack:///../node_modules/proj4/lib/common/clens.js","webpack:///../node_modules/proj4/lib/projections/utm.js","webpack:///../node_modules/proj4/lib/common/adjust_zone.js","webpack:///../node_modules/proj4/lib/common/srat.js","webpack:///../node_modules/proj4/lib/projections/gauss.js","webpack:///../node_modules/proj4/lib/projections/sterea.js","webpack:///../node_modules/proj4/lib/projections/stere.js","webpack:///../node_modules/proj4/lib/projections/somerc.js","webpack:///../node_modules/proj4/lib/projections/omerc.js","webpack:///../node_modules/proj4/lib/projections/lcc.js","webpack:///../node_modules/proj4/lib/projections/krovak.js","webpack:///../node_modules/proj4/lib/common/mlfn.js","webpack:///../node_modules/proj4/lib/common/e0fn.js","webpack:///../node_modules/proj4/lib/common/e1fn.js","webpack:///../node_modules/proj4/lib/common/e2fn.js","webpack:///../node_modules/proj4/lib/common/e3fn.js","webpack:///../node_modules/proj4/lib/common/gN.js","webpack:///../node_modules/proj4/lib/common/adjust_lat.js","webpack:///../node_modules/proj4/lib/common/imlfn.js","webpack:///../node_modules/proj4/lib/projections/cass.js","webpack:///../node_modules/proj4/lib/common/qsfnz.js","webpack:///../node_modules/proj4/lib/projections/laea.js","webpack:///../node_modules/proj4/lib/common/asinz.js","webpack:///../node_modules/proj4/lib/projections/aea.js","webpack:///../node_modules/proj4/lib/projections/gnom.js","webpack:///../node_modules/proj4/lib/projections/cea.js","webpack:///../node_modules/proj4/lib/common/iqsfnz.js","webpack:///../node_modules/proj4/lib/projections/eqc.js","webpack:///../node_modules/proj4/lib/projections/poly.js","webpack:///../node_modules/proj4/lib/projections/nzmg.js","webpack:///../node_modules/proj4/lib/projections/mill.js","webpack:///../node_modules/proj4/lib/projections/sinu.js","webpack:///../node_modules/proj4/lib/projections/moll.js","webpack:///../node_modules/proj4/lib/projections/eqdc.js","webpack:///../node_modules/proj4/lib/projections/vandg.js","webpack:///../node_modules/proj4/lib/projections/aeqd.js","webpack:///../node_modules/proj4/lib/projections/ortho.js","webpack:///../node_modules/proj4/lib/projections/qsc.js","webpack:///../node_modules/proj4/lib/projections/robin.js","webpack:///../node_modules/proj4/lib/projections/geocent.js","webpack:///../node_modules/proj4/lib/projections/tpers.js","webpack:///../node_modules/proj4/lib/projections/geos.js","webpack:///../node_modules/proj4/lib/index.js","webpack:///../node_modules/proj4/projs.js","webpack:///../node_modules/rbush/rbush.min.js","webpack:///../node_modules/xml-utils/find-tag-by-name.js","webpack:///../node_modules/xml-utils/find-tags-by-name.js","webpack:///../node_modules/xml-utils/get-attribute.js","webpack:///../node_modules/xml-utils/index-of-match.js","webpack:///../src/ol/worker/webgl.js","webpack:///../node_modules/geotiff/dist-module/globals.js","webpack:///../node_modules/ol-mapbox-style/dist/index.js","webpack:///../src/ol/Collection.js","webpack:///../src/ol/CollectionEventType.js","webpack:///../src/ol/DataTile.js","webpack:///../src/ol/Disposable.js","webpack:///../src/ol/Feature.js","webpack:///../src/ol/Geolocation.js","webpack:///../src/ol/Image.js","webpack:///../src/ol/ImageCanvas.js","webpack:///../src/ol/ImageState.js","webpack:///../src/ol/ImageTile.js","webpack:///../src/ol/renderer/Map.js","webpack:///../src/ol/renderer/Composite.js","webpack:///../src/ol/MapBrowserEventHandler.js","webpack:///../src/ol/Map.js","webpack:///../src/ol/MapBrowserEvent.js","webpack:///../src/ol/MapBrowserEventType.js","webpack:///../src/ol/MapEvent.js","webpack:///../src/ol/MapEventType.js","webpack:///../src/ol/MapProperty.js","webpack:///../src/ol/Object.js","webpack:///../src/ol/ObjectEventType.js","webpack:///../src/ol/Observable.js","webpack:///../src/ol/Overlay.js","webpack:///../src/ol/Tile.js","webpack:///../src/ol/TileCache.js","webpack:///../src/ol/structs/PriorityQueue.js","webpack:///../src/ol/TileQueue.js","webpack:///../src/ol/TileRange.js","webpack:///../src/ol/TileState.js","webpack:///../src/ol/VectorTile.js","webpack:///../src/ol/centerconstraint.js","webpack:///../src/ol/resolutionconstraint.js","webpack:///../src/ol/View.js","webpack:///../src/ol/ViewHint.js","webpack:///../src/ol/ViewProperty.js","webpack:///../src/ol/array.js","webpack:///../src/ol/asserts.js","webpack:///../node_modules/color-space/rgb.js","webpack:///../node_modules/color-space/xyz.js","webpack:///../node_modules/color-space/luv.js","webpack:///../node_modules/color-space/lchuv.js","webpack:///../node_modules/color-parse/index.js","webpack:///../node_modules/color-space/hsl.js","webpack:///../src/ol/color.js","webpack:///../node_modules/color-rgba/index.js","webpack:///../src/ol/colorlike.js","webpack:///../src/ol/console.js","webpack:///../src/ol/control/Attribution.js","webpack:///../src/ol/control/Control.js","webpack:///../src/ol/control/FullScreen.js","webpack:///../src/ol/control/MousePosition.js","webpack:///../src/ol/control/OverviewMap.js","webpack:///../src/ol/control/ScaleLine.js","webpack:///../src/ol/control/ZoomSlider.js","webpack:///../src/ol/control/Rotate.js","webpack:///../src/ol/control/Zoom.js","webpack:///../src/ol/control/defaults.js","webpack:///../src/ol/coordinate.js","webpack:///../src/ol/css.js","webpack:///../src/ol/dom.js","webpack:///../src/ol/easing.js","webpack:///../src/ol/events.js","webpack:///../src/ol/events/Event.js","webpack:///../src/ol/events/EventType.js","webpack:///../src/ol/events/Target.js","webpack:///../src/ol/events/condition.js","webpack:///../src/ol/expr/expression.js","webpack:///../src/ol/webgl/PaletteTexture.js","webpack:///../src/ol/expr/gpu.js","webpack:///../src/ol/extent.js","webpack:///../src/ol/extent/Relationship.js","webpack:///../src/ol/featureloader.js","webpack:///../src/ol/format/EsriJSON.js","webpack:///../src/ol/format/Feature.js","webpack:///../src/ol/format/GML2.js","webpack:///../src/ol/format/GMLBase.js","webpack:///../src/ol/format/GPX.js","webpack:///../src/ol/format/GeoJSON.js","webpack:///../src/ol/format/IGC.js","webpack:///../src/ol/format/JSONFeature.js","webpack:///../src/ol/format/KML.js","webpack:///../src/ol/format/MVT.js","webpack:///../src/ol/format/TextFeature.js","webpack:///../src/ol/format/TopoJSON.js","webpack:///../src/ol/format/WKT.js","webpack:///../src/ol/format/OWS.js","webpack:///../src/ol/format/WMTSCapabilities.js","webpack:///../src/ol/format/XML.js","webpack:///../src/ol/format/XMLFeature.js","webpack:///../src/ol/format/xlink.js","webpack:///../src/ol/format/xsd.js","webpack:///../src/ol/functions.js","webpack:///../src/ol/geom/Circle.js","webpack:///../src/ol/geom/Geometry.js","webpack:///../src/ol/geom/GeometryCollection.js","webpack:///../src/ol/geom/LineString.js","webpack:///../src/ol/geom/LinearRing.js","webpack:///../src/ol/geom/MultiLineString.js","webpack:///../src/ol/geom/MultiPoint.js","webpack:///../src/ol/geom/MultiPolygon.js","webpack:///../src/ol/geom/Point.js","webpack:///../src/ol/geom/Polygon.js","webpack:///../src/ol/geom/SimpleGeometry.js","webpack:///../src/ol/geom/flat/area.js","webpack:///../src/ol/geom/flat/center.js","webpack:///../src/ol/geom/flat/closest.js","webpack:///../src/ol/geom/flat/contains.js","webpack:///../src/ol/geom/flat/deflate.js","webpack:///../src/ol/geom/flat/inflate.js","webpack:///../src/ol/geom/flat/interiorpoint.js","webpack:///../src/ol/geom/flat/interpolate.js","webpack:///../src/ol/geom/flat/intersectsextent.js","webpack:///../src/ol/geom/flat/length.js","webpack:///../src/ol/geom/flat/reverse.js","webpack:///../src/ol/geom/flat/orient.js","webpack:///../src/ol/geom/flat/segments.js","webpack:///../src/ol/geom/flat/simplify.js","webpack:///../src/ol/geom/flat/transform.js","webpack:///../src/ol/has.js","webpack:///../src/ol/interaction/DragAndDrop.js","webpack:///../src/ol/render/Box.js","webpack:///../src/ol/interaction/DragBox.js","webpack:///../src/ol/interaction/DragPan.js","webpack:///../src/ol/interaction/DragRotateAndZoom.js","webpack:///../src/ol/interaction/Draw.js","webpack:///../src/ol/interaction/Interaction.js","webpack:///../src/ol/interaction/Link.js","webpack:///../src/ol/interaction/Modify.js","webpack:///../src/ol/interaction/MouseWheelZoom.js","webpack:///../src/ol/interaction/Pointer.js","webpack:///../src/ol/interaction/Property.js","webpack:///../src/ol/interaction/Select.js","webpack:///../src/ol/events/SnapEvent.js","webpack:///../src/ol/interaction/Snap.js","webpack:///../src/ol/interaction/Translate.js","webpack:///../src/ol/interaction/DoubleClickZoom.js","webpack:///../src/ol/interaction/DragRotate.js","webpack:///../src/ol/interaction/DragZoom.js","webpack:///../src/ol/events/Key.js","webpack:///../src/ol/interaction/KeyboardPan.js","webpack:///../src/ol/interaction/KeyboardZoom.js","webpack:///../src/ol/Kinetic.js","webpack:///../src/ol/interaction/PinchRotate.js","webpack:///../src/ol/interaction/PinchZoom.js","webpack:///../src/ol/interaction/defaults.js","webpack:///../src/ol/layer/Base.js","webpack:///../src/ol/layer/BaseTile.js","webpack:///../src/ol/expr/cpu.js","webpack:///../src/ol/render/canvas/style.js","webpack:///../src/ol/layer/BaseVector.js","webpack:///../src/ol/geom/flat/geodesic.js","webpack:///../src/ol/layer/Graticule.js","webpack:///../src/ol/layer/Group.js","webpack:///../src/ol/layer/Heatmap.js","webpack:///../src/ol/layer/BaseImage.js","webpack:///../src/ol/layer/Image.js","webpack:///../src/ol/layer/Layer.js","webpack:///../src/ol/layer/Property.js","webpack:///../src/ol/layer/Tile.js","webpack:///../src/ol/layer/TileProperty.js","webpack:///../src/ol/layer/Vector.js","webpack:///../src/ol/renderer/canvas/VectorImageLayer.js","webpack:///../src/ol/layer/VectorImage.js","webpack:///../src/ol/renderer/canvas/VectorTileLayer.js","webpack:///../src/ol/layer/VectorTile.js","webpack:///../src/ol/layer/WebGLPoints.js","webpack:///../src/ol/layer/WebGLTile.js","webpack:///../src/ol/loadingstrategy.js","webpack:///../src/ol/math.js","webpack:///../src/ol/net.js","webpack:///../src/ol/obj.js","webpack:///../src/ol/pointer/EventType.js","webpack:///../src/ol/proj/epsg3857.js","webpack:///../src/ol/proj/epsg4326.js","webpack:///../src/ol/proj/projections.js","webpack:///../src/ol/proj.js","webpack:///../src/ol/proj/Projection.js","webpack:///../src/ol/proj/Units.js","webpack:///../src/ol/proj/proj4.js","webpack:///../src/ol/proj/transforms.js","webpack:///../src/ol/render.js","webpack:///../src/ol/render/Event.js","webpack:///../src/ol/render/EventType.js","webpack:///../src/ol/render/Feature.js","webpack:///../src/ol/render/VectorContext.js","webpack:///../src/ol/render/canvas.js","webpack:///../src/ol/render/canvas/Builder.js","webpack:///../src/ol/render/canvas/ImageBuilder.js","webpack:///../src/ol/render/canvas/LineStringBuilder.js","webpack:///../src/ol/render/canvas/PolygonBuilder.js","webpack:///../src/ol/render/canvas/BuilderGroup.js","webpack:///../src/ol/geom/flat/textpath.js","webpack:///../src/ol/render/canvas/Executor.js","webpack:///../src/ol/render/canvas/ExecutorGroup.js","webpack:///../src/ol/render/canvas/Immediate.js","webpack:///../src/ol/render/canvas/Instruction.js","webpack:///../src/ol/geom/flat/linechunk.js","webpack:///../src/ol/geom/flat/straightchunk.js","webpack:///../src/ol/render/canvas/TextBuilder.js","webpack:///../src/ol/render/canvas/hitdetect.js","webpack:///../src/ol/render/webgl/MixedGeometryBatch.js","webpack:///../src/ol/render/webgl/renderinstructions.js","webpack:///../src/ol/render/webgl/VectorStyleRenderer.js","webpack:///../src/ol/render/webgl/constants.js","webpack:///../src/ol/render/webgl/utils.js","webpack:///../src/ol/renderer/Layer.js","webpack:///../src/ol/renderer/canvas/ImageLayer.js","webpack:///../src/ol/renderer/canvas/Layer.js","webpack:///../src/ol/renderer/canvas/TileLayer.js","webpack:///../src/ol/renderer/canvas/VectorLayer.js","webpack:///../src/ol/renderer/vector.js","webpack:///../src/ol/renderer/webgl/Layer.js","webpack:///../src/ol/renderer/webgl/PointsLayer.js","webpack:///../src/ol/webgl/TileTexture.js","webpack:///../src/ol/renderer/webgl/TileLayer.js","webpack:///../src/ol/renderer/webgl/TileLayerBase.js","webpack:///../src/ol/renderer/webgl/VectorLayer.js","webpack:///../src/ol/renderer/webgl/worldUtil.js","webpack:///../src/ol/reproj.js","webpack:///../src/ol/reproj/DataTile.js","webpack:///../src/ol/reproj/Tile.js","webpack:///../src/ol/reproj/Triangulation.js","webpack:///../src/ol/reproj/common.js","webpack:///../src/ol/resolution.js","webpack:///../src/ol/rotationconstraint.js","webpack:///../src/ol/size.js","webpack:///../src/ol/source/BingMaps.js","webpack:///../src/ol/source/Cluster.js","webpack:///../src/ol/source/DataTile.js","webpack:///../node_modules/geotiff/dist-module/compression/index.js","webpack:///../node_modules/geotiff/dist-module/pool.js","webpack:///../node_modules/@petamoriken/float16/src/helper/converter.mjs","webpack:///../node_modules/@petamoriken/float16/src/helper/is.mjs","webpack:///../node_modules/@petamoriken/float16/src/DataView.mjs","webpack:///../node_modules/geotiff/dist-module/resample.js","webpack:///../node_modules/geotiff/dist-module/geotiffimage.js","webpack:///../node_modules/geotiff/dist-module/rgb.js","webpack:///../node_modules/geotiff/dist-module/dataview64.js","webpack:///../node_modules/geotiff/dist-module/dataslice.js","webpack:///../node_modules/geotiff/dist-module/source/httputils.js","webpack:///../node_modules/geotiff/dist-module/source/basesource.js","webpack:///../node_modules/quick-lru/index.js","webpack:///../node_modules/geotiff/dist-module/utils.js","webpack:///../node_modules/geotiff/dist-module/source/blockedsource.js","webpack:///../node_modules/geotiff/dist-module/source/client/base.js","webpack:///../node_modules/geotiff/dist-module/source/client/fetch.js","webpack:///../node_modules/geotiff/dist-module/source/client/xhr.js","webpack:///../node_modules/geotiff/dist-module/source/client/http.js","webpack:///../node_modules/geotiff/dist-module/source/remote.js","webpack:///../node_modules/geotiff/dist-module/source/filereader.js","webpack:///../node_modules/geotiff/dist-module/geotiff.js","webpack:///../src/ol/source/GeoTIFF.js","webpack:///../src/ol/reproj/Image.js","webpack:///../src/ol/source/Image.js","webpack:///../src/ol/source/ImageStatic.js","webpack:///../src/ol/source/static.js","webpack:///../src/ol/source/ImageWMS.js","webpack:///../src/ol/source/OGCMapTile.js","webpack:///../src/ol/source/OSM.js","webpack:///../src/ol/source/Raster.js","webpack:///../src/ol/source/Source.js","webpack:///../src/ol/source/StadiaMaps.js","webpack:///../src/ol/source/Tile.js","webpack:///../src/ol/source/TileDebug.js","webpack:///../src/ol/source/TileEventType.js","webpack:///../src/ol/source/TileImage.js","webpack:///../src/ol/source/TileJSON.js","webpack:///../src/ol/source/TileWMS.js","webpack:///../src/ol/source/UrlTile.js","webpack:///../src/ol/source/Vector.js","webpack:///../src/ol/source/VectorEventType.js","webpack:///../src/ol/VectorRenderTile.js","webpack:///../src/ol/source/VectorTile.js","webpack:///../src/ol/source/WMTS.js","webpack:///../src/ol/source/XYZ.js","webpack:///../src/ol/source/Zoomify.js","webpack:///../src/ol/source/arcgisRest.js","webpack:///../src/ol/source/common.js","webpack:///../src/ol/source/ogcTileUtil.js","webpack:///../src/ol/source/wms.js","webpack:///../src/ol/sphere.js","webpack:///../src/ol/string.js","webpack:///../src/ol/structs/LRUCache.js","webpack:///../src/ol/structs/RBush.js","webpack:///../src/ol/style/Circle.js","webpack:///../src/ol/style/Fill.js","webpack:///../src/ol/style/IconImage.js","webpack:///../src/ol/style/Icon.js","webpack:///../src/ol/style/IconImageCache.js","webpack:///../src/ol/style/Image.js","webpack:///../src/ol/style/RegularShape.js","webpack:///../src/ol/style/Stroke.js","webpack:///../src/ol/style/Style.js","webpack:///../src/ol/style/Text.js","webpack:///../src/ol/tilecoord.js","webpack:///../src/ol/tilegrid.js","webpack:///../src/ol/tilegrid/TileGrid.js","webpack:///../src/ol/tilegrid/WMTS.js","webpack:///../src/ol/tilegrid/common.js","webpack:///../src/ol/tileurlfunction.js","webpack:///../src/ol/transform.js","webpack:///../src/ol/uri.js","webpack:///../src/ol/util.js","webpack:///../src/ol/vec/mat4.js","webpack:///../src/ol/webgl.js","webpack:///../src/ol/webgl/BaseTileRepresentation.js","webpack:///../src/ol/webgl/Buffer.js","webpack:///../src/ol/webgl/ContextEventType.js","webpack:///../src/ol/webgl/PostProcessingPass.js","webpack:///../src/ol/webgl/Helper.js","webpack:///../src/ol/webgl/RenderTarget.js","webpack:///../src/ol/webgl/ShaderBuilder.js","webpack:///../src/ol/style/flat.js","webpack:///../src/ol/webgl/styleparser.js","webpack:///../src/ol/xml.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/ensure chunk","webpack:///webpack/runtime/get javascript chunk filename","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/runtime/node module decorator","webpack:///webpack/runtime/publicPath","webpack:///webpack/runtime/jsonp chunk loading"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = function(result, chunkIds, fn, priority) {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every(function(key) { return __webpack_require__.O[key](chunkIds[j]); })) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\n// data-webpack is not used as build has no uniqueName\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","'use strict'\r\n\r\nmodule.exports = {\r\n\t\"aliceblue\": [240, 248, 255],\r\n\t\"antiquewhite\": [250, 235, 215],\r\n\t\"aqua\": [0, 255, 255],\r\n\t\"aquamarine\": [127, 255, 212],\r\n\t\"azure\": [240, 255, 255],\r\n\t\"beige\": [245, 245, 220],\r\n\t\"bisque\": [255, 228, 196],\r\n\t\"black\": [0, 0, 0],\r\n\t\"blanchedalmond\": [255, 235, 205],\r\n\t\"blue\": [0, 0, 255],\r\n\t\"blueviolet\": [138, 43, 226],\r\n\t\"brown\": [165, 42, 42],\r\n\t\"burlywood\": [222, 184, 135],\r\n\t\"cadetblue\": [95, 158, 160],\r\n\t\"chartreuse\": [127, 255, 0],\r\n\t\"chocolate\": [210, 105, 30],\r\n\t\"coral\": [255, 127, 80],\r\n\t\"cornflowerblue\": [100, 149, 237],\r\n\t\"cornsilk\": [255, 248, 220],\r\n\t\"crimson\": [220, 20, 60],\r\n\t\"cyan\": [0, 255, 255],\r\n\t\"darkblue\": [0, 0, 139],\r\n\t\"darkcyan\": [0, 139, 139],\r\n\t\"darkgoldenrod\": [184, 134, 11],\r\n\t\"darkgray\": [169, 169, 169],\r\n\t\"darkgreen\": [0, 100, 0],\r\n\t\"darkgrey\": [169, 169, 169],\r\n\t\"darkkhaki\": [189, 183, 107],\r\n\t\"darkmagenta\": [139, 0, 139],\r\n\t\"darkolivegreen\": [85, 107, 47],\r\n\t\"darkorange\": [255, 140, 0],\r\n\t\"darkorchid\": [153, 50, 204],\r\n\t\"darkred\": [139, 0, 0],\r\n\t\"darksalmon\": [233, 150, 122],\r\n\t\"darkseagreen\": [143, 188, 143],\r\n\t\"darkslateblue\": [72, 61, 139],\r\n\t\"darkslategray\": [47, 79, 79],\r\n\t\"darkslategrey\": [47, 79, 79],\r\n\t\"darkturquoise\": [0, 206, 209],\r\n\t\"darkviolet\": [148, 0, 211],\r\n\t\"deeppink\": [255, 20, 147],\r\n\t\"deepskyblue\": [0, 191, 255],\r\n\t\"dimgray\": [105, 105, 105],\r\n\t\"dimgrey\": [105, 105, 105],\r\n\t\"dodgerblue\": [30, 144, 255],\r\n\t\"firebrick\": [178, 34, 34],\r\n\t\"floralwhite\": [255, 250, 240],\r\n\t\"forestgreen\": [34, 139, 34],\r\n\t\"fuchsia\": [255, 0, 255],\r\n\t\"gainsboro\": [220, 220, 220],\r\n\t\"ghostwhite\": [248, 248, 255],\r\n\t\"gold\": [255, 215, 0],\r\n\t\"goldenrod\": [218, 165, 32],\r\n\t\"gray\": [128, 128, 128],\r\n\t\"green\": [0, 128, 0],\r\n\t\"greenyellow\": [173, 255, 47],\r\n\t\"grey\": [128, 128, 128],\r\n\t\"honeydew\": [240, 255, 240],\r\n\t\"hotpink\": [255, 105, 180],\r\n\t\"indianred\": [205, 92, 92],\r\n\t\"indigo\": [75, 0, 130],\r\n\t\"ivory\": [255, 255, 240],\r\n\t\"khaki\": [240, 230, 140],\r\n\t\"lavender\": [230, 230, 250],\r\n\t\"lavenderblush\": [255, 240, 245],\r\n\t\"lawngreen\": [124, 252, 0],\r\n\t\"lemonchiffon\": [255, 250, 205],\r\n\t\"lightblue\": [173, 216, 230],\r\n\t\"lightcoral\": [240, 128, 128],\r\n\t\"lightcyan\": [224, 255, 255],\r\n\t\"lightgoldenrodyellow\": [250, 250, 210],\r\n\t\"lightgray\": [211, 211, 211],\r\n\t\"lightgreen\": [144, 238, 144],\r\n\t\"lightgrey\": [211, 211, 211],\r\n\t\"lightpink\": [255, 182, 193],\r\n\t\"lightsalmon\": [255, 160, 122],\r\n\t\"lightseagreen\": [32, 178, 170],\r\n\t\"lightskyblue\": [135, 206, 250],\r\n\t\"lightslategray\": [119, 136, 153],\r\n\t\"lightslategrey\": [119, 136, 153],\r\n\t\"lightsteelblue\": [176, 196, 222],\r\n\t\"lightyellow\": [255, 255, 224],\r\n\t\"lime\": [0, 255, 0],\r\n\t\"limegreen\": [50, 205, 50],\r\n\t\"linen\": [250, 240, 230],\r\n\t\"magenta\": [255, 0, 255],\r\n\t\"maroon\": [128, 0, 0],\r\n\t\"mediumaquamarine\": [102, 205, 170],\r\n\t\"mediumblue\": [0, 0, 205],\r\n\t\"mediumorchid\": [186, 85, 211],\r\n\t\"mediumpurple\": [147, 112, 219],\r\n\t\"mediumseagreen\": [60, 179, 113],\r\n\t\"mediumslateblue\": [123, 104, 238],\r\n\t\"mediumspringgreen\": [0, 250, 154],\r\n\t\"mediumturquoise\": [72, 209, 204],\r\n\t\"mediumvioletred\": [199, 21, 133],\r\n\t\"midnightblue\": [25, 25, 112],\r\n\t\"mintcream\": [245, 255, 250],\r\n\t\"mistyrose\": [255, 228, 225],\r\n\t\"moccasin\": [255, 228, 181],\r\n\t\"navajowhite\": [255, 222, 173],\r\n\t\"navy\": [0, 0, 128],\r\n\t\"oldlace\": [253, 245, 230],\r\n\t\"olive\": [128, 128, 0],\r\n\t\"olivedrab\": [107, 142, 35],\r\n\t\"orange\": [255, 165, 0],\r\n\t\"orangered\": [255, 69, 0],\r\n\t\"orchid\": [218, 112, 214],\r\n\t\"palegoldenrod\": [238, 232, 170],\r\n\t\"palegreen\": [152, 251, 152],\r\n\t\"paleturquoise\": [175, 238, 238],\r\n\t\"palevioletred\": [219, 112, 147],\r\n\t\"papayawhip\": [255, 239, 213],\r\n\t\"peachpuff\": [255, 218, 185],\r\n\t\"peru\": [205, 133, 63],\r\n\t\"pink\": [255, 192, 203],\r\n\t\"plum\": [221, 160, 221],\r\n\t\"powderblue\": [176, 224, 230],\r\n\t\"purple\": [128, 0, 128],\r\n\t\"rebeccapurple\": [102, 51, 153],\r\n\t\"red\": [255, 0, 0],\r\n\t\"rosybrown\": [188, 143, 143],\r\n\t\"royalblue\": [65, 105, 225],\r\n\t\"saddlebrown\": [139, 69, 19],\r\n\t\"salmon\": [250, 128, 114],\r\n\t\"sandybrown\": [244, 164, 96],\r\n\t\"seagreen\": [46, 139, 87],\r\n\t\"seashell\": [255, 245, 238],\r\n\t\"sienna\": [160, 82, 45],\r\n\t\"silver\": [192, 192, 192],\r\n\t\"skyblue\": [135, 206, 235],\r\n\t\"slateblue\": [106, 90, 205],\r\n\t\"slategray\": [112, 128, 144],\r\n\t\"slategrey\": [112, 128, 144],\r\n\t\"snow\": [255, 250, 250],\r\n\t\"springgreen\": [0, 255, 127],\r\n\t\"steelblue\": [70, 130, 180],\r\n\t\"tan\": [210, 180, 140],\r\n\t\"teal\": [0, 128, 128],\r\n\t\"thistle\": [216, 191, 216],\r\n\t\"tomato\": [255, 99, 71],\r\n\t\"turquoise\": [64, 224, 208],\r\n\t\"violet\": [238, 130, 238],\r\n\t\"wheat\": [245, 222, 179],\r\n\t\"white\": [255, 255, 255],\r\n\t\"whitesmoke\": [245, 245, 245],\r\n\t\"yellow\": [255, 255, 0],\r\n\t\"yellowgreen\": [154, 205, 50]\r\n};\r\n","'use strict';\n\nmodule.exports = earcut;\nmodule.exports.default = earcut;\n\nfunction earcut(data, holeIndices, dim) {\n\n dim = dim || 2;\n\n var hasHoles = holeIndices && holeIndices.length,\n outerLen = hasHoles ? holeIndices[0] * dim : data.length,\n outerNode = linkedList(data, 0, outerLen, dim, true),\n triangles = [];\n\n if (!outerNode || outerNode.next === outerNode.prev) return triangles;\n\n var minX, minY, maxX, maxY, x, y, invSize;\n\n if (hasHoles) outerNode = eliminateHoles(data, holeIndices, outerNode, dim);\n\n // if the shape is not too simple, we'll use z-order curve hash later; calculate polygon bbox\n if (data.length > 80 * dim) {\n minX = maxX = data[0];\n minY = maxY = data[1];\n\n for (var i = dim; i < outerLen; i += dim) {\n x = data[i];\n y = data[i + 1];\n if (x < minX) minX = x;\n if (y < minY) minY = y;\n if (x > maxX) maxX = x;\n if (y > maxY) maxY = y;\n }\n\n // minX, minY and invSize are later used to transform coords into integers for z-order calculation\n invSize = Math.max(maxX - minX, maxY - minY);\n invSize = invSize !== 0 ? 32767 / invSize : 0;\n }\n\n earcutLinked(outerNode, triangles, dim, minX, minY, invSize, 0);\n\n return triangles;\n}\n\n// create a circular doubly linked list from polygon points in the specified winding order\nfunction linkedList(data, start, end, dim, clockwise) {\n var i, last;\n\n if (clockwise === (signedArea(data, start, end, dim) > 0)) {\n for (i = start; i < end; i += dim) last = insertNode(i, data[i], data[i + 1], last);\n } else {\n for (i = end - dim; i >= start; i -= dim) last = insertNode(i, data[i], data[i + 1], last);\n }\n\n if (last && equals(last, last.next)) {\n removeNode(last);\n last = last.next;\n }\n\n return last;\n}\n\n// eliminate colinear or duplicate points\nfunction filterPoints(start, end) {\n if (!start) return start;\n if (!end) end = start;\n\n var p = start,\n again;\n do {\n again = false;\n\n if (!p.steiner && (equals(p, p.next) || area(p.prev, p, p.next) === 0)) {\n removeNode(p);\n p = end = p.prev;\n if (p === p.next) break;\n again = true;\n\n } else {\n p = p.next;\n }\n } while (again || p !== end);\n\n return end;\n}\n\n// main ear slicing loop which triangulates a polygon (given as a linked list)\nfunction earcutLinked(ear, triangles, dim, minX, minY, invSize, pass) {\n if (!ear) return;\n\n // interlink polygon nodes in z-order\n if (!pass && invSize) indexCurve(ear, minX, minY, invSize);\n\n var stop = ear,\n prev, next;\n\n // iterate through ears, slicing them one by one\n while (ear.prev !== ear.next) {\n prev = ear.prev;\n next = ear.next;\n\n if (invSize ? isEarHashed(ear, minX, minY, invSize) : isEar(ear)) {\n // cut off the triangle\n triangles.push(prev.i / dim | 0);\n triangles.push(ear.i / dim | 0);\n triangles.push(next.i / dim | 0);\n\n removeNode(ear);\n\n // skipping the next vertex leads to less sliver triangles\n ear = next.next;\n stop = next.next;\n\n continue;\n }\n\n ear = next;\n\n // if we looped through the whole remaining polygon and can't find any more ears\n if (ear === stop) {\n // try filtering points and slicing again\n if (!pass) {\n earcutLinked(filterPoints(ear), triangles, dim, minX, minY, invSize, 1);\n\n // if this didn't work, try curing all small self-intersections locally\n } else if (pass === 1) {\n ear = cureLocalIntersections(filterPoints(ear), triangles, dim);\n earcutLinked(ear, triangles, dim, minX, minY, invSize, 2);\n\n // as a last resort, try splitting the remaining polygon into two\n } else if (pass === 2) {\n splitEarcut(ear, triangles, dim, minX, minY, invSize);\n }\n\n break;\n }\n }\n}\n\n// check whether a polygon node forms a valid ear with adjacent nodes\nfunction isEar(ear) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n // now make sure we don't have other points inside the potential ear\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n var p = c.next;\n while (p !== a) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) &&\n area(p.prev, p, p.next) >= 0) return false;\n p = p.next;\n }\n\n return true;\n}\n\nfunction isEarHashed(ear, minX, minY, invSize) {\n var a = ear.prev,\n b = ear,\n c = ear.next;\n\n if (area(a, b, c) >= 0) return false; // reflex, can't be an ear\n\n var ax = a.x, bx = b.x, cx = c.x, ay = a.y, by = b.y, cy = c.y;\n\n // triangle bbox; min & max are calculated like this for speed\n var x0 = ax < bx ? (ax < cx ? ax : cx) : (bx < cx ? bx : cx),\n y0 = ay < by ? (ay < cy ? ay : cy) : (by < cy ? by : cy),\n x1 = ax > bx ? (ax > cx ? ax : cx) : (bx > cx ? bx : cx),\n y1 = ay > by ? (ay > cy ? ay : cy) : (by > cy ? by : cy);\n\n // z-order range for the current triangle bbox;\n var minZ = zOrder(x0, y0, minX, minY, invSize),\n maxZ = zOrder(x1, y1, minX, minY, invSize);\n\n var p = ear.prevZ,\n n = ear.nextZ;\n\n // look for points inside the triangle in both directions\n while (p && p.z >= minZ && n && n.z <= maxZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n // look for remaining points in decreasing z-order\n while (p && p.z >= minZ) {\n if (p.x >= x0 && p.x <= x1 && p.y >= y0 && p.y <= y1 && p !== a && p !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, p.x, p.y) && area(p.prev, p, p.next) >= 0) return false;\n p = p.prevZ;\n }\n\n // look for remaining points in increasing z-order\n while (n && n.z <= maxZ) {\n if (n.x >= x0 && n.x <= x1 && n.y >= y0 && n.y <= y1 && n !== a && n !== c &&\n pointInTriangle(ax, ay, bx, by, cx, cy, n.x, n.y) && area(n.prev, n, n.next) >= 0) return false;\n n = n.nextZ;\n }\n\n return true;\n}\n\n// go through all polygon nodes and cure small local self-intersections\nfunction cureLocalIntersections(start, triangles, dim) {\n var p = start;\n do {\n var a = p.prev,\n b = p.next.next;\n\n if (!equals(a, b) && intersects(a, p, p.next, b) && locallyInside(a, b) && locallyInside(b, a)) {\n\n triangles.push(a.i / dim | 0);\n triangles.push(p.i / dim | 0);\n triangles.push(b.i / dim | 0);\n\n // remove two nodes involved\n removeNode(p);\n removeNode(p.next);\n\n p = start = b;\n }\n p = p.next;\n } while (p !== start);\n\n return filterPoints(p);\n}\n\n// try splitting polygon into two and triangulate them independently\nfunction splitEarcut(start, triangles, dim, minX, minY, invSize) {\n // look for a valid diagonal that divides the polygon into two\n var a = start;\n do {\n var b = a.next.next;\n while (b !== a.prev) {\n if (a.i !== b.i && isValidDiagonal(a, b)) {\n // split the polygon in two by the diagonal\n var c = splitPolygon(a, b);\n\n // filter colinear points around the cuts\n a = filterPoints(a, a.next);\n c = filterPoints(c, c.next);\n\n // run earcut on each half\n earcutLinked(a, triangles, dim, minX, minY, invSize, 0);\n earcutLinked(c, triangles, dim, minX, minY, invSize, 0);\n return;\n }\n b = b.next;\n }\n a = a.next;\n } while (a !== start);\n}\n\n// link every hole into the outer loop, producing a single-ring polygon without holes\nfunction eliminateHoles(data, holeIndices, outerNode, dim) {\n var queue = [],\n i, len, start, end, list;\n\n for (i = 0, len = holeIndices.length; i < len; i++) {\n start = holeIndices[i] * dim;\n end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n list = linkedList(data, start, end, dim, false);\n if (list === list.next) list.steiner = true;\n queue.push(getLeftmost(list));\n }\n\n queue.sort(compareX);\n\n // process holes from left to right\n for (i = 0; i < queue.length; i++) {\n outerNode = eliminateHole(queue[i], outerNode);\n }\n\n return outerNode;\n}\n\nfunction compareX(a, b) {\n return a.x - b.x;\n}\n\n// find a bridge between vertices that connects hole with an outer ring and and link it\nfunction eliminateHole(hole, outerNode) {\n var bridge = findHoleBridge(hole, outerNode);\n if (!bridge) {\n return outerNode;\n }\n\n var bridgeReverse = splitPolygon(bridge, hole);\n\n // filter collinear points around the cuts\n filterPoints(bridgeReverse, bridgeReverse.next);\n return filterPoints(bridge, bridge.next);\n}\n\n// David Eberly's algorithm for finding a bridge between hole and outer polygon\nfunction findHoleBridge(hole, outerNode) {\n var p = outerNode,\n hx = hole.x,\n hy = hole.y,\n qx = -Infinity,\n m;\n\n // find a segment intersected by a ray from the hole's leftmost point to the left;\n // segment's endpoint with lesser x will be potential connection point\n do {\n if (hy <= p.y && hy >= p.next.y && p.next.y !== p.y) {\n var x = p.x + (hy - p.y) * (p.next.x - p.x) / (p.next.y - p.y);\n if (x <= hx && x > qx) {\n qx = x;\n m = p.x < p.next.x ? p : p.next;\n if (x === hx) return m; // hole touches outer segment; pick leftmost endpoint\n }\n }\n p = p.next;\n } while (p !== outerNode);\n\n if (!m) return null;\n\n // look for points inside the triangle of hole point, segment intersection and endpoint;\n // if there are no points found, we have a valid connection;\n // otherwise choose the point of the minimum angle with the ray as connection point\n\n var stop = m,\n mx = m.x,\n my = m.y,\n tanMin = Infinity,\n tan;\n\n p = m;\n\n do {\n if (hx >= p.x && p.x >= mx && hx !== p.x &&\n pointInTriangle(hy < my ? hx : qx, hy, mx, my, hy < my ? qx : hx, hy, p.x, p.y)) {\n\n tan = Math.abs(hy - p.y) / (hx - p.x); // tangential\n\n if (locallyInside(p, hole) &&\n (tan < tanMin || (tan === tanMin && (p.x > m.x || (p.x === m.x && sectorContainsSector(m, p)))))) {\n m = p;\n tanMin = tan;\n }\n }\n\n p = p.next;\n } while (p !== stop);\n\n return m;\n}\n\n// whether sector in vertex m contains sector in vertex p in the same coordinates\nfunction sectorContainsSector(m, p) {\n return area(m.prev, m, p.prev) < 0 && area(p.next, m, m.next) < 0;\n}\n\n// interlink polygon nodes in z-order\nfunction indexCurve(start, minX, minY, invSize) {\n var p = start;\n do {\n if (p.z === 0) p.z = zOrder(p.x, p.y, minX, minY, invSize);\n p.prevZ = p.prev;\n p.nextZ = p.next;\n p = p.next;\n } while (p !== start);\n\n p.prevZ.nextZ = null;\n p.prevZ = null;\n\n sortLinked(p);\n}\n\n// Simon Tatham's linked list merge sort algorithm\n// http://www.chiark.greenend.org.uk/~sgtatham/algorithms/listsort.html\nfunction sortLinked(list) {\n var i, p, q, e, tail, numMerges, pSize, qSize,\n inSize = 1;\n\n do {\n p = list;\n list = null;\n tail = null;\n numMerges = 0;\n\n while (p) {\n numMerges++;\n q = p;\n pSize = 0;\n for (i = 0; i < inSize; i++) {\n pSize++;\n q = q.nextZ;\n if (!q) break;\n }\n qSize = inSize;\n\n while (pSize > 0 || (qSize > 0 && q)) {\n\n if (pSize !== 0 && (qSize === 0 || !q || p.z <= q.z)) {\n e = p;\n p = p.nextZ;\n pSize--;\n } else {\n e = q;\n q = q.nextZ;\n qSize--;\n }\n\n if (tail) tail.nextZ = e;\n else list = e;\n\n e.prevZ = tail;\n tail = e;\n }\n\n p = q;\n }\n\n tail.nextZ = null;\n inSize *= 2;\n\n } while (numMerges > 1);\n\n return list;\n}\n\n// z-order of a point given coords and inverse of the longer side of data bbox\nfunction zOrder(x, y, minX, minY, invSize) {\n // coords are transformed into non-negative 15-bit integer range\n x = (x - minX) * invSize | 0;\n y = (y - minY) * invSize | 0;\n\n x = (x | (x << 8)) & 0x00FF00FF;\n x = (x | (x << 4)) & 0x0F0F0F0F;\n x = (x | (x << 2)) & 0x33333333;\n x = (x | (x << 1)) & 0x55555555;\n\n y = (y | (y << 8)) & 0x00FF00FF;\n y = (y | (y << 4)) & 0x0F0F0F0F;\n y = (y | (y << 2)) & 0x33333333;\n y = (y | (y << 1)) & 0x55555555;\n\n return x | (y << 1);\n}\n\n// find the leftmost node of a polygon ring\nfunction getLeftmost(start) {\n var p = start,\n leftmost = start;\n do {\n if (p.x < leftmost.x || (p.x === leftmost.x && p.y < leftmost.y)) leftmost = p;\n p = p.next;\n } while (p !== start);\n\n return leftmost;\n}\n\n// check if a point lies within a convex triangle\nfunction pointInTriangle(ax, ay, bx, by, cx, cy, px, py) {\n return (cx - px) * (ay - py) >= (ax - px) * (cy - py) &&\n (ax - px) * (by - py) >= (bx - px) * (ay - py) &&\n (bx - px) * (cy - py) >= (cx - px) * (by - py);\n}\n\n// check if a diagonal between two polygon nodes is valid (lies in polygon interior)\nfunction isValidDiagonal(a, b) {\n return a.next.i !== b.i && a.prev.i !== b.i && !intersectsPolygon(a, b) && // dones't intersect other edges\n (locallyInside(a, b) && locallyInside(b, a) && middleInside(a, b) && // locally visible\n (area(a.prev, a, b.prev) || area(a, b.prev, b)) || // does not create opposite-facing sectors\n equals(a, b) && area(a.prev, a, a.next) > 0 && area(b.prev, b, b.next) > 0); // special zero-length case\n}\n\n// signed area of a triangle\nfunction area(p, q, r) {\n return (q.y - p.y) * (r.x - q.x) - (q.x - p.x) * (r.y - q.y);\n}\n\n// check if two points are equal\nfunction equals(p1, p2) {\n return p1.x === p2.x && p1.y === p2.y;\n}\n\n// check if two segments intersect\nfunction intersects(p1, q1, p2, q2) {\n var o1 = sign(area(p1, q1, p2));\n var o2 = sign(area(p1, q1, q2));\n var o3 = sign(area(p2, q2, p1));\n var o4 = sign(area(p2, q2, q1));\n\n if (o1 !== o2 && o3 !== o4) return true; // general case\n\n if (o1 === 0 && onSegment(p1, p2, q1)) return true; // p1, q1 and p2 are collinear and p2 lies on p1q1\n if (o2 === 0 && onSegment(p1, q2, q1)) return true; // p1, q1 and q2 are collinear and q2 lies on p1q1\n if (o3 === 0 && onSegment(p2, p1, q2)) return true; // p2, q2 and p1 are collinear and p1 lies on p2q2\n if (o4 === 0 && onSegment(p2, q1, q2)) return true; // p2, q2 and q1 are collinear and q1 lies on p2q2\n\n return false;\n}\n\n// for collinear points p, q, r, check if point q lies on segment pr\nfunction onSegment(p, q, r) {\n return q.x <= Math.max(p.x, r.x) && q.x >= Math.min(p.x, r.x) && q.y <= Math.max(p.y, r.y) && q.y >= Math.min(p.y, r.y);\n}\n\nfunction sign(num) {\n return num > 0 ? 1 : num < 0 ? -1 : 0;\n}\n\n// check if a polygon diagonal intersects any polygon segments\nfunction intersectsPolygon(a, b) {\n var p = a;\n do {\n if (p.i !== a.i && p.next.i !== a.i && p.i !== b.i && p.next.i !== b.i &&\n intersects(p, p.next, a, b)) return true;\n p = p.next;\n } while (p !== a);\n\n return false;\n}\n\n// check if a polygon diagonal is locally inside the polygon\nfunction locallyInside(a, b) {\n return area(a.prev, a, a.next) < 0 ?\n area(a, b, a.next) >= 0 && area(a, a.prev, b) >= 0 :\n area(a, b, a.prev) < 0 || area(a, a.next, b) < 0;\n}\n\n// check if the middle point of a polygon diagonal is inside the polygon\nfunction middleInside(a, b) {\n var p = a,\n inside = false,\n px = (a.x + b.x) / 2,\n py = (a.y + b.y) / 2;\n do {\n if (((p.y > py) !== (p.next.y > py)) && p.next.y !== p.y &&\n (px < (p.next.x - p.x) * (py - p.y) / (p.next.y - p.y) + p.x))\n inside = !inside;\n p = p.next;\n } while (p !== a);\n\n return inside;\n}\n\n// link two polygon vertices with a bridge; if the vertices belong to the same ring, it splits polygon into two;\n// if one belongs to the outer ring and another to a hole, it merges it into a single ring\nfunction splitPolygon(a, b) {\n var a2 = new Node(a.i, a.x, a.y),\n b2 = new Node(b.i, b.x, b.y),\n an = a.next,\n bp = b.prev;\n\n a.next = b;\n b.prev = a;\n\n a2.next = an;\n an.prev = a2;\n\n b2.next = a2;\n a2.prev = b2;\n\n bp.next = b2;\n b2.prev = bp;\n\n return b2;\n}\n\n// create a node and optionally link it with previous one (in a circular doubly linked list)\nfunction insertNode(i, x, y, last) {\n var p = new Node(i, x, y);\n\n if (!last) {\n p.prev = p;\n p.next = p;\n\n } else {\n p.next = last.next;\n p.prev = last;\n last.next.prev = p;\n last.next = p;\n }\n return p;\n}\n\nfunction removeNode(p) {\n p.next.prev = p.prev;\n p.prev.next = p.next;\n\n if (p.prevZ) p.prevZ.nextZ = p.nextZ;\n if (p.nextZ) p.nextZ.prevZ = p.prevZ;\n}\n\nfunction Node(i, x, y) {\n // vertex index in coordinates array\n this.i = i;\n\n // vertex coordinates\n this.x = x;\n this.y = y;\n\n // previous and next vertex nodes in a polygon ring\n this.prev = null;\n this.next = null;\n\n // z-order curve value\n this.z = 0;\n\n // previous and next nodes in z-order\n this.prevZ = null;\n this.nextZ = null;\n\n // indicates whether this is a steiner point\n this.steiner = false;\n}\n\n// return a percentage difference between the polygon area and its triangulation area;\n// used to verify correctness of triangulation\nearcut.deviation = function (data, holeIndices, dim, triangles) {\n var hasHoles = holeIndices && holeIndices.length;\n var outerLen = hasHoles ? holeIndices[0] * dim : data.length;\n\n var polygonArea = Math.abs(signedArea(data, 0, outerLen, dim));\n if (hasHoles) {\n for (var i = 0, len = holeIndices.length; i < len; i++) {\n var start = holeIndices[i] * dim;\n var end = i < len - 1 ? holeIndices[i + 1] * dim : data.length;\n polygonArea -= Math.abs(signedArea(data, start, end, dim));\n }\n }\n\n var trianglesArea = 0;\n for (i = 0; i < triangles.length; i += 3) {\n var a = triangles[i] * dim;\n var b = triangles[i + 1] * dim;\n var c = triangles[i + 2] * dim;\n trianglesArea += Math.abs(\n (data[a] - data[c]) * (data[b + 1] - data[a + 1]) -\n (data[a] - data[b]) * (data[c + 1] - data[a + 1]));\n }\n\n return polygonArea === 0 && trianglesArea === 0 ? 0 :\n Math.abs((trianglesArea - polygonArea) / polygonArea);\n};\n\nfunction signedArea(data, start, end, dim) {\n var sum = 0;\n for (var i = start, j = end - dim; i < end; i += dim) {\n sum += (data[j] - data[i]) * (data[i + 1] + data[j + 1]);\n j = i;\n }\n return sum;\n}\n\n// turn a polygon in a multi-dimensional array form (e.g. as in GeoJSON) into a form Earcut accepts\nearcut.flatten = function (data) {\n var dim = data[0][0].length,\n result = {vertices: [], holes: [], dimensions: dim},\n holeIndex = 0;\n\n for (var i = 0; i < data.length; i++) {\n for (var j = 0; j < data[i].length; j++) {\n for (var d = 0; d < dim; d++) result.vertices.push(data[i][j][d]);\n }\n if (i > 0) {\n holeIndex += data[i - 1].length;\n result.holes.push(holeIndex);\n }\n }\n return result;\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","'use strict';\n\nmodule.exports = Pbf;\n\nvar ieee754 = require('ieee754');\n\nfunction Pbf(buf) {\n this.buf = ArrayBuffer.isView && ArrayBuffer.isView(buf) ? buf : new Uint8Array(buf || 0);\n this.pos = 0;\n this.type = 0;\n this.length = this.buf.length;\n}\n\nPbf.Varint = 0; // varint: int32, int64, uint32, uint64, sint32, sint64, bool, enum\nPbf.Fixed64 = 1; // 64-bit: double, fixed64, sfixed64\nPbf.Bytes = 2; // length-delimited: string, bytes, embedded messages, packed repeated fields\nPbf.Fixed32 = 5; // 32-bit: float, fixed32, sfixed32\n\nvar SHIFT_LEFT_32 = (1 << 16) * (1 << 16),\n SHIFT_RIGHT_32 = 1 / SHIFT_LEFT_32;\n\n// Threshold chosen based on both benchmarking and knowledge about browser string\n// data structures (which currently switch structure types at 12 bytes or more)\nvar TEXT_DECODER_MIN_LENGTH = 12;\nvar utf8TextDecoder = typeof TextDecoder === 'undefined' ? null : new TextDecoder('utf8');\n\nPbf.prototype = {\n\n destroy: function() {\n this.buf = null;\n },\n\n // === READING =================================================================\n\n readFields: function(readField, result, end) {\n end = end || this.length;\n\n while (this.pos < end) {\n var val = this.readVarint(),\n tag = val >> 3,\n startPos = this.pos;\n\n this.type = val & 0x7;\n readField(tag, result, this);\n\n if (this.pos === startPos) this.skip(val);\n }\n return result;\n },\n\n readMessage: function(readField, result) {\n return this.readFields(readField, result, this.readVarint() + this.pos);\n },\n\n readFixed32: function() {\n var val = readUInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n readSFixed32: function() {\n var val = readInt32(this.buf, this.pos);\n this.pos += 4;\n return val;\n },\n\n // 64-bit int handling is based on github.com/dpw/node-buffer-more-ints (MIT-licensed)\n\n readFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readUInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readSFixed64: function() {\n var val = readUInt32(this.buf, this.pos) + readInt32(this.buf, this.pos + 4) * SHIFT_LEFT_32;\n this.pos += 8;\n return val;\n },\n\n readFloat: function() {\n var val = ieee754.read(this.buf, this.pos, true, 23, 4);\n this.pos += 4;\n return val;\n },\n\n readDouble: function() {\n var val = ieee754.read(this.buf, this.pos, true, 52, 8);\n this.pos += 8;\n return val;\n },\n\n readVarint: function(isSigned) {\n var buf = this.buf,\n val, b;\n\n b = buf[this.pos++]; val = b & 0x7f; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 7; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 14; if (b < 0x80) return val;\n b = buf[this.pos++]; val |= (b & 0x7f) << 21; if (b < 0x80) return val;\n b = buf[this.pos]; val |= (b & 0x0f) << 28;\n\n return readVarintRemainder(val, isSigned, this);\n },\n\n readVarint64: function() { // for compatibility with v2.0.1\n return this.readVarint(true);\n },\n\n readSVarint: function() {\n var num = this.readVarint();\n return num % 2 === 1 ? (num + 1) / -2 : num / 2; // zigzag encoding\n },\n\n readBoolean: function() {\n return Boolean(this.readVarint());\n },\n\n readString: function() {\n var end = this.readVarint() + this.pos;\n var pos = this.pos;\n this.pos = end;\n\n if (end - pos >= TEXT_DECODER_MIN_LENGTH && utf8TextDecoder) {\n // longer strings are fast with the built-in browser TextDecoder API\n return readUtf8TextDecoder(this.buf, pos, end);\n }\n // short strings are fast with our custom implementation\n return readUtf8(this.buf, pos, end);\n },\n\n readBytes: function() {\n var end = this.readVarint() + this.pos,\n buffer = this.buf.subarray(this.pos, end);\n this.pos = end;\n return buffer;\n },\n\n // verbose for performance reasons; doesn't affect gzipped size\n\n readPackedVarint: function(arr, isSigned) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readVarint(isSigned));\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readVarint(isSigned));\n return arr;\n },\n readPackedSVarint: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSVarint());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSVarint());\n return arr;\n },\n readPackedBoolean: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readBoolean());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readBoolean());\n return arr;\n },\n readPackedFloat: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFloat());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFloat());\n return arr;\n },\n readPackedDouble: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readDouble());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readDouble());\n return arr;\n },\n readPackedFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed32());\n return arr;\n },\n readPackedSFixed32: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed32());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed32());\n return arr;\n },\n readPackedFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readFixed64());\n return arr;\n },\n readPackedSFixed64: function(arr) {\n if (this.type !== Pbf.Bytes) return arr.push(this.readSFixed64());\n var end = readPackedEnd(this);\n arr = arr || [];\n while (this.pos < end) arr.push(this.readSFixed64());\n return arr;\n },\n\n skip: function(val) {\n var type = val & 0x7;\n if (type === Pbf.Varint) while (this.buf[this.pos++] > 0x7f) {}\n else if (type === Pbf.Bytes) this.pos = this.readVarint() + this.pos;\n else if (type === Pbf.Fixed32) this.pos += 4;\n else if (type === Pbf.Fixed64) this.pos += 8;\n else throw new Error('Unimplemented type: ' + type);\n },\n\n // === WRITING =================================================================\n\n writeTag: function(tag, type) {\n this.writeVarint((tag << 3) | type);\n },\n\n realloc: function(min) {\n var length = this.length || 16;\n\n while (length < this.pos + min) length *= 2;\n\n if (length !== this.length) {\n var buf = new Uint8Array(length);\n buf.set(this.buf);\n this.buf = buf;\n this.length = length;\n }\n },\n\n finish: function() {\n this.length = this.pos;\n this.pos = 0;\n return this.buf.subarray(0, this.length);\n },\n\n writeFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeSFixed32: function(val) {\n this.realloc(4);\n writeInt32(this.buf, val, this.pos);\n this.pos += 4;\n },\n\n writeFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeSFixed64: function(val) {\n this.realloc(8);\n writeInt32(this.buf, val & -1, this.pos);\n writeInt32(this.buf, Math.floor(val * SHIFT_RIGHT_32), this.pos + 4);\n this.pos += 8;\n },\n\n writeVarint: function(val) {\n val = +val || 0;\n\n if (val > 0xfffffff || val < 0) {\n writeBigVarint(val, this);\n return;\n }\n\n this.realloc(4);\n\n this.buf[this.pos++] = val & 0x7f | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = ((val >>>= 7) & 0x7f) | (val > 0x7f ? 0x80 : 0); if (val <= 0x7f) return;\n this.buf[this.pos++] = (val >>> 7) & 0x7f;\n },\n\n writeSVarint: function(val) {\n this.writeVarint(val < 0 ? -val * 2 - 1 : val * 2);\n },\n\n writeBoolean: function(val) {\n this.writeVarint(Boolean(val));\n },\n\n writeString: function(str) {\n str = String(str);\n this.realloc(str.length * 4);\n\n this.pos++; // reserve 1 byte for short string length\n\n var startPos = this.pos;\n // write the string directly to the buffer and see how much was written\n this.pos = writeUtf8(this.buf, str, this.pos);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeFloat: function(val) {\n this.realloc(4);\n ieee754.write(this.buf, val, this.pos, true, 23, 4);\n this.pos += 4;\n },\n\n writeDouble: function(val) {\n this.realloc(8);\n ieee754.write(this.buf, val, this.pos, true, 52, 8);\n this.pos += 8;\n },\n\n writeBytes: function(buffer) {\n var len = buffer.length;\n this.writeVarint(len);\n this.realloc(len);\n for (var i = 0; i < len; i++) this.buf[this.pos++] = buffer[i];\n },\n\n writeRawMessage: function(fn, obj) {\n this.pos++; // reserve 1 byte for short message length\n\n // write the message directly to the buffer and see how much was written\n var startPos = this.pos;\n fn(obj, this);\n var len = this.pos - startPos;\n\n if (len >= 0x80) makeRoomForExtraLength(startPos, len, this);\n\n // finally, write the message length in the reserved place and restore the position\n this.pos = startPos - 1;\n this.writeVarint(len);\n this.pos += len;\n },\n\n writeMessage: function(tag, fn, obj) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeRawMessage(fn, obj);\n },\n\n writePackedVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedVarint, arr); },\n writePackedSVarint: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSVarint, arr); },\n writePackedBoolean: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedBoolean, arr); },\n writePackedFloat: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFloat, arr); },\n writePackedDouble: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedDouble, arr); },\n writePackedFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed32, arr); },\n writePackedSFixed32: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed32, arr); },\n writePackedFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedFixed64, arr); },\n writePackedSFixed64: function(tag, arr) { if (arr.length) this.writeMessage(tag, writePackedSFixed64, arr); },\n\n writeBytesField: function(tag, buffer) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeBytes(buffer);\n },\n writeFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFixed32(val);\n },\n writeSFixed32Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeSFixed32(val);\n },\n writeFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeFixed64(val);\n },\n writeSFixed64Field: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeSFixed64(val);\n },\n writeVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeVarint(val);\n },\n writeSVarintField: function(tag, val) {\n this.writeTag(tag, Pbf.Varint);\n this.writeSVarint(val);\n },\n writeStringField: function(tag, str) {\n this.writeTag(tag, Pbf.Bytes);\n this.writeString(str);\n },\n writeFloatField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed32);\n this.writeFloat(val);\n },\n writeDoubleField: function(tag, val) {\n this.writeTag(tag, Pbf.Fixed64);\n this.writeDouble(val);\n },\n writeBooleanField: function(tag, val) {\n this.writeVarintField(tag, Boolean(val));\n }\n};\n\nfunction readVarintRemainder(l, s, p) {\n var buf = p.buf,\n h, b;\n\n b = buf[p.pos++]; h = (b & 0x70) >> 4; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 3; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 10; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 17; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x7f) << 24; if (b < 0x80) return toNum(l, h, s);\n b = buf[p.pos++]; h |= (b & 0x01) << 31; if (b < 0x80) return toNum(l, h, s);\n\n throw new Error('Expected varint not more than 10 bytes');\n}\n\nfunction readPackedEnd(pbf) {\n return pbf.type === Pbf.Bytes ?\n pbf.readVarint() + pbf.pos : pbf.pos + 1;\n}\n\nfunction toNum(low, high, isSigned) {\n if (isSigned) {\n return high * 0x100000000 + (low >>> 0);\n }\n\n return ((high >>> 0) * 0x100000000) + (low >>> 0);\n}\n\nfunction writeBigVarint(val, pbf) {\n var low, high;\n\n if (val >= 0) {\n low = (val % 0x100000000) | 0;\n high = (val / 0x100000000) | 0;\n } else {\n low = ~(-val % 0x100000000);\n high = ~(-val / 0x100000000);\n\n if (low ^ 0xffffffff) {\n low = (low + 1) | 0;\n } else {\n low = 0;\n high = (high + 1) | 0;\n }\n }\n\n if (val >= 0x10000000000000000 || val < -0x10000000000000000) {\n throw new Error('Given varint doesn\\'t fit into 10 bytes');\n }\n\n pbf.realloc(10);\n\n writeBigVarintLow(low, high, pbf);\n writeBigVarintHigh(high, pbf);\n}\n\nfunction writeBigVarintLow(low, high, pbf) {\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos++] = low & 0x7f | 0x80; low >>>= 7;\n pbf.buf[pbf.pos] = low & 0x7f;\n}\n\nfunction writeBigVarintHigh(high, pbf) {\n var lsb = (high & 0x07) << 4;\n\n pbf.buf[pbf.pos++] |= lsb | ((high >>>= 3) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f | ((high >>>= 7) ? 0x80 : 0); if (!high) return;\n pbf.buf[pbf.pos++] = high & 0x7f;\n}\n\nfunction makeRoomForExtraLength(startPos, len, pbf) {\n var extraLen =\n len <= 0x3fff ? 1 :\n len <= 0x1fffff ? 2 :\n len <= 0xfffffff ? 3 : Math.floor(Math.log(len) / (Math.LN2 * 7));\n\n // if 1 byte isn't enough for encoding message length, shift the data to the right\n pbf.realloc(extraLen);\n for (var i = pbf.pos - 1; i >= startPos; i--) pbf.buf[i + extraLen] = pbf.buf[i];\n}\n\nfunction writePackedVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeVarint(arr[i]); }\nfunction writePackedSVarint(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSVarint(arr[i]); }\nfunction writePackedFloat(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFloat(arr[i]); }\nfunction writePackedDouble(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeDouble(arr[i]); }\nfunction writePackedBoolean(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeBoolean(arr[i]); }\nfunction writePackedFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed32(arr[i]); }\nfunction writePackedSFixed32(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed32(arr[i]); }\nfunction writePackedFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeFixed64(arr[i]); }\nfunction writePackedSFixed64(arr, pbf) { for (var i = 0; i < arr.length; i++) pbf.writeSFixed64(arr[i]); }\n\n// Buffer code below from https://github.com/feross/buffer, MIT-licensed\n\nfunction readUInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] * 0x1000000);\n}\n\nfunction writeInt32(buf, val, pos) {\n buf[pos] = val;\n buf[pos + 1] = (val >>> 8);\n buf[pos + 2] = (val >>> 16);\n buf[pos + 3] = (val >>> 24);\n}\n\nfunction readInt32(buf, pos) {\n return ((buf[pos]) |\n (buf[pos + 1] << 8) |\n (buf[pos + 2] << 16)) +\n (buf[pos + 3] << 24);\n}\n\nfunction readUtf8(buf, pos, end) {\n var str = '';\n var i = pos;\n\n while (i < end) {\n var b0 = buf[i];\n var c = null; // codepoint\n var bytesPerSequence =\n b0 > 0xEF ? 4 :\n b0 > 0xDF ? 3 :\n b0 > 0xBF ? 2 : 1;\n\n if (i + bytesPerSequence > end) break;\n\n var b1, b2, b3;\n\n if (bytesPerSequence === 1) {\n if (b0 < 0x80) {\n c = b0;\n }\n } else if (bytesPerSequence === 2) {\n b1 = buf[i + 1];\n if ((b1 & 0xC0) === 0x80) {\n c = (b0 & 0x1F) << 0x6 | (b1 & 0x3F);\n if (c <= 0x7F) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 3) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0xC | (b1 & 0x3F) << 0x6 | (b2 & 0x3F);\n if (c <= 0x7FF || (c >= 0xD800 && c <= 0xDFFF)) {\n c = null;\n }\n }\n } else if (bytesPerSequence === 4) {\n b1 = buf[i + 1];\n b2 = buf[i + 2];\n b3 = buf[i + 3];\n if ((b1 & 0xC0) === 0x80 && (b2 & 0xC0) === 0x80 && (b3 & 0xC0) === 0x80) {\n c = (b0 & 0xF) << 0x12 | (b1 & 0x3F) << 0xC | (b2 & 0x3F) << 0x6 | (b3 & 0x3F);\n if (c <= 0xFFFF || c >= 0x110000) {\n c = null;\n }\n }\n }\n\n if (c === null) {\n c = 0xFFFD;\n bytesPerSequence = 1;\n\n } else if (c > 0xFFFF) {\n c -= 0x10000;\n str += String.fromCharCode(c >>> 10 & 0x3FF | 0xD800);\n c = 0xDC00 | c & 0x3FF;\n }\n\n str += String.fromCharCode(c);\n i += bytesPerSequence;\n }\n\n return str;\n}\n\nfunction readUtf8TextDecoder(buf, pos, end) {\n return utf8TextDecoder.decode(buf.subarray(pos, end));\n}\n\nfunction writeUtf8(buf, str, pos) {\n for (var i = 0, c, lead; i < str.length; i++) {\n c = str.charCodeAt(i); // code point\n\n if (c > 0xD7FF && c < 0xE000) {\n if (lead) {\n if (c < 0xDC00) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = c;\n continue;\n } else {\n c = lead - 0xD800 << 10 | c - 0xDC00 | 0x10000;\n lead = null;\n }\n } else {\n if (c > 0xDBFF || (i + 1 === str.length)) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n } else {\n lead = c;\n }\n continue;\n }\n } else if (lead) {\n buf[pos++] = 0xEF;\n buf[pos++] = 0xBF;\n buf[pos++] = 0xBD;\n lead = null;\n }\n\n if (c < 0x80) {\n buf[pos++] = c;\n } else {\n if (c < 0x800) {\n buf[pos++] = c >> 0x6 | 0xC0;\n } else {\n if (c < 0x10000) {\n buf[pos++] = c >> 0xC | 0xE0;\n } else {\n buf[pos++] = c >> 0x12 | 0xF0;\n buf[pos++] = c >> 0xC & 0x3F | 0x80;\n }\n buf[pos++] = c >> 0x6 & 0x3F | 0x80;\n }\n buf[pos++] = c & 0x3F | 0x80;\n }\n }\n return pos;\n}\n","export var PJD_3PARAM = 1;\nexport var PJD_7PARAM = 2;\nexport var PJD_GRIDSHIFT = 3;\nexport var PJD_WGS84 = 4; // WGS84 or equivalent\nexport var PJD_NODATUM = 5; // WGS84 or equivalent\nexport var SRS_WGS84_SEMIMAJOR = 6378137.0; // only used in grid shift transforms\nexport var SRS_WGS84_SEMIMINOR = 6356752.314; // only used in grid shift transforms\nexport var SRS_WGS84_ESQUARED = 0.0066943799901413165; // only used in grid shift transforms\nexport var SEC_TO_RAD = 4.84813681109535993589914102357e-6;\nexport var HALF_PI = Math.PI/2;\n// ellipoid pj_set_ell.c\nexport var SIXTH = 0.1666666666666666667;\n/* 1/6 */\nexport var RA4 = 0.04722222222222222222;\n/* 17/360 */\nexport var RA6 = 0.02215608465608465608;\nexport var EPSLN = 1.0e-10;\n// you'd think you could use Number.EPSILON above but that makes\n// Mollweide get into an infinate loop.\n\nexport var D2R = 0.01745329251994329577;\nexport var R2D = 57.29577951308232088;\nexport var FORTPI = Math.PI/4;\nexport var TWO_PI = Math.PI * 2;\n// SPI is slightly greater than Math.PI, so values that exceed the -180..180\n// degree range by a tiny amount don't get wrapped. This prevents points that\n// have drifted from their original location along the 180th meridian (due to\n// floating point error) from changing their sign.\nexport var SPI = 3.14159265359;\n","var exports = {};\nexport {exports as default};\n\nexports.greenwich = 0.0; //\"0dE\",\nexports.lisbon = -9.131906111111; //\"9d07'54.862\\\"W\",\nexports.paris = 2.337229166667; //\"2d20'14.025\\\"E\",\nexports.bogota = -74.080916666667; //\"74d04'51.3\\\"W\",\nexports.madrid = -3.687938888889; //\"3d41'16.58\\\"W\",\nexports.rome = 12.452333333333; //\"12d27'8.4\\\"E\",\nexports.bern = 7.439583333333; //\"7d26'22.5\\\"E\",\nexports.jakarta = 106.807719444444; //\"106d48'27.79\\\"E\",\nexports.ferro = -17.666666666667; //\"17d40'W\",\nexports.brussels = 4.367975; //\"4d22'4.71\\\"E\",\nexports.stockholm = 18.058277777778; //\"18d3'29.8\\\"E\",\nexports.athens = 23.7163375; //\"23d42'58.815\\\"E\",\nexports.oslo = 10.722916666667; //\"10d43'22.5\\\"E\"\n","export default {\n ft: {to_meter: 0.3048},\n 'us-ft': {to_meter: 1200 / 3937}\n};\n","var ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nexport default function match(obj, key) {\n if (obj[key]) {\n return obj[key];\n }\n var keys = Object.keys(obj);\n var lkey = key.toLowerCase().replace(ignoredChar, '');\n var i = -1;\n var testkey, processedKey;\n while (++i < keys.length) {\n testkey = keys[i];\n processedKey = testkey.toLowerCase().replace(ignoredChar, '');\n if (processedKey === lkey) {\n return obj[testkey];\n }\n }\n}\n","import {D2R} from './constants/values';\nimport PrimeMeridian from './constants/PrimeMeridian';\nimport units from './constants/units';\nimport match from './match';\n\nexport default function(defData) {\n var self = {};\n var paramObj = defData.split('+').map(function(v) {\n return v.trim();\n }).filter(function(a) {\n return a;\n }).reduce(function(p, a) {\n var split = a.split('=');\n split.push(true);\n p[split[0].toLowerCase()] = split[1];\n return p;\n }, {});\n var paramName, paramVal, paramOutname;\n var params = {\n proj: 'projName',\n datum: 'datumCode',\n rf: function(v) {\n self.rf = parseFloat(v);\n },\n lat_0: function(v) {\n self.lat0 = v * D2R;\n },\n lat_1: function(v) {\n self.lat1 = v * D2R;\n },\n lat_2: function(v) {\n self.lat2 = v * D2R;\n },\n lat_ts: function(v) {\n self.lat_ts = v * D2R;\n },\n lon_0: function(v) {\n self.long0 = v * D2R;\n },\n lon_1: function(v) {\n self.long1 = v * D2R;\n },\n lon_2: function(v) {\n self.long2 = v * D2R;\n },\n alpha: function(v) {\n self.alpha = parseFloat(v) * D2R;\n },\n gamma: function(v) {\n self.rectified_grid_angle = parseFloat(v);\n },\n lonc: function(v) {\n self.longc = v * D2R;\n },\n x_0: function(v) {\n self.x0 = parseFloat(v);\n },\n y_0: function(v) {\n self.y0 = parseFloat(v);\n },\n k_0: function(v) {\n self.k0 = parseFloat(v);\n },\n k: function(v) {\n self.k0 = parseFloat(v);\n },\n a: function(v) {\n self.a = parseFloat(v);\n },\n b: function(v) {\n self.b = parseFloat(v);\n },\n r_a: function() {\n self.R_A = true;\n },\n zone: function(v) {\n self.zone = parseInt(v, 10);\n },\n south: function() {\n self.utmSouth = true;\n },\n towgs84: function(v) {\n self.datum_params = v.split(\",\").map(function(a) {\n return parseFloat(a);\n });\n },\n to_meter: function(v) {\n self.to_meter = parseFloat(v);\n },\n units: function(v) {\n self.units = v;\n var unit = match(units, v);\n if (unit) {\n self.to_meter = unit.to_meter;\n }\n },\n from_greenwich: function(v) {\n self.from_greenwich = v * D2R;\n },\n pm: function(v) {\n var pm = match(PrimeMeridian, v);\n self.from_greenwich = (pm ? pm : parseFloat(v)) * D2R;\n },\n nadgrids: function(v) {\n if (v === '@null') {\n self.datumCode = 'none';\n }\n else {\n self.nadgrids = v;\n }\n },\n axis: function(v) {\n var legalAxis = \"ewnsud\";\n if (v.length === 3 && legalAxis.indexOf(v.substr(0, 1)) !== -1 && legalAxis.indexOf(v.substr(1, 1)) !== -1 && legalAxis.indexOf(v.substr(2, 1)) !== -1) {\n self.axis = v;\n }\n },\n approx: function() {\n self.approx = true;\n }\n };\n for (paramName in paramObj) {\n paramVal = paramObj[paramName];\n if (paramName in params) {\n paramOutname = params[paramName];\n if (typeof paramOutname === 'function') {\n paramOutname(paramVal);\n }\n else {\n self[paramOutname] = paramVal;\n }\n }\n else {\n self[paramName] = paramVal;\n }\n }\n if(typeof self.datumCode === 'string' && self.datumCode !== \"WGS84\"){\n self.datumCode = self.datumCode.toLowerCase();\n }\n return self;\n}\n","export default parseString;\n\nvar NEUTRAL = 1;\nvar KEYWORD = 2;\nvar NUMBER = 3;\nvar QUOTED = 4;\nvar AFTERQUOTE = 5;\nvar ENDED = -1;\nvar whitespace = /\\s/;\nvar latin = /[A-Za-z]/;\nvar keyword = /[A-Za-z84_]/;\nvar endThings = /[,\\]]/;\nvar digets = /[\\d\\.E\\-\\+]/;\n// const ignoredChar = /[\\s_\\-\\/\\(\\)]/g;\nfunction Parser(text) {\n if (typeof text !== 'string') {\n throw new Error('not a string');\n }\n this.text = text.trim();\n this.level = 0;\n this.place = 0;\n this.root = null;\n this.stack = [];\n this.currentObject = null;\n this.state = NEUTRAL;\n}\nParser.prototype.readCharicter = function() {\n var char = this.text[this.place++];\n if (this.state !== QUOTED) {\n while (whitespace.test(char)) {\n if (this.place >= this.text.length) {\n return;\n }\n char = this.text[this.place++];\n }\n }\n switch (this.state) {\n case NEUTRAL:\n return this.neutral(char);\n case KEYWORD:\n return this.keyword(char)\n case QUOTED:\n return this.quoted(char);\n case AFTERQUOTE:\n return this.afterquote(char);\n case NUMBER:\n return this.number(char);\n case ENDED:\n return;\n }\n};\nParser.prototype.afterquote = function(char) {\n if (char === '\"') {\n this.word += '\"';\n this.state = QUOTED;\n return;\n }\n if (endThings.test(char)) {\n this.word = this.word.trim();\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in afterquote yet, index ' + this.place);\n};\nParser.prototype.afterItem = function(char) {\n if (char === ',') {\n if (this.word !== null) {\n this.currentObject.push(this.word);\n }\n this.word = null;\n this.state = NEUTRAL;\n return;\n }\n if (char === ']') {\n this.level--;\n if (this.word !== null) {\n this.currentObject.push(this.word);\n this.word = null;\n }\n this.state = NEUTRAL;\n this.currentObject = this.stack.pop();\n if (!this.currentObject) {\n this.state = ENDED;\n }\n\n return;\n }\n};\nParser.prototype.number = function(char) {\n if (digets.test(char)) {\n this.word += char;\n return;\n }\n if (endThings.test(char)) {\n this.word = parseFloat(this.word);\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in number yet, index ' + this.place);\n};\nParser.prototype.quoted = function(char) {\n if (char === '\"') {\n this.state = AFTERQUOTE;\n return;\n }\n this.word += char;\n return;\n};\nParser.prototype.keyword = function(char) {\n if (keyword.test(char)) {\n this.word += char;\n return;\n }\n if (char === '[') {\n var newObjects = [];\n newObjects.push(this.word);\n this.level++;\n if (this.root === null) {\n this.root = newObjects;\n } else {\n this.currentObject.push(newObjects);\n }\n this.stack.push(this.currentObject);\n this.currentObject = newObjects;\n this.state = NEUTRAL;\n return;\n }\n if (endThings.test(char)) {\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in keyword yet, index ' + this.place);\n};\nParser.prototype.neutral = function(char) {\n if (latin.test(char)) {\n this.word = char;\n this.state = KEYWORD;\n return;\n }\n if (char === '\"') {\n this.word = '';\n this.state = QUOTED;\n return;\n }\n if (digets.test(char)) {\n this.word = char;\n this.state = NUMBER;\n return;\n }\n if (endThings.test(char)) {\n this.afterItem(char);\n return;\n }\n throw new Error('havn\\'t handled \"' +char + '\" in neutral yet, index ' + this.place);\n};\nParser.prototype.output = function() {\n while (this.place < this.text.length) {\n this.readCharicter();\n }\n if (this.state === ENDED) {\n return this.root;\n }\n throw new Error('unable to parse string \"' +this.text + '\". State is ' + this.state);\n};\n\nfunction parseString(txt) {\n var parser = new Parser(txt);\n return parser.output();\n}\n","\n\nfunction mapit(obj, key, value) {\n if (Array.isArray(key)) {\n value.unshift(key);\n key = null;\n }\n var thing = key ? {} : obj;\n\n var out = value.reduce(function(newObj, item) {\n sExpr(item, newObj);\n return newObj\n }, thing);\n if (key) {\n obj[key] = out;\n }\n}\n\nexport function sExpr(v, obj) {\n if (!Array.isArray(v)) {\n obj[v] = true;\n return;\n }\n var key = v.shift();\n if (key === 'PARAMETER') {\n key = v.shift();\n }\n if (v.length === 1) {\n if (Array.isArray(v[0])) {\n obj[key] = {};\n sExpr(v[0], obj[key]);\n return;\n }\n obj[key] = v[0];\n return;\n }\n if (!v.length) {\n obj[key] = true;\n return;\n }\n if (key === 'TOWGS84') {\n obj[key] = v;\n return;\n }\n if (key === 'AXIS') {\n if (!(key in obj)) {\n obj[key] = [];\n }\n obj[key].push(v);\n return;\n }\n if (!Array.isArray(key)) {\n obj[key] = {};\n }\n\n var i;\n switch (key) {\n case 'UNIT':\n case 'PRIMEM':\n case 'VERT_DATUM':\n obj[key] = {\n name: v[0].toLowerCase(),\n convert: v[1]\n };\n if (v.length === 3) {\n sExpr(v[2], obj[key]);\n }\n return;\n case 'SPHEROID':\n case 'ELLIPSOID':\n obj[key] = {\n name: v[0],\n a: v[1],\n rf: v[2]\n };\n if (v.length === 4) {\n sExpr(v[3], obj[key]);\n }\n return;\n case 'PROJECTEDCRS':\n case 'PROJCRS':\n case 'GEOGCS':\n case 'GEOCCS':\n case 'PROJCS':\n case 'LOCAL_CS':\n case 'GEODCRS':\n case 'GEODETICCRS':\n case 'GEODETICDATUM':\n case 'EDATUM':\n case 'ENGINEERINGDATUM':\n case 'VERT_CS':\n case 'VERTCRS':\n case 'VERTICALCRS':\n case 'COMPD_CS':\n case 'COMPOUNDCRS':\n case 'ENGINEERINGCRS':\n case 'ENGCRS':\n case 'FITTED_CS':\n case 'LOCAL_DATUM':\n case 'DATUM':\n v[0] = ['name', v[0]];\n mapit(obj, key, v);\n return;\n default:\n i = -1;\n while (++i < v.length) {\n if (!Array.isArray(v[i])) {\n return sExpr(v, obj[key]);\n }\n }\n return mapit(obj, key, v);\n }\n}\n","var D2R = 0.01745329251994329577;\nimport parser from './parser';\nimport {sExpr} from './process';\n\n\n\nfunction rename(obj, params) {\n var outName = params[0];\n var inName = params[1];\n if (!(outName in obj) && (inName in obj)) {\n obj[outName] = obj[inName];\n if (params.length === 3) {\n obj[outName] = params[2](obj[outName]);\n }\n }\n}\n\nfunction d2r(input) {\n return input * D2R;\n}\n\nfunction cleanWKT(wkt) {\n if (wkt.type === 'GEOGCS') {\n wkt.projName = 'longlat';\n } else if (wkt.type === 'LOCAL_CS') {\n wkt.projName = 'identity';\n wkt.local = true;\n } else {\n if (typeof wkt.PROJECTION === 'object') {\n wkt.projName = Object.keys(wkt.PROJECTION)[0];\n } else {\n wkt.projName = wkt.PROJECTION;\n }\n }\n if (wkt.AXIS) {\n var axisOrder = '';\n for (var i = 0, ii = wkt.AXIS.length; i < ii; ++i) {\n var axis = [wkt.AXIS[i][0].toLowerCase(), wkt.AXIS[i][1].toLowerCase()];\n if (axis[0].indexOf('north') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'north')) {\n axisOrder += 'n';\n } else if (axis[0].indexOf('south') !== -1 || ((axis[0] === 'y' || axis[0] === 'lat') && axis[1] === 'south')) {\n axisOrder += 's';\n } else if (axis[0].indexOf('east') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'east')) {\n axisOrder += 'e';\n } else if (axis[0].indexOf('west') !== -1 || ((axis[0] === 'x' || axis[0] === 'lon') && axis[1] === 'west')) {\n axisOrder += 'w';\n }\n }\n if (axisOrder.length === 2) {\n axisOrder += 'u';\n }\n if (axisOrder.length === 3) {\n wkt.axis = axisOrder;\n }\n }\n if (wkt.UNIT) {\n wkt.units = wkt.UNIT.name.toLowerCase();\n if (wkt.units === 'metre') {\n wkt.units = 'meter';\n }\n if (wkt.UNIT.convert) {\n if (wkt.type === 'GEOGCS') {\n if (wkt.DATUM && wkt.DATUM.SPHEROID) {\n wkt.to_meter = wkt.UNIT.convert*wkt.DATUM.SPHEROID.a;\n }\n } else {\n wkt.to_meter = wkt.UNIT.convert;\n }\n }\n }\n var geogcs = wkt.GEOGCS;\n if (wkt.type === 'GEOGCS') {\n geogcs = wkt;\n }\n if (geogcs) {\n //if(wkt.GEOGCS.PRIMEM&&wkt.GEOGCS.PRIMEM.convert){\n // wkt.from_greenwich=wkt.GEOGCS.PRIMEM.convert*D2R;\n //}\n if (geogcs.DATUM) {\n wkt.datumCode = geogcs.DATUM.name.toLowerCase();\n } else {\n wkt.datumCode = geogcs.name.toLowerCase();\n }\n if (wkt.datumCode.slice(0, 2) === 'd_') {\n wkt.datumCode = wkt.datumCode.slice(2);\n }\n if (wkt.datumCode === 'new_zealand_geodetic_datum_1949' || wkt.datumCode === 'new_zealand_1949') {\n wkt.datumCode = 'nzgd49';\n }\n if (wkt.datumCode === 'wgs_1984' || wkt.datumCode === 'world_geodetic_system_1984') {\n if (wkt.PROJECTION === 'Mercator_Auxiliary_Sphere') {\n wkt.sphere = true;\n }\n wkt.datumCode = 'wgs84';\n }\n if (wkt.datumCode.slice(-6) === '_ferro') {\n wkt.datumCode = wkt.datumCode.slice(0, - 6);\n }\n if (wkt.datumCode.slice(-8) === '_jakarta') {\n wkt.datumCode = wkt.datumCode.slice(0, - 8);\n }\n if (~wkt.datumCode.indexOf('belge')) {\n wkt.datumCode = 'rnb72';\n }\n if (geogcs.DATUM && geogcs.DATUM.SPHEROID) {\n wkt.ellps = geogcs.DATUM.SPHEROID.name.replace('_19', '').replace(/[Cc]larke\\_18/, 'clrk');\n if (wkt.ellps.toLowerCase().slice(0, 13) === 'international') {\n wkt.ellps = 'intl';\n }\n\n wkt.a = geogcs.DATUM.SPHEROID.a;\n wkt.rf = parseFloat(geogcs.DATUM.SPHEROID.rf, 10);\n }\n\n if (geogcs.DATUM && geogcs.DATUM.TOWGS84) {\n wkt.datum_params = geogcs.DATUM.TOWGS84;\n }\n if (~wkt.datumCode.indexOf('osgb_1936')) {\n wkt.datumCode = 'osgb36';\n }\n if (~wkt.datumCode.indexOf('osni_1952')) {\n wkt.datumCode = 'osni52';\n }\n if (~wkt.datumCode.indexOf('tm65')\n || ~wkt.datumCode.indexOf('geodetic_datum_of_1965')) {\n wkt.datumCode = 'ire65';\n }\n if (wkt.datumCode === 'ch1903+') {\n wkt.datumCode = 'ch1903';\n }\n if (~wkt.datumCode.indexOf('israel')) {\n wkt.datumCode = 'isr93';\n }\n }\n if (wkt.b && !isFinite(wkt.b)) {\n wkt.b = wkt.a;\n }\n\n function toMeter(input) {\n var ratio = wkt.to_meter || 1;\n return input * ratio;\n }\n var renamer = function(a) {\n return rename(wkt, a);\n };\n var list = [\n ['standard_parallel_1', 'Standard_Parallel_1'],\n ['standard_parallel_1', 'Latitude of 1st standard parallel'],\n ['standard_parallel_2', 'Standard_Parallel_2'],\n ['standard_parallel_2', 'Latitude of 2nd standard parallel'],\n ['false_easting', 'False_Easting'],\n ['false_easting', 'False easting'],\n ['false-easting', 'Easting at false origin'],\n ['false_northing', 'False_Northing'],\n ['false_northing', 'False northing'],\n ['false_northing', 'Northing at false origin'],\n ['central_meridian', 'Central_Meridian'],\n ['central_meridian', 'Longitude of natural origin'],\n ['central_meridian', 'Longitude of false origin'],\n ['latitude_of_origin', 'Latitude_Of_Origin'],\n ['latitude_of_origin', 'Central_Parallel'],\n ['latitude_of_origin', 'Latitude of natural origin'],\n ['latitude_of_origin', 'Latitude of false origin'],\n ['scale_factor', 'Scale_Factor'],\n ['k0', 'scale_factor'],\n ['latitude_of_center', 'Latitude_Of_Center'],\n ['latitude_of_center', 'Latitude_of_center'],\n ['lat0', 'latitude_of_center', d2r],\n ['longitude_of_center', 'Longitude_Of_Center'],\n ['longitude_of_center', 'Longitude_of_center'],\n ['longc', 'longitude_of_center', d2r],\n ['x0', 'false_easting', toMeter],\n ['y0', 'false_northing', toMeter],\n ['long0', 'central_meridian', d2r],\n ['lat0', 'latitude_of_origin', d2r],\n ['lat0', 'standard_parallel_1', d2r],\n ['lat1', 'standard_parallel_1', d2r],\n ['lat2', 'standard_parallel_2', d2r],\n ['azimuth', 'Azimuth'],\n ['alpha', 'azimuth', d2r],\n ['srsCode', 'name']\n ];\n list.forEach(renamer);\n if (!wkt.long0 && wkt.longc && (wkt.projName === 'Albers_Conic_Equal_Area' || wkt.projName === 'Lambert_Azimuthal_Equal_Area')) {\n wkt.long0 = wkt.longc;\n }\n if (!wkt.lat_ts && wkt.lat1 && (wkt.projName === 'Stereographic_South_Pole' || wkt.projName === 'Polar Stereographic (variant B)')) {\n wkt.lat0 = d2r(wkt.lat1 > 0 ? 90 : -90);\n wkt.lat_ts = wkt.lat1;\n } else if (!wkt.lat_ts && wkt.lat0 && wkt.projName === 'Polar_Stereographic') {\n wkt.lat_ts = wkt.lat0;\n wkt.lat0 = d2r(wkt.lat0 > 0 ? 90 : -90);\n }\n}\nexport default function(wkt) {\n var lisp = parser(wkt);\n var type = lisp.shift();\n var name = lisp.shift();\n lisp.unshift(['name', name]);\n lisp.unshift(['type', type]);\n var obj = {};\n sExpr(lisp, obj);\n cleanWKT(obj);\n return obj;\n}\n","import globals from './global';\nimport parseProj from './projString';\nimport wkt from 'wkt-parser';\n\nfunction defs(name) {\n /*global console*/\n var that = this;\n if (arguments.length === 2) {\n var def = arguments[1];\n if (typeof def === 'string') {\n if (def.charAt(0) === '+') {\n defs[name] = parseProj(arguments[1]);\n }\n else {\n defs[name] = wkt(arguments[1]);\n }\n } else {\n defs[name] = def;\n }\n }\n else if (arguments.length === 1) {\n if (Array.isArray(name)) {\n return name.map(function(v) {\n if (Array.isArray(v)) {\n defs.apply(that, v);\n }\n else {\n defs(v);\n }\n });\n }\n else if (typeof name === 'string') {\n if (name in defs) {\n return defs[name];\n }\n }\n else if ('EPSG' in name) {\n defs['EPSG:' + name.EPSG] = name;\n }\n else if ('ESRI' in name) {\n defs['ESRI:' + name.ESRI] = name;\n }\n else if ('IAU2000' in name) {\n defs['IAU2000:' + name.IAU2000] = name;\n }\n else {\n console.log(name);\n }\n return;\n }\n\n\n}\nglobals(defs);\nexport default defs;\n","export default function(defs) {\n defs('EPSG:4326', \"+title=WGS 84 (long/lat) +proj=longlat +ellps=WGS84 +datum=WGS84 +units=degrees\");\n defs('EPSG:4269', \"+title=NAD83 (long/lat) +proj=longlat +a=6378137.0 +b=6356752.31414036 +ellps=GRS80 +datum=NAD83 +units=degrees\");\n defs('EPSG:3857', \"+title=WGS 84 / Pseudo-Mercator +proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +no_defs\");\n\n defs.WGS84 = defs['EPSG:4326'];\n defs['EPSG:3785'] = defs['EPSG:3857']; // maintain backward compat, official code is 3857\n defs.GOOGLE = defs['EPSG:3857'];\n defs['EPSG:900913'] = defs['EPSG:3857'];\n defs['EPSG:102113'] = defs['EPSG:3857'];\n}\n","import defs from './defs';\nimport wkt from 'wkt-parser';\nimport projStr from './projString';\nimport match from './match';\nfunction testObj(code){\n return typeof code === 'string';\n}\nfunction testDef(code){\n return code in defs;\n}\nvar codeWords = ['PROJECTEDCRS', 'PROJCRS', 'GEOGCS','GEOCCS','PROJCS','LOCAL_CS', 'GEODCRS', 'GEODETICCRS', 'GEODETICDATUM', 'ENGCRS', 'ENGINEERINGCRS'];\nfunction testWKT(code){\n return codeWords.some(function (word) {\n return code.indexOf(word) > -1;\n });\n}\nvar codes = ['3857', '900913', '3785', '102113'];\nfunction checkMercator(item) {\n var auth = match(item, 'authority');\n if (!auth) {\n return;\n }\n var code = match(auth, 'epsg');\n return code && codes.indexOf(code) > -1;\n}\nfunction checkProjStr(item) {\n var ext = match(item, 'extension');\n if (!ext) {\n return;\n }\n return match(ext, 'proj4');\n}\nfunction testProj(code){\n return code[0] === '+';\n}\nfunction parse(code){\n if (testObj(code)) {\n //check to see if this is a WKT string\n if (testDef(code)) {\n return defs[code];\n }\n if (testWKT(code)) {\n var out = wkt(code);\n // test of spetial case, due to this being a very common and often malformed\n if (checkMercator(out)) {\n return defs['EPSG:3857'];\n }\n var maybeProjStr = checkProjStr(out);\n if (maybeProjStr) {\n return projStr(maybeProjStr);\n }\n return out;\n }\n if (testProj(code)) {\n return projStr(code);\n }\n }else{\n return code;\n }\n}\n\nexport default parse;\n","export default function(destination, source) {\n destination = destination || {};\n var value, property;\n if (!source) {\n return destination;\n }\n for (property in source) {\n value = source[property];\n if (value !== undefined) {\n destination[property] = value;\n }\n }\n return destination;\n}\n","export default function(eccent, sinphi, cosphi) {\n var con = eccent * sinphi;\n return cosphi / (Math.sqrt(1 - con * con));\n}","export default function(x) {\n return x<0 ? -1 : 1;\n}","\nimport {TWO_PI, SPI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n return (Math.abs(x) <= SPI) ? x : (x - (sign(x) * TWO_PI));\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, phi, sinphi) {\n var con = eccent * sinphi;\n var com = 0.5 * eccent;\n con = Math.pow(((1 - con) / (1 + con)), com);\n return (Math.tan(0.5 * (HALF_PI - phi)) / con);\n}\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, ts) {\n var eccnth = 0.5 * eccent;\n var con, dphi;\n var phi = HALF_PI - 2 * Math.atan(ts);\n for (var i = 0; i <= 15; i++) {\n con = eccent * Math.sin(phi);\n dphi = HALF_PI - 2 * Math.atan(ts * (Math.pow(((1 - con) / (1 + con)), eccnth))) - phi;\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n //console.log(\"phi2z has NoConvergence\");\n return -9999;\n}\n","export function init() {\n //no-op for longlat\n}\n\nfunction identity(pt) {\n return pt;\n}\nexport {identity as forward};\nexport {identity as inverse};\nexport var names = [\"longlat\", \"identity\"];\nexport default {\n init: init,\n forward: identity,\n inverse: identity,\n names: names\n};\n","import merc from \"./projections/merc\";\nimport longlat from \"./projections/longlat\";\nvar projs = [merc, longlat];\nvar names = {};\nvar projStore = [];\n\nfunction add(proj, i) {\n var len = projStore.length;\n if (!proj.names) {\n console.log(i);\n return true;\n }\n projStore[len] = proj;\n proj.names.forEach(function(n) {\n names[n.toLowerCase()] = len;\n });\n return this;\n}\n\nexport {add};\n\nexport function get(name) {\n if (!name) {\n return false;\n }\n var n = name.toLowerCase();\n if (typeof names[n] !== 'undefined' && projStore[names[n]]) {\n return projStore[names[n]];\n }\n}\n\nexport function start() {\n projs.forEach(add);\n}\nexport default {\n start: start,\n add: add,\n get: get\n};\n","import msfnz from '../common/msfnz';\n\nimport adjust_lon from '../common/adjust_lon';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport {FORTPI, R2D, EPSLN, HALF_PI} from '../constants/values';\nexport function init() {\n var con = this.b / this.a;\n this.es = 1 - con * con;\n if(!('x0' in this)){\n this.x0 = 0;\n }\n if(!('y0' in this)){\n this.y0 = 0;\n }\n this.e = Math.sqrt(this.es);\n if (this.lat_ts) {\n if (this.sphere) {\n this.k0 = Math.cos(this.lat_ts);\n }\n else {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n }\n else {\n if (!this.k0) {\n if (this.k) {\n this.k0 = this.k;\n }\n else {\n this.k0 = 1;\n }\n }\n }\n}\n\n/* Mercator forward equations--mapping lat,long to x,y\n --------------------------------------------------*/\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n // convert to radians\n if (lat * R2D > 90 && lat * R2D < -90 && lon * R2D > 180 && lon * R2D < -180) {\n return null;\n }\n\n var x, y;\n if (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN) {\n return null;\n }\n else {\n if (this.sphere) {\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 + this.a * this.k0 * Math.log(Math.tan(FORTPI + 0.5 * lat));\n }\n else {\n var sinphi = Math.sin(lat);\n var ts = tsfnz(this.e, lat, sinphi);\n x = this.x0 + this.a * this.k0 * adjust_lon(lon - this.long0);\n y = this.y0 - this.a * this.k0 * Math.log(ts);\n }\n p.x = x;\n p.y = y;\n return p;\n }\n}\n\n/* Mercator inverse equations--mapping x,y to lat/long\n --------------------------------------------------*/\nexport function inverse(p) {\n\n var x = p.x - this.x0;\n var y = p.y - this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lat = HALF_PI - 2 * Math.atan(Math.exp(-y / (this.a * this.k0)));\n }\n else {\n var ts = Math.exp(-y / (this.a * this.k0));\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n lon = adjust_lon(this.long0 + x / (this.a * this.k0));\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Mercator\", \"Popular Visualisation Pseudo Mercator\", \"Mercator_1SP\", \"Mercator_Auxiliary_Sphere\", \"merc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","var exports = {};\nexport {exports as default};\nexports.MERIT = {\n a: 6378137.0,\n rf: 298.257,\n ellipseName: \"MERIT 1983\"\n};\n\nexports.SGS85 = {\n a: 6378136.0,\n rf: 298.257,\n ellipseName: \"Soviet Geodetic System 85\"\n};\n\nexports.GRS80 = {\n a: 6378137.0,\n rf: 298.257222101,\n ellipseName: \"GRS 1980(IUGG, 1980)\"\n};\n\nexports.IAU76 = {\n a: 6378140.0,\n rf: 298.257,\n ellipseName: \"IAU 1976\"\n};\n\nexports.airy = {\n a: 6377563.396,\n b: 6356256.910,\n ellipseName: \"Airy 1830\"\n};\n\nexports.APL4 = {\n a: 6378137,\n rf: 298.25,\n ellipseName: \"Appl. Physics. 1965\"\n};\n\nexports.NWL9D = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"Naval Weapons Lab., 1965\"\n};\n\nexports.mod_airy = {\n a: 6377340.189,\n b: 6356034.446,\n ellipseName: \"Modified Airy\"\n};\n\nexports.andrae = {\n a: 6377104.43,\n rf: 300.0,\n ellipseName: \"Andrae 1876 (Den., Iclnd.)\"\n};\n\nexports.aust_SA = {\n a: 6378160.0,\n rf: 298.25,\n ellipseName: \"Australian Natl & S. Amer. 1969\"\n};\n\nexports.GRS67 = {\n a: 6378160.0,\n rf: 298.2471674270,\n ellipseName: \"GRS 67(IUGG 1967)\"\n};\n\nexports.bessel = {\n a: 6377397.155,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841\"\n};\n\nexports.bess_nam = {\n a: 6377483.865,\n rf: 299.1528128,\n ellipseName: \"Bessel 1841 (Namibia)\"\n};\n\nexports.clrk66 = {\n a: 6378206.4,\n b: 6356583.8,\n ellipseName: \"Clarke 1866\"\n};\n\nexports.clrk80 = {\n a: 6378249.145,\n rf: 293.4663,\n ellipseName: \"Clarke 1880 mod.\"\n};\n\nexports.clrk80ign = {\n a: 6378249.2,\n b: 6356515,\n rf: 293.4660213,\n ellipseName: \"Clarke 1880 (IGN)\"\n};\n\nexports.clrk58 = {\n a: 6378293.645208759,\n rf: 294.2606763692654,\n ellipseName: \"Clarke 1858\"\n};\n\nexports.CPM = {\n a: 6375738.7,\n rf: 334.29,\n ellipseName: \"Comm. des Poids et Mesures 1799\"\n};\n\nexports.delmbr = {\n a: 6376428.0,\n rf: 311.5,\n ellipseName: \"Delambre 1810 (Belgium)\"\n};\n\nexports.engelis = {\n a: 6378136.05,\n rf: 298.2566,\n ellipseName: \"Engelis 1985\"\n};\n\nexports.evrst30 = {\n a: 6377276.345,\n rf: 300.8017,\n ellipseName: \"Everest 1830\"\n};\n\nexports.evrst48 = {\n a: 6377304.063,\n rf: 300.8017,\n ellipseName: \"Everest 1948\"\n};\n\nexports.evrst56 = {\n a: 6377301.243,\n rf: 300.8017,\n ellipseName: \"Everest 1956\"\n};\n\nexports.evrst69 = {\n a: 6377295.664,\n rf: 300.8017,\n ellipseName: \"Everest 1969\"\n};\n\nexports.evrstSS = {\n a: 6377298.556,\n rf: 300.8017,\n ellipseName: \"Everest (Sabah & Sarawak)\"\n};\n\nexports.fschr60 = {\n a: 6378166.0,\n rf: 298.3,\n ellipseName: \"Fischer (Mercury Datum) 1960\"\n};\n\nexports.fschr60m = {\n a: 6378155.0,\n rf: 298.3,\n ellipseName: \"Fischer 1960\"\n};\n\nexports.fschr68 = {\n a: 6378150.0,\n rf: 298.3,\n ellipseName: \"Fischer 1968\"\n};\n\nexports.helmert = {\n a: 6378200.0,\n rf: 298.3,\n ellipseName: \"Helmert 1906\"\n};\n\nexports.hough = {\n a: 6378270.0,\n rf: 297.0,\n ellipseName: \"Hough\"\n};\n\nexports.intl = {\n a: 6378388.0,\n rf: 297.0,\n ellipseName: \"International 1909 (Hayford)\"\n};\n\nexports.kaula = {\n a: 6378163.0,\n rf: 298.24,\n ellipseName: \"Kaula 1961\"\n};\n\nexports.lerch = {\n a: 6378139.0,\n rf: 298.257,\n ellipseName: \"Lerch 1979\"\n};\n\nexports.mprts = {\n a: 6397300.0,\n rf: 191.0,\n ellipseName: \"Maupertius 1738\"\n};\n\nexports.new_intl = {\n a: 6378157.5,\n b: 6356772.2,\n ellipseName: \"New International 1967\"\n};\n\nexports.plessis = {\n a: 6376523.0,\n rf: 6355863.0,\n ellipseName: \"Plessis 1817 (France)\"\n};\n\nexports.krass = {\n a: 6378245.0,\n rf: 298.3,\n ellipseName: \"Krassovsky, 1942\"\n};\n\nexports.SEasia = {\n a: 6378155.0,\n b: 6356773.3205,\n ellipseName: \"Southeast Asia\"\n};\n\nexports.walbeck = {\n a: 6376896.0,\n b: 6355834.8467,\n ellipseName: \"Walbeck\"\n};\n\nexports.WGS60 = {\n a: 6378165.0,\n rf: 298.3,\n ellipseName: \"WGS 60\"\n};\n\nexports.WGS66 = {\n a: 6378145.0,\n rf: 298.25,\n ellipseName: \"WGS 66\"\n};\n\nexports.WGS7 = {\n a: 6378135.0,\n rf: 298.26,\n ellipseName: \"WGS 72\"\n};\n\nexport var WGS84 = exports.WGS84 = {\n a: 6378137.0,\n rf: 298.257223563,\n ellipseName: \"WGS 84\"\n};\n\nexports.sphere = {\n a: 6370997.0,\n b: 6370997.0,\n ellipseName: \"Normal Sphere (r=6370997)\"\n};\n","var exports = {};\nexport {exports as default};\nexports.wgs84 = {\n towgs84: \"0,0,0\",\n ellipse: \"WGS84\",\n datumName: \"WGS84\"\n};\n\nexports.ch1903 = {\n towgs84: \"674.374,15.056,405.346\",\n ellipse: \"bessel\",\n datumName: \"swiss\"\n};\n\nexports.ggrs87 = {\n towgs84: \"-199.87,74.79,246.62\",\n ellipse: \"GRS80\",\n datumName: \"Greek_Geodetic_Reference_System_1987\"\n};\n\nexports.nad83 = {\n towgs84: \"0,0,0\",\n ellipse: \"GRS80\",\n datumName: \"North_American_Datum_1983\"\n};\n\nexports.nad27 = {\n nadgrids: \"@conus,@alaska,@ntv2_0.gsb,@ntv1_can.dat\",\n ellipse: \"clrk66\",\n datumName: \"North_American_Datum_1927\"\n};\n\nexports.potsdam = {\n towgs84: \"598.1,73.7,418.2,0.202,0.045,-2.455,6.7\",\n ellipse: \"bessel\",\n datumName: \"Potsdam Rauenberg 1950 DHDN\"\n};\n\nexports.carthage = {\n towgs84: \"-263.0,6.0,431.0\",\n ellipse: \"clark80\",\n datumName: \"Carthage 1934 Tunisia\"\n};\n\nexports.hermannskogel = {\n towgs84: \"577.326,90.129,463.919,5.137,1.474,5.297,2.4232\",\n ellipse: \"bessel\",\n datumName: \"Hermannskogel\"\n};\n\nexports.osni52 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"airy\",\n datumName: \"Irish National\"\n};\n\nexports.ire65 = {\n towgs84: \"482.530,-130.596,564.557,-1.042,-0.214,-0.631,8.15\",\n ellipse: \"mod_airy\",\n datumName: \"Ireland 1965\"\n};\n\nexports.rassadiran = {\n towgs84: \"-133.63,-157.5,-158.62\",\n ellipse: \"intl\",\n datumName: \"Rassadiran\"\n};\n\nexports.nzgd49 = {\n towgs84: \"59.47,-5.04,187.44,0.47,-0.1,1.024,-4.5993\",\n ellipse: \"intl\",\n datumName: \"New Zealand Geodetic Datum 1949\"\n};\n\nexports.osgb36 = {\n towgs84: \"446.448,-125.157,542.060,0.1502,0.2470,0.8421,-20.4894\",\n ellipse: \"airy\",\n datumName: \"Airy 1830\"\n};\n\nexports.s_jtsk = {\n towgs84: \"589,76,480\",\n ellipse: 'bessel',\n datumName: 'S-JTSK (Ferro)'\n};\n\nexports.beduaram = {\n towgs84: '-106,-87,188',\n ellipse: 'clrk80',\n datumName: 'Beduaram'\n};\n\nexports.gunung_segara = {\n towgs84: '-403,684,41',\n ellipse: 'bessel',\n datumName: 'Gunung Segara Jakarta'\n};\n\nexports.rnb72 = {\n towgs84: \"106.869,-52.2978,103.724,-0.33657,0.456955,-1.84218,1\",\n ellipse: \"intl\",\n datumName: \"Reseau National Belge 1972\"\n};\n","import {PJD_3PARAM, PJD_7PARAM, PJD_GRIDSHIFT, PJD_WGS84, PJD_NODATUM, SEC_TO_RAD} from './constants/values';\n\nfunction datum(datumCode, datum_params, a, b, es, ep2, nadgrids) {\n var out = {};\n\n if (datumCode === undefined || datumCode === 'none') {\n out.datum_type = PJD_NODATUM;\n } else {\n out.datum_type = PJD_WGS84;\n }\n\n if (datum_params) {\n out.datum_params = datum_params.map(parseFloat);\n if (out.datum_params[0] !== 0 || out.datum_params[1] !== 0 || out.datum_params[2] !== 0) {\n out.datum_type = PJD_3PARAM;\n }\n if (out.datum_params.length > 3) {\n if (out.datum_params[3] !== 0 || out.datum_params[4] !== 0 || out.datum_params[5] !== 0 || out.datum_params[6] !== 0) {\n out.datum_type = PJD_7PARAM;\n out.datum_params[3] *= SEC_TO_RAD;\n out.datum_params[4] *= SEC_TO_RAD;\n out.datum_params[5] *= SEC_TO_RAD;\n out.datum_params[6] = (out.datum_params[6] / 1000000.0) + 1.0;\n }\n }\n }\n\n if (nadgrids) {\n out.datum_type = PJD_GRIDSHIFT;\n out.grids = nadgrids;\n }\n out.a = a; //datum object also uses these values\n out.b = b;\n out.es = es;\n out.ep2 = ep2;\n return out;\n}\n\nexport default datum;\n","/**\n * Resources for details of NTv2 file formats:\n * - https://web.archive.org/web/20140127204822if_/http://www.mgs.gov.on.ca:80/stdprodconsume/groups/content/@mgs/@iandit/documents/resourcelist/stel02_047447.pdf\n * - http://mimaka.com/help/gs/html/004_NTV2%20Data%20Format.htm\n */\n\nvar loadedNadgrids = {};\n\n/**\n * Load a binary NTv2 file (.gsb) to a key that can be used in a proj string like +nadgrids=. Pass the NTv2 file\n * as an ArrayBuffer.\n */\nexport default function nadgrid(key, data) {\n var view = new DataView(data);\n var isLittleEndian = detectLittleEndian(view);\n var header = readHeader(view, isLittleEndian);\n if (header.nSubgrids > 1) {\n console.log('Only single NTv2 subgrids are currently supported, subsequent sub grids are ignored');\n }\n var subgrids = readSubgrids(view, header, isLittleEndian);\n var nadgrid = {header: header, subgrids: subgrids};\n loadedNadgrids[key] = nadgrid;\n return nadgrid;\n}\n\n/**\n * Given a proj4 value for nadgrids, return an array of loaded grids\n */\nexport function getNadgrids(nadgrids) {\n // Format details: http://proj.maptools.org/gen_parms.html\n if (nadgrids === undefined) { return null; }\n var grids = nadgrids.split(',');\n return grids.map(parseNadgridString);\n}\n\nfunction parseNadgridString(value) {\n if (value.length === 0) {\n return null;\n }\n var optional = value[0] === '@';\n if (optional) {\n value = value.slice(1);\n }\n if (value === 'null') {\n return {name: 'null', mandatory: !optional, grid: null, isNull: true};\n }\n return {\n name: value,\n mandatory: !optional,\n grid: loadedNadgrids[value] || null,\n isNull: false\n };\n}\n\nfunction secondsToRadians(seconds) {\n return (seconds / 3600) * Math.PI / 180;\n}\n\nfunction detectLittleEndian(view) {\n var nFields = view.getInt32(8, false);\n if (nFields === 11) {\n return false;\n }\n nFields = view.getInt32(8, true);\n if (nFields !== 11) {\n console.warn('Failed to detect nadgrid endian-ness, defaulting to little-endian');\n }\n return true;\n}\n\nfunction readHeader(view, isLittleEndian) {\n return {\n nFields: view.getInt32(8, isLittleEndian),\n nSubgridFields: view.getInt32(24, isLittleEndian),\n nSubgrids: view.getInt32(40, isLittleEndian),\n shiftType: decodeString(view, 56, 56 + 8).trim(),\n fromSemiMajorAxis: view.getFloat64(120, isLittleEndian),\n fromSemiMinorAxis: view.getFloat64(136, isLittleEndian),\n toSemiMajorAxis: view.getFloat64(152, isLittleEndian),\n toSemiMinorAxis: view.getFloat64(168, isLittleEndian),\n };\n}\n\nfunction decodeString(view, start, end) {\n return String.fromCharCode.apply(null, new Uint8Array(view.buffer.slice(start, end)));\n}\n\nfunction readSubgrids(view, header, isLittleEndian) {\n var gridOffset = 176;\n var grids = [];\n for (var i = 0; i < header.nSubgrids; i++) {\n var subHeader = readGridHeader(view, gridOffset, isLittleEndian);\n var nodes = readGridNodes(view, gridOffset, subHeader, isLittleEndian);\n var lngColumnCount = Math.round(\n 1 + (subHeader.upperLongitude - subHeader.lowerLongitude) / subHeader.longitudeInterval);\n var latColumnCount = Math.round(\n 1 + (subHeader.upperLatitude - subHeader.lowerLatitude) / subHeader.latitudeInterval);\n // Proj4 operates on radians whereas the coordinates are in seconds in the grid\n grids.push({\n ll: [secondsToRadians(subHeader.lowerLongitude), secondsToRadians(subHeader.lowerLatitude)],\n del: [secondsToRadians(subHeader.longitudeInterval), secondsToRadians(subHeader.latitudeInterval)],\n lim: [lngColumnCount, latColumnCount],\n count: subHeader.gridNodeCount,\n cvs: mapNodes(nodes)\n });\n }\n return grids;\n}\n\nfunction mapNodes(nodes) {\n return nodes.map(function (r) {return [secondsToRadians(r.longitudeShift), secondsToRadians(r.latitudeShift)];});\n}\n\nfunction readGridHeader(view, offset, isLittleEndian) {\n return {\n name: decodeString(view, offset + 8, offset + 16).trim(),\n parent: decodeString(view, offset + 24, offset + 24 + 8).trim(),\n lowerLatitude: view.getFloat64(offset + 72, isLittleEndian),\n upperLatitude: view.getFloat64(offset + 88, isLittleEndian),\n lowerLongitude: view.getFloat64(offset + 104, isLittleEndian),\n upperLongitude: view.getFloat64(offset + 120, isLittleEndian),\n latitudeInterval: view.getFloat64(offset + 136, isLittleEndian),\n longitudeInterval: view.getFloat64(offset + 152, isLittleEndian),\n gridNodeCount: view.getInt32(offset + 168, isLittleEndian)\n };\n}\n\nfunction readGridNodes(view, offset, gridHeader, isLittleEndian) {\n var nodesOffset = offset + 176;\n var gridRecordLength = 16;\n var gridShiftRecords = [];\n for (var i = 0; i < gridHeader.gridNodeCount; i++) {\n var record = {\n latitudeShift: view.getFloat32(nodesOffset + i * gridRecordLength, isLittleEndian),\n longitudeShift: view.getFloat32(nodesOffset + i * gridRecordLength + 4, isLittleEndian),\n latitudeAccuracy: view.getFloat32(nodesOffset + i * gridRecordLength + 8, isLittleEndian),\n longitudeAccuracy: view.getFloat32(nodesOffset + i * gridRecordLength + 12, isLittleEndian),\n };\n gridShiftRecords.push(record);\n }\n return gridShiftRecords;\n}\n","import parseCode from './parseCode';\nimport extend from './extend';\nimport projections from './projections';\nimport {sphere as dc_sphere, eccentricity as dc_eccentricity} from './deriveConstants';\nimport Datum from './constants/Datum';\nimport datum from './datum';\nimport match from './match';\nimport {getNadgrids} from \"./nadgrid\";\n\nfunction Projection(srsCode,callback) {\n if (!(this instanceof Projection)) {\n return new Projection(srsCode);\n }\n callback = callback || function(error){\n if(error){\n throw error;\n }\n };\n var json = parseCode(srsCode);\n if(typeof json !== 'object'){\n callback(srsCode);\n return;\n }\n var ourProj = Projection.projections.get(json.projName);\n if(!ourProj){\n callback(srsCode);\n return;\n }\n if (json.datumCode && json.datumCode !== 'none') {\n var datumDef = match(Datum, json.datumCode);\n if (datumDef) {\n json.datum_params = json.datum_params || (datumDef.towgs84 ? datumDef.towgs84.split(',') : null);\n json.ellps = datumDef.ellipse;\n json.datumName = datumDef.datumName ? datumDef.datumName : json.datumCode;\n }\n }\n json.k0 = json.k0 || 1.0;\n json.axis = json.axis || 'enu';\n json.ellps = json.ellps || 'wgs84';\n json.lat1 = json.lat1 || json.lat0; // Lambert_Conformal_Conic_1SP, for example, needs this\n\n var sphere_ = dc_sphere(json.a, json.b, json.rf, json.ellps, json.sphere);\n var ecc = dc_eccentricity(sphere_.a, sphere_.b, sphere_.rf, json.R_A);\n var nadgrids = getNadgrids(json.nadgrids);\n var datumObj = json.datum || datum(json.datumCode, json.datum_params, sphere_.a, sphere_.b, ecc.es, ecc.ep2,\n nadgrids);\n\n extend(this, json); // transfer everything over from the projection because we don't know what we'll need\n extend(this, ourProj); // transfer all the methods from the projection\n\n // copy the 4 things over we calculated in deriveConstants.sphere\n this.a = sphere_.a;\n this.b = sphere_.b;\n this.rf = sphere_.rf;\n this.sphere = sphere_.sphere;\n\n // copy the 3 things we calculated in deriveConstants.eccentricity\n this.es = ecc.es;\n this.e = ecc.e;\n this.ep2 = ecc.ep2;\n\n // add in the datum object\n this.datum = datumObj;\n\n // init the projection\n this.init();\n\n // legecy callback from back in the day when it went to spatialreference.org\n callback(null, this);\n\n}\nProjection.projections = projections;\nProjection.projections.start();\nexport default Projection;\n","import {SIXTH, RA4, RA6, EPSLN} from './constants/values';\nimport {default as Ellipsoid, WGS84} from './constants/Ellipsoid';\nimport match from './match';\n\nexport function eccentricity(a, b, rf, R_A) {\n var a2 = a * a; // used in geocentric\n var b2 = b * b; // used in geocentric\n var es = (a2 - b2) / a2; // e ^ 2\n var e = 0;\n if (R_A) {\n a *= 1 - es * (SIXTH + es * (RA4 + es * RA6));\n a2 = a * a;\n es = 0;\n } else {\n e = Math.sqrt(es); // eccentricity\n }\n var ep2 = (a2 - b2) / b2; // used in geocentric\n return {\n es: es,\n e: e,\n ep2: ep2\n };\n}\nexport function sphere(a, b, rf, ellps, sphere) {\n if (!a) { // do we have an ellipsoid?\n var ellipse = match(Ellipsoid, ellps);\n if (!ellipse) {\n ellipse = WGS84;\n }\n a = ellipse.a;\n b = ellipse.b;\n rf = ellipse.rf;\n }\n\n if (rf && !b) {\n b = (1.0 - 1.0 / rf) * a;\n }\n if (rf === 0 || Math.abs(a - b) < EPSLN) {\n sphere = true;\n b = a;\n }\n return {\n a: a,\n b: b,\n rf: rf,\n sphere: sphere\n };\n}\n","'use strict';\nimport {PJD_3PARAM, PJD_7PARAM, HALF_PI} from './constants/values';\nexport function compareDatums(source, dest) {\n if (source.datum_type !== dest.datum_type) {\n return false; // false, datums are not equal\n } else if (source.a !== dest.a || Math.abs(source.es - dest.es) > 0.000000000050) {\n // the tolerance for es is to ensure that GRS80 and WGS84\n // are considered identical\n return false;\n } else if (source.datum_type === PJD_3PARAM) {\n return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2]);\n } else if (source.datum_type === PJD_7PARAM) {\n return (source.datum_params[0] === dest.datum_params[0] && source.datum_params[1] === dest.datum_params[1] && source.datum_params[2] === dest.datum_params[2] && source.datum_params[3] === dest.datum_params[3] && source.datum_params[4] === dest.datum_params[4] && source.datum_params[5] === dest.datum_params[5] && source.datum_params[6] === dest.datum_params[6]);\n } else {\n return true; // datums are equal\n }\n} // cs_compare_datums()\n\n/*\n * The function Convert_Geodetic_To_Geocentric converts geodetic coordinates\n * (latitude, longitude, and height) to geocentric coordinates (X, Y, Z),\n * according to the current ellipsoid parameters.\n *\n * Latitude : Geodetic latitude in radians (input)\n * Longitude : Geodetic longitude in radians (input)\n * Height : Geodetic height, in meters (input)\n * X : Calculated Geocentric X coordinate, in meters (output)\n * Y : Calculated Geocentric Y coordinate, in meters (output)\n * Z : Calculated Geocentric Z coordinate, in meters (output)\n *\n */\nexport function geodeticToGeocentric(p, es, a) {\n var Longitude = p.x;\n var Latitude = p.y;\n var Height = p.z ? p.z : 0; //Z value not always supplied\n\n var Rn; /* Earth radius at location */\n var Sin_Lat; /* Math.sin(Latitude) */\n var Sin2_Lat; /* Square of Math.sin(Latitude) */\n var Cos_Lat; /* Math.cos(Latitude) */\n\n /*\n ** Don't blow up if Latitude is just a little out of the value\n ** range as it may just be a rounding issue. Also removed longitude\n ** test, it should be wrapped by Math.cos() and Math.sin(). NFW for PROJ.4, Sep/2001.\n */\n if (Latitude < -HALF_PI && Latitude > -1.001 * HALF_PI) {\n Latitude = -HALF_PI;\n } else if (Latitude > HALF_PI && Latitude < 1.001 * HALF_PI) {\n Latitude = HALF_PI;\n } else if (Latitude < -HALF_PI) {\n /* Latitude out of range */\n //..reportError('geocent:lat out of range:' + Latitude);\n return { x: -Infinity, y: -Infinity, z: p.z };\n } else if (Latitude > HALF_PI) {\n /* Latitude out of range */\n return { x: Infinity, y: Infinity, z: p.z };\n }\n\n if (Longitude > Math.PI) {\n Longitude -= (2 * Math.PI);\n }\n Sin_Lat = Math.sin(Latitude);\n Cos_Lat = Math.cos(Latitude);\n Sin2_Lat = Sin_Lat * Sin_Lat;\n Rn = a / (Math.sqrt(1.0e0 - es * Sin2_Lat));\n return {\n x: (Rn + Height) * Cos_Lat * Math.cos(Longitude),\n y: (Rn + Height) * Cos_Lat * Math.sin(Longitude),\n z: ((Rn * (1 - es)) + Height) * Sin_Lat\n };\n} // cs_geodetic_to_geocentric()\n\nexport function geocentricToGeodetic(p, es, a, b) {\n /* local defintions and variables */\n /* end-criterium of loop, accuracy of sin(Latitude) */\n var genau = 1e-12;\n var genau2 = (genau * genau);\n var maxiter = 30;\n\n var P; /* distance between semi-minor axis and location */\n var RR; /* distance between center and location */\n var CT; /* sin of geocentric latitude */\n var ST; /* cos of geocentric latitude */\n var RX;\n var RK;\n var RN; /* Earth radius at location */\n var CPHI0; /* cos of start or old geodetic latitude in iterations */\n var SPHI0; /* sin of start or old geodetic latitude in iterations */\n var CPHI; /* cos of searched geodetic latitude */\n var SPHI; /* sin of searched geodetic latitude */\n var SDPHI; /* end-criterium: addition-theorem of sin(Latitude(iter)-Latitude(iter-1)) */\n var iter; /* # of continous iteration, max. 30 is always enough (s.a.) */\n\n var X = p.x;\n var Y = p.y;\n var Z = p.z ? p.z : 0.0; //Z value not always supplied\n var Longitude;\n var Latitude;\n var Height;\n\n P = Math.sqrt(X * X + Y * Y);\n RR = Math.sqrt(X * X + Y * Y + Z * Z);\n\n /* special cases for latitude and longitude */\n if (P / a < genau) {\n\n /* special case, if P=0. (X=0., Y=0.) */\n Longitude = 0.0;\n\n /* if (X,Y,Z)=(0.,0.,0.) then Height becomes semi-minor axis\n * of ellipsoid (=center of mass), Latitude becomes PI/2 */\n if (RR / a < genau) {\n Latitude = HALF_PI;\n Height = -b;\n return {\n x: p.x,\n y: p.y,\n z: p.z\n };\n }\n } else {\n /* ellipsoidal (geodetic) longitude\n * interval: -PI < Longitude <= +PI */\n Longitude = Math.atan2(Y, X);\n }\n\n /* --------------------------------------------------------------\n * Following iterative algorithm was developped by\n * \"Institut for Erdmessung\", University of Hannover, July 1988.\n * Internet: www.ife.uni-hannover.de\n * Iterative computation of CPHI,SPHI and Height.\n * Iteration of CPHI and SPHI to 10**-12 radian resp.\n * 2*10**-7 arcsec.\n * --------------------------------------------------------------\n */\n CT = Z / RR;\n ST = P / RR;\n RX = 1.0 / Math.sqrt(1.0 - es * (2.0 - es) * ST * ST);\n CPHI0 = ST * (1.0 - es) * RX;\n SPHI0 = CT * RX;\n iter = 0;\n\n /* loop to find sin(Latitude) resp. Latitude\n * until |sin(Latitude(iter)-Latitude(iter-1))| < genau */\n do {\n iter++;\n RN = a / Math.sqrt(1.0 - es * SPHI0 * SPHI0);\n\n /* ellipsoidal (geodetic) height */\n Height = P * CPHI0 + Z * SPHI0 - RN * (1.0 - es * SPHI0 * SPHI0);\n\n RK = es * RN / (RN + Height);\n RX = 1.0 / Math.sqrt(1.0 - RK * (2.0 - RK) * ST * ST);\n CPHI = ST * (1.0 - RK) * RX;\n SPHI = CT * RX;\n SDPHI = SPHI * CPHI0 - CPHI * SPHI0;\n CPHI0 = CPHI;\n SPHI0 = SPHI;\n }\n while (SDPHI * SDPHI > genau2 && iter < maxiter);\n\n /* ellipsoidal (geodetic) latitude */\n Latitude = Math.atan(SPHI / Math.abs(CPHI));\n return {\n x: Longitude,\n y: Latitude,\n z: Height\n };\n} // cs_geocentric_to_geodetic()\n\n/****************************************************************/\n// pj_geocentic_to_wgs84( p )\n// p = point to transform in geocentric coordinates (x,y,z)\n\n\n/** point object, nothing fancy, just allows values to be\n passed back and forth by reference rather than by value.\n Other point classes may be used as long as they have\n x and y properties, which will get modified in the transform method.\n*/\nexport function geocentricToWgs84(p, datum_type, datum_params) {\n\n if (datum_type === PJD_3PARAM) {\n // if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: p.x + datum_params[0],\n y: p.y + datum_params[1],\n z: p.z + datum_params[2],\n };\n } else if (datum_type === PJD_7PARAM) {\n var Dx_BF = datum_params[0];\n var Dy_BF = datum_params[1];\n var Dz_BF = datum_params[2];\n var Rx_BF = datum_params[3];\n var Ry_BF = datum_params[4];\n var Rz_BF = datum_params[5];\n var M_BF = datum_params[6];\n // if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: M_BF * (p.x - Rz_BF * p.y + Ry_BF * p.z) + Dx_BF,\n y: M_BF * (Rz_BF * p.x + p.y - Rx_BF * p.z) + Dy_BF,\n z: M_BF * (-Ry_BF * p.x + Rx_BF * p.y + p.z) + Dz_BF\n };\n }\n} // cs_geocentric_to_wgs84\n\n/****************************************************************/\n// pj_geocentic_from_wgs84()\n// coordinate system definition,\n// point to transform in geocentric coordinates (x,y,z)\nexport function geocentricFromWgs84(p, datum_type, datum_params) {\n\n if (datum_type === PJD_3PARAM) {\n //if( x[io] === HUGE_VAL )\n // continue;\n return {\n x: p.x - datum_params[0],\n y: p.y - datum_params[1],\n z: p.z - datum_params[2],\n };\n\n } else if (datum_type === PJD_7PARAM) {\n var Dx_BF = datum_params[0];\n var Dy_BF = datum_params[1];\n var Dz_BF = datum_params[2];\n var Rx_BF = datum_params[3];\n var Ry_BF = datum_params[4];\n var Rz_BF = datum_params[5];\n var M_BF = datum_params[6];\n var x_tmp = (p.x - Dx_BF) / M_BF;\n var y_tmp = (p.y - Dy_BF) / M_BF;\n var z_tmp = (p.z - Dz_BF) / M_BF;\n //if( x[io] === HUGE_VAL )\n // continue;\n\n return {\n x: x_tmp + Rz_BF * y_tmp - Ry_BF * z_tmp,\n y: -Rz_BF * x_tmp + y_tmp + Rx_BF * z_tmp,\n z: Ry_BF * x_tmp - Rx_BF * y_tmp + z_tmp\n };\n } //cs_geocentric_from_wgs84()\n}\n","import {\n PJD_3PARAM,\n PJD_7PARAM,\n PJD_GRIDSHIFT,\n PJD_NODATUM,\n R2D,\n SRS_WGS84_ESQUARED,\n SRS_WGS84_SEMIMAJOR, SRS_WGS84_SEMIMINOR\n} from './constants/values';\n\nimport {geodeticToGeocentric, geocentricToGeodetic, geocentricToWgs84, geocentricFromWgs84, compareDatums} from './datumUtils';\nimport adjust_lon from \"./common/adjust_lon\";\nfunction checkParams(type) {\n return (type === PJD_3PARAM || type === PJD_7PARAM);\n}\n\nexport default function(source, dest, point) {\n // Short cut if the datums are identical.\n if (compareDatums(source, dest)) {\n return point; // in this case, zero is sucess,\n // whereas cs_compare_datums returns 1 to indicate TRUE\n // confusing, should fix this\n }\n\n // Explicitly skip datum transform by setting 'datum=none' as parameter for either source or dest\n if (source.datum_type === PJD_NODATUM || dest.datum_type === PJD_NODATUM) {\n return point;\n }\n\n // If this datum requires grid shifts, then apply it to geodetic coordinates.\n var source_a = source.a;\n var source_es = source.es;\n if (source.datum_type === PJD_GRIDSHIFT) {\n var gridShiftCode = applyGridShift(source, false, point);\n if (gridShiftCode !== 0) {\n return undefined;\n }\n source_a = SRS_WGS84_SEMIMAJOR;\n source_es = SRS_WGS84_ESQUARED;\n }\n\n var dest_a = dest.a;\n var dest_b = dest.b;\n var dest_es = dest.es;\n if (dest.datum_type === PJD_GRIDSHIFT) {\n dest_a = SRS_WGS84_SEMIMAJOR;\n dest_b = SRS_WGS84_SEMIMINOR;\n dest_es = SRS_WGS84_ESQUARED;\n }\n\n // Do we need to go through geocentric coordinates?\n if (source_es === dest_es && source_a === dest_a && !checkParams(source.datum_type) && !checkParams(dest.datum_type)) {\n return point;\n }\n\n // Convert to geocentric coordinates.\n point = geodeticToGeocentric(point, source_es, source_a);\n // Convert between datums\n if (checkParams(source.datum_type)) {\n point = geocentricToWgs84(point, source.datum_type, source.datum_params);\n }\n if (checkParams(dest.datum_type)) {\n point = geocentricFromWgs84(point, dest.datum_type, dest.datum_params);\n }\n point = geocentricToGeodetic(point, dest_es, dest_a, dest_b);\n\n if (dest.datum_type === PJD_GRIDSHIFT) {\n var destGridShiftResult = applyGridShift(dest, true, point);\n if (destGridShiftResult !== 0) {\n return undefined;\n }\n }\n\n return point;\n}\n\nexport function applyGridShift(source, inverse, point) {\n if (source.grids === null || source.grids.length === 0) {\n console.log('Grid shift grids not found');\n return -1;\n }\n var input = {x: -point.x, y: point.y};\n var output = {x: Number.NaN, y: Number.NaN};\n var onlyMandatoryGrids = false;\n var attemptedGrids = [];\n for (var i = 0; i < source.grids.length; i++) {\n var grid = source.grids[i];\n attemptedGrids.push(grid.name);\n if (grid.isNull) {\n output = input;\n break;\n }\n onlyMandatoryGrids = grid.mandatory;\n if (grid.grid === null) {\n if (grid.mandatory) {\n console.log(\"Unable to find mandatory grid '\" + grid.name + \"'\");\n return -1;\n }\n continue;\n }\n var subgrid = grid.grid.subgrids[0];\n // skip tables that don't match our point at all\n var epsilon = (Math.abs(subgrid.del[1]) + Math.abs(subgrid.del[0])) / 10000.0;\n var minX = subgrid.ll[0] - epsilon;\n var minY = subgrid.ll[1] - epsilon;\n var maxX = subgrid.ll[0] + (subgrid.lim[0] - 1) * subgrid.del[0] + epsilon;\n var maxY = subgrid.ll[1] + (subgrid.lim[1] - 1) * subgrid.del[1] + epsilon;\n if (minY > input.y || minX > input.x || maxY < input.y || maxX < input.x ) {\n continue;\n }\n output = applySubgridShift(input, inverse, subgrid);\n if (!isNaN(output.x)) {\n break;\n }\n }\n if (isNaN(output.x)) {\n console.log(\"Failed to find a grid shift table for location '\"+\n -input.x * R2D + \" \" + input.y * R2D + \" tried: '\" + attemptedGrids + \"'\");\n return -1;\n }\n point.x = -output.x;\n point.y = output.y;\n return 0;\n}\n\nfunction applySubgridShift(pin, inverse, ct) {\n var val = {x: Number.NaN, y: Number.NaN};\n if (isNaN(pin.x)) { return val; }\n var tb = {x: pin.x, y: pin.y};\n tb.x -= ct.ll[0];\n tb.y -= ct.ll[1];\n tb.x = adjust_lon(tb.x - Math.PI) + Math.PI;\n var t = nadInterpolate(tb, ct);\n if (inverse) {\n if (isNaN(t.x)) {\n return val;\n }\n t.x = tb.x - t.x;\n t.y = tb.y - t.y;\n var i = 9, tol = 1e-12;\n var dif, del;\n do {\n del = nadInterpolate(t, ct);\n if (isNaN(del.x)) {\n console.log(\"Inverse grid shift iteration failed, presumably at grid edge. Using first approximation.\");\n break;\n }\n dif = {x: tb.x - (del.x + t.x), y: tb.y - (del.y + t.y)};\n t.x += dif.x;\n t.y += dif.y;\n } while (i-- && Math.abs(dif.x) > tol && Math.abs(dif.y) > tol);\n if (i < 0) {\n console.log(\"Inverse grid shift iterator failed to converge.\");\n return val;\n }\n val.x = adjust_lon(t.x + ct.ll[0]);\n val.y = t.y + ct.ll[1];\n } else {\n if (!isNaN(t.x)) {\n val.x = pin.x + t.x;\n val.y = pin.y + t.y;\n }\n }\n return val;\n}\n\nfunction nadInterpolate(pin, ct) {\n var t = {x: pin.x / ct.del[0], y: pin.y / ct.del[1]};\n var indx = {x: Math.floor(t.x), y: Math.floor(t.y)};\n var frct = {x: t.x - 1.0 * indx.x, y: t.y - 1.0 * indx.y};\n var val= {x: Number.NaN, y: Number.NaN};\n var inx;\n if (indx.x < 0 || indx.x >= ct.lim[0]) {\n return val;\n }\n if (indx.y < 0 || indx.y >= ct.lim[1]) {\n return val;\n }\n inx = (indx.y * ct.lim[0]) + indx.x;\n var f00 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n inx++;\n var f10= {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n inx += ct.lim[0];\n var f11 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n inx--;\n var f01 = {x: ct.cvs[inx][0], y: ct.cvs[inx][1]};\n var m11 = frct.x * frct.y, m10 = frct.x * (1.0 - frct.y),\n m00 = (1.0 - frct.x) * (1.0 - frct.y), m01 = (1.0 - frct.x) * frct.y;\n val.x = (m00 * f00.x + m10 * f10.x + m01 * f01.x + m11 * f11.x);\n val.y = (m00 * f00.y + m10 * f10.y + m01 * f01.y + m11 * f11.y);\n return val;\n}\n","export default function(crs, denorm, point) {\n var xin = point.x,\n yin = point.y,\n zin = point.z || 0.0;\n var v, t, i;\n var out = {};\n for (i = 0; i < 3; i++) {\n if (denorm && i === 2 && point.z === undefined) {\n continue;\n }\n if (i === 0) {\n v = xin;\n if (\"ew\".indexOf(crs.axis[i]) !== -1) {\n t = 'x';\n } else {\n t = 'y';\n }\n\n }\n else if (i === 1) {\n v = yin;\n if (\"ns\".indexOf(crs.axis[i]) !== -1) {\n t = 'y';\n } else {\n t = 'x';\n }\n }\n else {\n v = zin;\n t = 'z';\n }\n switch (crs.axis[i]) {\n case 'e':\n out[t] = v;\n break;\n case 'w':\n out[t] = -v;\n break;\n case 'n':\n out[t] = v;\n break;\n case 's':\n out[t] = -v;\n break;\n case 'u':\n if (point[t] !== undefined) {\n out.z = v;\n }\n break;\n case 'd':\n if (point[t] !== undefined) {\n out.z = -v;\n }\n break;\n default:\n //console.log(\"ERROR: unknow axis (\"+crs.axis[i]+\") - check definition of \"+crs.projName);\n return null;\n }\n }\n return out;\n}\n","export default function (array){\n var out = {\n x: array[0],\n y: array[1]\n };\n if (array.length>2) {\n out.z = array[2];\n }\n if (array.length>3) {\n out.m = array[3];\n }\n return out;\n}","export default function (point) {\n checkCoord(point.x);\n checkCoord(point.y);\n}\nfunction checkCoord(num) {\n if (typeof Number.isFinite === 'function') {\n if (Number.isFinite(num)) {\n return;\n }\n throw new TypeError('coordinates must be finite numbers');\n }\n if (typeof num !== 'number' || num !== num || !isFinite(num)) {\n throw new TypeError('coordinates must be finite numbers');\n }\n}\n","import {D2R, R2D, PJD_3PARAM, PJD_7PARAM, PJD_GRIDSHIFT} from './constants/values';\nimport datum_transform from './datum_transform';\nimport adjust_axis from './adjust_axis';\nimport proj from './Proj';\nimport toPoint from './common/toPoint';\nimport checkSanity from './checkSanity';\n\nfunction checkNotWGS(source, dest) {\n return (\n (source.datum.datum_type === PJD_3PARAM || source.datum.datum_type === PJD_7PARAM || source.datum.datum_type === PJD_GRIDSHIFT) && dest.datumCode !== 'WGS84') ||\n ((dest.datum.datum_type === PJD_3PARAM || dest.datum.datum_type === PJD_7PARAM || dest.datum.datum_type === PJD_GRIDSHIFT) && source.datumCode !== 'WGS84');\n}\n\nexport default function transform(source, dest, point, enforceAxis) {\n var wgs84;\n if (Array.isArray(point)) {\n point = toPoint(point);\n } else {\n // Clone the point object so inputs don't get modified\n point = {\n x: point.x,\n y: point.y,\n z: point.z,\n m: point.m\n };\n }\n var hasZ = point.z !== undefined;\n checkSanity(point);\n // Workaround for datum shifts towgs84, if either source or destination projection is not wgs84\n if (source.datum && dest.datum && checkNotWGS(source, dest)) {\n wgs84 = new proj('WGS84');\n point = transform(source, wgs84, point, enforceAxis);\n source = wgs84;\n }\n // DGR, 2010/11/12\n if (enforceAxis && source.axis !== 'enu') {\n point = adjust_axis(source, false, point);\n }\n // Transform source points to long/lat, if they aren't already.\n if (source.projName === 'longlat') {\n point = {\n x: point.x * D2R,\n y: point.y * D2R,\n z: point.z || 0\n };\n } else {\n if (source.to_meter) {\n point = {\n x: point.x * source.to_meter,\n y: point.y * source.to_meter,\n z: point.z || 0\n };\n }\n point = source.inverse(point); // Convert Cartesian to longlat\n if (!point) {\n return;\n }\n }\n // Adjust for the prime meridian if necessary\n if (source.from_greenwich) {\n point.x += source.from_greenwich;\n }\n\n // Convert datums if needed, and if possible.\n point = datum_transform(source.datum, dest.datum, point);\n if (!point) {\n return;\n }\n\n // Adjust for the prime meridian if necessary\n if (dest.from_greenwich) {\n point = {\n x: point.x - dest.from_greenwich,\n y: point.y,\n z: point.z || 0\n };\n }\n\n if (dest.projName === 'longlat') {\n // convert radians to decimal degrees\n point = {\n x: point.x * R2D,\n y: point.y * R2D,\n z: point.z || 0\n };\n } else { // else project\n point = dest.forward(point);\n if (dest.to_meter) {\n point = {\n x: point.x / dest.to_meter,\n y: point.y / dest.to_meter,\n z: point.z || 0\n };\n }\n }\n\n // DGR, 2010/11/12\n if (enforceAxis && dest.axis !== 'enu') {\n return adjust_axis(dest, true, point);\n }\n\n if (point && !hasZ) {\n delete point.z;\n }\n return point;\n}\n","import proj from './Proj';\nimport transform from './transform';\nvar wgs84 = proj('WGS84');\n\nfunction transformer(from, to, coords, enforceAxis) {\n var transformedArray, out, keys;\n if (Array.isArray(coords)) {\n transformedArray = transform(from, to, coords, enforceAxis) || {x: NaN, y: NaN};\n if (coords.length > 2) {\n if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n if (typeof transformedArray.z === 'number') {\n return [transformedArray.x, transformedArray.y, transformedArray.z].concat(coords.splice(3));\n } else {\n return [transformedArray.x, transformedArray.y, coords[2]].concat(coords.splice(3));\n }\n } else {\n return [transformedArray.x, transformedArray.y].concat(coords.splice(2));\n }\n } else {\n return [transformedArray.x, transformedArray.y];\n }\n } else {\n out = transform(from, to, coords, enforceAxis);\n keys = Object.keys(coords);\n if (keys.length === 2) {\n return out;\n }\n keys.forEach(function (key) {\n if ((typeof from.name !== 'undefined' && from.name === 'geocent') || (typeof to.name !== 'undefined' && to.name === 'geocent')) {\n if (key === 'x' || key === 'y' || key === 'z') {\n return;\n }\n } else {\n if (key === 'x' || key === 'y') {\n return;\n }\n }\n out[key] = coords[key];\n });\n return out;\n }\n}\n\nfunction checkProj(item) {\n if (item instanceof proj) {\n return item;\n }\n if (item.oProj) {\n return item.oProj;\n }\n return proj(item);\n}\n\nfunction proj4(fromProj, toProj, coord) {\n fromProj = checkProj(fromProj);\n var single = false;\n var obj;\n if (typeof toProj === 'undefined') {\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n } else if (typeof toProj.x !== 'undefined' || Array.isArray(toProj)) {\n coord = toProj;\n toProj = fromProj;\n fromProj = wgs84;\n single = true;\n }\n toProj = checkProj(toProj);\n if (coord) {\n return transformer(fromProj, toProj, coord);\n } else {\n obj = {\n forward: function (coords, enforceAxis) {\n return transformer(fromProj, toProj, coords, enforceAxis);\n },\n inverse: function (coords, enforceAxis) {\n return transformer(toProj, fromProj, coords, enforceAxis);\n }\n };\n if (single) {\n obj.oProj = toProj;\n }\n return obj;\n }\n}\nexport default proj4;","\n\n\n/**\n * UTM zones are grouped, and assigned to one of a group of 6\n * sets.\n *\n * {int} @private\n */\nvar NUM_100K_SETS = 6;\n\n/**\n * The column letters (for easting) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_COLUMN_LETTERS = 'AJSAJS';\n\n/**\n * The row letters (for northing) of the lower left value, per\n * set.\n *\n * {string} @private\n */\nvar SET_ORIGIN_ROW_LETTERS = 'AFAFAF';\n\nvar A = 65; // A\nvar I = 73; // I\nvar O = 79; // O\nvar V = 86; // V\nvar Z = 90; // Z\nexport default {\n forward: forward,\n inverse: inverse,\n toPoint: toPoint\n};\n/**\n * Conversion of lat/lon to MGRS.\n *\n * @param {object} ll Object literal with lat and lon properties on a\n * WGS84 ellipsoid.\n * @param {int} accuracy Accuracy in digits (5 for 1 m, 4 for 10 m, 3 for\n * 100 m, 2 for 1000 m or 1 for 10000 m). Optional, default is 5.\n * @return {string} the MGRS string for the given location and accuracy.\n */\nexport function forward(ll, accuracy) {\n accuracy = accuracy || 5; // default accuracy 1m\n return encode(LLtoUTM({\n lat: ll[1],\n lon: ll[0]\n }), accuracy);\n};\n\n/**\n * Conversion of MGRS to lat/lon.\n *\n * @param {string} mgrs MGRS string.\n * @return {array} An array with left (longitude), bottom (latitude), right\n * (longitude) and top (latitude) values in WGS84, representing the\n * bounding box for the provided MGRS reference.\n */\nexport function inverse(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n if (bbox.lat && bbox.lon) {\n return [bbox.lon, bbox.lat, bbox.lon, bbox.lat];\n }\n return [bbox.left, bbox.bottom, bbox.right, bbox.top];\n};\n\nexport function toPoint(mgrs) {\n var bbox = UTMtoLL(decode(mgrs.toUpperCase()));\n if (bbox.lat && bbox.lon) {\n return [bbox.lon, bbox.lat];\n }\n return [(bbox.left + bbox.right) / 2, (bbox.top + bbox.bottom) / 2];\n};\n/**\n * Conversion from degrees to radians.\n *\n * @private\n * @param {number} deg the angle in degrees.\n * @return {number} the angle in radians.\n */\nfunction degToRad(deg) {\n return (deg * (Math.PI / 180.0));\n}\n\n/**\n * Conversion from radians to degrees.\n *\n * @private\n * @param {number} rad the angle in radians.\n * @return {number} the angle in degrees.\n */\nfunction radToDeg(rad) {\n return (180.0 * (rad / Math.PI));\n}\n\n/**\n * Converts a set of Longitude and Latitude co-ordinates to UTM\n * using the WGS84 ellipsoid.\n *\n * @private\n * @param {object} ll Object literal with lat and lon properties\n * representing the WGS84 coordinate to be converted.\n * @return {object} Object literal containing the UTM value with easting,\n * northing, zoneNumber and zoneLetter properties, and an optional\n * accuracy property in digits. Returns null if the conversion failed.\n */\nfunction LLtoUTM(ll) {\n var Lat = ll.lat;\n var Long = ll.lon;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var k0 = 0.9996;\n var LongOrigin;\n var eccPrimeSquared;\n var N, T, C, A, M;\n var LatRad = degToRad(Lat);\n var LongRad = degToRad(Long);\n var LongOriginRad;\n var ZoneNumber;\n // (int)\n ZoneNumber = Math.floor((Long + 180) / 6) + 1;\n\n //Make sure the longitude 180.00 is in Zone 60\n if (Long === 180) {\n ZoneNumber = 60;\n }\n\n // Special zone for Norway\n if (Lat >= 56.0 && Lat < 64.0 && Long >= 3.0 && Long < 12.0) {\n ZoneNumber = 32;\n }\n\n // Special zones for Svalbard\n if (Lat >= 72.0 && Lat < 84.0) {\n if (Long >= 0.0 && Long < 9.0) {\n ZoneNumber = 31;\n }\n else if (Long >= 9.0 && Long < 21.0) {\n ZoneNumber = 33;\n }\n else if (Long >= 21.0 && Long < 33.0) {\n ZoneNumber = 35;\n }\n else if (Long >= 33.0 && Long < 42.0) {\n ZoneNumber = 37;\n }\n }\n\n LongOrigin = (ZoneNumber - 1) * 6 - 180 + 3; //+3 puts origin\n // in middle of\n // zone\n LongOriginRad = degToRad(LongOrigin);\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n N = a / Math.sqrt(1 - eccSquared * Math.sin(LatRad) * Math.sin(LatRad));\n T = Math.tan(LatRad) * Math.tan(LatRad);\n C = eccPrimeSquared * Math.cos(LatRad) * Math.cos(LatRad);\n A = Math.cos(LatRad) * (LongRad - LongOriginRad);\n\n M = a * ((1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256) * LatRad - (3 * eccSquared / 8 + 3 * eccSquared * eccSquared / 32 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(2 * LatRad) + (15 * eccSquared * eccSquared / 256 + 45 * eccSquared * eccSquared * eccSquared / 1024) * Math.sin(4 * LatRad) - (35 * eccSquared * eccSquared * eccSquared / 3072) * Math.sin(6 * LatRad));\n\n var UTMEasting = (k0 * N * (A + (1 - T + C) * A * A * A / 6.0 + (5 - 18 * T + T * T + 72 * C - 58 * eccPrimeSquared) * A * A * A * A * A / 120.0) + 500000.0);\n\n var UTMNorthing = (k0 * (M + N * Math.tan(LatRad) * (A * A / 2 + (5 - T + 9 * C + 4 * C * C) * A * A * A * A / 24.0 + (61 - 58 * T + T * T + 600 * C - 330 * eccPrimeSquared) * A * A * A * A * A * A / 720.0)));\n if (Lat < 0.0) {\n UTMNorthing += 10000000.0; //10000000 meter offset for\n // southern hemisphere\n }\n\n return {\n northing: Math.round(UTMNorthing),\n easting: Math.round(UTMEasting),\n zoneNumber: ZoneNumber,\n zoneLetter: getLetterDesignator(Lat)\n };\n}\n\n/**\n * Converts UTM coords to lat/long, using the WGS84 ellipsoid. This is a convenience\n * class where the Zone can be specified as a single string eg.\"60N\" which\n * is then broken down into the ZoneNumber and ZoneLetter.\n *\n * @private\n * @param {object} utm An object literal with northing, easting, zoneNumber\n * and zoneLetter properties. If an optional accuracy property is\n * provided (in meters), a bounding box will be returned instead of\n * latitude and longitude.\n * @return {object} An object literal containing either lat and lon values\n * (if no accuracy was provided), or top, right, bottom and left values\n * for the bounding box calculated according to the provided accuracy.\n * Returns null if the conversion failed.\n */\nfunction UTMtoLL(utm) {\n\n var UTMNorthing = utm.northing;\n var UTMEasting = utm.easting;\n var zoneLetter = utm.zoneLetter;\n var zoneNumber = utm.zoneNumber;\n // check the ZoneNummber is valid\n if (zoneNumber < 0 || zoneNumber > 60) {\n return null;\n }\n\n var k0 = 0.9996;\n var a = 6378137.0; //ellip.radius;\n var eccSquared = 0.00669438; //ellip.eccsq;\n var eccPrimeSquared;\n var e1 = (1 - Math.sqrt(1 - eccSquared)) / (1 + Math.sqrt(1 - eccSquared));\n var N1, T1, C1, R1, D, M;\n var LongOrigin;\n var mu, phi1Rad;\n\n // remove 500,000 meter offset for longitude\n var x = UTMEasting - 500000.0;\n var y = UTMNorthing;\n\n // We must know somehow if we are in the Northern or Southern\n // hemisphere, this is the only time we use the letter So even\n // if the Zone letter isn't exactly correct it should indicate\n // the hemisphere correctly\n if (zoneLetter < 'N') {\n y -= 10000000.0; // remove 10,000,000 meter offset used\n // for southern hemisphere\n }\n\n // There are 60 zones with zone 1 being at West -180 to -174\n LongOrigin = (zoneNumber - 1) * 6 - 180 + 3; // +3 puts origin\n // in middle of\n // zone\n\n eccPrimeSquared = (eccSquared) / (1 - eccSquared);\n\n M = y / k0;\n mu = M / (a * (1 - eccSquared / 4 - 3 * eccSquared * eccSquared / 64 - 5 * eccSquared * eccSquared * eccSquared / 256));\n\n phi1Rad = mu + (3 * e1 / 2 - 27 * e1 * e1 * e1 / 32) * Math.sin(2 * mu) + (21 * e1 * e1 / 16 - 55 * e1 * e1 * e1 * e1 / 32) * Math.sin(4 * mu) + (151 * e1 * e1 * e1 / 96) * Math.sin(6 * mu);\n // double phi1 = ProjMath.radToDeg(phi1Rad);\n\n N1 = a / Math.sqrt(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad));\n T1 = Math.tan(phi1Rad) * Math.tan(phi1Rad);\n C1 = eccPrimeSquared * Math.cos(phi1Rad) * Math.cos(phi1Rad);\n R1 = a * (1 - eccSquared) / Math.pow(1 - eccSquared * Math.sin(phi1Rad) * Math.sin(phi1Rad), 1.5);\n D = x / (N1 * k0);\n\n var lat = phi1Rad - (N1 * Math.tan(phi1Rad) / R1) * (D * D / 2 - (5 + 3 * T1 + 10 * C1 - 4 * C1 * C1 - 9 * eccPrimeSquared) * D * D * D * D / 24 + (61 + 90 * T1 + 298 * C1 + 45 * T1 * T1 - 252 * eccPrimeSquared - 3 * C1 * C1) * D * D * D * D * D * D / 720);\n lat = radToDeg(lat);\n\n var lon = (D - (1 + 2 * T1 + C1) * D * D * D / 6 + (5 - 2 * C1 + 28 * T1 - 3 * C1 * C1 + 8 * eccPrimeSquared + 24 * T1 * T1) * D * D * D * D * D / 120) / Math.cos(phi1Rad);\n lon = LongOrigin + radToDeg(lon);\n\n var result;\n if (utm.accuracy) {\n var topRight = UTMtoLL({\n northing: utm.northing + utm.accuracy,\n easting: utm.easting + utm.accuracy,\n zoneLetter: utm.zoneLetter,\n zoneNumber: utm.zoneNumber\n });\n result = {\n top: topRight.lat,\n right: topRight.lon,\n bottom: lat,\n left: lon\n };\n }\n else {\n result = {\n lat: lat,\n lon: lon\n };\n }\n return result;\n}\n\n/**\n * Calculates the MGRS letter designator for the given latitude.\n *\n * @private\n * @param {number} lat The latitude in WGS84 to get the letter designator\n * for.\n * @return {char} The letter designator.\n */\nfunction getLetterDesignator(lat) {\n //This is here as an error flag to show that the Latitude is\n //outside MGRS limits\n var LetterDesignator = 'Z';\n\n if ((84 >= lat) && (lat >= 72)) {\n LetterDesignator = 'X';\n }\n else if ((72 > lat) && (lat >= 64)) {\n LetterDesignator = 'W';\n }\n else if ((64 > lat) && (lat >= 56)) {\n LetterDesignator = 'V';\n }\n else if ((56 > lat) && (lat >= 48)) {\n LetterDesignator = 'U';\n }\n else if ((48 > lat) && (lat >= 40)) {\n LetterDesignator = 'T';\n }\n else if ((40 > lat) && (lat >= 32)) {\n LetterDesignator = 'S';\n }\n else if ((32 > lat) && (lat >= 24)) {\n LetterDesignator = 'R';\n }\n else if ((24 > lat) && (lat >= 16)) {\n LetterDesignator = 'Q';\n }\n else if ((16 > lat) && (lat >= 8)) {\n LetterDesignator = 'P';\n }\n else if ((8 > lat) && (lat >= 0)) {\n LetterDesignator = 'N';\n }\n else if ((0 > lat) && (lat >= -8)) {\n LetterDesignator = 'M';\n }\n else if ((-8 > lat) && (lat >= -16)) {\n LetterDesignator = 'L';\n }\n else if ((-16 > lat) && (lat >= -24)) {\n LetterDesignator = 'K';\n }\n else if ((-24 > lat) && (lat >= -32)) {\n LetterDesignator = 'J';\n }\n else if ((-32 > lat) && (lat >= -40)) {\n LetterDesignator = 'H';\n }\n else if ((-40 > lat) && (lat >= -48)) {\n LetterDesignator = 'G';\n }\n else if ((-48 > lat) && (lat >= -56)) {\n LetterDesignator = 'F';\n }\n else if ((-56 > lat) && (lat >= -64)) {\n LetterDesignator = 'E';\n }\n else if ((-64 > lat) && (lat >= -72)) {\n LetterDesignator = 'D';\n }\n else if ((-72 > lat) && (lat >= -80)) {\n LetterDesignator = 'C';\n }\n return LetterDesignator;\n}\n\n/**\n * Encodes a UTM location as MGRS string.\n *\n * @private\n * @param {object} utm An object literal with easting, northing,\n * zoneLetter, zoneNumber\n * @param {number} accuracy Accuracy in digits (1-5).\n * @return {string} MGRS string for the given UTM location.\n */\nfunction encode(utm, accuracy) {\n // prepend with leading zeroes\n var seasting = \"00000\" + utm.easting,\n snorthing = \"00000\" + utm.northing;\n\n return utm.zoneNumber + utm.zoneLetter + get100kID(utm.easting, utm.northing, utm.zoneNumber) + seasting.substr(seasting.length - 5, accuracy) + snorthing.substr(snorthing.length - 5, accuracy);\n}\n\n/**\n * Get the two letter 100k designator for a given UTM easting,\n * northing and zone number value.\n *\n * @private\n * @param {number} easting\n * @param {number} northing\n * @param {number} zoneNumber\n * @return the two letter 100k designator for the given UTM location.\n */\nfunction get100kID(easting, northing, zoneNumber) {\n var setParm = get100kSetForZone(zoneNumber);\n var setColumn = Math.floor(easting / 100000);\n var setRow = Math.floor(northing / 100000) % 20;\n return getLetter100kID(setColumn, setRow, setParm);\n}\n\n/**\n * Given a UTM zone number, figure out the MGRS 100K set it is in.\n *\n * @private\n * @param {number} i An UTM zone number.\n * @return {number} the 100k set the UTM zone is in.\n */\nfunction get100kSetForZone(i) {\n var setParm = i % NUM_100K_SETS;\n if (setParm === 0) {\n setParm = NUM_100K_SETS;\n }\n\n return setParm;\n}\n\n/**\n * Get the two-letter MGRS 100k designator given information\n * translated from the UTM northing, easting and zone number.\n *\n * @private\n * @param {number} column the column index as it relates to the MGRS\n * 100k set spreadsheet, created from the UTM easting.\n * Values are 1-8.\n * @param {number} row the row index as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM northing value. Values\n * are from 0-19.\n * @param {number} parm the set block, as it relates to the MGRS 100k set\n * spreadsheet, created from the UTM zone. Values are from\n * 1-60.\n * @return two letter MGRS 100k code.\n */\nfunction getLetter100kID(column, row, parm) {\n // colOrigin and rowOrigin are the letters at the origin of the set\n var index = parm - 1;\n var colOrigin = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(index);\n var rowOrigin = SET_ORIGIN_ROW_LETTERS.charCodeAt(index);\n\n // colInt and rowInt are the letters to build to return\n var colInt = colOrigin + column - 1;\n var rowInt = rowOrigin + row;\n var rollover = false;\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n rollover = true;\n }\n\n if (colInt === I || (colOrigin < I && colInt > I) || ((colInt > I || colOrigin < I) && rollover)) {\n colInt++;\n }\n\n if (colInt === O || (colOrigin < O && colInt > O) || ((colInt > O || colOrigin < O) && rollover)) {\n colInt++;\n\n if (colInt === I) {\n colInt++;\n }\n }\n\n if (colInt > Z) {\n colInt = colInt - Z + A - 1;\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n rollover = true;\n }\n else {\n rollover = false;\n }\n\n if (((rowInt === I) || ((rowOrigin < I) && (rowInt > I))) || (((rowInt > I) || (rowOrigin < I)) && rollover)) {\n rowInt++;\n }\n\n if (((rowInt === O) || ((rowOrigin < O) && (rowInt > O))) || (((rowInt > O) || (rowOrigin < O)) && rollover)) {\n rowInt++;\n\n if (rowInt === I) {\n rowInt++;\n }\n }\n\n if (rowInt > V) {\n rowInt = rowInt - V + A - 1;\n }\n\n var twoLetter = String.fromCharCode(colInt) + String.fromCharCode(rowInt);\n return twoLetter;\n}\n\n/**\n * Decode the UTM parameters from a MGRS string.\n *\n * @private\n * @param {string} mgrsString an UPPERCASE coordinate string is expected.\n * @return {object} An object literal with easting, northing, zoneLetter,\n * zoneNumber and accuracy (in meters) properties.\n */\nfunction decode(mgrsString) {\n\n if (mgrsString && mgrsString.length === 0) {\n throw (\"MGRSPoint coverting from nothing\");\n }\n\n var length = mgrsString.length;\n\n var hunK = null;\n var sb = \"\";\n var testChar;\n var i = 0;\n\n // get Zone number\n while (!(/[A-Z]/).test(testChar = mgrsString.charAt(i))) {\n if (i >= 2) {\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n sb += testChar;\n i++;\n }\n\n var zoneNumber = parseInt(sb, 10);\n\n if (i === 0 || i + 3 > length) {\n // A good MGRS string has to be 4-5 digits long,\n // ##AAA/#AAA at least.\n throw (\"MGRSPoint bad conversion from: \" + mgrsString);\n }\n\n var zoneLetter = mgrsString.charAt(i++);\n\n // Should we check the zone letter here? Why not.\n if (zoneLetter <= 'A' || zoneLetter === 'B' || zoneLetter === 'Y' || zoneLetter >= 'Z' || zoneLetter === 'I' || zoneLetter === 'O') {\n throw (\"MGRSPoint zone letter \" + zoneLetter + \" not handled: \" + mgrsString);\n }\n\n hunK = mgrsString.substring(i, i += 2);\n\n var set = get100kSetForZone(zoneNumber);\n\n var east100k = getEastingFromChar(hunK.charAt(0), set);\n var north100k = getNorthingFromChar(hunK.charAt(1), set);\n\n // We have a bug where the northing may be 2000000 too low.\n // How\n // do we know when to roll over?\n\n while (north100k < getMinNorthing(zoneLetter)) {\n north100k += 2000000;\n }\n\n // calculate the char index for easting/northing separator\n var remainder = length - i;\n\n if (remainder % 2 !== 0) {\n throw (\"MGRSPoint has to have an even number \\nof digits after the zone letter and two 100km letters - front \\nhalf for easting meters, second half for \\nnorthing meters\" + mgrsString);\n }\n\n var sep = remainder / 2;\n\n var sepEasting = 0.0;\n var sepNorthing = 0.0;\n var accuracyBonus, sepEastingString, sepNorthingString, easting, northing;\n if (sep > 0) {\n accuracyBonus = 100000.0 / Math.pow(10, sep);\n sepEastingString = mgrsString.substring(i, i + sep);\n sepEasting = parseFloat(sepEastingString) * accuracyBonus;\n sepNorthingString = mgrsString.substring(i + sep);\n sepNorthing = parseFloat(sepNorthingString) * accuracyBonus;\n }\n\n easting = sepEasting + east100k;\n northing = sepNorthing + north100k;\n\n return {\n easting: easting,\n northing: northing,\n zoneLetter: zoneLetter,\n zoneNumber: zoneNumber,\n accuracy: accuracyBonus\n };\n}\n\n/**\n * Given the first letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the easting value that\n * should be added to the other, secondary easting value.\n *\n * @private\n * @param {char} e The first letter from a two-letter MGRS 100´k zone.\n * @param {number} set The MGRS table set for the zone number.\n * @return {number} The easting value for the given letter and set.\n */\nfunction getEastingFromChar(e, set) {\n // colOrigin is the letter at the origin of the set for the\n // column\n var curCol = SET_ORIGIN_COLUMN_LETTERS.charCodeAt(set - 1);\n var eastingValue = 100000.0;\n var rewindMarker = false;\n\n while (curCol !== e.charCodeAt(0)) {\n curCol++;\n if (curCol === I) {\n curCol++;\n }\n if (curCol === O) {\n curCol++;\n }\n if (curCol > Z) {\n if (rewindMarker) {\n throw (\"Bad character: \" + e);\n }\n curCol = A;\n rewindMarker = true;\n }\n eastingValue += 100000.0;\n }\n\n return eastingValue;\n}\n\n/**\n * Given the second letter from a two-letter MGRS 100k zone, and given the\n * MGRS table set for the zone number, figure out the northing value that\n * should be added to the other, secondary northing value. You have to\n * remember that Northings are determined from the equator, and the vertical\n * cycle of letters mean a 2000000 additional northing meters. This happens\n * approx. every 18 degrees of latitude. This method does *NOT* count any\n * additional northings. You have to figure out how many 2000000 meters need\n * to be added for the zone letter of the MGRS coordinate.\n *\n * @private\n * @param {char} n Second letter of the MGRS 100k zone\n * @param {number} set The MGRS table set number, which is dependent on the\n * UTM zone number.\n * @return {number} The northing value for the given letter and set.\n */\nfunction getNorthingFromChar(n, set) {\n\n if (n > 'V') {\n throw (\"MGRSPoint given invalid Northing \" + n);\n }\n\n // rowOrigin is the letter at the origin of the set for the\n // column\n var curRow = SET_ORIGIN_ROW_LETTERS.charCodeAt(set - 1);\n var northingValue = 0.0;\n var rewindMarker = false;\n\n while (curRow !== n.charCodeAt(0)) {\n curRow++;\n if (curRow === I) {\n curRow++;\n }\n if (curRow === O) {\n curRow++;\n }\n // fixing a bug making whole application hang in this loop\n // when 'n' is a wrong character\n if (curRow > V) {\n if (rewindMarker) { // making sure that this loop ends\n throw (\"Bad character: \" + n);\n }\n curRow = A;\n rewindMarker = true;\n }\n northingValue += 100000.0;\n }\n\n return northingValue;\n}\n\n/**\n * The function getMinNorthing returns the minimum northing value of a MGRS\n * zone.\n *\n * Ported from Geotrans' c Lattitude_Band_Value structure table.\n *\n * @private\n * @param {char} zoneLetter The MGRS zone to get the min northing for.\n * @return {number}\n */\nfunction getMinNorthing(zoneLetter) {\n var northing;\n switch (zoneLetter) {\n case 'C':\n northing = 1100000.0;\n break;\n case 'D':\n northing = 2000000.0;\n break;\n case 'E':\n northing = 2800000.0;\n break;\n case 'F':\n northing = 3700000.0;\n break;\n case 'G':\n northing = 4600000.0;\n break;\n case 'H':\n northing = 5500000.0;\n break;\n case 'J':\n northing = 6400000.0;\n break;\n case 'K':\n northing = 7300000.0;\n break;\n case 'L':\n northing = 8200000.0;\n break;\n case 'M':\n northing = 9100000.0;\n break;\n case 'N':\n northing = 0.0;\n break;\n case 'P':\n northing = 800000.0;\n break;\n case 'Q':\n northing = 1700000.0;\n break;\n case 'R':\n northing = 2600000.0;\n break;\n case 'S':\n northing = 3500000.0;\n break;\n case 'T':\n northing = 4400000.0;\n break;\n case 'U':\n northing = 5300000.0;\n break;\n case 'V':\n northing = 6200000.0;\n break;\n case 'W':\n northing = 7000000.0;\n break;\n case 'X':\n northing = 7900000.0;\n break;\n default:\n northing = -1.0;\n }\n if (northing >= 0.0) {\n return northing;\n }\n else {\n throw (\"Invalid zone letter: \" + zoneLetter);\n }\n\n}\n","import {toPoint, forward} from 'mgrs';\n\nfunction Point(x, y, z) {\n if (!(this instanceof Point)) {\n return new Point(x, y, z);\n }\n if (Array.isArray(x)) {\n this.x = x[0];\n this.y = x[1];\n this.z = x[2] || 0.0;\n } else if(typeof x === 'object') {\n this.x = x.x;\n this.y = x.y;\n this.z = x.z || 0.0;\n } else if (typeof x === 'string' && typeof y === 'undefined') {\n var coords = x.split(',');\n this.x = parseFloat(coords[0], 10);\n this.y = parseFloat(coords[1], 10);\n this.z = parseFloat(coords[2], 10) || 0.0;\n } else {\n this.x = x;\n this.y = y;\n this.z = z || 0.0;\n }\n console.warn('proj4.Point will be removed in version 3, use proj4.toPoint');\n}\n\nPoint.fromMGRS = function(mgrsStr) {\n return new Point(toPoint(mgrsStr));\n};\nPoint.prototype.toMGRS = function(accuracy) {\n return forward([this.x, this.y], accuracy);\n};\nexport default Point;\n","var C00 = 1;\nvar C02 = 0.25;\nvar C04 = 0.046875;\nvar C06 = 0.01953125;\nvar C08 = 0.01068115234375;\nvar C22 = 0.75;\nvar C44 = 0.46875;\nvar C46 = 0.01302083333333333333;\nvar C48 = 0.00712076822916666666;\nvar C66 = 0.36458333333333333333;\nvar C68 = 0.00569661458333333333;\nvar C88 = 0.3076171875;\n\nexport default function(es) {\n var en = [];\n en[0] = C00 - es * (C02 + es * (C04 + es * (C06 + es * C08)));\n en[1] = es * (C22 - es * (C04 + es * (C06 + es * C08)));\n var t = es * es;\n en[2] = t * (C44 - es * (C46 + es * C48));\n t *= es;\n en[3] = t * (C66 - es * C68);\n en[4] = t * es * C88;\n return en;\n}","export default function(phi, sphi, cphi, en) {\n cphi *= sphi;\n sphi *= sphi;\n return (en[0] * phi - cphi * (en[1] + sphi * (en[2] + sphi * (en[3] + sphi * en[4]))));\n}","import pj_mlfn from \"./pj_mlfn\";\nimport {EPSLN} from '../constants/values';\n\nvar MAX_ITER = 20;\n\nexport default function(arg, es, en) {\n var k = 1 / (1 - es);\n var phi = arg;\n for (var i = MAX_ITER; i; --i) { /* rarely goes over 2 iterations */\n var s = Math.sin(phi);\n var t = 1 - es * s * s;\n //t = this.pj_mlfn(phi, s, Math.cos(phi), en) - arg;\n //phi -= t * (t * Math.sqrt(t)) * k;\n t = (pj_mlfn(phi, s, Math.cos(phi), en) - arg) * (t * Math.sqrt(t)) * k;\n phi -= t;\n if (Math.abs(t) < EPSLN) {\n return phi;\n }\n }\n //..reportError(\"cass:pj_inv_mlfn: Convergence error\");\n return phi;\n}\n","// Heavily based on this tmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/tmerc.js\n\nimport pj_enfn from '../common/pj_enfn';\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport adjust_lon from '../common/adjust_lon';\n\nimport {EPSLN, HALF_PI} from '../constants/values';\nimport sign from '../common/sign';\n\nexport function init() {\n this.x0 = this.x0 !== undefined ? this.x0 : 0;\n this.y0 = this.y0 !== undefined ? this.y0 : 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n if (this.es) {\n this.en = pj_enfn(this.es);\n this.ml0 = pj_mlfn(this.lat0, Math.sin(this.lat0), Math.cos(this.lat0), this.en);\n }\n}\n\n/**\n Transverse Mercator Forward - long/lat to x/y\n long/lat in radians\n */\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var con;\n var x, y;\n var sin_phi = Math.sin(lat);\n var cos_phi = Math.cos(lat);\n\n if (!this.es) {\n var b = cos_phi * Math.sin(delta_lon);\n\n if ((Math.abs(Math.abs(b) - 1)) < EPSLN) {\n return (93);\n }\n else {\n x = 0.5 * this.a * this.k0 * Math.log((1 + b) / (1 - b)) + this.x0;\n y = cos_phi * Math.cos(delta_lon) / Math.sqrt(1 - Math.pow(b, 2));\n b = Math.abs(y);\n\n if (b >= 1) {\n if ((b - 1) > EPSLN) {\n return (93);\n }\n else {\n y = 0;\n }\n }\n else {\n y = Math.acos(y);\n }\n\n if (lat < 0) {\n y = -y;\n }\n\n y = this.a * this.k0 * (y - this.lat0) + this.y0;\n }\n }\n else {\n var al = cos_phi * delta_lon;\n var als = Math.pow(al, 2);\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var tq = Math.abs(cos_phi) > EPSLN ? Math.tan(lat) : 0;\n var t = Math.pow(tq, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n al = al / Math.sqrt(con);\n var ml = pj_mlfn(lat, sin_phi, cos_phi, this.en);\n\n x = this.a * (this.k0 * al * (1 +\n als / 6 * (1 - t + c +\n als / 20 * (5 - 18 * t + ts + 14 * c - 58 * t * c +\n als / 42 * (61 + 179 * ts - ts * t - 479 * t))))) +\n this.x0;\n\n y = this.a * (this.k0 * (ml - this.ml0 +\n sin_phi * delta_lon * al / 2 * (1 +\n als / 12 * (5 - t + 9 * c + 4 * cs +\n als / 30 * (61 + ts - 58 * t + 270 * c - 330 * t * c +\n als / 56 * (1385 + 543 * ts - ts * t - 3111 * t)))))) +\n this.y0;\n }\n\n p.x = x;\n p.y = y;\n\n return p;\n}\n\n/**\n Transverse Mercator Inverse - x/y to long/lat\n */\nexport function inverse(p) {\n var con, phi;\n var lat, lon;\n var x = (p.x - this.x0) * (1 / this.a);\n var y = (p.y - this.y0) * (1 / this.a);\n\n if (!this.es) {\n var f = Math.exp(x / this.k0);\n var g = 0.5 * (f - 1 / f);\n var temp = this.lat0 + y / this.k0;\n var h = Math.cos(temp);\n con = Math.sqrt((1 - Math.pow(h, 2)) / (1 + Math.pow(g, 2)));\n lat = Math.asin(con);\n\n if (y < 0) {\n lat = -lat;\n }\n\n if ((g === 0) && (h === 0)) {\n lon = 0;\n }\n else {\n lon = adjust_lon(Math.atan2(g, h) + this.long0);\n }\n }\n else { // ellipsoidal form\n con = this.ml0 + y / this.k0;\n phi = pj_inv_mlfn(con, this.es, this.en);\n\n if (Math.abs(phi) < HALF_PI) {\n var sin_phi = Math.sin(phi);\n var cos_phi = Math.cos(phi);\n var tan_phi = Math.abs(cos_phi) > EPSLN ? Math.tan(phi) : 0;\n var c = this.ep2 * Math.pow(cos_phi, 2);\n var cs = Math.pow(c, 2);\n var t = Math.pow(tan_phi, 2);\n var ts = Math.pow(t, 2);\n con = 1 - this.es * Math.pow(sin_phi, 2);\n var d = x * Math.sqrt(con) / this.k0;\n var ds = Math.pow(d, 2);\n con = con * tan_phi;\n\n lat = phi - (con * ds / (1 - this.es)) * 0.5 * (1 -\n ds / 12 * (5 + 3 * t - 9 * c * t + c - 4 * cs -\n ds / 30 * (61 + 90 * t - 252 * c * t + 45 * ts + 46 * c -\n ds / 56 * (1385 + 3633 * t + 4095 * ts + 1574 * ts * t))));\n\n lon = adjust_lon(this.long0 + (d * (1 -\n ds / 6 * (1 + 2 * t + c -\n ds / 20 * (5 + 28 * t + 24 * ts + 8 * c * t + 6 * c -\n ds / 42 * (61 + 662 * t + 1320 * ts + 720 * ts * t)))) / cos_phi));\n }\n else {\n lat = HALF_PI * sign(y);\n lon = 0;\n }\n }\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"Fast_Transverse_Mercator\", \"Fast Transverse Mercator\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(x) {\n var r = Math.exp(x);\n r = (r - 1 / r) / 2;\n return r;\n}","export default function(x, y) {\n x = Math.abs(x);\n y = Math.abs(y);\n var a = Math.max(x, y);\n var b = Math.min(x, y) / (a ? a : 1);\n\n return a * Math.sqrt(1 + Math.pow(b, 2));\n}\n","import hypot from './hypot';\nimport log1py from './log1py';\n\nexport default function(x) {\n var y = Math.abs(x);\n y = log1py(y * (1 + y / (hypot(1, y) + 1)));\n\n return x < 0 ? -y : y;\n}\n","export default function(x) {\n var y = 1 + x;\n var z = y - 1;\n\n return z === 0 ? x : x * Math.log(y) / z;\n}\n","export default function(pp, B) {\n var cos_2B = 2 * Math.cos(2 * B);\n var i = pp.length - 1;\n var h1 = pp[i];\n var h2 = 0;\n var h;\n\n while (--i >= 0) {\n h = -h2 + cos_2B * h1 + pp[i];\n h2 = h1;\n h1 = h;\n }\n\n return (B + h * Math.sin(2 * B));\n}\n","import sinh from './sinh';\nimport cosh from './cosh';\n\nexport default function(pp, arg_r, arg_i) {\n var sin_arg_r = Math.sin(arg_r);\n var cos_arg_r = Math.cos(arg_r);\n var sinh_arg_i = sinh(arg_i);\n var cosh_arg_i = cosh(arg_i);\n var r = 2 * cos_arg_r * cosh_arg_i;\n var i = -2 * sin_arg_r * sinh_arg_i;\n var j = pp.length - 1;\n var hr = pp[j];\n var hi1 = 0;\n var hr1 = 0;\n var hi = 0;\n var hr2;\n var hi2;\n\n while (--j >= 0) {\n hr2 = hr1;\n hi2 = hi1;\n hr1 = hr;\n hi1 = hi;\n hr = -hr2 + r * hr1 - i * hi1 + pp[j];\n hi = -hi2 + i * hr1 + r * hi1;\n }\n\n r = sin_arg_r * cosh_arg_i;\n i = cos_arg_r * sinh_arg_i;\n\n return [r * hr - i * hi, r * hi + i * hr];\n}\n","export default function(x) {\n var r = Math.exp(x);\n r = (r + 1 / r) / 2;\n return r;\n}","// Heavily based on this etmerc projection implementation\n// https://github.com/mbloch/mapshaper-proj/blob/master/src/projections/etmerc.js\n\nimport tmerc from '../projections/tmerc';\nimport sinh from '../common/sinh';\nimport hypot from '../common/hypot';\nimport asinhy from '../common/asinhy';\nimport gatg from '../common/gatg';\nimport clens from '../common/clens';\nimport clens_cmplx from '../common/clens_cmplx';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n if (!this.approx && (isNaN(this.es) || this.es <= 0)) {\n throw new Error('Incorrect elliptical usage. Try using the +approx option in the proj string, or PROJECTION[\"Fast_Transverse_Mercator\"] in the WKT.');\n }\n if (this.approx) {\n // When '+approx' is set, use tmerc instead\n tmerc.init.apply(this);\n this.forward = tmerc.forward;\n this.inverse = tmerc.inverse;\n }\n\n this.x0 = this.x0 !== undefined ? this.x0 : 0;\n this.y0 = this.y0 !== undefined ? this.y0 : 0;\n this.long0 = this.long0 !== undefined ? this.long0 : 0;\n this.lat0 = this.lat0 !== undefined ? this.lat0 : 0;\n\n this.cgb = [];\n this.cbg = [];\n this.utg = [];\n this.gtu = [];\n\n var f = this.es / (1 + Math.sqrt(1 - this.es));\n var n = f / (2 - f);\n var np = n;\n\n this.cgb[0] = n * (2 + n * (-2 / 3 + n * (-2 + n * (116 / 45 + n * (26 / 45 + n * (-2854 / 675 ))))));\n this.cbg[0] = n * (-2 + n * ( 2 / 3 + n * ( 4 / 3 + n * (-82 / 45 + n * (32 / 45 + n * (4642 / 4725))))));\n\n np = np * n;\n this.cgb[1] = np * (7 / 3 + n * (-8 / 5 + n * (-227 / 45 + n * (2704 / 315 + n * (2323 / 945)))));\n this.cbg[1] = np * (5 / 3 + n * (-16 / 15 + n * ( -13 / 9 + n * (904 / 315 + n * (-1522 / 945)))));\n\n np = np * n;\n this.cgb[2] = np * (56 / 15 + n * (-136 / 35 + n * (-1262 / 105 + n * (73814 / 2835))));\n this.cbg[2] = np * (-26 / 15 + n * (34 / 21 + n * (8 / 5 + n * (-12686 / 2835))));\n\n np = np * n;\n this.cgb[3] = np * (4279 / 630 + n * (-332 / 35 + n * (-399572 / 14175)));\n this.cbg[3] = np * (1237 / 630 + n * (-12 / 5 + n * ( -24832 / 14175)));\n\n np = np * n;\n this.cgb[4] = np * (4174 / 315 + n * (-144838 / 6237));\n this.cbg[4] = np * (-734 / 315 + n * (109598 / 31185));\n\n np = np * n;\n this.cgb[5] = np * (601676 / 22275);\n this.cbg[5] = np * (444337 / 155925);\n\n np = Math.pow(n, 2);\n this.Qn = this.k0 / (1 + n) * (1 + np * (1 / 4 + np * (1 / 64 + np / 256)));\n\n this.utg[0] = n * (-0.5 + n * ( 2 / 3 + n * (-37 / 96 + n * ( 1 / 360 + n * (81 / 512 + n * (-96199 / 604800))))));\n this.gtu[0] = n * (0.5 + n * (-2 / 3 + n * (5 / 16 + n * (41 / 180 + n * (-127 / 288 + n * (7891 / 37800))))));\n\n this.utg[1] = np * (-1 / 48 + n * (-1 / 15 + n * (437 / 1440 + n * (-46 / 105 + n * (1118711 / 3870720)))));\n this.gtu[1] = np * (13 / 48 + n * (-3 / 5 + n * (557 / 1440 + n * (281 / 630 + n * (-1983433 / 1935360)))));\n\n np = np * n;\n this.utg[2] = np * (-17 / 480 + n * (37 / 840 + n * (209 / 4480 + n * (-5569 / 90720 ))));\n this.gtu[2] = np * (61 / 240 + n * (-103 / 140 + n * (15061 / 26880 + n * (167603 / 181440))));\n\n np = np * n;\n this.utg[3] = np * (-4397 / 161280 + n * (11 / 504 + n * (830251 / 7257600)));\n this.gtu[3] = np * (49561 / 161280 + n * (-179 / 168 + n * (6601661 / 7257600)));\n\n np = np * n;\n this.utg[4] = np * (-4583 / 161280 + n * (108847 / 3991680));\n this.gtu[4] = np * (34729 / 80640 + n * (-3418889 / 1995840));\n\n np = np * n;\n this.utg[5] = np * (-20648693 / 638668800);\n this.gtu[5] = np * (212378941 / 319334400);\n\n var Z = gatg(this.cbg, this.lat0);\n this.Zb = -this.Qn * (Z + clens(this.gtu, 2 * Z));\n}\n\nexport function forward(p) {\n var Ce = adjust_lon(p.x - this.long0);\n var Cn = p.y;\n\n Cn = gatg(this.cbg, Cn);\n var sin_Cn = Math.sin(Cn);\n var cos_Cn = Math.cos(Cn);\n var sin_Ce = Math.sin(Ce);\n var cos_Ce = Math.cos(Ce);\n\n Cn = Math.atan2(sin_Cn, cos_Ce * cos_Cn);\n Ce = Math.atan2(sin_Ce * cos_Cn, hypot(sin_Cn, cos_Cn * cos_Ce));\n Ce = asinhy(Math.tan(Ce));\n\n var tmp = clens_cmplx(this.gtu, 2 * Cn, 2 * Ce);\n\n Cn = Cn + tmp[0];\n Ce = Ce + tmp[1];\n\n var x;\n var y;\n\n if (Math.abs(Ce) <= 2.623395162778) {\n x = this.a * (this.Qn * Ce) + this.x0;\n y = this.a * (this.Qn * Cn + this.Zb) + this.y0;\n }\n else {\n x = Infinity;\n y = Infinity;\n }\n\n p.x = x;\n p.y = y;\n\n return p;\n}\n\nexport function inverse(p) {\n var Ce = (p.x - this.x0) * (1 / this.a);\n var Cn = (p.y - this.y0) * (1 / this.a);\n\n Cn = (Cn - this.Zb) / this.Qn;\n Ce = Ce / this.Qn;\n\n var lon;\n var lat;\n\n if (Math.abs(Ce) <= 2.623395162778) {\n var tmp = clens_cmplx(this.utg, 2 * Cn, 2 * Ce);\n\n Cn = Cn + tmp[0];\n Ce = Ce + tmp[1];\n Ce = Math.atan(sinh(Ce));\n\n var sin_Cn = Math.sin(Cn);\n var cos_Cn = Math.cos(Cn);\n var sin_Ce = Math.sin(Ce);\n var cos_Ce = Math.cos(Ce);\n\n Cn = Math.atan2(sin_Cn * cos_Ce, hypot(sin_Ce, cos_Ce * cos_Cn));\n Ce = Math.atan2(sin_Ce, cos_Ce * cos_Cn);\n\n lon = adjust_lon(Ce + this.long0);\n lat = gatg(this.cgb, Cn);\n }\n else {\n lon = Infinity;\n lat = Infinity;\n }\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"Extended_Transverse_Mercator\", \"Extended Transverse Mercator\", \"etmerc\", \"Transverse_Mercator\", \"Transverse Mercator\", \"tmerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(pp, arg_r) {\n var r = 2 * Math.cos(arg_r);\n var i = pp.length - 1;\n var hr1 = pp[i];\n var hr2 = 0;\n var hr;\n\n while (--i >= 0) {\n hr = -hr2 + r * hr1 + pp[i];\n hr2 = hr1;\n hr1 = hr;\n }\n\n return Math.sin(arg_r) * hr;\n}\n","import adjust_zone from '../common/adjust_zone';\nimport etmerc from './etmerc';\nexport var dependsOn = 'etmerc';\nimport {D2R} from '../constants/values';\n\n\nexport function init() {\n var zone = adjust_zone(this.zone, this.long0);\n if (zone === undefined) {\n throw new Error('unknown utm zone');\n }\n this.lat0 = 0;\n this.long0 = ((6 * Math.abs(zone)) - 183) * D2R;\n this.x0 = 500000;\n this.y0 = this.utmSouth ? 10000000 : 0;\n this.k0 = 0.9996;\n\n etmerc.init.apply(this);\n this.forward = etmerc.forward;\n this.inverse = etmerc.inverse;\n}\n\nexport var names = [\"Universal Transverse Mercator System\", \"utm\"];\nexport default {\n init: init,\n names: names,\n dependsOn: dependsOn\n};\n","import adjust_lon from './adjust_lon';\n\nexport default function(zone, lon) {\n if (zone === undefined) {\n zone = Math.floor((adjust_lon(lon) + Math.PI) * 30 / Math.PI) + 1;\n\n if (zone < 0) {\n return 0;\n } else if (zone > 60) {\n return 60;\n }\n }\n return zone;\n}\n","export default function(esinp, exp) {\n return (Math.pow((1 - esinp) / (1 + esinp), exp));\n}","import srat from '../common/srat';\nvar MAX_ITER = 20;\nimport {HALF_PI, FORTPI} from '../constants/values';\n\nexport function init() {\n var sphi = Math.sin(this.lat0);\n var cphi = Math.cos(this.lat0);\n cphi *= cphi;\n this.rc = Math.sqrt(1 - this.es) / (1 - this.es * sphi * sphi);\n this.C = Math.sqrt(1 + this.es * cphi * cphi / (1 - this.es));\n this.phic0 = Math.asin(sphi / this.C);\n this.ratexp = 0.5 * this.C * this.e;\n this.K = Math.tan(0.5 * this.phic0 + FORTPI) / (Math.pow(Math.tan(0.5 * this.lat0 + FORTPI), this.C) * srat(this.e * sphi, this.ratexp));\n}\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n\n p.y = 2 * Math.atan(this.K * Math.pow(Math.tan(0.5 * lat + FORTPI), this.C) * srat(this.e * Math.sin(lat), this.ratexp)) - HALF_PI;\n p.x = this.C * lon;\n return p;\n}\n\nexport function inverse(p) {\n var DEL_TOL = 1e-14;\n var lon = p.x / this.C;\n var lat = p.y;\n var num = Math.pow(Math.tan(0.5 * lat + FORTPI) / this.K, 1 / this.C);\n for (var i = MAX_ITER; i > 0; --i) {\n lat = 2 * Math.atan(num * srat(this.e * Math.sin(p.y), - 0.5 * this.e)) - HALF_PI;\n if (Math.abs(lat - p.y) < DEL_TOL) {\n break;\n }\n p.y = lat;\n }\n /* convergence failed */\n if (!i) {\n return null;\n }\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"gauss\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import gauss from './gauss';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n gauss.init.apply(this);\n if (!this.rc) {\n return;\n }\n this.sinc0 = Math.sin(this.phic0);\n this.cosc0 = Math.cos(this.phic0);\n this.R2 = 2 * this.rc;\n if (!this.title) {\n this.title = \"Oblique Stereographic Alternative\";\n }\n}\n\nexport function forward(p) {\n var sinc, cosc, cosl, k;\n p.x = adjust_lon(p.x - this.long0);\n gauss.forward.apply(this, [p]);\n sinc = Math.sin(p.y);\n cosc = Math.cos(p.y);\n cosl = Math.cos(p.x);\n k = this.k0 * this.R2 / (1 + this.sinc0 * sinc + this.cosc0 * cosc * cosl);\n p.x = k * cosc * Math.sin(p.x);\n p.y = k * (this.cosc0 * sinc - this.sinc0 * cosc * cosl);\n p.x = this.a * p.x + this.x0;\n p.y = this.a * p.y + this.y0;\n return p;\n}\n\nexport function inverse(p) {\n var sinc, cosc, lon, lat, rho;\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n if ((rho = Math.sqrt(p.x * p.x + p.y * p.y))) {\n var c = 2 * Math.atan2(rho, this.R2);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n lat = Math.asin(cosc * this.sinc0 + p.y * sinc * this.cosc0 / rho);\n lon = Math.atan2(p.x * sinc, rho * this.cosc0 * cosc - p.y * this.sinc0 * sinc);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n gauss.inverse.apply(this, [p]);\n p.x = adjust_lon(p.x + this.long0);\n return p;\n}\n\nexport var names = [\"Stereographic_North_Pole\", \"Oblique_Stereographic\", \"sterea\",\"Oblique Stereographic Alternative\",\"Double_Stereographic\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {EPSLN, HALF_PI} from '../constants/values';\n\nimport sign from '../common/sign';\nimport msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport phi2z from '../common/phi2z';\nimport adjust_lon from '../common/adjust_lon';\n\nexport function ssfn_(phit, sinphi, eccen) {\n sinphi *= eccen;\n return (Math.tan(0.5 * (HALF_PI + phit)) * Math.pow((1 - sinphi) / (1 + sinphi), 0.5 * eccen));\n}\n\nexport function init() {\n\n // setting default parameters\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n\n this.coslat0 = Math.cos(this.lat0);\n this.sinlat0 = Math.sin(this.lat0);\n if (this.sphere) {\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN) {\n this.k0 = 0.5 * (1 + sign(this.lat0) * Math.sin(this.lat_ts));\n }\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (this.lat0 > 0) {\n //North pole\n //trace('stere:north pole');\n this.con = 1;\n }\n else {\n //South pole\n //trace('stere:south pole');\n this.con = -1;\n }\n }\n this.cons = Math.sqrt(Math.pow(1 + this.e, 1 + this.e) * Math.pow(1 - this.e, 1 - this.e));\n if (this.k0 === 1 && !isNaN(this.lat_ts) && Math.abs(this.coslat0) <= EPSLN && Math.abs(Math.cos(this.lat_ts)) > EPSLN) {\n // When k0 is 1 (default value) and lat_ts is a vaild number and lat0 is at a pole and lat_ts is not at a pole\n // Recalculate k0 using formula 21-35 from p161 of Snyder, 1987\n this.k0 = 0.5 * this.cons * msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts)) / tsfnz(this.e, this.con * this.lat_ts, this.con * Math.sin(this.lat_ts));\n }\n this.ms1 = msfnz(this.e, this.sinlat0, this.coslat0);\n this.X0 = 2 * Math.atan(this.ssfn_(this.lat0, this.sinlat0, this.e)) - HALF_PI;\n this.cosX0 = Math.cos(this.X0);\n this.sinX0 = Math.sin(this.X0);\n }\n}\n\n// Stereographic forward equations--mapping lat,long to x,y\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var sinlat = Math.sin(lat);\n var coslat = Math.cos(lat);\n var A, X, sinX, cosX, ts, rh;\n var dlon = adjust_lon(lon - this.long0);\n\n if (Math.abs(Math.abs(lon - this.long0) - Math.PI) <= EPSLN && Math.abs(lat + this.lat0) <= EPSLN) {\n //case of the origine point\n //trace('stere:this is the origin point');\n p.x = NaN;\n p.y = NaN;\n return p;\n }\n if (this.sphere) {\n //trace('stere:sphere case');\n A = 2 * this.k0 / (1 + this.sinlat0 * sinlat + this.coslat0 * coslat * Math.cos(dlon));\n p.x = this.a * A * coslat * Math.sin(dlon) + this.x0;\n p.y = this.a * A * (this.coslat0 * sinlat - this.sinlat0 * coslat * Math.cos(dlon)) + this.y0;\n return p;\n }\n else {\n X = 2 * Math.atan(this.ssfn_(lat, sinlat, this.e)) - HALF_PI;\n cosX = Math.cos(X);\n sinX = Math.sin(X);\n if (Math.abs(this.coslat0) <= EPSLN) {\n ts = tsfnz(this.e, lat * this.con, this.con * sinlat);\n rh = 2 * this.a * this.k0 * ts / this.cons;\n p.x = this.x0 + rh * Math.sin(lon - this.long0);\n p.y = this.y0 - this.con * rh * Math.cos(lon - this.long0);\n //trace(p.toString());\n return p;\n }\n else if (Math.abs(this.sinlat0) < EPSLN) {\n //Eq\n //trace('stere:equateur');\n A = 2 * this.a * this.k0 / (1 + cosX * Math.cos(dlon));\n p.y = A * sinX;\n }\n else {\n //other case\n //trace('stere:normal case');\n A = 2 * this.a * this.k0 * this.ms1 / (this.cosX0 * (1 + this.sinX0 * sinX + this.cosX0 * cosX * Math.cos(dlon)));\n p.y = A * (this.cosX0 * sinX - this.sinX0 * cosX * Math.cos(dlon)) + this.y0;\n }\n p.x = A * cosX * Math.sin(dlon) + this.x0;\n }\n //trace(p.toString());\n return p;\n}\n\n//* Stereographic inverse equations--mapping x,y to lat/long\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat, ts, ce, Chi;\n var rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (this.sphere) {\n var c = 2 * Math.atan(rh / (2 * this.a * this.k0));\n lon = this.long0;\n lat = this.lat0;\n if (rh <= EPSLN) {\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = Math.asin(Math.cos(c) * this.sinlat0 + p.y * Math.sin(c) * this.coslat0 / rh);\n if (Math.abs(this.coslat0) < EPSLN) {\n if (this.lat0 > 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n }\n }\n else {\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(c), rh * this.coslat0 * Math.cos(c) - p.y * this.sinlat0 * Math.sin(c)));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n if (Math.abs(this.coslat0) <= EPSLN) {\n if (rh <= EPSLN) {\n lat = this.lat0;\n lon = this.long0;\n p.x = lon;\n p.y = lat;\n //trace(p.toString());\n return p;\n }\n p.x *= this.con;\n p.y *= this.con;\n ts = rh * this.cons / (2 * this.a * this.k0);\n lat = this.con * phi2z(this.e, ts);\n lon = this.con * adjust_lon(this.con * this.long0 + Math.atan2(p.x, - 1 * p.y));\n }\n else {\n ce = 2 * Math.atan(rh * this.cosX0 / (2 * this.a * this.k0 * this.ms1));\n lon = this.long0;\n if (rh <= EPSLN) {\n Chi = this.X0;\n }\n else {\n Chi = Math.asin(Math.cos(ce) * this.sinX0 + p.y * Math.sin(ce) * this.cosX0 / rh);\n lon = adjust_lon(this.long0 + Math.atan2(p.x * Math.sin(ce), rh * this.cosX0 * Math.cos(ce) - p.y * this.sinX0 * Math.sin(ce)));\n }\n lat = -1 * phi2z(this.e, Math.tan(0.5 * (HALF_PI + Chi)));\n }\n }\n p.x = lon;\n p.y = lat;\n\n //trace(p.toString());\n return p;\n\n}\n\nexport var names = [\"stere\", \"Stereographic_South_Pole\", \"Polar Stereographic (variant B)\", \"Polar_Stereographic\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n ssfn_: ssfn_\n};\n","/*\n references:\n Formules et constantes pour le Calcul pour la\n projection cylindrique conforme à axe oblique et pour la transformation entre\n des systèmes de référence.\n http://www.swisstopo.admin.ch/internet/swisstopo/fr/home/topics/survey/sys/refsys/switzerland.parsysrelated1.31216.downloadList.77004.DownloadFile.tmp/swissprojectionfr.pdf\n */\n\nexport function init() {\n var phy0 = this.lat0;\n this.lambda0 = this.long0;\n var sinPhy0 = Math.sin(phy0);\n var semiMajorAxis = this.a;\n var invF = this.rf;\n var flattening = 1 / invF;\n var e2 = 2 * flattening - Math.pow(flattening, 2);\n var e = this.e = Math.sqrt(e2);\n this.R = this.k0 * semiMajorAxis * Math.sqrt(1 - e2) / (1 - e2 * Math.pow(sinPhy0, 2));\n this.alpha = Math.sqrt(1 + e2 / (1 - e2) * Math.pow(Math.cos(phy0), 4));\n this.b0 = Math.asin(sinPhy0 / this.alpha);\n var k1 = Math.log(Math.tan(Math.PI / 4 + this.b0 / 2));\n var k2 = Math.log(Math.tan(Math.PI / 4 + phy0 / 2));\n var k3 = Math.log((1 + e * sinPhy0) / (1 - e * sinPhy0));\n this.K = k1 - this.alpha * k2 + this.alpha * e / 2 * k3;\n}\n\nexport function forward(p) {\n var Sa1 = Math.log(Math.tan(Math.PI / 4 - p.y / 2));\n var Sa2 = this.e / 2 * Math.log((1 + this.e * Math.sin(p.y)) / (1 - this.e * Math.sin(p.y)));\n var S = -this.alpha * (Sa1 + Sa2) + this.K;\n\n // spheric latitude\n var b = 2 * (Math.atan(Math.exp(S)) - Math.PI / 4);\n\n // spheric longitude\n var I = this.alpha * (p.x - this.lambda0);\n\n // psoeudo equatorial rotation\n var rotI = Math.atan(Math.sin(I) / (Math.sin(this.b0) * Math.tan(b) + Math.cos(this.b0) * Math.cos(I)));\n\n var rotB = Math.asin(Math.cos(this.b0) * Math.sin(b) - Math.sin(this.b0) * Math.cos(b) * Math.cos(I));\n\n p.y = this.R / 2 * Math.log((1 + Math.sin(rotB)) / (1 - Math.sin(rotB))) + this.y0;\n p.x = this.R * rotI + this.x0;\n return p;\n}\n\nexport function inverse(p) {\n var Y = p.x - this.x0;\n var X = p.y - this.y0;\n\n var rotI = Y / this.R;\n var rotB = 2 * (Math.atan(Math.exp(X / this.R)) - Math.PI / 4);\n\n var b = Math.asin(Math.cos(this.b0) * Math.sin(rotB) + Math.sin(this.b0) * Math.cos(rotB) * Math.cos(rotI));\n var I = Math.atan(Math.sin(rotI) / (Math.cos(this.b0) * Math.cos(rotI) - Math.sin(this.b0) * Math.tan(rotB)));\n\n var lambda = this.lambda0 + I / this.alpha;\n\n var S = 0;\n var phy = b;\n var prevPhy = -1000;\n var iteration = 0;\n while (Math.abs(phy - prevPhy) > 0.0000001) {\n if (++iteration > 20) {\n //...reportError(\"omercFwdInfinity\");\n return;\n }\n //S = Math.log(Math.tan(Math.PI / 4 + phy / 2));\n S = 1 / this.alpha * (Math.log(Math.tan(Math.PI / 4 + b / 2)) - this.K) + this.e * Math.log(Math.tan(Math.PI / 4 + Math.asin(this.e * Math.sin(phy)) / 2));\n prevPhy = phy;\n phy = 2 * Math.atan(Math.exp(S)) - Math.PI / 2;\n }\n\n p.x = lambda;\n p.y = phy;\n return p;\n}\n\nexport var names = [\"somerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import tsfnz from '../common/tsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport { D2R, EPSLN, HALF_PI, TWO_PI, FORTPI } from '../constants/values';\n\nvar TOL = 1e-7;\n\nfunction isTypeA(P) {\n var typeAProjections = ['Hotine_Oblique_Mercator','Hotine_Oblique_Mercator_Azimuth_Natural_Origin'];\n var projectionName = typeof P.PROJECTION === \"object\" ? Object.keys(P.PROJECTION)[0] : P.PROJECTION;\n \n return 'no_uoff' in P || 'no_off' in P || typeAProjections.indexOf(projectionName) !== -1;\n}\n\n\n/* Initialize the Oblique Mercator projection\n ------------------------------------------*/\nexport function init() { \n var con, com, cosph0, D, F, H, L, sinph0, p, J, gamma = 0,\n gamma0, lamc = 0, lam1 = 0, lam2 = 0, phi1 = 0, phi2 = 0, alpha_c = 0, AB;\n \n // only Type A uses the no_off or no_uoff property\n // https://github.com/OSGeo/proj.4/issues/104\n this.no_off = isTypeA(this);\n this.no_rot = 'no_rot' in this;\n \n var alp = false;\n if (\"alpha\" in this) {\n alp = true;\n }\n\n var gam = false;\n if (\"rectified_grid_angle\" in this) {\n gam = true;\n }\n\n if (alp) {\n alpha_c = this.alpha;\n }\n \n if (gam) {\n gamma = (this.rectified_grid_angle * D2R);\n }\n \n if (alp || gam) {\n lamc = this.longc;\n } else {\n lam1 = this.long1;\n phi1 = this.lat1;\n lam2 = this.long2;\n phi2 = this.lat2;\n \n if (Math.abs(phi1 - phi2) <= TOL || (con = Math.abs(phi1)) <= TOL ||\n Math.abs(con - HALF_PI) <= TOL || Math.abs(Math.abs(this.lat0) - HALF_PI) <= TOL ||\n Math.abs(Math.abs(phi2) - HALF_PI) <= TOL) {\n throw new Error();\n }\n }\n \n var one_es = 1.0 - this.es;\n com = Math.sqrt(one_es);\n \n if (Math.abs(this.lat0) > EPSLN) {\n sinph0 = Math.sin(this.lat0);\n cosph0 = Math.cos(this.lat0);\n con = 1 - this.es * sinph0 * sinph0;\n this.B = cosph0 * cosph0;\n this.B = Math.sqrt(1 + this.es * this.B * this.B / one_es);\n this.A = this.B * this.k0 * com / con;\n D = this.B * com / (cosph0 * Math.sqrt(con));\n F = D * D -1;\n \n if (F <= 0) {\n F = 0;\n } else {\n F = Math.sqrt(F);\n if (this.lat0 < 0) {\n F = -F;\n }\n }\n \n this.E = F += D;\n this.E *= Math.pow(tsfnz(this.e, this.lat0, sinph0), this.B);\n } else {\n this.B = 1 / com;\n this.A = this.k0;\n this.E = D = F = 1;\n }\n \n if (alp || gam) {\n if (alp) {\n gamma0 = Math.asin(Math.sin(alpha_c) / D);\n if (!gam) {\n gamma = alpha_c;\n }\n } else {\n gamma0 = gamma;\n alpha_c = Math.asin(D * Math.sin(gamma0));\n }\n this.lam0 = lamc - Math.asin(0.5 * (F - 1 / F) * Math.tan(gamma0)) / this.B;\n } else {\n H = Math.pow(tsfnz(this.e, phi1, Math.sin(phi1)), this.B);\n L = Math.pow(tsfnz(this.e, phi2, Math.sin(phi2)), this.B);\n F = this.E / H;\n p = (L - H) / (L + H);\n J = this.E * this.E;\n J = (J - L * H) / (J + L * H);\n con = lam1 - lam2;\n \n if (con < -Math.pi) {\n lam2 -=TWO_PI;\n } else if (con > Math.pi) {\n lam2 += TWO_PI;\n }\n \n this.lam0 = adjust_lon(0.5 * (lam1 + lam2) - Math.atan(J * Math.tan(0.5 * this.B * (lam1 - lam2)) / p) / this.B);\n gamma0 = Math.atan(2 * Math.sin(this.B * adjust_lon(lam1 - this.lam0)) / (F - 1 / F));\n gamma = alpha_c = Math.asin(D * Math.sin(gamma0));\n }\n \n this.singam = Math.sin(gamma0);\n this.cosgam = Math.cos(gamma0);\n this.sinrot = Math.sin(gamma);\n this.cosrot = Math.cos(gamma);\n \n this.rB = 1 / this.B;\n this.ArB = this.A * this.rB;\n this.BrA = 1 / this.ArB;\n AB = this.A * this.B;\n \n if (this.no_off) {\n this.u_0 = 0;\n } else {\n this.u_0 = Math.abs(this.ArB * Math.atan(Math.sqrt(D * D - 1) / Math.cos(alpha_c)));\n \n if (this.lat0 < 0) {\n this.u_0 = - this.u_0;\n } \n }\n \n F = 0.5 * gamma0;\n this.v_pole_n = this.ArB * Math.log(Math.tan(FORTPI - F));\n this.v_pole_s = this.ArB * Math.log(Math.tan(FORTPI + F));\n}\n\n\n/* Oblique Mercator forward equations--mapping lat,long to x,y\n ----------------------------------------------------------*/\nexport function forward(p) {\n var coords = {};\n var S, T, U, V, W, temp, u, v;\n p.x = p.x - this.lam0;\n \n if (Math.abs(Math.abs(p.y) - HALF_PI) > EPSLN) {\n W = this.E / Math.pow(tsfnz(this.e, p.y, Math.sin(p.y)), this.B);\n \n temp = 1 / W;\n S = 0.5 * (W - temp);\n T = 0.5 * (W + temp);\n V = Math.sin(this.B * p.x);\n U = (S * this.singam - V * this.cosgam) / T;\n \n if (Math.abs(Math.abs(U) - 1.0) < EPSLN) {\n throw new Error();\n }\n \n v = 0.5 * this.ArB * Math.log((1 - U)/(1 + U));\n temp = Math.cos(this.B * p.x);\n \n if (Math.abs(temp) < TOL) {\n u = this.A * p.x;\n } else {\n u = this.ArB * Math.atan2((S * this.cosgam + V * this.singam), temp);\n } \n } else {\n v = p.y > 0 ? this.v_pole_n : this.v_pole_s;\n u = this.ArB * p.y;\n }\n \n if (this.no_rot) {\n coords.x = u;\n coords.y = v;\n } else {\n u -= this.u_0;\n coords.x = v * this.cosrot + u * this.sinrot;\n coords.y = u * this.cosrot - v * this.sinrot;\n }\n \n coords.x = (this.a * coords.x + this.x0);\n coords.y = (this.a * coords.y + this.y0);\n \n return coords;\n}\n\nexport function inverse(p) {\n var u, v, Qp, Sp, Tp, Vp, Up;\n var coords = {};\n \n p.x = (p.x - this.x0) * (1.0 / this.a);\n p.y = (p.y - this.y0) * (1.0 / this.a);\n\n if (this.no_rot) {\n v = p.y;\n u = p.x;\n } else {\n v = p.x * this.cosrot - p.y * this.sinrot;\n u = p.y * this.cosrot + p.x * this.sinrot + this.u_0;\n }\n \n Qp = Math.exp(-this.BrA * v);\n Sp = 0.5 * (Qp - 1 / Qp);\n Tp = 0.5 * (Qp + 1 / Qp);\n Vp = Math.sin(this.BrA * u);\n Up = (Vp * this.cosgam + Sp * this.singam) / Tp;\n \n if (Math.abs(Math.abs(Up) - 1) < EPSLN) {\n coords.x = 0;\n coords.y = Up < 0 ? -HALF_PI : HALF_PI;\n } else {\n coords.y = this.E / Math.sqrt((1 + Up) / (1 - Up));\n coords.y = phi2z(this.e, Math.pow(coords.y, 1 / this.B));\n \n if (coords.y === Infinity) {\n throw new Error();\n }\n \n coords.x = -this.rB * Math.atan2((Sp * this.cosgam - Vp * this.singam), Math.cos(this.BrA * u));\n }\n \n coords.x += this.lam0;\n \n return coords;\n}\n\nexport var names = [\"Hotine_Oblique_Mercator\", \"Hotine Oblique Mercator\", \"Hotine_Oblique_Mercator_Azimuth_Natural_Origin\", \"Hotine_Oblique_Mercator_Two_Point_Natural_Origin\", \"Hotine_Oblique_Mercator_Azimuth_Center\", \"Oblique_Mercator\", \"omerc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import msfnz from '../common/msfnz';\nimport tsfnz from '../common/tsfnz';\nimport sign from '../common/sign';\nimport adjust_lon from '../common/adjust_lon';\nimport phi2z from '../common/phi2z';\nimport {HALF_PI, EPSLN} from '../constants/values';\nexport function init() {\n \n //double lat0; /* the reference latitude */\n //double long0; /* the reference longitude */\n //double lat1; /* first standard parallel */\n //double lat2; /* second standard parallel */\n //double r_maj; /* major axis */\n //double r_min; /* minor axis */\n //double false_east; /* x offset in meters */\n //double false_north; /* y offset in meters */\n \n //the above value can be set with proj4.defs\n //example: proj4.defs(\"EPSG:2154\",\"+proj=lcc +lat_1=49 +lat_2=44 +lat_0=46.5 +lon_0=3 +x_0=700000 +y_0=6600000 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs\");\n\n if (!this.lat2) {\n this.lat2 = this.lat1;\n } //if lat2 is not defined\n if (!this.k0) {\n this.k0 = 1;\n }\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n\n var temp = this.b / this.a;\n this.e = Math.sqrt(1 - temp * temp);\n\n var sin1 = Math.sin(this.lat1);\n var cos1 = Math.cos(this.lat1);\n var ms1 = msfnz(this.e, sin1, cos1);\n var ts1 = tsfnz(this.e, this.lat1, sin1);\n\n var sin2 = Math.sin(this.lat2);\n var cos2 = Math.cos(this.lat2);\n var ms2 = msfnz(this.e, sin2, cos2);\n var ts2 = tsfnz(this.e, this.lat2, sin2);\n\n var ts0 = tsfnz(this.e, this.lat0, Math.sin(this.lat0));\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns = Math.log(ms1 / ms2) / Math.log(ts1 / ts2);\n }\n else {\n this.ns = sin1;\n }\n if (isNaN(this.ns)) {\n this.ns = sin1;\n }\n this.f0 = ms1 / (this.ns * Math.pow(ts1, this.ns));\n this.rh = this.a * this.f0 * Math.pow(ts0, this.ns);\n if (!this.title) {\n this.title = \"Lambert Conformal Conic\";\n }\n}\n\n// Lambert Conformal conic forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n // singular cases :\n if (Math.abs(2 * Math.abs(lat) - Math.PI) <= EPSLN) {\n lat = sign(lat) * (HALF_PI - 2 * EPSLN);\n }\n\n var con = Math.abs(Math.abs(lat) - HALF_PI);\n var ts, rh1;\n if (con > EPSLN) {\n ts = tsfnz(this.e, lat, Math.sin(lat));\n rh1 = this.a * this.f0 * Math.pow(ts, this.ns);\n }\n else {\n con = lat * this.ns;\n if (con <= 0) {\n return null;\n }\n rh1 = 0;\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n p.x = this.k0 * (rh1 * Math.sin(theta)) + this.x0;\n p.y = this.k0 * (this.rh - rh1 * Math.cos(theta)) + this.y0;\n\n return p;\n}\n\n// Lambert Conformal Conic inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n var rh1, con, ts;\n var lat, lon;\n var x = (p.x - this.x0) / this.k0;\n var y = (this.rh - (p.y - this.y0) / this.k0);\n if (this.ns > 0) {\n rh1 = Math.sqrt(x * x + y * y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(x * x + y * y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2((con * x), (con * y));\n }\n if ((rh1 !== 0) || (this.ns > 0)) {\n con = 1 / this.ns;\n ts = Math.pow((rh1 / (this.a * this.f0)), con);\n lat = phi2z(this.e, ts);\n if (lat === -9999) {\n return null;\n }\n }\n else {\n lat = -HALF_PI;\n }\n lon = adjust_lon(theta / this.ns + this.long0);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\n \"Lambert Tangential Conformal Conic Projection\",\n \"Lambert_Conformal_Conic\",\n \"Lambert_Conformal_Conic_1SP\",\n \"Lambert_Conformal_Conic_2SP\",\n \"lcc\",\n \"Lambert Conic Conformal (1SP)\",\n \"Lambert Conic Conformal (2SP)\"\n];\n\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nexport function init() {\n this.a = 6377397.155;\n this.es = 0.006674372230614;\n this.e = Math.sqrt(this.es);\n if (!this.lat0) {\n this.lat0 = 0.863937979737193;\n }\n if (!this.long0) {\n this.long0 = 0.7417649320975901 - 0.308341501185665;\n }\n /* if scale not set default to 0.9999 */\n if (!this.k0) {\n this.k0 = 0.9999;\n }\n this.s45 = 0.785398163397448; /* 45 */\n this.s90 = 2 * this.s45;\n this.fi0 = this.lat0;\n this.e2 = this.es;\n this.e = Math.sqrt(this.e2);\n this.alfa = Math.sqrt(1 + (this.e2 * Math.pow(Math.cos(this.fi0), 4)) / (1 - this.e2));\n this.uq = 1.04216856380474;\n this.u0 = Math.asin(Math.sin(this.fi0) / this.alfa);\n this.g = Math.pow((1 + this.e * Math.sin(this.fi0)) / (1 - this.e * Math.sin(this.fi0)), this.alfa * this.e / 2);\n this.k = Math.tan(this.u0 / 2 + this.s45) / Math.pow(Math.tan(this.fi0 / 2 + this.s45), this.alfa) * this.g;\n this.k1 = this.k0;\n this.n0 = this.a * Math.sqrt(1 - this.e2) / (1 - this.e2 * Math.pow(Math.sin(this.fi0), 2));\n this.s0 = 1.37008346281555;\n this.n = Math.sin(this.s0);\n this.ro0 = this.k1 * this.n0 / Math.tan(this.s0);\n this.ad = this.s90 - this.uq;\n}\n\n/* ellipsoid */\n/* calculate xy from lat/lon */\n/* Constants, identical to inverse transform function */\nexport function forward(p) {\n var gfi, u, deltav, s, d, eps, ro;\n var lon = p.x;\n var lat = p.y;\n var delta_lon = adjust_lon(lon - this.long0);\n /* Transformation */\n gfi = Math.pow(((1 + this.e * Math.sin(lat)) / (1 - this.e * Math.sin(lat))), (this.alfa * this.e / 2));\n u = 2 * (Math.atan(this.k * Math.pow(Math.tan(lat / 2 + this.s45), this.alfa) / gfi) - this.s45);\n deltav = -delta_lon * this.alfa;\n s = Math.asin(Math.cos(this.ad) * Math.sin(u) + Math.sin(this.ad) * Math.cos(u) * Math.cos(deltav));\n d = Math.asin(Math.cos(u) * Math.sin(deltav) / Math.cos(s));\n eps = this.n * d;\n ro = this.ro0 * Math.pow(Math.tan(this.s0 / 2 + this.s45), this.n) / Math.pow(Math.tan(s / 2 + this.s45), this.n);\n p.y = ro * Math.cos(eps) / 1;\n p.x = ro * Math.sin(eps) / 1;\n\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n return (p);\n}\n\n/* calculate lat/lon from xy */\nexport function inverse(p) {\n var u, deltav, s, d, eps, ro, fi1;\n var ok;\n\n /* Transformation */\n /* revert y, x*/\n var tmp = p.x;\n p.x = p.y;\n p.y = tmp;\n if (!this.czech) {\n p.y *= -1;\n p.x *= -1;\n }\n ro = Math.sqrt(p.x * p.x + p.y * p.y);\n eps = Math.atan2(p.y, p.x);\n d = eps / Math.sin(this.s0);\n s = 2 * (Math.atan(Math.pow(this.ro0 / ro, 1 / this.n) * Math.tan(this.s0 / 2 + this.s45)) - this.s45);\n u = Math.asin(Math.cos(this.ad) * Math.sin(s) - Math.sin(this.ad) * Math.cos(s) * Math.cos(d));\n deltav = Math.asin(Math.cos(s) * Math.sin(d) / Math.cos(u));\n p.x = this.long0 - deltav / this.alfa;\n fi1 = u;\n ok = 0;\n var iter = 0;\n do {\n p.y = 2 * (Math.atan(Math.pow(this.k, - 1 / this.alfa) * Math.pow(Math.tan(u / 2 + this.s45), 1 / this.alfa) * Math.pow((1 + this.e * Math.sin(fi1)) / (1 - this.e * Math.sin(fi1)), this.e / 2)) - this.s45);\n if (Math.abs(fi1 - p.y) < 0.0000000001) {\n ok = 1;\n }\n fi1 = p.y;\n iter += 1;\n } while (ok === 0 && iter < 15);\n if (iter >= 15) {\n return null;\n }\n\n return (p);\n}\n\nexport var names = [\"Krovak\", \"krovak\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(e0, e1, e2, e3, phi) {\n return (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi));\n}","export default function(x) {\n return (1 - 0.25 * x * (1 + x / 16 * (3 + 1.25 * x)));\n}","export default function(x) {\n return (0.375 * x * (1 + 0.25 * x * (1 + 0.46875 * x)));\n}","export default function(x) {\n return (0.05859375 * x * x * (1 + 0.75 * x));\n}","export default function(x) {\n return (x * x * x * (35 / 3072));\n}","export default function(a, e, sinphi) {\n var temp = e * sinphi;\n return a / Math.sqrt(1 - temp * temp);\n}","import {HALF_PI} from '../constants/values';\nimport sign from './sign';\n\nexport default function(x) {\n return (Math.abs(x) < HALF_PI) ? x : (x - (sign(x) * Math.PI));\n}\n","export default function(ml, e0, e1, e2, e3) {\n var phi;\n var dphi;\n\n phi = ml / e0;\n for (var i = 0; i < 15; i++) {\n dphi = (ml - (e0 * phi - e1 * Math.sin(2 * phi) + e2 * Math.sin(4 * phi) - e3 * Math.sin(6 * phi))) / (e0 - 2 * e1 * Math.cos(2 * phi) + 4 * e2 * Math.cos(4 * phi) - 6 * e3 * Math.cos(6 * phi));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //..reportError(\"IMLFN-CONV:Latitude failed to converge after 15 iterations\");\n return NaN;\n}","import mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nexport function init() {\n if (!this.sphere) {\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n }\n}\n\n/* Cassini forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var x, y;\n var lam = p.x;\n var phi = p.y;\n lam = adjust_lon(lam - this.long0);\n\n if (this.sphere) {\n x = this.a * Math.asin(Math.cos(phi) * Math.sin(lam));\n y = this.a * (Math.atan2(Math.tan(phi), Math.cos(lam)) - this.lat0);\n }\n else {\n //ellipsoid\n var sinphi = Math.sin(phi);\n var cosphi = Math.cos(phi);\n var nl = gN(this.a, this.e, sinphi);\n var tl = Math.tan(phi) * Math.tan(phi);\n var al = lam * Math.cos(phi);\n var asq = al * al;\n var cl = this.es * cosphi * cosphi / (1 - this.es);\n var ml = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n\n x = nl * al * (1 - asq * tl * (1 / 6 - (8 - tl + 8 * cl) * asq / 120));\n y = ml - this.ml0 + nl * sinphi / cosphi * asq * (0.5 + (5 - tl + 6 * cl) * asq / 24);\n\n\n }\n\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var phi, lam;\n\n if (this.sphere) {\n var dd = y + this.lat0;\n phi = Math.asin(Math.sin(dd) * Math.cos(x));\n lam = Math.atan2(Math.tan(x), Math.cos(dd));\n }\n else {\n /* ellipsoid */\n var ml1 = this.ml0 / this.a + y;\n var phi1 = imlfn(ml1, this.e0, this.e1, this.e2, this.e3);\n if (Math.abs(Math.abs(phi1) - HALF_PI) <= EPSLN) {\n p.x = this.long0;\n p.y = HALF_PI;\n if (y < 0) {\n p.y *= -1;\n }\n return p;\n }\n var nl1 = gN(this.a, this.e, Math.sin(phi1));\n\n var rl1 = nl1 * nl1 * nl1 / this.a / this.a * (1 - this.es);\n var tl1 = Math.pow(Math.tan(phi1), 2);\n var dl = x * this.a / nl1;\n var dsq = dl * dl;\n phi = phi1 - nl1 * Math.tan(phi1) / rl1 * dl * dl * (0.5 - (1 + 3 * tl1) * dl * dl / 24);\n lam = dl * (1 - dsq * (tl1 / 3 + (1 + 3 * tl1) * tl1 * dsq / 15)) / Math.cos(phi1);\n\n }\n\n p.x = adjust_lon(lam + this.long0);\n p.y = adjust_lat(phi);\n return p;\n\n}\n\nexport var names = [\"Cassini\", \"Cassini_Soldner\", \"cass\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","export default function(eccent, sinphi) {\n var con;\n if (eccent > 1.0e-7) {\n con = eccent * sinphi;\n return ((1 - eccent * eccent) * (sinphi / (1 - con * con) - (0.5 / eccent) * Math.log((1 - con) / (1 + con))));\n }\n else {\n return (2 * sinphi);\n }\n}","\nimport {HALF_PI, EPSLN, FORTPI} from '../constants/values';\n\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\n\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\nexport var S_POLE = 1;\n\nexport var N_POLE = 2;\nexport var EQUIT = 3;\nexport var OBLIQ = 4;\n\n/* Initialize the Lambert Azimuthal Equal Area projection\n ------------------------------------------------------*/\nexport function init() {\n var t = Math.abs(this.lat0);\n if (Math.abs(t - HALF_PI) < EPSLN) {\n this.mode = this.lat0 < 0 ? this.S_POLE : this.N_POLE;\n }\n else if (Math.abs(t) < EPSLN) {\n this.mode = this.EQUIT;\n }\n else {\n this.mode = this.OBLIQ;\n }\n if (this.es > 0) {\n var sinphi;\n\n this.qp = qsfnz(this.e, 1);\n this.mmf = 0.5 / (1 - this.es);\n this.apa = authset(this.es);\n switch (this.mode) {\n case this.N_POLE:\n this.dd = 1;\n break;\n case this.S_POLE:\n this.dd = 1;\n break;\n case this.EQUIT:\n this.rq = Math.sqrt(0.5 * this.qp);\n this.dd = 1 / this.rq;\n this.xmf = 1;\n this.ymf = 0.5 * this.qp;\n break;\n case this.OBLIQ:\n this.rq = Math.sqrt(0.5 * this.qp);\n sinphi = Math.sin(this.lat0);\n this.sinb1 = qsfnz(this.e, sinphi) / this.qp;\n this.cosb1 = Math.sqrt(1 - this.sinb1 * this.sinb1);\n this.dd = Math.cos(this.lat0) / (Math.sqrt(1 - this.es * sinphi * sinphi) * this.rq * this.cosb1);\n this.ymf = (this.xmf = this.rq) / this.dd;\n this.xmf *= this.dd;\n break;\n }\n }\n else {\n if (this.mode === this.OBLIQ) {\n this.sinph0 = Math.sin(this.lat0);\n this.cosph0 = Math.cos(this.lat0);\n }\n }\n}\n\n/* Lambert Azimuthal Equal Area forward equations--mapping lat,long to x,y\n -----------------------------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var x, y, coslam, sinlam, sinphi, q, sinb, cosb, b, cosphi;\n var lam = p.x;\n var phi = p.y;\n\n lam = adjust_lon(lam - this.long0);\n if (this.sphere) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n coslam = Math.cos(lam);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n y = (this.mode === this.EQUIT) ? 1 + cosphi * coslam : 1 + this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n if (y <= EPSLN) {\n return null;\n }\n y = Math.sqrt(2 / y);\n x = y * cosphi * Math.sin(lam);\n y *= (this.mode === this.EQUIT) ? sinphi : this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n coslam = -coslam;\n }\n if (Math.abs(phi + this.lat0) < EPSLN) {\n return null;\n }\n y = FORTPI - phi * 0.5;\n y = 2 * ((this.mode === this.S_POLE) ? Math.cos(y) : Math.sin(y));\n x = y * Math.sin(lam);\n y *= coslam;\n }\n }\n else {\n sinb = 0;\n cosb = 0;\n b = 0;\n coslam = Math.cos(lam);\n sinlam = Math.sin(lam);\n sinphi = Math.sin(phi);\n q = qsfnz(this.e, sinphi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinb = q / this.qp;\n cosb = Math.sqrt(1 - sinb * sinb);\n }\n switch (this.mode) {\n case this.OBLIQ:\n b = 1 + this.sinb1 * sinb + this.cosb1 * cosb * coslam;\n break;\n case this.EQUIT:\n b = 1 + cosb * coslam;\n break;\n case this.N_POLE:\n b = HALF_PI + phi;\n q = this.qp - q;\n break;\n case this.S_POLE:\n b = phi - HALF_PI;\n q = this.qp + q;\n break;\n }\n if (Math.abs(b) < EPSLN) {\n return null;\n }\n switch (this.mode) {\n case this.OBLIQ:\n case this.EQUIT:\n b = Math.sqrt(2 / b);\n if (this.mode === this.OBLIQ) {\n y = this.ymf * b * (this.cosb1 * sinb - this.sinb1 * cosb * coslam);\n }\n else {\n y = (b = Math.sqrt(2 / (1 + cosb * coslam))) * sinb * this.ymf;\n }\n x = this.xmf * b * cosb * sinlam;\n break;\n case this.N_POLE:\n case this.S_POLE:\n if (q >= 0) {\n x = (b = Math.sqrt(q)) * sinlam;\n y = coslam * ((this.mode === this.S_POLE) ? b : -b);\n }\n else {\n x = y = 0;\n }\n break;\n }\n }\n\n p.x = this.a * x + this.x0;\n p.y = this.a * y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var x = p.x / this.a;\n var y = p.y / this.a;\n var lam, phi, cCe, sCe, q, rho, ab;\n if (this.sphere) {\n var cosz = 0,\n rh, sinz = 0;\n\n rh = Math.sqrt(x * x + y * y);\n phi = rh * 0.5;\n if (phi > 1) {\n return null;\n }\n phi = 2 * Math.asin(phi);\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n sinz = Math.sin(phi);\n cosz = Math.cos(phi);\n }\n switch (this.mode) {\n case this.EQUIT:\n phi = (Math.abs(rh) <= EPSLN) ? 0 : Math.asin(y * sinz / rh);\n x *= sinz;\n y = cosz * rh;\n break;\n case this.OBLIQ:\n phi = (Math.abs(rh) <= EPSLN) ? this.lat0 : Math.asin(cosz * this.sinph0 + y * sinz * this.cosph0 / rh);\n x *= sinz * this.cosph0;\n y = (cosz - Math.sin(phi) * this.sinph0) * rh;\n break;\n case this.N_POLE:\n y = -y;\n phi = HALF_PI - phi;\n break;\n case this.S_POLE:\n phi -= HALF_PI;\n break;\n }\n lam = (y === 0 && (this.mode === this.EQUIT || this.mode === this.OBLIQ)) ? 0 : Math.atan2(x, y);\n }\n else {\n ab = 0;\n if (this.mode === this.OBLIQ || this.mode === this.EQUIT) {\n x /= this.dd;\n y *= this.dd;\n rho = Math.sqrt(x * x + y * y);\n if (rho < EPSLN) {\n p.x = this.long0;\n p.y = this.lat0;\n return p;\n }\n sCe = 2 * Math.asin(0.5 * rho / this.rq);\n cCe = Math.cos(sCe);\n x *= (sCe = Math.sin(sCe));\n if (this.mode === this.OBLIQ) {\n ab = cCe * this.sinb1 + y * sCe * this.cosb1 / rho;\n q = this.qp * ab;\n y = rho * this.cosb1 * cCe - y * this.sinb1 * sCe;\n }\n else {\n ab = y * sCe / rho;\n q = this.qp * ab;\n y = rho * cCe;\n }\n }\n else if (this.mode === this.N_POLE || this.mode === this.S_POLE) {\n if (this.mode === this.N_POLE) {\n y = -y;\n }\n q = (x * x + y * y);\n if (!q) {\n p.x = this.long0;\n p.y = this.lat0;\n return p;\n }\n ab = 1 - q / this.qp;\n if (this.mode === this.S_POLE) {\n ab = -ab;\n }\n }\n lam = Math.atan2(x, y);\n phi = authlat(Math.asin(ab), this.apa);\n }\n\n p.x = adjust_lon(this.long0 + lam);\n p.y = phi;\n return p;\n}\n\n/* determine latitude from authalic latitude */\nvar P00 = 0.33333333333333333333;\n\nvar P01 = 0.17222222222222222222;\nvar P02 = 0.10257936507936507936;\nvar P10 = 0.06388888888888888888;\nvar P11 = 0.06640211640211640211;\nvar P20 = 0.01641501294219154443;\n\nfunction authset(es) {\n var t;\n var APA = [];\n APA[0] = es * P00;\n t = es * es;\n APA[0] += t * P01;\n APA[1] = t * P10;\n t *= es;\n APA[0] += t * P02;\n APA[1] += t * P11;\n APA[2] = t * P20;\n return APA;\n}\n\nfunction authlat(beta, APA) {\n var t = beta + beta;\n return (beta + APA[0] * Math.sin(t) + APA[1] * Math.sin(t + t) + APA[2] * Math.sin(t + t + t));\n}\n\nexport var names = [\"Lambert Azimuthal Equal Area\", \"Lambert_Azimuthal_Equal_Area\", \"laea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n S_POLE: S_POLE,\n N_POLE: N_POLE,\n EQUIT: EQUIT,\n OBLIQ: OBLIQ\n};\n","export default function(x) {\n if (Math.abs(x) > 1) {\n x = (x > 1) ? 1 : -1;\n }\n return Math.asin(x);\n}","import msfnz from '../common/msfnz';\nimport qsfnz from '../common/qsfnz';\nimport adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e3 = Math.sqrt(this.es);\n\n this.sin_po = Math.sin(this.lat1);\n this.cos_po = Math.cos(this.lat1);\n this.t1 = this.sin_po;\n this.con = this.sin_po;\n this.ms1 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs1 = qsfnz(this.e3, this.sin_po);\n\n this.sin_po = Math.sin(this.lat2);\n this.cos_po = Math.cos(this.lat2);\n this.t2 = this.sin_po;\n this.ms2 = msfnz(this.e3, this.sin_po, this.cos_po);\n this.qs2 = qsfnz(this.e3, this.sin_po);\n\n this.sin_po = Math.sin(this.lat0);\n this.cos_po = Math.cos(this.lat0);\n this.t3 = this.sin_po;\n this.qs0 = qsfnz(this.e3, this.sin_po);\n\n if (Math.abs(this.lat1 - this.lat2) > EPSLN) {\n this.ns0 = (this.ms1 * this.ms1 - this.ms2 * this.ms2) / (this.qs2 - this.qs1);\n }\n else {\n this.ns0 = this.con;\n }\n this.c = this.ms1 * this.ms1 + this.ns0 * this.qs1;\n this.rh = this.a * Math.sqrt(this.c - this.ns0 * this.qs0) / this.ns0;\n}\n\n/* Albers Conical Equal Area forward equations--mapping lat,long to x,y\n -------------------------------------------------------------------*/\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n this.sin_phi = Math.sin(lat);\n this.cos_phi = Math.cos(lat);\n\n var qs = qsfnz(this.e3, this.sin_phi);\n var rh1 = this.a * Math.sqrt(this.c - this.ns0 * qs) / this.ns0;\n var theta = this.ns0 * adjust_lon(lon - this.long0);\n var x = rh1 * Math.sin(theta) + this.x0;\n var y = this.rh - rh1 * Math.cos(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh1, qs, con, theta, lon, lat;\n\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n if (this.ns0 >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n con = rh1 * this.ns0 / this.a;\n if (this.sphere) {\n lat = Math.asin((this.c - con * con) / (2 * this.ns0));\n }\n else {\n qs = (this.c - con * con) / this.ns0;\n lat = this.phi1z(this.e3, qs);\n }\n\n lon = adjust_lon(theta / this.ns0 + this.long0);\n p.x = lon;\n p.y = lat;\n return p;\n}\n\n/* Function to compute phi1, the latitude for the inverse of the\n Albers Conical Equal-Area projection.\n-------------------------------------------*/\nexport function phi1z(eccent, qs) {\n var sinphi, cosphi, con, com, dphi;\n var phi = asinz(0.5 * qs);\n if (eccent < EPSLN) {\n return phi;\n }\n\n var eccnts = eccent * eccent;\n for (var i = 1; i <= 25; i++) {\n sinphi = Math.sin(phi);\n cosphi = Math.cos(phi);\n con = eccent * sinphi;\n com = 1 - con * con;\n dphi = 0.5 * com * com / cosphi * (qs / (1 - eccnts) - sinphi / com + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi = phi + dphi;\n if (Math.abs(dphi) <= 1e-7) {\n return phi;\n }\n }\n return null;\n}\n\nexport var names = [\"Albers_Conic_Equal_Area\", \"Albers\", \"aea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n phi1z: phi1z\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN} from '../constants/values';\n\n/*\n reference:\n Wolfram Mathworld \"Gnomonic Projection\"\n http://mathworld.wolfram.com/GnomonicProjection.html\n Accessed: 12th November 2009\n */\nexport function init() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n // Approximation for projecting points to the horizon (infinity)\n this.infinity_dist = 1000 * this.a;\n this.rc = 1;\n}\n\n/* Gnomonic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g;\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.x0 + this.a * ksp * cosphi * Math.sin(dlon) / g;\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon) / g;\n }\n else {\n\n // Point is in the opposing hemisphere and is unprojectable\n // We still need to return a reasonable point, so we project\n // to infinity, on a bearing\n // equivalent to the northern hemisphere equivalent\n // This is a reasonable approximation for short shapes and lines that\n // straddle the horizon.\n\n x = this.x0 + this.infinity_dist * cosphi * Math.sin(dlon);\n y = this.y0 + this.infinity_dist * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh; /* Rho */\n var sinc, cosc;\n var c;\n var lon, lat;\n\n /* Inverse equations\n -----------------*/\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n p.x /= this.k0;\n p.y /= this.k0;\n\n if ((rh = Math.sqrt(p.x * p.x + p.y * p.y))) {\n c = Math.atan2(rh, this.rc);\n sinc = Math.sin(c);\n cosc = Math.cos(c);\n\n lat = asinz(cosc * this.sin_p14 + (p.y * sinc * this.cos_p14) / rh);\n lon = Math.atan2(p.x * sinc, rh * this.cos_p14 * cosc - p.y * this.sin_p14 * sinc);\n lon = adjust_lon(this.long0 + lon);\n }\n else {\n lat = this.phic0;\n lon = 0;\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"gnom\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport qsfnz from '../common/qsfnz';\nimport msfnz from '../common/msfnz';\nimport iqsfnz from '../common/iqsfnz';\n\n/*\n reference:\n \"Cartographic Projection Procedures for the UNIX Environment-\n A User's Manual\" by Gerald I. Evenden,\n USGS Open File Report 90-284and Release 4 Interim Reports (2003)\n*/\nexport function init() {\n //no-op\n if (!this.sphere) {\n this.k0 = msfnz(this.e, Math.sin(this.lat_ts), Math.cos(this.lat_ts));\n }\n}\n\n/* Cylindrical Equal Area forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n if (this.sphere) {\n x = this.x0 + this.a * dlon * Math.cos(this.lat_ts);\n y = this.y0 + this.a * Math.sin(lat) / Math.cos(this.lat_ts);\n }\n else {\n var qs = qsfnz(this.e, Math.sin(lat));\n x = this.x0 + this.a * this.k0 * dlon;\n y = this.y0 + this.a * qs * 0.5 / this.k0;\n }\n\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Cylindrical Equal Area inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var lon, lat;\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + (p.x / this.a) / Math.cos(this.lat_ts));\n lat = Math.asin((p.y / this.a) * Math.cos(this.lat_ts));\n }\n else {\n lat = iqsfnz(this.e, 2 * p.y * this.k0 / this.a);\n lon = adjust_lon(this.long0 + p.x / (this.a * this.k0));\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"cea\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {HALF_PI} from '../constants/values';\n\nexport default function(eccent, q) {\n var temp = 1 - (1 - eccent * eccent) / (2 * eccent) * Math.log((1 - eccent) / (1 + eccent));\n if (Math.abs(Math.abs(q) - temp) < 1.0E-6) {\n if (q < 0) {\n return (-1 * HALF_PI);\n }\n else {\n return HALF_PI;\n }\n }\n //var phi = 0.5* q/(1-eccent*eccent);\n var phi = Math.asin(0.5 * q);\n var dphi;\n var sin_phi;\n var cos_phi;\n var con;\n for (var i = 0; i < 30; i++) {\n sin_phi = Math.sin(phi);\n cos_phi = Math.cos(phi);\n con = eccent * sin_phi;\n dphi = Math.pow(1 - con * con, 2) / (2 * cos_phi) * (q / (1 - eccent * eccent) - sin_phi / (1 - con * con) + 0.5 / eccent * Math.log((1 - con) / (1 + con)));\n phi += dphi;\n if (Math.abs(dphi) <= 0.0000000001) {\n return phi;\n }\n }\n\n //console.log(\"IQSFN-CONV:Latitude failed to converge after 30 iterations\");\n return NaN;\n}\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\n\nexport function init() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Equidistant Cylindrical (Plate Carre)\";\n\n this.rc = Math.cos(this.lat_ts);\n}\n\n// forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n var dlon = adjust_lon(lon - this.long0);\n var dlat = adjust_lat(lat - this.lat0);\n p.x = this.x0 + (this.a * dlon * this.rc);\n p.y = this.y0 + (this.a * dlat);\n return p;\n}\n\n// inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n\n var x = p.x;\n var y = p.y;\n\n p.x = adjust_lon(this.long0 + ((x - this.x0) / (this.a * this.rc)));\n p.y = adjust_lat(this.lat0 + ((y - this.y0) / (this.a)));\n return p;\n}\n\nexport var names = [\"Equirectangular\", \"Equidistant_Cylindrical\", \"eqc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport mlfn from '../common/mlfn';\nimport {EPSLN} from '../constants/values';\n\nimport gN from '../common/gN';\nvar MAX_ITER = 20;\n\nexport function init() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2); // devait etre dans tmerc.js mais n y est pas donc je commente sinon retour de valeurs nulles\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n this.ml0 = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0); //si que des zeros le calcul ne se fait pas\n}\n\n/* Polyconic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var x, y, el;\n var dlon = adjust_lon(lon - this.long0);\n el = dlon * Math.sin(lat);\n if (this.sphere) {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.a * this.lat0;\n }\n else {\n x = this.a * Math.sin(el) / Math.tan(lat);\n y = this.a * (adjust_lat(lat - this.lat0) + (1 - Math.cos(el)) / Math.tan(lat));\n }\n }\n else {\n if (Math.abs(lat) <= EPSLN) {\n x = this.a * dlon;\n y = -1 * this.ml0;\n }\n else {\n var nl = gN(this.a, this.e, Math.sin(lat)) / Math.tan(lat);\n x = nl * Math.sin(el);\n y = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, lat) - this.ml0 + nl * (1 - Math.cos(el));\n }\n\n }\n p.x = x + this.x0;\n p.y = y + this.y0;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n var lon, lat, x, y, i;\n var al, bl;\n var phi, dphi;\n x = p.x - this.x0;\n y = p.y - this.y0;\n\n if (this.sphere) {\n if (Math.abs(y + this.a * this.lat0) <= EPSLN) {\n lon = adjust_lon(x / this.a + this.long0);\n lat = 0;\n }\n else {\n al = this.lat0 + y / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var tanphi;\n for (i = MAX_ITER; i; --i) {\n tanphi = Math.tan(phi);\n dphi = -1 * (al * (phi * tanphi + 1) - phi - 0.5 * (phi * phi + bl) * tanphi) / ((phi - al) / tanphi - 1);\n phi += dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n lon = adjust_lon(this.long0 + (Math.asin(x * Math.tan(phi) / this.a)) / Math.sin(lat));\n }\n }\n else {\n if (Math.abs(y + this.ml0) <= EPSLN) {\n lat = 0;\n lon = adjust_lon(this.long0 + x / this.a);\n }\n else {\n\n al = (this.ml0 + y) / this.a;\n bl = x * x / this.a / this.a + al * al;\n phi = al;\n var cl, mln, mlnp, ma;\n var con;\n for (i = MAX_ITER; i; --i) {\n con = this.e * Math.sin(phi);\n cl = Math.sqrt(1 - con * con) * Math.tan(phi);\n mln = this.a * mlfn(this.e0, this.e1, this.e2, this.e3, phi);\n mlnp = this.e0 - 2 * this.e1 * Math.cos(2 * phi) + 4 * this.e2 * Math.cos(4 * phi) - 6 * this.e3 * Math.cos(6 * phi);\n ma = mln / this.a;\n dphi = (al * (cl * ma + 1) - ma - 0.5 * cl * (ma * ma + bl)) / (this.es * Math.sin(2 * phi) * (ma * ma + bl - 2 * al * ma) / (4 * cl) + (al - ma) * (cl * mlnp - 2 / Math.sin(2 * phi)) - mlnp);\n phi -= dphi;\n if (Math.abs(dphi) <= EPSLN) {\n lat = phi;\n break;\n }\n }\n\n //lat=phi4z(this.e,this.e0,this.e1,this.e2,this.e3,al,bl,0,0);\n cl = Math.sqrt(1 - this.es * Math.pow(Math.sin(lat), 2)) * Math.tan(lat);\n lon = adjust_lon(this.long0 + Math.asin(x * cl / this.a) / Math.sin(lat));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Polyconic\", \"poly\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {SEC_TO_RAD} from '../constants/values';\n\n/*\n reference\n Department of Land and Survey Technical Circular 1973/32\n http://www.linz.govt.nz/docs/miscellaneous/nz-map-definition.pdf\n OSG Technical Report 4.1\n http://www.linz.govt.nz/docs/miscellaneous/nzmg.pdf\n */\n\n/**\n * iterations: Number of iterations to refine inverse transform.\n * 0 -> km accuracy\n * 1 -> m accuracy -- suitable for most mapping applications\n * 2 -> mm accuracy\n */\nexport var iterations = 1;\n\nexport function init() {\n this.A = [];\n this.A[1] = 0.6399175073;\n this.A[2] = -0.1358797613;\n this.A[3] = 0.063294409;\n this.A[4] = -0.02526853;\n this.A[5] = 0.0117879;\n this.A[6] = -0.0055161;\n this.A[7] = 0.0026906;\n this.A[8] = -0.001333;\n this.A[9] = 0.00067;\n this.A[10] = -0.00034;\n\n this.B_re = [];\n this.B_im = [];\n this.B_re[1] = 0.7557853228;\n this.B_im[1] = 0;\n this.B_re[2] = 0.249204646;\n this.B_im[2] = 0.003371507;\n this.B_re[3] = -0.001541739;\n this.B_im[3] = 0.041058560;\n this.B_re[4] = -0.10162907;\n this.B_im[4] = 0.01727609;\n this.B_re[5] = -0.26623489;\n this.B_im[5] = -0.36249218;\n this.B_re[6] = -0.6870983;\n this.B_im[6] = -1.1651967;\n\n this.C_re = [];\n this.C_im = [];\n this.C_re[1] = 1.3231270439;\n this.C_im[1] = 0;\n this.C_re[2] = -0.577245789;\n this.C_im[2] = -0.007809598;\n this.C_re[3] = 0.508307513;\n this.C_im[3] = -0.112208952;\n this.C_re[4] = -0.15094762;\n this.C_im[4] = 0.18200602;\n this.C_re[5] = 1.01418179;\n this.C_im[5] = 1.64497696;\n this.C_re[6] = 1.9660549;\n this.C_im[6] = 2.5127645;\n\n this.D = [];\n this.D[1] = 1.5627014243;\n this.D[2] = 0.5185406398;\n this.D[3] = -0.03333098;\n this.D[4] = -0.1052906;\n this.D[5] = -0.0368594;\n this.D[6] = 0.007317;\n this.D[7] = 0.01220;\n this.D[8] = 0.00394;\n this.D[9] = -0.0013;\n}\n\n/**\n New Zealand Map Grid Forward - long/lat to x/y\n long/lat in radians\n */\nexport function forward(p) {\n var n;\n var lon = p.x;\n var lat = p.y;\n\n var delta_lat = lat - this.lat0;\n var delta_lon = lon - this.long0;\n\n // 1. Calculate d_phi and d_psi ... // and d_lambda\n // For this algorithm, delta_latitude is in seconds of arc x 10-5, so we need to scale to those units. Longitude is radians.\n var d_phi = delta_lat / SEC_TO_RAD * 1E-5;\n var d_lambda = delta_lon;\n var d_phi_n = 1; // d_phi^0\n\n var d_psi = 0;\n for (n = 1; n <= 10; n++) {\n d_phi_n = d_phi_n * d_phi;\n d_psi = d_psi + this.A[n] * d_phi_n;\n }\n\n // 2. Calculate theta\n var th_re = d_psi;\n var th_im = d_lambda;\n\n // 3. Calculate z\n var th_n_re = 1;\n var th_n_im = 0; // theta^0\n var th_n_re1;\n var th_n_im1;\n\n var z_re = 0;\n var z_im = 0;\n for (n = 1; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n z_re = z_re + this.B_re[n] * th_n_re - this.B_im[n] * th_n_im;\n z_im = z_im + this.B_im[n] * th_n_re + this.B_re[n] * th_n_im;\n }\n\n // 4. Calculate easting and northing\n p.x = (z_im * this.a) + this.x0;\n p.y = (z_re * this.a) + this.y0;\n\n return p;\n}\n\n/**\n New Zealand Map Grid Inverse - x/y to long/lat\n */\nexport function inverse(p) {\n var n;\n var x = p.x;\n var y = p.y;\n\n var delta_x = x - this.x0;\n var delta_y = y - this.y0;\n\n // 1. Calculate z\n var z_re = delta_y / this.a;\n var z_im = delta_x / this.a;\n\n // 2a. Calculate theta - first approximation gives km accuracy\n var z_n_re = 1;\n var z_n_im = 0; // z^0\n var z_n_re1;\n var z_n_im1;\n\n var th_re = 0;\n var th_im = 0;\n for (n = 1; n <= 6; n++) {\n z_n_re1 = z_n_re * z_re - z_n_im * z_im;\n z_n_im1 = z_n_im * z_re + z_n_re * z_im;\n z_n_re = z_n_re1;\n z_n_im = z_n_im1;\n th_re = th_re + this.C_re[n] * z_n_re - this.C_im[n] * z_n_im;\n th_im = th_im + this.C_im[n] * z_n_re + this.C_re[n] * z_n_im;\n }\n\n // 2b. Iterate to refine the accuracy of the calculation\n // 0 iterations gives km accuracy\n // 1 iteration gives m accuracy -- good enough for most mapping applications\n // 2 iterations bives mm accuracy\n for (var i = 0; i < this.iterations; i++) {\n var th_n_re = th_re;\n var th_n_im = th_im;\n var th_n_re1;\n var th_n_im1;\n\n var num_re = z_re;\n var num_im = z_im;\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n num_re = num_re + (n - 1) * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n num_im = num_im + (n - 1) * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n th_n_re = 1;\n th_n_im = 0;\n var den_re = this.B_re[1];\n var den_im = this.B_im[1];\n for (n = 2; n <= 6; n++) {\n th_n_re1 = th_n_re * th_re - th_n_im * th_im;\n th_n_im1 = th_n_im * th_re + th_n_re * th_im;\n th_n_re = th_n_re1;\n th_n_im = th_n_im1;\n den_re = den_re + n * (this.B_re[n] * th_n_re - this.B_im[n] * th_n_im);\n den_im = den_im + n * (this.B_im[n] * th_n_re + this.B_re[n] * th_n_im);\n }\n\n // Complex division\n var den2 = den_re * den_re + den_im * den_im;\n th_re = (num_re * den_re + num_im * den_im) / den2;\n th_im = (num_im * den_re - num_re * den_im) / den2;\n }\n\n // 3. Calculate d_phi ... // and d_lambda\n var d_psi = th_re;\n var d_lambda = th_im;\n var d_psi_n = 1; // d_psi^0\n\n var d_phi = 0;\n for (n = 1; n <= 9; n++) {\n d_psi_n = d_psi_n * d_psi;\n d_phi = d_phi + this.D[n] * d_psi_n;\n }\n\n // 4. Calculate latitude and longitude\n // d_phi is calcuated in second of arc * 10^-5, so we need to scale back to radians. d_lambda is in radians.\n var lat = this.lat0 + (d_phi * SEC_TO_RAD * 1E5);\n var lon = this.long0 + d_lambda;\n\n p.x = lon;\n p.y = lat;\n\n return p;\n}\n\nexport var names = [\"New_Zealand_Map_Grid\", \"nzmg\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\n/*\n reference\n \"New Equal-Area Map Projections for Noncircular Regions\", John P. Snyder,\n The American Cartographer, Vol 15, No. 4, October 1988, pp. 341-355.\n */\n\n\n/* Initialize the Miller Cylindrical projection\n -------------------------------------------*/\nexport function init() {\n //no-op\n}\n\n/* Miller Cylindrical forward equations--mapping lat,long to x,y\n ------------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x = this.x0 + this.a * dlon;\n var y = this.y0 + this.a * Math.log(Math.tan((Math.PI / 4) + (lat / 2.5))) * 1.25;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Miller Cylindrical inverse equations--mapping x,y to lat/long\n ------------------------------------------------------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n\n var lon = adjust_lon(this.long0 + p.x / this.a);\n var lat = 2.5 * (Math.atan(Math.exp(0.8 * p.y / this.a)) - Math.PI / 4);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Miller_Cylindrical\", \"mill\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport pj_enfn from '../common/pj_enfn';\nvar MAX_ITER = 20;\nimport pj_mlfn from '../common/pj_mlfn';\nimport pj_inv_mlfn from '../common/pj_inv_mlfn';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n\nexport function init() {\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n\n\n if (!this.sphere) {\n this.en = pj_enfn(this.es);\n }\n else {\n this.n = 1;\n this.m = 0;\n this.es = 0;\n this.C_y = Math.sqrt((this.m + 1) / this.n);\n this.C_x = this.C_y / (this.m + 1);\n }\n\n}\n\n/* Sinusoidal forward equations--mapping lat,long to x,y\n -----------------------------------------------------*/\nexport function forward(p) {\n var x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n lon = adjust_lon(lon - this.long0);\n\n if (this.sphere) {\n if (!this.m) {\n lat = this.n !== 1 ? Math.asin(this.n * Math.sin(lat)) : lat;\n }\n else {\n var k = this.n * Math.sin(lat);\n for (var i = MAX_ITER; i; --i) {\n var V = (this.m * lat + Math.sin(lat) - k) / (this.m + Math.cos(lat));\n lat -= V;\n if (Math.abs(V) < EPSLN) {\n break;\n }\n }\n }\n x = this.a * this.C_x * lon * (this.m + Math.cos(lat));\n y = this.a * this.C_y * lat;\n\n }\n else {\n\n var s = Math.sin(lat);\n var c = Math.cos(lat);\n y = this.a * pj_mlfn(lat, s, c, this.en);\n x = this.a * lon * c / Math.sqrt(1 - this.es * s * s);\n }\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var lat, temp, lon, s;\n\n p.x -= this.x0;\n lon = p.x / this.a;\n p.y -= this.y0;\n lat = p.y / this.a;\n\n if (this.sphere) {\n lat /= this.C_y;\n lon = lon / (this.C_x * (this.m + Math.cos(lat)));\n if (this.m) {\n lat = asinz((this.m * lat + Math.sin(lat)) / this.n);\n }\n else if (this.n !== 1) {\n lat = asinz(Math.sin(lat) / this.n);\n }\n lon = adjust_lon(lon + this.long0);\n lat = adjust_lat(lat);\n }\n else {\n lat = pj_inv_mlfn(p.y / this.a, this.es, this.en);\n s = Math.abs(lat);\n if (s < HALF_PI) {\n s = Math.sin(lat);\n temp = this.long0 + p.x * Math.sqrt(1 - this.es * s * s) / (this.a * Math.cos(lat));\n //temp = this.long0 + p.x / (this.a * Math.cos(lat));\n lon = adjust_lon(temp);\n }\n else if ((s - EPSLN) < HALF_PI) {\n lon = this.long0;\n }\n }\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Sinusoidal\", \"sinu\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nexport function init() {}\nimport {EPSLN} from '../constants/values';\n/* Mollweide forward equations--mapping lat,long to x,y\n ----------------------------------------------------*/\nexport function forward(p) {\n\n /* Forward equations\n -----------------*/\n var lon = p.x;\n var lat = p.y;\n\n var delta_lon = adjust_lon(lon - this.long0);\n var theta = lat;\n var con = Math.PI * Math.sin(lat);\n\n /* Iterate using the Newton-Raphson method to find theta\n -----------------------------------------------------*/\n while (true) {\n var delta_theta = -(theta + Math.sin(theta) - con) / (1 + Math.cos(theta));\n theta += delta_theta;\n if (Math.abs(delta_theta) < EPSLN) {\n break;\n }\n }\n theta /= 2;\n\n /* If the latitude is 90 deg, force the x coordinate to be \"0 + false easting\"\n this is done here because of precision problems with \"cos(theta)\"\n --------------------------------------------------------------------------*/\n if (Math.PI / 2 - Math.abs(lat) < EPSLN) {\n delta_lon = 0;\n }\n var x = 0.900316316158 * this.a * delta_lon * Math.cos(theta) + this.x0;\n var y = 1.4142135623731 * this.a * Math.sin(theta) + this.y0;\n\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var theta;\n var arg;\n\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n arg = p.y / (1.4142135623731 * this.a);\n\n /* Because of division by zero problems, 'arg' can not be 1. Therefore\n a number very close to one is used instead.\n -------------------------------------------------------------------*/\n if (Math.abs(arg) > 0.999999999999) {\n arg = 0.999999999999;\n }\n theta = Math.asin(arg);\n var lon = adjust_lon(this.long0 + (p.x / (0.900316316158 * this.a * Math.cos(theta))));\n if (lon < (-Math.PI)) {\n lon = -Math.PI;\n }\n if (lon > Math.PI) {\n lon = Math.PI;\n }\n arg = (2 * theta + Math.sin(2 * theta)) / Math.PI;\n if (Math.abs(arg) > 1) {\n arg = 1;\n }\n var lat = Math.asin(arg);\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Mollweide\", \"moll\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport msfnz from '../common/msfnz';\nimport mlfn from '../common/mlfn';\nimport adjust_lon from '../common/adjust_lon';\nimport adjust_lat from '../common/adjust_lat';\nimport imlfn from '../common/imlfn';\nimport {EPSLN} from '../constants/values';\n\nexport function init() {\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n // Standard Parallels cannot be equal and on opposite sides of the equator\n if (Math.abs(this.lat1 + this.lat2) < EPSLN) {\n return;\n }\n this.lat2 = this.lat2 || this.lat1;\n this.temp = this.b / this.a;\n this.es = 1 - Math.pow(this.temp, 2);\n this.e = Math.sqrt(this.es);\n this.e0 = e0fn(this.es);\n this.e1 = e1fn(this.es);\n this.e2 = e2fn(this.es);\n this.e3 = e3fn(this.es);\n\n this.sinphi = Math.sin(this.lat1);\n this.cosphi = Math.cos(this.lat1);\n\n this.ms1 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml1 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat1);\n\n if (Math.abs(this.lat1 - this.lat2) < EPSLN) {\n this.ns = this.sinphi;\n }\n else {\n this.sinphi = Math.sin(this.lat2);\n this.cosphi = Math.cos(this.lat2);\n this.ms2 = msfnz(this.e, this.sinphi, this.cosphi);\n this.ml2 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat2);\n this.ns = (this.ms1 - this.ms2) / (this.ml2 - this.ml1);\n }\n this.g = this.ml1 + this.ms1 / this.ns;\n this.ml0 = mlfn(this.e0, this.e1, this.e2, this.e3, this.lat0);\n this.rh = this.a * (this.g - this.ml0);\n}\n\n/* Equidistant Conic forward equations--mapping lat,long to x,y\n -----------------------------------------------------------*/\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var rh1;\n\n /* Forward equations\n -----------------*/\n if (this.sphere) {\n rh1 = this.a * (this.g - lat);\n }\n else {\n var ml = mlfn(this.e0, this.e1, this.e2, this.e3, lat);\n rh1 = this.a * (this.g - ml);\n }\n var theta = this.ns * adjust_lon(lon - this.long0);\n var x = this.x0 + rh1 * Math.sin(theta);\n var y = this.y0 + this.rh - rh1 * Math.cos(theta);\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Inverse equations\n -----------------*/\nexport function inverse(p) {\n p.x -= this.x0;\n p.y = this.rh - p.y + this.y0;\n var con, rh1, lat, lon;\n if (this.ns >= 0) {\n rh1 = Math.sqrt(p.x * p.x + p.y * p.y);\n con = 1;\n }\n else {\n rh1 = -Math.sqrt(p.x * p.x + p.y * p.y);\n con = -1;\n }\n var theta = 0;\n if (rh1 !== 0) {\n theta = Math.atan2(con * p.x, con * p.y);\n }\n\n if (this.sphere) {\n lon = adjust_lon(this.long0 + theta / this.ns);\n lat = adjust_lat(this.g - rh1 / this.a);\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n var ml = this.g - rh1 / this.a;\n lat = imlfn(ml, this.e0, this.e1, this.e2, this.e3);\n lon = adjust_lon(this.long0 + theta / this.ns);\n p.x = lon;\n p.y = lat;\n return p;\n }\n\n}\n\nexport var names = [\"Equidistant_Conic\", \"eqdc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\n\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport asinz from '../common/asinz';\n\n/* Initialize the Van Der Grinten projection\n ----------------------------------------*/\nexport function init() {\n //this.R = 6370997; //Radius of earth\n this.R = this.a;\n}\n\nexport function forward(p) {\n\n var lon = p.x;\n var lat = p.y;\n\n /* Forward equations\n -----------------*/\n var dlon = adjust_lon(lon - this.long0);\n var x, y;\n\n if (Math.abs(lat) <= EPSLN) {\n x = this.x0 + this.R * dlon;\n y = this.y0;\n }\n var theta = asinz(2 * Math.abs(lat / Math.PI));\n if ((Math.abs(dlon) <= EPSLN) || (Math.abs(Math.abs(lat) - HALF_PI) <= EPSLN)) {\n x = this.x0;\n if (lat >= 0) {\n y = this.y0 + Math.PI * this.R * Math.tan(0.5 * theta);\n }\n else {\n y = this.y0 + Math.PI * this.R * -Math.tan(0.5 * theta);\n }\n // return(OK);\n }\n var al = 0.5 * Math.abs((Math.PI / dlon) - (dlon / Math.PI));\n var asq = al * al;\n var sinth = Math.sin(theta);\n var costh = Math.cos(theta);\n\n var g = costh / (sinth + costh - 1);\n var gsq = g * g;\n var m = g * (2 / sinth - 1);\n var msq = m * m;\n var con = Math.PI * this.R * (al * (g - msq) + Math.sqrt(asq * (g - msq) * (g - msq) - (msq + asq) * (gsq - msq))) / (msq + asq);\n if (dlon < 0) {\n con = -con;\n }\n x = this.x0 + con;\n //con = Math.abs(con / (Math.PI * this.R));\n var q = asq + g;\n con = Math.PI * this.R * (m * q - al * Math.sqrt((msq + asq) * (asq + 1) - q * q)) / (msq + asq);\n if (lat >= 0) {\n //y = this.y0 + Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 + con;\n }\n else {\n //y = this.y0 - Math.PI * this.R * Math.sqrt(1 - con * con - 2 * al * con);\n y = this.y0 - con;\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\n/* Van Der Grinten inverse equations--mapping x,y to lat/long\n ---------------------------------------------------------*/\nexport function inverse(p) {\n var lon, lat;\n var xx, yy, xys, c1, c2, c3;\n var a1;\n var m1;\n var con;\n var th1;\n var d;\n\n /* inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n con = Math.PI * this.R;\n xx = p.x / con;\n yy = p.y / con;\n xys = xx * xx + yy * yy;\n c1 = -Math.abs(yy) * (1 + xys);\n c2 = c1 - 2 * yy * yy + xx * xx;\n c3 = -2 * c1 + 1 + 2 * yy * yy + xys * xys;\n d = yy * yy / c3 + (2 * c2 * c2 * c2 / c3 / c3 / c3 - 9 * c1 * c2 / c3 / c3) / 27;\n a1 = (c1 - c2 * c2 / 3 / c3) / c3;\n m1 = 2 * Math.sqrt(-a1 / 3);\n con = ((3 * d) / a1) / m1;\n if (Math.abs(con) > 1) {\n if (con >= 0) {\n con = 1;\n }\n else {\n con = -1;\n }\n }\n th1 = Math.acos(con) / 3;\n if (p.y >= 0) {\n lat = (-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n else {\n lat = -(-m1 * Math.cos(th1 + Math.PI / 3) - c2 / 3 / c3) * Math.PI;\n }\n\n if (Math.abs(xx) < EPSLN) {\n lon = this.long0;\n }\n else {\n lon = adjust_lon(this.long0 + Math.PI * (xys - 1 + Math.sqrt(1 + 2 * (xx * xx - yy * yy) + xys * xys)) / 2 / xx);\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"Van_der_Grinten_I\", \"VanDerGrinten\", \"vandg\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport {HALF_PI, EPSLN} from '../constants/values';\n\nimport mlfn from '../common/mlfn';\nimport e0fn from '../common/e0fn';\nimport e1fn from '../common/e1fn';\nimport e2fn from '../common/e2fn';\nimport e3fn from '../common/e3fn';\nimport gN from '../common/gN';\nimport asinz from '../common/asinz';\nimport imlfn from '../common/imlfn';\n\n\n\nexport function init() {\n this.sin_p12 = Math.sin(this.lat0);\n this.cos_p12 = Math.cos(this.lat0);\n}\n\nexport function forward(p) {\n var lon = p.x;\n var lat = p.y;\n var sinphi = Math.sin(p.y);\n var cosphi = Math.cos(p.y);\n var dlon = adjust_lon(lon - this.long0);\n var e0, e1, e2, e3, Mlp, Ml, tanphi, Nl1, Nl, psi, Az, G, H, GH, Hs, c, kp, cos_c, s, s2, s3, s4, s5;\n if (this.sphere) {\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n p.x = this.x0 + this.a * (HALF_PI - lat) * Math.sin(dlon);\n p.y = this.y0 - this.a * (HALF_PI - lat) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n p.x = this.x0 + this.a * (HALF_PI + lat) * Math.sin(dlon);\n p.y = this.y0 + this.a * (HALF_PI + lat) * Math.cos(dlon);\n return p;\n }\n else {\n //default case\n cos_c = this.sin_p12 * sinphi + this.cos_p12 * cosphi * Math.cos(dlon);\n c = Math.acos(cos_c);\n kp = c ? c / Math.sin(c) : 1;\n p.x = this.x0 + this.a * kp * cosphi * Math.sin(dlon);\n p.y = this.y0 + this.a * kp * (this.cos_p12 * sinphi - this.sin_p12 * cosphi * Math.cos(dlon));\n return p;\n }\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp - Ml) * Math.sin(dlon);\n p.y = this.y0 - (Mlp - Ml) * Math.cos(dlon);\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South Pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n Ml = this.a * mlfn(e0, e1, e2, e3, lat);\n p.x = this.x0 + (Mlp + Ml) * Math.sin(dlon);\n p.y = this.y0 + (Mlp + Ml) * Math.cos(dlon);\n return p;\n }\n else {\n //Default case\n tanphi = sinphi / cosphi;\n Nl1 = gN(this.a, this.e, this.sin_p12);\n Nl = gN(this.a, this.e, sinphi);\n psi = Math.atan((1 - this.es) * tanphi + this.es * Nl1 * this.sin_p12 / (Nl * cosphi));\n Az = Math.atan2(Math.sin(dlon), this.cos_p12 * Math.tan(psi) - this.sin_p12 * Math.cos(dlon));\n if (Az === 0) {\n s = Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else if (Math.abs(Math.abs(Az) - Math.PI) <= EPSLN) {\n s = -Math.asin(this.cos_p12 * Math.sin(psi) - this.sin_p12 * Math.cos(psi));\n }\n else {\n s = Math.asin(Math.sin(dlon) * Math.cos(psi) / Math.sin(Az));\n }\n G = this.e * this.sin_p12 / Math.sqrt(1 - this.es);\n H = this.e * this.cos_p12 * Math.cos(Az) / Math.sqrt(1 - this.es);\n GH = G * H;\n Hs = H * H;\n s2 = s * s;\n s3 = s2 * s;\n s4 = s3 * s;\n s5 = s4 * s;\n c = Nl1 * s * (1 - s2 * Hs * (1 - Hs) / 6 + s3 / 8 * GH * (1 - 2 * Hs) + s4 / 120 * (Hs * (4 - 7 * Hs) - 3 * G * G * (1 - 7 * Hs)) - s5 / 48 * GH);\n p.x = this.x0 + c * Math.sin(Az);\n p.y = this.y0 + c * Math.cos(Az);\n return p;\n }\n }\n\n\n}\n\nexport function inverse(p) {\n p.x -= this.x0;\n p.y -= this.y0;\n var rh, z, sinz, cosz, lon, lat, con, e0, e1, e2, e3, Mlp, M, N1, psi, Az, cosAz, tmp, A, B, D, Ee, F, sinpsi;\n if (this.sphere) {\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n if (rh > (2 * HALF_PI * this.a)) {\n return;\n }\n z = rh / this.a;\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n }\n else {\n lat = asinz(cosz * this.sin_p12 + (p.y * sinz * this.cos_p12) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n }\n else {\n /*con = cosz - this.sin_p12 * Math.sin(lat);\n if ((Math.abs(con) < EPSLN) && (Math.abs(p.x) < EPSLN)) {\n //no-op, just keep the lon value as is\n } else {\n var temp = Math.atan2((p.x * sinz * this.cos_p12), (con * rh));\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz * this.cos_p12), (con * rh)));\n }*/\n lon = adjust_lon(this.long0 + Math.atan2(p.x * sinz, rh * this.cos_p12 * cosz - p.y * this.sin_p12 * sinz));\n }\n }\n\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n e0 = e0fn(this.es);\n e1 = e1fn(this.es);\n e2 = e2fn(this.es);\n e3 = e3fn(this.es);\n if (Math.abs(this.sin_p12 - 1) <= EPSLN) {\n //North pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = Mlp - rh;\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - 1 * p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else if (Math.abs(this.sin_p12 + 1) <= EPSLN) {\n //South pole case\n Mlp = this.a * mlfn(e0, e1, e2, e3, HALF_PI);\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n M = rh - Mlp;\n\n lat = imlfn(M / this.a, e0, e1, e2, e3);\n lon = adjust_lon(this.long0 + Math.atan2(p.x, p.y));\n p.x = lon;\n p.y = lat;\n return p;\n }\n else {\n //default case\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n Az = Math.atan2(p.x, p.y);\n N1 = gN(this.a, this.e, this.sin_p12);\n cosAz = Math.cos(Az);\n tmp = this.e * this.cos_p12 * cosAz;\n A = -tmp * tmp / (1 - this.es);\n B = 3 * this.es * (1 - A) * this.sin_p12 * this.cos_p12 * cosAz / (1 - this.es);\n D = rh / N1;\n Ee = D - A * (1 + A) * Math.pow(D, 3) / 6 - B * (1 + 3 * A) * Math.pow(D, 4) / 24;\n F = 1 - A * Ee * Ee / 2 - D * Ee * Ee * Ee / 6;\n psi = Math.asin(this.sin_p12 * Math.cos(Ee) + this.cos_p12 * Math.sin(Ee) * cosAz);\n lon = adjust_lon(this.long0 + Math.asin(Math.sin(Az) * Math.sin(Ee) / Math.cos(psi)));\n sinpsi = Math.sin(psi);\n lat = Math.atan2((sinpsi - this.es * F * this.sin_p12) * Math.tan(psi), sinpsi * (1 - this.es));\n p.x = lon;\n p.y = lat;\n return p;\n }\n }\n\n}\n\nexport var names = [\"Azimuthal_Equidistant\", \"aeqd\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import adjust_lon from '../common/adjust_lon';\nimport asinz from '../common/asinz';\nimport {EPSLN, HALF_PI} from '../constants/values';\n\nexport function init() {\n //double temp; /* temporary variable */\n\n /* Place parameters in static storage for common use\n -------------------------------------------------*/\n this.sin_p14 = Math.sin(this.lat0);\n this.cos_p14 = Math.cos(this.lat0);\n}\n\n/* Orthographic forward equations--mapping lat,long to x,y\n ---------------------------------------------------*/\nexport function forward(p) {\n var sinphi, cosphi; /* sin and cos value */\n var dlon; /* delta longitude value */\n var coslon; /* cos of longitude */\n var ksp; /* scale factor */\n var g, x, y;\n var lon = p.x;\n var lat = p.y;\n /* Forward equations\n -----------------*/\n dlon = adjust_lon(lon - this.long0);\n\n sinphi = Math.sin(lat);\n cosphi = Math.cos(lat);\n\n coslon = Math.cos(dlon);\n g = this.sin_p14 * sinphi + this.cos_p14 * cosphi * coslon;\n ksp = 1;\n if ((g > 0) || (Math.abs(g) <= EPSLN)) {\n x = this.a * ksp * cosphi * Math.sin(dlon);\n y = this.y0 + this.a * ksp * (this.cos_p14 * sinphi - this.sin_p14 * cosphi * coslon);\n }\n p.x = x;\n p.y = y;\n return p;\n}\n\nexport function inverse(p) {\n var rh; /* height above ellipsoid */\n var z; /* angle */\n var sinz, cosz; /* sin of z and cos of z */\n var con;\n var lon, lat;\n /* Inverse equations\n -----------------*/\n p.x -= this.x0;\n p.y -= this.y0;\n rh = Math.sqrt(p.x * p.x + p.y * p.y);\n z = asinz(rh / this.a);\n\n sinz = Math.sin(z);\n cosz = Math.cos(z);\n\n lon = this.long0;\n if (Math.abs(rh) <= EPSLN) {\n lat = this.lat0;\n p.x = lon;\n p.y = lat;\n return p;\n }\n lat = asinz(cosz * this.sin_p14 + (p.y * sinz * this.cos_p14) / rh);\n con = Math.abs(this.lat0) - HALF_PI;\n if (Math.abs(con) <= EPSLN) {\n if (this.lat0 >= 0) {\n lon = adjust_lon(this.long0 + Math.atan2(p.x, - p.y));\n }\n else {\n lon = adjust_lon(this.long0 - Math.atan2(-p.x, p.y));\n }\n p.x = lon;\n p.y = lat;\n return p;\n }\n lon = adjust_lon(this.long0 + Math.atan2((p.x * sinz), rh * this.cos_p14 * cosz - p.y * this.sin_p14 * sinz));\n p.x = lon;\n p.y = lat;\n return p;\n}\n\nexport var names = [\"ortho\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","// QSC projection rewritten from the original PROJ4\n// https://github.com/OSGeo/proj.4/blob/master/src/PJ_qsc.c\n\nimport {EPSLN, TWO_PI, SPI, HALF_PI, FORTPI} from '../constants/values';\n\n/* constants */\nvar FACE_ENUM = {\n FRONT: 1,\n RIGHT: 2,\n BACK: 3,\n LEFT: 4,\n TOP: 5,\n BOTTOM: 6\n};\n\nvar AREA_ENUM = {\n AREA_0: 1,\n AREA_1: 2,\n AREA_2: 3,\n AREA_3: 4\n};\n\nexport function init() {\n\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.lat0 = this.lat0 || 0;\n this.long0 = this.long0 || 0;\n this.lat_ts = this.lat_ts || 0;\n this.title = this.title || \"Quadrilateralized Spherical Cube\";\n\n /* Determine the cube face from the center of projection. */\n if (this.lat0 >= HALF_PI - FORTPI / 2.0) {\n this.face = FACE_ENUM.TOP;\n } else if (this.lat0 <= -(HALF_PI - FORTPI / 2.0)) {\n this.face = FACE_ENUM.BOTTOM;\n } else if (Math.abs(this.long0) <= FORTPI) {\n this.face = FACE_ENUM.FRONT;\n } else if (Math.abs(this.long0) <= HALF_PI + FORTPI) {\n this.face = this.long0 > 0.0 ? FACE_ENUM.RIGHT : FACE_ENUM.LEFT;\n } else {\n this.face = FACE_ENUM.BACK;\n }\n\n /* Fill in useful values for the ellipsoid <-> sphere shift\n * described in [LK12]. */\n if (this.es !== 0) {\n this.one_minus_f = 1 - (this.a - this.b) / this.a;\n this.one_minus_f_squared = this.one_minus_f * this.one_minus_f;\n }\n}\n\n// QSC forward equations--mapping lat,long to x,y\n// -----------------------------------------------------------------\nexport function forward(p) {\n var xy = {x: 0, y: 0};\n var lat, lon;\n var theta, phi;\n var t, mu;\n /* nu; */\n var area = {value: 0};\n\n // move lon according to projection's lon\n p.x -= this.long0;\n\n /* Convert the geodetic latitude to a geocentric latitude.\n * This corresponds to the shift from the ellipsoid to the sphere\n * described in [LK12]. */\n if (this.es !== 0) {//if (P->es != 0) {\n lat = Math.atan(this.one_minus_f_squared * Math.tan(p.y));\n } else {\n lat = p.y;\n }\n\n /* Convert the input lat, lon into theta, phi as used by QSC.\n * This depends on the cube face and the area on it.\n * For the top and bottom face, we can compute theta and phi\n * directly from phi, lam. For the other faces, we must use\n * unit sphere cartesian coordinates as an intermediate step. */\n lon = p.x; //lon = lp.lam;\n if (this.face === FACE_ENUM.TOP) {\n phi = HALF_PI - lat;\n if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n theta = lon - HALF_PI;\n } else if (lon > HALF_PI + FORTPI || lon <= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_1;\n theta = (lon > 0.0 ? lon - SPI : lon + SPI);\n } else if (lon > -(HALF_PI + FORTPI) && lon <= -FORTPI) {\n area.value = AREA_ENUM.AREA_2;\n theta = lon + HALF_PI;\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta = lon;\n }\n } else if (this.face === FACE_ENUM.BOTTOM) {\n phi = HALF_PI + lat;\n if (lon >= FORTPI && lon <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n theta = -lon + HALF_PI;\n } else if (lon < FORTPI && lon >= -FORTPI) {\n area.value = AREA_ENUM.AREA_1;\n theta = -lon;\n } else if (lon < -FORTPI && lon >= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_2;\n theta = -lon - HALF_PI;\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta = (lon > 0.0 ? -lon + SPI : -lon - SPI);\n }\n } else {\n var q, r, s;\n var sinlat, coslat;\n var sinlon, coslon;\n\n if (this.face === FACE_ENUM.RIGHT) {\n lon = qsc_shift_lon_origin(lon, +HALF_PI);\n } else if (this.face === FACE_ENUM.BACK) {\n lon = qsc_shift_lon_origin(lon, +SPI);\n } else if (this.face === FACE_ENUM.LEFT) {\n lon = qsc_shift_lon_origin(lon, -HALF_PI);\n }\n sinlat = Math.sin(lat);\n coslat = Math.cos(lat);\n sinlon = Math.sin(lon);\n coslon = Math.cos(lon);\n q = coslat * coslon;\n r = coslat * sinlon;\n s = sinlat;\n\n if (this.face === FACE_ENUM.FRONT) {\n phi = Math.acos(q);\n theta = qsc_fwd_equat_face_theta(phi, s, r, area);\n } else if (this.face === FACE_ENUM.RIGHT) {\n phi = Math.acos(r);\n theta = qsc_fwd_equat_face_theta(phi, s, -q, area);\n } else if (this.face === FACE_ENUM.BACK) {\n phi = Math.acos(-q);\n theta = qsc_fwd_equat_face_theta(phi, s, -r, area);\n } else if (this.face === FACE_ENUM.LEFT) {\n phi = Math.acos(-r);\n theta = qsc_fwd_equat_face_theta(phi, s, q, area);\n } else {\n /* Impossible */\n phi = theta = 0;\n area.value = AREA_ENUM.AREA_0;\n }\n }\n\n /* Compute mu and nu for the area of definition.\n * For mu, see Eq. (3-21) in [OL76], but note the typos:\n * compare with Eq. (3-14). For nu, see Eq. (3-38). */\n mu = Math.atan((12 / SPI) * (theta + Math.acos(Math.sin(theta) * Math.cos(FORTPI)) - HALF_PI));\n t = Math.sqrt((1 - Math.cos(phi)) / (Math.cos(mu) * Math.cos(mu)) / (1 - Math.cos(Math.atan(1 / Math.cos(theta)))));\n\n /* Apply the result to the real area. */\n if (area.value === AREA_ENUM.AREA_1) {\n mu += HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_2) {\n mu += SPI;\n } else if (area.value === AREA_ENUM.AREA_3) {\n mu += 1.5 * SPI;\n }\n\n /* Now compute x, y from mu and nu */\n xy.x = t * Math.cos(mu);\n xy.y = t * Math.sin(mu);\n xy.x = xy.x * this.a + this.x0;\n xy.y = xy.y * this.a + this.y0;\n\n p.x = xy.x;\n p.y = xy.y;\n return p;\n}\n\n// QSC inverse equations--mapping x,y to lat/long\n// -----------------------------------------------------------------\nexport function inverse(p) {\n var lp = {lam: 0, phi: 0};\n var mu, nu, cosmu, tannu;\n var tantheta, theta, cosphi, phi;\n var t;\n var area = {value: 0};\n\n /* de-offset */\n p.x = (p.x - this.x0) / this.a;\n p.y = (p.y - this.y0) / this.a;\n\n /* Convert the input x, y to the mu and nu angles as used by QSC.\n * This depends on the area of the cube face. */\n nu = Math.atan(Math.sqrt(p.x * p.x + p.y * p.y));\n mu = Math.atan2(p.y, p.x);\n if (p.x >= 0.0 && p.x >= Math.abs(p.y)) {\n area.value = AREA_ENUM.AREA_0;\n } else if (p.y >= 0.0 && p.y >= Math.abs(p.x)) {\n area.value = AREA_ENUM.AREA_1;\n mu -= HALF_PI;\n } else if (p.x < 0.0 && -p.x >= Math.abs(p.y)) {\n area.value = AREA_ENUM.AREA_2;\n mu = (mu < 0.0 ? mu + SPI : mu - SPI);\n } else {\n area.value = AREA_ENUM.AREA_3;\n mu += HALF_PI;\n }\n\n /* Compute phi and theta for the area of definition.\n * The inverse projection is not described in the original paper, but some\n * good hints can be found here (as of 2011-12-14):\n * http://fits.gsfc.nasa.gov/fitsbits/saf.93/saf.9302\n * (search for \"Message-Id: <9302181759.AA25477 at fits.cv.nrao.edu>\") */\n t = (SPI / 12) * Math.tan(mu);\n tantheta = Math.sin(t) / (Math.cos(t) - (1 / Math.sqrt(2)));\n theta = Math.atan(tantheta);\n cosmu = Math.cos(mu);\n tannu = Math.tan(nu);\n cosphi = 1 - cosmu * cosmu * tannu * tannu * (1 - Math.cos(Math.atan(1 / Math.cos(theta))));\n if (cosphi < -1) {\n cosphi = -1;\n } else if (cosphi > +1) {\n cosphi = +1;\n }\n\n /* Apply the result to the real area on the cube face.\n * For the top and bottom face, we can compute phi and lam directly.\n * For the other faces, we must use unit sphere cartesian coordinates\n * as an intermediate step. */\n if (this.face === FACE_ENUM.TOP) {\n phi = Math.acos(cosphi);\n lp.phi = HALF_PI - phi;\n if (area.value === AREA_ENUM.AREA_0) {\n lp.lam = theta + HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_1) {\n lp.lam = (theta < 0.0 ? theta + SPI : theta - SPI);\n } else if (area.value === AREA_ENUM.AREA_2) {\n lp.lam = theta - HALF_PI;\n } else /* area.value == AREA_ENUM.AREA_3 */ {\n lp.lam = theta;\n }\n } else if (this.face === FACE_ENUM.BOTTOM) {\n phi = Math.acos(cosphi);\n lp.phi = phi - HALF_PI;\n if (area.value === AREA_ENUM.AREA_0) {\n lp.lam = -theta + HALF_PI;\n } else if (area.value === AREA_ENUM.AREA_1) {\n lp.lam = -theta;\n } else if (area.value === AREA_ENUM.AREA_2) {\n lp.lam = -theta - HALF_PI;\n } else /* area.value == AREA_ENUM.AREA_3 */ {\n lp.lam = (theta < 0.0 ? -theta - SPI : -theta + SPI);\n }\n } else {\n /* Compute phi and lam via cartesian unit sphere coordinates. */\n var q, r, s;\n q = cosphi;\n t = q * q;\n if (t >= 1) {\n s = 0;\n } else {\n s = Math.sqrt(1 - t) * Math.sin(theta);\n }\n t += s * s;\n if (t >= 1) {\n r = 0;\n } else {\n r = Math.sqrt(1 - t);\n }\n /* Rotate q,r,s into the correct area. */\n if (area.value === AREA_ENUM.AREA_1) {\n t = r;\n r = -s;\n s = t;\n } else if (area.value === AREA_ENUM.AREA_2) {\n r = -r;\n s = -s;\n } else if (area.value === AREA_ENUM.AREA_3) {\n t = r;\n r = s;\n s = -t;\n }\n /* Rotate q,r,s into the correct cube face. */\n if (this.face === FACE_ENUM.RIGHT) {\n t = q;\n q = -r;\n r = t;\n } else if (this.face === FACE_ENUM.BACK) {\n q = -q;\n r = -r;\n } else if (this.face === FACE_ENUM.LEFT) {\n t = q;\n q = r;\n r = -t;\n }\n /* Now compute phi and lam from the unit sphere coordinates. */\n lp.phi = Math.acos(-s) - HALF_PI;\n lp.lam = Math.atan2(r, q);\n if (this.face === FACE_ENUM.RIGHT) {\n lp.lam = qsc_shift_lon_origin(lp.lam, -HALF_PI);\n } else if (this.face === FACE_ENUM.BACK) {\n lp.lam = qsc_shift_lon_origin(lp.lam, -SPI);\n } else if (this.face === FACE_ENUM.LEFT) {\n lp.lam = qsc_shift_lon_origin(lp.lam, +HALF_PI);\n }\n }\n\n /* Apply the shift from the sphere to the ellipsoid as described\n * in [LK12]. */\n if (this.es !== 0) {\n var invert_sign;\n var tanphi, xa;\n invert_sign = (lp.phi < 0 ? 1 : 0);\n tanphi = Math.tan(lp.phi);\n xa = this.b / Math.sqrt(tanphi * tanphi + this.one_minus_f_squared);\n lp.phi = Math.atan(Math.sqrt(this.a * this.a - xa * xa) / (this.one_minus_f * xa));\n if (invert_sign) {\n lp.phi = -lp.phi;\n }\n }\n\n lp.lam += this.long0;\n p.x = lp.lam;\n p.y = lp.phi;\n return p;\n}\n\n/* Helper function for forward projection: compute the theta angle\n * and determine the area number. */\nfunction qsc_fwd_equat_face_theta(phi, y, x, area) {\n var theta;\n if (phi < EPSLN) {\n area.value = AREA_ENUM.AREA_0;\n theta = 0.0;\n } else {\n theta = Math.atan2(y, x);\n if (Math.abs(theta) <= FORTPI) {\n area.value = AREA_ENUM.AREA_0;\n } else if (theta > FORTPI && theta <= HALF_PI + FORTPI) {\n area.value = AREA_ENUM.AREA_1;\n theta -= HALF_PI;\n } else if (theta > HALF_PI + FORTPI || theta <= -(HALF_PI + FORTPI)) {\n area.value = AREA_ENUM.AREA_2;\n theta = (theta >= 0.0 ? theta - SPI : theta + SPI);\n } else {\n area.value = AREA_ENUM.AREA_3;\n theta += HALF_PI;\n }\n }\n return theta;\n}\n\n/* Helper function: shift the longitude. */\nfunction qsc_shift_lon_origin(lon, offset) {\n var slon = lon + offset;\n if (slon < -SPI) {\n slon += TWO_PI;\n } else if (slon > +SPI) {\n slon -= TWO_PI;\n }\n return slon;\n}\n\nexport var names = [\"Quadrilateralized Spherical Cube\", \"Quadrilateralized_Spherical_Cube\", \"qsc\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n\n","// Robinson projection\n// Based on https://github.com/OSGeo/proj.4/blob/master/src/PJ_robin.c\n// Polynomial coeficients from http://article.gmane.org/gmane.comp.gis.proj-4.devel/6039\n\nimport {HALF_PI, D2R, R2D, EPSLN} from '../constants/values';\nimport adjust_lon from '../common/adjust_lon';\n\nvar COEFS_X = [\n [1.0000, 2.2199e-17, -7.15515e-05, 3.1103e-06],\n [0.9986, -0.000482243, -2.4897e-05, -1.3309e-06],\n [0.9954, -0.00083103, -4.48605e-05, -9.86701e-07],\n [0.9900, -0.00135364, -5.9661e-05, 3.6777e-06],\n [0.9822, -0.00167442, -4.49547e-06, -5.72411e-06],\n [0.9730, -0.00214868, -9.03571e-05, 1.8736e-08],\n [0.9600, -0.00305085, -9.00761e-05, 1.64917e-06],\n [0.9427, -0.00382792, -6.53386e-05, -2.6154e-06],\n [0.9216, -0.00467746, -0.00010457, 4.81243e-06],\n [0.8962, -0.00536223, -3.23831e-05, -5.43432e-06],\n [0.8679, -0.00609363, -0.000113898, 3.32484e-06],\n [0.8350, -0.00698325, -6.40253e-05, 9.34959e-07],\n [0.7986, -0.00755338, -5.00009e-05, 9.35324e-07],\n [0.7597, -0.00798324, -3.5971e-05, -2.27626e-06],\n [0.7186, -0.00851367, -7.01149e-05, -8.6303e-06],\n [0.6732, -0.00986209, -0.000199569, 1.91974e-05],\n [0.6213, -0.010418, 8.83923e-05, 6.24051e-06],\n [0.5722, -0.00906601, 0.000182, 6.24051e-06],\n [0.5322, -0.00677797, 0.000275608, 6.24051e-06]\n];\n\nvar COEFS_Y = [\n [-5.20417e-18, 0.0124, 1.21431e-18, -8.45284e-11],\n [0.0620, 0.0124, -1.26793e-09, 4.22642e-10],\n [0.1240, 0.0124, 5.07171e-09, -1.60604e-09],\n [0.1860, 0.0123999, -1.90189e-08, 6.00152e-09],\n [0.2480, 0.0124002, 7.10039e-08, -2.24e-08],\n [0.3100, 0.0123992, -2.64997e-07, 8.35986e-08],\n [0.3720, 0.0124029, 9.88983e-07, -3.11994e-07],\n [0.4340, 0.0123893, -3.69093e-06, -4.35621e-07],\n [0.4958, 0.0123198, -1.02252e-05, -3.45523e-07],\n [0.5571, 0.0121916, -1.54081e-05, -5.82288e-07],\n [0.6176, 0.0119938, -2.41424e-05, -5.25327e-07],\n [0.6769, 0.011713, -3.20223e-05, -5.16405e-07],\n [0.7346, 0.0113541, -3.97684e-05, -6.09052e-07],\n [0.7903, 0.0109107, -4.89042e-05, -1.04739e-06],\n [0.8435, 0.0103431, -6.4615e-05, -1.40374e-09],\n [0.8936, 0.00969686, -6.4636e-05, -8.547e-06],\n [0.9394, 0.00840947, -0.000192841, -4.2106e-06],\n [0.9761, 0.00616527, -0.000256, -4.2106e-06],\n [1.0000, 0.00328947, -0.000319159, -4.2106e-06]\n];\n\nvar FXC = 0.8487;\nvar FYC = 1.3523;\nvar C1 = R2D/5; // rad to 5-degree interval\nvar RC1 = 1/C1;\nvar NODES = 18;\n\nvar poly3_val = function(coefs, x) {\n return coefs[0] + x * (coefs[1] + x * (coefs[2] + x * coefs[3]));\n};\n\nvar poly3_der = function(coefs, x) {\n return coefs[1] + x * (2 * coefs[2] + x * 3 * coefs[3]);\n};\n\nfunction newton_rapshon(f_df, start, max_err, iters) {\n var x = start;\n for (; iters; --iters) {\n var upd = f_df(x);\n x -= upd;\n if (Math.abs(upd) < max_err) {\n break;\n }\n }\n return x;\n}\n\nexport function init() {\n this.x0 = this.x0 || 0;\n this.y0 = this.y0 || 0;\n this.long0 = this.long0 || 0;\n this.es = 0;\n this.title = this.title || \"Robinson\";\n}\n\nexport function forward(ll) {\n var lon = adjust_lon(ll.x - this.long0);\n\n var dphi = Math.abs(ll.y);\n var i = Math.floor(dphi * C1);\n if (i < 0) {\n i = 0;\n } else if (i >= NODES) {\n i = NODES - 1;\n }\n dphi = R2D * (dphi - RC1 * i);\n var xy = {\n x: poly3_val(COEFS_X[i], dphi) * lon,\n y: poly3_val(COEFS_Y[i], dphi)\n };\n if (ll.y < 0) {\n xy.y = -xy.y;\n }\n\n xy.x = xy.x * this.a * FXC + this.x0;\n xy.y = xy.y * this.a * FYC + this.y0;\n return xy;\n}\n\nexport function inverse(xy) {\n var ll = {\n x: (xy.x - this.x0) / (this.a * FXC),\n y: Math.abs(xy.y - this.y0) / (this.a * FYC)\n };\n\n if (ll.y >= 1) { // pathologic case\n ll.x /= COEFS_X[NODES][0];\n ll.y = xy.y < 0 ? -HALF_PI : HALF_PI;\n } else {\n // find table interval\n var i = Math.floor(ll.y * NODES);\n if (i < 0) {\n i = 0;\n } else if (i >= NODES) {\n i = NODES - 1;\n }\n for (;;) {\n if (COEFS_Y[i][0] > ll.y) {\n --i;\n } else if (COEFS_Y[i+1][0] <= ll.y) {\n ++i;\n } else {\n break;\n }\n }\n // linear interpolation in 5 degree interval\n var coefs = COEFS_Y[i];\n var t = 5 * (ll.y - coefs[0]) / (COEFS_Y[i+1][0] - coefs[0]);\n // find t so that poly3_val(coefs, t) = ll.y\n t = newton_rapshon(function(x) {\n return (poly3_val(coefs, x) - ll.y) / poly3_der(coefs, x);\n }, t, EPSLN, 100);\n\n ll.x /= poly3_val(COEFS_X[i], t);\n ll.y = (5 * i + t) * D2R;\n if (xy.y < 0) {\n ll.y = -ll.y;\n }\n }\n\n ll.x = adjust_lon(ll.x + this.long0);\n return ll;\n}\n\nexport var names = [\"Robinson\", \"robin\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import {\n geodeticToGeocentric,\n geocentricToGeodetic\n} from '../datumUtils';\n\nexport function init() {\n this.name = 'geocent';\n\n}\n\nexport function forward(p) {\n var point = geodeticToGeocentric(p, this.es, this.a);\n return point;\n}\n\nexport function inverse(p) {\n var point = geocentricToGeodetic(p, this.es, this.a, this.b);\n return point;\n}\n\nexport var names = [\"Geocentric\", 'geocentric', \"geocent\", \"Geocent\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};","\nvar mode = {\n N_POLE: 0,\n S_POLE: 1,\n EQUIT: 2,\n OBLIQ: 3\n};\n\nimport { D2R, HALF_PI, EPSLN } from \"../constants/values\";\nimport hypot from \"../common/hypot\";\n\nvar params = {\n h: { def: 100000, num: true }, // default is Karman line, no default in PROJ.7\n azi: { def: 0, num: true, degrees: true }, // default is North\n tilt: { def: 0, num: true, degrees: true }, // default is Nadir\n long0: { def: 0, num: true }, // default is Greenwich, conversion to rad is automatic\n lat0: { def: 0, num: true } // default is Equator, conversion to rad is automatic\n};\n\nexport function init() {\n Object.keys(params).forEach(function (p) {\n if (typeof this[p] === \"undefined\") {\n this[p] = params[p].def;\n } else if (params[p].num && isNaN(this[p])) {\n throw new Error(\"Invalid parameter value, must be numeric \" + p + \" = \" + this[p]);\n } else if (params[p].num) {\n this[p] = parseFloat(this[p]);\n }\n if (params[p].degrees) {\n this[p] = this[p] * D2R;\n }\n }.bind(this));\n\n if (Math.abs((Math.abs(this.lat0) - HALF_PI)) < EPSLN) {\n this.mode = this.lat0 < 0 ? mode.S_POLE : mode.N_POLE;\n } else if (Math.abs(this.lat0) < EPSLN) {\n this.mode = mode.EQUIT;\n } else {\n this.mode = mode.OBLIQ;\n this.sinph0 = Math.sin(this.lat0);\n this.cosph0 = Math.cos(this.lat0);\n }\n\n this.pn1 = this.h / this.a; // Normalize relative to the Earth's radius\n\n if (this.pn1 <= 0 || this.pn1 > 1e10) {\n throw new Error(\"Invalid height\");\n }\n \n this.p = 1 + this.pn1;\n this.rp = 1 / this.p;\n this.h1 = 1 / this.pn1;\n this.pfact = (this.p + 1) * this.h1;\n this.es = 0;\n\n var omega = this.tilt;\n var gamma = this.azi;\n this.cg = Math.cos(gamma);\n this.sg = Math.sin(gamma);\n this.cw = Math.cos(omega);\n this.sw = Math.sin(omega);\n}\n\nexport function forward(p) {\n p.x -= this.long0;\n var sinphi = Math.sin(p.y);\n var cosphi = Math.cos(p.y);\n var coslam = Math.cos(p.x);\n var x, y;\n switch (this.mode) {\n case mode.OBLIQ:\n y = this.sinph0 * sinphi + this.cosph0 * cosphi * coslam;\n break;\n case mode.EQUIT:\n y = cosphi * coslam;\n break;\n case mode.S_POLE:\n y = -sinphi;\n break;\n case mode.N_POLE:\n y = sinphi;\n break;\n }\n y = this.pn1 / (this.p - y);\n x = y * cosphi * Math.sin(p.x);\n\n switch (this.mode) {\n case mode.OBLIQ:\n y *= this.cosph0 * sinphi - this.sinph0 * cosphi * coslam;\n break;\n case mode.EQUIT:\n y *= sinphi;\n break;\n case mode.N_POLE:\n y *= -(cosphi * coslam);\n break;\n case mode.S_POLE:\n y *= cosphi * coslam;\n break;\n }\n\n // Tilt \n var yt, ba;\n yt = y * this.cg + x * this.sg;\n ba = 1 / (yt * this.sw * this.h1 + this.cw);\n x = (x * this.cg - y * this.sg) * this.cw * ba;\n y = yt * ba;\n\n p.x = x * this.a;\n p.y = y * this.a;\n return p;\n}\n\nexport function inverse(p) {\n p.x /= this.a;\n p.y /= this.a;\n var r = { x: p.x, y: p.y };\n\n // Un-Tilt\n var bm, bq, yt;\n yt = 1 / (this.pn1 - p.y * this.sw);\n bm = this.pn1 * p.x * yt;\n bq = this.pn1 * p.y * this.cw * yt;\n p.x = bm * this.cg + bq * this.sg;\n p.y = bq * this.cg - bm * this.sg;\n\n var rh = hypot(p.x, p.y);\n if (Math.abs(rh) < EPSLN) {\n r.x = 0;\n r.y = p.y;\n } else {\n var cosz, sinz;\n sinz = 1 - rh * rh * this.pfact;\n sinz = (this.p - Math.sqrt(sinz)) / (this.pn1 / rh + rh / this.pn1);\n cosz = Math.sqrt(1 - sinz * sinz);\n switch (this.mode) {\n case mode.OBLIQ:\n r.y = Math.asin(cosz * this.sinph0 + p.y * sinz * this.cosph0 / rh);\n p.y = (cosz - this.sinph0 * Math.sin(r.y)) * rh;\n p.x *= sinz * this.cosph0;\n break;\n case mode.EQUIT:\n r.y = Math.asin(p.y * sinz / rh);\n p.y = cosz * rh;\n p.x *= sinz;\n break;\n case mode.N_POLE:\n r.y = Math.asin(cosz);\n p.y = -p.y;\n break;\n case mode.S_POLE:\n r.y = -Math.asin(cosz);\n break;\n }\n r.x = Math.atan2(p.x, p.y);\n }\n\n p.x = r.x + this.long0;\n p.y = r.y;\n return p;\n}\n\nexport var names = [\"Tilted_Perspective\", \"tpers\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names\n};\n","import hypot from '../common/hypot';\n\nexport function init() {\n this.flip_axis = (this.sweep === 'x' ? 1 : 0);\n this.h = Number(this.h);\n this.radius_g_1 = this.h / this.a;\n\n if (this.radius_g_1 <= 0 || this.radius_g_1 > 1e10) {\n throw new Error();\n }\n\n this.radius_g = 1.0 + this.radius_g_1;\n this.C = this.radius_g * this.radius_g - 1.0;\n\n if (this.es !== 0.0) {\n var one_es = 1.0 - this.es;\n var rone_es = 1 / one_es;\n\n this.radius_p = Math.sqrt(one_es);\n this.radius_p2 = one_es;\n this.radius_p_inv2 = rone_es;\n\n this.shape = 'ellipse'; // Use as a condition in the forward and inverse functions.\n } else {\n this.radius_p = 1.0;\n this.radius_p2 = 1.0;\n this.radius_p_inv2 = 1.0;\n\n this.shape = 'sphere'; // Use as a condition in the forward and inverse functions.\n }\n\n if (!this.title) {\n this.title = \"Geostationary Satellite View\";\n }\n}\n\nfunction forward(p) {\n var lon = p.x;\n var lat = p.y;\n var tmp, v_x, v_y, v_z;\n lon = lon - this.long0;\n\n if (this.shape === 'ellipse') {\n lat = Math.atan(this.radius_p2 * Math.tan(lat));\n var r = this.radius_p / hypot(this.radius_p * Math.cos(lat), Math.sin(lat));\n\n v_x = r * Math.cos(lon) * Math.cos(lat);\n v_y = r * Math.sin(lon) * Math.cos(lat);\n v_z = r * Math.sin(lat);\n\n if (((this.radius_g - v_x) * v_x - v_y * v_y - v_z * v_z * this.radius_p_inv2) < 0.0) {\n p.x = Number.NaN;\n p.y = Number.NaN;\n return p;\n }\n\n tmp = this.radius_g - v_x;\n if (this.flip_axis) {\n p.x = this.radius_g_1 * Math.atan(v_y / hypot(v_z, tmp));\n p.y = this.radius_g_1 * Math.atan(v_z / tmp);\n } else {\n p.x = this.radius_g_1 * Math.atan(v_y / tmp);\n p.y = this.radius_g_1 * Math.atan(v_z / hypot(v_y, tmp));\n }\n } else if (this.shape === 'sphere') {\n tmp = Math.cos(lat);\n v_x = Math.cos(lon) * tmp;\n v_y = Math.sin(lon) * tmp;\n v_z = Math.sin(lat);\n tmp = this.radius_g - v_x;\n\n if (this.flip_axis) {\n p.x = this.radius_g_1 * Math.atan(v_y / hypot(v_z, tmp));\n p.y = this.radius_g_1 * Math.atan(v_z / tmp);\n } else {\n p.x = this.radius_g_1 * Math.atan(v_y / tmp);\n p.y = this.radius_g_1 * Math.atan(v_z / hypot(v_y, tmp));\n }\n }\n p.x = p.x * this.a;\n p.y = p.y * this.a;\n return p;\n}\n\nfunction inverse(p) {\n var v_x = -1.0;\n var v_y = 0.0;\n var v_z = 0.0;\n var a, b, det, k;\n\n p.x = p.x / this.a;\n p.y = p.y / this.a;\n\n if (this.shape === 'ellipse') {\n if (this.flip_axis) {\n v_z = Math.tan(p.y / this.radius_g_1);\n v_y = Math.tan(p.x / this.radius_g_1) * hypot(1.0, v_z);\n } else {\n v_y = Math.tan(p.x / this.radius_g_1);\n v_z = Math.tan(p.y / this.radius_g_1) * hypot(1.0, v_y);\n }\n\n var v_zp = v_z / this.radius_p;\n a = v_y * v_y + v_zp * v_zp + v_x * v_x;\n b = 2 * this.radius_g * v_x;\n det = (b * b) - 4 * a * this.C;\n\n if (det < 0.0) {\n p.x = Number.NaN;\n p.y = Number.NaN;\n return p;\n }\n\n k = (-b - Math.sqrt(det)) / (2.0 * a);\n v_x = this.radius_g + k * v_x;\n v_y *= k;\n v_z *= k;\n\n p.x = Math.atan2(v_y, v_x);\n p.y = Math.atan(v_z * Math.cos(p.x) / v_x);\n p.y = Math.atan(this.radius_p_inv2 * Math.tan(p.y));\n } else if (this.shape === 'sphere') {\n if (this.flip_axis) {\n v_z = Math.tan(p.y / this.radius_g_1);\n v_y = Math.tan(p.x / this.radius_g_1) * Math.sqrt(1.0 + v_z * v_z);\n } else {\n v_y = Math.tan(p.x / this.radius_g_1);\n v_z = Math.tan(p.y / this.radius_g_1) * Math.sqrt(1.0 + v_y * v_y);\n }\n\n a = v_y * v_y + v_z * v_z + v_x * v_x;\n b = 2 * this.radius_g * v_x;\n det = (b * b) - 4 * a * this.C;\n if (det < 0.0) {\n p.x = Number.NaN;\n p.y = Number.NaN;\n return p;\n }\n\n k = (-b - Math.sqrt(det)) / (2.0 * a);\n v_x = this.radius_g + k * v_x;\n v_y *= k;\n v_z *= k;\n\n p.x = Math.atan2(v_y, v_x);\n p.y = Math.atan(v_z * Math.cos(p.x) / v_x);\n }\n p.x = p.x + this.long0;\n return p;\n}\n\nexport var names = [\"Geostationary Satellite View\", \"Geostationary_Satellite\", \"geos\"];\nexport default {\n init: init,\n forward: forward,\n inverse: inverse,\n names: names,\n};\n\n","import proj4 from './core';\nimport Proj from \"./Proj\";\nimport Point from \"./Point\";\nimport common from \"./common/toPoint\";\nimport defs from \"./defs\";\nimport nadgrid from \"./nadgrid\";\nimport transform from \"./transform\";\nimport mgrs from \"mgrs\";\nimport includedProjections from \"../projs\";\n\nproj4.defaultDatum = 'WGS84'; //default datum\nproj4.Proj = Proj;\nproj4.WGS84 = new proj4.Proj('WGS84');\nproj4.Point = Point;\nproj4.toPoint = common;\nproj4.defs = defs;\nproj4.nadgrid = nadgrid;\nproj4.transform = transform;\nproj4.mgrs = mgrs;\nproj4.version = '__VERSION__';\nincludedProjections(proj4);\nexport default proj4;\n","import tmerc from './lib/projections/tmerc';\nimport etmerc from './lib/projections/etmerc';\nimport utm from './lib/projections/utm';\nimport sterea from './lib/projections/sterea';\nimport stere from './lib/projections/stere';\nimport somerc from './lib/projections/somerc';\nimport omerc from './lib/projections/omerc';\nimport lcc from './lib/projections/lcc';\nimport krovak from './lib/projections/krovak';\nimport cass from './lib/projections/cass';\nimport laea from './lib/projections/laea';\nimport aea from './lib/projections/aea';\nimport gnom from './lib/projections/gnom';\nimport cea from './lib/projections/cea';\nimport eqc from './lib/projections/eqc';\nimport poly from './lib/projections/poly';\nimport nzmg from './lib/projections/nzmg';\nimport mill from './lib/projections/mill';\nimport sinu from './lib/projections/sinu';\nimport moll from './lib/projections/moll';\nimport eqdc from './lib/projections/eqdc';\nimport vandg from './lib/projections/vandg';\nimport aeqd from './lib/projections/aeqd';\nimport ortho from './lib/projections/ortho';\nimport qsc from './lib/projections/qsc';\nimport robin from './lib/projections/robin';\nimport geocent from './lib/projections/geocent';\nimport tpers from './lib/projections/tpers';\nimport geos from './lib/projections/geos';\nexport default function(proj4){\n proj4.Proj.projections.add(tmerc);\n proj4.Proj.projections.add(etmerc);\n proj4.Proj.projections.add(utm);\n proj4.Proj.projections.add(sterea);\n proj4.Proj.projections.add(stere);\n proj4.Proj.projections.add(somerc);\n proj4.Proj.projections.add(omerc);\n proj4.Proj.projections.add(lcc);\n proj4.Proj.projections.add(krovak);\n proj4.Proj.projections.add(cass);\n proj4.Proj.projections.add(laea);\n proj4.Proj.projections.add(aea);\n proj4.Proj.projections.add(gnom);\n proj4.Proj.projections.add(cea);\n proj4.Proj.projections.add(eqc);\n proj4.Proj.projections.add(poly);\n proj4.Proj.projections.add(nzmg);\n proj4.Proj.projections.add(mill);\n proj4.Proj.projections.add(sinu);\n proj4.Proj.projections.add(moll);\n proj4.Proj.projections.add(eqdc);\n proj4.Proj.projections.add(vandg);\n proj4.Proj.projections.add(aeqd);\n proj4.Proj.projections.add(ortho);\n proj4.Proj.projections.add(qsc);\n proj4.Proj.projections.add(robin);\n proj4.Proj.projections.add(geocent);\n proj4.Proj.projections.add(tpers);\n proj4.Proj.projections.add(geos);\n}","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=t||self).RBush=i()}(this,function(){\"use strict\";function t(t,r,e,a,h){!function t(n,r,e,a,h){for(;a>e;){if(a-e>600){var o=a-e+1,s=r-e+1,l=Math.log(o),f=.5*Math.exp(2*l/3),u=.5*Math.sqrt(l*f*(o-f)/o)*(s-o/2<0?-1:1),m=Math.max(e,Math.floor(r-s*f/o+u)),c=Math.min(a,Math.floor(r+(o-s)*f/o+u));t(n,r,m,c,h)}var p=n[r],d=e,x=a;for(i(n,e,r),h(n[a],p)>0&&i(n,e,a);d0;)x--}0===h(n[e],p)?i(n,e,x):i(n,++x,a),x<=r&&(e=x+1),r<=x&&(a=x-1)}}(t,r,e||0,a||t.length-1,h||n)}function i(t,i,n){var r=t[i];t[i]=t[n],t[n]=r}function n(t,i){return ti?1:0}var r=function(t){void 0===t&&(t=9),this._maxEntries=Math.max(4,t),this._minEntries=Math.max(2,Math.ceil(.4*this._maxEntries)),this.clear()};function e(t,i,n){if(!n)return i.indexOf(t);for(var r=0;r=t.minX&&i.maxY>=t.minY}function p(t){return{children:t,height:1,leaf:!0,minX:1/0,minY:1/0,maxX:-1/0,maxY:-1/0}}function d(i,n,r,e,a){for(var h=[n,r];h.length;)if(!((r=h.pop())-(n=h.pop())<=e)){var o=n+Math.ceil((r-n)/e/2)*e;t(i,o,n,r,a),h.push(n,o,o,r)}}return r.prototype.all=function(){return this._all(this.data,[])},r.prototype.search=function(t){var i=this.data,n=[];if(!c(t,i))return n;for(var r=this.toBBox,e=[];i;){for(var a=0;a=0&&e[i].children.length>this._maxEntries;)this._split(e,i),i--;this._adjustParentBBoxes(r,e,i)},r.prototype._split=function(t,i){var n=t[i],r=n.children.length,e=this._minEntries;this._chooseSplitAxis(n,e,r);var h=this._chooseSplitIndex(n,e,r),o=p(n.children.splice(h,n.children.length-h));o.height=n.height,o.leaf=n.leaf,a(n,this.toBBox),a(o,this.toBBox),i?t[i-1].children.push(o):this._splitRoot(n,o)},r.prototype._splitRoot=function(t,i){this.data=p([t,i]),this.data.height=t.height+1,this.data.leaf=!1,a(this.data,this.toBBox)},r.prototype._chooseSplitIndex=function(t,i,n){for(var r,e,a,o,s,l,u,m=1/0,c=1/0,p=i;p<=n-i;p++){var d=h(t,0,p,this.toBBox),x=h(t,p,n,this.toBBox),v=(e=d,a=x,o=void 0,s=void 0,l=void 0,u=void 0,o=Math.max(e.minX,a.minX),s=Math.max(e.minY,a.minY),l=Math.min(e.maxX,a.maxX),u=Math.min(e.maxY,a.maxY),Math.max(0,l-o)*Math.max(0,u-s)),M=f(d)+f(x);v=i;c--){var p=t.children[c];o(s,t.leaf?e(p):p),l+=u(s)}return l},r.prototype._adjustParentBBoxes=function(t,i,n){for(var r=n;r>=0;r--)o(i[r],t)},r.prototype._condense=function(t){for(var i=t.length-1,n=void 0;i>=0;i--)0===t[i].children.length?i>0?(n=t[i-1].children).splice(n.indexOf(t[i]),1):this.clear():a(t[i],this.toBBox)},r});\n","const indexOfMatch = require(\"./index-of-match.js\");\n\nfunction findTagByName(xml, tagName, options) {\n const debug = (options && options.debug) || false;\n\n const startIndex = (options && options.startIndex) || 0;\n\n if (debug) console.log(\"starting findTagByName with\", tagName, \" and \", options);\n\n const start = indexOfMatch(xml, `\\<${tagName}[ \\>]`, startIndex);\n if (debug) console.log(\"start:\", start);\n if (start === -1) return undefined;\n\n const afterStart = xml.slice(start + tagName.length);\n let relativeEnd = indexOfMatch(afterStart, \"[ /]\" + tagName + \">\", 0);\n const selfClosing = relativeEnd === -1;\n\n if (selfClosing) {\n relativeEnd = indexOfMatch(afterStart, \"[ /]>\", 0);\n }\n\n const end = start + tagName.length + relativeEnd + 1 + (selfClosing ? 0 : tagName.length) + 1;\n if (debug) console.log(\"end:\", end);\n if (end === -1) return undefined;\n\n const outer = xml.slice(start, end);\n // tag is like urn:ogc:def:crs:EPSG::32617\n\n let inner;\n if (selfClosing) {\n inner = null;\n } else {\n inner = outer.slice(outer.indexOf(\">\") + 1, outer.lastIndexOf(\"<\"));\n }\n\n return { inner, outer, start, end };\n}\n\nmodule.exports = findTagByName;\n","const findTagByName = require(\"./find-tag-by-name.js\");\n\nfunction findTagsByName(xml, tagName, options) {\n const tags = [];\n const debug = (options && options.debug) || false;\n let startIndex = (options && options.startIndex) || 0;\n let tag;\n while ((tag = findTagByName(xml, tagName, { debug, startIndex }))) {\n startIndex = tag.end;\n tags.push(tag);\n }\n if (debug) console.log(\"findTagsByName found\", tags.length, \"tags\");\n return tags;\n}\n\nmodule.exports = findTagsByName;\n","function getAttribute(tag, attributeName, options) {\n const debug = (options && options.debug) || false;\n if (debug) console.log(\"getting \" + attributeName + \" in \" + tag);\n\n const xml = typeof tag === \"object\" ? tag.outer : tag;\n\n const pattern = `${attributeName}\\\\=\"\\([^\"]*\\)\"`;\n if (debug) console.log(\"pattern:\", pattern);\n\n const re = new RegExp(pattern);\n const match = re.exec(xml);\n if (debug) console.log(\"match:\", match);\n if (match) return match[1];\n}\n\nmodule.exports = getAttribute;\n","function indexOfMatch(xml, pattern, startIndex) {\n const re = new RegExp(pattern);\n const match = re.exec(xml.slice(startIndex));\n if (match) return startIndex + match.index;\n else return -1;\n}\n\nmodule.exports = indexOfMatch;\n","\n export function create() {\n const source = \"const e=\\\"GENERATE_POLYGON_BUFFERS\\\",t=\\\"GENERATE_POINT_BUFFERS\\\",n=\\\"GENERATE_LINE_STRING_BUFFERS\\\";function r(e,t){const n=t[0],r=t[1];return t[0]=e[0]*n+e[2]*r+e[4],t[1]=e[1]*n+e[3]*r+e[5],t}function x(e,t){const n=(r=t)[0]*r[3]-r[1]*r[2];var r;!function(e,t){if(!e)throw new Error(t)}(0!==n,\\\"Transformation matrix cannot be inverted\\\");const x=t[0],i=t[1],u=t[2],o=t[3],f=t[4],s=t[5];return e[0]=o/n,e[1]=-i/n,e[2]=-u/n,e[3]=x/n,e[4]=(u*s-o*f)/n,e[5]=-(x*s-i*f)/n,e}function i(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,\\\"default\\\")?e.default:e}new Array(6);var u={exports:{}};function o(e,t,n){n=n||2;var r,x,i,u,o,s,l,v=t&&t.length,c=v?t[0]*n:e.length,h=f(e,0,c,n,!0),g=[];if(!h||h.next===h.prev)return g;if(v&&(h=function(e,t,n,r){var x,i,u,o=[];for(x=0,i=t.length;x80*n){r=i=e[0],x=u=e[1];for(var b=n;bi&&(i=o),s>u&&(u=s);l=0!==(l=Math.max(i-r,u-x))?32767/l:0}return a(h,g,n,r,x,l,0),g}function f(e,t,n,r,x){var i,u;if(x===O(e,t,n,r)>0)for(i=t;i=t;i-=r)u=P(i,e[i],e[i+1],u);return u&&m(u,u.next)&&(B(u),u=u.next),u}function s(e,t){if(!e)return e;t||(t=e);var n,r=e;do{if(n=!1,r.steiner||!m(r,r.next)&&0!==M(r.prev,r,r.next))r=r.next;else{if(B(r),(r=t=r.prev)===r.next)break;n=!0}}while(n||r!==t);return t}function a(e,t,n,r,x,i,u){if(e){!u&&i&&function(e,t,n,r){var x=e;do{0===x.z&&(x.z=b(x.x,x.y,t,n,r)),x.prevZ=x.prev,x.nextZ=x.next,x=x.next}while(x!==e);x.prevZ.nextZ=null,x.prevZ=null,function(e){var t,n,r,x,i,u,o,f,s=1;do{for(n=e,e=null,i=null,u=0;n;){for(u++,r=n,o=0,t=0;t0||f>0&&r;)0!==o&&(0===f||!r||n.z<=r.z)?(x=n,n=n.nextZ,o--):(x=r,r=r.nextZ,f--),i?i.nextZ=x:e=x,x.prevZ=i,i=x;n=r}i.nextZ=null,s*=2}while(u>1)}(x)}(e,r,x,i);for(var o,f,p=e;e.prev!==e.next;)if(o=e.prev,f=e.next,i?v(e,r,x,i):l(e))t.push(o.i/n|0),t.push(e.i/n|0),t.push(f.i/n|0),B(e),e=f.next,p=f.next;else if((e=f)===p){u?1===u?a(e=c(s(e),t,n),t,n,r,x,i,2):2===u&&h(e,t,n,r,x,i):a(s(e),t,n,r,x,i,1);break}}}function l(e){var t=e.prev,n=e,r=e.next;if(M(t,n,r)>=0)return!1;for(var x=t.x,i=n.x,u=r.x,o=t.y,f=n.y,s=r.y,a=xi?x>u?x:u:i>u?i:u,c=o>f?o>s?o:s:f>s?f:s,h=r.next;h!==t;){if(h.x>=a&&h.x<=v&&h.y>=l&&h.y<=c&&Z(x,o,i,f,u,s,h.x,h.y)&&M(h.prev,h,h.next)>=0)return!1;h=h.next}return!0}function v(e,t,n,r){var x=e.prev,i=e,u=e.next;if(M(x,i,u)>=0)return!1;for(var o=x.x,f=i.x,s=u.x,a=x.y,l=i.y,v=u.y,c=of?o>s?o:s:f>s?f:s,y=a>l?a>v?a:v:l>v?l:v,g=b(c,h,t,n,r),d=b(p,y,t,n,r),w=e.prevZ,m=e.nextZ;w&&w.z>=g&&m&&m.z<=d;){if(w.x>=c&&w.x<=p&&w.y>=h&&w.y<=y&&w!==x&&w!==u&&Z(o,a,f,l,s,v,w.x,w.y)&&M(w.prev,w,w.next)>=0)return!1;if(w=w.prevZ,m.x>=c&&m.x<=p&&m.y>=h&&m.y<=y&&m!==x&&m!==u&&Z(o,a,f,l,s,v,m.x,m.y)&&M(m.prev,m,m.next)>=0)return!1;m=m.nextZ}for(;w&&w.z>=g;){if(w.x>=c&&w.x<=p&&w.y>=h&&w.y<=y&&w!==x&&w!==u&&Z(o,a,f,l,s,v,w.x,w.y)&&M(w.prev,w,w.next)>=0)return!1;w=w.prevZ}for(;m&&m.z<=d;){if(m.x>=c&&m.x<=p&&m.y>=h&&m.y<=y&&m!==x&&m!==u&&Z(o,a,f,l,s,v,m.x,m.y)&&M(m.prev,m,m.next)>=0)return!1;m=m.nextZ}return!0}function c(e,t,n){var r=e;do{var x=r.prev,i=r.next.next;!m(x,i)&&A(x,r,r.next,i)&&F(x,i)&&F(i,x)&&(t.push(x.i/n|0),t.push(r.i/n|0),t.push(i.i/n|0),B(r),B(r.next),r=e=i),r=r.next}while(r!==e);return s(r)}function h(e,t,n,r,x,i){var u=e;do{for(var o=u.next.next;o!==u.prev;){if(u.i!==o.i&&w(u,o)){var f=I(u,o);return u=s(u,u.next),f=s(f,f.next),a(u,t,n,r,x,i,0),void a(f,t,n,r,x,i,0)}o=o.next}u=u.next}while(u!==e)}function p(e,t){return e.x-t.x}function y(e,t){var n=function(e,t){var n,r=t,x=e.x,i=e.y,u=-1/0;do{if(i<=r.y&&i>=r.next.y&&r.next.y!==r.y){var o=r.x+(i-r.y)*(r.next.x-r.x)/(r.next.y-r.y);if(o<=x&&o>u&&(u=o,n=r.x=r.x&&r.x>=a&&x!==r.x&&Z(in.x||r.x===n.x&&g(n,r)))&&(n=r,v=f)),r=r.next}while(r!==s);return n}(e,t);if(!n)return t;var r=I(n,e);return s(r,r.next),s(n,n.next)}function g(e,t){return M(e.prev,e,t.prev)<0&&M(t.next,e,e.next)<0}function b(e,t,n,r,x){return(e=1431655765&((e=858993459&((e=252645135&((e=16711935&((e=(e-n)*x|0)|e<<8))|e<<4))|e<<2))|e<<1))|(t=1431655765&((t=858993459&((t=252645135&((t=16711935&((t=(t-r)*x|0)|t<<8))|t<<4))|t<<2))|t<<1))<<1}function d(e){var t=e,n=e;do{(t.x=(e-u)*(i-o)&&(e-u)*(r-o)>=(n-u)*(t-o)&&(n-u)*(i-o)>=(x-u)*(r-o)}function w(e,t){return e.next.i!==t.i&&e.prev.i!==t.i&&!function(e,t){var n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&A(n,n.next,e,t))return!0;n=n.next}while(n!==e);return!1}(e,t)&&(F(e,t)&&F(t,e)&&function(e,t){var n=e,r=!1,x=(e.x+t.x)/2,i=(e.y+t.y)/2;do{n.y>i!=n.next.y>i&&n.next.y!==n.y&&x<(n.next.x-n.x)*(i-n.y)/(n.next.y-n.y)+n.x&&(r=!r),n=n.next}while(n!==e);return r}(e,t)&&(M(e.prev,e,t.prev)||M(e,t.prev,t))||m(e,t)&&M(e.prev,e,e.next)>0&&M(t.prev,t,t.next)>0)}function M(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function m(e,t){return e.x===t.x&&e.y===t.y}function A(e,t,n,r){var x=z(M(e,t,n)),i=z(M(e,t,r)),u=z(M(n,r,e)),o=z(M(n,r,t));return x!==i&&u!==o||(!(0!==x||!E(e,n,t))||(!(0!==i||!E(e,r,t))||(!(0!==u||!E(n,e,r))||!(0!==o||!E(n,t,r)))))}function E(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function z(e){return e>0?1:e<0?-1:0}function F(e,t){return M(e.prev,e,e.next)<0?M(e,t,e.next)>=0&&M(e,e.prev,t)>=0:M(e,t,e.prev)<0||M(e,e.next,t)<0}function I(e,t){var n=new _(e.i,e.x,e.y),r=new _(t.i,t.x,t.y),x=e.next,i=t.prev;return e.next=t,t.prev=e,n.next=x,x.prev=n,r.next=n,n.prev=r,i.next=r,r.prev=i,r}function P(e,t,n,r){var x=new _(e,t,n);return r?(x.next=r.next,x.prev=r,r.next.prev=x,r.next=x):(x.prev=x,x.next=x),x}function B(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function _(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}function O(e,t,n,r){for(var x=0,i=t,u=n-r;i0&&(r+=e[x-1].length,n.holes.push(r))}return n};var N=i(u.exports);const R=[],S={vertexPosition:0,indexPosition:0};function T(e,t,n,r,x){e[t+0]=n,e[t+1]=r,e[t+2]=x}function U(e,t,n,r,x,i){const u=3+x,o=e[t+0],f=e[t+1],s=R;s.length=x;for(let n=0;n0?f:2*Math.PI-f}let b=-1,d=-1;const Z=null!==i;if(null!==x){b=g(p,y,r(s,[...[e[x],e[x+1]]]))}if(Z){d=g(y,p,r(s,[...[e[i],e[i+1]]]))}return u.push(c[0],c[1],h[0],h[1],b,d,a,0),u.push(...f),u.push(c[0],c[1],h[0],h[1],b,d,a,1),u.push(...f),u.push(c[0],c[1],h[0],h[1],b,d,a,2),u.push(...f),u.push(c[0],c[1],h[0],h[1],b,d,a,3),u.push(...f),o.push(v,v+1,v+2,v+1,v+3,v+2),a+Math.sqrt((y[0]-p[0])*(y[0]-p[0])+(y[1]-p[1])*(y[1]-p[1]))}function G(e,t,n,r,x){const i=2+x;let u=t;const o=e.slice(u,u+x);u+=x;const f=e[u++];let s=0;const a=new Array(f-1);for(let t=0;t{const i=r.data;switch(i.type){case t:{const e=3,t=2,n=i.customAttributesSize,r=t+n,x=new Float32Array(i.renderInstructions),u=x.length/r,o=4*u*(n+e),f=new Uint32Array(6*u),s=new Float32Array(o);let a;for(let e=0;e0?c=o+(n-1)*r:l&&(c=i-r);let h=null;n, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n 'transparent': [\n 0,\n 0,\n 0,\n 0\n ],\n 'aliceblue': [\n 240,\n 248,\n 255,\n 1\n ],\n 'antiquewhite': [\n 250,\n 235,\n 215,\n 1\n ],\n 'aqua': [\n 0,\n 255,\n 255,\n 1\n ],\n 'aquamarine': [\n 127,\n 255,\n 212,\n 1\n ],\n 'azure': [\n 240,\n 255,\n 255,\n 1\n ],\n 'beige': [\n 245,\n 245,\n 220,\n 1\n ],\n 'bisque': [\n 255,\n 228,\n 196,\n 1\n ],\n 'black': [\n 0,\n 0,\n 0,\n 1\n ],\n 'blanchedalmond': [\n 255,\n 235,\n 205,\n 1\n ],\n 'blue': [\n 0,\n 0,\n 255,\n 1\n ],\n 'blueviolet': [\n 138,\n 43,\n 226,\n 1\n ],\n 'brown': [\n 165,\n 42,\n 42,\n 1\n ],\n 'burlywood': [\n 222,\n 184,\n 135,\n 1\n ],\n 'cadetblue': [\n 95,\n 158,\n 160,\n 1\n ],\n 'chartreuse': [\n 127,\n 255,\n 0,\n 1\n ],\n 'chocolate': [\n 210,\n 105,\n 30,\n 1\n ],\n 'coral': [\n 255,\n 127,\n 80,\n 1\n ],\n 'cornflowerblue': [\n 100,\n 149,\n 237,\n 1\n ],\n 'cornsilk': [\n 255,\n 248,\n 220,\n 1\n ],\n 'crimson': [\n 220,\n 20,\n 60,\n 1\n ],\n 'cyan': [\n 0,\n 255,\n 255,\n 1\n ],\n 'darkblue': [\n 0,\n 0,\n 139,\n 1\n ],\n 'darkcyan': [\n 0,\n 139,\n 139,\n 1\n ],\n 'darkgoldenrod': [\n 184,\n 134,\n 11,\n 1\n ],\n 'darkgray': [\n 169,\n 169,\n 169,\n 1\n ],\n 'darkgreen': [\n 0,\n 100,\n 0,\n 1\n ],\n 'darkgrey': [\n 169,\n 169,\n 169,\n 1\n ],\n 'darkkhaki': [\n 189,\n 183,\n 107,\n 1\n ],\n 'darkmagenta': [\n 139,\n 0,\n 139,\n 1\n ],\n 'darkolivegreen': [\n 85,\n 107,\n 47,\n 1\n ],\n 'darkorange': [\n 255,\n 140,\n 0,\n 1\n ],\n 'darkorchid': [\n 153,\n 50,\n 204,\n 1\n ],\n 'darkred': [\n 139,\n 0,\n 0,\n 1\n ],\n 'darksalmon': [\n 233,\n 150,\n 122,\n 1\n ],\n 'darkseagreen': [\n 143,\n 188,\n 143,\n 1\n ],\n 'darkslateblue': [\n 72,\n 61,\n 139,\n 1\n ],\n 'darkslategray': [\n 47,\n 79,\n 79,\n 1\n ],\n 'darkslategrey': [\n 47,\n 79,\n 79,\n 1\n ],\n 'darkturquoise': [\n 0,\n 206,\n 209,\n 1\n ],\n 'darkviolet': [\n 148,\n 0,\n 211,\n 1\n ],\n 'deeppink': [\n 255,\n 20,\n 147,\n 1\n ],\n 'deepskyblue': [\n 0,\n 191,\n 255,\n 1\n ],\n 'dimgray': [\n 105,\n 105,\n 105,\n 1\n ],\n 'dimgrey': [\n 105,\n 105,\n 105,\n 1\n ],\n 'dodgerblue': [\n 30,\n 144,\n 255,\n 1\n ],\n 'firebrick': [\n 178,\n 34,\n 34,\n 1\n ],\n 'floralwhite': [\n 255,\n 250,\n 240,\n 1\n ],\n 'forestgreen': [\n 34,\n 139,\n 34,\n 1\n ],\n 'fuchsia': [\n 255,\n 0,\n 255,\n 1\n ],\n 'gainsboro': [\n 220,\n 220,\n 220,\n 1\n ],\n 'ghostwhite': [\n 248,\n 248,\n 255,\n 1\n ],\n 'gold': [\n 255,\n 215,\n 0,\n 1\n ],\n 'goldenrod': [\n 218,\n 165,\n 32,\n 1\n ],\n 'gray': [\n 128,\n 128,\n 128,\n 1\n ],\n 'green': [\n 0,\n 128,\n 0,\n 1\n ],\n 'greenyellow': [\n 173,\n 255,\n 47,\n 1\n ],\n 'grey': [\n 128,\n 128,\n 128,\n 1\n ],\n 'honeydew': [\n 240,\n 255,\n 240,\n 1\n ],\n 'hotpink': [\n 255,\n 105,\n 180,\n 1\n ],\n 'indianred': [\n 205,\n 92,\n 92,\n 1\n ],\n 'indigo': [\n 75,\n 0,\n 130,\n 1\n ],\n 'ivory': [\n 255,\n 255,\n 240,\n 1\n ],\n 'khaki': [\n 240,\n 230,\n 140,\n 1\n ],\n 'lavender': [\n 230,\n 230,\n 250,\n 1\n ],\n 'lavenderblush': [\n 255,\n 240,\n 245,\n 1\n ],\n 'lawngreen': [\n 124,\n 252,\n 0,\n 1\n ],\n 'lemonchiffon': [\n 255,\n 250,\n 205,\n 1\n ],\n 'lightblue': [\n 173,\n 216,\n 230,\n 1\n ],\n 'lightcoral': [\n 240,\n 128,\n 128,\n 1\n ],\n 'lightcyan': [\n 224,\n 255,\n 255,\n 1\n ],\n 'lightgoldenrodyellow': [\n 250,\n 250,\n 210,\n 1\n ],\n 'lightgray': [\n 211,\n 211,\n 211,\n 1\n ],\n 'lightgreen': [\n 144,\n 238,\n 144,\n 1\n ],\n 'lightgrey': [\n 211,\n 211,\n 211,\n 1\n ],\n 'lightpink': [\n 255,\n 182,\n 193,\n 1\n ],\n 'lightsalmon': [\n 255,\n 160,\n 122,\n 1\n ],\n 'lightseagreen': [\n 32,\n 178,\n 170,\n 1\n ],\n 'lightskyblue': [\n 135,\n 206,\n 250,\n 1\n ],\n 'lightslategray': [\n 119,\n 136,\n 153,\n 1\n ],\n 'lightslategrey': [\n 119,\n 136,\n 153,\n 1\n ],\n 'lightsteelblue': [\n 176,\n 196,\n 222,\n 1\n ],\n 'lightyellow': [\n 255,\n 255,\n 224,\n 1\n ],\n 'lime': [\n 0,\n 255,\n 0,\n 1\n ],\n 'limegreen': [\n 50,\n 205,\n 50,\n 1\n ],\n 'linen': [\n 250,\n 240,\n 230,\n 1\n ],\n 'magenta': [\n 255,\n 0,\n 255,\n 1\n ],\n 'maroon': [\n 128,\n 0,\n 0,\n 1\n ],\n 'mediumaquamarine': [\n 102,\n 205,\n 170,\n 1\n ],\n 'mediumblue': [\n 0,\n 0,\n 205,\n 1\n ],\n 'mediumorchid': [\n 186,\n 85,\n 211,\n 1\n ],\n 'mediumpurple': [\n 147,\n 112,\n 219,\n 1\n ],\n 'mediumseagreen': [\n 60,\n 179,\n 113,\n 1\n ],\n 'mediumslateblue': [\n 123,\n 104,\n 238,\n 1\n ],\n 'mediumspringgreen': [\n 0,\n 250,\n 154,\n 1\n ],\n 'mediumturquoise': [\n 72,\n 209,\n 204,\n 1\n ],\n 'mediumvioletred': [\n 199,\n 21,\n 133,\n 1\n ],\n 'midnightblue': [\n 25,\n 25,\n 112,\n 1\n ],\n 'mintcream': [\n 245,\n 255,\n 250,\n 1\n ],\n 'mistyrose': [\n 255,\n 228,\n 225,\n 1\n ],\n 'moccasin': [\n 255,\n 228,\n 181,\n 1\n ],\n 'navajowhite': [\n 255,\n 222,\n 173,\n 1\n ],\n 'navy': [\n 0,\n 0,\n 128,\n 1\n ],\n 'oldlace': [\n 253,\n 245,\n 230,\n 1\n ],\n 'olive': [\n 128,\n 128,\n 0,\n 1\n ],\n 'olivedrab': [\n 107,\n 142,\n 35,\n 1\n ],\n 'orange': [\n 255,\n 165,\n 0,\n 1\n ],\n 'orangered': [\n 255,\n 69,\n 0,\n 1\n ],\n 'orchid': [\n 218,\n 112,\n 214,\n 1\n ],\n 'palegoldenrod': [\n 238,\n 232,\n 170,\n 1\n ],\n 'palegreen': [\n 152,\n 251,\n 152,\n 1\n ],\n 'paleturquoise': [\n 175,\n 238,\n 238,\n 1\n ],\n 'palevioletred': [\n 219,\n 112,\n 147,\n 1\n ],\n 'papayawhip': [\n 255,\n 239,\n 213,\n 1\n ],\n 'peachpuff': [\n 255,\n 218,\n 185,\n 1\n ],\n 'peru': [\n 205,\n 133,\n 63,\n 1\n ],\n 'pink': [\n 255,\n 192,\n 203,\n 1\n ],\n 'plum': [\n 221,\n 160,\n 221,\n 1\n ],\n 'powderblue': [\n 176,\n 224,\n 230,\n 1\n ],\n 'purple': [\n 128,\n 0,\n 128,\n 1\n ],\n 'rebeccapurple': [\n 102,\n 51,\n 153,\n 1\n ],\n 'red': [\n 255,\n 0,\n 0,\n 1\n ],\n 'rosybrown': [\n 188,\n 143,\n 143,\n 1\n ],\n 'royalblue': [\n 65,\n 105,\n 225,\n 1\n ],\n 'saddlebrown': [\n 139,\n 69,\n 19,\n 1\n ],\n 'salmon': [\n 250,\n 128,\n 114,\n 1\n ],\n 'sandybrown': [\n 244,\n 164,\n 96,\n 1\n ],\n 'seagreen': [\n 46,\n 139,\n 87,\n 1\n ],\n 'seashell': [\n 255,\n 245,\n 238,\n 1\n ],\n 'sienna': [\n 160,\n 82,\n 45,\n 1\n ],\n 'silver': [\n 192,\n 192,\n 192,\n 1\n ],\n 'skyblue': [\n 135,\n 206,\n 235,\n 1\n ],\n 'slateblue': [\n 106,\n 90,\n 205,\n 1\n ],\n 'slategray': [\n 112,\n 128,\n 144,\n 1\n ],\n 'slategrey': [\n 112,\n 128,\n 144,\n 1\n ],\n 'snow': [\n 255,\n 250,\n 250,\n 1\n ],\n 'springgreen': [\n 0,\n 255,\n 127,\n 1\n ],\n 'steelblue': [\n 70,\n 130,\n 180,\n 1\n ],\n 'tan': [\n 210,\n 180,\n 140,\n 1\n ],\n 'teal': [\n 0,\n 128,\n 128,\n 1\n ],\n 'thistle': [\n 216,\n 191,\n 216,\n 1\n ],\n 'tomato': [\n 255,\n 99,\n 71,\n 1\n ],\n 'turquoise': [\n 64,\n 224,\n 208,\n 1\n ],\n 'violet': [\n 238,\n 130,\n 238,\n 1\n ],\n 'wheat': [\n 245,\n 222,\n 179,\n 1\n ],\n 'white': [\n 255,\n 255,\n 255,\n 1\n ],\n 'whitesmoke': [\n 245,\n 245,\n 245,\n 1\n ],\n 'yellow': [\n 255,\n 255,\n 0,\n 1\n ],\n 'yellowgreen': [\n 154,\n 205,\n 50,\n 1\n ]\n};\nfunction clamp_css_byte(i) {\n // Clamp to integer 0 .. 255.\n i = Math.round(i);\n // Seems to be what Chrome does (vs truncation).\n return i < 0 ? 0 : i > 255 ? 255 : i;\n}\nfunction clamp_css_float(f) {\n // Clamp to float 0.0 .. 1.0.\n return f < 0 ? 0 : f > 1 ? 1 : f;\n}\nfunction parse_css_int(str) {\n // int or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_byte(parseFloat(str) / 100 * 255);\n return clamp_css_byte(parseInt(str));\n}\nfunction parse_css_float(str) {\n // float or percentage.\n if (str[str.length - 1] === '%')\n return clamp_css_float(parseFloat(str) / 100);\n return clamp_css_float(parseFloat(str));\n}\nfunction css_hue_to_rgb(m1, m2, h) {\n if (h < 0)\n h += 1;\n else if (h > 1)\n h -= 1;\n if (h * 6 < 1)\n return m1 + (m2 - m1) * h * 6;\n if (h * 2 < 1)\n return m2;\n if (h * 3 < 2)\n return m1 + (m2 - m1) * (2 / 3 - h) * 6;\n return m1;\n}\nfunction parseCSSColor(css_str) {\n // Remove all whitespace, not compliant, but should just be more accepting.\n var str = css_str.replace(/ /g, '').toLowerCase();\n // Color keywords (and transparent) lookup.\n if (str in kCSSColorTable)\n return kCSSColorTable[str].slice();\n // dup.\n // #abc and #abc123 syntax.\n if (str[0] === '#') {\n if (str.length === 4) {\n var iv = parseInt(str.substr(1), 16);\n // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 4095))\n return null;\n // Covers NaN.\n return [\n (iv & 3840) >> 4 | (iv & 3840) >> 8,\n iv & 240 | (iv & 240) >> 4,\n iv & 15 | (iv & 15) << 4,\n 1\n ];\n } else if (str.length === 7) {\n var iv = parseInt(str.substr(1), 16);\n // TODO(deanm): Stricter parsing.\n if (!(iv >= 0 && iv <= 16777215))\n return null;\n // Covers NaN.\n return [\n (iv & 16711680) >> 16,\n (iv & 65280) >> 8,\n iv & 255,\n 1\n ];\n }\n return null;\n }\n var op = str.indexOf('('), ep = str.indexOf(')');\n if (op !== -1 && ep + 1 === str.length) {\n var fname = str.substr(0, op);\n var params = str.substr(op + 1, ep - (op + 1)).split(',');\n var alpha = 1;\n // To allow case fallthrough.\n switch (fname) {\n case 'rgba':\n if (params.length !== 4)\n return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'rgb':\n if (params.length !== 3)\n return null;\n return [\n parse_css_int(params[0]),\n parse_css_int(params[1]),\n parse_css_int(params[2]),\n alpha\n ];\n case 'hsla':\n if (params.length !== 4)\n return null;\n alpha = parse_css_float(params.pop());\n // Fall through.\n case 'hsl':\n if (params.length !== 3)\n return null;\n var h = (parseFloat(params[0]) % 360 + 360) % 360 / 360;\n // 0 .. 1\n // NOTE(deanm): According to the CSS spec s/l should only be\n // percentages, but we don't bother and let float or percentage.\n var s = parse_css_float(params[1]);\n var l = parse_css_float(params[2]);\n var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n var m1 = l * 2 - m2;\n return [\n clamp_css_byte(css_hue_to_rgb(m1, m2, h + 1 / 3) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n clamp_css_byte(css_hue_to_rgb(m1, m2, h - 1 / 3) * 255),\n alpha\n ];\n default:\n return null;\n }\n }\n return null;\n}\ntry {\n parseCSSColor_1 = csscolorparser.parseCSSColor = parseCSSColor;\n} catch (e) {\n}\n\n// \n/**\n * An RGBA color value. Create instances from color strings using the static\n * method `Color.parse`. The constructor accepts RGB channel values in the range\n * `[0, 1]`, premultiplied by A.\n *\n * @param {number} r The red channel.\n * @param {number} g The green channel.\n * @param {number} b The blue channel.\n * @param {number} a The alpha channel.\n * @private\n */\nclass Color {\n constructor(r, g, b, a = 1) {\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n /**\n * Parses valid CSS color strings and returns a `Color` instance.\n * @returns A `Color` instance, or `undefined` if the input is not a valid color string.\n */\n static parse(input) {\n if (!input) {\n return undefined;\n }\n if (input instanceof Color) {\n return input;\n }\n if (typeof input !== 'string') {\n return undefined;\n }\n const rgba = parseCSSColor_1(input);\n if (!rgba) {\n return undefined;\n }\n return new Color(rgba[0] / 255 * rgba[3], rgba[1] / 255 * rgba[3], rgba[2] / 255 * rgba[3], rgba[3]);\n }\n /**\n * Returns an RGBA string representing the color value.\n *\n * @returns An RGBA string.\n * @example\n * var purple = new Color.parse('purple');\n * purple.toString; // = \"rgba(128,0,128,1)\"\n * var translucentGreen = new Color.parse('rgba(26, 207, 26, .73)');\n * translucentGreen.toString(); // = \"rgba(26,207,26,0.73)\"\n */\n toString() {\n const [r, g, b, a] = this.toArray();\n return `rgba(${ Math.round(r) },${ Math.round(g) },${ Math.round(b) },${ a })`;\n }\n /**\n * Returns an RGBA array of values representing the color, unpremultiplied by A.\n *\n * @returns An array of RGBA color values in the range [0, 255].\n */\n toArray() {\n const {r, g, b, a} = this;\n return a === 0 ? [\n 0,\n 0,\n 0,\n 0\n ] : [\n r * 255 / a,\n g * 255 / a,\n b * 255 / a,\n a\n ];\n }\n /**\n * Returns a RGBA array of float values representing the color, unpremultiplied by A.\n *\n * @returns An array of RGBA color values in the range [0, 1].\n */\n toArray01() {\n const {r, g, b, a} = this;\n return a === 0 ? [\n 0,\n 0,\n 0,\n 0\n ] : [\n r / a,\n g / a,\n b / a,\n a\n ];\n }\n /**\n * Returns an RGBA array of values representing the color, premultiplied by A.\n *\n * @returns An array of RGBA color values in the range [0, 1].\n */\n toArray01PremultipliedAlpha() {\n const {r, g, b, a} = this;\n return [\n r,\n g,\n b,\n a\n ];\n }\n}\nColor.black = new Color(0, 0, 0, 1);\nColor.white = new Color(1, 1, 1, 1);\nColor.transparent = new Color(0, 0, 0, 0);\nColor.red = new Color(1, 0, 0, 1);\nColor.blue = new Color(0, 0, 1, 1);\nvar Color$1 = Color;\n\nfunction convertLiteral(value) {\n return typeof value === 'object' ? [\n 'literal',\n value\n ] : value;\n}\nfunction convertFunction(parameters, propertySpec) {\n let stops = parameters.stops;\n if (!stops) {\n // identity function\n return convertIdentityFunction(parameters, propertySpec);\n }\n const zoomAndFeatureDependent = stops && typeof stops[0][0] === 'object';\n const featureDependent = zoomAndFeatureDependent || parameters.property !== undefined;\n const zoomDependent = zoomAndFeatureDependent || !featureDependent;\n stops = stops.map(stop => {\n if (!featureDependent && propertySpec.tokens && typeof stop[1] === 'string') {\n return [\n stop[0],\n convertTokenString(stop[1])\n ];\n }\n return [\n stop[0],\n convertLiteral(stop[1])\n ];\n });\n if (zoomAndFeatureDependent) {\n return convertZoomAndPropertyFunction(parameters, propertySpec, stops);\n } else if (zoomDependent) {\n return convertZoomFunction(parameters, propertySpec, stops);\n } else {\n return convertPropertyFunction(parameters, propertySpec, stops);\n }\n}\nfunction convertIdentityFunction(parameters, propertySpec) {\n const get = [\n 'get',\n parameters.property\n ];\n if (parameters.default === undefined) {\n // By default, expressions for string-valued properties get coerced. To preserve\n // legacy function semantics, insert an explicit assertion instead.\n return propertySpec.type === 'string' ? [\n 'string',\n get\n ] : get;\n } else if (propertySpec.type === 'enum') {\n return [\n 'match',\n get,\n Object.keys(propertySpec.values),\n get,\n parameters.default\n ];\n } else {\n const expression = [\n propertySpec.type === 'color' ? 'to-color' : propertySpec.type,\n get,\n convertLiteral(parameters.default)\n ];\n if (propertySpec.type === 'array') {\n expression.splice(1, 0, propertySpec.value, propertySpec.length || null);\n }\n return expression;\n }\n}\nfunction getInterpolateOperator(parameters) {\n switch (parameters.colorSpace) {\n case 'hcl':\n return 'interpolate-hcl';\n case 'lab':\n return 'interpolate-lab';\n default:\n return 'interpolate';\n }\n}\nfunction convertZoomAndPropertyFunction(parameters, propertySpec, stops) {\n const featureFunctionParameters = {};\n const featureFunctionStops = {};\n const zoomStops = [];\n for (let s = 0; s < stops.length; s++) {\n const stop = stops[s];\n const zoom = stop[0].zoom;\n if (featureFunctionParameters[zoom] === undefined) {\n featureFunctionParameters[zoom] = {\n zoom,\n type: parameters.type,\n property: parameters.property,\n default: parameters.default\n };\n featureFunctionStops[zoom] = [];\n zoomStops.push(zoom);\n }\n featureFunctionStops[zoom].push([\n stop[0].value,\n stop[1]\n ]);\n }\n // the interpolation type for the zoom dimension of a zoom-and-property\n // function is determined directly from the style property specification\n // for which it's being used: linear for interpolatable properties, step\n // otherwise.\n const functionType = getFunctionType({}, propertySpec);\n if (functionType === 'exponential') {\n const expression = [\n getInterpolateOperator(parameters),\n ['linear'],\n ['zoom']\n ];\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, false);\n }\n return expression;\n } else {\n const expression = [\n 'step',\n ['zoom']\n ];\n for (const z of zoomStops) {\n const output = convertPropertyFunction(featureFunctionParameters[z], propertySpec, featureFunctionStops[z]);\n appendStopPair(expression, z, output, true);\n }\n fixupDegenerateStepCurve(expression);\n return expression;\n }\n}\nfunction coalesce(a, b) {\n if (a !== undefined)\n return a;\n if (b !== undefined)\n return b;\n}\nfunction getFallback(parameters, propertySpec) {\n const defaultValue = convertLiteral(coalesce(parameters.default, propertySpec.default));\n /*\n * Some fields with type: resolvedImage have an undefined default.\n * Because undefined is an invalid value for resolvedImage, set fallback to\n * an empty string instead of undefined to ensure output\n * passes validation.\n */\n if (defaultValue === undefined && propertySpec.type === 'resolvedImage') {\n return '';\n }\n return defaultValue;\n}\nfunction convertPropertyFunction(parameters, propertySpec, stops) {\n const type = getFunctionType(parameters, propertySpec);\n const get = [\n 'get',\n parameters.property\n ];\n if (type === 'categorical' && typeof stops[0][0] === 'boolean') {\n const expression = ['case'];\n for (const stop of stops) {\n expression.push([\n '==',\n get,\n stop[0]\n ], stop[1]);\n }\n expression.push(getFallback(parameters, propertySpec));\n return expression;\n } else if (type === 'categorical') {\n const expression = [\n 'match',\n get\n ];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n expression.push(getFallback(parameters, propertySpec));\n return expression;\n } else if (type === 'interval') {\n const expression = [\n 'step',\n [\n 'number',\n get\n ]\n ];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], true);\n }\n fixupDegenerateStepCurve(expression);\n return parameters.default === undefined ? expression : [\n 'case',\n [\n '==',\n [\n 'typeof',\n get\n ],\n 'number'\n ],\n expression,\n convertLiteral(parameters.default)\n ];\n } else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n const expression = [\n getInterpolateOperator(parameters),\n base === 1 ? ['linear'] : [\n 'exponential',\n base\n ],\n [\n 'number',\n get\n ]\n ];\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], false);\n }\n return parameters.default === undefined ? expression : [\n 'case',\n [\n '==',\n [\n 'typeof',\n get\n ],\n 'number'\n ],\n expression,\n convertLiteral(parameters.default)\n ];\n } else {\n throw new Error(`Unknown property function type ${ type }`);\n }\n}\nfunction convertZoomFunction(parameters, propertySpec, stops, input = ['zoom']) {\n const type = getFunctionType(parameters, propertySpec);\n let expression;\n let isStep = false;\n if (type === 'interval') {\n expression = [\n 'step',\n input\n ];\n isStep = true;\n } else if (type === 'exponential') {\n const base = parameters.base !== undefined ? parameters.base : 1;\n expression = [\n getInterpolateOperator(parameters),\n base === 1 ? ['linear'] : [\n 'exponential',\n base\n ],\n input\n ];\n } else {\n throw new Error(`Unknown zoom function type \"${ type }\"`);\n }\n for (const stop of stops) {\n appendStopPair(expression, stop[0], stop[1], isStep);\n }\n fixupDegenerateStepCurve(expression);\n return expression;\n}\nfunction fixupDegenerateStepCurve(expression) {\n // degenerate step curve (i.e. a constant function): add a noop stop\n if (expression[0] === 'step' && expression.length === 3) {\n expression.push(0);\n expression.push(expression[3]);\n }\n}\nfunction appendStopPair(curve, input, output, isStep) {\n // Skip duplicate stop values. They were not validated for functions, but they are for expressions.\n // https://github.com/mapbox/mapbox-gl-js/issues/4107\n if (curve.length > 3 && input === curve[curve.length - 2]) {\n return;\n }\n // step curves don't get the first input value, as it is redundant.\n if (!(isStep && curve.length === 2)) {\n curve.push(input);\n }\n curve.push(output);\n}\nfunction getFunctionType(parameters, propertySpec) {\n if (parameters.type) {\n return parameters.type;\n } else {\n return propertySpec.expression.interpolated ? 'exponential' : 'interval';\n }\n}\n// \"String with {name} token\" => [\"concat\", \"String with \", [\"get\", \"name\"], \" token\"]\nfunction convertTokenString(s) {\n const result = ['concat'];\n const re = /{([^{}]+)}/g;\n let pos = 0;\n for (let match = re.exec(s); match !== null; match = re.exec(s)) {\n const literal = s.slice(pos, re.lastIndex - match[0].length);\n pos = re.lastIndex;\n if (literal.length > 0)\n result.push(literal);\n result.push([\n 'get',\n match[1]\n ]);\n }\n if (result.length === 1) {\n return s;\n }\n if (pos < s.length) {\n result.push(s.slice(pos));\n } else if (result.length === 2) {\n return [\n 'to-string',\n result[1]\n ];\n }\n return result;\n}\n\n// \nclass ParsingError extends Error {\n constructor(key, message) {\n super(message);\n this.message = message;\n this.key = key;\n }\n}\nvar ParsingError$1 = ParsingError;\n\n// \n/**\n * Tracks `let` bindings during expression parsing.\n * @private\n */\nclass Scope {\n constructor(parent, bindings = []) {\n this.parent = parent;\n this.bindings = {};\n for (const [name, expression] of bindings) {\n this.bindings[name] = expression;\n }\n }\n concat(bindings) {\n return new Scope(this, bindings);\n }\n get(name) {\n if (this.bindings[name]) {\n return this.bindings[name];\n }\n if (this.parent) {\n return this.parent.get(name);\n }\n throw new Error(`${ name } not found in scope.`);\n }\n has(name) {\n if (this.bindings[name])\n return true;\n return this.parent ? this.parent.has(name) : false;\n }\n}\nvar Scope$1 = Scope;\n\n// \nconst NullType = { kind: 'null' };\nconst NumberType = { kind: 'number' };\nconst StringType = { kind: 'string' };\nconst BooleanType = { kind: 'boolean' };\nconst ColorType = { kind: 'color' };\nconst ObjectType = { kind: 'object' };\nconst ValueType = { kind: 'value' };\nconst ErrorType = { kind: 'error' };\nconst CollatorType = { kind: 'collator' };\nconst FormattedType = { kind: 'formatted' };\nconst ResolvedImageType = { kind: 'resolvedImage' };\nfunction array$1(itemType, N) {\n return {\n kind: 'array',\n itemType,\n N\n };\n}\nfunction toString$1(type) {\n if (type.kind === 'array') {\n const itemType = toString$1(type.itemType);\n return typeof type.N === 'number' ? `array<${ itemType }, ${ type.N }>` : type.itemType.kind === 'value' ? 'array' : `array<${ itemType }>`;\n } else {\n return type.kind;\n }\n}\nconst valueMemberTypes = [\n NullType,\n NumberType,\n StringType,\n BooleanType,\n ColorType,\n FormattedType,\n ObjectType,\n array$1(ValueType),\n ResolvedImageType\n];\n/**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message.\n * @private\n */\nfunction checkSubtype(expected, t) {\n if (t.kind === 'error') {\n // Error is a subtype of every type\n return null;\n } else if (expected.kind === 'array') {\n if (t.kind === 'array' && (t.N === 0 && t.itemType.kind === 'value' || !checkSubtype(expected.itemType, t.itemType)) && (typeof expected.N !== 'number' || expected.N === t.N)) {\n return null;\n }\n } else if (expected.kind === t.kind) {\n return null;\n } else if (expected.kind === 'value') {\n for (const memberType of valueMemberTypes) {\n if (!checkSubtype(memberType, t)) {\n return null;\n }\n }\n }\n return `Expected ${ toString$1(expected) } but found ${ toString$1(t) } instead.`;\n}\nfunction isValidType(provided, allowedTypes) {\n return allowedTypes.some(t => t.kind === provided.kind);\n}\nfunction isValidNativeType(provided, allowedTypes) {\n return allowedTypes.some(t => {\n if (t === 'null') {\n return provided === null;\n } else if (t === 'array') {\n return Array.isArray(provided);\n } else if (t === 'object') {\n return provided && !Array.isArray(provided) && typeof provided === 'object';\n } else {\n return t === typeof provided;\n }\n });\n}\n\n// \n// Flow type declarations for Intl cribbed from\n// https://github.com/facebook/flow/issues/1270\nclass Collator {\n constructor(caseSensitive, diacriticSensitive, locale) {\n if (caseSensitive)\n this.sensitivity = diacriticSensitive ? 'variant' : 'case';\n else\n this.sensitivity = diacriticSensitive ? 'accent' : 'base';\n this.locale = locale;\n this.collator = new Intl.Collator(this.locale ? this.locale : [], {\n sensitivity: this.sensitivity,\n usage: 'search'\n });\n }\n compare(lhs, rhs) {\n return this.collator.compare(lhs, rhs);\n }\n resolvedLocale() {\n // We create a Collator without \"usage: search\" because we don't want\n // the search options encoded in our result (e.g. \"en-u-co-search\")\n return new Intl.Collator(this.locale ? this.locale : []).resolvedOptions().locale;\n }\n}\n\n// \nclass FormattedSection {\n constructor(text, image, scale, fontStack, textColor) {\n // combine characters so that diacritic marks are not separate code points\n this.text = text.normalize ? text.normalize() : text;\n this.image = image;\n this.scale = scale;\n this.fontStack = fontStack;\n this.textColor = textColor;\n }\n}\nclass Formatted {\n constructor(sections) {\n this.sections = sections;\n }\n static fromString(unformatted) {\n return new Formatted([new FormattedSection(unformatted, null, null, null, null)]);\n }\n isEmpty() {\n if (this.sections.length === 0)\n return true;\n return !this.sections.some(section => section.text.length !== 0 || section.image && section.image.name.length !== 0);\n }\n static factory(text) {\n if (text instanceof Formatted) {\n return text;\n } else {\n return Formatted.fromString(text);\n }\n }\n toString() {\n if (this.sections.length === 0)\n return '';\n return this.sections.map(section => section.text).join('');\n }\n serialize() {\n const serialized = ['format'];\n for (const section of this.sections) {\n if (section.image) {\n serialized.push([\n 'image',\n section.image.name\n ]);\n continue;\n }\n serialized.push(section.text);\n const options = {};\n if (section.fontStack) {\n options['text-font'] = [\n 'literal',\n section.fontStack.split(',')\n ];\n }\n if (section.scale) {\n options['font-scale'] = section.scale;\n }\n if (section.textColor) {\n options['text-color'] = ['rgba'].concat(section.textColor.toArray());\n }\n serialized.push(options);\n }\n return serialized;\n }\n}\n\n// \nclass ResolvedImage {\n constructor(options) {\n this.name = options.name;\n this.available = options.available;\n }\n toString() {\n return this.name;\n }\n static fromString(name) {\n if (!name)\n return null;\n // treat empty values as no image\n return new ResolvedImage({\n name,\n available: false\n });\n }\n serialize() {\n return [\n 'image',\n this.name\n ];\n }\n}\n\nfunction validateRGBA(r, g, b, a) {\n if (!(typeof r === 'number' && r >= 0 && r <= 255 && typeof g === 'number' && g >= 0 && g <= 255 && typeof b === 'number' && b >= 0 && b <= 255)) {\n const value = typeof a === 'number' ? [\n r,\n g,\n b,\n a\n ] : [\n r,\n g,\n b\n ];\n return `Invalid rgba value [${ value.join(', ') }]: 'r', 'g', and 'b' must be between 0 and 255.`;\n }\n if (!(typeof a === 'undefined' || typeof a === 'number' && a >= 0 && a <= 1)) {\n return `Invalid rgba value [${ [\n r,\n g,\n b,\n a\n ].join(', ') }]: 'a' must be between 0 and 1.`;\n }\n return null;\n}\nfunction isValue(mixed) {\n if (mixed === null) {\n return true;\n } else if (typeof mixed === 'string') {\n return true;\n } else if (typeof mixed === 'boolean') {\n return true;\n } else if (typeof mixed === 'number') {\n return true;\n } else if (mixed instanceof Color$1) {\n return true;\n } else if (mixed instanceof Collator) {\n return true;\n } else if (mixed instanceof Formatted) {\n return true;\n } else if (mixed instanceof ResolvedImage) {\n return true;\n } else if (Array.isArray(mixed)) {\n for (const item of mixed) {\n if (!isValue(item)) {\n return false;\n }\n }\n return true;\n } else if (typeof mixed === 'object') {\n for (const key in mixed) {\n if (!isValue(mixed[key])) {\n return false;\n }\n }\n return true;\n } else {\n return false;\n }\n}\nfunction typeOf(value) {\n if (value === null) {\n return NullType;\n } else if (typeof value === 'string') {\n return StringType;\n } else if (typeof value === 'boolean') {\n return BooleanType;\n } else if (typeof value === 'number') {\n return NumberType;\n } else if (value instanceof Color$1) {\n return ColorType;\n } else if (value instanceof Collator) {\n return CollatorType;\n } else if (value instanceof Formatted) {\n return FormattedType;\n } else if (value instanceof ResolvedImage) {\n return ResolvedImageType;\n } else if (Array.isArray(value)) {\n const length = value.length;\n let itemType;\n for (const item of value) {\n const t = typeOf(item);\n if (!itemType) {\n itemType = t;\n } else if (itemType === t) {\n continue;\n } else {\n itemType = ValueType;\n break;\n }\n }\n return array$1(itemType || ValueType, length);\n } else {\n return ObjectType;\n }\n}\nfunction toString(value) {\n const type = typeof value;\n if (value === null) {\n return '';\n } else if (type === 'string' || type === 'number' || type === 'boolean') {\n return String(value);\n } else if (value instanceof Color$1 || value instanceof Formatted || value instanceof ResolvedImage) {\n return value.toString();\n } else {\n return JSON.stringify(value);\n }\n}\n\nclass Literal {\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`'literal' expression requires exactly one argument, but found ${ args.length - 1 } instead.`);\n if (!isValue(args[1]))\n return context.error(`invalid value`);\n const value = args[1];\n let type = typeOf(value);\n // special case: infer the item type if possible for zero-length arrays\n const expected = context.expectedType;\n if (type.kind === 'array' && type.N === 0 && expected && expected.kind === 'array' && (typeof expected.N !== 'number' || expected.N === 0)) {\n type = expected;\n }\n return new Literal(type, value);\n }\n evaluate() {\n return this.value;\n }\n eachChild() {\n }\n outputDefined() {\n return true;\n }\n serialize() {\n if (this.type.kind === 'array' || this.type.kind === 'object') {\n return [\n 'literal',\n this.value\n ];\n } else if (this.value instanceof Color$1) {\n // Constant-folding can generate Literal expressions that you\n // couldn't actually generate with a \"literal\" expression,\n // so we have to implement an equivalent serialization here\n return ['rgba'].concat(this.value.toArray());\n } else if (this.value instanceof Formatted) {\n // Same as Color\n return this.value.serialize();\n } else {\n return this.value;\n }\n }\n}\nvar Literal$1 = Literal;\n\n// \nclass RuntimeError {\n constructor(message) {\n this.name = 'ExpressionEvaluationError';\n this.message = message;\n }\n toJSON() {\n return this.message;\n }\n}\nvar RuntimeError$1 = RuntimeError;\n\nconst types$2 = {\n string: StringType,\n number: NumberType,\n boolean: BooleanType,\n object: ObjectType\n};\nclass Assertion {\n constructor(type, args) {\n this.type = type;\n this.args = args;\n }\n static parse(args, context) {\n if (args.length < 2)\n return context.error(`Expected at least one argument.`);\n let i = 1;\n let type;\n const name = args[0];\n if (name === 'array') {\n let itemType;\n if (args.length > 2) {\n const type = args[1];\n if (typeof type !== 'string' || !(type in types$2) || type === 'object')\n return context.error('The item type argument of \"array\" must be one of string, number, boolean', 1);\n itemType = types$2[type];\n i++;\n } else {\n itemType = ValueType;\n }\n let N;\n if (args.length > 3) {\n if (args[2] !== null && (typeof args[2] !== 'number' || args[2] < 0 || args[2] !== Math.floor(args[2]))) {\n return context.error('The length argument to \"array\" must be a positive integer literal', 2);\n }\n N = args[2];\n i++;\n }\n type = array$1(itemType, N);\n } else {\n type = types$2[name];\n }\n const parsed = [];\n for (; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input)\n return null;\n parsed.push(input);\n }\n return new Assertion(type, parsed);\n }\n evaluate(ctx) {\n for (let i = 0; i < this.args.length; i++) {\n const value = this.args[i].evaluate(ctx);\n const error = checkSubtype(this.type, typeOf(value));\n if (!error) {\n return value;\n } else if (i === this.args.length - 1) {\n throw new RuntimeError$1(`Expected value to be of type ${ toString$1(this.type) }, but found ${ toString$1(typeOf(value)) } instead.`);\n }\n }\n return null;\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return this.args.every(arg => arg.outputDefined());\n }\n serialize() {\n const type = this.type;\n const serialized = [type.kind];\n if (type.kind === 'array') {\n const itemType = type.itemType;\n if (itemType.kind === 'string' || itemType.kind === 'number' || itemType.kind === 'boolean') {\n serialized.push(itemType.kind);\n const N = type.N;\n if (typeof N === 'number' || this.args.length > 1) {\n serialized.push(N);\n }\n }\n }\n return serialized.concat(this.args.map(arg => arg.serialize()));\n }\n}\nvar Assertion$1 = Assertion;\n\n// \nclass FormatExpression {\n constructor(sections) {\n this.type = FormattedType;\n this.sections = sections;\n }\n static parse(args, context) {\n if (args.length < 2) {\n return context.error(`Expected at least one argument.`);\n }\n const firstArg = args[1];\n if (!Array.isArray(firstArg) && typeof firstArg === 'object') {\n return context.error(`First argument must be an image or text section.`);\n }\n const sections = [];\n let nextTokenMayBeObject = false;\n for (let i = 1; i <= args.length - 1; ++i) {\n const arg = args[i];\n if (nextTokenMayBeObject && typeof arg === 'object' && !Array.isArray(arg)) {\n nextTokenMayBeObject = false;\n let scale = null;\n if (arg['font-scale']) {\n scale = context.parse(arg['font-scale'], 1, NumberType);\n if (!scale)\n return null;\n }\n let font = null;\n if (arg['text-font']) {\n font = context.parse(arg['text-font'], 1, array$1(StringType));\n if (!font)\n return null;\n }\n let textColor = null;\n if (arg['text-color']) {\n textColor = context.parse(arg['text-color'], 1, ColorType);\n if (!textColor)\n return null;\n }\n const lastExpression = sections[sections.length - 1];\n lastExpression.scale = scale;\n lastExpression.font = font;\n lastExpression.textColor = textColor;\n } else {\n const content = context.parse(args[i], 1, ValueType);\n if (!content)\n return null;\n const kind = content.type.kind;\n if (kind !== 'string' && kind !== 'value' && kind !== 'null' && kind !== 'resolvedImage')\n return context.error(`Formatted text type must be 'string', 'value', 'image' or 'null'.`);\n nextTokenMayBeObject = true;\n sections.push({\n content,\n scale: null,\n font: null,\n textColor: null\n });\n }\n }\n return new FormatExpression(sections);\n }\n evaluate(ctx) {\n const evaluateSection = section => {\n const evaluatedContent = section.content.evaluate(ctx);\n if (typeOf(evaluatedContent) === ResolvedImageType) {\n return new FormattedSection('', evaluatedContent, null, null, null);\n }\n return new FormattedSection(toString(evaluatedContent), null, section.scale ? section.scale.evaluate(ctx) : null, section.font ? section.font.evaluate(ctx).join(',') : null, section.textColor ? section.textColor.evaluate(ctx) : null);\n };\n return new Formatted(this.sections.map(evaluateSection));\n }\n eachChild(fn) {\n for (const section of this.sections) {\n fn(section.content);\n if (section.scale) {\n fn(section.scale);\n }\n if (section.font) {\n fn(section.font);\n }\n if (section.textColor) {\n fn(section.textColor);\n }\n }\n }\n outputDefined() {\n // Technically the combinatoric set of all children\n // Usually, this.text will be undefined anyway\n return false;\n }\n serialize() {\n const serialized = ['format'];\n for (const section of this.sections) {\n serialized.push(section.content.serialize());\n const options = {};\n if (section.scale) {\n options['font-scale'] = section.scale.serialize();\n }\n if (section.font) {\n options['text-font'] = section.font.serialize();\n }\n if (section.textColor) {\n options['text-color'] = section.textColor.serialize();\n }\n serialized.push(options);\n }\n return serialized;\n }\n}\n\n// \nclass ImageExpression {\n constructor(input) {\n this.type = ResolvedImageType;\n this.input = input;\n }\n static parse(args, context) {\n if (args.length !== 2) {\n return context.error(`Expected two arguments.`);\n }\n const name = context.parse(args[1], 1, StringType);\n if (!name)\n return context.error(`No image name provided.`);\n return new ImageExpression(name);\n }\n evaluate(ctx) {\n const evaluatedImageName = this.input.evaluate(ctx);\n const value = ResolvedImage.fromString(evaluatedImageName);\n if (value && ctx.availableImages)\n value.available = ctx.availableImages.indexOf(evaluatedImageName) > -1;\n return value;\n }\n eachChild(fn) {\n fn(this.input);\n }\n outputDefined() {\n // The output of image is determined by the list of available images in the evaluation context\n return false;\n }\n serialize() {\n return [\n 'image',\n this.input.serialize()\n ];\n }\n}\n\nconst types$1 = {\n 'to-boolean': BooleanType,\n 'to-color': ColorType,\n 'to-number': NumberType,\n 'to-string': StringType\n};\n/**\n * Special form for error-coalescing coercion expressions \"to-number\",\n * \"to-color\". Since these coercions can fail at runtime, they accept multiple\n * arguments, only evaluating one at a time until one succeeds.\n *\n * @private\n */\nclass Coercion {\n constructor(type, args) {\n this.type = type;\n this.args = args;\n }\n static parse(args, context) {\n if (args.length < 2)\n return context.error(`Expected at least one argument.`);\n const name = args[0];\n if ((name === 'to-boolean' || name === 'to-string') && args.length !== 2)\n return context.error(`Expected one argument.`);\n const type = types$1[name];\n const parsed = [];\n for (let i = 1; i < args.length; i++) {\n const input = context.parse(args[i], i, ValueType);\n if (!input)\n return null;\n parsed.push(input);\n }\n return new Coercion(type, parsed);\n }\n evaluate(ctx) {\n if (this.type.kind === 'boolean') {\n return Boolean(this.args[0].evaluate(ctx));\n } else if (this.type.kind === 'color') {\n let input;\n let error;\n for (const arg of this.args) {\n input = arg.evaluate(ctx);\n error = null;\n if (input instanceof Color$1) {\n return input;\n } else if (typeof input === 'string') {\n const c = ctx.parseColor(input);\n if (c)\n return c;\n } else if (Array.isArray(input)) {\n if (input.length < 3 || input.length > 4) {\n error = `Invalid rbga value ${ JSON.stringify(input) }: expected an array containing either three or four numeric values.`;\n } else {\n error = validateRGBA(input[0], input[1], input[2], input[3]);\n }\n if (!error) {\n return new Color$1(input[0] / 255, input[1] / 255, input[2] / 255, input[3]);\n }\n }\n }\n throw new RuntimeError$1(error || `Could not parse color from value '${ typeof input === 'string' ? input : String(JSON.stringify(input)) }'`);\n } else if (this.type.kind === 'number') {\n let value = null;\n for (const arg of this.args) {\n value = arg.evaluate(ctx);\n if (value === null)\n return 0;\n const num = Number(value);\n if (isNaN(num))\n continue;\n return num;\n }\n throw new RuntimeError$1(`Could not convert ${ JSON.stringify(value) } to number.`);\n } else if (this.type.kind === 'formatted') {\n // There is no explicit 'to-formatted' but this coercion can be implicitly\n // created by properties that expect the 'formatted' type.\n return Formatted.fromString(toString(this.args[0].evaluate(ctx)));\n } else if (this.type.kind === 'resolvedImage') {\n return ResolvedImage.fromString(toString(this.args[0].evaluate(ctx)));\n } else {\n return toString(this.args[0].evaluate(ctx));\n }\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return this.args.every(arg => arg.outputDefined());\n }\n serialize() {\n if (this.type.kind === 'formatted') {\n return new FormatExpression([{\n content: this.args[0],\n scale: null,\n font: null,\n textColor: null\n }]).serialize();\n }\n if (this.type.kind === 'resolvedImage') {\n return new ImageExpression(this.args[0]).serialize();\n }\n const serialized = [`to-${ this.type.kind }`];\n this.eachChild(child => {\n serialized.push(child.serialize());\n });\n return serialized;\n }\n}\nvar Coercion$1 = Coercion;\n\n// \nconst geometryTypes = [\n 'Unknown',\n 'Point',\n 'LineString',\n 'Polygon'\n];\nclass EvaluationContext {\n constructor() {\n this.globals = null;\n this.feature = null;\n this.featureState = null;\n this.formattedSection = null;\n this._parseColorCache = {};\n this.availableImages = null;\n this.canonical = null;\n this.featureTileCoord = null;\n this.featureDistanceData = null;\n }\n id() {\n return this.feature && this.feature.id !== undefined ? this.feature.id : null;\n }\n geometryType() {\n return this.feature ? typeof this.feature.type === 'number' ? geometryTypes[this.feature.type] : this.feature.type : null;\n }\n geometry() {\n return this.feature && 'geometry' in this.feature ? this.feature.geometry : null;\n }\n canonicalID() {\n return this.canonical;\n }\n properties() {\n return this.feature && this.feature.properties || {};\n }\n distanceFromCenter() {\n if (this.featureTileCoord && this.featureDistanceData) {\n const c = this.featureDistanceData.center;\n const scale = this.featureDistanceData.scale;\n const {x, y} = this.featureTileCoord;\n // Calculate the distance vector `d` (left handed)\n const dX = x * scale - c[0];\n const dY = y * scale - c[1];\n // The bearing vector `b` (left handed)\n const bX = this.featureDistanceData.bearing[0];\n const bY = this.featureDistanceData.bearing[1];\n // Distance is calculated as `dot(d, v)`\n const dist = bX * dX + bY * dY;\n return dist;\n }\n return 0;\n }\n parseColor(input) {\n let cached = this._parseColorCache[input];\n if (!cached) {\n cached = this._parseColorCache[input] = Color$1.parse(input);\n }\n return cached;\n }\n}\nvar EvaluationContext$1 = EvaluationContext;\n\n// \nclass CompoundExpression {\n constructor(name, type, evaluate, args) {\n this.name = name;\n this.type = type;\n this._evaluate = evaluate;\n this.args = args;\n }\n evaluate(ctx) {\n return this._evaluate(ctx, this.args);\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return false;\n }\n serialize() {\n return [this.name].concat(this.args.map(arg => arg.serialize()));\n }\n static parse(args, context) {\n const op = args[0];\n const definition = CompoundExpression.definitions[op];\n if (!definition) {\n return context.error(`Unknown expression \"${ op }\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n }\n // Now check argument types against each signature\n const type = Array.isArray(definition) ? definition[0] : definition.type;\n const availableOverloads = Array.isArray(definition) ? [[\n definition[1],\n definition[2]\n ]] : definition.overloads;\n const overloads = availableOverloads.filter(([signature]) => !Array.isArray(signature) || // varags\n signature.length === args.length - 1 // correct param count\n);\n let signatureContext = null;\n for (const [params, evaluate] of overloads) {\n // Use a fresh context for each attempted signature so that, if\n // we eventually succeed, we haven't polluted `context.errors`.\n signatureContext = new ParsingContext$1(context.registry, context.path, null, context.scope);\n // First parse all the args, potentially coercing to the\n // types expected by this overload.\n const parsedArgs = [];\n let argParseFailed = false;\n for (let i = 1; i < args.length; i++) {\n const arg = args[i];\n const expectedType = Array.isArray(params) ? params[i - 1] : params.type;\n const parsed = signatureContext.parse(arg, 1 + parsedArgs.length, expectedType);\n if (!parsed) {\n argParseFailed = true;\n break;\n }\n parsedArgs.push(parsed);\n }\n if (argParseFailed) {\n // Couldn't coerce args of this overload to expected type, move\n // on to next one.\n continue;\n }\n if (Array.isArray(params)) {\n if (params.length !== parsedArgs.length) {\n signatureContext.error(`Expected ${ params.length } arguments, but found ${ parsedArgs.length } instead.`);\n continue;\n }\n }\n for (let i = 0; i < parsedArgs.length; i++) {\n const expected = Array.isArray(params) ? params[i] : params.type;\n const arg = parsedArgs[i];\n signatureContext.concat(i + 1).checkSubtype(expected, arg.type);\n }\n if (signatureContext.errors.length === 0) {\n return new CompoundExpression(op, type, evaluate, parsedArgs);\n }\n }\n if (overloads.length === 1) {\n context.errors.push(...signatureContext.errors);\n } else {\n const expected = overloads.length ? overloads : availableOverloads;\n const signatures = expected.map(([params]) => stringifySignature(params)).join(' | ');\n const actualTypes = [];\n // For error message, re-parse arguments without trying to\n // apply any coercions\n for (let i = 1; i < args.length; i++) {\n const parsed = context.parse(args[i], 1 + actualTypes.length);\n if (!parsed)\n return null;\n actualTypes.push(toString$1(parsed.type));\n }\n context.error(`Expected arguments of type ${ signatures }, but found (${ actualTypes.join(', ') }) instead.`);\n }\n return null;\n }\n static register(registry, definitions) {\n CompoundExpression.definitions = definitions;\n for (const name in definitions) {\n registry[name] = CompoundExpression;\n }\n }\n}\nfunction stringifySignature(signature) {\n if (Array.isArray(signature)) {\n return `(${ signature.map(toString$1).join(', ') })`;\n } else {\n return `(${ toString$1(signature.type) }...)`;\n }\n}\nvar CompoundExpression$1 = CompoundExpression;\n\n// \nclass CollatorExpression {\n constructor(caseSensitive, diacriticSensitive, locale) {\n this.type = CollatorType;\n this.locale = locale;\n this.caseSensitive = caseSensitive;\n this.diacriticSensitive = diacriticSensitive;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`Expected one argument.`);\n const options = args[1];\n if (typeof options !== 'object' || Array.isArray(options))\n return context.error(`Collator options argument must be an object.`);\n const caseSensitive = context.parse(options['case-sensitive'] === undefined ? false : options['case-sensitive'], 1, BooleanType);\n if (!caseSensitive)\n return null;\n const diacriticSensitive = context.parse(options['diacritic-sensitive'] === undefined ? false : options['diacritic-sensitive'], 1, BooleanType);\n if (!diacriticSensitive)\n return null;\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale)\n return null;\n }\n return new CollatorExpression(caseSensitive, diacriticSensitive, locale);\n }\n evaluate(ctx) {\n return new Collator(this.caseSensitive.evaluate(ctx), this.diacriticSensitive.evaluate(ctx), this.locale ? this.locale.evaluate(ctx) : null);\n }\n eachChild(fn) {\n fn(this.caseSensitive);\n fn(this.diacriticSensitive);\n if (this.locale) {\n fn(this.locale);\n }\n }\n outputDefined() {\n // Technically the set of possible outputs is the combinatoric set of Collators produced\n // by all possible outputs of locale/caseSensitive/diacriticSensitive\n // But for the primary use of Collators in comparison operators, we ignore the Collator's\n // possible outputs anyway, so we can get away with leaving this false for now.\n return false;\n }\n serialize() {\n const options = {};\n options['case-sensitive'] = this.caseSensitive.serialize();\n options['diacritic-sensitive'] = this.diacriticSensitive.serialize();\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n return [\n 'collator',\n options\n ];\n }\n}\n\n// \n// minX, minY, maxX, maxY\nconst EXTENT = 8192;\nfunction updateBBox(bbox, coord) {\n bbox[0] = Math.min(bbox[0], coord[0]);\n bbox[1] = Math.min(bbox[1], coord[1]);\n bbox[2] = Math.max(bbox[2], coord[0]);\n bbox[3] = Math.max(bbox[3], coord[1]);\n}\nfunction mercatorXfromLng(lng) {\n return (180 + lng) / 360;\n}\nfunction mercatorYfromLat(lat) {\n return (180 - 180 / Math.PI * Math.log(Math.tan(Math.PI / 4 + lat * Math.PI / 360))) / 360;\n}\nfunction boxWithinBox(bbox1, bbox2) {\n if (bbox1[0] <= bbox2[0])\n return false;\n if (bbox1[2] >= bbox2[2])\n return false;\n if (bbox1[1] <= bbox2[1])\n return false;\n if (bbox1[3] >= bbox2[3])\n return false;\n return true;\n}\nfunction getTileCoordinates(p, canonical) {\n const x = mercatorXfromLng(p[0]);\n const y = mercatorYfromLat(p[1]);\n const tilesAtZoom = Math.pow(2, canonical.z);\n return [\n Math.round(x * tilesAtZoom * EXTENT),\n Math.round(y * tilesAtZoom * EXTENT)\n ];\n}\nfunction onBoundary(p, p1, p2) {\n const x1 = p[0] - p1[0];\n const y1 = p[1] - p1[1];\n const x2 = p[0] - p2[0];\n const y2 = p[1] - p2[1];\n return x1 * y2 - x2 * y1 === 0 && x1 * x2 <= 0 && y1 * y2 <= 0;\n}\nfunction rayIntersect(p, p1, p2) {\n return p1[1] > p[1] !== p2[1] > p[1] && p[0] < (p2[0] - p1[0]) * (p[1] - p1[1]) / (p2[1] - p1[1]) + p1[0];\n}\n// ray casting algorithm for detecting if point is in polygon\nfunction pointWithinPolygon(point, rings) {\n let inside = false;\n for (let i = 0, len = rings.length; i < len; i++) {\n const ring = rings[i];\n for (let j = 0, len2 = ring.length; j < len2 - 1; j++) {\n if (onBoundary(point, ring[j], ring[j + 1]))\n return false;\n if (rayIntersect(point, ring[j], ring[j + 1]))\n inside = !inside;\n }\n }\n return inside;\n}\nfunction pointWithinPolygons(point, polygons) {\n for (let i = 0; i < polygons.length; i++) {\n if (pointWithinPolygon(point, polygons[i]))\n return true;\n }\n return false;\n}\nfunction perp(v1, v2) {\n return v1[0] * v2[1] - v1[1] * v2[0];\n}\n// check if p1 and p2 are in different sides of line segment q1->q2\nfunction twoSided(p1, p2, q1, q2) {\n // q1->p1 (x1, y1), q1->p2 (x2, y2), q1->q2 (x3, y3)\n const x1 = p1[0] - q1[0];\n const y1 = p1[1] - q1[1];\n const x2 = p2[0] - q1[0];\n const y2 = p2[1] - q1[1];\n const x3 = q2[0] - q1[0];\n const y3 = q2[1] - q1[1];\n const det1 = x1 * y3 - x3 * y1;\n const det2 = x2 * y3 - x3 * y2;\n if (det1 > 0 && det2 < 0 || det1 < 0 && det2 > 0)\n return true;\n return false;\n}\n// a, b are end points for line segment1, c and d are end points for line segment2\nfunction lineIntersectLine(a, b, c, d) {\n // check if two segments are parallel or not\n // precondition is end point a, b is inside polygon, if line a->b is\n // parallel to polygon edge c->d, then a->b won't intersect with c->d\n const vectorP = [\n b[0] - a[0],\n b[1] - a[1]\n ];\n const vectorQ = [\n d[0] - c[0],\n d[1] - c[1]\n ];\n if (perp(vectorQ, vectorP) === 0)\n return false;\n // If lines are intersecting with each other, the relative location should be:\n // a and b lie in different sides of segment c->d\n // c and d lie in different sides of segment a->b\n if (twoSided(a, b, c, d) && twoSided(c, d, a, b))\n return true;\n return false;\n}\nfunction lineIntersectPolygon(p1, p2, polygon) {\n for (const ring of polygon) {\n // loop through every edge of the ring\n for (let j = 0; j < ring.length - 1; ++j) {\n if (lineIntersectLine(p1, p2, ring[j], ring[j + 1])) {\n return true;\n }\n }\n }\n return false;\n}\nfunction lineStringWithinPolygon(line, polygon) {\n // First, check if geometry points of line segments are all inside polygon\n for (let i = 0; i < line.length; ++i) {\n if (!pointWithinPolygon(line[i], polygon)) {\n return false;\n }\n }\n // Second, check if there is line segment intersecting polygon edge\n for (let i = 0; i < line.length - 1; ++i) {\n if (lineIntersectPolygon(line[i], line[i + 1], polygon)) {\n return false;\n }\n }\n return true;\n}\nfunction lineStringWithinPolygons(line, polygons) {\n for (let i = 0; i < polygons.length; i++) {\n if (lineStringWithinPolygon(line, polygons[i]))\n return true;\n }\n return false;\n}\nfunction getTilePolygon(coordinates, bbox, canonical) {\n const polygon = [];\n for (let i = 0; i < coordinates.length; i++) {\n const ring = [];\n for (let j = 0; j < coordinates[i].length; j++) {\n const coord = getTileCoordinates(coordinates[i][j], canonical);\n updateBBox(bbox, coord);\n ring.push(coord);\n }\n polygon.push(ring);\n }\n return polygon;\n}\nfunction getTilePolygons(coordinates, bbox, canonical) {\n const polygons = [];\n for (let i = 0; i < coordinates.length; i++) {\n const polygon = getTilePolygon(coordinates[i], bbox, canonical);\n polygons.push(polygon);\n }\n return polygons;\n}\nfunction updatePoint(p, bbox, polyBBox, worldSize) {\n if (p[0] < polyBBox[0] || p[0] > polyBBox[2]) {\n const halfWorldSize = worldSize * 0.5;\n let shift = p[0] - polyBBox[0] > halfWorldSize ? -worldSize : polyBBox[0] - p[0] > halfWorldSize ? worldSize : 0;\n if (shift === 0) {\n shift = p[0] - polyBBox[2] > halfWorldSize ? -worldSize : polyBBox[2] - p[0] > halfWorldSize ? worldSize : 0;\n }\n p[0] += shift;\n }\n updateBBox(bbox, p);\n}\nfunction resetBBox(bbox) {\n bbox[0] = bbox[1] = Infinity;\n bbox[2] = bbox[3] = -Infinity;\n}\nfunction getTilePoints(geometry, pointBBox, polyBBox, canonical) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [\n canonical.x * EXTENT,\n canonical.y * EXTENT\n ];\n const tilePoints = [];\n if (!geometry)\n return tilePoints;\n for (const points of geometry) {\n for (const point of points) {\n const p = [\n point.x + shifts[0],\n point.y + shifts[1]\n ];\n updatePoint(p, pointBBox, polyBBox, worldSize);\n tilePoints.push(p);\n }\n }\n return tilePoints;\n}\nfunction getTileLines(geometry, lineBBox, polyBBox, canonical) {\n const worldSize = Math.pow(2, canonical.z) * EXTENT;\n const shifts = [\n canonical.x * EXTENT,\n canonical.y * EXTENT\n ];\n const tileLines = [];\n if (!geometry)\n return tileLines;\n for (const line of geometry) {\n const tileLine = [];\n for (const point of line) {\n const p = [\n point.x + shifts[0],\n point.y + shifts[1]\n ];\n updateBBox(lineBBox, p);\n tileLine.push(p);\n }\n tileLines.push(tileLine);\n }\n if (lineBBox[2] - lineBBox[0] <= worldSize / 2) {\n resetBBox(lineBBox);\n for (const line of tileLines) {\n for (const p of line) {\n updatePoint(p, lineBBox, polyBBox, worldSize);\n }\n }\n }\n return tileLines;\n}\nfunction pointsWithinPolygons(ctx, polygonGeometry) {\n const pointBBox = [\n Infinity,\n Infinity,\n -Infinity,\n -Infinity\n ];\n const polyBBox = [\n Infinity,\n Infinity,\n -Infinity,\n -Infinity\n ];\n const canonical = ctx.canonicalID();\n if (!canonical) {\n return false;\n }\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox))\n return false;\n for (const point of tilePoints) {\n if (!pointWithinPolygon(point, tilePolygon))\n return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tilePoints = getTilePoints(ctx.geometry(), pointBBox, polyBBox, canonical);\n if (!boxWithinBox(pointBBox, polyBBox))\n return false;\n for (const point of tilePoints) {\n if (!pointWithinPolygons(point, tilePolygons))\n return false;\n }\n }\n return true;\n}\nfunction linesWithinPolygons(ctx, polygonGeometry) {\n const lineBBox = [\n Infinity,\n Infinity,\n -Infinity,\n -Infinity\n ];\n const polyBBox = [\n Infinity,\n Infinity,\n -Infinity,\n -Infinity\n ];\n const canonical = ctx.canonicalID();\n if (!canonical) {\n return false;\n }\n if (polygonGeometry.type === 'Polygon') {\n const tilePolygon = getTilePolygon(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox))\n return false;\n for (const line of tileLines) {\n if (!lineStringWithinPolygon(line, tilePolygon))\n return false;\n }\n }\n if (polygonGeometry.type === 'MultiPolygon') {\n const tilePolygons = getTilePolygons(polygonGeometry.coordinates, polyBBox, canonical);\n const tileLines = getTileLines(ctx.geometry(), lineBBox, polyBBox, canonical);\n if (!boxWithinBox(lineBBox, polyBBox))\n return false;\n for (const line of tileLines) {\n if (!lineStringWithinPolygons(line, tilePolygons))\n return false;\n }\n }\n return true;\n}\nclass Within {\n constructor(geojson, geometries) {\n this.type = BooleanType;\n this.geojson = geojson;\n this.geometries = geometries;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`'within' expression requires exactly one argument, but found ${ args.length - 1 } instead.`);\n if (isValue(args[1])) {\n const geojson = args[1];\n if (geojson.type === 'FeatureCollection') {\n for (let i = 0; i < geojson.features.length; ++i) {\n const type = geojson.features[i].geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.features[i].geometry);\n }\n }\n } else if (geojson.type === 'Feature') {\n const type = geojson.geometry.type;\n if (type === 'Polygon' || type === 'MultiPolygon') {\n return new Within(geojson, geojson.geometry);\n }\n } else if (geojson.type === 'Polygon' || geojson.type === 'MultiPolygon') {\n return new Within(geojson, geojson);\n }\n }\n return context.error(`'within' expression requires valid geojson object that contains polygon geometry type.`);\n }\n evaluate(ctx) {\n if (ctx.geometry() != null && ctx.canonicalID() != null) {\n if (ctx.geometryType() === 'Point') {\n return pointsWithinPolygons(ctx, this.geometries);\n } else if (ctx.geometryType() === 'LineString') {\n return linesWithinPolygons(ctx, this.geometries);\n }\n }\n return false;\n }\n eachChild() {\n }\n outputDefined() {\n return true;\n }\n serialize() {\n return [\n 'within',\n this.geojson\n ];\n }\n}\nvar Within$1 = Within;\n\n// \nfunction isFeatureConstant(e) {\n if (e instanceof CompoundExpression$1) {\n if (e.name === 'get' && e.args.length === 1) {\n return false;\n } else if (e.name === 'feature-state') {\n return false;\n } else if (e.name === 'has' && e.args.length === 1) {\n return false;\n } else if (e.name === 'properties' || e.name === 'geometry-type' || e.name === 'id') {\n return false;\n } else if (/^filter-/.test(e.name)) {\n return false;\n }\n }\n if (e instanceof Within$1) {\n return false;\n }\n let result = true;\n e.eachChild(arg => {\n if (result && !isFeatureConstant(arg)) {\n result = false;\n }\n });\n return result;\n}\nfunction isStateConstant(e) {\n if (e instanceof CompoundExpression$1) {\n if (e.name === 'feature-state') {\n return false;\n }\n }\n let result = true;\n e.eachChild(arg => {\n if (result && !isStateConstant(arg)) {\n result = false;\n }\n });\n return result;\n}\nfunction isGlobalPropertyConstant(e, properties) {\n if (e instanceof CompoundExpression$1 && properties.indexOf(e.name) >= 0) {\n return false;\n }\n let result = true;\n e.eachChild(arg => {\n if (result && !isGlobalPropertyConstant(arg, properties)) {\n result = false;\n }\n });\n return result;\n}\n\n// \nclass Var {\n constructor(name, boundExpression) {\n this.type = boundExpression.type;\n this.name = name;\n this.boundExpression = boundExpression;\n }\n static parse(args, context) {\n if (args.length !== 2 || typeof args[1] !== 'string')\n return context.error(`'var' expression requires exactly one string literal argument.`);\n const name = args[1];\n if (!context.scope.has(name)) {\n return context.error(`Unknown variable \"${ name }\". Make sure \"${ name }\" has been bound in an enclosing \"let\" expression before using it.`, 1);\n }\n return new Var(name, context.scope.get(name));\n }\n evaluate(ctx) {\n return this.boundExpression.evaluate(ctx);\n }\n eachChild() {\n }\n outputDefined() {\n return false;\n }\n serialize() {\n return [\n 'var',\n this.name\n ];\n }\n}\nvar Var$1 = Var;\n\n// \n/**\n * State associated parsing at a given point in an expression tree.\n * @private\n */\nclass ParsingContext {\n // The expected type of this expression. Provided only to allow Expression\n // implementations to infer argument types: Expression#parse() need not\n // check that the output type of the parsed expression matches\n // `expectedType`.\n constructor(registry, path = [], expectedType, scope = new Scope$1(), errors = []) {\n this.registry = registry;\n this.path = path;\n this.key = path.map(part => `[${ part }]`).join('');\n this.scope = scope;\n this.errors = errors;\n this.expectedType = expectedType;\n }\n /**\n * @param expr the JSON expression to parse\n * @param index the optional argument index if this expression is an argument of a parent expression that's being parsed\n * @param options\n * @param options.omitTypeAnnotations set true to omit inferred type annotations. Caller beware: with this option set, the parsed expression's type will NOT satisfy `expectedType` if it would normally be wrapped in an inferred annotation.\n * @private\n */\n parse(expr, index, expectedType, bindings, options = {}) {\n if (index) {\n return this.concat(index, expectedType, bindings)._parse(expr, options);\n }\n return this._parse(expr, options);\n }\n _parse(expr, options) {\n if (expr === null || typeof expr === 'string' || typeof expr === 'boolean' || typeof expr === 'number') {\n expr = [\n 'literal',\n expr\n ];\n }\n function annotate(parsed, type, typeAnnotation) {\n if (typeAnnotation === 'assert') {\n return new Assertion$1(type, [parsed]);\n } else if (typeAnnotation === 'coerce') {\n return new Coercion$1(type, [parsed]);\n } else {\n return parsed;\n }\n }\n if (Array.isArray(expr)) {\n if (expr.length === 0) {\n return this.error(`Expected an array with at least one element. If you wanted a literal array, use [\"literal\", []].`);\n }\n const op = expr[0];\n if (typeof op !== 'string') {\n this.error(`Expression name must be a string, but found ${ typeof op } instead. If you wanted a literal array, use [\"literal\", [...]].`, 0);\n return null;\n }\n const Expr = this.registry[op];\n if (Expr) {\n let parsed = Expr.parse(expr, this);\n if (!parsed)\n return null;\n if (this.expectedType) {\n const expected = this.expectedType;\n const actual = parsed.type;\n // When we expect a number, string, boolean, or array but have a value, wrap it in an assertion.\n // When we expect a color or formatted string, but have a string or value, wrap it in a coercion.\n // Otherwise, we do static type-checking.\n //\n // These behaviors are overridable for:\n // * The \"coalesce\" operator, which needs to omit type annotations.\n // * String-valued properties (e.g. `text-field`), where coercion is more convenient than assertion.\n //\n if ((expected.kind === 'string' || expected.kind === 'number' || expected.kind === 'boolean' || expected.kind === 'object' || expected.kind === 'array') && actual.kind === 'value') {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'assert');\n } else if ((expected.kind === 'color' || expected.kind === 'formatted' || expected.kind === 'resolvedImage') && (actual.kind === 'value' || actual.kind === 'string')) {\n parsed = annotate(parsed, expected, options.typeAnnotation || 'coerce');\n } else if (this.checkSubtype(expected, actual)) {\n return null;\n }\n }\n // If an expression's arguments are all literals, we can evaluate\n // it immediately and replace it with a literal value in the\n // parsed/compiled result. Expressions that expect an image should\n // not be resolved here so we can later get the available images.\n if (!(parsed instanceof Literal$1) && parsed.type.kind !== 'resolvedImage' && isConstant(parsed)) {\n const ec = new EvaluationContext$1();\n try {\n parsed = new Literal$1(parsed.type, parsed.evaluate(ec));\n } catch (e) {\n this.error(e.message);\n return null;\n }\n }\n return parsed;\n }\n return this.error(`Unknown expression \"${ op }\". If you wanted a literal array, use [\"literal\", [...]].`, 0);\n } else if (typeof expr === 'undefined') {\n return this.error(`'undefined' value invalid. Use null instead.`);\n } else if (typeof expr === 'object') {\n return this.error(`Bare objects invalid. Use [\"literal\", {...}] instead.`);\n } else {\n return this.error(`Expected an array, but found ${ typeof expr } instead.`);\n }\n }\n /**\n * Returns a copy of this context suitable for parsing the subexpression at\n * index `index`, optionally appending to 'let' binding map.\n *\n * Note that `errors` property, intended for collecting errors while\n * parsing, is copied by reference rather than cloned.\n * @private\n */\n concat(index, expectedType, bindings) {\n const path = typeof index === 'number' ? this.path.concat(index) : this.path;\n const scope = bindings ? this.scope.concat(bindings) : this.scope;\n return new ParsingContext(this.registry, path, expectedType || null, scope, this.errors);\n }\n /**\n * Push a parsing (or type checking) error into the `this.errors`\n * @param error The message\n * @param keys Optionally specify the source of the error at a child\n * of the current expression at `this.key`.\n * @private\n */\n error(error, ...keys) {\n const key = `${ this.key }${ keys.map(k => `[${ k }]`).join('') }`;\n this.errors.push(new ParsingError$1(key, error));\n }\n /**\n * Returns null if `t` is a subtype of `expected`; otherwise returns an\n * error message and also pushes it to `this.errors`.\n */\n checkSubtype(expected, t) {\n const error = checkSubtype(expected, t);\n if (error)\n this.error(error);\n return error;\n }\n}\nvar ParsingContext$1 = ParsingContext;\nfunction isConstant(expression) {\n if (expression instanceof Var$1) {\n return isConstant(expression.boundExpression);\n } else if (expression instanceof CompoundExpression$1 && expression.name === 'error') {\n return false;\n } else if (expression instanceof CollatorExpression) {\n // Although the results of a Collator expression with fixed arguments\n // generally shouldn't change between executions, we can't serialize them\n // as constant expressions because results change based on environment.\n return false;\n } else if (expression instanceof Within$1) {\n return false;\n }\n const isTypeAnnotation = expression instanceof Coercion$1 || expression instanceof Assertion$1;\n let childrenConstant = true;\n expression.eachChild(child => {\n // We can _almost_ assume that if `expressions` children are constant,\n // they would already have been evaluated to Literal values when they\n // were parsed. Type annotations are the exception, because they might\n // have been inferred and added after a child was parsed.\n // So we recurse into isConstant() for the children of type annotations,\n // but otherwise simply check whether they are Literals.\n if (isTypeAnnotation) {\n childrenConstant = childrenConstant && isConstant(child);\n } else {\n childrenConstant = childrenConstant && child instanceof Literal$1;\n }\n });\n if (!childrenConstant) {\n return false;\n }\n return isFeatureConstant(expression) && isGlobalPropertyConstant(expression, [\n 'zoom',\n 'heatmap-density',\n 'line-progress',\n 'sky-radial-progress',\n 'accumulated',\n 'is-supported-script',\n 'pitch',\n 'distance-from-center'\n ]);\n}\n\n// \n/**\n * Returns the index of the last stop <= input, or 0 if it doesn't exist.\n * @private\n */\nfunction findStopLessThanOrEqualTo(stops, input) {\n const lastIndex = stops.length - 1;\n let lowerIndex = 0;\n let upperIndex = lastIndex;\n let currentIndex = 0;\n let currentValue, nextValue;\n while (lowerIndex <= upperIndex) {\n currentIndex = Math.floor((lowerIndex + upperIndex) / 2);\n currentValue = stops[currentIndex];\n nextValue = stops[currentIndex + 1];\n if (currentValue <= input) {\n if (currentIndex === lastIndex || input < nextValue) {\n // Search complete\n return currentIndex;\n }\n lowerIndex = currentIndex + 1;\n } else if (currentValue > input) {\n upperIndex = currentIndex - 1;\n } else {\n throw new RuntimeError$1('Input is not a number.');\n }\n }\n return 0;\n}\n\n// \nclass Step {\n constructor(type, input, stops) {\n this.type = type;\n this.input = input;\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n static parse(args, context) {\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${ args.length - 1 }.`);\n }\n if ((args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n const input = context.parse(args[1], 1, NumberType);\n if (!input)\n return null;\n const stops = [];\n let outputType = null;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n for (let i = 1; i < args.length; i += 2) {\n const label = i === 1 ? -Infinity : args[i];\n const value = args[i + 1];\n const labelKey = i;\n const valueKey = i + 1;\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"step\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"step\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed)\n return null;\n outputType = outputType || parsed.type;\n stops.push([\n label,\n parsed\n ]);\n }\n return new Step(outputType, input, stops);\n }\n evaluate(ctx) {\n const labels = this.labels;\n const outputs = this.outputs;\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n const value = this.input.evaluate(ctx);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n const index = findStopLessThanOrEqualTo(labels, value);\n return outputs[index].evaluate(ctx);\n }\n eachChild(fn) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n outputDefined() {\n return this.outputs.every(out => out.outputDefined());\n }\n serialize() {\n const serialized = [\n 'step',\n this.input.serialize()\n ];\n for (let i = 0; i < this.labels.length; i++) {\n if (i > 0) {\n serialized.push(this.labels[i]);\n }\n serialized.push(this.outputs[i].serialize());\n }\n return serialized;\n }\n}\nvar Step$1 = Step;\n\n/*\n * Copyright (C) 2008 Apple Inc. All Rights Reserved.\n *\n * Redistribution and use in source and binary forms, with or without\n * modification, are permitted provided that the following conditions\n * are met:\n * 1. Redistributions of source code must retain the above copyright\n * notice, this list of conditions and the following disclaimer.\n * 2. Redistributions in binary form must reproduce the above copyright\n * notice, this list of conditions and the following disclaimer in the\n * documentation and/or other materials provided with the distribution.\n *\n * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY\n * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\n * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\n * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR\n * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,\n * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,\n * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\n * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY\n * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\n * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n *\n * Ported from Webkit\n * http://svn.webkit.org/repository/webkit/trunk/Source/WebCore/platform/graphics/UnitBezier.h\n */\n\nvar unitbezier = UnitBezier;\nfunction UnitBezier(p1x, p1y, p2x, p2y) {\n // Calculate the polynomial coefficients, implicit first and last control points are (0,0) and (1,1).\n this.cx = 3 * p1x;\n this.bx = 3 * (p2x - p1x) - this.cx;\n this.ax = 1 - this.cx - this.bx;\n this.cy = 3 * p1y;\n this.by = 3 * (p2y - p1y) - this.cy;\n this.ay = 1 - this.cy - this.by;\n this.p1x = p1x;\n this.p1y = p2y;\n this.p2x = p2x;\n this.p2y = p2y;\n}\nUnitBezier.prototype.sampleCurveX = function (t) {\n // `ax t^3 + bx t^2 + cx t' expanded using Horner's rule.\n return ((this.ax * t + this.bx) * t + this.cx) * t;\n};\nUnitBezier.prototype.sampleCurveY = function (t) {\n return ((this.ay * t + this.by) * t + this.cy) * t;\n};\nUnitBezier.prototype.sampleCurveDerivativeX = function (t) {\n return (3 * this.ax * t + 2 * this.bx) * t + this.cx;\n};\nUnitBezier.prototype.solveCurveX = function (x, epsilon) {\n if (typeof epsilon === 'undefined')\n epsilon = 0.000001;\n var t0, t1, t2, x2, i;\n // First try a few iterations of Newton's method -- normally very fast.\n for (t2 = x, i = 0; i < 8; i++) {\n x2 = this.sampleCurveX(t2) - x;\n if (Math.abs(x2) < epsilon)\n return t2;\n var d2 = this.sampleCurveDerivativeX(t2);\n if (Math.abs(d2) < 0.000001)\n break;\n t2 = t2 - x2 / d2;\n }\n // Fall back to the bisection method for reliability.\n t0 = 0;\n t1 = 1;\n t2 = x;\n if (t2 < t0)\n return t0;\n if (t2 > t1)\n return t1;\n while (t0 < t1) {\n x2 = this.sampleCurveX(t2);\n if (Math.abs(x2 - x) < epsilon)\n return t2;\n if (x > x2) {\n t0 = t2;\n } else {\n t1 = t2;\n }\n t2 = (t1 - t0) * 0.5 + t0;\n }\n // Failure.\n return t2;\n};\nUnitBezier.prototype.solve = function (x, epsilon) {\n return this.sampleCurveY(this.solveCurveX(x, epsilon));\n};\n\nvar UnitBezier$1 = /*@__PURE__*/getDefaultExportFromCjs(unitbezier);\n\n// \nfunction number(a, b, t) {\n return a * (1 - t) + b * t;\n}\nfunction color(from, to, t) {\n return new Color$1(number(from.r, to.r, t), number(from.g, to.g, t), number(from.b, to.b, t), number(from.a, to.a, t));\n}\nfunction array(from, to, t) {\n return from.map((d, i) => {\n return number(d, to[i], t);\n });\n}\n\nvar interpolate = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tnumber: number,\n\tcolor: color,\n\tarray: array\n});\n\n// \n// Constants\nconst Xn = 0.95047,\n // D65 standard referent\n Yn = 1, Zn = 1.08883, t0 = 4 / 29, t1 = 6 / 29, t2 = 3 * t1 * t1, t3 = t1 * t1 * t1, deg2rad$1 = Math.PI / 180, rad2deg = 180 / Math.PI;\n// Utilities\nfunction xyz2lab(t) {\n return t > t3 ? Math.pow(t, 1 / 3) : t / t2 + t0;\n}\nfunction lab2xyz(t) {\n return t > t1 ? t * t * t : t2 * (t - t0);\n}\nfunction xyz2rgb(x) {\n return 255 * (x <= 0.0031308 ? 12.92 * x : 1.055 * Math.pow(x, 1 / 2.4) - 0.055);\n}\nfunction rgb2xyz(x) {\n x /= 255;\n return x <= 0.04045 ? x / 12.92 : Math.pow((x + 0.055) / 1.055, 2.4);\n}\n// LAB\nfunction rgbToLab(rgbColor) {\n const b = rgb2xyz(rgbColor.r), a = rgb2xyz(rgbColor.g), l = rgb2xyz(rgbColor.b), x = xyz2lab((0.4124564 * b + 0.3575761 * a + 0.1804375 * l) / Xn), y = xyz2lab((0.2126729 * b + 0.7151522 * a + 0.072175 * l) / Yn), z = xyz2lab((0.0193339 * b + 0.119192 * a + 0.9503041 * l) / Zn);\n return {\n l: 116 * y - 16,\n a: 500 * (x - y),\n b: 200 * (y - z),\n alpha: rgbColor.a\n };\n}\nfunction labToRgb(labColor) {\n let y = (labColor.l + 16) / 116, x = isNaN(labColor.a) ? y : y + labColor.a / 500, z = isNaN(labColor.b) ? y : y - labColor.b / 200;\n y = Yn * lab2xyz(y);\n x = Xn * lab2xyz(x);\n z = Zn * lab2xyz(z);\n return new Color$1(xyz2rgb(3.2404542 * x - 1.5371385 * y - 0.4985314 * z), // D65 -> sRGB\n xyz2rgb(-0.969266 * x + 1.8760108 * y + 0.041556 * z), xyz2rgb(0.0556434 * x - 0.2040259 * y + 1.0572252 * z), labColor.alpha);\n}\nfunction interpolateLab(from, to, t) {\n return {\n l: number(from.l, to.l, t),\n a: number(from.a, to.a, t),\n b: number(from.b, to.b, t),\n alpha: number(from.alpha, to.alpha, t)\n };\n}\n// HCL\nfunction rgbToHcl(rgbColor) {\n const {l, a, b} = rgbToLab(rgbColor);\n const h = Math.atan2(b, a) * rad2deg;\n return {\n h: h < 0 ? h + 360 : h,\n c: Math.sqrt(a * a + b * b),\n l,\n alpha: rgbColor.a\n };\n}\nfunction hclToRgb(hclColor) {\n const h = hclColor.h * deg2rad$1, c = hclColor.c, l = hclColor.l;\n return labToRgb({\n l,\n a: Math.cos(h) * c,\n b: Math.sin(h) * c,\n alpha: hclColor.alpha\n });\n}\nfunction interpolateHue(a, b, t) {\n const d = b - a;\n return a + t * (d > 180 || d < -180 ? d - 360 * Math.round(d / 360) : d);\n}\nfunction interpolateHcl(from, to, t) {\n return {\n h: interpolateHue(from.h, to.h, t),\n c: number(from.c, to.c, t),\n l: number(from.l, to.l, t),\n alpha: number(from.alpha, to.alpha, t)\n };\n}\nconst lab = {\n forward: rgbToLab,\n reverse: labToRgb,\n interpolate: interpolateLab\n};\nconst hcl = {\n forward: rgbToHcl,\n reverse: hclToRgb,\n interpolate: interpolateHcl\n};\n\n// \nclass Interpolate {\n constructor(type, operator, interpolation, input, stops) {\n this.type = type;\n this.operator = operator;\n this.interpolation = interpolation;\n this.input = input;\n this.labels = [];\n this.outputs = [];\n for (const [label, expression] of stops) {\n this.labels.push(label);\n this.outputs.push(expression);\n }\n }\n static interpolationFactor(interpolation, input, lower, upper) {\n let t = 0;\n if (interpolation.name === 'exponential') {\n t = exponentialInterpolation(input, interpolation.base, lower, upper);\n } else if (interpolation.name === 'linear') {\n t = exponentialInterpolation(input, 1, lower, upper);\n } else if (interpolation.name === 'cubic-bezier') {\n const c = interpolation.controlPoints;\n const ub = new UnitBezier$1(c[0], c[1], c[2], c[3]);\n t = ub.solve(exponentialInterpolation(input, 1, lower, upper));\n }\n return t;\n }\n static parse(args, context) {\n let [operator, interpolation, input, ...rest] = args;\n if (!Array.isArray(interpolation) || interpolation.length === 0) {\n return context.error(`Expected an interpolation type expression.`, 1);\n }\n if (interpolation[0] === 'linear') {\n interpolation = { name: 'linear' };\n } else if (interpolation[0] === 'exponential') {\n const base = interpolation[1];\n if (typeof base !== 'number')\n return context.error(`Exponential interpolation requires a numeric base.`, 1, 1);\n interpolation = {\n name: 'exponential',\n base\n };\n } else if (interpolation[0] === 'cubic-bezier') {\n const controlPoints = interpolation.slice(1);\n if (controlPoints.length !== 4 || controlPoints.some(t => typeof t !== 'number' || t < 0 || t > 1)) {\n return context.error('Cubic bezier interpolation requires four numeric arguments with values between 0 and 1.', 1);\n }\n interpolation = {\n name: 'cubic-bezier',\n controlPoints: controlPoints\n };\n } else {\n return context.error(`Unknown interpolation type ${ String(interpolation[0]) }`, 1, 0);\n }\n if (args.length - 1 < 4) {\n return context.error(`Expected at least 4 arguments, but found only ${ args.length - 1 }.`);\n }\n if ((args.length - 1) % 2 !== 0) {\n return context.error(`Expected an even number of arguments.`);\n }\n input = context.parse(input, 2, NumberType);\n if (!input)\n return null;\n const stops = [];\n let outputType = null;\n if (operator === 'interpolate-hcl' || operator === 'interpolate-lab') {\n outputType = ColorType;\n } else if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n for (let i = 0; i < rest.length; i += 2) {\n const label = rest[i];\n const value = rest[i + 1];\n const labelKey = i + 3;\n const valueKey = i + 4;\n if (typeof label !== 'number') {\n return context.error('Input/output pairs for \"interpolate\" expressions must be defined using literal numeric values (not computed expressions) for the input values.', labelKey);\n }\n if (stops.length && stops[stops.length - 1][0] >= label) {\n return context.error('Input/output pairs for \"interpolate\" expressions must be arranged with input values in strictly ascending order.', labelKey);\n }\n const parsed = context.parse(value, valueKey, outputType);\n if (!parsed)\n return null;\n outputType = outputType || parsed.type;\n stops.push([\n label,\n parsed\n ]);\n }\n if (outputType.kind !== 'number' && outputType.kind !== 'color' && !(outputType.kind === 'array' && outputType.itemType.kind === 'number' && typeof outputType.N === 'number')) {\n return context.error(`Type ${ toString$1(outputType) } is not interpolatable.`);\n }\n return new Interpolate(outputType, operator, interpolation, input, stops);\n }\n evaluate(ctx) {\n const labels = this.labels;\n const outputs = this.outputs;\n if (labels.length === 1) {\n return outputs[0].evaluate(ctx);\n }\n const value = this.input.evaluate(ctx);\n if (value <= labels[0]) {\n return outputs[0].evaluate(ctx);\n }\n const stopCount = labels.length;\n if (value >= labels[stopCount - 1]) {\n return outputs[stopCount - 1].evaluate(ctx);\n }\n const index = findStopLessThanOrEqualTo(labels, value);\n const lower = labels[index];\n const upper = labels[index + 1];\n const t = Interpolate.interpolationFactor(this.interpolation, value, lower, upper);\n const outputLower = outputs[index].evaluate(ctx);\n const outputUpper = outputs[index + 1].evaluate(ctx);\n if (this.operator === 'interpolate') {\n return interpolate[this.type.kind.toLowerCase()](outputLower, outputUpper, t); // eslint-disable-line import/namespace\n } else if (this.operator === 'interpolate-hcl') {\n return hcl.reverse(hcl.interpolate(hcl.forward(outputLower), hcl.forward(outputUpper), t));\n } else {\n return lab.reverse(lab.interpolate(lab.forward(outputLower), lab.forward(outputUpper), t));\n }\n }\n eachChild(fn) {\n fn(this.input);\n for (const expression of this.outputs) {\n fn(expression);\n }\n }\n outputDefined() {\n return this.outputs.every(out => out.outputDefined());\n }\n serialize() {\n let interpolation;\n if (this.interpolation.name === 'linear') {\n interpolation = ['linear'];\n } else if (this.interpolation.name === 'exponential') {\n if (this.interpolation.base === 1) {\n interpolation = ['linear'];\n } else {\n interpolation = [\n 'exponential',\n this.interpolation.base\n ];\n }\n } else {\n interpolation = ['cubic-bezier'].concat(this.interpolation.controlPoints);\n }\n const serialized = [\n this.operator,\n interpolation,\n this.input.serialize()\n ];\n for (let i = 0; i < this.labels.length; i++) {\n serialized.push(this.labels[i], this.outputs[i].serialize());\n }\n return serialized;\n }\n}\n/**\n * Returns a ratio that can be used to interpolate between exponential function\n * stops.\n * How it works: Two consecutive stop values define a (scaled and shifted) exponential function `f(x) = a * base^x + b`, where `base` is the user-specified base,\n * and `a` and `b` are constants affording sufficient degrees of freedom to fit\n * the function to the given stops.\n *\n * Here's a bit of algebra that lets us compute `f(x)` directly from the stop\n * values without explicitly solving for `a` and `b`:\n *\n * First stop value: `f(x0) = y0 = a * base^x0 + b`\n * Second stop value: `f(x1) = y1 = a * base^x1 + b`\n * => `y1 - y0 = a(base^x1 - base^x0)`\n * => `a = (y1 - y0)/(base^x1 - base^x0)`\n *\n * Desired value: `f(x) = y = a * base^x + b`\n * => `f(x) = y0 + a * (base^x - base^x0)`\n *\n * From the above, we can replace the `a` in `a * (base^x - base^x0)` and do a\n * little algebra:\n * ```\n * a * (base^x - base^x0) = (y1 - y0)/(base^x1 - base^x0) * (base^x - base^x0)\n * = (y1 - y0) * (base^x - base^x0) / (base^x1 - base^x0)\n * ```\n *\n * If we let `(base^x - base^x0) / (base^x1 base^x0)`, then we have\n * `f(x) = y0 + (y1 - y0) * ratio`. In other words, `ratio` may be treated as\n * an interpolation factor between the two stops' output values.\n *\n * (Note: a slightly different form for `ratio`,\n * `(base^(x-x0) - 1) / (base^(x1-x0) - 1) `, is equivalent, but requires fewer\n * expensive `Math.pow()` operations.)\n *\n * @private\n*/\nfunction exponentialInterpolation(input, base, lowerValue, upperValue) {\n const difference = upperValue - lowerValue;\n const progress = input - lowerValue;\n if (difference === 0) {\n return 0;\n } else if (base === 1) {\n return progress / difference;\n } else {\n return (Math.pow(base, progress) - 1) / (Math.pow(base, difference) - 1);\n }\n}\nvar Interpolate$1 = Interpolate;\n\nclass Coalesce {\n constructor(type, args) {\n this.type = type;\n this.args = args;\n }\n static parse(args, context) {\n if (args.length < 2) {\n return context.error('Expectected at least one argument.');\n }\n let outputType = null;\n const expectedType = context.expectedType;\n if (expectedType && expectedType.kind !== 'value') {\n outputType = expectedType;\n }\n const parsedArgs = [];\n for (const arg of args.slice(1)) {\n const parsed = context.parse(arg, 1 + parsedArgs.length, outputType, undefined, { typeAnnotation: 'omit' });\n if (!parsed)\n return null;\n outputType = outputType || parsed.type;\n parsedArgs.push(parsed);\n }\n // Above, we parse arguments without inferred type annotation so that\n // they don't produce a runtime error for `null` input, which would\n // preempt the desired null-coalescing behavior.\n // Thus, if any of our arguments would have needed an annotation, we\n // need to wrap the enclosing coalesce expression with it instead.\n const needsAnnotation = expectedType && parsedArgs.some(arg => checkSubtype(expectedType, arg.type));\n return needsAnnotation ? new Coalesce(ValueType, parsedArgs) : new Coalesce(outputType, parsedArgs);\n }\n evaluate(ctx) {\n let result = null;\n let argCount = 0;\n let firstImage;\n for (const arg of this.args) {\n argCount++;\n result = arg.evaluate(ctx);\n // we need to keep track of the first requested image in a coalesce statement\n // if coalesce can't find a valid image, we return the first image so styleimagemissing can fire\n if (result && result instanceof ResolvedImage && !result.available) {\n // set to first image\n if (!firstImage) {\n firstImage = result;\n }\n result = null;\n // if we reach the end, return the first image\n if (argCount === this.args.length) {\n return firstImage;\n }\n }\n if (result !== null)\n break;\n }\n return result;\n }\n eachChild(fn) {\n this.args.forEach(fn);\n }\n outputDefined() {\n return this.args.every(arg => arg.outputDefined());\n }\n serialize() {\n const serialized = ['coalesce'];\n this.eachChild(child => {\n serialized.push(child.serialize());\n });\n return serialized;\n }\n}\nvar Coalesce$1 = Coalesce;\n\n// \nclass Let {\n constructor(bindings, result) {\n this.type = result.type;\n this.bindings = [].concat(bindings);\n this.result = result;\n }\n evaluate(ctx) {\n return this.result.evaluate(ctx);\n }\n eachChild(fn) {\n for (const binding of this.bindings) {\n fn(binding[1]);\n }\n fn(this.result);\n }\n static parse(args, context) {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found ${ args.length - 1 } instead.`);\n const bindings = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const name = args[i];\n if (typeof name !== 'string') {\n return context.error(`Expected string, but found ${ typeof name } instead.`, i);\n }\n if (/[^a-zA-Z0-9_]/.test(name)) {\n return context.error(`Variable names must contain only alphanumeric characters or '_'.`, i);\n }\n const value = context.parse(args[i + 1], i + 1);\n if (!value)\n return null;\n bindings.push([\n name,\n value\n ]);\n }\n const result = context.parse(args[args.length - 1], args.length - 1, context.expectedType, bindings);\n if (!result)\n return null;\n return new Let(bindings, result);\n }\n outputDefined() {\n return this.result.outputDefined();\n }\n serialize() {\n const serialized = ['let'];\n for (const [name, expr] of this.bindings) {\n serialized.push(name, expr.serialize());\n }\n serialized.push(this.result.serialize());\n return serialized;\n }\n}\nvar Let$1 = Let;\n\n// \nclass At {\n constructor(type, index, input) {\n this.type = type;\n this.index = index;\n this.input = input;\n }\n static parse(args, context) {\n if (args.length !== 3)\n return context.error(`Expected 2 arguments, but found ${ args.length - 1 } instead.`);\n const index = context.parse(args[1], 1, NumberType);\n const input = context.parse(args[2], 2, array$1(context.expectedType || ValueType));\n if (!index || !input)\n return null;\n const t = input.type;\n return new At(t.itemType, index, input);\n }\n evaluate(ctx) {\n const index = this.index.evaluate(ctx);\n const array = this.input.evaluate(ctx);\n if (index < 0) {\n throw new RuntimeError$1(`Array index out of bounds: ${ index } < 0.`);\n }\n if (index >= array.length) {\n throw new RuntimeError$1(`Array index out of bounds: ${ index } > ${ array.length - 1 }.`);\n }\n if (index !== Math.floor(index)) {\n throw new RuntimeError$1(`Array index must be an integer, but found ${ index } instead.`);\n }\n return array[index];\n }\n eachChild(fn) {\n fn(this.index);\n fn(this.input);\n }\n outputDefined() {\n return false;\n }\n serialize() {\n return [\n 'at',\n this.index.serialize(),\n this.input.serialize()\n ];\n }\n}\nvar At$1 = At;\n\n// \nclass In {\n constructor(needle, haystack) {\n this.type = BooleanType;\n this.needle = needle;\n this.haystack = haystack;\n }\n static parse(args, context) {\n if (args.length !== 3) {\n return context.error(`Expected 2 arguments, but found ${ args.length - 1 } instead.`);\n }\n const needle = context.parse(args[1], 1, ValueType);\n const haystack = context.parse(args[2], 2, ValueType);\n if (!needle || !haystack)\n return null;\n if (!isValidType(needle.type, [\n BooleanType,\n StringType,\n NumberType,\n NullType,\n ValueType\n ])) {\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${ toString$1(needle.type) } instead`);\n }\n return new In(needle, haystack);\n }\n evaluate(ctx) {\n const needle = this.needle.evaluate(ctx);\n const haystack = this.haystack.evaluate(ctx);\n if (haystack == null)\n return false;\n if (!isValidNativeType(needle, [\n 'boolean',\n 'string',\n 'number',\n 'null'\n ])) {\n throw new RuntimeError$1(`Expected first argument to be of type boolean, string, number or null, but found ${ toString$1(typeOf(needle)) } instead.`);\n }\n if (!isValidNativeType(haystack, [\n 'string',\n 'array'\n ])) {\n throw new RuntimeError$1(`Expected second argument to be of type array or string, but found ${ toString$1(typeOf(haystack)) } instead.`);\n }\n return haystack.indexOf(needle) >= 0;\n }\n eachChild(fn) {\n fn(this.needle);\n fn(this.haystack);\n }\n outputDefined() {\n return true;\n }\n serialize() {\n return [\n 'in',\n this.needle.serialize(),\n this.haystack.serialize()\n ];\n }\n}\nvar In$1 = In;\n\n// \nclass IndexOf {\n constructor(needle, haystack, fromIndex) {\n this.type = NumberType;\n this.needle = needle;\n this.haystack = haystack;\n this.fromIndex = fromIndex;\n }\n static parse(args, context) {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 3 or 4 arguments, but found ${ args.length - 1 } instead.`);\n }\n const needle = context.parse(args[1], 1, ValueType);\n const haystack = context.parse(args[2], 2, ValueType);\n if (!needle || !haystack)\n return null;\n if (!isValidType(needle.type, [\n BooleanType,\n StringType,\n NumberType,\n NullType,\n ValueType\n ])) {\n return context.error(`Expected first argument to be of type boolean, string, number or null, but found ${ toString$1(needle.type) } instead`);\n }\n if (args.length === 4) {\n const fromIndex = context.parse(args[3], 3, NumberType);\n if (!fromIndex)\n return null;\n return new IndexOf(needle, haystack, fromIndex);\n } else {\n return new IndexOf(needle, haystack);\n }\n }\n evaluate(ctx) {\n const needle = this.needle.evaluate(ctx);\n const haystack = this.haystack.evaluate(ctx);\n if (!isValidNativeType(needle, [\n 'boolean',\n 'string',\n 'number',\n 'null'\n ])) {\n throw new RuntimeError$1(`Expected first argument to be of type boolean, string, number or null, but found ${ toString$1(typeOf(needle)) } instead.`);\n }\n if (!isValidNativeType(haystack, [\n 'string',\n 'array'\n ])) {\n throw new RuntimeError$1(`Expected second argument to be of type array or string, but found ${ toString$1(typeOf(haystack)) } instead.`);\n }\n if (this.fromIndex) {\n const fromIndex = this.fromIndex.evaluate(ctx);\n return haystack.indexOf(needle, fromIndex);\n }\n return haystack.indexOf(needle);\n }\n eachChild(fn) {\n fn(this.needle);\n fn(this.haystack);\n if (this.fromIndex) {\n fn(this.fromIndex);\n }\n }\n outputDefined() {\n return false;\n }\n serialize() {\n if (this.fromIndex != null && this.fromIndex !== undefined) {\n const fromIndex = this.fromIndex.serialize();\n return [\n 'index-of',\n this.needle.serialize(),\n this.haystack.serialize(),\n fromIndex\n ];\n }\n return [\n 'index-of',\n this.needle.serialize(),\n this.haystack.serialize()\n ];\n }\n}\nvar IndexOf$1 = IndexOf;\n\n// Map input label values to output expression index\nclass Match {\n constructor(inputType, outputType, input, cases, outputs, otherwise) {\n this.inputType = inputType;\n this.type = outputType;\n this.input = input;\n this.cases = cases;\n this.outputs = outputs;\n this.otherwise = otherwise;\n }\n static parse(args, context) {\n if (args.length < 5)\n return context.error(`Expected at least 4 arguments, but found only ${ args.length - 1 }.`);\n if (args.length % 2 !== 1)\n return context.error(`Expected an even number of arguments.`);\n let inputType;\n let outputType;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n const cases = {};\n const outputs = [];\n for (let i = 2; i < args.length - 1; i += 2) {\n let labels = args[i];\n const value = args[i + 1];\n if (!Array.isArray(labels)) {\n labels = [labels];\n }\n const labelContext = context.concat(i);\n if (labels.length === 0) {\n return labelContext.error('Expected at least one branch label.');\n }\n for (const label of labels) {\n if (typeof label !== 'number' && typeof label !== 'string') {\n return labelContext.error(`Branch labels must be numbers or strings.`);\n } else if (typeof label === 'number' && Math.abs(label) > Number.MAX_SAFE_INTEGER) {\n return labelContext.error(`Branch labels must be integers no larger than ${ Number.MAX_SAFE_INTEGER }.`);\n } else if (typeof label === 'number' && Math.floor(label) !== label) {\n return labelContext.error(`Numeric branch labels must be integer values.`);\n } else if (!inputType) {\n inputType = typeOf(label);\n } else if (labelContext.checkSubtype(inputType, typeOf(label))) {\n return null;\n }\n if (typeof cases[String(label)] !== 'undefined') {\n return labelContext.error('Branch labels must be unique.');\n }\n cases[String(label)] = outputs.length;\n }\n const result = context.parse(value, i, outputType);\n if (!result)\n return null;\n outputType = outputType || result.type;\n outputs.push(result);\n }\n const input = context.parse(args[1], 1, ValueType);\n if (!input)\n return null;\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise)\n return null;\n if (input.type.kind !== 'value' && context.concat(1).checkSubtype(inputType, input.type)) {\n return null;\n }\n return new Match(inputType, outputType, input, cases, outputs, otherwise);\n }\n evaluate(ctx) {\n const input = this.input.evaluate(ctx);\n const output = typeOf(input) === this.inputType && this.outputs[this.cases[input]] || this.otherwise;\n return output.evaluate(ctx);\n }\n eachChild(fn) {\n fn(this.input);\n this.outputs.forEach(fn);\n fn(this.otherwise);\n }\n outputDefined() {\n return this.outputs.every(out => out.outputDefined()) && this.otherwise.outputDefined();\n }\n serialize() {\n const serialized = [\n 'match',\n this.input.serialize()\n ];\n // Sort so serialization has an arbitrary defined order, even though\n // branch order doesn't affect evaluation\n const sortedLabels = Object.keys(this.cases).sort();\n // Group branches by unique match expression to support condensed\n // serializations of the form [case1, case2, ...] -> matchExpression\n const groupedByOutput = [];\n const outputLookup = {};\n // lookup index into groupedByOutput for a given output expression\n for (const label of sortedLabels) {\n const outputIndex = outputLookup[this.cases[label]];\n if (outputIndex === undefined) {\n // First time seeing this output, add it to the end of the grouped list\n outputLookup[this.cases[label]] = groupedByOutput.length;\n groupedByOutput.push([\n this.cases[label],\n [label]\n ]);\n } else {\n // We've seen this expression before, add the label to that output's group\n groupedByOutput[outputIndex][1].push(label);\n }\n }\n const coerceLabel = label => this.inputType.kind === 'number' ? Number(label) : label;\n for (const [outputIndex, labels] of groupedByOutput) {\n if (labels.length === 1) {\n // Only a single label matches this output expression\n serialized.push(coerceLabel(labels[0]));\n } else {\n // Array of literal labels pointing to this output expression\n serialized.push(labels.map(coerceLabel));\n }\n serialized.push(this.outputs[outputIndex].serialize());\n }\n serialized.push(this.otherwise.serialize());\n return serialized;\n }\n}\nvar Match$1 = Match;\n\nclass Case {\n constructor(type, branches, otherwise) {\n this.type = type;\n this.branches = branches;\n this.otherwise = otherwise;\n }\n static parse(args, context) {\n if (args.length < 4)\n return context.error(`Expected at least 3 arguments, but found only ${ args.length - 1 }.`);\n if (args.length % 2 !== 0)\n return context.error(`Expected an odd number of arguments.`);\n let outputType;\n if (context.expectedType && context.expectedType.kind !== 'value') {\n outputType = context.expectedType;\n }\n const branches = [];\n for (let i = 1; i < args.length - 1; i += 2) {\n const test = context.parse(args[i], i, BooleanType);\n if (!test)\n return null;\n const result = context.parse(args[i + 1], i + 1, outputType);\n if (!result)\n return null;\n branches.push([\n test,\n result\n ]);\n outputType = outputType || result.type;\n }\n const otherwise = context.parse(args[args.length - 1], args.length - 1, outputType);\n if (!otherwise)\n return null;\n return new Case(outputType, branches, otherwise);\n }\n evaluate(ctx) {\n for (const [test, expression] of this.branches) {\n if (test.evaluate(ctx)) {\n return expression.evaluate(ctx);\n }\n }\n return this.otherwise.evaluate(ctx);\n }\n eachChild(fn) {\n for (const [test, expression] of this.branches) {\n fn(test);\n fn(expression);\n }\n fn(this.otherwise);\n }\n outputDefined() {\n return this.branches.every(([_, out]) => out.outputDefined()) && this.otherwise.outputDefined();\n }\n serialize() {\n const serialized = ['case'];\n this.eachChild(child => {\n serialized.push(child.serialize());\n });\n return serialized;\n }\n}\nvar Case$1 = Case;\n\n// \nclass Slice {\n constructor(type, input, beginIndex, endIndex) {\n this.type = type;\n this.input = input;\n this.beginIndex = beginIndex;\n this.endIndex = endIndex;\n }\n static parse(args, context) {\n if (args.length <= 2 || args.length >= 5) {\n return context.error(`Expected 3 or 4 arguments, but found ${ args.length - 1 } instead.`);\n }\n const input = context.parse(args[1], 1, ValueType);\n const beginIndex = context.parse(args[2], 2, NumberType);\n if (!input || !beginIndex)\n return null;\n if (!isValidType(input.type, [\n array$1(ValueType),\n StringType,\n ValueType\n ])) {\n return context.error(`Expected first argument to be of type array or string, but found ${ toString$1(input.type) } instead`);\n }\n if (args.length === 4) {\n const endIndex = context.parse(args[3], 3, NumberType);\n if (!endIndex)\n return null;\n return new Slice(input.type, input, beginIndex, endIndex);\n } else {\n return new Slice(input.type, input, beginIndex);\n }\n }\n evaluate(ctx) {\n const input = this.input.evaluate(ctx);\n const beginIndex = this.beginIndex.evaluate(ctx);\n if (!isValidNativeType(input, [\n 'string',\n 'array'\n ])) {\n throw new RuntimeError$1(`Expected first argument to be of type array or string, but found ${ toString$1(typeOf(input)) } instead.`);\n }\n if (this.endIndex) {\n const endIndex = this.endIndex.evaluate(ctx);\n return input.slice(beginIndex, endIndex);\n }\n return input.slice(beginIndex);\n }\n eachChild(fn) {\n fn(this.input);\n fn(this.beginIndex);\n if (this.endIndex) {\n fn(this.endIndex);\n }\n }\n outputDefined() {\n return false;\n }\n serialize() {\n if (this.endIndex != null && this.endIndex !== undefined) {\n const endIndex = this.endIndex.serialize();\n return [\n 'slice',\n this.input.serialize(),\n this.beginIndex.serialize(),\n endIndex\n ];\n }\n return [\n 'slice',\n this.input.serialize(),\n this.beginIndex.serialize()\n ];\n }\n}\nvar Slice$1 = Slice;\n\n// \nfunction isComparableType(op, type) {\n if (op === '==' || op === '!=') {\n // equality operator\n return type.kind === 'boolean' || type.kind === 'string' || type.kind === 'number' || type.kind === 'null' || type.kind === 'value';\n } else {\n // ordering operator\n return type.kind === 'string' || type.kind === 'number' || type.kind === 'value';\n }\n}\nfunction eq(ctx, a, b) {\n return a === b;\n}\nfunction neq(ctx, a, b) {\n return a !== b;\n}\nfunction lt(ctx, a, b) {\n return a < b;\n}\nfunction gt(ctx, a, b) {\n return a > b;\n}\nfunction lteq(ctx, a, b) {\n return a <= b;\n}\nfunction gteq(ctx, a, b) {\n return a >= b;\n}\nfunction eqCollate(ctx, a, b, c) {\n return c.compare(a, b) === 0;\n}\nfunction neqCollate(ctx, a, b, c) {\n return !eqCollate(ctx, a, b, c);\n}\nfunction ltCollate(ctx, a, b, c) {\n return c.compare(a, b) < 0;\n}\nfunction gtCollate(ctx, a, b, c) {\n return c.compare(a, b) > 0;\n}\nfunction lteqCollate(ctx, a, b, c) {\n return c.compare(a, b) <= 0;\n}\nfunction gteqCollate(ctx, a, b, c) {\n return c.compare(a, b) >= 0;\n}\n/**\n * Special form for comparison operators, implementing the signatures:\n * - (T, T, ?Collator) => boolean\n * - (T, value, ?Collator) => boolean\n * - (value, T, ?Collator) => boolean\n *\n * For inequalities, T must be either value, string, or number. For ==/!=, it\n * can also be boolean or null.\n *\n * Equality semantics are equivalent to Javascript's strict equality (===/!==)\n * -- i.e., when the arguments' types don't match, == evaluates to false, != to\n * true.\n *\n * When types don't match in an ordering comparison, a runtime error is thrown.\n *\n * @private\n */\nfunction makeComparison(op, compareBasic, compareWithCollator) {\n const isOrderComparison = op !== '==' && op !== '!=';\n return class Comparison {\n constructor(lhs, rhs, collator) {\n this.type = BooleanType;\n this.lhs = lhs;\n this.rhs = rhs;\n this.collator = collator;\n this.hasUntypedArgument = lhs.type.kind === 'value' || rhs.type.kind === 'value';\n }\n static parse(args, context) {\n if (args.length !== 3 && args.length !== 4)\n return context.error(`Expected two or three arguments.`);\n const op = args[0];\n let lhs = context.parse(args[1], 1, ValueType);\n if (!lhs)\n return null;\n if (!isComparableType(op, lhs.type)) {\n return context.concat(1).error(`\"${ op }\" comparisons are not supported for type '${ toString$1(lhs.type) }'.`);\n }\n let rhs = context.parse(args[2], 2, ValueType);\n if (!rhs)\n return null;\n if (!isComparableType(op, rhs.type)) {\n return context.concat(2).error(`\"${ op }\" comparisons are not supported for type '${ toString$1(rhs.type) }'.`);\n }\n if (lhs.type.kind !== rhs.type.kind && lhs.type.kind !== 'value' && rhs.type.kind !== 'value') {\n return context.error(`Cannot compare types '${ toString$1(lhs.type) }' and '${ toString$1(rhs.type) }'.`);\n }\n if (isOrderComparison) {\n // typing rules specific to less/greater than operators\n if (lhs.type.kind === 'value' && rhs.type.kind !== 'value') {\n // (value, T)\n lhs = new Assertion$1(rhs.type, [lhs]);\n } else if (lhs.type.kind !== 'value' && rhs.type.kind === 'value') {\n // (T, value)\n rhs = new Assertion$1(lhs.type, [rhs]);\n }\n }\n let collator = null;\n if (args.length === 4) {\n if (lhs.type.kind !== 'string' && rhs.type.kind !== 'string' && lhs.type.kind !== 'value' && rhs.type.kind !== 'value') {\n return context.error(`Cannot use collator to compare non-string types.`);\n }\n collator = context.parse(args[3], 3, CollatorType);\n if (!collator)\n return null;\n }\n return new Comparison(lhs, rhs, collator);\n }\n evaluate(ctx) {\n const lhs = this.lhs.evaluate(ctx);\n const rhs = this.rhs.evaluate(ctx);\n if (isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n // check that type is string or number, and equal\n if (lt.kind !== rt.kind || !(lt.kind === 'string' || lt.kind === 'number')) {\n throw new RuntimeError$1(`Expected arguments for \"${ op }\" to be (string, string) or (number, number), but found (${ lt.kind }, ${ rt.kind }) instead.`);\n }\n }\n if (this.collator && !isOrderComparison && this.hasUntypedArgument) {\n const lt = typeOf(lhs);\n const rt = typeOf(rhs);\n if (lt.kind !== 'string' || rt.kind !== 'string') {\n return compareBasic(ctx, lhs, rhs);\n }\n }\n return this.collator ? compareWithCollator(ctx, lhs, rhs, this.collator.evaluate(ctx)) : compareBasic(ctx, lhs, rhs);\n }\n eachChild(fn) {\n fn(this.lhs);\n fn(this.rhs);\n if (this.collator) {\n fn(this.collator);\n }\n }\n outputDefined() {\n return true;\n }\n serialize() {\n const serialized = [op];\n this.eachChild(child => {\n serialized.push(child.serialize());\n });\n return serialized;\n }\n };\n}\nconst Equals = makeComparison('==', eq, eqCollate);\nconst NotEquals = makeComparison('!=', neq, neqCollate);\nconst LessThan = makeComparison('<', lt, ltCollate);\nconst GreaterThan = makeComparison('>', gt, gtCollate);\nconst LessThanOrEqual = makeComparison('<=', lteq, lteqCollate);\nconst GreaterThanOrEqual = makeComparison('>=', gteq, gteqCollate);\n\n// \nclass NumberFormat {\n // BCP 47 language tag\n // ISO 4217 currency code, required if style=currency\n // Simple units sanctioned for use in ECMAScript, required if style=unit. https://tc39.es/proposal-unified-intl-numberformat/section6/locales-currencies-tz_proposed_out.html#sec-issanctionedsimpleunitidentifier\n // Default 0\n // Default 3\n constructor(number, locale, currency, unit, minFractionDigits, maxFractionDigits) {\n this.type = StringType;\n this.number = number;\n this.locale = locale;\n this.currency = currency;\n this.unit = unit;\n this.minFractionDigits = minFractionDigits;\n this.maxFractionDigits = maxFractionDigits;\n }\n static parse(args, context) {\n if (args.length !== 3)\n return context.error(`Expected two arguments.`);\n const number = context.parse(args[1], 1, NumberType);\n if (!number)\n return null;\n const options = args[2];\n if (typeof options !== 'object' || Array.isArray(options))\n return context.error(`NumberFormat options argument must be an object.`);\n let locale = null;\n if (options['locale']) {\n locale = context.parse(options['locale'], 1, StringType);\n if (!locale)\n return null;\n }\n let currency = null;\n if (options['currency']) {\n currency = context.parse(options['currency'], 1, StringType);\n if (!currency)\n return null;\n }\n let unit = null;\n if (options['unit']) {\n unit = context.parse(options['unit'], 1, StringType);\n if (!unit)\n return null;\n }\n let minFractionDigits = null;\n if (options['min-fraction-digits']) {\n minFractionDigits = context.parse(options['min-fraction-digits'], 1, NumberType);\n if (!minFractionDigits)\n return null;\n }\n let maxFractionDigits = null;\n if (options['max-fraction-digits']) {\n maxFractionDigits = context.parse(options['max-fraction-digits'], 1, NumberType);\n if (!maxFractionDigits)\n return null;\n }\n return new NumberFormat(number, locale, currency, unit, minFractionDigits, maxFractionDigits);\n }\n evaluate(ctx) {\n return new Intl.NumberFormat(this.locale ? this.locale.evaluate(ctx) : [], {\n style: this.currency && 'currency' || this.unit && 'unit' || 'decimal',\n currency: this.currency ? this.currency.evaluate(ctx) : undefined,\n unit: this.unit ? this.unit.evaluate(ctx) : undefined,\n minimumFractionDigits: this.minFractionDigits ? this.minFractionDigits.evaluate(ctx) : undefined,\n maximumFractionDigits: this.maxFractionDigits ? this.maxFractionDigits.evaluate(ctx) : undefined\n }).format(this.number.evaluate(ctx));\n }\n eachChild(fn) {\n fn(this.number);\n if (this.locale) {\n fn(this.locale);\n }\n if (this.currency) {\n fn(this.currency);\n }\n if (this.unit) {\n fn(this.unit);\n }\n if (this.minFractionDigits) {\n fn(this.minFractionDigits);\n }\n if (this.maxFractionDigits) {\n fn(this.maxFractionDigits);\n }\n }\n outputDefined() {\n return false;\n }\n serialize() {\n const options = {};\n if (this.locale) {\n options['locale'] = this.locale.serialize();\n }\n if (this.currency) {\n options['currency'] = this.currency.serialize();\n }\n if (this.unit) {\n options['unit'] = this.unit.serialize();\n }\n if (this.minFractionDigits) {\n options['min-fraction-digits'] = this.minFractionDigits.serialize();\n }\n if (this.maxFractionDigits) {\n options['max-fraction-digits'] = this.maxFractionDigits.serialize();\n }\n return [\n 'number-format',\n this.number.serialize(),\n options\n ];\n }\n}\n\n// \nclass Length {\n constructor(input) {\n this.type = NumberType;\n this.input = input;\n }\n static parse(args, context) {\n if (args.length !== 2)\n return context.error(`Expected 1 argument, but found ${ args.length - 1 } instead.`);\n const input = context.parse(args[1], 1);\n if (!input)\n return null;\n if (input.type.kind !== 'array' && input.type.kind !== 'string' && input.type.kind !== 'value')\n return context.error(`Expected argument of type string or array, but found ${ toString$1(input.type) } instead.`);\n return new Length(input);\n }\n evaluate(ctx) {\n const input = this.input.evaluate(ctx);\n if (typeof input === 'string') {\n return input.length;\n } else if (Array.isArray(input)) {\n return input.length;\n } else {\n throw new RuntimeError$1(`Expected value to be of type string or array, but found ${ toString$1(typeOf(input)) } instead.`);\n }\n }\n eachChild(fn) {\n fn(this.input);\n }\n outputDefined() {\n return false;\n }\n serialize() {\n const serialized = ['length'];\n this.eachChild(child => {\n serialized.push(child.serialize());\n });\n return serialized;\n }\n}\nvar Length$1 = Length;\n\n// \nconst expressions = {\n // special forms\n '==': Equals,\n '!=': NotEquals,\n '>': GreaterThan,\n '<': LessThan,\n '>=': GreaterThanOrEqual,\n '<=': LessThanOrEqual,\n 'array': Assertion$1,\n 'at': At$1,\n 'boolean': Assertion$1,\n 'case': Case$1,\n 'coalesce': Coalesce$1,\n 'collator': CollatorExpression,\n 'format': FormatExpression,\n 'image': ImageExpression,\n 'in': In$1,\n 'index-of': IndexOf$1,\n 'interpolate': Interpolate$1,\n 'interpolate-hcl': Interpolate$1,\n 'interpolate-lab': Interpolate$1,\n 'length': Length$1,\n 'let': Let$1,\n 'literal': Literal$1,\n 'match': Match$1,\n 'number': Assertion$1,\n 'number-format': NumberFormat,\n 'object': Assertion$1,\n 'slice': Slice$1,\n 'step': Step$1,\n 'string': Assertion$1,\n 'to-boolean': Coercion$1,\n 'to-color': Coercion$1,\n 'to-number': Coercion$1,\n 'to-string': Coercion$1,\n 'var': Var$1,\n 'within': Within$1\n};\nfunction rgba(ctx, [r, g, b, a]) {\n r = r.evaluate(ctx);\n g = g.evaluate(ctx);\n b = b.evaluate(ctx);\n const alpha = a ? a.evaluate(ctx) : 1;\n const error = validateRGBA(r, g, b, alpha);\n if (error)\n throw new RuntimeError$1(error);\n return new Color$1(r / 255 * alpha, g / 255 * alpha, b / 255 * alpha, alpha);\n}\nfunction has(key, obj) {\n return key in obj;\n}\nfunction get(key, obj) {\n const v = obj[key];\n return typeof v === 'undefined' ? null : v;\n}\nfunction binarySearch(v, a, i, j) {\n while (i <= j) {\n const m = i + j >> 1;\n if (a[m] === v)\n return true;\n if (a[m] > v)\n j = m - 1;\n else\n i = m + 1;\n }\n return false;\n}\nfunction varargs(type) {\n return { type };\n}\nCompoundExpression$1.register(expressions, {\n 'error': [\n ErrorType,\n [StringType],\n (ctx, [v]) => {\n throw new RuntimeError$1(v.evaluate(ctx));\n }\n ],\n 'typeof': [\n StringType,\n [ValueType],\n (ctx, [v]) => toString$1(typeOf(v.evaluate(ctx)))\n ],\n 'to-rgba': [\n array$1(NumberType, 4),\n [ColorType],\n (ctx, [v]) => {\n return v.evaluate(ctx).toArray();\n }\n ],\n 'rgb': [\n ColorType,\n [\n NumberType,\n NumberType,\n NumberType\n ],\n rgba\n ],\n 'rgba': [\n ColorType,\n [\n NumberType,\n NumberType,\n NumberType,\n NumberType\n ],\n rgba\n ],\n 'has': {\n type: BooleanType,\n overloads: [\n [\n [StringType],\n (ctx, [key]) => has(key.evaluate(ctx), ctx.properties())\n ],\n [\n [\n StringType,\n ObjectType\n ],\n (ctx, [key, obj]) => has(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'get': {\n type: ValueType,\n overloads: [\n [\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.properties())\n ],\n [\n [\n StringType,\n ObjectType\n ],\n (ctx, [key, obj]) => get(key.evaluate(ctx), obj.evaluate(ctx))\n ]\n ]\n },\n 'feature-state': [\n ValueType,\n [StringType],\n (ctx, [key]) => get(key.evaluate(ctx), ctx.featureState || {})\n ],\n 'properties': [\n ObjectType,\n [],\n ctx => ctx.properties()\n ],\n 'geometry-type': [\n StringType,\n [],\n ctx => ctx.geometryType()\n ],\n 'id': [\n ValueType,\n [],\n ctx => ctx.id()\n ],\n 'zoom': [\n NumberType,\n [],\n ctx => ctx.globals.zoom\n ],\n 'pitch': [\n NumberType,\n [],\n ctx => ctx.globals.pitch || 0\n ],\n 'distance-from-center': [\n NumberType,\n [],\n ctx => ctx.distanceFromCenter()\n ],\n 'heatmap-density': [\n NumberType,\n [],\n ctx => ctx.globals.heatmapDensity || 0\n ],\n 'line-progress': [\n NumberType,\n [],\n ctx => ctx.globals.lineProgress || 0\n ],\n 'sky-radial-progress': [\n NumberType,\n [],\n ctx => ctx.globals.skyRadialProgress || 0\n ],\n 'accumulated': [\n ValueType,\n [],\n ctx => ctx.globals.accumulated === undefined ? null : ctx.globals.accumulated\n ],\n '+': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 0;\n for (const arg of args) {\n result += arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '*': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => {\n let result = 1;\n for (const arg of args) {\n result *= arg.evaluate(ctx);\n }\n return result;\n }\n ],\n '-': {\n type: NumberType,\n overloads: [\n [\n [\n NumberType,\n NumberType\n ],\n (ctx, [a, b]) => a.evaluate(ctx) - b.evaluate(ctx)\n ],\n [\n [NumberType],\n (ctx, [a]) => -a.evaluate(ctx)\n ]\n ]\n },\n '/': [\n NumberType,\n [\n NumberType,\n NumberType\n ],\n (ctx, [a, b]) => a.evaluate(ctx) / b.evaluate(ctx)\n ],\n '%': [\n NumberType,\n [\n NumberType,\n NumberType\n ],\n (ctx, [a, b]) => a.evaluate(ctx) % b.evaluate(ctx)\n ],\n 'ln2': [\n NumberType,\n [],\n () => Math.LN2\n ],\n 'pi': [\n NumberType,\n [],\n () => Math.PI\n ],\n 'e': [\n NumberType,\n [],\n () => Math.E\n ],\n '^': [\n NumberType,\n [\n NumberType,\n NumberType\n ],\n (ctx, [b, e]) => Math.pow(b.evaluate(ctx), e.evaluate(ctx))\n ],\n 'sqrt': [\n NumberType,\n [NumberType],\n (ctx, [x]) => Math.sqrt(x.evaluate(ctx))\n ],\n 'log10': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN10\n ],\n 'ln': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx))\n ],\n 'log2': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.log(n.evaluate(ctx)) / Math.LN2\n ],\n 'sin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.sin(n.evaluate(ctx))\n ],\n 'cos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.cos(n.evaluate(ctx))\n ],\n 'tan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.tan(n.evaluate(ctx))\n ],\n 'asin': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.asin(n.evaluate(ctx))\n ],\n 'acos': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.acos(n.evaluate(ctx))\n ],\n 'atan': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.atan(n.evaluate(ctx))\n ],\n 'min': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.min(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'max': [\n NumberType,\n varargs(NumberType),\n (ctx, args) => Math.max(...args.map(arg => arg.evaluate(ctx)))\n ],\n 'abs': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.abs(n.evaluate(ctx))\n ],\n 'round': [\n NumberType,\n [NumberType],\n (ctx, [n]) => {\n const v = n.evaluate(ctx);\n // Javascript's Math.round() rounds towards +Infinity for halfway\n // values, even when they're negative. It's more common to round\n // away from 0 (e.g., this is what python and C++ do)\n return v < 0 ? -Math.round(-v) : Math.round(v);\n }\n ],\n 'floor': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.floor(n.evaluate(ctx))\n ],\n 'ceil': [\n NumberType,\n [NumberType],\n (ctx, [n]) => Math.ceil(n.evaluate(ctx))\n ],\n 'filter-==': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n (ctx, [k, v]) => ctx.properties()[k.value] === v.value\n ],\n 'filter-id-==': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => ctx.id() === v.value\n ],\n 'filter-type-==': [\n BooleanType,\n [StringType],\n (ctx, [v]) => ctx.geometryType() === v.value\n ],\n 'filter-<': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter-id-<': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a < b;\n }\n ],\n 'filter->': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-id->': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a > b;\n }\n ],\n 'filter-<=': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter-id-<=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a <= b;\n }\n ],\n 'filter->=': [\n BooleanType,\n [\n StringType,\n ValueType\n ],\n (ctx, [k, v]) => {\n const a = ctx.properties()[k.value];\n const b = v.value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-id->=': [\n BooleanType,\n [ValueType],\n (ctx, [v]) => {\n const a = ctx.id();\n const b = v.value;\n return typeof a === typeof b && a >= b;\n }\n ],\n 'filter-has': [\n BooleanType,\n [ValueType],\n (ctx, [k]) => k.value in ctx.properties()\n ],\n 'filter-has-id': [\n BooleanType,\n [],\n ctx => ctx.id() !== null && ctx.id() !== undefined\n ],\n 'filter-type-in': [\n BooleanType,\n [array$1(StringType)],\n (ctx, [v]) => v.value.indexOf(ctx.geometryType()) >= 0\n ],\n 'filter-id-in': [\n BooleanType,\n [array$1(ValueType)],\n (ctx, [v]) => v.value.indexOf(ctx.id()) >= 0\n ],\n 'filter-in-small': [\n BooleanType,\n [\n StringType,\n array$1(ValueType)\n ],\n // assumes v is an array literal\n (ctx, [k, v]) => v.value.indexOf(ctx.properties()[k.value]) >= 0\n ],\n 'filter-in-large': [\n BooleanType,\n [\n StringType,\n array$1(ValueType)\n ],\n // assumes v is a array literal with values sorted in ascending order and of a single type\n (ctx, [k, v]) => binarySearch(ctx.properties()[k.value], v.value, 0, v.value.length - 1)\n ],\n 'all': {\n type: BooleanType,\n overloads: [\n [\n [\n BooleanType,\n BooleanType\n ],\n (ctx, [a, b]) => a.evaluate(ctx) && b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (!arg.evaluate(ctx))\n return false;\n }\n return true;\n }\n ]\n ]\n },\n 'any': {\n type: BooleanType,\n overloads: [\n [\n [\n BooleanType,\n BooleanType\n ],\n (ctx, [a, b]) => a.evaluate(ctx) || b.evaluate(ctx)\n ],\n [\n varargs(BooleanType),\n (ctx, args) => {\n for (const arg of args) {\n if (arg.evaluate(ctx))\n return true;\n }\n return false;\n }\n ]\n ]\n },\n '!': [\n BooleanType,\n [BooleanType],\n (ctx, [b]) => !b.evaluate(ctx)\n ],\n 'is-supported-script': [\n BooleanType,\n [StringType],\n // At parse time this will always return true, so we need to exclude this expression with isGlobalPropertyConstant\n (ctx, [s]) => {\n const isSupportedScript = ctx.globals && ctx.globals.isSupportedScript;\n if (isSupportedScript) {\n return isSupportedScript(s.evaluate(ctx));\n }\n return true;\n }\n ],\n 'upcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toUpperCase()\n ],\n 'downcase': [\n StringType,\n [StringType],\n (ctx, [s]) => s.evaluate(ctx).toLowerCase()\n ],\n 'concat': [\n StringType,\n varargs(ValueType),\n (ctx, args) => args.map(arg => toString(arg.evaluate(ctx))).join('')\n ],\n 'resolved-locale': [\n StringType,\n [CollatorType],\n (ctx, [collator]) => collator.evaluate(ctx).resolvedLocale()\n ]\n});\nvar definitions = expressions;\n\n// \n/**\n * A type used for returning and propagating errors. The first element of the union\n * represents success and contains a value, and the second represents an error and\n * contains an error value.\n * @private\n */\nfunction success(value) {\n return {\n result: 'success',\n value\n };\n}\nfunction error(value) {\n return {\n result: 'error',\n value\n };\n}\n\n// \nfunction supportsPropertyExpression(spec) {\n return spec['property-type'] === 'data-driven';\n}\nfunction supportsZoomExpression(spec) {\n return !!spec.expression && spec.expression.parameters.indexOf('zoom') > -1;\n}\nfunction supportsInterpolation(spec) {\n return !!spec.expression && spec.expression.interpolated;\n}\n\nfunction isFunction(value) {\n return typeof value === 'object' && value !== null && !Array.isArray(value);\n}\n\nclass StyleExpression {\n constructor(expression, propertySpec) {\n this.expression = expression;\n this._warningHistory = {};\n this._evaluator = new EvaluationContext$1();\n this._defaultValue = propertySpec ? getDefaultValue(propertySpec) : null;\n this._enumValues = propertySpec && propertySpec.type === 'enum' ? propertySpec.values : null;\n }\n evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection, featureTileCoord, featureDistanceData) {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature;\n this._evaluator.featureState = featureState;\n this._evaluator.canonical = canonical || null;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection;\n this._evaluator.featureTileCoord = featureTileCoord || null;\n this._evaluator.featureDistanceData = featureDistanceData || null;\n return this.expression.evaluate(this._evaluator);\n }\n evaluate(globals, feature, featureState, canonical, availableImages, formattedSection, featureTileCoord, featureDistanceData) {\n this._evaluator.globals = globals;\n this._evaluator.feature = feature || null;\n this._evaluator.featureState = featureState || null;\n this._evaluator.canonical = canonical || null;\n this._evaluator.availableImages = availableImages || null;\n this._evaluator.formattedSection = formattedSection || null;\n this._evaluator.featureTileCoord = featureTileCoord || null;\n this._evaluator.featureDistanceData = featureDistanceData || null;\n try {\n const val = this.expression.evaluate(this._evaluator);\n // eslint-disable-next-line no-self-compare\n if (val === null || val === undefined || typeof val === 'number' && val !== val) {\n return this._defaultValue;\n }\n if (this._enumValues && !(val in this._enumValues)) {\n throw new RuntimeError$1(`Expected value to be one of ${ Object.keys(this._enumValues).map(v => JSON.stringify(v)).join(', ') }, but found ${ JSON.stringify(val) } instead.`);\n }\n return val;\n } catch (e) {\n if (!this._warningHistory[e.message]) {\n this._warningHistory[e.message] = true;\n if (typeof console !== 'undefined') {\n console.warn(e.message);\n }\n }\n return this._defaultValue;\n }\n }\n}\nfunction isExpression(expression) {\n return Array.isArray(expression) && expression.length > 0 && typeof expression[0] === 'string' && expression[0] in definitions;\n}\n/**\n * Parse and typecheck the given style spec JSON expression. If\n * options.defaultValue is provided, then the resulting StyleExpression's\n * `evaluate()` method will handle errors by logging a warning (once per\n * message) and returning the default value. Otherwise, it will throw\n * evaluation errors.\n *\n * @private\n */\nfunction createExpression(expression, propertySpec) {\n const parser = new ParsingContext$1(definitions, [], propertySpec ? getExpectedType(propertySpec) : undefined);\n // For string-valued properties, coerce to string at the top level rather than asserting.\n const parsed = parser.parse(expression, undefined, undefined, undefined, propertySpec && propertySpec.type === 'string' ? { typeAnnotation: 'coerce' } : undefined);\n if (!parsed) {\n return error(parser.errors);\n }\n return success(new StyleExpression(parsed, propertySpec));\n}\nclass ZoomConstantExpression {\n constructor(kind, expression) {\n this.kind = kind;\n this._styleExpression = expression;\n this.isStateDependent = kind !== 'constant' && !isStateConstant(expression.expression);\n }\n evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n}\nclass ZoomDependentExpression {\n constructor(kind, expression, zoomStops, interpolationType) {\n this.kind = kind;\n this.zoomStops = zoomStops;\n this._styleExpression = expression;\n this.isStateDependent = kind !== 'camera' && !isStateConstant(expression.expression);\n this.interpolationType = interpolationType;\n }\n evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection) {\n return this._styleExpression.evaluateWithoutErrorHandling(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n evaluate(globals, feature, featureState, canonical, availableImages, formattedSection) {\n return this._styleExpression.evaluate(globals, feature, featureState, canonical, availableImages, formattedSection);\n }\n interpolationFactor(input, lower, upper) {\n if (this.interpolationType) {\n return Interpolate$1.interpolationFactor(this.interpolationType, input, lower, upper);\n } else {\n return 0;\n }\n }\n}\nfunction createPropertyExpression(expression, propertySpec) {\n expression = createExpression(expression, propertySpec);\n if (expression.result === 'error') {\n return expression;\n }\n const parsed = expression.value.expression;\n const isFeatureConstant$1 = isFeatureConstant(parsed);\n if (!isFeatureConstant$1 && !supportsPropertyExpression(propertySpec)) {\n return error([new ParsingError$1('', 'data expressions not supported')]);\n }\n const isZoomConstant = isGlobalPropertyConstant(parsed, [\n 'zoom',\n 'pitch',\n 'distance-from-center'\n ]);\n if (!isZoomConstant && !supportsZoomExpression(propertySpec)) {\n return error([new ParsingError$1('', 'zoom expressions not supported')]);\n }\n const zoomCurve = findZoomCurve(parsed);\n if (!zoomCurve && !isZoomConstant) {\n return error([new ParsingError$1('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.')]);\n } else if (zoomCurve instanceof ParsingError$1) {\n return error([zoomCurve]);\n } else if (zoomCurve instanceof Interpolate$1 && !supportsInterpolation(propertySpec)) {\n return error([new ParsingError$1('', '\"interpolate\" expressions cannot be used with this property')]);\n }\n if (!zoomCurve) {\n return success(isFeatureConstant$1 ? new ZoomConstantExpression('constant', expression.value) : new ZoomConstantExpression('source', expression.value));\n }\n const interpolationType = zoomCurve instanceof Interpolate$1 ? zoomCurve.interpolation : undefined;\n return success(isFeatureConstant$1 ? new ZoomDependentExpression('camera', expression.value, zoomCurve.labels, interpolationType) : new ZoomDependentExpression('composite', expression.value, zoomCurve.labels, interpolationType));\n}\n// Zoom-dependent expressions may only use [\"zoom\"] as the input to a top-level \"step\" or \"interpolate\"\n// expression (collectively referred to as a \"curve\"). The curve may be wrapped in one or more \"let\" or\n// \"coalesce\" expressions.\nfunction findZoomCurve(expression) {\n let result = null;\n if (expression instanceof Let$1) {\n result = findZoomCurve(expression.result);\n } else if (expression instanceof Coalesce$1) {\n for (const arg of expression.args) {\n result = findZoomCurve(arg);\n if (result) {\n break;\n }\n }\n } else if ((expression instanceof Step$1 || expression instanceof Interpolate$1) && expression.input instanceof CompoundExpression$1 && expression.input.name === 'zoom') {\n result = expression;\n }\n if (result instanceof ParsingError$1) {\n return result;\n }\n expression.eachChild(child => {\n const childResult = findZoomCurve(child);\n if (childResult instanceof ParsingError$1) {\n result = childResult;\n } else if (!result && childResult) {\n result = new ParsingError$1('', '\"zoom\" expression may only be used as input to a top-level \"step\" or \"interpolate\" expression.');\n } else if (result && childResult && result !== childResult) {\n result = new ParsingError$1('', 'Only one zoom-based \"step\" or \"interpolate\" subexpression may be used in an expression.');\n }\n });\n return result;\n}\nfunction getExpectedType(spec) {\n const types = {\n color: ColorType,\n string: StringType,\n number: NumberType,\n enum: StringType,\n boolean: BooleanType,\n formatted: FormattedType,\n resolvedImage: ResolvedImageType\n };\n if (spec.type === 'array') {\n return array$1(types[spec.value] || ValueType, spec.length);\n }\n return types[spec.type];\n}\nfunction getDefaultValue(spec) {\n if (spec.type === 'color' && (isFunction(spec.default) || Array.isArray(spec.default))) {\n // Special case for heatmap-color: it uses the 'default:' to define a\n // default color ramp, but createExpression expects a simple value to fall\n // back to in case of runtime errors\n return new Color$1(0, 0, 0, 0);\n } else if (spec.type === 'color') {\n return Color$1.parse(spec.default) || null;\n } else if (spec.default === undefined) {\n return null;\n } else {\n return spec.default;\n }\n}\n\n// \n// Turn jsonlint-lines-primitives objects into primitive objects\nfunction unbundle(value) {\n if (value instanceof Number || value instanceof String || value instanceof Boolean) {\n return value.valueOf();\n } else {\n return value;\n }\n}\nfunction deepUnbundle(value) {\n if (Array.isArray(value)) {\n return value.map(deepUnbundle);\n } else if (value instanceof Object && !(value instanceof Number || value instanceof String || value instanceof Boolean)) {\n const unbundledValue = {};\n for (const key in value) {\n unbundledValue[key] = deepUnbundle(value[key]);\n }\n return unbundledValue;\n }\n return unbundle(value);\n}\n\nvar spec = {\"$version\":8,\"$root\":{\"version\":{\"required\":true,\"type\":\"enum\",\"values\":[8]},\"name\":{\"type\":\"string\"},\"metadata\":{\"type\":\"*\"},\"center\":{\"type\":\"array\",\"value\":\"number\"},\"zoom\":{\"type\":\"number\"},\"bearing\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\"},\"pitch\":{\"type\":\"number\",\"default\":0,\"units\":\"degrees\"},\"light\":{\"type\":\"light\"},\"terrain\":{\"type\":\"terrain\"},\"fog\":{\"type\":\"fog\"},\"sources\":{\"required\":true,\"type\":\"sources\"},\"sprite\":{\"type\":\"string\"},\"glyphs\":{\"type\":\"string\"},\"transition\":{\"type\":\"transition\"},\"projection\":{\"type\":\"projection\"},\"layers\":{\"required\":true,\"type\":\"array\",\"value\":\"layer\"}},\"sources\":{\"*\":{\"type\":\"source\"}},\"source\":[\"source_vector\",\"source_raster\",\"source_raster_dem\",\"source_geojson\",\"source_video\",\"source_image\"],\"source_vector\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"vector\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"scheme\":{\"type\":\"enum\",\"values\":{\"xyz\":{},\"tms\":{}},\"default\":\"xyz\"},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"attribution\":{\"type\":\"string\"},\"promoteId\":{\"type\":\"promoteId\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_raster\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"raster\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"tileSize\":{\"type\":\"number\",\"default\":512,\"units\":\"pixels\"},\"scheme\":{\"type\":\"enum\",\"values\":{\"xyz\":{},\"tms\":{}},\"default\":\"xyz\"},\"attribution\":{\"type\":\"string\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_raster_dem\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"raster-dem\":{}}},\"url\":{\"type\":\"string\"},\"tiles\":{\"type\":\"array\",\"value\":\"string\"},\"bounds\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[-180,-85.051129,180,85.051129]},\"minzoom\":{\"type\":\"number\",\"default\":0},\"maxzoom\":{\"type\":\"number\",\"default\":22},\"tileSize\":{\"type\":\"number\",\"default\":512,\"units\":\"pixels\"},\"attribution\":{\"type\":\"string\"},\"encoding\":{\"type\":\"enum\",\"values\":{\"terrarium\":{},\"mapbox\":{}},\"default\":\"mapbox\"},\"volatile\":{\"type\":\"boolean\",\"default\":false},\"*\":{\"type\":\"*\"}},\"source_geojson\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"geojson\":{}}},\"data\":{\"type\":\"*\"},\"maxzoom\":{\"type\":\"number\",\"default\":18},\"attribution\":{\"type\":\"string\"},\"buffer\":{\"type\":\"number\",\"default\":128,\"maximum\":512,\"minimum\":0},\"filter\":{\"type\":\"*\"},\"tolerance\":{\"type\":\"number\",\"default\":0.375},\"cluster\":{\"type\":\"boolean\",\"default\":false},\"clusterRadius\":{\"type\":\"number\",\"default\":50,\"minimum\":0},\"clusterMaxZoom\":{\"type\":\"number\"},\"clusterMinPoints\":{\"type\":\"number\"},\"clusterProperties\":{\"type\":\"*\"},\"lineMetrics\":{\"type\":\"boolean\",\"default\":false},\"generateId\":{\"type\":\"boolean\",\"default\":false},\"promoteId\":{\"type\":\"promoteId\"}},\"source_video\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"video\":{}}},\"urls\":{\"required\":true,\"type\":\"array\",\"value\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"source_image\":{\"type\":{\"required\":true,\"type\":\"enum\",\"values\":{\"image\":{}}},\"url\":{\"required\":true,\"type\":\"string\"},\"coordinates\":{\"required\":true,\"type\":\"array\",\"length\":4,\"value\":{\"type\":\"array\",\"length\":2,\"value\":\"number\"}}},\"layer\":{\"id\":{\"type\":\"string\",\"required\":true},\"type\":{\"type\":\"enum\",\"values\":{\"fill\":{},\"line\":{},\"symbol\":{},\"circle\":{},\"heatmap\":{},\"fill-extrusion\":{},\"raster\":{},\"hillshade\":{},\"background\":{},\"sky\":{}},\"required\":true},\"metadata\":{\"type\":\"*\"},\"source\":{\"type\":\"string\"},\"source-layer\":{\"type\":\"string\"},\"minzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"maxzoom\":{\"type\":\"number\",\"minimum\":0,\"maximum\":24},\"filter\":{\"type\":\"filter\"},\"layout\":{\"type\":\"layout\"},\"paint\":{\"type\":\"paint\"}},\"layout\":[\"layout_fill\",\"layout_line\",\"layout_circle\",\"layout_heatmap\",\"layout_fill-extrusion\",\"layout_symbol\",\"layout_raster\",\"layout_hillshade\",\"layout_background\",\"layout_sky\"],\"layout_background\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_sky\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_fill\":{\"fill-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_circle\":{\"circle-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_heatmap\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_fill-extrusion\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"},\"fill-extrusion-edge-radius\":{\"type\":\"number\",\"private\":true,\"default\":0,\"minimum\":0,\"maximum\":1,\"property-type\":\"constant\"}},\"layout_line\":{\"line-cap\":{\"type\":\"enum\",\"values\":{\"butt\":{},\"round\":{},\"square\":{}},\"default\":\"butt\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-join\":{\"type\":\"enum\",\"values\":{\"bevel\":{},\"round\":{},\"miter\":{}},\"default\":\"miter\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-miter-limit\":{\"type\":\"number\",\"default\":2,\"requires\":[{\"line-join\":\"miter\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-round-limit\":{\"type\":\"number\",\"default\":1.05,\"requires\":[{\"line-join\":\"round\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_symbol\":{\"symbol-placement\":{\"type\":\"enum\",\"values\":{\"point\":{},\"line\":{},\"line-center\":{}},\"default\":\"point\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-spacing\":{\"type\":\"number\",\"default\":250,\"minimum\":1,\"units\":\"pixels\",\"requires\":[{\"symbol-placement\":\"line\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-avoid-edges\":{\"type\":\"boolean\",\"default\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"symbol-sort-key\":{\"type\":\"number\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"symbol-z-order\":{\"type\":\"enum\",\"values\":{\"auto\":{},\"viewport-y\":{},\"source\":{}},\"default\":\"auto\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-allow-overlap\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-ignore-placement\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-optional\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\",\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-rotation-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-size\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"units\":\"factor of the original icon size\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-text-fit\":{\"type\":\"enum\",\"values\":{\"none\":{},\"width\":{},\"height\":{},\"both\":{}},\"default\":\"none\",\"requires\":[\"icon-image\",\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-text-fit-padding\":{\"type\":\"array\",\"value\":\"number\",\"length\":4,\"default\":[0,0,0,0],\"units\":\"pixels\",\"requires\":[\"icon-image\",\"text-field\",{\"icon-text-fit\":[\"both\",\"width\",\"height\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-image\":{\"type\":\"resolvedImage\",\"tokens\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-keep-upright\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"icon-image\",{\"icon-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-offset\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-anchor\":{\"type\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"icon-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotation-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{},\"auto\":{}},\"default\":\"auto\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-field\":{\"type\":\"formatted\",\"default\":\"\",\"tokens\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-font\":{\"type\":\"array\",\"value\":\"string\",\"default\":[\"Open Sans Regular\",\"Arial Unicode MS Regular\"],\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-size\":{\"type\":\"number\",\"default\":16,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-width\":{\"type\":\"number\",\"default\":10,\"minimum\":0,\"units\":\"ems\",\"requires\":[\"text-field\",{\"symbol-placement\":[\"point\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-line-height\":{\"type\":\"number\",\"default\":1.2,\"units\":\"ems\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-letter-spacing\":{\"type\":\"number\",\"default\":0,\"units\":\"ems\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-justify\":{\"type\":\"enum\",\"values\":{\"auto\":{},\"left\":{},\"center\":{},\"right\":{}},\"default\":\"center\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-radial-offset\":{\"type\":\"number\",\"units\":\"ems\",\"default\":0,\"requires\":[\"text-field\"],\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]}},\"text-variable-anchor\":{\"type\":\"array\",\"value\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"requires\":[\"text-field\",{\"symbol-placement\":[\"point\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-anchor\":{\"type\":\"enum\",\"values\":{\"center\":{},\"left\":{},\"right\":{},\"top\":{},\"bottom\":{},\"top-left\":{},\"top-right\":{},\"bottom-left\":{},\"bottom-right\":{}},\"default\":\"center\",\"requires\":[\"text-field\",{\"!\":\"text-variable-anchor\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-max-angle\":{\"type\":\"number\",\"default\":45,\"units\":\"degrees\",\"requires\":[\"text-field\",{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-writing-mode\":{\"type\":\"array\",\"value\":\"enum\",\"values\":{\"horizontal\":{},\"vertical\":{}},\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"units\":\"degrees\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-padding\":{\"type\":\"number\",\"default\":2,\"minimum\":0,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-keep-upright\":{\"type\":\"boolean\",\"default\":true,\"requires\":[\"text-field\",{\"text-rotation-alignment\":\"map\"},{\"symbol-placement\":[\"line\",\"line-center\"]}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-transform\":{\"type\":\"enum\",\"values\":{\"none\":{},\"uppercase\":{},\"lowercase\":{}},\"default\":\"none\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-offset\":{\"type\":\"array\",\"value\":\"number\",\"units\":\"ems\",\"length\":2,\"default\":[0,0],\"requires\":[\"text-field\",{\"!\":\"text-radial-offset\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"text-allow-overlap\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-ignore-placement\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-optional\":{\"type\":\"boolean\",\"default\":false,\"requires\":[\"text-field\",\"icon-image\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_raster\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"layout_hillshade\":{\"visibility\":{\"type\":\"enum\",\"values\":{\"visible\":{},\"none\":{}},\"default\":\"visible\",\"property-type\":\"constant\"}},\"filter\":{\"type\":\"array\",\"value\":\"*\"},\"filter_symbol\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\",\"pitch\",\"distance-from-center\"]}},\"filter_fill\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_line\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_circle\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_fill-extrusion\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_heatmap\":{\"type\":\"boolean\",\"default\":false,\"transition\":false,\"property-type\":\"data-driven\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]}},\"filter_operator\":{\"type\":\"enum\",\"values\":{\"==\":{},\"!=\":{},\">\":{},\">=\":{},\"<\":{},\"<=\":{},\"in\":{},\"!in\":{},\"all\":{},\"any\":{},\"none\":{},\"has\":{},\"!has\":{},\"within\":{}}},\"geometry_type\":{\"type\":\"enum\",\"values\":{\"Point\":{},\"LineString\":{},\"Polygon\":{}}},\"function\":{\"expression\":{\"type\":\"expression\"},\"stops\":{\"type\":\"array\",\"value\":\"function_stop\"},\"base\":{\"type\":\"number\",\"default\":1,\"minimum\":0},\"property\":{\"type\":\"string\",\"default\":\"$zoom\"},\"type\":{\"type\":\"enum\",\"values\":{\"identity\":{},\"exponential\":{},\"interval\":{},\"categorical\":{}},\"default\":\"exponential\"},\"colorSpace\":{\"type\":\"enum\",\"values\":{\"rgb\":{},\"lab\":{},\"hcl\":{}},\"default\":\"rgb\"},\"default\":{\"type\":\"*\",\"required\":false}},\"function_stop\":{\"type\":\"array\",\"minimum\":0,\"maximum\":24,\"value\":[\"number\",\"color\"],\"length\":2},\"expression\":{\"type\":\"array\",\"value\":\"*\",\"minimum\":1},\"expression_name\":{\"type\":\"enum\",\"values\":{\"let\":{\"group\":\"Variable binding\"},\"var\":{\"group\":\"Variable binding\"},\"literal\":{\"group\":\"Types\"},\"array\":{\"group\":\"Types\"},\"at\":{\"group\":\"Lookup\"},\"in\":{\"group\":\"Lookup\"},\"index-of\":{\"group\":\"Lookup\"},\"slice\":{\"group\":\"Lookup\"},\"case\":{\"group\":\"Decision\"},\"match\":{\"group\":\"Decision\"},\"coalesce\":{\"group\":\"Decision\"},\"step\":{\"group\":\"Ramps, scales, curves\"},\"interpolate\":{\"group\":\"Ramps, scales, curves\"},\"interpolate-hcl\":{\"group\":\"Ramps, scales, curves\"},\"interpolate-lab\":{\"group\":\"Ramps, scales, curves\"},\"ln2\":{\"group\":\"Math\"},\"pi\":{\"group\":\"Math\"},\"e\":{\"group\":\"Math\"},\"typeof\":{\"group\":\"Types\"},\"string\":{\"group\":\"Types\"},\"number\":{\"group\":\"Types\"},\"boolean\":{\"group\":\"Types\"},\"object\":{\"group\":\"Types\"},\"collator\":{\"group\":\"Types\"},\"format\":{\"group\":\"Types\"},\"image\":{\"group\":\"Types\"},\"number-format\":{\"group\":\"Types\"},\"to-string\":{\"group\":\"Types\"},\"to-number\":{\"group\":\"Types\"},\"to-boolean\":{\"group\":\"Types\"},\"to-rgba\":{\"group\":\"Color\"},\"to-color\":{\"group\":\"Types\"},\"rgb\":{\"group\":\"Color\"},\"rgba\":{\"group\":\"Color\"},\"get\":{\"group\":\"Lookup\"},\"has\":{\"group\":\"Lookup\"},\"length\":{\"group\":\"Lookup\"},\"properties\":{\"group\":\"Feature data\"},\"feature-state\":{\"group\":\"Feature data\"},\"geometry-type\":{\"group\":\"Feature data\"},\"id\":{\"group\":\"Feature data\"},\"zoom\":{\"group\":\"Camera\"},\"pitch\":{\"group\":\"Camera\"},\"distance-from-center\":{\"group\":\"Camera\"},\"heatmap-density\":{\"group\":\"Heatmap\"},\"line-progress\":{\"group\":\"Feature data\"},\"sky-radial-progress\":{\"group\":\"sky\"},\"accumulated\":{\"group\":\"Feature data\"},\"+\":{\"group\":\"Math\"},\"*\":{\"group\":\"Math\"},\"-\":{\"group\":\"Math\"},\"/\":{\"group\":\"Math\"},\"%\":{\"group\":\"Math\"},\"^\":{\"group\":\"Math\"},\"sqrt\":{\"group\":\"Math\"},\"log10\":{\"group\":\"Math\"},\"ln\":{\"group\":\"Math\"},\"log2\":{\"group\":\"Math\"},\"sin\":{\"group\":\"Math\"},\"cos\":{\"group\":\"Math\"},\"tan\":{\"group\":\"Math\"},\"asin\":{\"group\":\"Math\"},\"acos\":{\"group\":\"Math\"},\"atan\":{\"group\":\"Math\"},\"min\":{\"group\":\"Math\"},\"max\":{\"group\":\"Math\"},\"round\":{\"group\":\"Math\"},\"abs\":{\"group\":\"Math\"},\"ceil\":{\"group\":\"Math\"},\"floor\":{\"group\":\"Math\"},\"distance\":{\"group\":\"Math\"},\"==\":{\"group\":\"Decision\"},\"!=\":{\"group\":\"Decision\"},\">\":{\"group\":\"Decision\"},\"<\":{\"group\":\"Decision\"},\">=\":{\"group\":\"Decision\"},\"<=\":{\"group\":\"Decision\"},\"all\":{\"group\":\"Decision\"},\"any\":{\"group\":\"Decision\"},\"!\":{\"group\":\"Decision\"},\"within\":{\"group\":\"Decision\"},\"is-supported-script\":{\"group\":\"String\"},\"upcase\":{\"group\":\"String\"},\"downcase\":{\"group\":\"String\"},\"concat\":{\"group\":\"String\"},\"resolved-locale\":{\"group\":\"String\"}}},\"fog\":{\"range\":{\"type\":\"array\",\"default\":[0.5,10],\"minimum\":-20,\"maximum\":20,\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]}},\"color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":\"#ffffff\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"high-color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":\"#245cdf\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"space-color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":[\"interpolate\",[\"linear\"],[\"zoom\"],4,\"#010b19\",7,\"#367ab9\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"horizon-blend\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":[\"interpolate\",[\"linear\"],[\"zoom\"],4,0.2,7,0.1],\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"star-intensity\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":[\"interpolate\",[\"linear\"],[\"zoom\"],5,0.35,6,0],\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true}},\"light\":{\"anchor\":{\"type\":\"enum\",\"default\":\"viewport\",\"values\":{\"map\":{},\"viewport\":{}},\"property-type\":\"data-constant\",\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]}},\"position\":{\"type\":\"array\",\"default\":[1.15,210,30],\"length\":3,\"value\":\"number\",\"property-type\":\"data-constant\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]}},\"color\":{\"type\":\"color\",\"property-type\":\"data-constant\",\"default\":\"#ffffff\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"intensity\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":0.5,\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true}},\"projection\":{\"name\":{\"type\":\"enum\",\"values\":{\"albers\":{},\"equalEarth\":{},\"equirectangular\":{},\"lambertConformalConic\":{},\"mercator\":{},\"naturalEarth\":{},\"winkelTripel\":{},\"globe\":{}},\"default\":\"mercator\",\"required\":true},\"center\":{\"type\":\"array\",\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"minimum\":[-180,-90],\"maximum\":[180,90],\"transition\":false,\"requires\":[{\"name\":[\"albers\",\"lambertConformalConic\"]}]},\"parallels\":{\"type\":\"array\",\"length\":2,\"value\":\"number\",\"property-type\":\"data-constant\",\"minimum\":[-90,-90],\"maximum\":[90,90],\"transition\":false,\"requires\":[{\"name\":[\"albers\",\"lambertConformalConic\"]}]}},\"terrain\":{\"source\":{\"type\":\"string\",\"required\":true},\"exaggeration\":{\"type\":\"number\",\"property-type\":\"data-constant\",\"default\":1,\"minimum\":0,\"maximum\":1000,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true,\"requires\":[\"source\"]}},\"paint\":[\"paint_fill\",\"paint_line\",\"paint_circle\",\"paint_heatmap\",\"paint_fill-extrusion\",\"paint_symbol\",\"paint_raster\",\"paint_hillshade\",\"paint_background\",\"paint_sky\"],\"paint_fill\":{\"fill-antialias\":{\"type\":\"boolean\",\"default\":true,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-outline-color\":{\"type\":\"color\",\"transition\":true,\"requires\":[{\"!\":\"fill-pattern\"},{\"fill-antialias\":true}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-pattern\":{\"type\":\"resolvedImage\",\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"}},\"paint_fill-extrusion\":{\"fill-extrusion-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"fill-extrusion-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"fill-extrusion-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-pattern\":{\"type\":\"resolvedImage\",\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-height\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"meters\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-base\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"meters\",\"transition\":true,\"requires\":[\"fill-extrusion-height\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"fill-extrusion-vertical-gradient\":{\"type\":\"boolean\",\"default\":true,\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"fill-extrusion-ambient-occlusion-intensity\":{\"property-type\":\"data-constant\",\"type\":\"number\",\"private\":true,\"default\":0,\"minimum\":0,\"maximum\":1,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true},\"fill-extrusion-ambient-occlusion-radius\":{\"property-type\":\"data-constant\",\"type\":\"number\",\"private\":true,\"default\":3,\"minimum\":0,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"transition\":true,\"requires\":[\"fill-extrusion-edge-radius\"]}},\"paint_line\":{\"line-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"line-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"line-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"line-width\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-gap-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-offset\":{\"type\":\"number\",\"default\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"line-dasharray\":{\"type\":\"array\",\"value\":\"number\",\"minimum\":0,\"transition\":false,\"units\":\"line widths\",\"requires\":[{\"!\":\"line-pattern\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-pattern\":{\"type\":\"resolvedImage\",\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\",\"feature\"]},\"property-type\":\"data-driven\"},\"line-gradient\":{\"type\":\"color\",\"transition\":false,\"requires\":[{\"!\":\"line-pattern\"},{\"source\":\"geojson\",\"has\":{\"lineMetrics\":true}}],\"expression\":{\"interpolated\":true,\"parameters\":[\"line-progress\"]},\"property-type\":\"color-ramp\"},\"line-trim-offset\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"minimum\":[0,0],\"maximum\":[1,1],\"transition\":false,\"requires\":[{\"source\":\"geojson\",\"has\":{\"lineMetrics\":true}}],\"property-type\":\"constant\"}},\"paint_circle\":{\"circle-radius\":{\"type\":\"number\",\"default\":5,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-blur\":{\"type\":\"number\",\"default\":0,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"circle-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-scale\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-pitch-alignment\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"viewport\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"circle-stroke-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"circle-stroke-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"}},\"paint_heatmap\":{\"heatmap-radius\":{\"type\":\"number\",\"default\":30,\"minimum\":1,\"transition\":true,\"units\":\"pixels\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-weight\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"heatmap-intensity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"heatmap-color\":{\"type\":\"color\",\"default\":[\"interpolate\",[\"linear\"],[\"heatmap-density\"],0,\"rgba(0, 0, 255, 0)\",0.1,\"royalblue\",0.3,\"cyan\",0.5,\"lime\",0.7,\"yellow\",1,\"red\"],\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"heatmap-density\"]},\"property-type\":\"color-ramp\"},\"heatmap-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_symbol\":{\"icon-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"transition\":true,\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"icon-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"requires\":[\"icon-image\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"icon-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"icon-image\",\"icon-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"overridable\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-color\":{\"type\":\"color\",\"default\":\"rgba(0, 0, 0, 0)\",\"transition\":true,\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-width\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-halo-blur\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\",\"feature\",\"feature-state\"]},\"property-type\":\"data-driven\"},\"text-translate\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"default\":[0,0],\"transition\":true,\"units\":\"pixels\",\"requires\":[\"text-field\"],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"text-translate-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"map\",\"requires\":[\"text-field\",\"text-translate\"],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_raster\":{\"raster-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-hue-rotate\":{\"type\":\"number\",\"default\":0,\"period\":360,\"transition\":true,\"units\":\"degrees\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-min\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-brightness-max\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-saturation\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-contrast\":{\"type\":\"number\",\"default\":0,\"minimum\":-1,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-resampling\":{\"type\":\"enum\",\"values\":{\"linear\":{},\"nearest\":{}},\"default\":\"linear\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"raster-fade-duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"transition\":false,\"units\":\"milliseconds\",\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_hillshade\":{\"hillshade-illumination-direction\":{\"type\":\"number\",\"default\":335,\"minimum\":0,\"maximum\":359,\"transition\":false,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-illumination-anchor\":{\"type\":\"enum\",\"values\":{\"map\":{},\"viewport\":{}},\"default\":\"viewport\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-exaggeration\":{\"type\":\"number\",\"default\":0.5,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-shadow-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-highlight-color\":{\"type\":\"color\",\"default\":\"#FFFFFF\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"hillshade-accent-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_background\":{\"background-color\":{\"type\":\"color\",\"default\":\"#000000\",\"transition\":true,\"requires\":[{\"!\":\"background-pattern\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-pattern\":{\"type\":\"resolvedImage\",\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"background-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"paint_sky\":{\"sky-type\":{\"type\":\"enum\",\"values\":{\"gradient\":{},\"atmosphere\":{}},\"default\":\"atmosphere\",\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-atmosphere-sun\":{\"type\":\"array\",\"value\":\"number\",\"length\":2,\"units\":\"degrees\",\"minimum\":[0,0],\"maximum\":[360,180],\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-atmosphere-sun-intensity\":{\"type\":\"number\",\"requires\":[{\"sky-type\":\"atmosphere\"}],\"default\":10,\"minimum\":0,\"maximum\":100,\"transition\":false,\"property-type\":\"data-constant\"},\"sky-gradient-center\":{\"type\":\"array\",\"requires\":[{\"sky-type\":\"gradient\"}],\"value\":\"number\",\"default\":[0,0],\"length\":2,\"units\":\"degrees\",\"minimum\":[0,0],\"maximum\":[360,180],\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-gradient-radius\":{\"type\":\"number\",\"requires\":[{\"sky-type\":\"gradient\"}],\"default\":90,\"minimum\":0,\"maximum\":180,\"transition\":false,\"expression\":{\"interpolated\":false,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"},\"sky-gradient\":{\"type\":\"color\",\"default\":[\"interpolate\",[\"linear\"],[\"sky-radial-progress\"],0.8,\"#87ceeb\",1,\"white\"],\"transition\":false,\"requires\":[{\"sky-type\":\"gradient\"}],\"expression\":{\"interpolated\":true,\"parameters\":[\"sky-radial-progress\"]},\"property-type\":\"color-ramp\"},\"sky-atmosphere-halo-color\":{\"type\":\"color\",\"default\":\"white\",\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"property-type\":\"data-constant\"},\"sky-atmosphere-color\":{\"type\":\"color\",\"default\":\"white\",\"transition\":false,\"requires\":[{\"sky-type\":\"atmosphere\"}],\"property-type\":\"data-constant\"},\"sky-opacity\":{\"type\":\"number\",\"default\":1,\"minimum\":0,\"maximum\":1,\"transition\":true,\"expression\":{\"interpolated\":true,\"parameters\":[\"zoom\"]},\"property-type\":\"data-constant\"}},\"transition\":{\"duration\":{\"type\":\"number\",\"default\":300,\"minimum\":0,\"units\":\"milliseconds\"},\"delay\":{\"type\":\"number\",\"default\":0,\"minimum\":0,\"units\":\"milliseconds\"}},\"property-type\":{\"data-driven\":{\"type\":\"property-type\"},\"color-ramp\":{\"type\":\"property-type\"},\"data-constant\":{\"type\":\"property-type\"},\"constant\":{\"type\":\"property-type\"}},\"promoteId\":{\"*\":{\"type\":\"string\"}}};\n\n// \nfunction isExpressionFilter(filter) {\n if (filter === true || filter === false) {\n return true;\n }\n if (!Array.isArray(filter) || filter.length === 0) {\n return false;\n }\n switch (filter[0]) {\n case 'has':\n return filter.length >= 2 && filter[1] !== '$id' && filter[1] !== '$type';\n case 'in':\n return filter.length >= 3 && (typeof filter[1] !== 'string' || Array.isArray(filter[2]));\n case '!in':\n case '!has':\n case 'none':\n return false;\n case '==':\n case '!=':\n case '>':\n case '>=':\n case '<':\n case '<=':\n return filter.length !== 3 || (Array.isArray(filter[1]) || Array.isArray(filter[2]));\n case 'any':\n case 'all':\n for (const f of filter.slice(1)) {\n if (!isExpressionFilter(f) && typeof f !== 'boolean') {\n return false;\n }\n }\n return true;\n default:\n return true;\n }\n}\n/**\n * Given a filter expressed as nested arrays, return a new function\n * that evaluates whether a given feature (with a .properties or .tags property)\n * passes its test.\n *\n * @private\n * @param {Array} filter mapbox gl filter\n * @param {string} layerType the type of the layer this filter will be applied to.\n * @returns {Function} filter-evaluating function\n */\nfunction createFilter(filter, layerType = 'fill') {\n if (filter === null || filter === undefined) {\n return {\n filter: () => true,\n needGeometry: false,\n needFeature: false\n };\n }\n if (!isExpressionFilter(filter)) {\n filter = convertFilter(filter);\n }\n const filterExp = filter;\n let staticFilter = true;\n try {\n staticFilter = extractStaticFilter(filterExp);\n } catch (e) {\n console.warn(`Failed to extract static filter. Filter will continue working, but at higher memory usage and slower framerate.\nThis is most likely a bug, please report this via https://github.com/mapbox/mapbox-gl-js/issues/new?assignees=&labels=&template=Bug_report.md\nand paste the contents of this message in the report.\nThank you!\nFilter Expression:\n${ JSON.stringify(filterExp, null, 2) }\n `);\n }\n // Compile the static component of the filter\n const filterSpec = spec[`filter_${ layerType }`];\n const compiledStaticFilter = createExpression(staticFilter, filterSpec);\n let filterFunc = null;\n if (compiledStaticFilter.result === 'error') {\n throw new Error(compiledStaticFilter.value.map(err => `${ err.key }: ${ err.message }`).join(', '));\n } else {\n filterFunc = (globalProperties, feature, canonical) => compiledStaticFilter.value.evaluate(globalProperties, feature, {}, canonical);\n }\n // If the static component is not equal to the entire filter then we have a dynamic component\n // Compile the dynamic component separately\n let dynamicFilterFunc = null;\n let needFeature = null;\n if (staticFilter !== filterExp) {\n const compiledDynamicFilter = createExpression(filterExp, filterSpec);\n if (compiledDynamicFilter.result === 'error') {\n throw new Error(compiledDynamicFilter.value.map(err => `${ err.key }: ${ err.message }`).join(', '));\n } else {\n dynamicFilterFunc = (globalProperties, feature, canonical, featureTileCoord, featureDistanceData) => compiledDynamicFilter.value.evaluate(globalProperties, feature, {}, canonical, undefined, undefined, featureTileCoord, featureDistanceData);\n needFeature = !isFeatureConstant(compiledDynamicFilter.value.expression);\n }\n }\n filterFunc = filterFunc;\n const needGeometry = geometryNeeded(staticFilter);\n return {\n filter: filterFunc,\n dynamicFilter: dynamicFilterFunc ? dynamicFilterFunc : undefined,\n needGeometry,\n needFeature: !!needFeature\n };\n}\nfunction extractStaticFilter(filter) {\n if (!isDynamicFilter(filter)) {\n return filter;\n }\n // Shallow copy so we can replace expressions in-place\n let result = deepUnbundle(filter);\n // 1. Union branches\n unionDynamicBranches(result);\n // 2. Collapse dynamic conditions to `true`\n result = collapseDynamicBooleanExpressions(result);\n return result;\n}\nfunction collapseDynamicBooleanExpressions(expression) {\n if (!Array.isArray(expression)) {\n return expression;\n }\n const collapsed = collapsedExpression(expression);\n if (collapsed === true) {\n return collapsed;\n } else {\n return collapsed.map(subExpression => collapseDynamicBooleanExpressions(subExpression));\n }\n}\n/**\n * Traverses the expression and replaces all instances of branching on a\n * `dynamic` conditional (such as `['pitch']` or `['distance-from-center']`)\n * into an `any` expression.\n * This ensures that all possible outcomes of a `dynamic` branch are considered\n * when evaluating the expression upfront during filtering.\n *\n * @param {Array} filter the filter expression mutated in-place.\n */\nfunction unionDynamicBranches(filter) {\n let isBranchingDynamically = false;\n const branches = [];\n if (filter[0] === 'case') {\n for (let i = 1; i < filter.length - 1; i += 2) {\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[i]);\n branches.push(filter[i + 1]);\n }\n branches.push(filter[filter.length - 1]);\n } else if (filter[0] === 'match') {\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[1]);\n for (let i = 2; i < filter.length - 1; i += 2) {\n branches.push(filter[i + 1]);\n }\n branches.push(filter[filter.length - 1]);\n } else if (filter[0] === 'step') {\n isBranchingDynamically = isBranchingDynamically || isDynamicFilter(filter[1]);\n for (let i = 1; i < filter.length - 1; i += 2) {\n branches.push(filter[i + 1]);\n }\n }\n if (isBranchingDynamically) {\n filter.length = 0;\n filter.push('any', ...branches);\n }\n // traverse and recurse into children\n for (let i = 1; i < filter.length; i++) {\n unionDynamicBranches(filter[i]);\n }\n}\nfunction isDynamicFilter(filter) {\n // Base Cases\n if (!Array.isArray(filter)) {\n return false;\n }\n if (isRootExpressionDynamic(filter[0])) {\n return true;\n }\n for (let i = 1; i < filter.length; i++) {\n const child = filter[i];\n if (isDynamicFilter(child)) {\n return true;\n }\n }\n return false;\n}\nfunction isRootExpressionDynamic(expression) {\n return expression === 'pitch' || expression === 'distance-from-center';\n}\nconst dynamicConditionExpressions = new Set([\n 'in',\n '==',\n '!=',\n '>',\n '>=',\n '<',\n '<=',\n 'to-boolean'\n]);\nfunction collapsedExpression(expression) {\n if (dynamicConditionExpressions.has(expression[0])) {\n for (let i = 1; i < expression.length; i++) {\n const param = expression[i];\n if (isDynamicFilter(param)) {\n return true;\n }\n }\n }\n return expression;\n}\n// Comparison function to sort numbers and strings\nfunction compare(a, b) {\n return a < b ? -1 : a > b ? 1 : 0;\n}\nfunction geometryNeeded(filter) {\n if (!Array.isArray(filter))\n return false;\n if (filter[0] === 'within')\n return true;\n for (let index = 1; index < filter.length; index++) {\n if (geometryNeeded(filter[index]))\n return true;\n }\n return false;\n}\nfunction convertFilter(filter) {\n if (!filter)\n return true;\n const op = filter[0];\n if (filter.length <= 1)\n return op !== 'any';\n const converted = op === '==' ? convertComparisonOp(filter[1], filter[2], '==') : op === '!=' ? convertNegation(convertComparisonOp(filter[1], filter[2], '==')) : op === '<' || op === '>' || op === '<=' || op === '>=' ? convertComparisonOp(filter[1], filter[2], op) : op === 'any' ? convertDisjunctionOp(filter.slice(1)) : op === 'all' ? ['all'].concat(filter.slice(1).map(convertFilter)) : op === 'none' ? ['all'].concat(filter.slice(1).map(convertFilter).map(convertNegation)) : op === 'in' ? convertInOp(filter[1], filter.slice(2)) : op === '!in' ? convertNegation(convertInOp(filter[1], filter.slice(2))) : op === 'has' ? convertHasOp(filter[1]) : op === '!has' ? convertNegation(convertHasOp(filter[1])) : op === 'within' ? filter : true;\n return converted;\n}\nfunction convertComparisonOp(property, value, op) {\n switch (property) {\n case '$type':\n return [\n `filter-type-${ op }`,\n value\n ];\n case '$id':\n return [\n `filter-id-${ op }`,\n value\n ];\n default:\n return [\n `filter-${ op }`,\n property,\n value\n ];\n }\n}\nfunction convertDisjunctionOp(filters) {\n return ['any'].concat(filters.map(convertFilter));\n}\nfunction convertInOp(property, values) {\n if (values.length === 0) {\n return false;\n }\n switch (property) {\n case '$type':\n return [\n `filter-type-in`,\n [\n 'literal',\n values\n ]\n ];\n case '$id':\n return [\n `filter-id-in`,\n [\n 'literal',\n values\n ]\n ];\n default:\n if (values.length > 200 && !values.some(v => typeof v !== typeof values[0])) {\n return [\n 'filter-in-large',\n property,\n [\n 'literal',\n values.sort(compare)\n ]\n ];\n } else {\n return [\n 'filter-in-small',\n property,\n [\n 'literal',\n values\n ]\n ];\n }\n }\n}\nfunction convertHasOp(property) {\n switch (property) {\n case '$type':\n return true;\n case '$id':\n return [`filter-has-id`];\n default:\n return [\n `filter-has`,\n property\n ];\n }\n}\nfunction convertNegation(filter) {\n return [\n '!',\n filter\n ];\n}\n\n// \nvar refProperties = [\n 'type',\n 'source',\n 'source-layer',\n 'minzoom',\n 'maxzoom',\n 'filter',\n 'layout'\n];\n\n// \nfunction deref(layer, parent) {\n const result = {};\n for (const k in layer) {\n if (k !== 'ref') {\n result[k] = layer[k];\n }\n }\n refProperties.forEach(k => {\n if (k in parent) {\n result[k] = parent[k];\n }\n });\n return result;\n}\n/**\n * Given an array of layers, some of which may contain `ref` properties\n * whose value is the `id` of another property, return a new array where\n * such layers have been augmented with the 'type', 'source', etc. properties\n * from the parent layer, and the `ref` property has been removed.\n *\n * The input is not modified. The output may contain references to portions\n * of the input.\n *\n * @private\n * @param {Array} layers\n * @returns {Array}\n */\nfunction derefLayers(layers) {\n layers = layers.slice();\n const map = Object.create(null);\n for (let i = 0; i < layers.length; i++) {\n map[layers[i].id] = layers[i];\n }\n for (let i = 0; i < layers.length; i++) {\n if ('ref' in layers[i]) {\n layers[i] = deref(layers[i], map[layers[i].ref]);\n }\n }\n return layers;\n}\n\nvar fontWeights = {\n thin: 100,\n hairline: 100,\n 'ultra-light': 100,\n 'extra-light': 100,\n light: 200,\n book: 300,\n regular: 400,\n normal: 400,\n plain: 400,\n roman: 400,\n standard: 400,\n medium: 500,\n 'semi-bold': 600,\n 'demi-bold': 600,\n bold: 700,\n heavy: 800,\n black: 800,\n 'extra-bold': 800,\n 'ultra-black': 900,\n 'extra-black': 900,\n 'ultra-bold': 900,\n 'heavy-black': 900,\n fat: 900,\n poster: 900\n};\nvar sp = ' ';\nvar italicRE = /(italic|oblique)$/i;\nvar fontCache = {};\nvar mapboxToCssFont = function (fonts, size, lineHeight) {\n var cssData = fontCache[fonts];\n if (!cssData) {\n if (!Array.isArray(fonts)) {\n fonts = [fonts];\n }\n var weight = 400;\n var style = 'normal';\n var fontFamilies = [];\n var haveWeight, haveStyle;\n for (var i = 0, ii = fonts.length; i < ii; ++i) {\n var font = fonts[i];\n var parts = font.split(' ');\n var maybeWeight = parts[parts.length - 1].toLowerCase();\n if (maybeWeight == 'normal' || maybeWeight == 'italic' || maybeWeight == 'oblique') {\n style = haveStyle ? style : maybeWeight;\n parts.pop();\n maybeWeight = parts[parts.length - 1].toLowerCase();\n } else if (italicRE.test(maybeWeight)) {\n maybeWeight = maybeWeight.replace(italicRE, '');\n style = haveStyle ? style : parts[parts.length - 1].replace(maybeWeight, '');\n }\n for (var w in fontWeights) {\n var previousPart = parts.length > 1 ? parts[parts.length - 2].toLowerCase() : '';\n if (maybeWeight == w || maybeWeight == w.replace('-', '') || previousPart + '-' + maybeWeight == w) {\n weight = haveWeight ? weight : fontWeights[w];\n parts.pop();\n if (previousPart && w.startsWith(previousPart)) {\n parts.pop();\n }\n break;\n }\n }\n if (!haveWeight && typeof maybeWeight == 'number') {\n weight = maybeWeight;\n }\n var fontFamily = parts.join(sp).replace('Klokantech Noto Sans', 'Noto Sans');\n if (fontFamily.indexOf(sp) !== -1) {\n fontFamily = '\"' + fontFamily + '\"';\n }\n fontFamilies.push(fontFamily);\n }\n // CSS font property: font-style font-weight font-size/line-height font-family\n cssData = fontCache[fonts] = [\n style,\n weight,\n fontFamilies\n ];\n }\n return cssData[0] + sp + cssData[1] + sp + size + 'px' + (lineHeight ? '/' + lineHeight : '') + sp + cssData[2];\n};\n\nvar mb2css = /*@__PURE__*/getDefaultExportFromCjs(mapboxToCssFont);\n\nconst mapboxBaseUrl = 'https://api.mapbox.com';\n/**\n * Gets the path from a mapbox:// URL.\n * @param {string} url The Mapbox URL.\n * @return {string} The path.\n * @private\n */\nfunction getMapboxPath(url) {\n const startsWith = 'mapbox://';\n if (url.indexOf(startsWith) !== 0) {\n return '';\n }\n return url.slice(startsWith.length);\n}\n/**\n * Turns mapbox:// sprite URLs into resolvable URLs.\n * @param {string} url The sprite URL.\n * @param {string} token The access token.\n * @param {string} styleUrl The style URL.\n * @return {string} A resolvable URL.\n * @private\n */\nfunction normalizeSpriteUrl(url, token, styleUrl) {\n const mapboxPath = getMapboxPath(url);\n if (!mapboxPath) {\n return decodeURI(new URL(url, styleUrl).href);\n }\n const startsWith = 'sprites/';\n if (mapboxPath.indexOf(startsWith) !== 0) {\n throw new Error(`unexpected sprites url: ${ url }`);\n }\n const sprite = mapboxPath.slice(startsWith.length);\n return `${ mapboxBaseUrl }/styles/v1/${ sprite }/sprite?access_token=${ token }`;\n}\n/**\n * Turns mapbox:// style URLs into resolvable URLs.\n * @param {string} url The style URL.\n * @param {string} token The access token.\n * @return {string} A resolvable URL.\n * @private\n */\nfunction normalizeStyleUrl(url, token) {\n const mapboxPath = getMapboxPath(url);\n if (!mapboxPath) {\n return decodeURI(new URL(url, location.href).href);\n }\n const startsWith = 'styles/';\n if (mapboxPath.indexOf(startsWith) !== 0) {\n throw new Error(`unexpected style url: ${ url }`);\n }\n const style = mapboxPath.slice(startsWith.length);\n return `${ mapboxBaseUrl }/styles/v1/${ style }?&access_token=${ token }`;\n}\n/**\n * Turns mapbox:// source URLs into vector tile URL templates.\n * @param {string} url The source URL.\n * @param {string} token The access token.\n * @param {string} tokenParam The access token key.\n * @param {string} styleUrl The style URL.\n * @return {string} A vector tile template.\n * @private\n */\nfunction normalizeSourceUrl(url, token, tokenParam, styleUrl) {\n const urlObject = new URL(url, styleUrl);\n const mapboxPath = getMapboxPath(url);\n if (!mapboxPath) {\n if (!token) {\n return decodeURI(urlObject.href);\n }\n urlObject.searchParams.set(tokenParam, token);\n return decodeURI(urlObject.href);\n }\n if (mapboxPath === 'mapbox.satellite') {\n const sizeFactor = window.devicePixelRatio >= 1.5 ? '@2x' : '';\n return `https://api.mapbox.com/v4/${ mapboxPath }/{z}/{x}/{y}${ sizeFactor }.webp?access_token=${ token }`;\n }\n return `https://{a-d}.tiles.mapbox.com/v4/${ mapboxPath }/{z}/{x}/{y}.vector.pbf?access_token=${ token }`;\n}\n\n/** @typedef {'Style'|'Source'|'Sprite'|'SpriteImage'|'Tiles'|'GeoJSON'} ResourceType */\n/** @typedef {import(\"ol\").Map} Map */\n/** @typedef {import(\"ol/layer\").Layer} Layer */\n/** @typedef {import(\"ol/layer\").Group} LayerGroup */\n/** @typedef {import(\"ol/layer\").Vector} VectorLayer */\n/** @typedef {import(\"ol/layer\").VectorTile} VectorTileLayer */\n/** @typedef {import(\"ol/source\").Source} Source */\nconst functionCacheByStyleId = {};\nconst filterCacheByStyleId = {};\nlet styleId = 0;\nfunction getStyleId(glStyle) {\n if (!glStyle.id) {\n glStyle.id = styleId++;\n }\n return glStyle.id;\n}\nfunction getStyleFunctionKey(glStyle, olLayer) {\n return getStyleId(glStyle) + '.' + getUid(olLayer);\n}\n/**\n * @param {Object} glStyle Mapboox style object.\n * @return {Object} Function cache.\n */\nfunction getFunctionCache(glStyle) {\n let functionCache = functionCacheByStyleId[glStyle.id];\n if (!functionCache) {\n functionCache = {};\n functionCacheByStyleId[getStyleId(glStyle)] = functionCache;\n }\n return functionCache;\n}\nfunction clearFunctionCache() {\n for (const key in functionCacheByStyleId) {\n delete functionCacheByStyleId[key];\n }\n}\n/**\n * @param {Object} glStyle Mapboox style object.\n * @return {Object} Filter cache.\n */\nfunction getFilterCache(glStyle) {\n let filterCache = filterCacheByStyleId[glStyle.id];\n if (!filterCache) {\n filterCache = {};\n filterCacheByStyleId[getStyleId(glStyle)] = filterCache;\n }\n return filterCache;\n}\nfunction deg2rad(degrees) {\n return degrees * Math.PI / 180;\n}\nconst defaultResolutions = (function () {\n const resolutions = [];\n for (let res = 78271.51696402048; resolutions.length <= 24; res /= 2) {\n resolutions.push(res);\n }\n return resolutions;\n}());\n/**\n * @param {number} width Width of the canvas.\n * @param {number} height Height of the canvas.\n * @return {HTMLCanvasElement} Canvas.\n */\nfunction createCanvas(width, height) {\n if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope && typeof OffscreenCanvas !== 'undefined') {\n // eslint-disable-line\n return new OffscreenCanvas(width, height);\n }\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n}\nfunction getZoomForResolution(resolution, resolutions) {\n let i = 0;\n const ii = resolutions.length;\n for (; i < ii; ++i) {\n const candidate = resolutions[i];\n if (candidate < resolution && i + 1 < ii) {\n const zoomFactor = resolutions[i] / resolutions[i + 1];\n return i + Math.log(resolutions[i] / resolution) / Math.log(zoomFactor);\n }\n }\n return ii - 1;\n}\nconst pendingRequests = {};\n/**\n * @param {ResourceType} resourceType Type of resource to load.\n * @param {string} url Url of the resource.\n * @param {Options} [options={}] Options.\n * @param {{request?: Request}} [metadata] Object to be filled with the request.\n * @return {Promise} Promise that resolves with the loaded resource\n * or rejects with the Response object.\n * @private\n */\nfunction fetchResource(resourceType, url, options = {}, metadata) {\n if (url in pendingRequests) {\n if (metadata) {\n metadata.request = pendingRequests[url][0];\n }\n return pendingRequests[url][1];\n }\n let transformedRequest = options.transformRequest ? options.transformRequest(url, resourceType) || url : url;\n if (!(transformedRequest instanceof Request)) {\n transformedRequest = new Request(transformedRequest);\n }\n if (!transformedRequest.headers.get('Accept')) {\n transformedRequest.headers.set('Accept', 'application/json');\n }\n if (metadata) {\n metadata.request = transformedRequest;\n }\n const pendingRequest = fetch(transformedRequest).then(function (response) {\n delete pendingRequests[url];\n return response.ok ? response.json() : Promise.reject(new Error('Error fetching source ' + url));\n }).catch(function (error) {\n delete pendingRequests[url];\n return Promise.reject(new Error('Error fetching source ' + url));\n });\n pendingRequests[url] = [\n transformedRequest,\n pendingRequest\n ];\n return pendingRequest;\n}\nfunction getGlStyle(glStyleOrUrl, options) {\n if (typeof glStyleOrUrl === 'string') {\n if (glStyleOrUrl.trim().startsWith('{')) {\n try {\n const glStyle = JSON.parse(glStyleOrUrl);\n return Promise.resolve(glStyle);\n } catch (error) {\n return Promise.reject(error);\n }\n } else {\n glStyleOrUrl = normalizeStyleUrl(glStyleOrUrl, options.accessToken);\n return fetchResource('Style', glStyleOrUrl, options);\n }\n } else {\n return Promise.resolve(glStyleOrUrl);\n }\n}\nconst tilejsonCache = {};\n/**\n * @param {Object} glSource glStyle source object.\n * @param {string} styleUrl Style URL.\n * @param {Options} options Options.\n * @return {Promise<{tileJson: Object, tileLoadFunction: import('ol/Tile.js').LoadFunction}?>} TileJson and load function\n */\nfunction getTileJson(glSource, styleUrl, options = {}) {\n const cacheKey = [\n styleUrl,\n JSON.stringify(glSource)\n ].toString();\n let promise = tilejsonCache[cacheKey];\n if (!promise || options.transformRequest) {\n let tileLoadFunction;\n if (options.transformRequest) {\n tileLoadFunction = (tile, src) => {\n const transformedRequest = options.transformRequest ? options.transformRequest(src, 'Tiles') || src : src;\n if (tile instanceof VectorTile) {\n tile.setLoader((extent, resolution, projection) => {\n fetch(transformedRequest).then(response => response.arrayBuffer()).then(data => {\n const format = tile.getFormat();\n const features = format.readFeatures(data, {\n extent: extent,\n featureProjection: projection\n });\n // @ts-ignore\n tile.setFeatures(features);\n }).catch(e => tile.setState(TileState.ERROR));\n });\n } else {\n const img = tile.getImage();\n if (transformedRequest instanceof Request) {\n fetch(transformedRequest).then(response => response.blob()).then(blob => {\n const url = URL.createObjectURL(blob);\n img.addEventListener('load', () => URL.revokeObjectURL(url));\n img.addEventListener('error', () => URL.revokeObjectURL(url));\n img.src = url;\n }).catch(e => tile.setState(TileState.ERROR));\n } else {\n img.src = transformedRequest;\n }\n }\n };\n }\n const url = glSource.url;\n if (url && !glSource.tiles) {\n const normalizedSourceUrl = normalizeSourceUrl(url, options.accessToken, options.accessTokenParam || 'access_token', styleUrl || location.href);\n if (url.startsWith('mapbox://')) {\n promise = Promise.resolve({\n tileJson: Object.assign({}, glSource, {\n url: undefined,\n tiles: expandUrl(normalizedSourceUrl)\n }),\n tileLoadFunction\n });\n } else {\n const metadata = {};\n promise = fetchResource('Source', normalizedSourceUrl, options, metadata).then(function (tileJson) {\n tileJson.tiles = tileJson.tiles.map(function (tileUrl) {\n if (tileJson.scheme === 'tms') {\n tileUrl = tileUrl.replace('{y}', '{-y}');\n }\n return normalizeSourceUrl(tileUrl, options.accessToken, options.accessTokenParam || 'access_token', metadata.request.url);\n });\n return Promise.resolve({\n tileJson,\n tileLoadFunction\n });\n });\n }\n } else {\n glSource = Object.assign({}, glSource, {\n tiles: glSource.tiles.map(function (tileUrl) {\n if (glSource.scheme === 'tms') {\n tileUrl = tileUrl.replace('{y}', '{-y}');\n }\n return normalizeSourceUrl(tileUrl, options.accessToken, options.accessTokenParam || 'access_token', styleUrl || location.href);\n })\n });\n promise = Promise.resolve({\n tileJson: Object.assign({}, glSource),\n tileLoadFunction\n });\n }\n tilejsonCache[cacheKey] = promise;\n }\n return promise;\n}\n/**\n * @param {HTMLImageElement|HTMLCanvasElement} spriteImage Sprite image id.\n * @param {{x: number, y: number, width: number, height: number, pixelRatio: number}} spriteImageData Sprite image data.\n * @param {number} haloWidth Halo width.\n * @param {{r: number, g: number, b: number, a: number}} haloColor Halo color.\n * @return {HTMLCanvasElement} Canvas element with the halo.\n */\nfunction drawIconHalo(spriteImage, spriteImageData, haloWidth, haloColor) {\n const imageCanvas = document.createElement('canvas');\n const imgSize = [\n 2 * haloWidth * spriteImageData.pixelRatio + spriteImageData.width,\n 2 * haloWidth * spriteImageData.pixelRatio + spriteImageData.height\n ];\n imageCanvas.width = imgSize[0];\n imageCanvas.height = imgSize[1];\n const imageContext = imageCanvas.getContext('2d');\n imageContext.drawImage(spriteImage, spriteImageData.x, spriteImageData.y, spriteImageData.width, spriteImageData.height, haloWidth * spriteImageData.pixelRatio, haloWidth * spriteImageData.pixelRatio, spriteImageData.width, spriteImageData.height);\n const imageData = imageContext.getImageData(0, 0, imgSize[0], imgSize[1]);\n imageContext.globalCompositeOperation = 'destination-over';\n imageContext.fillStyle = `rgba(${ haloColor.r * 255 },${ haloColor.g * 255 },${ haloColor.b * 255 },${ haloColor.a })`;\n const data = imageData.data;\n for (let i = 0, ii = imageData.width; i < ii; ++i) {\n for (let j = 0, jj = imageData.height; j < jj; ++j) {\n const index = (j * ii + i) * 4;\n const alpha = data[index + 3];\n if (alpha > 0) {\n imageContext.arc(i, j, haloWidth * spriteImageData.pixelRatio, 0, 2 * Math.PI);\n }\n }\n }\n imageContext.fill();\n return imageCanvas;\n}\nfunction smoothstep(min, max, value) {\n const x = Math.max(0, Math.min(1, (value - min) / (max - min)));\n return x * x * (3 - 2 * x);\n}\n/**\n * @param {HTMLImageElement} image SDF image\n * @param {{x: number, y: number, width: number, height: number}} area Area to unSDF\n * @param {{r: number, g: number, b: number, a: number}} color Color to use\n * @return {HTMLCanvasElement} Regular image\n */\nfunction drawSDF(image, area, color) {\n const imageCanvas = document.createElement('canvas');\n imageCanvas.width = area.width;\n imageCanvas.height = area.height;\n const imageContext = imageCanvas.getContext('2d');\n imageContext.drawImage(image, area.x, area.y, area.width, area.height, 0, 0, area.width, area.height);\n const imageData = imageContext.getImageData(0, 0, area.width, area.height);\n const data = imageData.data;\n for (let i = 0, ii = imageData.width; i < ii; ++i) {\n for (let j = 0, jj = imageData.height; j < jj; ++j) {\n const index = (j * ii + i) * 4;\n const dist = data[index + 3] / 255;\n const buffer = 0.75;\n const gamma = 0.1;\n const alpha = smoothstep(buffer - gamma, buffer + gamma, dist);\n if (alpha > 0) {\n data[index + 0] = Math.round(255 * color.r * alpha);\n data[index + 1] = Math.round(255 * color.g * alpha);\n data[index + 2] = Math.round(255 * color.b * alpha);\n data[index + 3] = Math.round(255 * alpha);\n } else {\n data[index + 3] = 0;\n }\n }\n }\n imageContext.putImageData(imageData, 0, 0);\n return imageCanvas;\n} /**\n * @typedef {import(\"./apply.js\").Options} Options\n * @private\n */\n\nconst hairSpacePool = Array(256).join('\\u200A');\nfunction applyLetterSpacing(text, letterSpacing) {\n if (letterSpacing >= 0.05) {\n let textWithLetterSpacing = '';\n const lines = text.split('\\n');\n const joinSpaceString = hairSpacePool.slice(0, Math.round(letterSpacing / 0.1));\n for (let l = 0, ll = lines.length; l < ll; ++l) {\n if (l > 0) {\n textWithLetterSpacing += '\\n';\n }\n textWithLetterSpacing += lines[l].split('').join(joinSpaceString);\n }\n return textWithLetterSpacing;\n }\n return text;\n}\nlet measureContext;\nfunction getMeasureContext() {\n if (!measureContext) {\n measureContext = createCanvas(1, 1).getContext('2d');\n }\n return measureContext;\n}\nfunction measureText(text, letterSpacing) {\n return getMeasureContext().measureText(text).width + (text.length - 1) * letterSpacing;\n}\nconst measureCache = {};\nfunction wrapText(text, font, em, letterSpacing) {\n if (text.indexOf('\\n') !== -1) {\n const hardLines = text.split('\\n');\n const lines = [];\n for (let i = 0, ii = hardLines.length; i < ii; ++i) {\n lines.push(wrapText(hardLines[i], font, em, letterSpacing));\n }\n return lines.join('\\n');\n }\n const key = em + ',' + font + ',' + text + ',' + letterSpacing;\n let wrappedText = measureCache[key];\n if (!wrappedText) {\n const words = text.split(' ');\n if (words.length > 1) {\n const ctx = getMeasureContext();\n ctx.font = font;\n const oneEm = ctx.measureText('M').width;\n const maxWidth = oneEm * em;\n let line = '';\n const lines = [];\n // Pass 1 - wrap lines to not exceed maxWidth\n for (let i = 0, ii = words.length; i < ii; ++i) {\n const word = words[i];\n const testLine = line + (line ? ' ' : '') + word;\n if (measureText(testLine, letterSpacing) <= maxWidth) {\n line = testLine;\n } else {\n if (line) {\n lines.push(line);\n }\n line = word;\n }\n }\n if (line) {\n lines.push(line);\n }\n // Pass 2 - add lines with a width of less than 30% of maxWidth to the previous or next line\n for (let i = 0, ii = lines.length; i < ii && ii > 1; ++i) {\n const line = lines[i];\n if (measureText(line, letterSpacing) < maxWidth * 0.35) {\n const prevWidth = i > 0 ? measureText(lines[i - 1], letterSpacing) : Infinity;\n const nextWidth = i < ii - 1 ? measureText(lines[i + 1], letterSpacing) : Infinity;\n lines.splice(i, 1);\n ii -= 1;\n if (prevWidth < nextWidth) {\n lines[i - 1] += ' ' + line;\n i -= 1;\n } else {\n lines[i] = line + ' ' + lines[i];\n }\n }\n }\n // Pass 3 - try to fill 80% of maxWidth for each line\n for (let i = 0, ii = lines.length - 1; i < ii; ++i) {\n const line = lines[i];\n const next = lines[i + 1];\n if (measureText(line, letterSpacing) > maxWidth * 0.7 && measureText(next, letterSpacing) < maxWidth * 0.6) {\n const lineWords = line.split(' ');\n const lastWord = lineWords.pop();\n if (measureText(lastWord, letterSpacing) < maxWidth * 0.2) {\n lines[i] = lineWords.join(' ');\n lines[i + 1] = lastWord + ' ' + next;\n }\n ii -= 1;\n }\n }\n wrappedText = lines.join('\\n');\n } else {\n wrappedText = text;\n }\n wrappedText = applyLetterSpacing(wrappedText, letterSpacing);\n measureCache[key] = wrappedText;\n }\n return wrappedText;\n}\nconst fontFamilyRegEx = /font-family: ?([^;]*);/;\nconst stripQuotesRegEx = /(\"|')/g;\nlet loadedFontFamilies;\nfunction hasFontFamily(family) {\n if (!loadedFontFamilies) {\n loadedFontFamilies = {};\n const styleSheets = document.styleSheets;\n for (let i = 0, ii = styleSheets.length; i < ii; ++i) {\n const styleSheet = styleSheets[i];\n try {\n const cssRules = styleSheet.rules || styleSheet.cssRules;\n if (cssRules) {\n for (let j = 0, jj = cssRules.length; j < jj; ++j) {\n const cssRule = cssRules[j];\n if (cssRule.type == 5) {\n const match = cssRule.cssText.match(fontFamilyRegEx);\n loadedFontFamilies[match[1].replace(stripQuotesRegEx, '')] = true;\n }\n }\n }\n } catch (e) {\n }\n }\n }\n return family in loadedFontFamilies;\n}\nconst processedFontFamilies = {};\n/**\n * @param {Array} fonts Fonts.\n * @param {string} [templateUrl] Template URL.\n * @return {Array} Processed fonts.\n * @private\n */\nfunction getFonts(fonts, templateUrl = 'https://cdn.jsdelivr.net/npm/@fontsource/{font-family}/{fontweight}{-fontstyle}.css') {\n const fontsKey = fonts.toString();\n if (fontsKey in processedFontFamilies) {\n return processedFontFamilies[fontsKey];\n }\n const fontDescriptions = [];\n for (let i = 0, ii = fonts.length; i < ii; ++i) {\n fonts[i] = fonts[i].replace('Arial Unicode MS', 'Arial');\n const font = fonts[i];\n const cssFont = mb2css(font, 1);\n registerFont(cssFont);\n const parts = cssFont.split(' ');\n fontDescriptions.push([\n parts.slice(3).join(' ').replace(/\"/g, ''),\n parts[1],\n parts[0]\n ]);\n }\n for (let i = 0, ii = fontDescriptions.length; i < ii; ++i) {\n const fontDescription = fontDescriptions[i];\n const family = fontDescription[0];\n if (!hasFontFamily(family)) {\n if (checkedFonts.get(`${ fontDescription[2] }\\n${ fontDescription[1] } \\n${ family }`) !== 100) {\n const fontUrl = templateUrl.replace('{font-family}', family.replace(/ /g, '-').toLowerCase()).replace('{Font+Family}', family.replace(/ /g, '+')).replace('{fontweight}', fontDescription[1]).replace('{-fontstyle}', fontDescription[2].replace('normal', '').replace(/(.+)/, '-$1')).replace('{fontstyle}', fontDescription[2]);\n if (!document.querySelector('link[href=\"' + fontUrl + '\"]')) {\n const markup = document.createElement('link');\n markup.href = fontUrl;\n markup.rel = 'stylesheet';\n document.head.appendChild(markup);\n }\n }\n }\n }\n processedFontFamilies[fontsKey] = fonts;\n return fonts;\n}\n\n/*\nol-mapbox-style - Use Mapbox Style objects with OpenLayers\nCopyright 2016-present ol-mapbox-style contributors\nLicense: https://raw.githubusercontent.com/openlayers/ol-mapbox-style/master/LICENSE\n*/\n/**\n * @typedef {import(\"ol/layer/Vector\").default} VectorLayer\n * @typedef {import(\"ol/layer/VectorTile\").default} VectorTileLayer\n * @typedef {import(\"ol/style/Style\").StyleFunction} StyleFunction\n * @typedef {import('./util.js').ResourceType} ResourceType\n */\nconst types = {\n 'Point': 1,\n 'MultiPoint': 1,\n 'LineString': 2,\n 'MultiLineString': 2,\n 'Polygon': 3,\n 'MultiPolygon': 3\n};\nconst anchor = {\n 'center': [\n 0.5,\n 0.5\n ],\n 'left': [\n 0,\n 0.5\n ],\n 'right': [\n 1,\n 0.5\n ],\n 'top': [\n 0.5,\n 0\n ],\n 'bottom': [\n 0.5,\n 1\n ],\n 'top-left': [\n 0,\n 0\n ],\n 'top-right': [\n 1,\n 0\n ],\n 'bottom-left': [\n 0,\n 1\n ],\n 'bottom-right': [\n 1,\n 1\n ]\n};\nconst expressionData = function (rawExpression, propertySpec) {\n const compiledExpression = createPropertyExpression(rawExpression, propertySpec);\n if (compiledExpression.result === 'error') {\n throw new Error(compiledExpression.value.map(err => `${ err.key }: ${ err.message }`).join(', '));\n }\n return compiledExpression.value;\n};\nconst emptyObj$1 = {};\nconst zoomObj = { zoom: 0 };\nlet renderFeatureCoordinates, renderFeature;\n/**\n * @private\n * @param {Object} layer Gl object layer.\n * @param {string} layoutOrPaint 'layout' or 'paint'.\n * @param {string} property Feature property.\n * @param {number} zoom Zoom.\n * @param {Object} feature Gl feature.\n * @param {Object} [functionCache] Function cache.\n * @param {Object} [featureState] Feature state.\n * @return {?} Value.\n */\nfunction getValue(layer, layoutOrPaint, property, zoom, feature, functionCache, featureState) {\n const layerId = layer.id;\n if (!functionCache) {\n functionCache = {};\n console.warn('No functionCache provided to getValue()'); //eslint-disable-line no-console\n }\n if (!functionCache[layerId]) {\n functionCache[layerId] = {};\n }\n const functions = functionCache[layerId];\n if (!functions[property]) {\n let value = (layer[layoutOrPaint] || emptyObj$1)[property];\n const propertySpec = spec[`${ layoutOrPaint }_${ layer.type }`][property];\n if (value === undefined) {\n value = propertySpec.default;\n }\n let isExpr = isExpression(value);\n if (!isExpr && isFunction(value)) {\n value = convertFunction(value, propertySpec);\n isExpr = true;\n }\n if (isExpr) {\n const compiledExpression = expressionData(value, propertySpec);\n functions[property] = compiledExpression.evaluate.bind(compiledExpression);\n } else {\n if (propertySpec.type == 'color') {\n value = Color$1.parse(value);\n }\n functions[property] = function () {\n return value;\n };\n }\n }\n zoomObj.zoom = zoom;\n return functions[property](zoomObj, feature, featureState);\n}\n/**\n * @private\n * @param {Object} layer Gl object layer.\n * @param {number} zoom Zoom.\n * @param {Object} feature Gl feature.\n * @param {Object} [functionCache] Function cache.\n * @return {\"declutter\"|\"obstacle\"|\"none\"} Value.\n */\nfunction getIconDeclutterMode(layer, zoom, feature, functionCache) {\n const allowOverlap = getValue(layer, 'layout', 'icon-allow-overlap', zoom, feature, functionCache);\n if (!allowOverlap) {\n return 'declutter';\n }\n const ignorePlacement = getValue(layer, 'layout', 'icon-ignore-placement', zoom, feature, functionCache);\n if (!ignorePlacement) {\n return 'obstacle';\n }\n return 'none';\n}\n/**\n * @private\n * @param {string} layerId Layer id.\n * @param {?} filter Filter.\n * @param {Object} feature Feature.\n * @param {number} zoom Zoom.\n * @param {Object} [filterCache] Filter cache.\n * @return {boolean} Filter result.\n */\nfunction evaluateFilter(layerId, filter, feature, zoom, filterCache) {\n if (!filterCache) {\n console.warn('No filterCache provided to evaluateFilter()'); //eslint-disable-line no-console\n }\n if (!(layerId in filterCache)) {\n filterCache[layerId] = createFilter(filter).filter;\n }\n zoomObj.zoom = zoom;\n return filterCache[layerId](zoomObj, feature);\n}\nlet renderTransparentEnabled = false;\n/**\n * Configure whether features with a transparent style should be rendered. When\n * set to `true`, it will be possible to hit detect content that is not visible,\n * like transparent fills of polygons, using `ol/layer/Layer#getFeatures()` or\n * `ol/Map#getFeaturesAtPixel()`\n * @param {boolean} enabled Rendering of transparent elements is enabled.\n * Default is `false`.\n */\nfunction renderTransparent(enabled) {\n if (enabled !== renderTransparentEnabled) {\n clearFunctionCache();\n renderTransparentEnabled = enabled;\n }\n}\n/**\n * @private\n * @param {?} color Color.\n * @param {number} [opacity] Opacity.\n * @return {string} Color.\n */\nfunction colorWithOpacity(color, opacity) {\n if (color) {\n if (!renderTransparentEnabled && (color.a === 0 || opacity === 0)) {\n return undefined;\n }\n const a = color.a;\n opacity = opacity === undefined ? 1 : opacity;\n return a === 0 ? 'transparent' : 'rgba(' + Math.round(color.r * 255 / a) + ',' + Math.round(color.g * 255 / a) + ',' + Math.round(color.b * 255 / a) + ',' + a * opacity + ')';\n }\n return color;\n}\nconst templateRegEx = /\\{[^{}}]*\\}/g;\n/**\n * @private\n * @param {string} text Text.\n * @param {Object} properties Properties.\n * @return {string} Text.\n */\nfunction fromTemplate(text, properties) {\n return text.replace(templateRegEx, function (match) {\n return properties[match.slice(1, -1)] || '';\n });\n}\nlet recordLayer = false;\n/**\n * Turns recording of the Mapbox Style's `layer` on and off. When turned on,\n * the layer that a rendered feature belongs to will be set as the feature's\n * `mapbox-layer` property.\n * @param {boolean} record Recording of the style layer is on.\n */\nfunction recordStyleLayer(record = false) {\n recordLayer = record;\n}\nconst styleFunctionArgs = {};\n/**\n * Creates a style function from the `glStyle` object for all layers that use\n * the specified `source`, which needs to be a `\"type\": \"vector\"` or\n * `\"type\": \"geojson\"` source and applies it to the specified OpenLayers layer.\n *\n * Two additional properties will be set on the provided layer:\n *\n * * `mapbox-source`: The `id` of the Mapbox Style document's source that the\n * OpenLayers layer was created from. Usually `apply()` creates one\n * OpenLayers layer per Mapbox Style source, unless the layer stack has\n * layers from different sources in between.\n * * `mapbox-layers`: The `id`s of the Mapbox Style document's layers that are\n * included in the OpenLayers layer.\n *\n * This function also works in a web worker. In worker mode, the main thread needs\n * to listen to messages from the worker and respond with another message to make\n * sure that sprite image loading works:\n *\n * ```js\n * worker.addEventListener('message', event => {\n * if (event.data.action === 'loadImage') {\n * const image = new Image();\n * image.crossOrigin = 'anonymous';\n * image.addEventListener('load', function() {\n * createImageBitmap(image, 0, 0, image.width, image.height).then(imageBitmap => {\n * worker.postMessage({\n * action: 'imageLoaded',\n * image: imageBitmap,\n * src: event.data.src\n * }, [imageBitmap]);\n * });\n * });\n * image.src = event.data.src;\n * }\n * });\n * ```\n *\n * @param {VectorLayer|VectorTileLayer} olLayer OpenLayers layer to\n * apply the style to. In addition to the style, the layer will get two\n * properties: `mapbox-source` will be the `id` of the `glStyle`'s source used\n * for the layer, and `mapbox-layers` will be an array of the `id`s of the\n * `glStyle`'s layers.\n * @param {string|Object} glStyle Mapbox Style object.\n * @param {string|Array} sourceOrLayers `source` key or an array of layer `id`s\n * from the Mapbox Style object. When a `source` key is provided, all layers for\n * the specified source will be included in the style function. When layer `id`s\n * are provided, they must be from layers that use the same source.\n * @param {Array} resolutions\n * Resolutions for mapping resolution to zoom level.\n * @param {Object} spriteData Sprite data from the url specified in\n * the Mapbox Style object's `sprite` property. Only required if a `sprite`\n * property is specified in the Mapbox Style object.\n * @param {string|Request} spriteImageUrl Sprite image url for the sprite\n * specified in the Mapbox Style object's `sprite` property. Only required if a\n * `sprite` property is specified in the Mapbox Style object.\n * @param {function(Array, string=):Array} getFonts Function that\n * receives a font stack and the url template from the GL style's `metadata['ol:webfonts']`\n * property (if set) as arguments, and returns a (modified) font stack that\n * is available. Font names are the names used in the Mapbox Style object. If\n * not provided, the font stack will be used as-is. This function can also be\n * used for loading web fonts.\n * @param {function(VectorLayer|VectorTileLayer, string):HTMLImageElement|HTMLCanvasElement|string|undefined} [getImage=undefined]\n * Function that returns an image or a URL for an image name. If the result is an HTMLImageElement, it must already be\n * loaded. The layer can be used to call layer.changed() when the loading and processing of the image has finished.\n * This function can be used for icons not in the sprite or to override sprite icons.\n * @return {StyleFunction} Style function for use in\n * `ol.layer.Vector` or `ol.layer.VectorTile`.\n */\nfunction stylefunction(olLayer, glStyle, sourceOrLayers, resolutions = defaultResolutions, spriteData = undefined, spriteImageUrl = undefined, getFonts = undefined, getImage = undefined) {\n if (typeof glStyle == 'string') {\n glStyle = JSON.parse(glStyle);\n }\n if (glStyle.version != 8) {\n throw new Error('glStyle version 8 required.');\n }\n styleFunctionArgs[getStyleFunctionKey(glStyle, olLayer)] = Array.from(arguments);\n let spriteImage, spriteImageSize;\n let spriteImageUnSDFed;\n if (spriteImageUrl) {\n if (typeof Image !== 'undefined') {\n const img = new Image();\n let blobUrl;\n if (spriteImageUrl instanceof Request) {\n fetch(spriteImageUrl).then(response => response.blob()).then(blob => {\n blobUrl = URL.createObjectURL(blob);\n img.src = blobUrl;\n }).catch(() => {\n });\n } else {\n img.crossOrigin = 'anonymous';\n img.src = spriteImageUrl;\n if (blobUrl) {\n URL.revokeObjectURL(blobUrl);\n }\n }\n img.onload = function () {\n spriteImage = img;\n spriteImageSize = [\n img.width,\n img.height\n ];\n olLayer.changed();\n img.onload = null;\n };\n } else if (typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope) {\n //eslint-disable-line\n const worker = self;\n // Main thread needs to handle 'loadImage' and dispatch 'imageLoaded'\n worker.postMessage({\n action: 'loadImage',\n src: spriteImageUrl\n });\n worker.addEventListener('message', function handler(event) {\n if (event.data.action === 'imageLoaded' && event.data.src === spriteImageUrl) {\n spriteImage = event.data.image;\n spriteImageSize = [\n spriteImage.width,\n spriteImage.height\n ];\n }\n });\n }\n }\n const allLayers = derefLayers(glStyle.layers);\n const layersBySourceLayer = {};\n const mapboxLayers = [];\n const iconImageCache = {};\n const patternCache = {};\n const functionCache = getFunctionCache(glStyle);\n const filterCache = getFilterCache(glStyle);\n let mapboxSource;\n for (let i = 0, ii = allLayers.length; i < ii; ++i) {\n const layer = allLayers[i];\n const layerId = layer.id;\n if (typeof sourceOrLayers == 'string' && layer.source == sourceOrLayers || sourceOrLayers.indexOf(layerId) !== -1) {\n const sourceLayer = layer['source-layer'];\n if (!mapboxSource) {\n mapboxSource = layer.source;\n const source = glStyle.sources[mapboxSource];\n if (!source) {\n throw new Error(`Source \"${ mapboxSource }\" is not defined`);\n }\n const type = source.type;\n if (type !== 'vector' && type !== 'geojson') {\n throw new Error(`Source \"${ mapboxSource }\" is not of type \"vector\" or \"geojson\", but \"${ type }\"`);\n }\n } else if (layer.source !== mapboxSource) {\n throw new Error(`Layer \"${ layerId }\" does not use source \"${ mapboxSource }`);\n }\n let layers = layersBySourceLayer[sourceLayer];\n if (!layers) {\n layers = [];\n layersBySourceLayer[sourceLayer] = layers;\n }\n layers.push({\n layer: layer,\n index: i\n });\n mapboxLayers.push(layerId);\n }\n }\n const textHalo = new Stroke();\n const textColor = new Fill();\n const styles = [];\n /**\n * @param {import(\"ol/Feature\").default|import(\"ol/render/Feature\").default} feature Feature.\n * @param {number} resolution Resolution.\n * @param {string} [onlyLayer] Calculate style for this layer only.\n * @return {Array} Style.\n */\n const styleFunction = function (feature, resolution, onlyLayer) {\n const properties = feature.getProperties();\n const layers = layersBySourceLayer[properties.layer];\n if (!layers) {\n return undefined;\n }\n let zoom = resolutions.indexOf(resolution);\n if (zoom == -1) {\n zoom = getZoomForResolution(resolution, resolutions);\n }\n const type = types[feature.getGeometry().getType()];\n const f = {\n id: feature.getId(),\n properties: properties,\n type: type\n };\n const featureState = olLayer.get('mapbox-featurestate')[feature.getId()];\n let stylesLength = -1;\n let featureBelongsToLayer;\n for (let i = 0, ii = layers.length; i < ii; ++i) {\n const layerData = layers[i];\n const layer = layerData.layer;\n const layerId = layer.id;\n if (onlyLayer !== undefined && onlyLayer !== layerId) {\n continue;\n }\n const layout = layer.layout || emptyObj$1;\n const paint = layer.paint || emptyObj$1;\n if (layout.visibility === 'none' || 'minzoom' in layer && zoom < layer.minzoom || 'maxzoom' in layer && zoom >= layer.maxzoom) {\n continue;\n }\n const filter = layer.filter;\n if (!filter || evaluateFilter(layerId, filter, f, zoom, filterCache)) {\n featureBelongsToLayer = layer;\n let color, opacity, fill, stroke, strokeColor, style;\n const index = layerData.index;\n if (type == 3 && (layer.type == 'fill' || layer.type == 'fill-extrusion')) {\n opacity = getValue(layer, 'paint', layer.type + '-opacity', zoom, f, functionCache, featureState);\n if (layer.type + '-pattern' in paint) {\n const fillIcon = getValue(layer, 'paint', layer.type + '-pattern', zoom, f, functionCache, featureState);\n if (fillIcon) {\n const icon = typeof fillIcon === 'string' ? fromTemplate(fillIcon, properties) : fillIcon.toString();\n if (spriteImage && spriteData && spriteData[icon]) {\n ++stylesLength;\n style = styles[stylesLength];\n if (!style || !style.getFill() || style.getStroke() || style.getText()) {\n style = new Style({ fill: new Fill() });\n styles[stylesLength] = style;\n }\n fill = style.getFill();\n style.setZIndex(index);\n const icon_cache_key = icon + '.' + opacity;\n let pattern = patternCache[icon_cache_key];\n if (!pattern) {\n const spriteImageData = spriteData[icon];\n const canvas = createCanvas(spriteImageData.width, spriteImageData.height);\n const ctx = canvas.getContext('2d');\n ctx.globalAlpha = opacity;\n ctx.drawImage(spriteImage, spriteImageData.x, spriteImageData.y, spriteImageData.width, spriteImageData.height, 0, 0, spriteImageData.width, spriteImageData.height);\n pattern = ctx.createPattern(canvas, 'repeat');\n patternCache[icon_cache_key] = pattern;\n }\n fill.setColor(pattern);\n }\n }\n } else {\n color = colorWithOpacity(getValue(layer, 'paint', layer.type + '-color', zoom, f, functionCache, featureState), opacity);\n if (layer.type + '-outline-color' in paint) {\n strokeColor = colorWithOpacity(getValue(layer, 'paint', layer.type + '-outline-color', zoom, f, functionCache, featureState), opacity);\n }\n if (!strokeColor) {\n strokeColor = color;\n }\n if (color || strokeColor) {\n ++stylesLength;\n style = styles[stylesLength];\n if (!style || color && !style.getFill() || !color && style.getFill() || strokeColor && !style.getStroke() || !strokeColor && style.getStroke() || style.getText()) {\n style = new Style({\n fill: color ? new Fill() : undefined,\n stroke: strokeColor ? new Stroke() : undefined\n });\n styles[stylesLength] = style;\n }\n if (color) {\n fill = style.getFill();\n fill.setColor(color);\n }\n if (strokeColor) {\n stroke = style.getStroke();\n stroke.setColor(strokeColor);\n stroke.setWidth(0.5);\n }\n style.setZIndex(index);\n }\n }\n }\n if (type != 1 && layer.type == 'line') {\n color = !('line-pattern' in paint) && 'line-color' in paint ? colorWithOpacity(getValue(layer, 'paint', 'line-color', zoom, f, functionCache, featureState), getValue(layer, 'paint', 'line-opacity', zoom, f, functionCache, featureState)) : undefined;\n const width = getValue(layer, 'paint', 'line-width', zoom, f, functionCache, featureState);\n if (color && width > 0) {\n ++stylesLength;\n style = styles[stylesLength];\n if (!style || !style.getStroke() || style.getFill() || style.getText()) {\n style = new Style({ stroke: new Stroke() });\n styles[stylesLength] = style;\n }\n stroke = style.getStroke();\n stroke.setLineCap(getValue(layer, 'layout', 'line-cap', zoom, f, functionCache, featureState));\n stroke.setLineJoin(getValue(layer, 'layout', 'line-join', zoom, f, functionCache, featureState));\n stroke.setMiterLimit(getValue(layer, 'layout', 'line-miter-limit', zoom, f, functionCache, featureState));\n stroke.setColor(color);\n stroke.setWidth(width);\n stroke.setLineDash(paint['line-dasharray'] ? getValue(layer, 'paint', 'line-dasharray', zoom, f, functionCache, featureState).map(function (x) {\n return x * width;\n }) : null);\n style.setZIndex(index);\n }\n }\n let hasImage = false;\n let text = null;\n let placementAngle = 0;\n let icon, iconImg, skipLabel;\n if ((type == 1 || type == 2) && 'icon-image' in layout) {\n const iconImage = getValue(layer, 'layout', 'icon-image', zoom, f, functionCache, featureState);\n if (iconImage) {\n icon = typeof iconImage === 'string' ? fromTemplate(iconImage, properties) : iconImage.toString();\n let styleGeom = undefined;\n const imageElement = getImage ? getImage(olLayer, icon) : undefined;\n if (spriteImage && spriteData && spriteData[icon] || imageElement) {\n const iconRotationAlignment = getValue(layer, 'layout', 'icon-rotation-alignment', zoom, f, functionCache, featureState);\n if (type == 2) {\n const geom = feature.getGeometry();\n // ol package and ol-debug.js only\n if (geom.getFlatMidpoint || geom.getFlatMidpoints) {\n const extent = geom.getExtent();\n const size = Math.sqrt(Math.max(Math.pow((extent[2] - extent[0]) / resolution, 2), Math.pow((extent[3] - extent[1]) / resolution, 2)));\n if (size > 150) {\n //FIXME Do not hard-code a size of 150\n const midpoint = geom.getType() === 'MultiLineString' ? geom.getFlatMidpoints() : geom.getFlatMidpoint();\n if (!renderFeature) {\n renderFeatureCoordinates = [\n NaN,\n NaN\n ];\n renderFeature = new RenderFeature('Point', renderFeatureCoordinates, [], {}, null);\n }\n styleGeom = renderFeature;\n renderFeatureCoordinates[0] = midpoint[0];\n renderFeatureCoordinates[1] = midpoint[1];\n const placement = getValue(layer, 'layout', 'symbol-placement', zoom, f, functionCache, featureState);\n if (placement === 'line' && iconRotationAlignment === 'map') {\n const stride = geom.getStride();\n const coordinates = geom.getFlatCoordinates();\n for (let i = 0, ii = coordinates.length - stride; i < ii; i += stride) {\n const x1 = coordinates[i];\n const y1 = coordinates[i + 1];\n const x2 = coordinates[i + stride];\n const y2 = coordinates[i + stride + 1];\n const minX = Math.min(x1, x2);\n const minY = Math.min(y1, y2);\n const maxX = Math.max(x1, x2);\n const maxY = Math.max(y1, y2);\n if (midpoint[0] >= minX && midpoint[0] <= maxX && midpoint[1] >= minY && midpoint[1] <= maxY) {\n placementAngle = Math.atan2(y1 - y2, x2 - x1);\n break;\n }\n }\n }\n }\n }\n }\n if (type !== 2 || styleGeom) {\n const iconSize = getValue(layer, 'layout', 'icon-size', zoom, f, functionCache, featureState);\n const iconColor = paint['icon-color'] !== undefined ? getValue(layer, 'paint', 'icon-color', zoom, f, functionCache, featureState) : null;\n if (!iconColor || iconColor.a !== 0) {\n const haloColor = getValue(layer, 'paint', 'icon-halo-color', zoom, f, functionCache, featureState);\n const haloWidth = getValue(layer, 'paint', 'icon-halo-width', zoom, f, functionCache, featureState);\n let iconCacheKey = `${ icon }.${ iconSize }.${ haloWidth }.${ haloColor }`;\n if (iconColor !== null) {\n iconCacheKey += `.${ iconColor }`;\n }\n iconImg = iconImageCache[iconCacheKey];\n if (!iconImg) {\n const declutterMode = getIconDeclutterMode(layer, zoom, f, functionCache);\n let displacement;\n if ('icon-offset' in layout) {\n displacement = getValue(layer, 'layout', 'icon-offset', zoom, f, functionCache, featureState).slice(0);\n displacement[1] *= -1;\n }\n let color = iconColor ? [\n iconColor.r * 255,\n iconColor.g * 255,\n iconColor.b * 255,\n iconColor.a\n ] : undefined;\n if (imageElement) {\n const iconOptions = {\n color: color,\n rotateWithView: iconRotationAlignment === 'map',\n displacement: displacement,\n declutterMode: declutterMode\n };\n if (typeof imageElement === 'string') {\n // it is a src URL\n iconOptions.src = imageElement;\n } else {\n iconOptions.img = imageElement;\n iconOptions.imgSize = [\n imageElement.width,\n imageElement.height\n ];\n }\n iconImg = new Icon(iconOptions);\n } else {\n const spriteImageData = spriteData[icon];\n let img, size, offset;\n if (haloWidth) {\n if (spriteImageData.sdf) {\n img = drawIconHalo(drawSDF(spriteImage, spriteImageData, iconColor), {\n x: 0,\n y: 0,\n width: spriteImageData.width,\n height: spriteImageData.height,\n pixelRatio: spriteImageData.pixelRatio\n }, haloWidth, haloColor);\n color = undefined; // do not tint haloed icons\n } else {\n img = drawIconHalo(spriteImage, spriteImageData, haloWidth, haloColor);\n }\n } else {\n if (spriteImageData.sdf) {\n if (!spriteImageUnSDFed) {\n spriteImageUnSDFed = drawSDF(spriteImage, {\n x: 0,\n y: 0,\n width: spriteImageSize[0],\n height: spriteImageSize[1]\n }, {\n r: 1,\n g: 1,\n b: 1,\n a: 1\n });\n }\n img = spriteImageUnSDFed;\n } else {\n img = spriteImage;\n }\n size = [\n spriteImageData.width,\n spriteImageData.height\n ];\n offset = [\n spriteImageData.x,\n spriteImageData.y\n ];\n }\n iconImg = new Icon({\n color: color,\n img: img,\n // @ts-ignore\n imgSize: spriteImageSize,\n size: size,\n offset: offset,\n rotateWithView: iconRotationAlignment === 'map',\n scale: iconSize / spriteImageData.pixelRatio,\n displacement: displacement,\n declutterMode: declutterMode\n });\n }\n iconImageCache[iconCacheKey] = iconImg;\n }\n }\n if (iconImg) {\n ++stylesLength;\n style = styles[stylesLength];\n if (!style || !style.getImage() || style.getFill() || style.getStroke()) {\n style = new Style();\n styles[stylesLength] = style;\n }\n style.setGeometry(styleGeom);\n iconImg.setRotation(placementAngle + deg2rad(getValue(layer, 'layout', 'icon-rotate', zoom, f, functionCache, featureState)));\n iconImg.setOpacity(getValue(layer, 'paint', 'icon-opacity', zoom, f, functionCache, featureState));\n iconImg.setAnchor(anchor[getValue(layer, 'layout', 'icon-anchor', zoom, f, functionCache, featureState)]);\n style.setImage(iconImg);\n text = style.getText();\n style.setText(undefined);\n style.setZIndex(index);\n hasImage = true;\n skipLabel = false;\n }\n } else {\n skipLabel = true;\n }\n }\n }\n }\n if (type == 1 && layer.type === 'circle') {\n ++stylesLength;\n style = styles[stylesLength];\n if (!style || !style.getImage() || style.getFill() || style.getStroke()) {\n style = new Style();\n styles[stylesLength] = style;\n }\n const circleRadius = 'circle-radius' in paint ? getValue(layer, 'paint', 'circle-radius', zoom, f, functionCache, featureState) : 5;\n const circleStrokeColor = colorWithOpacity(getValue(layer, 'paint', 'circle-stroke-color', zoom, f, functionCache, featureState), getValue(layer, 'paint', 'circle-stroke-opacity', zoom, f, functionCache, featureState));\n const circleColor = colorWithOpacity(getValue(layer, 'paint', 'circle-color', zoom, f, functionCache, featureState), getValue(layer, 'paint', 'circle-opacity', zoom, f, functionCache, featureState));\n const circleStrokeWidth = getValue(layer, 'paint', 'circle-stroke-width', zoom, f, functionCache, featureState);\n const cache_key = circleRadius + '.' + circleStrokeColor + '.' + circleColor + '.' + circleStrokeWidth;\n iconImg = iconImageCache[cache_key];\n if (!iconImg) {\n iconImg = new Circle({\n radius: circleRadius,\n stroke: circleStrokeColor && circleStrokeWidth > 0 ? new Stroke({\n width: circleStrokeWidth,\n color: circleStrokeColor\n }) : undefined,\n fill: circleColor ? new Fill({ color: circleColor }) : undefined,\n declutterMode: 'none'\n });\n iconImageCache[cache_key] = iconImg;\n }\n style.setImage(iconImg);\n text = style.getText();\n style.setText(undefined);\n style.setGeometry(undefined);\n style.setZIndex(index);\n hasImage = true;\n }\n let label, font, textLineHeight, textSize, letterSpacing, maxTextWidth;\n if ('text-field' in layout) {\n textSize = Math.round(getValue(layer, 'layout', 'text-size', zoom, f, functionCache, featureState));\n const fontArray = getValue(layer, 'layout', 'text-font', zoom, f, functionCache, featureState);\n textLineHeight = getValue(layer, 'layout', 'text-line-height', zoom, f, functionCache, featureState);\n font = mb2css(getFonts ? getFonts(fontArray, glStyle.metadata ? glStyle.metadata['ol:webfonts'] : undefined) : fontArray, textSize, textLineHeight);\n if (!font.includes('sans-serif')) {\n font += ',sans-serif';\n }\n letterSpacing = getValue(layer, 'layout', 'text-letter-spacing', zoom, f, functionCache, featureState);\n maxTextWidth = getValue(layer, 'layout', 'text-max-width', zoom, f, functionCache, featureState);\n const textField = getValue(layer, 'layout', 'text-field', zoom, f, functionCache, featureState);\n if (typeof textField === 'object' && textField.sections) {\n if (textField.sections.length === 1) {\n label = textField.toString();\n } else {\n label = textField.sections.reduce((acc, chunk, i) => {\n const fonts = chunk.fontStack ? chunk.fontStack.split(',') : fontArray;\n const chunkFont = mb2css(getFonts ? getFonts(fonts) : fonts, textSize * (chunk.scale || 1), textLineHeight);\n let text = chunk.text;\n if (text === '\\n') {\n acc.push('\\n', '');\n return acc;\n }\n if (type == 2) {\n acc.push(applyLetterSpacing(text, letterSpacing), chunkFont);\n return;\n }\n text = wrapText(text, chunkFont, maxTextWidth, letterSpacing).split('\\n');\n for (let i = 0, ii = text.length; i < ii; ++i) {\n if (i > 0) {\n acc.push('\\n', '');\n }\n acc.push(text[i], chunkFont);\n }\n return acc;\n }, []);\n }\n } else {\n label = fromTemplate(textField, properties).trim();\n }\n opacity = getValue(layer, 'paint', 'text-opacity', zoom, f, functionCache, featureState);\n }\n if (label && opacity && !skipLabel) {\n if (!hasImage) {\n ++stylesLength;\n style = styles[stylesLength];\n if (!style || !style.getText() || style.getFill() || style.getStroke()) {\n style = new Style();\n styles[stylesLength] = style;\n }\n style.setImage(undefined);\n style.setGeometry(undefined);\n }\n if (!style.getText()) {\n style.setText(text || new Text({\n padding: [\n 2,\n 2,\n 2,\n 2\n ]\n }));\n }\n text = style.getText();\n const textTransform = layout['text-transform'];\n if (textTransform == 'uppercase') {\n label = Array.isArray(label) ? label.map((t, i) => i % 2 ? t : t.toUpperCase()) : label.toUpperCase();\n } else if (textTransform == 'lowercase') {\n label = Array.isArray(label) ? label.map((t, i) => i % 2 ? t : t.toLowerCase()) : label.toLowerCase();\n }\n const wrappedLabel = Array.isArray(label) ? label : type == 2 ? applyLetterSpacing(label, letterSpacing) : wrapText(label, font, maxTextWidth, letterSpacing);\n text.setText(wrappedLabel);\n text.setFont(font);\n text.setRotation(deg2rad(getValue(layer, 'layout', 'text-rotate', zoom, f, functionCache, featureState)));\n const textAnchor = getValue(layer, 'layout', 'text-anchor', zoom, f, functionCache, featureState);\n const placement = hasImage || type == 1 ? 'point' : getValue(layer, 'layout', 'symbol-placement', zoom, f, functionCache, featureState);\n let textAlign;\n if (placement === 'line-center') {\n text.setPlacement('line');\n textAlign = 'center';\n } else {\n text.setPlacement(placement);\n }\n if (placement === 'line' && typeof text.setRepeat === 'function') {\n const symbolSpacing = getValue(layer, 'layout', 'symbol-spacing', zoom, f, functionCache, featureState);\n text.setRepeat(symbolSpacing * 2);\n }\n text.setOverflow(placement === 'point');\n let textHaloWidth = getValue(layer, 'paint', 'text-halo-width', zoom, f, functionCache, featureState);\n const textOffset = getValue(layer, 'layout', 'text-offset', zoom, f, functionCache, featureState);\n const textTranslate = getValue(layer, 'paint', 'text-translate', zoom, f, functionCache, featureState);\n // Text offset has to take halo width and line height into account\n let vOffset = 0;\n let hOffset = 0;\n if (placement == 'point') {\n textAlign = 'center';\n if (textAnchor.indexOf('left') !== -1) {\n textAlign = 'left';\n hOffset = textHaloWidth;\n } else if (textAnchor.indexOf('right') !== -1) {\n textAlign = 'right';\n hOffset = -textHaloWidth;\n }\n const textRotationAlignment = getValue(layer, 'layout', 'text-rotation-alignment', zoom, f, functionCache, featureState);\n text.setRotateWithView(textRotationAlignment == 'map');\n } else {\n text.setMaxAngle(deg2rad(getValue(layer, 'layout', 'text-max-angle', zoom, f, functionCache, featureState)) * label.length / wrappedLabel.length);\n text.setRotateWithView(false);\n }\n text.setTextAlign(textAlign);\n let textBaseline = 'middle';\n if (textAnchor.indexOf('bottom') == 0) {\n textBaseline = 'bottom';\n vOffset = -textHaloWidth - 0.5 * (textLineHeight - 1) * textSize;\n } else if (textAnchor.indexOf('top') == 0) {\n textBaseline = 'top';\n vOffset = textHaloWidth + 0.5 * (textLineHeight - 1) * textSize;\n }\n text.setTextBaseline(textBaseline);\n const textJustify = getValue(layer, 'layout', 'text-justify', zoom, f, functionCache, featureState);\n text.setJustify(textJustify === 'auto' ? undefined : textJustify);\n text.setOffsetX(textOffset[0] * textSize + hOffset + textTranslate[0]);\n text.setOffsetY(textOffset[1] * textSize + vOffset + textTranslate[1]);\n textColor.setColor(colorWithOpacity(getValue(layer, 'paint', 'text-color', zoom, f, functionCache, featureState), opacity));\n text.setFill(textColor);\n const haloColor = colorWithOpacity(getValue(layer, 'paint', 'text-halo-color', zoom, f, functionCache, featureState), opacity);\n if (haloColor) {\n textHalo.setColor(haloColor);\n // spec here : https://docs.mapbox.com/mapbox-gl-js/style-spec/#paint-symbol-text-halo-width\n // Halo width must be doubled because it is applied around the center of the text outline\n textHaloWidth *= 2;\n // 1/4 of text size (spec) x 2\n const halfTextSize = 0.5 * textSize;\n textHalo.setWidth(textHaloWidth <= halfTextSize ? textHaloWidth : halfTextSize);\n text.setStroke(textHalo);\n } else {\n text.setStroke(undefined);\n }\n const textPadding = getValue(layer, 'layout', 'text-padding', zoom, f, functionCache, featureState);\n const padding = text.getPadding();\n if (textPadding !== padding[0]) {\n padding[0] = textPadding;\n padding[1] = textPadding;\n padding[2] = textPadding;\n padding[3] = textPadding;\n }\n style.setZIndex(index);\n }\n }\n }\n if (stylesLength > -1) {\n styles.length = stylesLength + 1;\n if (recordLayer) {\n if ('set' in feature) {\n // ol/Feature\n feature.set('mapbox-layer', featureBelongsToLayer);\n } else {\n // ol/render/Feature\n feature.getProperties()['mapbox-layer'] = featureBelongsToLayer;\n }\n }\n return styles;\n }\n return undefined;\n };\n olLayer.setStyle(styleFunction);\n olLayer.set('mapbox-source', mapboxSource);\n olLayer.set('mapbox-layers', mapboxLayers);\n olLayer.set('mapbox-featurestate', olLayer.get('mapbox-featurestate') || {});\n return styleFunction;\n}\n/**\n * Get the the style for a specific Mapbox layer only. This can be useful for creating a legend.\n * @param {import(\"ol/Feature\").default|import(\"ol/render/Feature\").default} feature OpenLayers feature.\n * @param {number} resolution View resolution.\n * @param {import(\"ol/layer\").Vector|import(\"ol/layer\").VectorTile} olLayer OpenLayers layer.\n * @param {string} layerId Id of the Mapbox layer to get the style for\n * @return {Array} Styles for the provided Mapbox layer.\n */\nfunction getStyleForLayer(feature, resolution, olLayer, layerId) {\n const evaluateStyle = olLayer.getStyleFunction();\n if (evaluateStyle.length === 3) {\n // @ts-ignore\n return evaluateStyle(feature, resolution, layerId);\n }\n return undefined;\n}\n\n/**\n * Generates a shaded relief image given elevation data. Uses a 3x3\n * neighborhood for determining slope and aspect.\n * @param {Array} inputs Array of input images.\n * @param {Object} data Data added in the \"beforeoperations\" event.\n * @return {ImageData} Output image.\n */\nfunction hillshade(inputs, data) {\n const elevationImage = inputs[0];\n const width = elevationImage.width;\n const height = elevationImage.height;\n const elevationData = elevationImage.data;\n const shadeData = new Uint8ClampedArray(elevationData.length);\n const dp = data.resolution * 2;\n const maxX = width - 1;\n const maxY = height - 1;\n const pixel = [\n 0,\n 0,\n 0,\n 0\n ];\n const twoPi = 2 * Math.PI;\n const halfPi = Math.PI / 2;\n const sunEl = Math.PI * data.sunEl / 180;\n const sunAz = Math.PI * data.sunAz / 180;\n const cosSunEl = Math.cos(sunEl);\n const sinSunEl = Math.sin(sunEl);\n const highlightColor = data.highlightColor;\n const shadowColor = data.shadowColor;\n const accentColor = data.accentColor;\n const encoding = data.encoding;\n let pixelX, pixelY, x0, x1, y0, y1, offset, z0, z1, dzdx, dzdy, slope, aspect, accent, scaled, shade, scaledAccentColor, compositeShadeColor, clamp, slopeScaleBase, scaledSlope, cosIncidence;\n function calculateElevation(pixel, encoding = 'mapbox') {\n // The method used to extract elevations from the DEM.\n //\n // The supported methods are the Mapbox format\n // (red * 256 * 256 + green * 256 + blue) * 0.1 - 10000\n // and the Terrarium format\n // (red * 256 + green + blue / 256) - 32768\n //\n if (encoding === 'mapbox') {\n return (pixel[0] * 256 * 256 + pixel[1] * 256 + pixel[2]) * 0.1 - 10000;\n }\n if (encoding === 'terrarium') {\n return pixel[0] * 256 + pixel[1] + pixel[2] / 256 - 32768;\n }\n }\n for (pixelY = 0; pixelY <= maxY; ++pixelY) {\n y0 = pixelY === 0 ? 0 : pixelY - 1;\n y1 = pixelY === maxY ? maxY : pixelY + 1;\n for (pixelX = 0; pixelX <= maxX; ++pixelX) {\n x0 = pixelX === 0 ? 0 : pixelX - 1;\n x1 = pixelX === maxX ? maxX : pixelX + 1;\n // determine elevation for (x0, pixelY)\n offset = (pixelY * width + x0) * 4;\n pixel[0] = elevationData[offset];\n pixel[1] = elevationData[offset + 1];\n pixel[2] = elevationData[offset + 2];\n pixel[3] = elevationData[offset + 3];\n z0 = data.vert * calculateElevation(pixel, encoding);\n // determine elevation for (x1, pixelY)\n offset = (pixelY * width + x1) * 4;\n pixel[0] = elevationData[offset];\n pixel[1] = elevationData[offset + 1];\n pixel[2] = elevationData[offset + 2];\n pixel[3] = elevationData[offset + 3];\n z1 = data.vert * calculateElevation(pixel, encoding);\n dzdx = (z1 - z0) / dp;\n // determine elevation for (pixelX, y0)\n offset = (y0 * width + pixelX) * 4;\n pixel[0] = elevationData[offset];\n pixel[1] = elevationData[offset + 1];\n pixel[2] = elevationData[offset + 2];\n pixel[3] = elevationData[offset + 3];\n z0 = data.vert * calculateElevation(pixel, encoding);\n // determine elevation for (pixelX, y1)\n offset = (y1 * width + pixelX) * 4;\n pixel[0] = elevationData[offset];\n pixel[1] = elevationData[offset + 1];\n pixel[2] = elevationData[offset + 2];\n pixel[3] = elevationData[offset + 3];\n z1 = data.vert * calculateElevation(pixel, encoding);\n dzdy = (z1 - z0) / dp;\n aspect = Math.atan2(dzdy, -dzdx);\n if (aspect < 0) {\n aspect = halfPi - aspect;\n } else if (aspect > halfPi) {\n aspect = twoPi - aspect + halfPi;\n } else {\n aspect = halfPi - aspect;\n }\n // Bootstrap slope and corresponding incident values\n slope = Math.atan(Math.sqrt(dzdx * dzdx + dzdy * dzdy));\n cosIncidence = sinSunEl * Math.cos(slope) + cosSunEl * Math.sin(slope) * Math.cos(sunAz - aspect);\n accent = Math.cos(slope);\n // 255 for Hex colors\n scaled = 255 * cosIncidence;\n /*\n * The following is heavily inspired\n * by [Maplibre's equivalent WebGL shader](https://github.com/maplibre/maplibre-gl-js/blob/main/src/shaders/hillshade.fragment.glsl)\n */\n // Forces given value to stay between two given extremes\n clamp = Math.min(Math.max(2 * data.sunEl, 0), 1);\n // Intensity basis for hillshade opacity\n slopeScaleBase = 1.875 - data.opacity * 1.75;\n // Intensity interpolation so that higher intensity values create more opaque hillshading\n scaledSlope = data.opacity !== 0.5 ? halfPi * ((Math.pow(slopeScaleBase, slope) - 1) / (Math.pow(slopeScaleBase, halfPi) - 1)) : slope;\n // Accent hillshade color with given accentColor to emphasize rougher terrain\n scaledAccentColor = {\n r: (1 - accent) * accentColor.r * clamp * 255,\n g: (1 - accent) * accentColor.g * clamp * 255,\n b: (1 - accent) * accentColor.b * clamp * 255,\n a: (1 - accent) * accentColor.a * clamp * 255\n };\n // Allows highlight vs shadow discrimination\n shade = Math.abs(((aspect + sunAz) / Math.PI + 0.5) % 2 - 1);\n // Creates a composite color mix between highlight & shadow colors to emphasize slopes\n compositeShadeColor = {\n r: (highlightColor.r * (1 - shade) + shadowColor.r * shade) * scaled,\n g: (highlightColor.g * (1 - shade) + shadowColor.g * shade) * scaled,\n b: (highlightColor.b * (1 - shade) + shadowColor.b * shade) * scaled,\n a: (highlightColor.a * (1 - shade) + shadowColor.a * shade) * scaled\n };\n // Fill in result color value\n offset = (pixelY * width + pixelX) * 4;\n shadeData[offset] = scaledAccentColor.r * (1 - shade) + compositeShadeColor.r;\n shadeData[offset + 1] = scaledAccentColor.g * (1 - shade) + compositeShadeColor.g;\n shadeData[offset + 2] = scaledAccentColor.b * (1 - shade) + compositeShadeColor.b;\n // Key opacity on the scaledSlope to improve legibility by increasing higher elevation rates' contrast\n shadeData[offset + 3] = elevationData[offset + 3] * data.opacity * clamp * Math.sin(scaledSlope);\n }\n }\n return new ImageData(shadeData, width, height);\n}\n\n/*\nol-mapbox-style - Use Mapbox Style objects with OpenLayers\nCopyright 2016-present ol-mapbox-style contributors\nLicense: https://raw.githubusercontent.com/openlayers/ol-mapbox-style/master/LICENSE\n*/\n/**\n * @typedef {Object} FeatureIdentifier\n * @property {string|number} id The feature id.\n * @property {string} source The source id.\n */\n/**\n * @typedef {Object} Options\n * @property {string} [accessToken] Access token for 'mapbox://' urls.\n * @property {function(string, import(\"./util.js\").ResourceType): (Request|string|void)} [transformRequest]\n * Function for controlling how `ol-mapbox-style` fetches resources. Can be used for modifying\n * the url, adding headers or setting credentials options. Called with the url and the resource\n * type as arguments, this function is supposed to return a `Request` or a url `string`. Without a return value,\n * the original request will not be modified.\n * @property {string} [projection='EPSG:3857'] Only useful when working with non-standard projections.\n * Code of a projection registered with OpenLayers. All sources of the style must be provided in this\n * projection. The projection must also have a valid extent defined, which will be used to determine the\n * origin and resolutions of the tile grid for all tiled sources of the style. When provided, the bbox\n * placeholder in tile and geojson urls changes: the default is `{bbox-epsg-3857}`, when projection is e.g.\n * set to `EPSG:4326`, the bbox placeholder will be `{bbox-epsg-4326}`.\n * @property {Array} [resolutions] Only useful when working with non-standard projections.\n * Resolutions for mapping resolution to the `zoom` used in the Mapbox style.\n * @property {string} [styleUrl] URL of the Mapbox GL style. Required for styles that were provided\n * as object, when they contain a relative sprite url, or sources referencing data by relative url.\n * @property {function(VectorLayer|VectorTileLayer, string):HTMLImageElement|HTMLCanvasElement|string|undefined} [getImage=undefined]\n * Function that returns an image for an icon name. If the result is an HTMLImageElement, it must already be\n * loaded. The layer can be used to call layer.changed() when the loading and processing of the image has finished.\n * This function be used for icons not in the sprite or to override sprite icons.\n * @property {string} [accessTokenParam='access_token'] Access token param. For internal use.\n */\n/**\n * @typedef {Object} ApplyStyleOptions\n * @property {string} [source=''] Source. Default is `''`, which causes the first source in the\n * style to be used.\n * @property {Array} [layers] Layers. If no source is provided, the layers with the\n * provided ids will be used from the style's `layers` array. All layers need to use the same source.\n * @property {boolean} [updateSource=true] Update or create vector (tile) layer source with parameters\n * specified for the source in the mapbox style definition.\n */\n/**\n * @param {import(\"ol/proj/Projection.js\").default} projection Projection.\n * @param {number} [tileSize=512] Tile size.\n * @return {Array} Resolutions.\n */\nfunction getTileResolutions(projection, tileSize = 512) {\n return projection.getExtent() ? createXYZ({\n extent: projection.getExtent(),\n tileSize: tileSize,\n maxZoom: 22\n }).getResolutions() : defaultResolutions;\n}\n/**\n * @param {string} styleUrl Style URL.\n * @param {Options} options Options.\n * @return {Options} Completed options with accessToken and accessTokenParam.\n */\nfunction completeOptions(styleUrl, options) {\n if (!options.accessToken) {\n options = Object.assign({}, options);\n const searchParams = new URL(styleUrl).searchParams;\n // The last search parameter is the access token\n searchParams.forEach((value, key) => {\n options.accessToken = value;\n options.accessTokenParam = key;\n });\n }\n return options;\n}\n/**\n * Applies a style function to an `ol/layer/VectorTile` or `ol/layer/Vector`\n * with an `ol/source/VectorTile` or an `ol/source/Vector`. If the layer does not have a source\n * yet, it will be created and populated from the information in the `glStyle` (unless `updateSource` is\n * set to `false`).\n *\n * **Example:**\n * ```js\n * import {applyStyle} from 'ol-mapbox-style';\n * import {VectorTile} from 'ol/layer.js';\n *\n * const layer = new VectorTile({declutter: true});\n * applyStyle(layer, 'https://api.maptiler.com/maps/basic/style.json?key=YOUR_OPENMAPTILES_TOKEN');\n * ```\n *\n * The style function will render all layers from the `glStyle` object that use the source\n * of the first layer, the specified `source`, or a subset of layers from the same source. The\n * source needs to be a `\"type\": \"vector\"` or `\"type\": \"geojson\"` source.\n *\n * Two additional properties will be set on the provided layer:\n *\n * * `mapbox-source`: The `id` of the Mapbox Style document's source that the\n * OpenLayers layer was created from. Usually `apply()` creates one\n * OpenLayers layer per Mapbox Style source, unless the layer stack has\n * layers from different sources in between.\n * * `mapbox-layers`: The `id`s of the Mapbox Style document's layers that are\n * included in the OpenLayers layer.\n *\n * @param {VectorTileLayer|VectorLayer} layer OpenLayers layer. When the layer has a source configured,\n * it will be modified to use the configuration from the glStyle's `source`. Options specified on the\n * layer's source will override those from the glStyle's `source`, except for `url` and\n * `tileUrlFunction`. When the source projection is the default (`EPSG:3857`), the `tileGrid` will\n * also be overridden. If you'd rather not have ol-mapbox-style modify the source, configure `applyStyle()`\n * with the `updateSource: false` option.\n * @param {string|Object} glStyle Mapbox Style object.\n * @param {string|Array|Options&ApplyStyleOptions} [sourceOrLayersOrOptions] Options or\n * `source` key or an array of layer `id`s from the Mapbox Style object. When a `source` key is\n * provided, all layers for the specified source will be included in the style function. When layer\n * `id`s are provided, they must be from layers that use the same source. When not provided or a falsey\n * value, all layers using the first source specified in the glStyle will be rendered.\n * @param {Options&ApplyStyleOptions|string} [optionsOrPath] **Deprecated**. Options. Alternatively the path of the style file\n * (only required when a relative path is used for the `\"sprite\"` property of the style).\n * @param {Array} [resolutions] **Deprecated**. Resolutions for mapping resolution to zoom level.\n * Only needed when working with non-standard tile grids or projections, can also be supplied with\n * options.\n * @return {Promise} Promise which will be resolved when the style can be used\n * for rendering.\n */\nfunction applyStyle(layer, glStyle, sourceOrLayersOrOptions = '', optionsOrPath = {}, resolutions = undefined) {\n let styleUrl, sourceId;\n /** @type {Options&ApplyStyleOptions} */\n let options;\n let sourceOrLayers;\n let updateSource = true;\n if (typeof sourceOrLayersOrOptions !== 'string' && !Array.isArray(sourceOrLayersOrOptions)) {\n options = sourceOrLayersOrOptions;\n sourceOrLayers = options.source || options.layers;\n optionsOrPath = options;\n } else {\n sourceOrLayers = sourceOrLayersOrOptions;\n }\n if (typeof optionsOrPath === 'string') {\n styleUrl = optionsOrPath;\n options = {};\n } else {\n styleUrl = optionsOrPath.styleUrl;\n options = optionsOrPath;\n }\n if (options.updateSource === false) {\n updateSource = false;\n }\n if (!resolutions) {\n resolutions = options.resolutions;\n }\n if (!styleUrl && typeof glStyle === 'string' && !glStyle.trim().startsWith('{')) {\n styleUrl = glStyle;\n }\n if (styleUrl) {\n styleUrl = styleUrl.startsWith('data:') ? location.href : normalizeStyleUrl(styleUrl, options.accessToken);\n options = completeOptions(styleUrl, options);\n }\n return new Promise(function (resolve, reject) {\n // TODO: figure out where best place to check source type is\n // Note that the source arg is an array of gl layer ids and each must be\n // dereferenced to get source type to validate\n getGlStyle(glStyle, options).then(function (glStyle) {\n if (glStyle.version != 8) {\n return reject(new Error('glStyle version 8 required.'));\n }\n if (!(layer instanceof VectorLayer || layer instanceof VectorTileLayer)) {\n return reject(new Error('Can only apply to VectorLayer or VectorTileLayer'));\n }\n const type = layer instanceof VectorTileLayer ? 'vector' : 'geojson';\n if (!sourceOrLayers) {\n sourceId = Object.keys(glStyle.sources).find(function (key) {\n return glStyle.sources[key].type === type;\n });\n sourceOrLayers = sourceId;\n } else if (Array.isArray(sourceOrLayers)) {\n sourceId = glStyle.layers.find(function (layer) {\n return layer.id === sourceOrLayers[0];\n }).source;\n } else {\n sourceId = sourceOrLayers;\n }\n if (!sourceId) {\n return reject(new Error(`No ${ type } source found in the glStyle.`));\n }\n function assignSource() {\n if (!updateSource) {\n return Promise.resolve();\n }\n if (layer instanceof VectorTileLayer) {\n return setupVectorSource(glStyle.sources[sourceId], styleUrl, options).then(function (source) {\n const targetSource = layer.getSource();\n if (!targetSource) {\n layer.setSource(source);\n } else if (source !== targetSource) {\n targetSource.setTileUrlFunction(source.getTileUrlFunction());\n if (typeof targetSource.setUrls === 'function' && typeof source.getUrls === 'function') {\n // to get correct keys for tile cache and queue\n targetSource.setUrls(source.getUrls());\n }\n //@ts-ignore\n if (!targetSource.format_) {\n //@ts-ignore\n targetSource.format_ = source.format_;\n }\n if (!targetSource.getAttributions()) {\n targetSource.setAttributions(source.getAttributions());\n }\n if (targetSource.getTileLoadFunction() === defaultLoadFunction) {\n targetSource.setTileLoadFunction(source.getTileLoadFunction());\n }\n if (equivalent(targetSource.getProjection(), source.getProjection())) {\n targetSource.tileGrid = source.getTileGrid();\n }\n }\n if (!isFinite(layer.getMaxResolution()) && !isFinite(layer.getMinZoom())) {\n const tileGrid = layer.getSource().getTileGrid();\n layer.setMaxResolution(tileGrid.getResolution(tileGrid.getMinZoom()));\n }\n });\n }\n const glSource = glStyle.sources[sourceId];\n let source = layer.getSource();\n if (!source || source.get('mapbox-source') !== glSource) {\n source = setupGeoJSONSource(glSource, styleUrl, options);\n }\n const targetSource = layer.getSource();\n if (!targetSource) {\n layer.setSource(source);\n } else if (source !== targetSource) {\n if (!targetSource.getAttributions()) {\n targetSource.setAttributions(source.getAttributions());\n }\n //@ts-ignore\n if (!targetSource.format_) {\n //@ts-ignore\n targetSource.format_ = source.getFormat();\n }\n //@ts-ignore\n targetSource.url_ = source.getUrl();\n }\n return Promise.resolve();\n }\n let spriteScale, spriteData, spriteImageUrl, style;\n function onChange() {\n if (!style && (!glStyle.sprite || spriteData)) {\n if (options.projection && !resolutions) {\n const projection = get$1(options.projection);\n const units = projection.getUnits();\n if (units !== 'm') {\n resolutions = defaultResolutions.map(resolution => resolution / METERS_PER_UNIT[units]);\n }\n }\n style = stylefunction(layer, glStyle, sourceOrLayers, resolutions, spriteData, spriteImageUrl, getFonts, options.getImage);\n if (!layer.getStyle()) {\n reject(new Error(`Nothing to show for source [${ sourceId }]`));\n } else {\n assignSource().then(resolve).catch(reject);\n }\n } else if (style) {\n layer.setStyle(style);\n assignSource().then(resolve).catch(reject);\n } else {\n reject(new Error('Something went wrong trying to apply style.'));\n }\n }\n if (glStyle.sprite) {\n const sprite = new URL(normalizeSpriteUrl(glStyle.sprite, options.accessToken, styleUrl || location.href));\n spriteScale = window.devicePixelRatio >= 1.5 ? 0.5 : 1;\n const sizeFactor = spriteScale == 0.5 ? '@2x' : '';\n let spriteUrl = sprite.origin + sprite.pathname + sizeFactor + '.json' + sprite.search;\n new Promise(function (resolve, reject) {\n fetchResource('Sprite', spriteUrl, options).then(resolve).catch(function (error) {\n spriteUrl = sprite.origin + sprite.pathname + '.json' + sprite.search;\n fetchResource('Sprite', spriteUrl, options).then(resolve).catch(reject);\n });\n }).then(function (spritesJson) {\n if (spritesJson === undefined) {\n reject(new Error('No sprites found.'));\n }\n spriteData = spritesJson;\n spriteImageUrl = sprite.origin + sprite.pathname + sizeFactor + '.png' + sprite.search;\n if (options.transformRequest) {\n const transformed = options.transformRequest(spriteImageUrl, 'SpriteImage') || spriteImageUrl;\n if (transformed instanceof Request) {\n spriteImageUrl = transformed;\n }\n }\n onChange();\n }).catch(function (err) {\n reject(new Error(`Sprites cannot be loaded: ${ spriteUrl }: ${ err.message }`));\n });\n } else {\n onChange();\n }\n }).catch(reject);\n });\n}\nconst emptyObj = {};\nfunction setFirstBackground(mapOrLayer, glStyle, options) {\n glStyle.layers.some(function (layer) {\n if (layer.type === 'background') {\n if (mapOrLayer instanceof Layer) {\n mapOrLayer.setBackground(function (resolution) {\n return getBackgroundColor(layer, resolution, options, {});\n });\n return true;\n }\n if (mapOrLayer instanceof Map || mapOrLayer instanceof LayerGroup) {\n mapOrLayer.getLayers().push(setupBackgroundLayer(layer, options, {}));\n return true;\n }\n }\n });\n}\n/**\n * Applies properties of the Mapbox Style's first `background` layer to the\n * provided map or layer (group).\n *\n * **Example:**\n * ```js\n * import {applyBackground} from 'ol-mapbox-style';\n * import {Map} from 'ol';\n *\n * const map = new Map({target: 'map'});\n * applyBackground(map, 'https://api.maptiler.com/maps/basic/style.json?key=YOUR_OPENMAPTILES_TOKEN');\n * ```\n * @param {Map|import(\"ol/layer/Base.js\").default} mapOrLayer OpenLayers Map or layer (group).\n * @param {Object|string} glStyle Mapbox Style object or url.\n * @param {Options} options Options.\n * @return {Promise} Promise that resolves when the background is applied.\n */\nfunction applyBackground(mapOrLayer, glStyle, options = {}) {\n return getGlStyle(glStyle, options).then(function (glStyle) {\n setFirstBackground(mapOrLayer, glStyle, options);\n });\n}\nfunction getSourceIdByRef(layers, ref) {\n let sourceId;\n layers.some(function (layer) {\n if (layer.id == ref) {\n sourceId = layer.source;\n return true;\n }\n });\n return sourceId;\n}\nfunction extentFromTileJSON(tileJSON, projection) {\n const bounds = tileJSON.bounds;\n if (bounds) {\n const ll = fromLonLat([\n bounds[0],\n bounds[1]\n ], projection);\n const tr = fromLonLat([\n bounds[2],\n bounds[3]\n ], projection);\n return [\n ll[0],\n ll[1],\n tr[0],\n tr[1]\n ];\n }\n return get$1(projection).getExtent();\n}\nfunction sourceOptionsFromTileJSON(glSource, tileJSON, options) {\n const tileJSONSource = new TileJSON({\n tileJSON: tileJSON,\n tileSize: glSource.tileSize || tileJSON.tileSize || 512\n });\n const tileJSONDoc = tileJSONSource.getTileJSON();\n const tileGrid = tileJSONSource.getTileGrid();\n const projection = get$1(options.projection || 'EPSG:3857');\n const extent = extentFromTileJSON(tileJSONDoc, projection);\n const projectionExtent = projection.getExtent();\n const minZoom = tileJSONDoc.minzoom || 0;\n const maxZoom = tileJSONDoc.maxzoom || 22;\n /** @type {import(\"ol/source/VectorTile.js\").Options} */\n const sourceOptions = {\n attributions: tileJSONSource.getAttributions(),\n projection: projection,\n tileGrid: new TileGrid({\n origin: projectionExtent ? getTopLeft(projectionExtent) : tileGrid.getOrigin(0),\n extent: extent || tileGrid.getExtent(),\n minZoom: minZoom,\n resolutions: getTileResolutions(projection, tileJSON.tileSize).slice(0, maxZoom + 1),\n tileSize: tileGrid.getTileSize(0)\n })\n };\n if (Array.isArray(tileJSONDoc.tiles)) {\n sourceOptions.urls = tileJSONDoc.tiles;\n } else {\n sourceOptions.url = tileJSONDoc.tiles;\n }\n return sourceOptions;\n}\nfunction getBackgroundColor(glLayer, resolution, options, functionCache) {\n const background = {\n id: glLayer.id,\n type: glLayer.type\n };\n const layout = glLayer.layout || {};\n const paint = glLayer.paint || {};\n background['paint'] = paint;\n const zoom = getZoomForResolution(resolution, options.resolutions || defaultResolutions);\n let bg, opacity;\n if (paint['background-color'] !== undefined) {\n bg = getValue(background, 'paint', 'background-color', zoom, emptyObj, functionCache);\n }\n if (paint['background-opacity'] !== undefined) {\n opacity = getValue(background, 'paint', 'background-opacity', zoom, emptyObj, functionCache);\n }\n return layout.visibility == 'none' ? undefined : colorWithOpacity(bg, opacity);\n}\n/**\n * @param {Object} glLayer Mapbox Style layer object.\n * @param {Options} options Options.\n * @param {Object} functionCache Cache for functions.\n * @return {Layer} OpenLayers layer.\n */\nfunction setupBackgroundLayer(glLayer, options, functionCache) {\n const div = document.createElement('div');\n div.className = 'ol-mapbox-style-background';\n div.style.position = 'absolute';\n div.style.width = '100%';\n div.style.height = '100%';\n return new Layer({\n source: new Source({}),\n render(frameState) {\n const color = getBackgroundColor(glLayer, frameState.viewState.resolution, options, functionCache);\n div.style.backgroundColor = color;\n return div;\n }\n });\n}\n/**\n * Creates an OpenLayers VectorTile source for a gl source entry.\n * @param {Object} glSource \"source\" entry from a Mapbox Style object.\n * @param {string|undefined} styleUrl URL to use for the source. This is expected to be the complete http(s) url,\n * with access key applied.\n * @param {Options} options Options.\n * @return {Promise} Promise resolving to a VectorTile source.\n * @private\n */\nfunction setupVectorSource(glSource, styleUrl, options) {\n return new Promise(function (resolve, reject) {\n getTileJson(glSource, styleUrl, options).then(function ({tileJson, tileLoadFunction}) {\n const sourceOptions = sourceOptionsFromTileJSON(glSource, tileJson, options);\n sourceOptions.tileLoadFunction = tileLoadFunction;\n sourceOptions.format = new MVT();\n resolve(new VectorTileSource(sourceOptions));\n }).catch(reject);\n });\n}\nfunction setupVectorLayer(glSource, styleUrl, options) {\n const layer = new VectorTileLayer({\n declutter: true,\n visible: false\n });\n setupVectorSource(glSource, styleUrl, options).then(function (source) {\n source.set('mapbox-source', glSource);\n layer.setSource(source);\n }).catch(function (error) {\n layer.setSource(undefined);\n });\n return layer;\n}\nfunction getBboxTemplate(projection) {\n const projCode = projection ? projection.getCode() : 'EPSG:3857';\n return `{bbox-${ projCode.toLowerCase().replace(/[^a-z0-9]/g, '-') }}`;\n}\nfunction setupRasterLayer(glSource, styleUrl, options) {\n const layer = new TileLayer();\n getTileJson(glSource, styleUrl, options).then(function ({tileJson, tileLoadFunction}) {\n const source = new TileJSON({\n interpolate: options.interpolate === undefined ? true : options.interpolate,\n transition: 0,\n crossOrigin: 'anonymous',\n tileJSON: tileJson\n });\n source.tileGrid = sourceOptionsFromTileJSON(glSource, tileJson, options).tileGrid;\n if (options.projection) {\n //@ts-ignore\n source.projection = get$1(options.projection);\n }\n const getTileUrl = source.getTileUrlFunction();\n if (tileLoadFunction) {\n source.setTileLoadFunction(tileLoadFunction);\n }\n source.setTileUrlFunction(function (tileCoord, pixelRatio, projection) {\n const bboxTemplate = getBboxTemplate(projection);\n let src = getTileUrl(tileCoord, pixelRatio, projection);\n if (src.indexOf(bboxTemplate) != -1) {\n const bbox = source.getTileGrid().getTileCoordExtent(tileCoord);\n src = src.replace(bboxTemplate, bbox.toString());\n }\n return src;\n });\n source.set('mapbox-source', glSource);\n layer.setSource(source);\n }).catch(function (error) {\n layer.setSource(undefined);\n });\n return layer;\n}\n/**\n *\n * @param {Object} glSource \"source\" entry from a Mapbox Style object.\n * @param {string} styleUrl Style url\n * @param {Options} options ol-mapbox-style options.\n * @return {ImageLayer} The raster layer\n */\nfunction setupHillshadeLayer(glSource, styleUrl, options) {\n const tileLayer = setupRasterLayer(glSource, styleUrl, options);\n /** @type {ImageLayer} */\n const layer = new ImageLayer({\n source: new Raster({\n operationType: 'image',\n operation: hillshade,\n sources: [tileLayer]\n })\n });\n return layer;\n}\n/**\n * @param {Object} glSource glStyle source.\n * @param {string} styleUrl Style URL.\n * @param {Options} options Options.\n * @return {VectorSource} Configured vector source.\n */\nfunction setupGeoJSONSource(glSource, styleUrl, options) {\n const geoJsonFormat = options.projection ? new GeoJSON({ dataProjection: options.projection }) : new GeoJSON();\n const data = glSource.data;\n const sourceOptions = {};\n if (typeof data == 'string') {\n const geoJsonUrl = normalizeSourceUrl(data, options.accessToken, options.accessTokenParam || 'access_token', styleUrl || location.href);\n if (/\\{bbox-[0-9a-z-]+\\}/.test(geoJsonUrl)) {\n const extentUrl = (extent, resolution, projection) => {\n const bboxTemplate = getBboxTemplate(projection);\n return geoJsonUrl.replace(bboxTemplate, `${ extent.join(',') }`);\n };\n const source = new VectorSource({\n attributions: glSource.attribution,\n format: geoJsonFormat,\n loader: (extent, resolution, projection, success, failure) => {\n const url = typeof extentUrl === 'function' ? extentUrl(extent, resolution, projection) : extentUrl;\n fetchResource('GeoJSON', url, options).then(json => {\n const features = source.getFormat().readFeatures(json, { featureProjection: projection });\n source.addFeatures(features);\n success(features);\n }).catch(response => {\n source.removeLoadedExtent(extent);\n failure();\n });\n },\n strategy: bbox\n });\n source.set('mapbox-source', glSource);\n return source;\n }\n const source = new VectorSource({\n attributions: glSource.attribution,\n format: geoJsonFormat,\n url: geoJsonUrl,\n loader: (extent, resolution, projection, success, failure) => {\n fetchResource('GeoJSON', geoJsonUrl, options).then(json => {\n const features = source.getFormat().readFeatures(json, { featureProjection: projection });\n source.addFeatures(features);\n success(features);\n }).catch(response => {\n source.removeLoadedExtent(extent);\n failure();\n });\n }\n });\n return source;\n }\n sourceOptions.features = geoJsonFormat.readFeatures(data, { featureProjection: getUserProjection() || 'EPSG:3857' });\n const source = new VectorSource(Object.assign({\n attributions: glSource.attribution,\n format: geoJsonFormat\n }, sourceOptions));\n source.set('mapbox-source', glSource);\n return source;\n}\nfunction setupGeoJSONLayer(glSource, styleUrl, options) {\n return new VectorLayer({\n declutter: true,\n source: setupGeoJSONSource(glSource, styleUrl, options),\n visible: false\n });\n}\nfunction prerenderRasterLayer(glLayer, layer, functionCache) {\n let zoom = null;\n return function (event) {\n if (glLayer.paint && 'raster-opacity' in glLayer.paint && event.frameState.viewState.zoom !== zoom) {\n zoom = event.frameState.viewState.zoom;\n delete functionCache[glLayer.id];\n updateRasterLayerProperties(glLayer, layer, zoom, functionCache);\n }\n };\n}\nfunction updateRasterLayerProperties(glLayer, layer, zoom, functionCache) {\n const opacity = getValue(glLayer, 'paint', 'raster-opacity', zoom, emptyObj, functionCache);\n layer.setOpacity(opacity);\n}\nfunction manageVisibility(layer, mapOrGroup) {\n function onChange() {\n const glStyle = mapOrGroup.get('mapbox-style');\n if (!glStyle) {\n return;\n }\n const mapboxLayers = derefLayers(glStyle.layers);\n const layerMapboxLayerids = layer.get('mapbox-layers');\n const visible = mapboxLayers.filter(function (mapboxLayer) {\n return layerMapboxLayerids.includes(mapboxLayer.id);\n }).some(function (mapboxLayer) {\n return !mapboxLayer.layout || !mapboxLayer.layout.visibility || mapboxLayer.layout.visibility === 'visible';\n });\n if (layer.get('visible') !== visible) {\n layer.setVisible(visible);\n }\n }\n layer.on('change', onChange);\n onChange();\n}\nfunction setupLayer(glStyle, styleUrl, glLayer, options) {\n const functionCache = getFunctionCache(glStyle);\n const glLayers = glStyle.layers;\n const type = glLayer.type;\n const id = glLayer.source || getSourceIdByRef(glLayers, glLayer.ref);\n const glSource = glStyle.sources[id];\n let layer;\n if (type == 'background') {\n layer = setupBackgroundLayer(glLayer, options, functionCache);\n } else if (glSource.type == 'vector') {\n layer = setupVectorLayer(glSource, styleUrl, options);\n } else if (glSource.type == 'raster') {\n layer = setupRasterLayer(glSource, styleUrl, options);\n layer.setVisible(glLayer.layout ? glLayer.layout.visibility !== 'none' : true);\n layer.on('prerender', prerenderRasterLayer(glLayer, layer, functionCache));\n } else if (glSource.type == 'geojson') {\n layer = setupGeoJSONLayer(glSource, styleUrl, options);\n } else if (glSource.type == 'raster-dem' && glLayer.type == 'hillshade') {\n const hillshadeLayer = setupHillshadeLayer(glSource, styleUrl, options);\n layer = hillshadeLayer;\n hillshadeLayer.getSource().on('beforeoperations', function (event) {\n const data = event.data;\n data.resolution = event.resolution;\n const zoom = getZoomForResolution(event.resolution, options.resolutions || defaultResolutions);\n data.encoding = glSource.encoding;\n data.vert = 5 * getValue(glLayer, 'paint', 'hillshade-exaggeration', zoom, emptyObj, functionCache);\n data.sunAz = getValue(glLayer, 'paint', 'hillshade-illumination-direction', zoom, emptyObj, functionCache);\n data.sunEl = 35;\n data.opacity = 0.3;\n data.highlightColor = getValue(glLayer, 'paint', 'hillshade-highlight-color', zoom, emptyObj, functionCache);\n data.shadowColor = getValue(glLayer, 'paint', 'hillshade-shadow-color', zoom, emptyObj, functionCache);\n data.accentColor = getValue(glLayer, 'paint', 'hillshade-accent-color', zoom, emptyObj, functionCache);\n });\n layer.setVisible(glLayer.layout ? glLayer.layout.visibility !== 'none' : true);\n }\n const glSourceId = id;\n if (layer) {\n layer.set('mapbox-source', glSourceId);\n }\n return layer;\n}\n/**\n * @param {*} glStyle Mapbox Style.\n * @param {Map|LayerGroup} mapOrGroup Map or layer group.\n * @param {string} styleUrl Style URL.\n * @param {Options} options Options.\n * @return {Promise} Promise that resolves when the style is loaded.\n */\nfunction processStyle(glStyle, mapOrGroup, styleUrl, options) {\n const promises = [];\n let view = null;\n if (mapOrGroup instanceof Map) {\n view = mapOrGroup.getView();\n if (!view.isDef() && !view.getRotation() && !view.getResolutions()) {\n const projection = options.projection ? get$1(options.projection) : view.getProjection();\n view = new View(Object.assign(view.getProperties(), {\n maxResolution: defaultResolutions[0] / METERS_PER_UNIT[projection.getUnits()],\n projection: options.projection || view.getProjection()\n }));\n mapOrGroup.setView(view);\n }\n if ('center' in glStyle && !view.getCenter()) {\n view.setCenter(fromLonLat(glStyle.center, view.getProjection()));\n }\n if ('zoom' in glStyle && view.getZoom() === undefined) {\n view.setResolution(defaultResolutions[0] / METERS_PER_UNIT[view.getProjection().getUnits()] / Math.pow(2, glStyle.zoom));\n }\n if (!view.getCenter() || view.getZoom() === undefined) {\n view.fit(view.getProjection().getExtent(), {\n nearest: true,\n size: mapOrGroup.getSize()\n });\n }\n }\n mapOrGroup.set('mapbox-style', glStyle);\n mapOrGroup.set('mapbox-metadata', {\n styleUrl,\n options\n });\n const glLayers = glStyle.layers;\n let layerIds = [];\n let layer, glSourceId, id;\n for (let i = 0, ii = glLayers.length; i < ii; ++i) {\n const glLayer = glLayers[i];\n const type = glLayer.type;\n if (type == 'heatmap') {\n //FIXME Unsupported layer type\n throw new Error(`${ type } layers are not supported`);\n } else {\n id = glLayer.source || getSourceIdByRef(glLayers, glLayer.ref);\n // this technique assumes gl layers will be in a particular order\n if (!id || id != glSourceId) {\n if (layerIds.length) {\n promises.push(finalizeLayer(layer, layerIds, glStyle, styleUrl, mapOrGroup, options));\n layerIds = [];\n }\n layer = setupLayer(glStyle, styleUrl, glLayer, options);\n if (!(layer instanceof VectorLayer || layer instanceof VectorTileLayer)) {\n layerIds = [];\n }\n glSourceId = layer.get('mapbox-source');\n }\n layerIds.push(glLayer.id);\n }\n }\n promises.push(finalizeLayer(layer, layerIds, glStyle, styleUrl, mapOrGroup, options));\n return Promise.all(promises);\n}\n/**\n * Loads and applies a Mapbox Style object into an OpenLayers Map or LayerGroup.\n * This includes the map background, the layers, and for Map instances that did not\n * have a View defined yet also the center and the zoom.\n *\n * **Example:**\n * ```js\n * import apply from 'ol-mapbox-style';\n *\n * apply('map', 'mapbox://styles/mapbox/bright-v9', {accessToken: 'YOUR_MAPBOX_TOKEN'});\n * ```\n *\n * The center and zoom will only be set if present in the Mapbox Style document,\n * and if not already set on the OpenLayers map.\n *\n * Layers will be added to the OpenLayers map, without affecting any layers that\n * might already be set on the map.\n *\n * Layers added by `apply()` will have two additional properties:\n *\n * * `mapbox-source`: The `id` of the Mapbox Style document's source that the\n * OpenLayers layer was created from. Usually `apply()` creates one\n * OpenLayers layer per Mapbox Style source, unless the layer stack has\n * layers from different sources in between.\n * * `mapbox-layers`: The `id`s of the Mapbox Style document's layers that are\n * included in the OpenLayers layer.\n *\n * This function sets an additional `mapbox-style` property on the OpenLayers\n * Map or LayerGroup instance, which holds the Mapbox Style object.\n *\n * @param {Map|HTMLElement|string|LayerGroup} mapOrGroupOrElement Either an existing\n * OpenLayers Map instance, or a HTML element, or the id of a HTML element that will be\n * the target of a new OpenLayers Map, or a layer group. If layer group, styles\n * releated to the map and view will be ignored.\n * @param {string|Object} style JSON style object or style url pointing to a\n * Mapbox Style object. When using Mapbox APIs, the url is the `styleUrl`\n * shown in Mapbox Studio's \"share\" panel. In addition, the `accessToken` option\n * (see below) must be set.\n * When passed as JSON style object, all OpenLayers layers created by `apply()`\n * will be immediately available, but they may not have a source yet (i.e. when\n * they are defined by a TileJSON url in the Mapbox Style document). When passed\n * as style url, layers will be added to the map when the Mapbox Style document\n * is loaded and parsed.\n * @param {Options} options Options.\n * @return {Promise} A promise that resolves after all layers have been added to\n * the OpenLayers Map instance or LayerGroup, their sources set, and their styles applied. The\n * `resolve` callback will be called with the OpenLayers Map instance or LayerGroup as\n * argument.\n */\nfunction apply(mapOrGroupOrElement, style, options = {}) {\n let promise;\n /** @type {Map|LayerGroup} */\n let mapOrGroup;\n if (typeof mapOrGroupOrElement === 'string' || mapOrGroupOrElement instanceof HTMLElement) {\n mapOrGroup = new Map({ target: mapOrGroupOrElement });\n } else {\n mapOrGroup = mapOrGroupOrElement;\n }\n if (typeof style === 'string') {\n const styleUrl = style.startsWith('data:') ? location.href : normalizeStyleUrl(style, options.accessToken);\n options = completeOptions(styleUrl, options);\n promise = new Promise(function (resolve, reject) {\n getGlStyle(style, options).then(function (glStyle) {\n processStyle(glStyle, mapOrGroup, styleUrl, options).then(function () {\n resolve(mapOrGroup);\n }).catch(reject);\n }).catch(function (err) {\n reject(new Error(`Could not load ${ style }: ${ err.message }`));\n });\n });\n } else {\n promise = new Promise(function (resolve, reject) {\n processStyle(style, mapOrGroup, !options.styleUrl || options.styleUrl.startsWith('data:') ? location.href : normalizeStyleUrl(options.styleUrl, options.accessToken), options).then(function () {\n resolve(mapOrGroup);\n }).catch(reject);\n });\n }\n return promise;\n}\n/**\n * If layerIds is not empty, applies the style specified in glStyle to the layer,\n * and adds the layer to the map.\n *\n * The layer may not yet have a source when the function is called. If so, the style\n * is applied to the layer via a once listener on the 'change:source' event.\n *\n * @param {Layer} layer An OpenLayers layer instance.\n * @param {Array} layerIds Array containing layer ids of already-processed layers.\n * @param {Object} glStyle Style as a JSON object.\n * @param {string|undefined} styleUrl The original style URL. Only required\n * when a relative path is used with the `\"sprite\"` property of the style.\n * @param {Map|LayerGroup} mapOrGroup OpenLayers Map.\n * @param {Options} options Options.\n * @return {Promise} Returns a promise that resolves after the source has\n * been set on the specified layer, and the style has been applied.\n */\nfunction finalizeLayer(layer, layerIds, glStyle, styleUrl, mapOrGroup, options = {}) {\n let minZoom = 24;\n let maxZoom = 0;\n const glLayers = glStyle.layers;\n for (let i = 0, ii = glLayers.length; i < ii; ++i) {\n const glLayer = glLayers[i];\n if (layerIds.indexOf(glLayer.id) !== -1) {\n minZoom = Math.min('minzoom' in glLayer ? glLayer.minzoom : 0, minZoom);\n maxZoom = Math.max('maxzoom' in glLayer ? glLayer.maxzoom : 24, maxZoom);\n }\n }\n return new Promise(function (resolve, reject) {\n const setStyle = function () {\n const source = layer.getSource();\n if (!source || source.getState() === 'error') {\n reject(new Error('Error accessing data for source ' + layer.get('mapbox-source')));\n return;\n }\n if ('getTileGrid' in source) {\n const tileGrid = /** @type {import(\"ol/source/Tile.js\").default|import(\"ol/source/VectorTile.js\").default} */\n source.getTileGrid();\n if (tileGrid) {\n const sourceMinZoom = tileGrid.getMinZoom();\n if (minZoom > 0 || sourceMinZoom > 0) {\n layer.setMaxResolution(Math.min(defaultResolutions[minZoom], tileGrid.getResolution(sourceMinZoom)) + 1e-9);\n }\n if (maxZoom < 24) {\n layer.setMinResolution(defaultResolutions[maxZoom] + 1e-9);\n }\n }\n } else {\n if (minZoom > 0) {\n layer.setMaxResolution(defaultResolutions[minZoom] + 1e-9);\n }\n }\n if (source instanceof VectorSource || source instanceof VectorTileSource) {\n applyStyle(layer, glStyle, layerIds, Object.assign({ styleUrl: styleUrl }, options)).then(function () {\n manageVisibility(layer, mapOrGroup);\n resolve();\n }).catch(reject);\n } else {\n resolve();\n }\n };\n layer.set('mapbox-layers', layerIds);\n const layers = mapOrGroup.getLayers();\n if (layers.getArray().indexOf(layer) === -1) {\n layers.push(layer);\n }\n if (layer.getSource()) {\n setStyle();\n } else {\n layer.once('change:source', setStyle);\n }\n });\n}\n/**\n * Get the Mapbox Layer object for the provided `layerId`.\n * @param {Map|LayerGroup} mapOrGroup Map or LayerGroup.\n * @param {string} layerId Mapbox Layer id.\n * @return {Object} Mapbox Layer object.\n */\nfunction getMapboxLayer(mapOrGroup, layerId) {\n const style = mapOrGroup.get('mapbox-style');\n const layerStyle = style.layers.find(function (layer) {\n return layer.id === layerId;\n });\n return layerStyle;\n}\n/**\n * Add a new Mapbox Layer object to the style. The map will be re-rendered.\n * @param {Map|LayerGroup} mapOrGroup The Map or LayerGroup `apply` was called on.\n * @param {Object} mapboxLayer Mapbox Layer object.\n * @param {string} [beforeLayerId] Optional id of the Mapbox Layer before the new layer that will be added.\n * @return {Promise} Resolves when the added layer is available.\n */\nfunction addMapboxLayer(mapOrGroup, mapboxLayer, beforeLayerId) {\n const glStyle = mapOrGroup.get('mapbox-style');\n const mapboxLayers = glStyle.layers;\n let spliceIndex;\n let sourceIndex = -1;\n if (beforeLayerId !== undefined) {\n const beforeMapboxLayer = getMapboxLayer(mapOrGroup, beforeLayerId);\n if (beforeMapboxLayer === undefined) {\n throw new Error(`Layer with id \"${ beforeLayerId }\" not found.`);\n }\n spliceIndex = mapboxLayers.indexOf(beforeMapboxLayer);\n } else {\n spliceIndex = mapboxLayers.length;\n }\n let sourceOffset;\n if (spliceIndex > 0 && mapboxLayers[spliceIndex - 1].source === mapboxLayer.source) {\n sourceIndex = spliceIndex - 1;\n sourceOffset = -1;\n } else if (spliceIndex < mapboxLayers.length && mapboxLayers[spliceIndex].source === mapboxLayer.source) {\n sourceIndex = spliceIndex;\n sourceOffset = 0;\n }\n if (sourceIndex === -1) {\n const {options, styleUrl} = mapOrGroup.get('mapbox-metadata');\n const layer = setupLayer(glStyle, styleUrl, mapboxLayer, options);\n if (beforeLayerId) {\n const beforeLayer = getLayer(mapOrGroup, beforeLayerId);\n const beforeLayerIndex = mapOrGroup.getLayers().getArray().indexOf(beforeLayer);\n mapOrGroup.getLayers().insertAt(beforeLayerIndex, layer);\n }\n mapboxLayers.splice(spliceIndex, 0, mapboxLayer);\n return finalizeLayer(layer, [mapboxLayer.id], glStyle, styleUrl, mapOrGroup, options);\n }\n if (mapboxLayers.some(layer => layer.id === mapboxLayer.id)) {\n throw new Error(`Layer with id \"${ mapboxLayer.id }\" already exists.`);\n }\n const sourceLayerId = mapboxLayers[sourceIndex].id;\n const args = styleFunctionArgs[getStyleFunctionKey(mapOrGroup.get('mapbox-style'), getLayer(mapOrGroup, sourceLayerId))];\n mapboxLayers.splice(spliceIndex, 0, mapboxLayer);\n if (args) {\n const [olLayer, glStyle, sourceOrLayers, resolutions, spriteData, spriteImageUrl, getFonts, getImage] = args;\n if (Array.isArray(sourceOrLayers)) {\n const layerIndex = sourceOrLayers.indexOf(sourceLayerId) + sourceOffset;\n sourceOrLayers.splice(layerIndex, 0, mapboxLayer.id);\n }\n stylefunction(olLayer, glStyle, sourceOrLayers, resolutions, spriteData, spriteImageUrl, getFonts, getImage);\n } else {\n getLayer(mapOrGroup, mapboxLayers[sourceIndex].id).changed();\n }\n return Promise.resolve();\n}\n/**\n * Update a Mapbox Layer object in the style. The map will be re-rendered with the new style.\n * @param {Map|LayerGroup} mapOrGroup The Map or LayerGroup `apply` was called on.\n * @param {Object} mapboxLayer Updated Mapbox Layer object.\n */\nfunction updateMapboxLayer(mapOrGroup, mapboxLayer) {\n const glStyle = mapOrGroup.get('mapbox-style');\n const mapboxLayers = glStyle.layers;\n const index = mapboxLayers.findIndex(function (layer) {\n return layer.id === mapboxLayer.id;\n });\n if (index === -1) {\n throw new Error(`Layer with id \"${ mapboxLayer.id }\" not found.`);\n }\n const oldLayer = mapboxLayers[index];\n if (oldLayer.source !== mapboxLayer.source) {\n throw new Error('Updated layer and previous version must use the same source.');\n }\n delete getFunctionCache(glStyle)[mapboxLayer.id];\n delete getFilterCache(glStyle)[mapboxLayer.id];\n mapboxLayers[index] = mapboxLayer;\n const args = styleFunctionArgs[getStyleFunctionKey(mapOrGroup.get('mapbox-style'), getLayer(mapOrGroup, mapboxLayer.id))];\n if (args) {\n stylefunction.apply(undefined, args);\n } else {\n getLayer(mapOrGroup, mapboxLayer.id).changed();\n }\n}\n/**\n * Remove a Mapbox Layer object from the style. The map will be re-rendered.\n * @param {Map|LayerGroup} mapOrGroup The Map or LayerGroup `apply` was called on.\n * @param {string|Object} mapboxLayerIdOrLayer Mapbox Layer id or Mapbox Layer object.\n */\nfunction removeMapboxLayer(mapOrGroup, mapboxLayerIdOrLayer) {\n const mapboxLayerId = typeof mapboxLayerIdOrLayer === 'string' ? mapboxLayerIdOrLayer : mapboxLayerIdOrLayer.id;\n const layer = getLayer(mapOrGroup, mapboxLayerId);\n /** @type {Array} */\n const layerMapboxLayers = layer.get('mapbox-layers');\n if (layerMapboxLayers.length === 1) {\n throw new Error('Cannot remove last Mapbox layer from an OpenLayers layer.');\n }\n layerMapboxLayers.splice(layerMapboxLayers.indexOf(mapboxLayerId), 1);\n const glStyle = mapOrGroup.get('mapbox-style');\n const layers = glStyle.layers;\n layers.splice(layers.findIndex(layer => layer.id === mapboxLayerId), 1);\n const args = styleFunctionArgs[getStyleFunctionKey(glStyle, layer)];\n if (args) {\n const [olLayer, glStyle, sourceOrLayers, resolutions, spriteData, spriteImageUrl, getFonts, getImage] = args;\n if (Array.isArray(sourceOrLayers)) {\n sourceOrLayers.splice(sourceOrLayers.findIndex(layer => layer === mapboxLayerId), 1);\n }\n stylefunction(olLayer, glStyle, sourceOrLayers, resolutions, spriteData, spriteImageUrl, getFonts, getImage);\n } else {\n getLayer(mapOrGroup, mapboxLayerId).changed();\n }\n}\n/**\n * Get the OpenLayers layer instance that contains the provided Mapbox Style\n * `layer`. Note that multiple Mapbox Style layers are combined in a single\n * OpenLayers layer instance when they use the same Mapbox Style `source`.\n * @param {Map|LayerGroup} map OpenLayers Map or LayerGroup.\n * @param {string} layerId Mapbox Style layer id.\n * @return {Layer} OpenLayers layer instance.\n */\nfunction getLayer(map, layerId) {\n const layers = map.getLayers().getArray();\n for (let i = 0, ii = layers.length; i < ii; ++i) {\n const mapboxLayers = layers[i].get('mapbox-layers');\n if (mapboxLayers && mapboxLayers.indexOf(layerId) !== -1) {\n return layers[i];\n }\n }\n return undefined;\n}\n/**\n * Get the OpenLayers layer instances for the provided Mapbox Style `source`.\n * @param {Map|LayerGroup} map OpenLayers Map or LayerGroup.\n * @param {string} sourceId Mapbox Style source id.\n * @return {Array} OpenLayers layer instances.\n */\nfunction getLayers(map, sourceId) {\n const result = [];\n const layers = map.getLayers().getArray();\n for (let i = 0, ii = layers.length; i < ii; ++i) {\n if (layers[i].get('mapbox-source') === sourceId) {\n result.push(layers[i]);\n }\n }\n return result;\n}\n/**\n * Get the OpenLayers source instance for the provided Mapbox Style `source`.\n * @param {Map|LayerGroup} map OpenLayers Map or LayerGroup.\n * @param {string} sourceId Mapbox Style source id.\n * @return {Source} OpenLayers source instance.\n */\nfunction getSource(map, sourceId) {\n const layers = map.getLayers().getArray();\n for (let i = 0, ii = layers.length; i < ii; ++i) {\n const source = /** @type {Layer} */\n layers[i].getSource();\n if (layers[i].get('mapbox-source') === sourceId) {\n return source;\n }\n }\n return undefined;\n}\n/**\n * Sets or removes a feature state. The feature state is taken into account for styling,\n * just like the feature's properties, and can be used e.g. to conditionally render selected\n * features differently.\n *\n * The feature state will be stored on the OpenLayers layer matching the feature identifier, in the\n * `mapbox-featurestate` property.\n * @param {Map|VectorLayer|VectorTileLayer} mapOrLayer OpenLayers Map or layer to set the feature\n * state on.\n * @param {FeatureIdentifier} feature Feature identifier.\n * @param {Object|null} state Feature state. Set to `null` to remove the feature state.\n */\nfunction setFeatureState(mapOrLayer, feature, state) {\n const layers = 'getLayers' in mapOrLayer ? getLayers(mapOrLayer, feature.source) : [mapOrLayer];\n for (let i = 0, ii = layers.length; i < ii; ++i) {\n const featureState = layers[i].get('mapbox-featurestate');\n if (featureState) {\n if (state) {\n featureState[feature.id] = state;\n } else {\n delete featureState[feature.id];\n }\n layers[i].changed();\n } else {\n throw new Error(`Map or layer for source \"${ feature.source }\" not found.`);\n }\n }\n}\n/**\n * Sets or removes a feature state. The feature state is taken into account for styling,\n * just like the feature's properties, and can be used e.g. to conditionally render selected\n * features differently.\n * @param {Map|VectorLayer|VectorTileLayer} mapOrLayer Map or layer to set the feature state on.\n * @param {FeatureIdentifier} feature Feature identifier.\n * @return {Object|null} Feature state or `null` when no feature state is set for the given\n * feature identifier.\n */\nfunction getFeatureState(mapOrLayer, feature) {\n const layers = 'getLayers' in mapOrLayer ? getLayers(mapOrLayer, feature.source) : [mapOrLayer];\n for (let i = 0, ii = layers.length; i < ii; ++i) {\n const featureState = layers[i].get('mapbox-featurestate');\n if (featureState && featureState[feature.id]) {\n return featureState[feature.id];\n }\n }\n return undefined;\n}\n\n/** @typedef {import(\"ol/Map.js\").default} Map */\n/**\n * @classdesc\n * Event emitted on configuration or loading error.\n */\nclass ErrorEvent extends BaseEvent {\n /**\n * @param {Error} error error object.\n */\n constructor(error) {\n super(EventType.ERROR);\n /**\n * @type {Error}\n */\n this.error = error;\n }\n}\n/**\n * @typedef {Object} Options\n * @property {string} styleUrl The URL of the Mapbox style object to use for this layer. For a\n * style created with Mapbox Studio and hosted on Mapbox, this will look like\n * 'mapbox://styles/you/your-style'.\n * @property {string} [accessToken] The access token for your Mapbox style. This has to be provided\n * for `mapbox://` style urls. For `https://` and other urls, any access key must be the last query\n * parameter of the style url.\n * @property {string} [source] If your style uses more than one source, you need to use either the\n * `source` property or the `layers` property to limit rendering to a single vector source. The\n * `source` property corresponds to the id of a vector source in your Mapbox style.\n * @property {Array} [layers] Limit rendering to the list of included layers. All layers\n * must share the same vector source. If your style uses more than one source, you need to use\n * either the `source` property or the `layers` property to limit rendering to a single vector\n * source.\n * @property {boolean} [declutter=true] Declutter images and text. Decluttering is applied to all\n * image and text styles of all Vector and VectorTile layers that have set this to `true`. The priority\n * is defined by the z-index of the layer, the `zIndex` of the style and the render order of features.\n * Higher z-index means higher priority. Within the same z-index, a feature rendered before another has\n * higher priority.\n *\n * As an optimization decluttered features from layers with the same `className` are rendered above\n * the fill and stroke styles of all of those layers regardless of z-index. To opt out of this\n * behavior and place declutterd features with their own layer configure the layer with a `className`\n * other than `ol-layer`.\n * @property {import(\"ol/layer/Base.js\").BackgroundColor|false} [background] Background color for the layer.\n * If not specified, the background from the Mapbox style object will be used. Set to `false` to prevent\n * the Mapbox style's background from being used.\n * @property {string} [className='ol-layer'] A CSS class name to set to the layer element.\n * @property {number} [opacity=1] Opacity (0, 1).\n * @property {boolean} [visible=true] Visibility.\n * @property {import(\"ol/extent.js\").Extent} [extent] The bounding extent for layer rendering. The layer will not be\n * rendered outside of this extent.\n * @property {number} [zIndex] The z-index for layer rendering. At rendering time, the layers\n * will be ordered, first by Z-index and then by position. When `undefined`, a `zIndex` of 0 is assumed\n * for layers that are added to the map's `layers` collection, or `Infinity` when the layer's `setMap()`\n * method was used.\n * @property {number} [minResolution] The minimum resolution (inclusive) at which this layer will be\n * visible.\n * @property {number} [maxResolution] The maximum resolution (exclusive) below which this layer will\n * be visible. If neither `maxResolution` nor `minZoom` are defined, the layer's `maxResolution` will\n * match the style source's `minzoom`.\n * @property {number} [minZoom] The minimum view zoom level (exclusive) above which this layer will\n * be visible. If neither `maxResolution` nor `minZoom` are defined, the layer's `minZoom` will match\n * the style source's `minzoom`.\n * @property {number} [maxZoom] The maximum view zoom level (inclusive) at which this layer will\n * be visible.\n * @property {import(\"ol/render.js\").OrderFunction} [renderOrder] Render order. Function to be used when sorting\n * features before rendering. By default features are drawn in the order that they are created. Use\n * `null` to avoid the sort, but get an undefined draw order.\n * @property {number} [renderBuffer=100] The buffer in pixels around the tile extent used by the\n * renderer when getting features from the vector tile for the rendering or hit-detection.\n * Recommended value: Vector tiles are usually generated with a buffer, so this value should match\n * the largest possible buffer of the used tiles. It should be at least the size of the largest\n * point symbol or line width.\n * @property {import(\"ol/layer/VectorTile.js\").VectorTileRenderType} [renderMode='hybrid'] Render mode for vector tiles:\n * * `'hybrid'`: Polygon and line elements are rendered as images, so pixels are scaled during zoom\n * animations. Point symbols and texts are accurately rendered as vectors and can stay upright on\n * rotated views.\n * * `'vector'`: Everything is rendered as vectors. Use this mode for improved performance on vector\n * tile layers with only a few rendered features (e.g. for highlighting a subset of features of\n * another layer with the same source).\n * @property {import(\"ol/Map.js\").default} [map] Sets the layer as overlay on a map. The map will not manage\n * this layer in its layers collection, and the layer will be rendered on top. This is useful for\n * temporary layers. The standard way to add a layer to a map and have it managed by the map is to\n * use `map.addLayer()`.\n * @property {boolean} [updateWhileAnimating=false] When set to `true`, feature batches will be\n * recreated during animations. This means that no vectors will be shown clipped, but the setting\n * will have a performance impact for large amounts of vector data. When set to `false`, batches\n * will be recreated when no animation is active.\n * @property {boolean} [updateWhileInteracting=false] When set to `true`, feature batches will be\n * recreated during interactions. See also `updateWhileAnimating`.\n * @property {number} [preload=0] Preload. Load low-resolution tiles up to `preload` levels. `0`\n * means no preloading.\n * @property {boolean} [useInterimTilesOnError=true] Use interim tiles on error.\n * @property {Object} [properties] Arbitrary observable properties. Can be accessed with `#get()` and `#set()`.\n */\n/**\n * @classdesc\n * ```js\n * import {MapboxVectorLayer} from 'ol-mapbox-style';\n * ```\n * A vector tile layer based on a Mapbox style that uses a single vector source. Configure\n * the layer with the `styleUrl` and `accessToken` shown in Mapbox Studio's share panel.\n * If the style uses more than one source, use the `source` property to choose a single\n * vector source. If you want to render a subset of the layers in the style, use the `layers`\n * property (all layers must share the same vector source). See the constructor options for\n * more detail.\n *\n * const map = new Map({\n * view: new View({\n * center: [0, 0],\n * zoom: 1,\n * }),\n * layers: [\n * new MapboxVectorLayer({\n * styleUrl: 'mapbox://styles/mapbox/bright-v9',\n * accessToken: 'your-mapbox-access-token-here',\n * }),\n * ],\n * target: 'map',\n * });\n *\n * On configuration or loading error, the layer will trigger an `'error'` event. Listeners\n * will receive an object with an `error` property that can be used to diagnose the problem.\n *\n * **Note for users of the full build**: The `MapboxVectorLayer` requires the\n * [ol-mapbox-style](https://github.com/openlayers/ol-mapbox-style) library to be loaded as well.\n *\n * @param {Options} options Options.\n * @extends {VectorTileLayer}\n * @fires module:ol/events/Event~BaseEvent#event:error\n * @api\n */\nclass MapboxVectorLayer extends VectorTileLayer {\n /**\n * @param {Options} options Layer options. At a minimum, `styleUrl` and `accessToken`\n * must be provided.\n */\n constructor(options) {\n const declutter = 'declutter' in options ? options.declutter : true;\n const source = new VectorTileSource({\n state: 'loading',\n format: new MVT()\n });\n super({\n source: source,\n background: options.background,\n declutter: declutter,\n className: options.className,\n opacity: options.opacity,\n visible: options.visible,\n zIndex: options.zIndex,\n minResolution: options.minResolution,\n maxResolution: options.maxResolution,\n minZoom: options.minZoom,\n maxZoom: options.maxZoom,\n renderOrder: options.renderOrder,\n renderBuffer: options.renderBuffer,\n renderMode: options.renderMode,\n map: options.map,\n updateWhileAnimating: options.updateWhileAnimating,\n updateWhileInteracting: options.updateWhileInteracting,\n preload: options.preload,\n useInterimTilesOnError: options.useInterimTilesOnError,\n properties: options.properties\n });\n if (options.accessToken) {\n this.accessToken = options.accessToken;\n }\n const url = options.styleUrl;\n const promises = [applyStyle(this, url, options.layers || options.source, { accessToken: this.accessToken })];\n if (this.getBackground() === undefined) {\n promises.push(applyBackground(this, options.styleUrl, { accessToken: this.accessToken }));\n }\n Promise.all(promises).then(() => {\n source.setState('ready');\n }).catch(error => {\n this.dispatchEvent(new ErrorEvent(error));\n const source = this.getSource();\n source.setState('error');\n });\n }\n}\n\nexport { MapboxVectorLayer, addMapboxLayer, apply, applyBackground, applyStyle, apply as default, getFeatureState, getLayer, getLayers, getMapboxLayer, getSource, getStyleForLayer, recordStyleLayer, removeMapboxLayer, renderTransparent, setFeatureState, stylefunction, updateMapboxLayer };\n//# sourceMappingURL=index.js.map\n","/**\n * @module ol/Collection\n */\nimport BaseObject from './Object.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport Event from './events/Event.js';\n\n/**\n * @enum {string}\n * @private\n */\nconst Property = {\n LENGTH: 'length',\n};\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Collection~Collection} instances are instances of this\n * type.\n * @template T\n */\nexport class CollectionEvent extends Event {\n /**\n * @param {import(\"./CollectionEventType.js\").default} type Type.\n * @param {T} element Element.\n * @param {number} index The index of the added or removed element.\n */\n constructor(type, element, index) {\n super(type);\n\n /**\n * The element that is added to or removed from the collection.\n * @type {T}\n * @api\n */\n this.element = element;\n\n /**\n * The index of the added or removed element.\n * @type {number}\n * @api\n */\n this.index = index;\n }\n}\n\n/***\n * @template T\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature<'add'|'remove', CollectionEvent, Return> &\n * import(\"./Observable\").CombinedOnSignature} CollectionOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {boolean} [unique=false] Disallow the same item from being added to\n * the collection twice.\n */\n\n/**\n * @classdesc\n * An expanded version of standard JS Array, adding convenience methods for\n * manipulation. Add and remove changes to the Collection trigger a Collection\n * event. Note that this does not cover changes to the objects _within_ the\n * Collection; they trigger events on the appropriate object, not on the\n * Collection as a whole.\n *\n * @fires CollectionEvent\n *\n * @template T\n * @api\n */\nclass Collection extends BaseObject {\n /**\n * @param {Array} [array] Array.\n * @param {Options} [options] Collection options.\n */\n constructor(array, options) {\n super();\n\n /***\n * @type {CollectionOnSignature}\n */\n this.on;\n\n /***\n * @type {CollectionOnSignature}\n */\n this.once;\n\n /***\n * @type {CollectionOnSignature}\n */\n this.un;\n\n options = options || {};\n\n /**\n * @private\n * @type {boolean}\n */\n this.unique_ = !!options.unique;\n\n /**\n * @private\n * @type {!Array}\n */\n this.array_ = array ? array : [];\n\n if (this.unique_) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n this.assertUnique_(this.array_[i], i);\n }\n }\n\n this.updateLength_();\n }\n\n /**\n * Remove all elements from the collection.\n * @api\n */\n clear() {\n while (this.getLength() > 0) {\n this.pop();\n }\n }\n\n /**\n * Add elements to the collection. This pushes each item in the provided array\n * to the end of the collection.\n * @param {!Array} arr Array.\n * @return {Collection} This collection.\n * @api\n */\n extend(arr) {\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n this.push(arr[i]);\n }\n return this;\n }\n\n /**\n * Iterate over each element, calling the provided callback.\n * @param {function(T, number, Array): *} f The function to call\n * for every element. This function takes 3 arguments (the element, the\n * index and the array). The return value is ignored.\n * @api\n */\n forEach(f) {\n const array = this.array_;\n for (let i = 0, ii = array.length; i < ii; ++i) {\n f(array[i], i, array);\n }\n }\n\n /**\n * Get a reference to the underlying Array object. Warning: if the array\n * is mutated, no events will be dispatched by the collection, and the\n * collection's \"length\" property won't be in sync with the actual length\n * of the array.\n * @return {!Array} Array.\n * @api\n */\n getArray() {\n return this.array_;\n }\n\n /**\n * Get the element at the provided index.\n * @param {number} index Index.\n * @return {T} Element.\n * @api\n */\n item(index) {\n return this.array_[index];\n }\n\n /**\n * Get the length of this collection.\n * @return {number} The length of the array.\n * @observable\n * @api\n */\n getLength() {\n return this.get(Property.LENGTH);\n }\n\n /**\n * Insert an element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n insertAt(index, elem) {\n if (index < 0 || index > this.getLength()) {\n throw new Error('Index out of bounds: ' + index);\n }\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n this.array_.splice(index, 0, elem);\n this.updateLength_();\n this.dispatchEvent(\n new CollectionEvent(CollectionEventType.ADD, elem, index)\n );\n }\n\n /**\n * Remove the last element of the collection and return it.\n * Return `undefined` if the collection is empty.\n * @return {T|undefined} Element.\n * @api\n */\n pop() {\n return this.removeAt(this.getLength() - 1);\n }\n\n /**\n * Insert the provided element at the end of the collection.\n * @param {T} elem Element.\n * @return {number} New length of the collection.\n * @api\n */\n push(elem) {\n if (this.unique_) {\n this.assertUnique_(elem);\n }\n const n = this.getLength();\n this.insertAt(n, elem);\n return this.getLength();\n }\n\n /**\n * Remove the first occurrence of an element from the collection.\n * @param {T} elem Element.\n * @return {T|undefined} The removed element or undefined if none found.\n * @api\n */\n remove(elem) {\n const arr = this.array_;\n for (let i = 0, ii = arr.length; i < ii; ++i) {\n if (arr[i] === elem) {\n return this.removeAt(i);\n }\n }\n return undefined;\n }\n\n /**\n * Remove the element at the provided index and return it.\n * Return `undefined` if the collection does not contain this index.\n * @param {number} index Index.\n * @return {T|undefined} Value.\n * @api\n */\n removeAt(index) {\n if (index < 0 || index >= this.getLength()) {\n return undefined;\n }\n const prev = this.array_[index];\n this.array_.splice(index, 1);\n this.updateLength_();\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n )\n );\n return prev;\n }\n\n /**\n * Set the element at the provided index.\n * @param {number} index Index.\n * @param {T} elem Element.\n * @api\n */\n setAt(index, elem) {\n const n = this.getLength();\n if (index >= n) {\n this.insertAt(index, elem);\n return;\n }\n if (index < 0) {\n throw new Error('Index out of bounds: ' + index);\n }\n if (this.unique_) {\n this.assertUnique_(elem, index);\n }\n const prev = this.array_[index];\n this.array_[index] = elem;\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.REMOVE, prev, index)\n )\n );\n this.dispatchEvent(\n /** @type {CollectionEvent} */ (\n new CollectionEvent(CollectionEventType.ADD, elem, index)\n )\n );\n }\n\n /**\n * @private\n */\n updateLength_() {\n this.set(Property.LENGTH, this.array_.length);\n }\n\n /**\n * @private\n * @param {T} elem Element.\n * @param {number} [except] Optional index to ignore.\n */\n assertUnique_(elem, except) {\n for (let i = 0, ii = this.array_.length; i < ii; ++i) {\n if (this.array_[i] === elem && i !== except) {\n throw new Error('Duplicate item added to a unique collection');\n }\n }\n }\n}\n\nexport default Collection;\n","/**\n * @module ol/CollectionEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when an item is added to the collection.\n * @event module:ol/Collection.CollectionEvent#add\n * @api\n */\n ADD: 'add',\n /**\n * Triggered when an item is removed from the collection.\n * @event module:ol/Collection.CollectionEvent#remove\n * @api\n */\n REMOVE: 'remove',\n};\n","/**\n * @module ol/DataTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport {createCanvasContext2D} from './dom.js';\n\n/**\n * @typedef {HTMLImageElement|HTMLCanvasElement|HTMLVideoElement|ImageBitmap} ImageLike\n */\n\n/**\n * @typedef {Uint8Array|Uint8ClampedArray|Float32Array|DataView} ArrayLike\n */\n\n/**\n * Data that can be used with a DataTile.\n * @typedef {ArrayLike|ImageLike} Data\n */\n\n/**\n * @param {Data} data Tile data.\n * @return {ImageLike|null} The image-like data.\n */\nexport function asImageLike(data) {\n return data instanceof Image ||\n data instanceof HTMLCanvasElement ||\n data instanceof HTMLVideoElement ||\n data instanceof ImageBitmap\n ? data\n : null;\n}\n\n/**\n * @param {Data} data Tile data.\n * @return {ArrayLike|null} The array-like data.\n */\nexport function asArrayLike(data) {\n return data instanceof Uint8Array ||\n data instanceof Uint8ClampedArray ||\n data instanceof Float32Array ||\n data instanceof DataView\n ? data\n : null;\n}\n\n/**\n * @type {CanvasRenderingContext2D|null}\n */\nlet sharedContext = null;\n\n/**\n * @param {ImageLike} image The image.\n * @return {Uint8ClampedArray} The data.\n */\nexport function toArray(image) {\n if (!sharedContext) {\n sharedContext = createCanvasContext2D(\n image.width,\n image.height,\n undefined,\n {willReadFrequently: true}\n );\n }\n const canvas = sharedContext.canvas;\n const width = image.width;\n if (canvas.width !== width) {\n canvas.width = width;\n }\n const height = image.height;\n if (canvas.height !== height) {\n canvas.height = height;\n }\n sharedContext.clearRect(0, 0, width, height);\n sharedContext.drawImage(image, 0, 0);\n return sharedContext.getImageData(0, 0, width, height).data;\n}\n\n/**\n * @type {import('./size.js').Size}\n */\nconst defaultSize = [256, 256];\n\n/**\n * @typedef {Object} Options\n * @property {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @property {function(): Promise} loader Data loader. For loaders that generate images,\n * the promise should not resolve until the image is loaded.\n * @property {number} [transition=250] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling. By default,\n * the nearest neighbor is used when resampling.\n * @property {import('./size.js').Size} [size=[256, 256]] Tile size.\n * @api\n */\n\nclass DataTile extends Tile {\n /**\n * @param {Options} options Tile options.\n */\n constructor(options) {\n const state = TileState.IDLE;\n\n super(options.tileCoord, state, {\n transition: options.transition,\n interpolate: options.interpolate,\n });\n\n /**\n * @type {function(): Promise}\n * @private\n */\n this.loader_ = options.loader;\n\n /**\n * @type {Data}\n * @private\n */\n this.data_ = null;\n\n /**\n * @type {Error}\n * @private\n */\n this.error_ = null;\n\n /**\n * @type {import('./size.js').Size|null}\n * @private\n */\n this.size_ = options.size || null;\n }\n\n /**\n * Get the tile size.\n * @return {import('./size.js').Size} Tile size.\n */\n getSize() {\n if (this.size_) {\n return this.size_;\n }\n const imageData = asImageLike(this.data_);\n if (imageData) {\n return [imageData.width, imageData.height];\n }\n return defaultSize;\n }\n\n /**\n * Get the data for the tile.\n * @return {Data} Tile data.\n * @api\n */\n getData() {\n return this.data_;\n }\n\n /**\n * Get any loading error.\n * @return {Error} Loading error.\n * @api\n */\n getError() {\n return this.error_;\n }\n\n /**\n * Load not yet loaded URI.\n * @api\n */\n load() {\n if (this.state !== TileState.IDLE && this.state !== TileState.ERROR) {\n return;\n }\n this.state = TileState.LOADING;\n this.changed();\n\n const self = this;\n this.loader_()\n .then(function (data) {\n self.data_ = data;\n self.state = TileState.LOADED;\n self.changed();\n })\n .catch(function (error) {\n self.error_ = error;\n self.state = TileState.ERROR;\n self.changed();\n });\n }\n}\n\nexport default DataTile;\n","/**\n * @module ol/Disposable\n */\n\n/**\n * @classdesc\n * Objects that need to clean up after themselves.\n */\nclass Disposable {\n constructor() {\n /**\n * The object has already been disposed.\n * @type {boolean}\n * @protected\n */\n this.disposed = false;\n }\n\n /**\n * Clean up.\n */\n dispose() {\n if (!this.disposed) {\n this.disposed = true;\n this.disposeInternal();\n }\n }\n\n /**\n * Extension point for disposable objects.\n * @protected\n */\n disposeInternal() {}\n}\n\nexport default Disposable;\n","/**\n * @module ol/Feature\n */\nimport BaseObject from './Object.js';\nimport EventType from './events/EventType.js';\nimport {assert} from './asserts.js';\nimport {listen, unlistenByKey} from './events.js';\n\n/**\n * @typedef {typeof Feature|typeof import(\"./render/Feature.js\").default} FeatureClass\n */\n\n/**\n * @typedef {Feature|import(\"./render/Feature.js\").default} FeatureLike\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} FeatureOnSignature\n */\n\n/***\n * @template {import(\"./geom/Geometry.js\").default} [Geometry=import(\"./geom/Geometry.js\").default]\n * @typedef {Object & { geometry?: Geometry }} ObjectWithGeometry\n */\n\n/**\n * @classdesc\n * A vector object for geographic features with a geometry and other\n * attribute properties, similar to the features in vector file formats like\n * GeoJSON.\n *\n * Features can be styled individually with `setStyle`; otherwise they use the\n * style of their vector layer.\n *\n * Note that attribute properties are set as {@link module:ol/Object~BaseObject} properties on\n * the feature object, so they are observable, and have get/set accessors.\n *\n * Typically, a feature has a single geometry property. You can set the\n * geometry using the `setGeometry` method and get it with `getGeometry`.\n * It is possible to store more than one geometry on a feature using attribute\n * properties. By default, the geometry used for rendering is identified by\n * the property name `geometry`. If you want to use another geometry property\n * for rendering, use the `setGeometryName` method to change the attribute\n * property associated with the geometry for the feature. For example:\n *\n * ```js\n *\n * import Feature from 'ol/Feature.js';\n * import Polygon from 'ol/geom/Polygon.js';\n * import Point from 'ol/geom/Point.js';\n *\n * const feature = new Feature({\n * geometry: new Polygon(polyCoords),\n * labelPoint: new Point(labelCoords),\n * name: 'My Polygon',\n * });\n *\n * // get the polygon geometry\n * const poly = feature.getGeometry();\n *\n * // Render the feature as a point using the coordinates from labelPoint\n * feature.setGeometryName('labelPoint');\n *\n * // get the point geometry\n * const point = feature.getGeometry();\n * ```\n *\n * @api\n * @template {import(\"./geom/Geometry.js\").default} [Geometry=import(\"./geom/Geometry.js\").default]\n */\nclass Feature extends BaseObject {\n /**\n * @param {Geometry|ObjectWithGeometry} [geometryOrProperties]\n * You may pass a Geometry object directly, or an object literal containing\n * properties. If you pass an object literal, you may include a Geometry\n * associated with a `geometry` key.\n */\n constructor(geometryOrProperties) {\n super();\n\n /***\n * @type {FeatureOnSignature}\n */\n this.on;\n\n /***\n * @type {FeatureOnSignature}\n */\n this.once;\n\n /***\n * @type {FeatureOnSignature}\n */\n this.un;\n\n /**\n * @private\n * @type {number|string|undefined}\n */\n this.id_ = undefined;\n\n /**\n * @type {string}\n * @private\n */\n this.geometryName_ = 'geometry';\n\n /**\n * User provided style.\n * @private\n * @type {import(\"./style/Style.js\").StyleLike}\n */\n this.style_ = null;\n\n /**\n * @private\n * @type {import(\"./style/Style.js\").StyleFunction|undefined}\n */\n this.styleFunction_ = undefined;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.geometryChangeKey_ = null;\n\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n\n if (geometryOrProperties) {\n if (\n typeof (\n /** @type {?} */ (geometryOrProperties).getSimplifiedGeometry\n ) === 'function'\n ) {\n const geometry = /** @type {Geometry} */ (geometryOrProperties);\n this.setGeometry(geometry);\n } else {\n /** @type {Object} */\n const properties = geometryOrProperties;\n this.setProperties(properties);\n }\n }\n }\n\n /**\n * Clone this feature. If the original feature has a geometry it\n * is also cloned. The feature id is not set in the clone.\n * @return {Feature} The clone.\n * @api\n */\n clone() {\n const clone = /** @type {Feature} */ (\n new Feature(this.hasProperties() ? this.getProperties() : null)\n );\n clone.setGeometryName(this.getGeometryName());\n const geometry = this.getGeometry();\n if (geometry) {\n clone.setGeometry(/** @type {Geometry} */ (geometry.clone()));\n }\n const style = this.getStyle();\n if (style) {\n clone.setStyle(style);\n }\n return clone;\n }\n\n /**\n * Get the feature's default geometry. A feature may have any number of named\n * geometries. The \"default\" geometry (the one that is rendered by default) is\n * set when calling {@link module:ol/Feature~Feature#setGeometry}.\n * @return {Geometry|undefined} The default geometry for the feature.\n * @api\n * @observable\n */\n getGeometry() {\n return /** @type {Geometry|undefined} */ (this.get(this.geometryName_));\n }\n\n /**\n * Get the feature identifier. This is a stable identifier for the feature and\n * is either set when reading data from a remote source or set explicitly by\n * calling {@link module:ol/Feature~Feature#setId}.\n * @return {number|string|undefined} Id.\n * @api\n */\n getId() {\n return this.id_;\n }\n\n /**\n * Get the name of the feature's default geometry. By default, the default\n * geometry is named `geometry`.\n * @return {string} Get the property name associated with the default geometry\n * for this feature.\n * @api\n */\n getGeometryName() {\n return this.geometryName_;\n }\n\n /**\n * Get the feature's style. Will return what was provided to the\n * {@link module:ol/Feature~Feature#setStyle} method.\n * @return {import(\"./style/Style.js\").StyleLike|undefined} The feature style.\n * @api\n */\n getStyle() {\n return this.style_;\n }\n\n /**\n * Get the feature's style function.\n * @return {import(\"./style/Style.js\").StyleFunction|undefined} Return a function\n * representing the current style of this feature.\n * @api\n */\n getStyleFunction() {\n return this.styleFunction_;\n }\n\n /**\n * @private\n */\n handleGeometryChange_() {\n this.changed();\n }\n\n /**\n * @private\n */\n handleGeometryChanged_() {\n if (this.geometryChangeKey_) {\n unlistenByKey(this.geometryChangeKey_);\n this.geometryChangeKey_ = null;\n }\n const geometry = this.getGeometry();\n if (geometry) {\n this.geometryChangeKey_ = listen(\n geometry,\n EventType.CHANGE,\n this.handleGeometryChange_,\n this\n );\n }\n this.changed();\n }\n\n /**\n * Set the default geometry for the feature. This will update the property\n * with the name returned by {@link module:ol/Feature~Feature#getGeometryName}.\n * @param {Geometry|undefined} geometry The new geometry.\n * @api\n * @observable\n */\n setGeometry(geometry) {\n this.set(this.geometryName_, geometry);\n }\n\n /**\n * Set the style for the feature to override the layer style. This can be a\n * single style object, an array of styles, or a function that takes a\n * resolution and returns an array of styles. To unset the feature style, call\n * `setStyle()` without arguments or a falsey value.\n * @param {import(\"./style/Style.js\").StyleLike} [style] Style for this feature.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n setStyle(style) {\n this.style_ = style;\n this.styleFunction_ = !style ? undefined : createStyleFunction(style);\n this.changed();\n }\n\n /**\n * Set the feature id. The feature id is considered stable and may be used when\n * requesting features or comparing identifiers returned from a remote source.\n * The feature id can be used with the\n * {@link module:ol/source/Vector~VectorSource#getFeatureById} method.\n * @param {number|string|undefined} id The feature id.\n * @api\n * @fires module:ol/events/Event~BaseEvent#event:change\n */\n setId(id) {\n this.id_ = id;\n this.changed();\n }\n\n /**\n * Set the property name to be used when getting the feature's default geometry.\n * When calling {@link module:ol/Feature~Feature#getGeometry}, the value of the property with\n * this name will be returned.\n * @param {string} name The property name of the default geometry.\n * @api\n */\n setGeometryName(name) {\n this.removeChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.geometryName_ = name;\n this.addChangeListener(this.geometryName_, this.handleGeometryChanged_);\n this.handleGeometryChanged_();\n }\n}\n\n/**\n * Convert the provided object into a feature style function. Functions passed\n * through unchanged. Arrays of Style or single style objects wrapped\n * in a new feature style function.\n * @param {!import(\"./style/Style.js\").StyleFunction|!Array|!import(\"./style/Style.js\").default} obj\n * A feature style function, a single style, or an array of styles.\n * @return {import(\"./style/Style.js\").StyleFunction} A style function.\n */\nexport function createStyleFunction(obj) {\n if (typeof obj === 'function') {\n return obj;\n }\n /**\n * @type {Array}\n */\n let styles;\n if (Array.isArray(obj)) {\n styles = obj;\n } else {\n assert(\n typeof (/** @type {?} */ (obj).getZIndex) === 'function',\n 'Expected an `ol/style/Style` or an array of `ol/style/Style.js`'\n );\n const style = /** @type {import(\"./style/Style.js\").default} */ (obj);\n styles = [style];\n }\n return function () {\n return styles;\n };\n}\nexport default Feature;\n","/**\n * @module ol/Geolocation\n */\nimport BaseEvent from './events/Event.js';\nimport BaseObject from './Object.js';\nimport {circular as circularPolygon} from './geom/Polygon.js';\nimport {\n get as getProjection,\n getTransformFromProjections,\n identityTransform,\n} from './proj.js';\nimport {toRadians} from './math.js';\n\n/**\n * @enum {string}\n */\nconst Property = {\n ACCURACY: 'accuracy',\n ACCURACY_GEOMETRY: 'accuracyGeometry',\n ALTITUDE: 'altitude',\n ALTITUDE_ACCURACY: 'altitudeAccuracy',\n HEADING: 'heading',\n POSITION: 'position',\n PROJECTION: 'projection',\n SPEED: 'speed',\n TRACKING: 'tracking',\n TRACKING_OPTIONS: 'trackingOptions',\n};\n\n/**\n * @enum string\n */\nconst GeolocationErrorType = {\n /**\n * Triggered when a `GeolocationPositionError` occurs.\n * @event module:ol/Geolocation.GeolocationError#error\n * @api\n */\n ERROR: 'error',\n};\n\n/**\n * @classdesc\n * Events emitted on [GeolocationPositionError](https://developer.mozilla.org/en-US/docs/Web/API/GeolocationPositionError).\n */\nexport class GeolocationError extends BaseEvent {\n /**\n * @param {GeolocationPositionError} error error object.\n */\n constructor(error) {\n super(GeolocationErrorType.ERROR);\n\n /**\n * Code of the underlying `GeolocationPositionError`.\n * @type {number}\n * @api\n */\n this.code = error.code;\n\n /**\n * Message of the underlying `GeolocationPositionError`.\n * @type {string}\n * @api\n */\n this.message = error.message;\n }\n}\n\n/**\n * @typedef {Object} Options\n * @property {boolean} [tracking=false] Start Tracking right after\n * instantiation.\n * @property {PositionOptions} [trackingOptions] Tracking options.\n * See https://www.w3.org/TR/geolocation-API/#position_options_interface.\n * @property {import(\"./proj.js\").ProjectionLike} [projection] The projection the position\n * is reported in.\n */\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:accuracy'|'change:accuracyGeometry'|'change:altitude'|\n * 'change:altitudeAccuracy'|'change:heading'|'change:position'|'change:projection'|'change:speed'|'change:tracking'|\n * 'change:trackingOptions'} GeolocationObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature<'error', GeolocationError, Return> &\n * import(\"./Observable\").CombinedOnSignature &\n * import(\"./Observable\").OnSignature} GeolocationOnSignature\n */\n\n/**\n * @classdesc\n * Helper class for providing HTML5 Geolocation capabilities.\n * The [Geolocation API](https://www.w3.org/TR/geolocation-API/)\n * is used to locate a user's position.\n *\n * To get notified of position changes and errors, register listeners for the generic\n * `change` event and the `error` event on your instance of {@link module:ol/Geolocation~Geolocation}.\n *\n * Example:\n *\n * const geolocation = new Geolocation({\n * // take the projection to use from the map's view\n * projection: view.getProjection()\n * });\n * // listen to changes in position\n * geolocation.on('change', function(evt) {\n * console.log(geolocation.getPosition());\n * });\n * // listen to error\n * geolocation.on('error', function(evt) {\n * window.console.log(evt.message);\n * });\n *\n * @fires GeolocationError\n * @api\n */\nclass Geolocation extends BaseObject {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {GeolocationOnSignature}\n */\n this.on;\n\n /***\n * @type {GeolocationOnSignature}\n */\n this.once;\n\n /***\n * @type {GeolocationOnSignature}\n */\n this.un;\n\n options = options || {};\n\n /**\n * The unprojected (EPSG:4326) device position.\n * @private\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n this.position_ = null;\n\n /**\n * @private\n * @type {import(\"./proj.js\").TransformFunction}\n */\n this.transform_ = identityTransform;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.watchId_ = undefined;\n\n this.addChangeListener(Property.PROJECTION, this.handleProjectionChanged_);\n this.addChangeListener(Property.TRACKING, this.handleTrackingChanged_);\n\n if (options.projection !== undefined) {\n this.setProjection(options.projection);\n }\n if (options.trackingOptions !== undefined) {\n this.setTrackingOptions(options.trackingOptions);\n }\n\n this.setTracking(options.tracking !== undefined ? options.tracking : false);\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n this.setTracking(false);\n super.disposeInternal();\n }\n\n /**\n * @private\n */\n handleProjectionChanged_() {\n const projection = this.getProjection();\n if (projection) {\n this.transform_ = getTransformFromProjections(\n getProjection('EPSG:4326'),\n projection\n );\n if (this.position_) {\n this.set(Property.POSITION, this.transform_(this.position_));\n }\n }\n }\n\n /**\n * @private\n */\n handleTrackingChanged_() {\n if ('geolocation' in navigator) {\n const tracking = this.getTracking();\n if (tracking && this.watchId_ === undefined) {\n this.watchId_ = navigator.geolocation.watchPosition(\n this.positionChange_.bind(this),\n this.positionError_.bind(this),\n this.getTrackingOptions()\n );\n } else if (!tracking && this.watchId_ !== undefined) {\n navigator.geolocation.clearWatch(this.watchId_);\n this.watchId_ = undefined;\n }\n }\n }\n\n /**\n * @private\n * @param {GeolocationPosition} position position event.\n */\n positionChange_(position) {\n const coords = position.coords;\n this.set(Property.ACCURACY, coords.accuracy);\n this.set(\n Property.ALTITUDE,\n coords.altitude === null ? undefined : coords.altitude\n );\n this.set(\n Property.ALTITUDE_ACCURACY,\n coords.altitudeAccuracy === null ? undefined : coords.altitudeAccuracy\n );\n this.set(\n Property.HEADING,\n coords.heading === null ? undefined : toRadians(coords.heading)\n );\n if (!this.position_) {\n this.position_ = [coords.longitude, coords.latitude];\n } else {\n this.position_[0] = coords.longitude;\n this.position_[1] = coords.latitude;\n }\n const projectedPosition = this.transform_(this.position_);\n this.set(Property.POSITION, projectedPosition.slice());\n this.set(Property.SPEED, coords.speed === null ? undefined : coords.speed);\n const geometry = circularPolygon(this.position_, coords.accuracy);\n geometry.applyTransform(this.transform_);\n this.set(Property.ACCURACY_GEOMETRY, geometry);\n this.changed();\n }\n\n /**\n * @private\n * @param {GeolocationPositionError} error error object.\n */\n positionError_(error) {\n this.dispatchEvent(new GeolocationError(error));\n }\n\n /**\n * Get the accuracy of the position in meters.\n * @return {number|undefined} The accuracy of the position measurement in\n * meters.\n * @observable\n * @api\n */\n getAccuracy() {\n return /** @type {number|undefined} */ (this.get(Property.ACCURACY));\n }\n\n /**\n * Get a geometry of the position accuracy.\n * @return {?import(\"./geom/Polygon.js\").default} A geometry of the position accuracy.\n * @observable\n * @api\n */\n getAccuracyGeometry() {\n return /** @type {?import(\"./geom/Polygon.js\").default} */ (\n this.get(Property.ACCURACY_GEOMETRY) || null\n );\n }\n\n /**\n * Get the altitude associated with the position.\n * @return {number|undefined} The altitude of the position in meters above mean\n * sea level.\n * @observable\n * @api\n */\n getAltitude() {\n return /** @type {number|undefined} */ (this.get(Property.ALTITUDE));\n }\n\n /**\n * Get the altitude accuracy of the position.\n * @return {number|undefined} The accuracy of the altitude measurement in\n * meters.\n * @observable\n * @api\n */\n getAltitudeAccuracy() {\n return /** @type {number|undefined} */ (\n this.get(Property.ALTITUDE_ACCURACY)\n );\n }\n\n /**\n * Get the heading as radians clockwise from North.\n * Note: depending on the browser, the heading is only defined if the `enableHighAccuracy`\n * is set to `true` in the tracking options.\n * @return {number|undefined} The heading of the device in radians from north.\n * @observable\n * @api\n */\n getHeading() {\n return /** @type {number|undefined} */ (this.get(Property.HEADING));\n }\n\n /**\n * Get the position of the device.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The current position of the device reported\n * in the current projection.\n * @observable\n * @api\n */\n getPosition() {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (\n this.get(Property.POSITION)\n );\n }\n\n /**\n * Get the projection associated with the position.\n * @return {import(\"./proj/Projection.js\").default|undefined} The projection the position is\n * reported in.\n * @observable\n * @api\n */\n getProjection() {\n return /** @type {import(\"./proj/Projection.js\").default|undefined} */ (\n this.get(Property.PROJECTION)\n );\n }\n\n /**\n * Get the speed in meters per second.\n * @return {number|undefined} The instantaneous speed of the device in meters\n * per second.\n * @observable\n * @api\n */\n getSpeed() {\n return /** @type {number|undefined} */ (this.get(Property.SPEED));\n }\n\n /**\n * Determine if the device location is being tracked.\n * @return {boolean} The device location is being tracked.\n * @observable\n * @api\n */\n getTracking() {\n return /** @type {boolean} */ (this.get(Property.TRACKING));\n }\n\n /**\n * Get the tracking options.\n * See https://www.w3.org/TR/geolocation-API/#position-options.\n * @return {PositionOptions|undefined} PositionOptions as defined by\n * the [HTML5 Geolocation spec\n * ](https://www.w3.org/TR/geolocation-API/#position_options_interface).\n * @observable\n * @api\n */\n getTrackingOptions() {\n return /** @type {PositionOptions|undefined} */ (\n this.get(Property.TRACKING_OPTIONS)\n );\n }\n\n /**\n * Set the projection to use for transforming the coordinates.\n * @param {import(\"./proj.js\").ProjectionLike} projection The projection the position is\n * reported in.\n * @observable\n * @api\n */\n setProjection(projection) {\n this.set(Property.PROJECTION, getProjection(projection));\n }\n\n /**\n * Enable or disable tracking.\n * @param {boolean} tracking Enable tracking.\n * @observable\n * @api\n */\n setTracking(tracking) {\n this.set(Property.TRACKING, tracking);\n }\n\n /**\n * Set the tracking options.\n * See http://www.w3.org/TR/geolocation-API/#position-options.\n * @param {PositionOptions} options PositionOptions as defined by the\n * [HTML5 Geolocation spec\n * ](http://www.w3.org/TR/geolocation-API/#position_options_interface).\n * @observable\n * @api\n */\n setTrackingOptions(options) {\n this.set(Property.TRACKING_OPTIONS, options);\n }\n}\n\nexport default Geolocation;\n","/**\n * @module ol/Image\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport ImageState from './ImageState.js';\nimport {CREATE_IMAGE_BITMAP, IMAGE_DECODE} from './has.js';\nimport {listenOnce, unlistenByKey} from './events.js';\nimport {toPromise} from './functions.js';\n\n/**\n * A function that takes an {@link module:ol/Image~ImageWrapper} for the image and a\n * `{string}` for the src as arguments. It is supposed to make it so the\n * underlying image {@link module:ol/Image~ImageWrapper#getImage} is assigned the\n * content specified by the src. If not specified, the default is\n *\n * function(image, src) {\n * image.getImage().src = src;\n * }\n *\n * Providing a custom `imageLoadFunction` can be useful to load images with\n * post requests or - in general - through XHR requests, where the src of the\n * image element would be set to a data URI when the content is loaded.\n *\n * @typedef {function(import(\"./Image.js\").default, string): void} LoadFunction\n * @api\n */\n\n/**\n * @typedef {Object} ImageObject\n * @property {import(\"./extent.js\").Extent} [extent] Extent, if different from the requested one.\n * @property {import(\"./resolution.js\").ResolutionLike} [resolution] Resolution, if different from the requested one.\n * When x and y resolution are different, use the array type (`[xResolution, yResolution]`).\n * @property {number} [pixelRatio] Pixel ratio, if different from the requested one.\n * @property {import('./DataTile.js').ImageLike} image Image.\n */\n\n/**\n * Loader function used for image sources. Receives extent, resolution and pixel ratio as arguments.\n * For images that cover any extent and resolution (static images), the loader function should not accept\n * any arguments. The function returns an {@link import(\"./DataTile.js\").ImageLike image}, an\n * {@link import(\"./Image.js\").ImageObject image object}, or a promise for the same.\n * For loaders that generate images, the promise should not resolve until the image is loaded.\n * If the returned image does not match the extent, resolution or pixel ratio passed to the loader,\n * it has to return an {@link import(\"./Image.js\").ImageObject image object} with the `image` and the\n * correct `extent`, `resolution` and `pixelRatio`.\n *\n * @typedef {function(import(\"./extent.js\").Extent, number, number, (function(HTMLImageElement, string): void)=): import(\"./DataTile.js\").ImageLike|ImageObject|Promise} Loader\n * @api\n */\n\n/**\n * Loader function used for image sources. Receives extent, resolution and pixel ratio as arguments.\n * The function returns a promise for an {@link import(\"./Image.js\").ImageObject image object}.\n *\n * @typedef {function(import(\"./extent.js\").Extent, number, number, (function(HTMLImageElement, string): void)=): import(\"./DataTile.js\").ImageLike|ImageObject|Promise} ImageObjectPromiseLoader\n */\n\nclass ImageWrapper extends EventTarget {\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number|Array|undefined} resolution Resolution. If provided as array, x and y\n * resolution will be assumed.\n * @param {number} pixelRatio Pixel ratio.\n * @param {import(\"./ImageState.js\").default|import(\"./Image.js\").Loader} stateOrLoader State.\n */\n constructor(extent, resolution, pixelRatio, stateOrLoader) {\n super();\n\n /**\n * @protected\n * @type {import(\"./extent.js\").Extent}\n */\n this.extent = extent;\n\n /**\n * @private\n * @type {number}\n */\n this.pixelRatio_ = pixelRatio;\n\n /**\n * @protected\n * @type {number|Array|undefined}\n */\n this.resolution = resolution;\n\n /**\n * @protected\n * @type {import(\"./ImageState.js\").default}\n */\n this.state =\n typeof stateOrLoader === 'function' ? ImageState.IDLE : stateOrLoader;\n\n /**\n * @private\n * @type {import('./DataTile.js').ImageLike|null}\n */\n this.image_ = null;\n\n /**\n * @protected\n * @type {import(\"./Image.js\").Loader}\n */\n this.loader = typeof stateOrLoader === 'function' ? stateOrLoader : null;\n }\n\n /**\n * @protected\n */\n changed() {\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n getExtent() {\n return this.extent;\n }\n\n /**\n * @return {import('./DataTile.js').ImageLike} Image.\n */\n getImage() {\n return this.image_;\n }\n\n /**\n * @return {number} PixelRatio.\n */\n getPixelRatio() {\n return this.pixelRatio_;\n }\n\n /**\n * @return {number|Array} Resolution.\n */\n getResolution() {\n return /** @type {number} */ (this.resolution);\n }\n\n /**\n * @return {import(\"./ImageState.js\").default} State.\n */\n getState() {\n return this.state;\n }\n\n /**\n * Load not yet loaded URI.\n */\n load() {\n if (this.state == ImageState.IDLE) {\n if (this.loader) {\n this.state = ImageState.LOADING;\n this.changed();\n const resolution = this.getResolution();\n const requestResolution = Array.isArray(resolution)\n ? resolution[0]\n : resolution;\n toPromise(() =>\n this.loader(this.getExtent(), requestResolution, this.getPixelRatio())\n )\n .then((image) => {\n if ('image' in image) {\n this.image_ = image.image;\n }\n if ('extent' in image) {\n this.extent = image.extent;\n }\n if ('resolution' in image) {\n this.resolution = image.resolution;\n }\n if ('pixelRatio' in image) {\n this.pixelRatio_ = image.pixelRatio;\n }\n if (\n image instanceof HTMLImageElement ||\n image instanceof ImageBitmap ||\n image instanceof HTMLCanvasElement ||\n image instanceof HTMLVideoElement\n ) {\n this.image_ = image;\n }\n this.state = ImageState.LOADED;\n })\n .catch((error) => {\n this.state = ImageState.ERROR;\n console.error(error); // eslint-disable-line no-console\n })\n .finally(() => this.changed());\n }\n }\n }\n\n /**\n * @param {import('./DataTile.js').ImageLike} image The image.\n */\n setImage(image) {\n this.image_ = image;\n }\n\n /**\n * @param {number|Array} resolution Resolution.\n */\n setResolution(resolution) {\n this.resolution = resolution;\n }\n}\n\n/**\n * @param {import('./DataTile.js').ImageLike} image Image element.\n * @param {function():any} loadHandler Load callback function.\n * @param {function():any} errorHandler Error callback function.\n * @return {function():void} Callback to stop listening.\n */\nexport function listenImage(image, loadHandler, errorHandler) {\n const img = /** @type {HTMLImageElement} */ (image);\n let listening = true;\n let decoding = false;\n let loaded = false;\n\n const listenerKeys = [\n listenOnce(img, EventType.LOAD, function () {\n loaded = true;\n if (!decoding) {\n loadHandler();\n }\n }),\n ];\n\n if (img.src && IMAGE_DECODE) {\n decoding = true;\n img\n .decode()\n .then(function () {\n if (listening) {\n loadHandler();\n }\n })\n .catch(function (error) {\n if (listening) {\n if (loaded) {\n loadHandler();\n } else {\n errorHandler();\n }\n }\n });\n } else {\n listenerKeys.push(listenOnce(img, EventType.ERROR, errorHandler));\n }\n\n return function unlisten() {\n listening = false;\n listenerKeys.forEach(unlistenByKey);\n };\n}\n\n/**\n * Loads an image.\n * @param {HTMLImageElement} image Image, not yet loaded.\n * @param {string} [src] `src` attribute of the image. Optional, not required if already present.\n * @return {Promise} Promise resolving to an `HTMLImageElement`.\n * @api\n */\nexport function load(image, src) {\n return new Promise((resolve, reject) => {\n function handleLoad() {\n unlisten();\n resolve(image);\n }\n function handleError() {\n unlisten();\n reject(new Error('Image load error'));\n }\n function unlisten() {\n image.removeEventListener('load', handleLoad);\n image.removeEventListener('error', handleError);\n }\n image.addEventListener('load', handleLoad);\n image.addEventListener('error', handleError);\n if (src) {\n image.src = src;\n }\n });\n}\n\n/**\n * @param {HTMLImageElement} image Image, not yet loaded.\n * @param {string} [src] `src` attribute of the image. Optional, not required if already present.\n * @return {Promise} Promise resolving to an `HTMLImageElement`.\n */\nexport function decodeFallback(image, src) {\n if (src) {\n image.src = src;\n }\n return image.src && IMAGE_DECODE\n ? new Promise((resolve, reject) =>\n image\n .decode()\n .then(() => resolve(image))\n .catch((e) =>\n image.complete && image.width ? resolve(image) : reject(e)\n )\n )\n : load(image);\n}\n\n/**\n * Loads an image and decodes it to an `ImageBitmap` if `createImageBitmap()` is supported. Returns\n * the loaded image otherwise.\n * @param {HTMLImageElement} image Image, not yet loaded.\n * @param {string} [src] `src` attribute of the image. Optional, not required if already present.\n * @return {Promise} Promise resolving to an `ImageBitmap` or an\n * `HTMLImageElement` if `createImageBitmap()` is not supported.\n * @api\n */\nexport function decode(image, src) {\n if (src) {\n image.src = src;\n }\n return image.src && IMAGE_DECODE && CREATE_IMAGE_BITMAP\n ? image\n .decode()\n .then(() => createImageBitmap(image))\n .catch((e) => {\n if (image.complete && image.width) {\n return image;\n }\n throw e;\n })\n : decodeFallback(image);\n}\n\nexport default ImageWrapper;\n","/**\n * @module ol/ImageCanvas\n */\nimport ImageState from './ImageState.js';\nimport ImageWrapper from './Image.js';\n\n/**\n * A function that is called to trigger asynchronous canvas drawing. It is\n * called with a \"done\" callback that should be called when drawing is done.\n * If any error occurs during drawing, the \"done\" callback should be called with\n * that error.\n *\n * @typedef {function(function(Error=): void): void} Loader\n */\n\nclass ImageCanvas extends ImageWrapper {\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {number} pixelRatio Pixel ratio.\n * @param {HTMLCanvasElement} canvas Canvas.\n * @param {Loader} [loader] Optional loader function to\n * support asynchronous canvas drawing.\n */\n constructor(extent, resolution, pixelRatio, canvas, loader) {\n const state = loader !== undefined ? ImageState.IDLE : ImageState.LOADED;\n\n super(extent, resolution, pixelRatio, state);\n\n /**\n * Optional canvas loader function.\n * @type {?Loader}\n * @private\n */\n this.loader_ = loader !== undefined ? loader : null;\n\n /**\n * @private\n * @type {HTMLCanvasElement}\n */\n this.canvas_ = canvas;\n\n /**\n * @private\n * @type {?Error}\n */\n this.error_ = null;\n }\n\n /**\n * Get any error associated with asynchronous rendering.\n * @return {?Error} Any error that occurred during rendering.\n */\n getError() {\n return this.error_;\n }\n\n /**\n * Handle async drawing complete.\n * @param {Error} [err] Any error during drawing.\n * @private\n */\n handleLoad_(err) {\n if (err) {\n this.error_ = err;\n this.state = ImageState.ERROR;\n } else {\n this.state = ImageState.LOADED;\n }\n this.changed();\n }\n\n /**\n * Load not yet loaded URI.\n */\n load() {\n if (this.state == ImageState.IDLE) {\n this.state = ImageState.LOADING;\n this.changed();\n this.loader_(this.handleLoad_.bind(this));\n }\n }\n\n /**\n * @return {HTMLCanvasElement} Canvas element.\n */\n getImage() {\n return this.canvas_;\n }\n}\n\nexport default ImageCanvas;\n","/**\n * @module ol/ImageState\n */\n\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n ERROR: 3,\n EMPTY: 4,\n};\n","/**\n * @module ol/ImageTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\nimport {createCanvasContext2D} from './dom.js';\nimport {listenImage} from './Image.js';\n\nclass ImageTile extends Tile {\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {string} src Image source URI.\n * @param {?string} crossOrigin Cross origin.\n * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @param {import(\"./Tile.js\").Options} [options] Tile options.\n */\n constructor(tileCoord, state, src, crossOrigin, tileLoadFunction, options) {\n super(tileCoord, state, options);\n\n /**\n * @private\n * @type {?string}\n */\n this.crossOrigin_ = crossOrigin;\n\n /**\n * Image URI\n *\n * @private\n * @type {string}\n */\n this.src_ = src;\n\n this.key = src;\n\n /**\n * @private\n * @type {HTMLImageElement|HTMLCanvasElement}\n */\n this.image_ = new Image();\n if (crossOrigin !== null) {\n this.image_.crossOrigin = crossOrigin;\n }\n\n /**\n * @private\n * @type {?function():void}\n */\n this.unlisten_ = null;\n\n /**\n * @private\n * @type {import(\"./Tile.js\").LoadFunction}\n */\n this.tileLoadFunction_ = tileLoadFunction;\n }\n\n /**\n * Get the HTML image element for this tile (may be a Canvas, Image, or Video).\n * @return {HTMLCanvasElement|HTMLImageElement|HTMLVideoElement} Image.\n * @api\n */\n getImage() {\n return this.image_;\n }\n\n /**\n * Sets an HTML image element for this tile (may be a Canvas or preloaded Image).\n * @param {HTMLCanvasElement|HTMLImageElement} element Element.\n */\n setImage(element) {\n this.image_ = element;\n this.state = TileState.LOADED;\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Tracks loading or read errors.\n *\n * @private\n */\n handleImageError_() {\n this.state = TileState.ERROR;\n this.unlistenImage_();\n this.image_ = getBlankImage();\n this.changed();\n }\n\n /**\n * Tracks successful image load.\n *\n * @private\n */\n handleImageLoad_() {\n const image = /** @type {HTMLImageElement} */ (this.image_);\n if (image.naturalWidth && image.naturalHeight) {\n this.state = TileState.LOADED;\n } else {\n this.state = TileState.EMPTY;\n }\n this.unlistenImage_();\n this.changed();\n }\n\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n *\n * To retry loading tiles on failed requests, use a custom `tileLoadFunction`\n * that checks for error status codes and reloads only when the status code is\n * 408, 429, 500, 502, 503 and 504, and only when not too many retries have been\n * made already:\n *\n * ```js\n * const retryCodes = [408, 429, 500, 502, 503, 504];\n * const retries = {};\n * source.setTileLoadFunction((tile, src) => {\n * const image = tile.getImage();\n * fetch(src)\n * .then((response) => {\n * if (retryCodes.includes(response.status)) {\n * retries[src] = (retries[src] || 0) + 1;\n * if (retries[src] <= 3) {\n * setTimeout(() => tile.load(), retries[src] * 1000);\n * }\n * return Promise.reject();\n * }\n * return response.blob();\n * })\n * .then((blob) => {\n * const imageUrl = URL.createObjectURL(blob);\n * image.src = imageUrl;\n * setTimeout(() => URL.revokeObjectURL(imageUrl), 5000);\n * })\n * .catch(() => tile.setState(3)); // error\n * });\n * ```\n *\n * @api\n */\n load() {\n if (this.state == TileState.ERROR) {\n this.state = TileState.IDLE;\n this.image_ = new Image();\n if (this.crossOrigin_ !== null) {\n this.image_.crossOrigin = this.crossOrigin_;\n }\n }\n if (this.state == TileState.IDLE) {\n this.state = TileState.LOADING;\n this.changed();\n this.tileLoadFunction_(this, this.src_);\n this.unlisten_ = listenImage(\n this.image_,\n this.handleImageLoad_.bind(this),\n this.handleImageError_.bind(this)\n );\n }\n }\n\n /**\n * Discards event handlers which listen for load completion or errors.\n *\n * @private\n */\n unlistenImage_() {\n if (this.unlisten_) {\n this.unlisten_();\n this.unlisten_ = null;\n }\n }\n}\n\n/**\n * Get a 1-pixel blank image.\n * @return {HTMLCanvasElement} Blank image.\n */\nfunction getBlankImage() {\n const ctx = createCanvasContext2D(1, 1);\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return ctx.canvas;\n}\n\nexport default ImageTile;\n","/**\n * @module ol/renderer/Map\n */\nimport Disposable from '../Disposable.js';\nimport {TRUE} from '../functions.js';\nimport {abstract} from '../util.js';\nimport {compose as composeTransform, makeInverse} from '../transform.js';\nimport {getWidth} from '../extent.js';\nimport {shared as iconImageCache} from '../style/IconImageCache.js';\nimport {inView} from '../layer/Layer.js';\nimport {wrapX} from '../coordinate.js';\n\n/**\n * @template T\n * @typedef HitMatch\n * @property {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @property {import(\"../layer/Layer.js\").default} layer Layer.\n * @property {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @property {number} distanceSq Squared distance.\n * @property {import(\"./vector.js\").FeatureCallback} callback Callback.\n */\n\n/**\n * @abstract\n */\nclass MapRenderer extends Disposable {\n /**\n * @param {import(\"../Map.js\").default} map Map.\n */\n constructor(map) {\n super();\n\n /**\n * @private\n * @type {import(\"../Map.js\").default}\n */\n this.map_ = map;\n }\n\n /**\n * @abstract\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n dispatchRenderEvent(type, frameState) {\n abstract();\n }\n\n /**\n * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n * @protected\n */\n calculateMatrices2D(frameState) {\n const viewState = frameState.viewState;\n const coordinateToPixelTransform = frameState.coordinateToPixelTransform;\n const pixelToCoordinateTransform = frameState.pixelToCoordinateTransform;\n\n composeTransform(\n coordinateToPixelTransform,\n frameState.size[0] / 2,\n frameState.size[1] / 2,\n 1 / viewState.resolution,\n -1 / viewState.resolution,\n -viewState.rotation,\n -viewState.center[0],\n -viewState.center[1]\n );\n\n makeInverse(pixelToCoordinateTransform, coordinateToPixelTransform);\n }\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {import(\"./vector.js\").FeatureCallback} callback Feature callback.\n * @param {S} thisArg Value to use as `this` when executing `callback`.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg2 Value to use as `this` when executing `layerFilter`.\n * @return {T|undefined} Callback result.\n * @template S,T,U\n */\n forEachFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n callback,\n thisArg,\n layerFilter,\n thisArg2\n ) {\n let result;\n const viewState = frameState.viewState;\n\n /**\n * @param {boolean} managed Managed layer.\n * @param {import(\"../Feature.js\").FeatureLike} feature Feature.\n * @param {import(\"../layer/Layer.js\").default} layer Layer.\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @return {T|undefined} Callback result.\n */\n function forEachFeatureAtCoordinate(managed, feature, layer, geometry) {\n return callback.call(thisArg, feature, managed ? layer : null, geometry);\n }\n\n const projection = viewState.projection;\n\n const translatedCoordinate = wrapX(coordinate.slice(), projection);\n const offsets = [[0, 0]];\n if (projection.canWrapX() && checkWrapped) {\n const projectionExtent = projection.getExtent();\n const worldWidth = getWidth(projectionExtent);\n offsets.push([-worldWidth, 0], [worldWidth, 0]);\n }\n\n const layerStates = frameState.layerStatesArray;\n const numLayers = layerStates.length;\n\n const matches = /** @type {Array>} */ ([]);\n const tmpCoord = [];\n for (let i = 0; i < offsets.length; i++) {\n for (let j = numLayers - 1; j >= 0; --j) {\n const layerState = layerStates[j];\n const layer = layerState.layer;\n if (\n layer.hasRenderer() &&\n inView(layerState, viewState) &&\n layerFilter.call(thisArg2, layer)\n ) {\n const layerRenderer = layer.getRenderer();\n const source = layer.getSource();\n if (layerRenderer && source) {\n const coordinates = source.getWrapX()\n ? translatedCoordinate\n : coordinate;\n const callback = forEachFeatureAtCoordinate.bind(\n null,\n layerState.managed\n );\n tmpCoord[0] = coordinates[0] + offsets[i][0];\n tmpCoord[1] = coordinates[1] + offsets[i][1];\n result = layerRenderer.forEachFeatureAtCoordinate(\n tmpCoord,\n frameState,\n hitTolerance,\n callback,\n matches\n );\n }\n if (result) {\n return result;\n }\n }\n }\n }\n if (matches.length === 0) {\n return undefined;\n }\n const order = 1 / matches.length;\n matches.forEach((m, i) => (m.distanceSq += i * order));\n matches.sort((a, b) => a.distanceSq - b.distanceSq);\n matches.some((m) => {\n return (result = m.callback(m.feature, m.layer, m.geometry));\n });\n return result;\n }\n\n /**\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"../Map.js\").FrameState} frameState FrameState.\n * @param {number} hitTolerance Hit tolerance in pixels.\n * @param {boolean} checkWrapped Check for wrapped geometries.\n * @param {function(this: U, import(\"../layer/Layer.js\").default): boolean} layerFilter Layer filter\n * function, only layers which are visible and for which this function\n * returns `true` will be tested for features. By default, all visible\n * layers will be tested.\n * @param {U} thisArg Value to use as `this` when executing `layerFilter`.\n * @return {boolean} Is there a feature at the given coordinate?\n * @template U\n */\n hasFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n layerFilter,\n thisArg\n ) {\n const hasFeature = this.forEachFeatureAtCoordinate(\n coordinate,\n frameState,\n hitTolerance,\n checkWrapped,\n TRUE,\n this,\n layerFilter,\n thisArg\n );\n\n return hasFeature !== undefined;\n }\n\n /**\n * @return {import(\"../Map.js\").default} Map.\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Render.\n * @abstract\n * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n */\n renderFrame(frameState) {\n abstract();\n }\n\n /**\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n flushDeclutterItems(frameState) {}\n\n /**\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n * @protected\n */\n scheduleExpireIconCache(frameState) {\n if (iconImageCache.canExpireCache()) {\n frameState.postRenderFunctions.push(expireIconCache);\n }\n }\n}\n\n/**\n * @param {import(\"../Map.js\").default} map Map.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\nfunction expireIconCache(map, frameState) {\n iconImageCache.expire();\n}\n\nexport default MapRenderer;\n","/**\n * @module ol/renderer/Composite\n */\nimport MapRenderer from './Map.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport RenderEvent from '../render/Event.js';\nimport RenderEventType from '../render/EventType.js';\nimport {CLASS_UNSELECTABLE} from '../css.js';\nimport {checkedFonts} from '../render/canvas.js';\nimport {inView} from '../layer/Layer.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {replaceChildren} from '../dom.js';\n\n/**\n * @classdesc\n * Canvas map renderer.\n * @api\n */\nclass CompositeMapRenderer extends MapRenderer {\n /**\n * @param {import(\"../Map.js\").default} map Map.\n */\n constructor(map) {\n super(map);\n\n /**\n * @type {import(\"../events.js\").EventsKey}\n */\n this.fontChangeListenerKey_ = listen(\n checkedFonts,\n ObjectEventType.PROPERTYCHANGE,\n map.redrawText.bind(map)\n );\n\n /**\n * @private\n * @type {HTMLDivElement}\n */\n this.element_ = document.createElement('div');\n const style = this.element_.style;\n style.position = 'absolute';\n style.width = '100%';\n style.height = '100%';\n style.zIndex = '0';\n\n this.element_.className = CLASS_UNSELECTABLE + ' ol-layers';\n\n const container = map.getViewport();\n container.insertBefore(this.element_, container.firstChild || null);\n\n /**\n * @private\n * @type {Array}\n */\n this.children_ = [];\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = true;\n\n /**\n * @type {Array}\n */\n this.declutterLayers_ = [];\n }\n\n /**\n * @param {import(\"../render/EventType.js\").default} type Event type.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n dispatchRenderEvent(type, frameState) {\n const map = this.getMap();\n if (map.hasListener(type)) {\n const event = new RenderEvent(type, undefined, frameState);\n map.dispatchEvent(event);\n }\n }\n\n disposeInternal() {\n unlistenByKey(this.fontChangeListenerKey_);\n this.element_.parentNode.removeChild(this.element_);\n super.disposeInternal();\n }\n\n /**\n * Render.\n * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n */\n renderFrame(frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element_.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n this.calculateMatrices2D(frameState);\n this.dispatchRenderEvent(RenderEventType.PRECOMPOSE, frameState);\n\n const layerStatesArray = frameState.layerStatesArray.sort(function (a, b) {\n return a.zIndex - b.zIndex;\n });\n const viewState = frameState.viewState;\n\n this.children_.length = 0;\n\n const declutterLayers = this.declutterLayers_;\n declutterLayers.length = 0;\n\n let previousElement = null;\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n const layerState = layerStatesArray[i];\n frameState.layerIndex = i;\n\n const layer = layerState.layer;\n const sourceState = layer.getSourceState();\n if (\n !inView(layerState, viewState) ||\n (sourceState != 'ready' && sourceState != 'undefined')\n ) {\n layer.unrender();\n continue;\n }\n\n const element = layer.render(frameState, previousElement);\n if (!element) {\n continue;\n }\n if (element !== previousElement) {\n this.children_.push(element);\n previousElement = element;\n }\n if ('getDeclutter' in layer) {\n declutterLayers.push(\n /** @type {import(\"../layer/BaseVector.js\").default} */ (layer)\n );\n }\n }\n this.flushDeclutterItems(frameState);\n\n replaceChildren(this.element_, this.children_);\n\n this.dispatchRenderEvent(RenderEventType.POSTCOMPOSE, frameState);\n\n if (!this.renderedVisible_) {\n this.element_.style.display = '';\n this.renderedVisible_ = true;\n }\n\n this.scheduleExpireIconCache(frameState);\n }\n\n /**\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n */\n flushDeclutterItems(frameState) {\n const layers = this.declutterLayers_;\n for (let i = layers.length - 1; i >= 0; --i) {\n layers[i].renderDeclutter(frameState);\n }\n layers.length = 0;\n }\n}\n\nexport default CompositeMapRenderer;\n","/**\n * @module ol/MapBrowserEventHandler\n */\n\nimport EventType from './events/EventType.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport Target from './events/Target.js';\nimport {PASSIVE_EVENT_LISTENERS} from './has.js';\nimport {listen, unlistenByKey} from './events.js';\n\nclass MapBrowserEventHandler extends Target {\n /**\n * @param {import(\"./Map.js\").default} map The map with the viewport to listen to events on.\n * @param {number} [moveTolerance] The minimal distance the pointer must travel to trigger a move.\n */\n constructor(map, moveTolerance) {\n super(map);\n\n /**\n * This is the element that we will listen to the real events on.\n * @type {import(\"./Map.js\").default}\n * @private\n */\n this.map_ = map;\n\n /**\n * @type {ReturnType}\n * @private\n */\n this.clickTimeoutId_;\n\n /**\n * Emulate dblclick and singleclick. Will be true when only one pointer is active.\n * @type {boolean}\n */\n this.emulateClicks_ = false;\n\n /**\n * @type {boolean}\n * @private\n */\n this.dragging_ = false;\n\n /**\n * @type {!Array}\n * @private\n */\n this.dragListenerKeys_ = [];\n\n /**\n * @type {number}\n * @private\n */\n this.moveTolerance_ = moveTolerance === undefined ? 1 : moveTolerance;\n\n /**\n * The most recent \"down\" type event (or null if none have occurred).\n * Set on pointerdown.\n * @type {PointerEvent|null}\n * @private\n */\n this.down_ = null;\n\n const element = this.map_.getViewport();\n\n /**\n * @type {Array}\n * @private\n */\n this.activePointers_ = [];\n\n /**\n * @type {!Object}\n * @private\n */\n this.trackedTouches_ = {};\n\n this.element_ = element;\n\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n this.pointerdownListenerKey_ = listen(\n element,\n PointerEventType.POINTERDOWN,\n this.handlePointerDown_,\n this\n );\n\n /**\n * @type {PointerEvent}\n * @private\n */\n this.originalPointerMoveEvent_;\n\n /**\n * @type {?import(\"./events.js\").EventsKey}\n * @private\n */\n this.relayedListenerKey_ = listen(\n element,\n PointerEventType.POINTERMOVE,\n this.relayMoveEvent_,\n this\n );\n\n /**\n * @private\n */\n this.boundHandleTouchMove_ = this.handleTouchMove_.bind(this);\n\n this.element_.addEventListener(\n EventType.TOUCHMOVE,\n this.boundHandleTouchMove_,\n PASSIVE_EVENT_LISTENERS ? {passive: false} : false\n );\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n emulateClick_(pointerEvent) {\n let newEvent = new MapBrowserEvent(\n MapBrowserEventType.CLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n if (this.clickTimeoutId_ !== undefined) {\n // double-click\n clearTimeout(this.clickTimeoutId_);\n this.clickTimeoutId_ = undefined;\n newEvent = new MapBrowserEvent(\n MapBrowserEventType.DBLCLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n } else {\n // click\n this.clickTimeoutId_ = setTimeout(() => {\n this.clickTimeoutId_ = undefined;\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.SINGLECLICK,\n this.map_,\n pointerEvent\n );\n this.dispatchEvent(newEvent);\n }, 250);\n }\n }\n\n /**\n * Keeps track on how many pointers are currently active.\n *\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n updateActivePointers_(pointerEvent) {\n const event = pointerEvent;\n const id = event.pointerId;\n\n if (\n event.type == MapBrowserEventType.POINTERUP ||\n event.type == MapBrowserEventType.POINTERCANCEL\n ) {\n delete this.trackedTouches_[id];\n for (const pointerId in this.trackedTouches_) {\n if (this.trackedTouches_[pointerId].target !== event.target) {\n // Some platforms assign a new pointerId when the target changes.\n // If this happens, delete one tracked pointer. If there is more\n // than one tracked pointer for the old target, it will be cleared\n // by subsequent POINTERUP events from other pointers.\n delete this.trackedTouches_[pointerId];\n break;\n }\n }\n } else if (\n event.type == MapBrowserEventType.POINTERDOWN ||\n event.type == MapBrowserEventType.POINTERMOVE\n ) {\n this.trackedTouches_[id] = event;\n }\n this.activePointers_ = Object.values(this.trackedTouches_);\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerUp_(pointerEvent) {\n this.updateActivePointers_(pointerEvent);\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERUP,\n this.map_,\n pointerEvent,\n undefined,\n undefined,\n this.activePointers_\n );\n this.dispatchEvent(newEvent);\n\n // We emulate click events on left mouse button click, touch contact, and pen\n // contact. isMouseActionButton returns true in these cases (evt.button is set\n // to 0).\n // See http://www.w3.org/TR/pointerevents/#button-states\n // We only fire click, singleclick, and doubleclick if nobody has called\n // event.preventDefault().\n if (\n this.emulateClicks_ &&\n !newEvent.defaultPrevented &&\n !this.dragging_ &&\n this.isMouseActionButton_(pointerEvent)\n ) {\n this.emulateClick_(this.down_);\n }\n\n if (this.activePointers_.length === 0) {\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n this.dragging_ = false;\n this.down_ = null;\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} If the left mouse button was pressed.\n * @private\n */\n isMouseActionButton_(pointerEvent) {\n return pointerEvent.button === 0;\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerDown_(pointerEvent) {\n this.emulateClicks_ = this.activePointers_.length === 0;\n this.updateActivePointers_(pointerEvent);\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERDOWN,\n this.map_,\n pointerEvent,\n undefined,\n undefined,\n this.activePointers_\n );\n this.dispatchEvent(newEvent);\n\n this.down_ = new PointerEvent(pointerEvent.type, pointerEvent);\n Object.defineProperty(this.down_, 'target', {\n writable: false,\n value: pointerEvent.target,\n });\n\n if (this.dragListenerKeys_.length === 0) {\n const doc = this.map_.getOwnerDocument();\n this.dragListenerKeys_.push(\n listen(\n doc,\n MapBrowserEventType.POINTERMOVE,\n this.handlePointerMove_,\n this\n ),\n listen(doc, MapBrowserEventType.POINTERUP, this.handlePointerUp_, this),\n /* Note that the listener for `pointercancel is set up on\n * `pointerEventHandler_` and not `documentPointerEventHandler_` like\n * the `pointerup` and `pointermove` listeners.\n *\n * The reason for this is the following: `TouchSource.vacuumTouches_()`\n * issues `pointercancel` events, when there was no `touchend` for a\n * `touchstart`. Now, let's say a first `touchstart` is registered on\n * `pointerEventHandler_`. The `documentPointerEventHandler_` is set up.\n * But `documentPointerEventHandler_` doesn't know about the first\n * `touchstart`. If there is no `touchend` for the `touchstart`, we can\n * only receive a `touchcancel` from `pointerEventHandler_`, because it is\n * only registered there.\n */\n listen(\n this.element_,\n MapBrowserEventType.POINTERCANCEL,\n this.handlePointerUp_,\n this\n )\n );\n if (this.element_.getRootNode && this.element_.getRootNode() !== doc) {\n this.dragListenerKeys_.push(\n listen(\n this.element_.getRootNode(),\n MapBrowserEventType.POINTERUP,\n this.handlePointerUp_,\n this\n )\n );\n }\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n handlePointerMove_(pointerEvent) {\n // Between pointerdown and pointerup, pointermove events are triggered.\n // To avoid a 'false' touchmove event to be dispatched, we test if the pointer\n // moved a significant distance.\n if (this.isMoving_(pointerEvent)) {\n this.updateActivePointers_(pointerEvent);\n this.dragging_ = true;\n const newEvent = new MapBrowserEvent(\n MapBrowserEventType.POINTERDRAG,\n this.map_,\n pointerEvent,\n this.dragging_,\n undefined,\n this.activePointers_\n );\n this.dispatchEvent(newEvent);\n }\n }\n\n /**\n * Wrap and relay a pointermove event.\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @private\n */\n relayMoveEvent_(pointerEvent) {\n this.originalPointerMoveEvent_ = pointerEvent;\n const dragging = !!(this.down_ && this.isMoving_(pointerEvent));\n this.dispatchEvent(\n new MapBrowserEvent(\n MapBrowserEventType.POINTERMOVE,\n this.map_,\n pointerEvent,\n dragging\n )\n );\n }\n\n /**\n * Flexible handling of a `touch-action: none` css equivalent: because calling\n * `preventDefault()` on a `pointermove` event does not stop native page scrolling\n * and zooming, we also listen for `touchmove` and call `preventDefault()` on it\n * when an interaction (currently `DragPan` handles the event.\n * @param {TouchEvent} event Event.\n * @private\n */\n handleTouchMove_(event) {\n // Due to https://github.com/mpizenberg/elm-pep/issues/2, `this.originalPointerMoveEvent_`\n // may not be initialized yet when we get here on a platform without native pointer events,\n // when elm-pep is used as pointer events polyfill.\n const originalEvent = this.originalPointerMoveEvent_;\n if (\n (!originalEvent || originalEvent.defaultPrevented) &&\n (typeof event.cancelable !== 'boolean' || event.cancelable === true)\n ) {\n event.preventDefault();\n }\n }\n\n /**\n * @param {PointerEvent} pointerEvent Pointer\n * event.\n * @return {boolean} Is moving.\n * @private\n */\n isMoving_(pointerEvent) {\n return (\n this.dragging_ ||\n Math.abs(pointerEvent.clientX - this.down_.clientX) >\n this.moveTolerance_ ||\n Math.abs(pointerEvent.clientY - this.down_.clientY) > this.moveTolerance_\n );\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n if (this.relayedListenerKey_) {\n unlistenByKey(this.relayedListenerKey_);\n this.relayedListenerKey_ = null;\n }\n this.element_.removeEventListener(\n EventType.TOUCHMOVE,\n this.boundHandleTouchMove_\n );\n\n if (this.pointerdownListenerKey_) {\n unlistenByKey(this.pointerdownListenerKey_);\n this.pointerdownListenerKey_ = null;\n }\n\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n\n this.element_ = null;\n super.disposeInternal();\n }\n}\n\nexport default MapBrowserEventHandler;\n","/**\n * @module ol/Map\n */\nimport BaseObject from './Object.js';\nimport Collection from './Collection.js';\nimport CollectionEventType from './CollectionEventType.js';\nimport CompositeMapRenderer from './renderer/Composite.js';\nimport EventType from './events/EventType.js';\nimport Layer from './layer/Layer.js';\nimport LayerGroup, {GroupEvent} from './layer/Group.js';\nimport MapBrowserEvent from './MapBrowserEvent.js';\nimport MapBrowserEventHandler from './MapBrowserEventHandler.js';\nimport MapBrowserEventType from './MapBrowserEventType.js';\nimport MapEvent from './MapEvent.js';\nimport MapEventType from './MapEventType.js';\nimport MapProperty from './MapProperty.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport PointerEventType from './pointer/EventType.js';\nimport RenderEventType from './render/EventType.js';\nimport TileQueue, {getTilePriority} from './TileQueue.js';\nimport View from './View.js';\nimport ViewHint from './ViewHint.js';\nimport {DEVICE_PIXEL_RATIO, PASSIVE_EVENT_LISTENERS} from './has.js';\nimport {TRUE} from './functions.js';\nimport {\n apply as applyTransform,\n create as createTransform,\n} from './transform.js';\nimport {assert} from './asserts.js';\nimport {\n clone,\n createOrUpdateEmpty,\n equals as equalsExtent,\n getForViewAndSize,\n isEmpty,\n} from './extent.js';\nimport {defaults as defaultControls} from './control/defaults.js';\nimport {defaults as defaultInteractions} from './interaction/defaults.js';\nimport {equals} from './array.js';\nimport {fromUserCoordinate, toUserCoordinate} from './proj.js';\nimport {getUid} from './util.js';\nimport {hasArea} from './size.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {removeNode} from './dom.js';\nimport {warn} from './console.js';\n\n/**\n * State of the current frame. Only `pixelRatio`, `time` and `viewState` should\n * be used in applications.\n * @typedef {Object} FrameState\n * @property {number} pixelRatio The pixel ratio of the frame.\n * @property {number} time The time when rendering of the frame was requested.\n * @property {import(\"./View.js\").State} viewState The state of the current view.\n * @property {boolean} animate Animate.\n * @property {import(\"./transform.js\").Transform} coordinateToPixelTransform CoordinateToPixelTransform.\n * @property {import(\"rbush\").default} declutterTree DeclutterTree.\n * @property {null|import(\"./extent.js\").Extent} extent Extent (in view projection coordinates).\n * @property {import(\"./extent.js\").Extent} [nextExtent] Next extent during an animation series.\n * @property {number} index Index.\n * @property {Array} layerStatesArray LayerStatesArray.\n * @property {number} layerIndex LayerIndex.\n * @property {import(\"./transform.js\").Transform} pixelToCoordinateTransform PixelToCoordinateTransform.\n * @property {Array} postRenderFunctions PostRenderFunctions.\n * @property {import(\"./size.js\").Size} size Size.\n * @property {TileQueue} tileQueue TileQueue.\n * @property {!Object>} usedTiles UsedTiles.\n * @property {Array} viewHints ViewHints.\n * @property {!Object>} wantedTiles WantedTiles.\n * @property {string} mapId The id of the map.\n * @property {Object} renderTargets Identifiers of previously rendered elements.\n */\n\n/**\n * @typedef {function(Map, ?FrameState): any} PostRenderFunction\n */\n\n/**\n * @typedef {Object} AtPixelOptions\n * @property {undefined|function(import(\"./layer/Layer.js\").default): boolean} [layerFilter] Layer filter\n * function. The filter function will receive one argument, the\n * {@link module:ol/layer/Layer~Layer layer-candidate} and it should return a boolean value.\n * Only layers which are visible and for which this function returns `true`\n * will be tested for features. By default, all visible layers will be tested.\n * @property {number} [hitTolerance=0] Hit-detection tolerance in css pixels. Pixels\n * inside the radius around the given position will be checked for features.\n * @property {boolean} [checkWrapped=true] Check-Wrapped Will check for wrapped geometries inside the range of\n * +/- 1 world width. Works only if a projection is used that can be wrapped.\n */\n\n/**\n * @typedef {Object} MapOptionsInternal\n * @property {Collection} [controls] Controls.\n * @property {Collection} [interactions] Interactions.\n * @property {HTMLElement|Document} keyboardEventTarget KeyboardEventTarget.\n * @property {Collection} overlays Overlays.\n * @property {Object} values Values.\n */\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:layergroup'|'change:size'|'change:target'|'change:view'} MapObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} MapEventHandler\n */\n\n/**\n * Object literal with config options for the map.\n * @typedef {Object} MapOptions\n * @property {Collection|Array} [controls]\n * Controls initially added to the map. If not specified,\n * {@link module:ol/control/defaults.defaults} is used.\n * @property {number} [pixelRatio=window.devicePixelRatio] The ratio between\n * physical pixels and device-independent pixels (dips) on the device.\n * @property {Collection|Array} [interactions]\n * Interactions that are initially added to the map. If not specified,\n * {@link module:ol/interaction/defaults.defaults} is used.\n * @property {HTMLElement|Document|string} [keyboardEventTarget] The element to\n * listen to keyboard events on. This determines when the `KeyboardPan` and\n * `KeyboardZoom` interactions trigger. For example, if this option is set to\n * `document` the keyboard interactions will always trigger. If this option is\n * not specified, the element the library listens to keyboard events on is the\n * map target (i.e. the user-provided div for the map). If this is not\n * `document`, the target element needs to be focused for key events to be\n * emitted, requiring that the target element has a `tabindex` attribute.\n * @property {Array|Collection|LayerGroup} [layers]\n * Layers. If this is not defined, a map with no layers will be rendered. Note\n * that layers are rendered in the order supplied, so if you want, for example,\n * a vector layer to appear on top of a tile layer, it must come after the tile\n * layer.\n * @property {number} [maxTilesLoading=16] Maximum number tiles to load\n * simultaneously.\n * @property {number} [moveTolerance=1] The minimum distance in pixels the\n * cursor must move to be detected as a map move event instead of a click.\n * Increasing this value can make it easier to click on the map.\n * @property {Collection|Array} [overlays]\n * Overlays initially added to the map. By default, no overlays are added.\n * @property {HTMLElement|string} [target] The container for the map, either the\n * element itself or the `id` of the element. If not specified at construction\n * time, {@link module:ol/Map~Map#setTarget} must be called for the map to be\n * rendered. If passed by element, the container can be in a secondary document.\n * **Note:** CSS `transform` support for the target element is limited to `scale`.\n * @property {View|Promise} [view] The map's view. No layer sources will be\n * fetched unless this is specified at construction time or through\n * {@link module:ol/Map~Map#setView}.\n */\n\n/**\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n */\nfunction removeLayerMapProperty(layer) {\n if (layer instanceof Layer) {\n layer.setMapInternal(null);\n return;\n }\n if (layer instanceof LayerGroup) {\n layer.getLayers().forEach(removeLayerMapProperty);\n }\n}\n\n/**\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @param {Map} map Map.\n */\nfunction setLayerMapProperty(layer, map) {\n if (layer instanceof Layer) {\n layer.setMapInternal(map);\n return;\n }\n if (layer instanceof LayerGroup) {\n const layers = layer.getLayers().getArray();\n for (let i = 0, ii = layers.length; i < ii; ++i) {\n setLayerMapProperty(layers[i], map);\n }\n }\n}\n\n/**\n * @classdesc\n * The map is the core component of OpenLayers. For a map to render, a view,\n * one or more layers, and a target container are needed:\n *\n * import Map from 'ol/Map.js';\n * import View from 'ol/View.js';\n * import TileLayer from 'ol/layer/Tile.js';\n * import OSM from 'ol/source/OSM.js';\n *\n * const map = new Map({\n * view: new View({\n * center: [0, 0],\n * zoom: 1,\n * }),\n * layers: [\n * new TileLayer({\n * source: new OSM(),\n * }),\n * ],\n * target: 'map',\n * });\n *\n * The above snippet creates a map using a {@link module:ol/layer/Tile~TileLayer} to\n * display {@link module:ol/source/OSM~OSM} OSM data and render it to a DOM\n * element with the id `map`.\n *\n * The constructor places a viewport container (with CSS class name\n * `ol-viewport`) in the target element (see `getViewport()`), and then two\n * further elements within the viewport: one with CSS class name\n * `ol-overlaycontainer-stopevent` for controls and some overlays, and one with\n * CSS class name `ol-overlaycontainer` for other overlays (see the `stopEvent`\n * option of {@link module:ol/Overlay~Overlay} for the difference). The map\n * itself is placed in a further element within the viewport.\n *\n * Layers are stored as a {@link module:ol/Collection~Collection} in\n * layerGroups. A top-level group is provided by the library. This is what is\n * accessed by `getLayerGroup` and `setLayerGroup`. Layers entered in the\n * options are added to this group, and `addLayer` and `removeLayer` change the\n * layer collection in the group. `getLayers` is a convenience function for\n * `getLayerGroup().getLayers()`. Note that {@link module:ol/layer/Group~LayerGroup}\n * is a subclass of {@link module:ol/layer/Base~BaseLayer}, so layers entered in the\n * options or added with `addLayer` can be groups, which can contain further\n * groups, and so on.\n *\n * @fires import(\"./MapBrowserEvent.js\").MapBrowserEvent\n * @fires import(\"./MapEvent.js\").MapEvent\n * @fires import(\"./render/Event.js\").default#precompose\n * @fires import(\"./render/Event.js\").default#postcompose\n * @fires import(\"./render/Event.js\").default#rendercomplete\n * @api\n */\nclass Map extends BaseObject {\n /**\n * @param {MapOptions} [options] Map options.\n */\n constructor(options) {\n super();\n\n options = options || {};\n\n /***\n * @type {MapEventHandler}\n */\n this.on;\n\n /***\n * @type {MapEventHandler}\n */\n this.once;\n\n /***\n * @type {MapEventHandler}\n */\n this.un;\n\n const optionsInternal = createOptionsInternal(options);\n\n /**\n * @private\n * @type {boolean|undefined}\n */\n this.renderComplete_;\n\n /**\n * @private\n * @type {boolean}\n */\n this.loaded_ = true;\n\n /** @private */\n this.boundHandleBrowserEvent_ = this.handleBrowserEvent.bind(this);\n\n /**\n * @type {number}\n * @private\n */\n this.maxTilesLoading_ =\n options.maxTilesLoading !== undefined ? options.maxTilesLoading : 16;\n\n /**\n * @private\n * @type {number}\n */\n this.pixelRatio_ =\n options.pixelRatio !== undefined\n ? options.pixelRatio\n : DEVICE_PIXEL_RATIO;\n\n /**\n * @private\n * @type {ReturnType}\n */\n this.postRenderTimeoutHandle_;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.animationDelayKey_;\n\n /**\n * @private\n */\n this.animationDelay_ = this.animationDelay_.bind(this);\n\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n this.coordinateToPixelTransform_ = createTransform();\n\n /**\n * @private\n * @type {import(\"./transform.js\").Transform}\n */\n this.pixelToCoordinateTransform_ = createTransform();\n\n /**\n * @private\n * @type {number}\n */\n this.frameIndex_ = 0;\n\n /**\n * @private\n * @type {?FrameState}\n */\n this.frameState_ = null;\n\n /**\n * The extent at the previous 'moveend' event.\n * @private\n * @type {import(\"./extent.js\").Extent}\n */\n this.previousExtent_ = null;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.viewPropertyListenerKey_ = null;\n\n /**\n * @private\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.viewChangeListenerKey_ = null;\n\n /**\n * @private\n * @type {?Array}\n */\n this.layerGroupPropertyListenerKeys_ = null;\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.viewport_ = document.createElement('div');\n this.viewport_.className =\n 'ol-viewport' + ('ontouchstart' in window ? ' ol-touch' : '');\n this.viewport_.style.position = 'relative';\n this.viewport_.style.overflow = 'hidden';\n this.viewport_.style.width = '100%';\n this.viewport_.style.height = '100%';\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.overlayContainer_ = document.createElement('div');\n this.overlayContainer_.style.position = 'absolute';\n this.overlayContainer_.style.zIndex = '0';\n this.overlayContainer_.style.width = '100%';\n this.overlayContainer_.style.height = '100%';\n this.overlayContainer_.style.pointerEvents = 'none';\n this.overlayContainer_.className = 'ol-overlaycontainer';\n this.viewport_.appendChild(this.overlayContainer_);\n\n /**\n * @private\n * @type {!HTMLElement}\n */\n this.overlayContainerStopEvent_ = document.createElement('div');\n this.overlayContainerStopEvent_.style.position = 'absolute';\n this.overlayContainerStopEvent_.style.zIndex = '0';\n this.overlayContainerStopEvent_.style.width = '100%';\n this.overlayContainerStopEvent_.style.height = '100%';\n this.overlayContainerStopEvent_.style.pointerEvents = 'none';\n this.overlayContainerStopEvent_.className = 'ol-overlaycontainer-stopevent';\n this.viewport_.appendChild(this.overlayContainerStopEvent_);\n\n /**\n * @private\n * @type {MapBrowserEventHandler}\n */\n this.mapBrowserEventHandler_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.moveTolerance_ = options.moveTolerance;\n\n /**\n * @private\n * @type {HTMLElement|Document}\n */\n this.keyboardEventTarget_ = optionsInternal.keyboardEventTarget;\n\n /**\n * @private\n * @type {?Array}\n */\n this.targetChangeHandlerKeys_ = null;\n\n /**\n * @private\n * @type {HTMLElement|null}\n */\n this.targetElement_ = null;\n\n /**\n * @type {ResizeObserver}\n */\n this.resizeObserver_ = new ResizeObserver(() => this.updateSize());\n\n /**\n * @type {Collection}\n * @protected\n */\n this.controls = optionsInternal.controls || defaultControls();\n\n /**\n * @type {Collection}\n * @protected\n */\n this.interactions =\n optionsInternal.interactions ||\n defaultInteractions({\n onFocusOnly: true,\n });\n\n /**\n * @type {Collection}\n * @private\n */\n this.overlays_ = optionsInternal.overlays;\n\n /**\n * A lookup of overlays by id.\n * @private\n * @type {Object}\n */\n this.overlayIdIndex_ = {};\n\n /**\n * @type {import(\"./renderer/Map.js\").default|null}\n * @private\n */\n this.renderer_ = null;\n\n /**\n * @private\n * @type {!Array}\n */\n this.postRenderFunctions_ = [];\n\n /**\n * @private\n * @type {TileQueue}\n */\n this.tileQueue_ = new TileQueue(\n this.getTilePriority.bind(this),\n this.handleTileChange_.bind(this)\n );\n\n this.addChangeListener(\n MapProperty.LAYERGROUP,\n this.handleLayerGroupChanged_\n );\n this.addChangeListener(MapProperty.VIEW, this.handleViewChanged_);\n this.addChangeListener(MapProperty.SIZE, this.handleSizeChanged_);\n this.addChangeListener(MapProperty.TARGET, this.handleTargetChanged_);\n\n // setProperties will trigger the rendering of the map if the map\n // is \"defined\" already.\n this.setProperties(optionsInternal.values);\n\n const map = this;\n if (options.view && !(options.view instanceof View)) {\n options.view.then(function (viewOptions) {\n map.setView(new View(viewOptions));\n });\n }\n\n this.controls.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent\n */\n (event) => {\n event.element.setMap(this);\n }\n );\n\n this.controls.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n event.element.setMap(null);\n }\n );\n\n this.interactions.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n event.element.setMap(this);\n }\n );\n\n this.interactions.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n event.element.setMap(null);\n }\n );\n\n this.overlays_.addEventListener(\n CollectionEventType.ADD,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n this.addOverlayInternal_(event.element);\n }\n );\n\n this.overlays_.addEventListener(\n CollectionEventType.REMOVE,\n /**\n * @param {import(\"./Collection.js\").CollectionEvent} event CollectionEvent.\n */\n (event) => {\n const id = event.element.getId();\n if (id !== undefined) {\n delete this.overlayIdIndex_[id.toString()];\n }\n event.element.setMap(null);\n }\n );\n\n this.controls.forEach(\n /**\n * @param {import(\"./control/Control.js\").default} control Control.\n */\n (control) => {\n control.setMap(this);\n }\n );\n\n this.interactions.forEach(\n /**\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction.\n */\n (interaction) => {\n interaction.setMap(this);\n }\n );\n\n this.overlays_.forEach(this.addOverlayInternal_.bind(this));\n }\n\n /**\n * Add the given control to the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @api\n */\n addControl(control) {\n this.getControls().push(control);\n }\n\n /**\n * Add the given interaction to the map. If you want to add an interaction\n * at another point of the collection use `getInteractions()` and the methods\n * available on {@link module:ol/Collection~Collection}. This can be used to\n * stop the event propagation from the handleEvent function. The interactions\n * get to handle the events in the reverse order of this collection.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to add.\n * @api\n */\n addInteraction(interaction) {\n this.getInteractions().push(interaction);\n }\n\n /**\n * Adds the given layer to the top of this map. If you want to add a layer\n * elsewhere in the stack, use `getLayers()` and the methods available on\n * {@link module:ol/Collection~Collection}.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @api\n */\n addLayer(layer) {\n const layers = this.getLayerGroup().getLayers();\n layers.push(layer);\n }\n\n /**\n * @param {import(\"./layer/Group.js\").GroupEvent} event The layer add event.\n * @private\n */\n handleLayerAdd_(event) {\n setLayerMapProperty(event.layer, this);\n }\n\n /**\n * Add the given overlay to the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @api\n */\n addOverlay(overlay) {\n this.getOverlays().push(overlay);\n }\n\n /**\n * This deals with map's overlay collection changes.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @private\n */\n addOverlayInternal_(overlay) {\n const id = overlay.getId();\n if (id !== undefined) {\n this.overlayIdIndex_[id.toString()] = overlay;\n }\n overlay.setMap(this);\n }\n\n /**\n *\n * Clean up.\n */\n disposeInternal() {\n this.controls.clear();\n this.interactions.clear();\n this.overlays_.clear();\n this.resizeObserver_.disconnect();\n this.setTarget(null);\n super.disposeInternal();\n }\n\n /**\n * Detect features that intersect a pixel on the viewport, and execute a\n * callback with each intersecting feature. Layers included in the detection can\n * be configured through the `layerFilter` option in `options`.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {function(import(\"./Feature.js\").FeatureLike, import(\"./layer/Layer.js\").default, import(\"./geom/SimpleGeometry.js\").default): T} callback Feature callback. The callback will be\n * called with two arguments. The first argument is one\n * {@link module:ol/Feature~Feature feature} or\n * {@link module:ol/render/Feature~RenderFeature render feature} at the pixel, the second is\n * the {@link module:ol/layer/Layer~Layer layer} of the feature and will be null for\n * unmanaged layers. To stop detection, callback functions can return a\n * truthy value.\n * @param {AtPixelOptions} [options] Optional options.\n * @return {T|undefined} Callback result, i.e. the return value of last\n * callback execution, or the first truthy callback return value.\n * @template T\n * @api\n */\n forEachFeatureAtPixel(pixel, callback, options) {\n if (!this.frameState_ || !this.renderer_) {\n return;\n }\n const coordinate = this.getCoordinateFromPixelInternal(pixel);\n options = options !== undefined ? options : {};\n const hitTolerance =\n options.hitTolerance !== undefined ? options.hitTolerance : 0;\n const layerFilter =\n options.layerFilter !== undefined ? options.layerFilter : TRUE;\n const checkWrapped = options.checkWrapped !== false;\n return this.renderer_.forEachFeatureAtCoordinate(\n coordinate,\n this.frameState_,\n hitTolerance,\n checkWrapped,\n callback,\n null,\n layerFilter,\n null\n );\n }\n\n /**\n * Get all features that intersect a pixel on the viewport.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions} [options] Optional options.\n * @return {Array} The detected features or\n * an empty array if none were found.\n * @api\n */\n getFeaturesAtPixel(pixel, options) {\n const features = [];\n this.forEachFeatureAtPixel(\n pixel,\n function (feature) {\n features.push(feature);\n },\n options\n );\n return features;\n }\n\n /**\n * Get all layers from all layer groups.\n * @return {Array} Layers.\n * @api\n */\n getAllLayers() {\n const layers = [];\n function addLayersFrom(layerGroup) {\n layerGroup.forEach(function (layer) {\n if (layer instanceof LayerGroup) {\n addLayersFrom(layer.getLayers());\n } else {\n layers.push(layer);\n }\n });\n }\n addLayersFrom(this.getLayers());\n return layers;\n }\n\n /**\n * Detect if features intersect a pixel on the viewport. Layers included in the\n * detection can be configured through the `layerFilter` option.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel.\n * @param {AtPixelOptions} [options] Optional options.\n * @return {boolean} Is there a feature at the given pixel?\n * @api\n */\n hasFeatureAtPixel(pixel, options) {\n if (!this.frameState_ || !this.renderer_) {\n return false;\n }\n const coordinate = this.getCoordinateFromPixelInternal(pixel);\n options = options !== undefined ? options : {};\n const layerFilter =\n options.layerFilter !== undefined ? options.layerFilter : TRUE;\n const hitTolerance =\n options.hitTolerance !== undefined ? options.hitTolerance : 0;\n const checkWrapped = options.checkWrapped !== false;\n return this.renderer_.hasFeatureAtCoordinate(\n coordinate,\n this.frameState_,\n hitTolerance,\n checkWrapped,\n layerFilter,\n null\n );\n }\n\n /**\n * Returns the coordinate in user projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n * @api\n */\n getEventCoordinate(event) {\n return this.getCoordinateFromPixel(this.getEventPixel(event));\n }\n\n /**\n * Returns the coordinate in view projection for a browser event.\n * @param {MouseEvent} event Event.\n * @return {import(\"./coordinate.js\").Coordinate} Coordinate.\n */\n getEventCoordinateInternal(event) {\n return this.getCoordinateFromPixelInternal(this.getEventPixel(event));\n }\n\n /**\n * Returns the map pixel position for a browser event relative to the viewport.\n * @param {UIEvent|{clientX: number, clientY: number}} event Event.\n * @return {import(\"./pixel.js\").Pixel} Pixel.\n * @api\n */\n getEventPixel(event) {\n const viewport = this.viewport_;\n const viewportPosition = viewport.getBoundingClientRect();\n const viewportSize = this.getSize();\n const scaleX = viewportPosition.width / viewportSize[0];\n const scaleY = viewportPosition.height / viewportSize[1];\n const eventPosition =\n //FIXME Are we really calling this with a TouchEvent anywhere?\n 'changedTouches' in event\n ? /** @type {TouchEvent} */ (event).changedTouches[0]\n : /** @type {MouseEvent} */ (event);\n\n return [\n (eventPosition.clientX - viewportPosition.left) / scaleX,\n (eventPosition.clientY - viewportPosition.top) / scaleY,\n ];\n }\n\n /**\n * Get the target in which this map is rendered.\n * Note that this returns what is entered as an option or in setTarget:\n * if that was an element, it returns an element; if a string, it returns that.\n * @return {HTMLElement|string|undefined} The Element or id of the Element that the\n * map is rendered in.\n * @observable\n * @api\n */\n getTarget() {\n return /** @type {HTMLElement|string|undefined} */ (\n this.get(MapProperty.TARGET)\n );\n }\n\n /**\n * Get the DOM element into which this map is rendered. In contrast to\n * `getTarget` this method always return an `Element`, or `null` if the\n * map has no target.\n * @return {HTMLElement} The element that the map is rendered in.\n * @api\n */\n getTargetElement() {\n return this.targetElement_;\n }\n\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * user projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n * @api\n */\n getCoordinateFromPixel(pixel) {\n return toUserCoordinate(\n this.getCoordinateFromPixelInternal(pixel),\n this.getView().getProjection()\n );\n }\n\n /**\n * Get the coordinate for a given pixel. This returns a coordinate in the\n * map view projection.\n * @param {import(\"./pixel.js\").Pixel} pixel Pixel position in the map viewport.\n * @return {import(\"./coordinate.js\").Coordinate} The coordinate for the pixel position.\n */\n getCoordinateFromPixelInternal(pixel) {\n const frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n return applyTransform(frameState.pixelToCoordinateTransform, pixel.slice());\n }\n\n /**\n * Get the map controls. Modifying this collection changes the controls\n * associated with the map.\n * @return {Collection} Controls.\n * @api\n */\n getControls() {\n return this.controls;\n }\n\n /**\n * Get the map overlays. Modifying this collection changes the overlays\n * associated with the map.\n * @return {Collection} Overlays.\n * @api\n */\n getOverlays() {\n return this.overlays_;\n }\n\n /**\n * Get an overlay by its identifier (the value returned by overlay.getId()).\n * Note that the index treats string and numeric identifiers as the same. So\n * `map.getOverlayById(2)` will return an overlay with id `'2'` or `2`.\n * @param {string|number} id Overlay identifier.\n * @return {import(\"./Overlay.js\").default} Overlay.\n * @api\n */\n getOverlayById(id) {\n const overlay = this.overlayIdIndex_[id.toString()];\n return overlay !== undefined ? overlay : null;\n }\n\n /**\n * Get the map interactions. Modifying this collection changes the interactions\n * associated with the map.\n *\n * Interactions are used for e.g. pan, zoom and rotate.\n * @return {Collection} Interactions.\n * @api\n */\n getInteractions() {\n return this.interactions;\n }\n\n /**\n * Get the layergroup associated with this map.\n * @return {LayerGroup} A layer group containing the layers in this map.\n * @observable\n * @api\n */\n getLayerGroup() {\n return /** @type {LayerGroup} */ (this.get(MapProperty.LAYERGROUP));\n }\n\n /**\n * Clear any existing layers and add layers to the map.\n * @param {Array|Collection} layers The layers to be added to the map.\n * @api\n */\n setLayers(layers) {\n const group = this.getLayerGroup();\n if (layers instanceof Collection) {\n group.setLayers(layers);\n return;\n }\n\n const collection = group.getLayers();\n collection.clear();\n collection.extend(layers);\n }\n\n /**\n * Get the collection of layers associated with this map.\n * @return {!Collection} Layers.\n * @api\n */\n getLayers() {\n const layers = this.getLayerGroup().getLayers();\n return layers;\n }\n\n /**\n * @return {boolean} Layers have sources that are still loading.\n */\n getLoadingOrNotReady() {\n const layerStatesArray = this.getLayerGroup().getLayerStatesArray();\n for (let i = 0, ii = layerStatesArray.length; i < ii; ++i) {\n const state = layerStatesArray[i];\n if (!state.visible) {\n continue;\n }\n const renderer = state.layer.getRenderer();\n if (renderer && !renderer.ready) {\n return true;\n }\n const source = state.layer.getSource();\n if (source && source.loading) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the user\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n * @api\n */\n getPixelFromCoordinate(coordinate) {\n const viewCoordinate = fromUserCoordinate(\n coordinate,\n this.getView().getProjection()\n );\n return this.getPixelFromCoordinateInternal(viewCoordinate);\n }\n\n /**\n * Get the pixel for a coordinate. This takes a coordinate in the map view\n * projection and returns the corresponding pixel.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate A map coordinate.\n * @return {import(\"./pixel.js\").Pixel} A pixel position in the map viewport.\n */\n getPixelFromCoordinateInternal(coordinate) {\n const frameState = this.frameState_;\n if (!frameState) {\n return null;\n }\n return applyTransform(\n frameState.coordinateToPixelTransform,\n coordinate.slice(0, 2)\n );\n }\n\n /**\n * Get the map renderer.\n * @return {import(\"./renderer/Map.js\").default|null} Renderer\n */\n getRenderer() {\n return this.renderer_;\n }\n\n /**\n * Get the size of this map.\n * @return {import(\"./size.js\").Size|undefined} The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n getSize() {\n return /** @type {import(\"./size.js\").Size|undefined} */ (\n this.get(MapProperty.SIZE)\n );\n }\n\n /**\n * Get the view associated with this map. A view manages properties such as\n * center and resolution.\n * @return {View} The view that controls this map.\n * @observable\n * @api\n */\n getView() {\n return /** @type {View} */ (this.get(MapProperty.VIEW));\n }\n\n /**\n * Get the element that serves as the map viewport.\n * @return {HTMLElement} Viewport.\n * @api\n */\n getViewport() {\n return this.viewport_;\n }\n\n /**\n * Get the element that serves as the container for overlays. Elements added to\n * this container will let mousedown and touchstart events through to the map,\n * so clicks and gestures on an overlay will trigger {@link module:ol/MapBrowserEvent~MapBrowserEvent}\n * events.\n * @return {!HTMLElement} The map's overlay container.\n */\n getOverlayContainer() {\n return this.overlayContainer_;\n }\n\n /**\n * Get the element that serves as a container for overlays that don't allow\n * event propagation. Elements added to this container won't let mousedown and\n * touchstart events through to the map, so clicks and gestures on an overlay\n * don't trigger any {@link module:ol/MapBrowserEvent~MapBrowserEvent}.\n * @return {!HTMLElement} The map's overlay container that stops events.\n */\n getOverlayContainerStopEvent() {\n return this.overlayContainerStopEvent_;\n }\n\n /**\n * @return {!Document} The document where the map is displayed.\n */\n getOwnerDocument() {\n const targetElement = this.getTargetElement();\n return targetElement ? targetElement.ownerDocument : document;\n }\n\n /**\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\n getTilePriority(tile, tileSourceKey, tileCenter, tileResolution) {\n return getTilePriority(\n this.frameState_,\n tile,\n tileSourceKey,\n tileCenter,\n tileResolution\n );\n }\n\n /**\n * @param {UIEvent} browserEvent Browser event.\n * @param {string} [type] Type.\n */\n handleBrowserEvent(browserEvent, type) {\n type = type || browserEvent.type;\n const mapBrowserEvent = new MapBrowserEvent(type, this, browserEvent);\n this.handleMapBrowserEvent(mapBrowserEvent);\n }\n\n /**\n * @param {MapBrowserEvent} mapBrowserEvent The event to handle.\n */\n handleMapBrowserEvent(mapBrowserEvent) {\n if (!this.frameState_) {\n // With no view defined, we cannot translate pixels into geographical\n // coordinates so interactions cannot be used.\n return;\n }\n const originalEvent = /** @type {PointerEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const eventType = originalEvent.type;\n if (\n eventType === PointerEventType.POINTERDOWN ||\n eventType === EventType.WHEEL ||\n eventType === EventType.KEYDOWN\n ) {\n const doc = this.getOwnerDocument();\n const rootNode = this.viewport_.getRootNode\n ? this.viewport_.getRootNode()\n : doc;\n const target = /** @type {Node} */ (originalEvent.target);\n if (\n // Abort if the target is a child of the container for elements whose events are not meant\n // to be handled by map interactions.\n this.overlayContainerStopEvent_.contains(target) ||\n // Abort if the event target is a child of the container that is no longer in the page.\n // It's possible for the target to no longer be in the page if it has been removed in an\n // event listener, this might happen in a Control that recreates it's content based on\n // user interaction either manually or via a render in something like https://reactjs.org/\n !(rootNode === doc ? doc.documentElement : rootNode).contains(target)\n ) {\n return;\n }\n }\n mapBrowserEvent.frameState = this.frameState_;\n if (this.dispatchEvent(mapBrowserEvent) !== false) {\n const interactionsArray = this.getInteractions().getArray().slice();\n for (let i = interactionsArray.length - 1; i >= 0; i--) {\n const interaction = interactionsArray[i];\n if (\n interaction.getMap() !== this ||\n !interaction.getActive() ||\n !this.getTargetElement()\n ) {\n continue;\n }\n const cont = interaction.handleEvent(mapBrowserEvent);\n if (!cont || mapBrowserEvent.propagationStopped) {\n break;\n }\n }\n }\n }\n\n /**\n * @protected\n */\n handlePostRender() {\n const frameState = this.frameState_;\n\n // Manage the tile queue\n // Image loads are expensive and a limited resource, so try to use them\n // efficiently:\n // * When the view is static we allow a large number of parallel tile loads\n // to complete the frame as quickly as possible.\n // * When animating or interacting, image loads can cause janks, so we reduce\n // the maximum number of loads per frame and limit the number of parallel\n // tile loads to remain reactive to view changes and to reduce the chance of\n // loading tiles that will quickly disappear from view.\n const tileQueue = this.tileQueue_;\n if (!tileQueue.isEmpty()) {\n let maxTotalLoading = this.maxTilesLoading_;\n let maxNewLoads = maxTotalLoading;\n if (frameState) {\n const hints = frameState.viewHints;\n if (hints[ViewHint.ANIMATING] || hints[ViewHint.INTERACTING]) {\n const lowOnFrameBudget = Date.now() - frameState.time > 8;\n maxTotalLoading = lowOnFrameBudget ? 0 : 8;\n maxNewLoads = lowOnFrameBudget ? 0 : 2;\n }\n }\n if (tileQueue.getTilesLoading() < maxTotalLoading) {\n tileQueue.reprioritize(); // FIXME only call if view has changed\n tileQueue.loadMoreTiles(maxTotalLoading, maxNewLoads);\n }\n }\n\n if (frameState && this.renderer_ && !frameState.animate) {\n if (this.renderComplete_ === true) {\n if (this.hasListener(RenderEventType.RENDERCOMPLETE)) {\n this.renderer_.dispatchRenderEvent(\n RenderEventType.RENDERCOMPLETE,\n frameState\n );\n }\n if (this.loaded_ === false) {\n this.loaded_ = true;\n this.dispatchEvent(\n new MapEvent(MapEventType.LOADEND, this, frameState)\n );\n }\n } else if (this.loaded_ === true) {\n this.loaded_ = false;\n this.dispatchEvent(\n new MapEvent(MapEventType.LOADSTART, this, frameState)\n );\n }\n }\n\n const postRenderFunctions = this.postRenderFunctions_;\n for (let i = 0, ii = postRenderFunctions.length; i < ii; ++i) {\n postRenderFunctions[i](this, frameState);\n }\n postRenderFunctions.length = 0;\n }\n\n /**\n * @private\n */\n handleSizeChanged_() {\n if (this.getView() && !this.getView().getAnimating()) {\n this.getView().resolveConstraints(0);\n }\n\n this.render();\n }\n\n /**\n * @private\n */\n handleTargetChanged_() {\n if (this.mapBrowserEventHandler_) {\n for (let i = 0, ii = this.targetChangeHandlerKeys_.length; i < ii; ++i) {\n unlistenByKey(this.targetChangeHandlerKeys_[i]);\n }\n this.targetChangeHandlerKeys_ = null;\n this.viewport_.removeEventListener(\n EventType.CONTEXTMENU,\n this.boundHandleBrowserEvent_\n );\n this.viewport_.removeEventListener(\n EventType.WHEEL,\n this.boundHandleBrowserEvent_\n );\n this.mapBrowserEventHandler_.dispose();\n this.mapBrowserEventHandler_ = null;\n removeNode(this.viewport_);\n }\n\n if (this.targetElement_) {\n this.resizeObserver_.unobserve(this.targetElement_);\n const rootNode = this.targetElement_.getRootNode();\n if (rootNode instanceof ShadowRoot) {\n this.resizeObserver_.unobserve(rootNode.host);\n }\n this.setSize(undefined);\n }\n\n // target may be undefined, null, a string or an Element.\n // If it's a string we convert it to an Element before proceeding.\n // If it's not now an Element we remove the viewport from the DOM.\n // If it's an Element we append the viewport element to it.\n\n const target = this.getTarget();\n const targetElement =\n typeof target === 'string' ? document.getElementById(target) : target;\n this.targetElement_ = targetElement;\n if (!targetElement) {\n if (this.renderer_) {\n clearTimeout(this.postRenderTimeoutHandle_);\n this.postRenderTimeoutHandle_ = undefined;\n this.postRenderFunctions_.length = 0;\n this.renderer_.dispose();\n this.renderer_ = null;\n }\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n this.animationDelayKey_ = undefined;\n }\n } else {\n targetElement.appendChild(this.viewport_);\n if (!this.renderer_) {\n this.renderer_ = new CompositeMapRenderer(this);\n }\n\n this.mapBrowserEventHandler_ = new MapBrowserEventHandler(\n this,\n this.moveTolerance_\n );\n for (const key in MapBrowserEventType) {\n this.mapBrowserEventHandler_.addEventListener(\n MapBrowserEventType[key],\n this.handleMapBrowserEvent.bind(this)\n );\n }\n this.viewport_.addEventListener(\n EventType.CONTEXTMENU,\n this.boundHandleBrowserEvent_,\n false\n );\n this.viewport_.addEventListener(\n EventType.WHEEL,\n this.boundHandleBrowserEvent_,\n PASSIVE_EVENT_LISTENERS ? {passive: false} : false\n );\n\n const keyboardEventTarget = !this.keyboardEventTarget_\n ? targetElement\n : this.keyboardEventTarget_;\n this.targetChangeHandlerKeys_ = [\n listen(\n keyboardEventTarget,\n EventType.KEYDOWN,\n this.handleBrowserEvent,\n this\n ),\n listen(\n keyboardEventTarget,\n EventType.KEYPRESS,\n this.handleBrowserEvent,\n this\n ),\n ];\n const rootNode = targetElement.getRootNode();\n if (rootNode instanceof ShadowRoot) {\n this.resizeObserver_.observe(rootNode.host);\n }\n this.resizeObserver_.observe(targetElement);\n }\n\n this.updateSize();\n // updateSize calls setSize, so no need to call this.render\n // ourselves here.\n }\n\n /**\n * @private\n */\n handleTileChange_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleViewPropertyChanged_() {\n this.render();\n }\n\n /**\n * @private\n */\n handleViewChanged_() {\n if (this.viewPropertyListenerKey_) {\n unlistenByKey(this.viewPropertyListenerKey_);\n this.viewPropertyListenerKey_ = null;\n }\n if (this.viewChangeListenerKey_) {\n unlistenByKey(this.viewChangeListenerKey_);\n this.viewChangeListenerKey_ = null;\n }\n const view = this.getView();\n if (view) {\n this.updateViewportSize_(this.getSize());\n\n this.viewPropertyListenerKey_ = listen(\n view,\n ObjectEventType.PROPERTYCHANGE,\n this.handleViewPropertyChanged_,\n this\n );\n this.viewChangeListenerKey_ = listen(\n view,\n EventType.CHANGE,\n this.handleViewPropertyChanged_,\n this\n );\n\n view.resolveConstraints(0);\n }\n this.render();\n }\n\n /**\n * @private\n */\n handleLayerGroupChanged_() {\n if (this.layerGroupPropertyListenerKeys_) {\n this.layerGroupPropertyListenerKeys_.forEach(unlistenByKey);\n this.layerGroupPropertyListenerKeys_ = null;\n }\n const layerGroup = this.getLayerGroup();\n if (layerGroup) {\n this.handleLayerAdd_(new GroupEvent('addlayer', layerGroup));\n this.layerGroupPropertyListenerKeys_ = [\n listen(layerGroup, ObjectEventType.PROPERTYCHANGE, this.render, this),\n listen(layerGroup, EventType.CHANGE, this.render, this),\n listen(layerGroup, 'addlayer', this.handleLayerAdd_, this),\n listen(layerGroup, 'removelayer', this.handleLayerRemove_, this),\n ];\n }\n this.render();\n }\n\n /**\n * @return {boolean} Is rendered.\n */\n isRendered() {\n return !!this.frameState_;\n }\n\n /**\n * @private\n */\n animationDelay_() {\n this.animationDelayKey_ = undefined;\n this.renderFrame_(Date.now());\n }\n\n /**\n * Requests an immediate render in a synchronous manner.\n * @api\n */\n renderSync() {\n if (this.animationDelayKey_) {\n cancelAnimationFrame(this.animationDelayKey_);\n }\n this.animationDelay_();\n }\n\n /**\n * Redraws all text after new fonts have loaded\n */\n redrawText() {\n const layerStates = this.getLayerGroup().getLayerStatesArray();\n for (let i = 0, ii = layerStates.length; i < ii; ++i) {\n const layer = layerStates[i].layer;\n if (layer.hasRenderer()) {\n layer.getRenderer().handleFontsChanged();\n }\n }\n }\n\n /**\n * Request a map rendering (at the next animation frame).\n * @api\n */\n render() {\n if (this.renderer_ && this.animationDelayKey_ === undefined) {\n this.animationDelayKey_ = requestAnimationFrame(this.animationDelay_);\n }\n }\n\n /**\n * This method is meant to be called in a layer's `prerender` listener. It causes all collected\n * declutter items to be decluttered and rendered on the map immediately. This is useful for\n * layers that need to appear entirely above the decluttered items of layers lower in the layer\n * stack.\n * @api\n */\n flushDeclutterItems() {\n const frameState = this.frameState_;\n if (!frameState) {\n return;\n }\n this.renderer_.flushDeclutterItems(frameState);\n }\n\n /**\n * Remove the given control from the map.\n * @param {import(\"./control/Control.js\").default} control Control.\n * @return {import(\"./control/Control.js\").default|undefined} The removed control (or undefined\n * if the control was not found).\n * @api\n */\n removeControl(control) {\n return this.getControls().remove(control);\n }\n\n /**\n * Remove the given interaction from the map.\n * @param {import(\"./interaction/Interaction.js\").default} interaction Interaction to remove.\n * @return {import(\"./interaction/Interaction.js\").default|undefined} The removed interaction (or\n * undefined if the interaction was not found).\n * @api\n */\n removeInteraction(interaction) {\n return this.getInteractions().remove(interaction);\n }\n\n /**\n * Removes the given layer from the map.\n * @param {import(\"./layer/Base.js\").default} layer Layer.\n * @return {import(\"./layer/Base.js\").default|undefined} The removed layer (or undefined if the\n * layer was not found).\n * @api\n */\n removeLayer(layer) {\n const layers = this.getLayerGroup().getLayers();\n return layers.remove(layer);\n }\n\n /**\n * @param {import(\"./layer/Group.js\").GroupEvent} event The layer remove event.\n * @private\n */\n handleLayerRemove_(event) {\n removeLayerMapProperty(event.layer);\n }\n\n /**\n * Remove the given overlay from the map.\n * @param {import(\"./Overlay.js\").default} overlay Overlay.\n * @return {import(\"./Overlay.js\").default|undefined} The removed overlay (or undefined\n * if the overlay was not found).\n * @api\n */\n removeOverlay(overlay) {\n return this.getOverlays().remove(overlay);\n }\n\n /**\n * @param {number} time Time.\n * @private\n */\n renderFrame_(time) {\n const size = this.getSize();\n const view = this.getView();\n const previousFrameState = this.frameState_;\n /** @type {?FrameState} */\n let frameState = null;\n if (size !== undefined && hasArea(size) && view && view.isDef()) {\n const viewHints = view.getHints(\n this.frameState_ ? this.frameState_.viewHints : undefined\n );\n const viewState = view.getState();\n frameState = {\n animate: false,\n coordinateToPixelTransform: this.coordinateToPixelTransform_,\n declutterTree: null,\n extent: getForViewAndSize(\n viewState.center,\n viewState.resolution,\n viewState.rotation,\n size\n ),\n index: this.frameIndex_++,\n layerIndex: 0,\n layerStatesArray: this.getLayerGroup().getLayerStatesArray(),\n pixelRatio: this.pixelRatio_,\n pixelToCoordinateTransform: this.pixelToCoordinateTransform_,\n postRenderFunctions: [],\n size: size,\n tileQueue: this.tileQueue_,\n time: time,\n usedTiles: {},\n viewState: viewState,\n viewHints: viewHints,\n wantedTiles: {},\n mapId: getUid(this),\n renderTargets: {},\n };\n if (viewState.nextCenter && viewState.nextResolution) {\n const rotation = isNaN(viewState.nextRotation)\n ? viewState.rotation\n : viewState.nextRotation;\n\n frameState.nextExtent = getForViewAndSize(\n viewState.nextCenter,\n viewState.nextResolution,\n rotation,\n size\n );\n }\n }\n\n this.frameState_ = frameState;\n this.renderer_.renderFrame(frameState);\n\n if (frameState) {\n if (frameState.animate) {\n this.render();\n }\n Array.prototype.push.apply(\n this.postRenderFunctions_,\n frameState.postRenderFunctions\n );\n\n if (previousFrameState) {\n const moveStart =\n !this.previousExtent_ ||\n (!isEmpty(this.previousExtent_) &&\n !equalsExtent(frameState.extent, this.previousExtent_));\n if (moveStart) {\n this.dispatchEvent(\n new MapEvent(MapEventType.MOVESTART, this, previousFrameState)\n );\n this.previousExtent_ = createOrUpdateEmpty(this.previousExtent_);\n }\n }\n\n const idle =\n this.previousExtent_ &&\n !frameState.viewHints[ViewHint.ANIMATING] &&\n !frameState.viewHints[ViewHint.INTERACTING] &&\n !equalsExtent(frameState.extent, this.previousExtent_);\n\n if (idle) {\n this.dispatchEvent(\n new MapEvent(MapEventType.MOVEEND, this, frameState)\n );\n clone(frameState.extent, this.previousExtent_);\n }\n }\n\n this.dispatchEvent(new MapEvent(MapEventType.POSTRENDER, this, frameState));\n\n this.renderComplete_ =\n this.hasListener(MapEventType.LOADSTART) ||\n this.hasListener(MapEventType.LOADEND) ||\n this.hasListener(RenderEventType.RENDERCOMPLETE)\n ? !this.tileQueue_.getTilesLoading() &&\n !this.tileQueue_.getCount() &&\n !this.getLoadingOrNotReady()\n : undefined;\n\n if (!this.postRenderTimeoutHandle_) {\n this.postRenderTimeoutHandle_ = setTimeout(() => {\n this.postRenderTimeoutHandle_ = undefined;\n this.handlePostRender();\n }, 0);\n }\n }\n\n /**\n * Sets the layergroup of this map.\n * @param {LayerGroup} layerGroup A layer group containing the layers in this map.\n * @observable\n * @api\n */\n setLayerGroup(layerGroup) {\n const oldLayerGroup = this.getLayerGroup();\n if (oldLayerGroup) {\n this.handleLayerRemove_(new GroupEvent('removelayer', oldLayerGroup));\n }\n this.set(MapProperty.LAYERGROUP, layerGroup);\n }\n\n /**\n * Set the size of this map.\n * @param {import(\"./size.js\").Size|undefined} size The size in pixels of the map in the DOM.\n * @observable\n * @api\n */\n setSize(size) {\n this.set(MapProperty.SIZE, size);\n }\n\n /**\n * Set the target element to render this map into.\n * @param {HTMLElement|string} [target] The Element or id of the Element\n * that the map is rendered in.\n * @observable\n * @api\n */\n setTarget(target) {\n this.set(MapProperty.TARGET, target);\n }\n\n /**\n * Set the view for this map.\n * @param {View|Promise} view The view that controls this map.\n * It is also possible to pass a promise that resolves to options for constructing a view. This\n * alternative allows view properties to be resolved by sources or other components that load\n * view-related metadata.\n * @observable\n * @api\n */\n setView(view) {\n if (!view || view instanceof View) {\n this.set(MapProperty.VIEW, view);\n return;\n }\n this.set(MapProperty.VIEW, new View());\n\n const map = this;\n view.then(function (viewOptions) {\n map.setView(new View(viewOptions));\n });\n }\n\n /**\n * Force a recalculation of the map viewport size. This should be called when\n * third-party code changes the size of the map viewport.\n * @api\n */\n updateSize() {\n const targetElement = this.getTargetElement();\n\n let size = undefined;\n if (targetElement) {\n const computedStyle = getComputedStyle(targetElement);\n const width =\n targetElement.offsetWidth -\n parseFloat(computedStyle['borderLeftWidth']) -\n parseFloat(computedStyle['paddingLeft']) -\n parseFloat(computedStyle['paddingRight']) -\n parseFloat(computedStyle['borderRightWidth']);\n const height =\n targetElement.offsetHeight -\n parseFloat(computedStyle['borderTopWidth']) -\n parseFloat(computedStyle['paddingTop']) -\n parseFloat(computedStyle['paddingBottom']) -\n parseFloat(computedStyle['borderBottomWidth']);\n if (!isNaN(width) && !isNaN(height)) {\n size = [width, height];\n if (\n !hasArea(size) &&\n !!(\n targetElement.offsetWidth ||\n targetElement.offsetHeight ||\n targetElement.getClientRects().length\n )\n ) {\n warn(\n \"No map visible because the map container's width or height are 0.\"\n );\n }\n }\n }\n\n const oldSize = this.getSize();\n if (size && (!oldSize || !equals(size, oldSize))) {\n this.setSize(size);\n this.updateViewportSize_(size);\n }\n }\n\n /**\n * Recomputes the viewport size and save it on the view object (if any)\n * @param {import(\"./size.js\").Size|undefined} size The size.\n * @private\n */\n updateViewportSize_(size) {\n const view = this.getView();\n if (view) {\n view.setViewportSize(size);\n }\n }\n}\n\n/**\n * @param {MapOptions} options Map options.\n * @return {MapOptionsInternal} Internal map options.\n */\nfunction createOptionsInternal(options) {\n /**\n * @type {HTMLElement|Document}\n */\n let keyboardEventTarget = null;\n if (options.keyboardEventTarget !== undefined) {\n keyboardEventTarget =\n typeof options.keyboardEventTarget === 'string'\n ? document.getElementById(options.keyboardEventTarget)\n : options.keyboardEventTarget;\n }\n\n /**\n * @type {Object}\n */\n const values = {};\n\n const layerGroup =\n options.layers &&\n typeof (/** @type {?} */ (options.layers).getLayers) === 'function'\n ? /** @type {LayerGroup} */ (options.layers)\n : new LayerGroup({\n layers:\n /** @type {Collection|Array} */ (\n options.layers\n ),\n });\n values[MapProperty.LAYERGROUP] = layerGroup;\n\n values[MapProperty.TARGET] = options.target;\n\n values[MapProperty.VIEW] =\n options.view instanceof View ? options.view : new View();\n\n /** @type {Collection} */\n let controls;\n if (options.controls !== undefined) {\n if (Array.isArray(options.controls)) {\n controls = new Collection(options.controls.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.controls).getArray) === 'function',\n 'Expected `controls` to be an array or an `ol/Collection.js`'\n );\n controls = options.controls;\n }\n }\n\n /** @type {Collection} */\n let interactions;\n if (options.interactions !== undefined) {\n if (Array.isArray(options.interactions)) {\n interactions = new Collection(options.interactions.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.interactions).getArray) ===\n 'function',\n 'Expected `interactions` to be an array or an `ol/Collection.js`'\n );\n interactions = options.interactions;\n }\n }\n\n /** @type {Collection} */\n let overlays;\n if (options.overlays !== undefined) {\n if (Array.isArray(options.overlays)) {\n overlays = new Collection(options.overlays.slice());\n } else {\n assert(\n typeof (/** @type {?} */ (options.overlays).getArray) === 'function',\n 'Expected `overlays` to be an array or an `ol/Collection.js`'\n );\n overlays = options.overlays;\n }\n } else {\n overlays = new Collection();\n }\n\n return {\n controls: controls,\n interactions: interactions,\n keyboardEventTarget: keyboardEventTarget,\n overlays: overlays,\n values: values,\n };\n}\nexport default Map;\n","/**\n * @module ol/MapBrowserEvent\n */\nimport MapEvent from './MapEvent.js';\n\n/**\n * @classdesc\n * Events emitted as map browser events are instances of this type.\n * See {@link module:ol/Map~Map} for which events trigger a map browser event.\n * @template {UIEvent} EVENT\n */\nclass MapBrowserEvent extends MapEvent {\n /**\n * @param {string} type Event type.\n * @param {import(\"./Map.js\").default} map Map.\n * @param {EVENT} originalEvent Original event.\n * @param {boolean} [dragging] Is the map currently being dragged?\n * @param {import(\"./Map.js\").FrameState} [frameState] Frame state.\n * @param {Array} [activePointers] Active pointers.\n */\n constructor(type, map, originalEvent, dragging, frameState, activePointers) {\n super(type, map, frameState);\n\n /**\n * The original browser event.\n * @const\n * @type {EVENT}\n * @api\n */\n this.originalEvent = originalEvent;\n\n /**\n * The map pixel relative to the viewport corresponding to the original browser event.\n * @type {?import(\"./pixel.js\").Pixel}\n */\n this.pixel_ = null;\n\n /**\n * The coordinate in the user projection corresponding to the original browser event.\n * @type {?import(\"./coordinate.js\").Coordinate}\n */\n this.coordinate_ = null;\n\n /**\n * Indicates if the map is currently being dragged. Only set for\n * `POINTERDRAG` and `POINTERMOVE` events. Default is `false`.\n *\n * @type {boolean}\n * @api\n */\n this.dragging = dragging !== undefined ? dragging : false;\n\n /**\n * @type {Array|undefined}\n */\n this.activePointers = activePointers;\n }\n\n /**\n * The map pixel relative to the viewport corresponding to the original event.\n * @type {import(\"./pixel.js\").Pixel}\n * @api\n */\n get pixel() {\n if (!this.pixel_) {\n this.pixel_ = this.map.getEventPixel(this.originalEvent);\n }\n return this.pixel_;\n }\n set pixel(pixel) {\n this.pixel_ = pixel;\n }\n\n /**\n * The coordinate corresponding to the original browser event. This will be in the user\n * projection if one is set. Otherwise it will be in the view projection.\n * @type {import(\"./coordinate.js\").Coordinate}\n * @api\n */\n get coordinate() {\n if (!this.coordinate_) {\n this.coordinate_ = this.map.getCoordinateFromPixel(this.pixel);\n }\n return this.coordinate_;\n }\n set coordinate(coordinate) {\n this.coordinate_ = coordinate;\n }\n\n /**\n * Prevents the default browser action.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.preventDefault.\n * @api\n */\n preventDefault() {\n super.preventDefault();\n if ('preventDefault' in this.originalEvent) {\n /** @type {UIEvent} */ (this.originalEvent).preventDefault();\n }\n }\n\n /**\n * Prevents further propagation of the current event.\n * See https://developer.mozilla.org/en-US/docs/Web/API/event.stopPropagation.\n * @api\n */\n stopPropagation() {\n super.stopPropagation();\n if ('stopPropagation' in this.originalEvent) {\n /** @type {UIEvent} */ (this.originalEvent).stopPropagation();\n }\n }\n}\n\nexport default MapBrowserEvent;\n","/**\n * @module ol/MapBrowserEventType\n */\nimport EventType from './events/EventType.js';\n\n/**\n * Constants for event names.\n * @enum {string}\n */\nexport default {\n /**\n * A true single click with no dragging and no double click. Note that this\n * event is delayed by 250 ms to ensure that it is not a double click.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#singleclick\n * @api\n */\n SINGLECLICK: 'singleclick',\n\n /**\n * A click with no dragging. A double click will fire two of this.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#click\n * @api\n */\n CLICK: EventType.CLICK,\n\n /**\n * A true double click, with no dragging.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#dblclick\n * @api\n */\n DBLCLICK: EventType.DBLCLICK,\n\n /**\n * Triggered when a pointer is dragged.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointerdrag\n * @api\n */\n POINTERDRAG: 'pointerdrag',\n\n /**\n * Triggered when a pointer is moved. Note that on touch devices this is\n * triggered when the map is panned, so is not the same as mousemove.\n * @event module:ol/MapBrowserEvent~MapBrowserEvent#pointermove\n * @api\n */\n POINTERMOVE: 'pointermove',\n\n POINTERDOWN: 'pointerdown',\n POINTERUP: 'pointerup',\n POINTEROVER: 'pointerover',\n POINTEROUT: 'pointerout',\n POINTERENTER: 'pointerenter',\n POINTERLEAVE: 'pointerleave',\n POINTERCANCEL: 'pointercancel',\n};\n\n/***\n * @typedef {'singleclick'|'click'|'dblclick'|'pointerdrag'|'pointermove'} Types\n */\n","/**\n * @module ol/MapEvent\n */\nimport Event from './events/Event.js';\n\n/**\n * @classdesc\n * Events emitted as map events are instances of this type.\n * See {@link module:ol/Map~Map} for which events trigger a map event.\n */\nclass MapEvent extends Event {\n /**\n * @param {string} type Event type.\n * @param {import(\"./Map.js\").default} map Map.\n * @param {?import(\"./Map.js\").FrameState} [frameState] Frame state.\n */\n constructor(type, map, frameState) {\n super(type);\n\n /**\n * The map where the event occurred.\n * @type {import(\"./Map.js\").default}\n * @api\n */\n this.map = map;\n\n /**\n * The frame state at the time of the event.\n * @type {?import(\"./Map.js\").FrameState}\n * @api\n */\n this.frameState = frameState !== undefined ? frameState : null;\n }\n}\n\nexport default MapEvent;\n","/**\n * @module ol/MapEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered after a map frame is rendered.\n * @event module:ol/MapEvent~MapEvent#postrender\n * @api\n */\n POSTRENDER: 'postrender',\n\n /**\n * Triggered when the map starts moving.\n * @event module:ol/MapEvent~MapEvent#movestart\n * @api\n */\n MOVESTART: 'movestart',\n\n /**\n * Triggered after the map is moved.\n * @event module:ol/MapEvent~MapEvent#moveend\n * @api\n */\n MOVEEND: 'moveend',\n\n /**\n * Triggered when loading of additional map data (tiles, images, features) starts.\n * @event module:ol/MapEvent~MapEvent#loadstart\n * @api\n */\n LOADSTART: 'loadstart',\n\n /**\n * Triggered when loading of additional map data has completed.\n * @event module:ol/MapEvent~MapEvent#loadend\n * @api\n */\n LOADEND: 'loadend',\n};\n\n/***\n * @typedef {'postrender'|'movestart'|'moveend'|'loadstart'|'loadend'} Types\n */\n","/**\n * @module ol/MapProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n LAYERGROUP: 'layergroup',\n SIZE: 'size',\n TARGET: 'target',\n VIEW: 'view',\n};\n","/**\n * @module ol/Object\n */\nimport Event from './events/Event.js';\nimport ObjectEventType from './ObjectEventType.js';\nimport Observable from './Observable.js';\nimport {getUid} from './util.js';\nimport {isEmpty} from './obj.js';\n\n/**\n * @classdesc\n * Events emitted by {@link module:ol/Object~BaseObject} instances are instances of this type.\n */\nexport class ObjectEvent extends Event {\n /**\n * @param {string} type The event type.\n * @param {string} key The property name.\n * @param {*} oldValue The old value for `key`.\n */\n constructor(type, key, oldValue) {\n super(type);\n\n /**\n * The name of the property whose value is changing.\n * @type {string}\n * @api\n */\n this.key = key;\n\n /**\n * The old value. To get the new value use `e.target.get(e.key)` where\n * `e` is the event object.\n * @type {*}\n * @api\n */\n this.oldValue = oldValue;\n }\n}\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} ObjectOnSignature\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Most non-trivial classes inherit from this.\n *\n * This extends {@link module:ol/Observable~Observable} with observable\n * properties, where each property is observable as well as the object as a\n * whole.\n *\n * Classes that inherit from this have pre-defined properties, to which you can\n * add your owns. The pre-defined properties are listed in this documentation as\n * 'Observable Properties', and have their own accessors; for example,\n * {@link module:ol/Map~Map} has a `target` property, accessed with\n * `getTarget()` and changed with `setTarget()`. Not all properties are however\n * settable. There are also general-purpose accessors `get()` and `set()`. For\n * example, `get('target')` is equivalent to `getTarget()`.\n *\n * The `set` accessors trigger a change event, and you can monitor this by\n * registering a listener. For example, {@link module:ol/View~View} has a\n * `center` property, so `view.on('change:center', function(evt) {...});` would\n * call the function whenever the value of the center property changes. Within\n * the function, `evt.target` would be the view, so `evt.target.getCenter()`\n * would return the new center.\n *\n * You can add your own observable properties with\n * `object.set('prop', 'value')`, and retrieve that with `object.get('prop')`.\n * You can listen for changes on that property value with\n * `object.on('change:prop', listener)`. You can get a list of all\n * properties with {@link module:ol/Object~BaseObject#getProperties}.\n *\n * Note that the observable properties are separate from standard JS properties.\n * You can, for example, give your map object a title with\n * `map.title='New title'` and with `map.set('title', 'Another title')`. The\n * first will be a `hasOwnProperty`; the second will appear in\n * `getProperties()`. Only the second is observable.\n *\n * Properties can be deleted by using the unset method. E.g.\n * object.unset('foo').\n *\n * @fires ObjectEvent\n * @api\n */\nclass BaseObject extends Observable {\n /**\n * @param {Object} [values] An object with key-value pairs.\n */\n constructor(values) {\n super();\n\n /***\n * @type {ObjectOnSignature}\n */\n this.on;\n\n /***\n * @type {ObjectOnSignature}\n */\n this.once;\n\n /***\n * @type {ObjectOnSignature}\n */\n this.un;\n\n // Call {@link module:ol/util.getUid} to ensure that the order of objects' ids is\n // the same as the order in which they were created. This also helps to\n // ensure that object properties are always added in the same order, which\n // helps many JavaScript engines generate faster code.\n getUid(this);\n\n /**\n * @private\n * @type {Object|null}\n */\n this.values_ = null;\n\n if (values !== undefined) {\n this.setProperties(values);\n }\n }\n\n /**\n * Gets a value.\n * @param {string} key Key name.\n * @return {*} Value.\n * @api\n */\n get(key) {\n let value;\n if (this.values_ && this.values_.hasOwnProperty(key)) {\n value = this.values_[key];\n }\n return value;\n }\n\n /**\n * Get a list of object property names.\n * @return {Array} List of property names.\n * @api\n */\n getKeys() {\n return (this.values_ && Object.keys(this.values_)) || [];\n }\n\n /**\n * Get an object of all property names and values.\n * @return {Object} Object.\n * @api\n */\n getProperties() {\n return (this.values_ && Object.assign({}, this.values_)) || {};\n }\n\n /**\n * Get an object of all property names and values.\n * @return {Object?} Object.\n */\n getPropertiesInternal() {\n return this.values_;\n }\n\n /**\n * @return {boolean} The object has properties.\n */\n hasProperties() {\n return !!this.values_;\n }\n\n /**\n * @param {string} key Key name.\n * @param {*} oldValue Old value.\n */\n notify(key, oldValue) {\n let eventType;\n eventType = `change:${key}`;\n if (this.hasListener(eventType)) {\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n }\n eventType = ObjectEventType.PROPERTYCHANGE;\n if (this.hasListener(eventType)) {\n this.dispatchEvent(new ObjectEvent(eventType, key, oldValue));\n }\n }\n\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n addChangeListener(key, listener) {\n this.addEventListener(`change:${key}`, listener);\n }\n\n /**\n * @param {string} key Key name.\n * @param {import(\"./events.js\").Listener} listener Listener.\n */\n removeChangeListener(key, listener) {\n this.removeEventListener(`change:${key}`, listener);\n }\n\n /**\n * Sets a value.\n * @param {string} key Key name.\n * @param {*} value Value.\n * @param {boolean} [silent] Update without triggering an event.\n * @api\n */\n set(key, value, silent) {\n const values = this.values_ || (this.values_ = {});\n if (silent) {\n values[key] = value;\n } else {\n const oldValue = values[key];\n values[key] = value;\n if (oldValue !== value) {\n this.notify(key, oldValue);\n }\n }\n }\n\n /**\n * Sets a collection of key-value pairs. Note that this changes any existing\n * properties and adds new ones (it does not remove any existing properties).\n * @param {Object} values Values.\n * @param {boolean} [silent] Update without triggering an event.\n * @api\n */\n setProperties(values, silent) {\n for (const key in values) {\n this.set(key, values[key], silent);\n }\n }\n\n /**\n * Apply any properties from another object without triggering events.\n * @param {BaseObject} source The source object.\n * @protected\n */\n applyProperties(source) {\n if (!source.values_) {\n return;\n }\n Object.assign(this.values_ || (this.values_ = {}), source.values_);\n }\n\n /**\n * Unsets a property.\n * @param {string} key Key name.\n * @param {boolean} [silent] Unset without triggering an event.\n * @api\n */\n unset(key, silent) {\n if (this.values_ && key in this.values_) {\n const oldValue = this.values_[key];\n delete this.values_[key];\n if (isEmpty(this.values_)) {\n this.values_ = null;\n }\n if (!silent) {\n this.notify(key, oldValue);\n }\n }\n }\n}\n\nexport default BaseObject;\n","/**\n * @module ol/ObjectEventType\n */\n\n/**\n * @enum {string}\n */\nexport default {\n /**\n * Triggered when a property is changed.\n * @event module:ol/Object.ObjectEvent#propertychange\n * @api\n */\n PROPERTYCHANGE: 'propertychange',\n};\n\n/**\n * @typedef {'propertychange'} Types\n */\n","/**\n * @module ol/Observable\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport {listen, listenOnce, unlistenByKey} from './events.js';\n\n/***\n * @template {string} Type\n * @template {Event|import(\"./events/Event.js\").default} EventClass\n * @template Return\n * @typedef {(type: Type, listener: (event: EventClass) => ?) => Return} OnSignature\n */\n\n/***\n * @template {string} Type\n * @template Return\n * @typedef {(type: Type[], listener: (event: Event|import(\"./events/Event\").default) => ?) => Return extends void ? void : Return[]} CombinedOnSignature\n */\n\n/**\n * @typedef {'change'|'error'} EventTypes\n */\n\n/***\n * @template Return\n * @typedef {OnSignature & CombinedOnSignature} ObservableOnSignature\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * An event target providing convenient methods for listener registration\n * and unregistration. A generic `change` event is always available through\n * {@link module:ol/Observable~Observable#changed}.\n *\n * @fires import(\"./events/Event.js\").default\n * @api\n */\nclass Observable extends EventTarget {\n constructor() {\n super();\n\n this.on =\n /** @type {ObservableOnSignature} */ (\n this.onInternal\n );\n\n this.once =\n /** @type {ObservableOnSignature} */ (\n this.onceInternal\n );\n\n this.un = /** @type {ObservableOnSignature} */ (this.unInternal);\n\n /**\n * @private\n * @type {number}\n */\n this.revision_ = 0;\n }\n\n /**\n * Increases the revision counter and dispatches a 'change' event.\n * @api\n */\n changed() {\n ++this.revision_;\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * Get the version number for this object. Each time the object is modified,\n * its version number will be incremented.\n * @return {number} Revision.\n * @api\n */\n getRevision() {\n return this.revision_;\n }\n\n /**\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n onInternal(type, listener) {\n if (Array.isArray(type)) {\n const len = type.length;\n const keys = new Array(len);\n for (let i = 0; i < len; ++i) {\n keys[i] = listen(this, type[i], listener);\n }\n return keys;\n }\n return listen(this, /** @type {string} */ (type), listener);\n }\n\n /**\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @return {import(\"./events.js\").EventsKey|Array} Event key.\n * @protected\n */\n onceInternal(type, listener) {\n let key;\n if (Array.isArray(type)) {\n const len = type.length;\n key = new Array(len);\n for (let i = 0; i < len; ++i) {\n key[i] = listenOnce(this, type[i], listener);\n }\n } else {\n key = listenOnce(this, /** @type {string} */ (type), listener);\n }\n /** @type {Object} */ (listener).ol_key = key;\n return key;\n }\n\n /**\n * Unlisten for a certain type of event.\n * @param {string|Array} type Type.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener Listener.\n * @protected\n */\n unInternal(type, listener) {\n const key = /** @type {Object} */ (listener).ol_key;\n if (key) {\n unByKey(key);\n } else if (Array.isArray(type)) {\n for (let i = 0, ii = type.length; i < ii; ++i) {\n this.removeEventListener(type[i], listener);\n }\n } else {\n this.removeEventListener(type, listener);\n }\n }\n}\n\n/**\n * Listen for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.on;\n\n/**\n * Listen once for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @return {import(\"./events.js\").EventsKey|Array} Unique key for the listener. If\n * called with an array of event types as the first argument, the return\n * will be an array of keys.\n * @api\n */\nObservable.prototype.once;\n\n/**\n * Unlisten for a certain type of event.\n * @function\n * @param {string|Array} type The event type or array of event types.\n * @param {function((Event|import(\"./events/Event\").default)): ?} listener The listener function.\n * @api\n */\nObservable.prototype.un;\n\n/**\n * Removes an event listener using the key returned by `on()` or `once()`.\n * @param {import(\"./events.js\").EventsKey|Array} key The key returned by `on()`\n * or `once()` (or an array of keys).\n * @api\n */\nexport function unByKey(key) {\n if (Array.isArray(key)) {\n for (let i = 0, ii = key.length; i < ii; ++i) {\n unlistenByKey(key[i]);\n }\n } else {\n unlistenByKey(/** @type {import(\"./events.js\").EventsKey} */ (key));\n }\n}\n\nexport default Observable;\n","/**\n * @module ol/Overlay\n */\nimport BaseObject from './Object.js';\nimport MapEventType from './MapEventType.js';\nimport {CLASS_SELECTABLE} from './css.js';\nimport {containsExtent} from './extent.js';\nimport {listen, unlistenByKey} from './events.js';\nimport {outerHeight, outerWidth, removeChildren, removeNode} from './dom.js';\n\n/**\n * @typedef {'bottom-left' | 'bottom-center' | 'bottom-right' | 'center-left' | 'center-center' | 'center-right' | 'top-left' | 'top-center' | 'top-right'} Positioning\n * The overlay position: `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, or `'top-right'`.\n */\n\n/**\n * @typedef {Object} Options\n * @property {number|string} [id] Set the overlay id. The overlay id can be used\n * with the {@link module:ol/Map~Map#getOverlayById} method.\n * @property {HTMLElement} [element] The overlay element.\n * @property {Array} [offset=[0, 0]] Offsets in pixels used when positioning\n * the overlay. The first element in the\n * array is the horizontal offset. A positive value shifts the overlay right.\n * The second element in the array is the vertical offset. A positive value\n * shifts the overlay down.\n * @property {import(\"./coordinate.js\").Coordinate} [position] The overlay position\n * in map projection.\n * @property {Positioning} [positioning='top-left'] Defines how\n * the overlay is actually positioned with respect to its `position` property.\n * Possible values are `'bottom-left'`, `'bottom-center'`, `'bottom-right'`,\n * `'center-left'`, `'center-center'`, `'center-right'`, `'top-left'`,\n * `'top-center'`, and `'top-right'`.\n * @property {boolean} [stopEvent=true] Whether event propagation to the map\n * viewport should be stopped. If `true` the overlay is placed in the same\n * container as that of the controls (CSS class name\n * `ol-overlaycontainer-stopevent`); if `false` it is placed in the container\n * with CSS class name specified by the `className` property.\n * @property {boolean} [insertFirst=true] Whether the overlay is inserted first\n * in the overlay container, or appended. If the overlay is placed in the same\n * container as that of the controls (see the `stopEvent` option) you will\n * probably set `insertFirst` to `true` so the overlay is displayed below the\n * controls.\n * @property {PanIntoViewOptions|boolean} [autoPan=false] Pan the map when calling\n * `setPosition`, so that the overlay is entirely visible in the current viewport.\n * @property {string} [className='ol-overlay-container ol-selectable'] CSS class\n * name.\n */\n\n/**\n * @typedef {Object} PanOptions\n * @property {number} [duration=1000] The duration of the animation in\n * milliseconds.\n * @property {function(number):number} [easing] The easing function to use. Can\n * be one from {@link module:ol/easing} or a custom function.\n * Default is {@link module:ol/easing.inAndOut}.\n */\n\n/**\n * @typedef {Object} PanIntoViewOptions\n * @property {PanOptions} [animation={}] The animation parameters for the pan\n * @property {number} [margin=20] The margin (in pixels) between the\n * overlay and the borders of the map when panning into view.\n */\n\n/**\n * @enum {string}\n * @protected\n */\nconst Property = {\n ELEMENT: 'element',\n MAP: 'map',\n OFFSET: 'offset',\n POSITION: 'position',\n POSITIONING: 'positioning',\n};\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:element'|'change:map'|'change:offset'|'change:position'|\n * 'change:positioning'} OverlayObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} OverlayOnSignature\n */\n\n/**\n * @classdesc\n * An element to be displayed over the map and attached to a single map\n * location. Like {@link module:ol/control/Control~Control}, Overlays are\n * visible widgets. Unlike Controls, they are not in a fixed position on the\n * screen, but are tied to a geographical coordinate, so panning the map will\n * move an Overlay but not a Control.\n *\n * Example:\n *\n * import Overlay from 'ol/Overlay.js';\n *\n * // ...\n * const popup = new Overlay({\n * element: document.getElementById('popup'),\n * });\n * popup.setPosition(coordinate);\n * map.addOverlay(popup);\n *\n * @api\n */\nclass Overlay extends BaseObject {\n /**\n * @param {Options} options Overlay options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {OverlayOnSignature}\n */\n this.on;\n\n /***\n * @type {OverlayOnSignature}\n */\n this.once;\n\n /***\n * @type {OverlayOnSignature}\n */\n this.un;\n\n /**\n * @protected\n * @type {Options}\n */\n this.options = options;\n\n /**\n * @protected\n * @type {number|string|undefined}\n */\n this.id = options.id;\n\n /**\n * @protected\n * @type {boolean}\n */\n this.insertFirst =\n options.insertFirst !== undefined ? options.insertFirst : true;\n\n /**\n * @protected\n * @type {boolean}\n */\n this.stopEvent = options.stopEvent !== undefined ? options.stopEvent : true;\n\n /**\n * @protected\n * @type {HTMLElement}\n */\n this.element = document.createElement('div');\n this.element.className =\n options.className !== undefined\n ? options.className\n : 'ol-overlay-container ' + CLASS_SELECTABLE;\n this.element.style.position = 'absolute';\n this.element.style.pointerEvents = 'auto';\n\n /**\n * @protected\n * @type {PanIntoViewOptions|undefined}\n */\n this.autoPan = options.autoPan === true ? {} : options.autoPan || undefined;\n\n /**\n * @protected\n * @type {{transform_: string,\n * visible: boolean}}\n */\n this.rendered = {\n transform_: '',\n visible: true,\n };\n\n /**\n * @protected\n * @type {?import(\"./events.js\").EventsKey}\n */\n this.mapPostrenderListenerKey = null;\n\n this.addChangeListener(Property.ELEMENT, this.handleElementChanged);\n this.addChangeListener(Property.MAP, this.handleMapChanged);\n this.addChangeListener(Property.OFFSET, this.handleOffsetChanged);\n this.addChangeListener(Property.POSITION, this.handlePositionChanged);\n this.addChangeListener(Property.POSITIONING, this.handlePositioningChanged);\n\n if (options.element !== undefined) {\n this.setElement(options.element);\n }\n\n this.setOffset(options.offset !== undefined ? options.offset : [0, 0]);\n\n this.setPositioning(options.positioning || 'top-left');\n\n if (options.position !== undefined) {\n this.setPosition(options.position);\n }\n }\n\n /**\n * Get the DOM element of this overlay.\n * @return {HTMLElement|undefined} The Element containing the overlay.\n * @observable\n * @api\n */\n getElement() {\n return /** @type {HTMLElement|undefined} */ (this.get(Property.ELEMENT));\n }\n\n /**\n * Get the overlay identifier which is set on constructor.\n * @return {number|string|undefined} Id.\n * @api\n */\n getId() {\n return this.id;\n }\n\n /**\n * Get the map associated with this overlay.\n * @return {import(\"./Map.js\").default|null} The map that the\n * overlay is part of.\n * @observable\n * @api\n */\n getMap() {\n return /** @type {import(\"./Map.js\").default|null} */ (\n this.get(Property.MAP) || null\n );\n }\n\n /**\n * Get the offset of this overlay.\n * @return {Array} The offset.\n * @observable\n * @api\n */\n getOffset() {\n return /** @type {Array} */ (this.get(Property.OFFSET));\n }\n\n /**\n * Get the current position of this overlay.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The spatial point that the overlay is\n * anchored at.\n * @observable\n * @api\n */\n getPosition() {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (\n this.get(Property.POSITION)\n );\n }\n\n /**\n * Get the current positioning of this overlay.\n * @return {Positioning} How the overlay is positioned\n * relative to its point on the map.\n * @observable\n * @api\n */\n getPositioning() {\n return /** @type {Positioning} */ (this.get(Property.POSITIONING));\n }\n\n /**\n * @protected\n */\n handleElementChanged() {\n removeChildren(this.element);\n const element = this.getElement();\n if (element) {\n this.element.appendChild(element);\n }\n }\n\n /**\n * @protected\n */\n handleMapChanged() {\n if (this.mapPostrenderListenerKey) {\n removeNode(this.element);\n unlistenByKey(this.mapPostrenderListenerKey);\n this.mapPostrenderListenerKey = null;\n }\n const map = this.getMap();\n if (map) {\n this.mapPostrenderListenerKey = listen(\n map,\n MapEventType.POSTRENDER,\n this.render,\n this\n );\n this.updatePixelPosition();\n const container = this.stopEvent\n ? map.getOverlayContainerStopEvent()\n : map.getOverlayContainer();\n if (this.insertFirst) {\n container.insertBefore(this.element, container.childNodes[0] || null);\n } else {\n container.appendChild(this.element);\n }\n this.performAutoPan();\n }\n }\n\n /**\n * @protected\n */\n render() {\n this.updatePixelPosition();\n }\n\n /**\n * @protected\n */\n handleOffsetChanged() {\n this.updatePixelPosition();\n }\n\n /**\n * @protected\n */\n handlePositionChanged() {\n this.updatePixelPosition();\n this.performAutoPan();\n }\n\n /**\n * @protected\n */\n handlePositioningChanged() {\n this.updatePixelPosition();\n }\n\n /**\n * Set the DOM element to be associated with this overlay.\n * @param {HTMLElement|undefined} element The Element containing the overlay.\n * @observable\n * @api\n */\n setElement(element) {\n this.set(Property.ELEMENT, element);\n }\n\n /**\n * Set the map to be associated with this overlay.\n * @param {import(\"./Map.js\").default|null} map The map that the\n * overlay is part of. Pass `null` to just remove the overlay from the current map.\n * @observable\n * @api\n */\n setMap(map) {\n this.set(Property.MAP, map);\n }\n\n /**\n * Set the offset for this overlay.\n * @param {Array} offset Offset.\n * @observable\n * @api\n */\n setOffset(offset) {\n this.set(Property.OFFSET, offset);\n }\n\n /**\n * Set the position for this overlay. If the position is `undefined` the\n * overlay is hidden.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} position The spatial point that the overlay\n * is anchored at.\n * @observable\n * @api\n */\n setPosition(position) {\n this.set(Property.POSITION, position);\n }\n\n /**\n * Pan the map so that the overlay is entirely visible in the current viewport\n * (if necessary) using the configured autoPan parameters\n * @protected\n */\n performAutoPan() {\n if (this.autoPan) {\n this.panIntoView(this.autoPan);\n }\n }\n\n /**\n * Pan the map so that the overlay is entirely visible in the current viewport\n * (if necessary).\n * @param {PanIntoViewOptions} [panIntoViewOptions] Options for the pan action\n * @api\n */\n panIntoView(panIntoViewOptions) {\n const map = this.getMap();\n\n if (!map || !map.getTargetElement() || !this.get(Property.POSITION)) {\n return;\n }\n\n const mapRect = this.getRect(map.getTargetElement(), map.getSize());\n const element = this.getElement();\n const overlayRect = this.getRect(element, [\n outerWidth(element),\n outerHeight(element),\n ]);\n\n panIntoViewOptions = panIntoViewOptions || {};\n\n const myMargin =\n panIntoViewOptions.margin === undefined ? 20 : panIntoViewOptions.margin;\n if (!containsExtent(mapRect, overlayRect)) {\n // the overlay is not completely inside the viewport, so pan the map\n const offsetLeft = overlayRect[0] - mapRect[0];\n const offsetRight = mapRect[2] - overlayRect[2];\n const offsetTop = overlayRect[1] - mapRect[1];\n const offsetBottom = mapRect[3] - overlayRect[3];\n\n const delta = [0, 0];\n if (offsetLeft < 0) {\n // move map to the left\n delta[0] = offsetLeft - myMargin;\n } else if (offsetRight < 0) {\n // move map to the right\n delta[0] = Math.abs(offsetRight) + myMargin;\n }\n if (offsetTop < 0) {\n // move map up\n delta[1] = offsetTop - myMargin;\n } else if (offsetBottom < 0) {\n // move map down\n delta[1] = Math.abs(offsetBottom) + myMargin;\n }\n\n if (delta[0] !== 0 || delta[1] !== 0) {\n const center = /** @type {import(\"./coordinate.js\").Coordinate} */ (\n map.getView().getCenterInternal()\n );\n const centerPx = map.getPixelFromCoordinateInternal(center);\n if (!centerPx) {\n return;\n }\n const newCenterPx = [centerPx[0] + delta[0], centerPx[1] + delta[1]];\n\n const panOptions = panIntoViewOptions.animation || {};\n map.getView().animateInternal({\n center: map.getCoordinateFromPixelInternal(newCenterPx),\n duration: panOptions.duration,\n easing: panOptions.easing,\n });\n }\n }\n }\n\n /**\n * Get the extent of an element relative to the document\n * @param {HTMLElement} element The element.\n * @param {import(\"./size.js\").Size} size The size of the element.\n * @return {import(\"./extent.js\").Extent} The extent.\n * @protected\n */\n getRect(element, size) {\n const box = element.getBoundingClientRect();\n const offsetX = box.left + window.pageXOffset;\n const offsetY = box.top + window.pageYOffset;\n return [offsetX, offsetY, offsetX + size[0], offsetY + size[1]];\n }\n\n /**\n * Set the positioning for this overlay.\n * @param {Positioning} positioning how the overlay is\n * positioned relative to its point on the map.\n * @observable\n * @api\n */\n setPositioning(positioning) {\n this.set(Property.POSITIONING, positioning);\n }\n\n /**\n * Modify the visibility of the element.\n * @param {boolean} visible Element visibility.\n * @protected\n */\n setVisible(visible) {\n if (this.rendered.visible !== visible) {\n this.element.style.display = visible ? '' : 'none';\n this.rendered.visible = visible;\n }\n }\n\n /**\n * Update pixel position.\n * @protected\n */\n updatePixelPosition() {\n const map = this.getMap();\n const position = this.getPosition();\n if (!map || !map.isRendered() || !position) {\n this.setVisible(false);\n return;\n }\n\n const pixel = map.getPixelFromCoordinate(position);\n const mapSize = map.getSize();\n this.updateRenderedPosition(pixel, mapSize);\n }\n\n /**\n * @param {import(\"./pixel.js\").Pixel} pixel The pixel location.\n * @param {import(\"./size.js\").Size|undefined} mapSize The map size.\n * @protected\n */\n updateRenderedPosition(pixel, mapSize) {\n const style = this.element.style;\n const offset = this.getOffset();\n\n const positioning = this.getPositioning();\n\n this.setVisible(true);\n\n const x = Math.round(pixel[0] + offset[0]) + 'px';\n const y = Math.round(pixel[1] + offset[1]) + 'px';\n let posX = '0%';\n let posY = '0%';\n if (\n positioning == 'bottom-right' ||\n positioning == 'center-right' ||\n positioning == 'top-right'\n ) {\n posX = '-100%';\n } else if (\n positioning == 'bottom-center' ||\n positioning == 'center-center' ||\n positioning == 'top-center'\n ) {\n posX = '-50%';\n }\n if (\n positioning == 'bottom-left' ||\n positioning == 'bottom-center' ||\n positioning == 'bottom-right'\n ) {\n posY = '-100%';\n } else if (\n positioning == 'center-left' ||\n positioning == 'center-center' ||\n positioning == 'center-right'\n ) {\n posY = '-50%';\n }\n const transform = `translate(${posX}, ${posY}) translate(${x}, ${y})`;\n if (this.rendered.transform_ != transform) {\n this.rendered.transform_ = transform;\n style.transform = transform;\n }\n }\n\n /**\n * returns the options this Overlay has been created with\n * @return {Options} overlay options\n */\n getOptions() {\n return this.options;\n }\n}\n\nexport default Overlay;\n","/**\n * @module ol/Tile\n */\nimport EventTarget from './events/Target.js';\nimport EventType from './events/EventType.js';\nimport TileState from './TileState.js';\nimport {abstract} from './util.js';\nimport {easeIn} from './easing.js';\n\n/**\n * A function that takes an {@link module:ol/Tile~Tile} for the tile and a\n * `{string}` for the url as arguments. The default is\n * ```js\n * source.setTileLoadFunction(function(tile, src) {\n * tile.getImage().src = src;\n * });\n * ```\n * For more fine grained control, the load function can use fetch or XMLHttpRequest and involve\n * error handling:\n *\n * ```js\n * import TileState from 'ol/TileState.js';\n *\n * source.setTileLoadFunction(function(tile, src) {\n * const xhr = new XMLHttpRequest();\n * xhr.responseType = 'blob';\n * xhr.addEventListener('loadend', function (evt) {\n * const data = this.response;\n * if (data !== undefined) {\n * tile.getImage().src = URL.createObjectURL(data);\n * } else {\n * tile.setState(TileState.ERROR);\n * }\n * });\n * xhr.addEventListener('error', function () {\n * tile.setState(TileState.ERROR);\n * });\n * xhr.open('GET', src);\n * xhr.send();\n * });\n * ```\n *\n * @typedef {function(Tile, string): void} LoadFunction\n * @api\n */\n\n/**\n * {@link module:ol/source/Tile~TileSource} sources use a function of this type to get\n * the url that provides a tile for a given tile coordinate.\n *\n * This function takes an {@link module:ol/tilecoord~TileCoord} for the tile\n * coordinate, a `{number}` representing the pixel ratio and a\n * {@link module:ol/proj/Projection~Projection} for the projection as arguments\n * and returns a `{string}` representing the tile URL, or undefined if no tile\n * should be requested for the passed tile coordinate.\n *\n * @typedef {function(import(\"./tilecoord.js\").TileCoord, number,\n * import(\"./proj/Projection.js\").default): (string|undefined)} UrlFunction\n * @api\n */\n\n/**\n * @typedef {Object} Options\n * @property {number} [transition=250] A duration for tile opacity\n * transitions in milliseconds. A duration of 0 disables the opacity transition.\n * @property {boolean} [interpolate=false] Use interpolated values when resampling. By default,\n * the nearest neighbor is used when resampling.\n * @api\n */\n\n/**\n * @classdesc\n * Base class for tiles.\n *\n * @abstract\n */\nclass Tile extends EventTarget {\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {Options} [options] Tile options.\n */\n constructor(tileCoord, state, options) {\n super();\n\n options = options ? options : {};\n\n /**\n * @type {import(\"./tilecoord.js\").TileCoord}\n */\n this.tileCoord = tileCoord;\n\n /**\n * @protected\n * @type {import(\"./TileState.js\").default}\n */\n this.state = state;\n\n /**\n * An \"interim\" tile for this tile. The interim tile may be used while this\n * one is loading, for \"smooth\" transitions when changing params/dimensions\n * on the source.\n * @type {Tile|null}\n */\n this.interimTile = null;\n\n /**\n * A key assigned to the tile. This is used by the tile source to determine\n * if this tile can effectively be used, or if a new tile should be created\n * and this one be used as an interim tile for this new tile.\n * @type {string}\n */\n this.key = '';\n\n /**\n * The duration for the opacity transition.\n * @type {number}\n */\n this.transition_ =\n options.transition === undefined ? 250 : options.transition;\n\n /**\n * Lookup of start times for rendering transitions. If the start time is\n * equal to -1, the transition is complete.\n * @type {Object}\n */\n this.transitionStarts_ = {};\n\n /**\n * @type {boolean}\n */\n this.interpolate = !!options.interpolate;\n }\n\n /**\n * @protected\n */\n changed() {\n this.dispatchEvent(EventType.CHANGE);\n }\n\n /**\n * Called by the tile cache when the tile is removed from the cache due to expiry\n */\n release() {\n if (this.state === TileState.ERROR) {\n // to remove the `change` listener on this tile in `ol/TileQueue#handleTileChange`\n this.setState(TileState.EMPTY);\n }\n }\n\n /**\n * @return {string} Key.\n */\n getKey() {\n return this.key + '/' + this.tileCoord;\n }\n\n /**\n * Get the interim tile most suitable for rendering using the chain of interim\n * tiles. This corresponds to the most recent tile that has been loaded, if no\n * such tile exists, the original tile is returned.\n * @return {!Tile} Best tile for rendering.\n */\n getInterimTile() {\n let tile = this.interimTile;\n if (!tile) {\n //empty chain\n return this;\n }\n\n // find the first loaded tile and return it. Since the chain is sorted in\n // decreasing order of creation time, there is no need to search the remainder\n // of the list (all those tiles correspond to older requests and will be\n // cleaned up by refreshInterimChain)\n do {\n if (tile.getState() == TileState.LOADED) {\n // Show tile immediately instead of fading it in after loading, because\n // the interim tile is in place already\n this.transition_ = 0;\n return tile;\n }\n tile = tile.interimTile;\n } while (tile);\n\n // we can not find a better tile\n return this;\n }\n\n /**\n * Goes through the chain of interim tiles and discards sections of the chain\n * that are no longer relevant.\n */\n refreshInterimChain() {\n let tile = this.interimTile;\n if (!tile) {\n return;\n }\n\n /** @type {Tile} */\n let prev = this;\n do {\n if (tile.getState() == TileState.LOADED) {\n //we have a loaded tile, we can discard the rest of the list\n //we would could abort any LOADING tile request\n //older than this tile (i.e. any LOADING tile following this entry in the chain)\n tile.interimTile = null;\n break;\n }\n if (tile.getState() == TileState.LOADING) {\n //keep this LOADING tile any loaded tiles later in the chain are\n //older than this tile, so we're still interested in the request\n prev = tile;\n } else if (tile.getState() == TileState.IDLE) {\n //the head of the list is the most current tile, we don't need\n //to start any other requests for this chain\n prev.interimTile = tile.interimTile;\n } else {\n prev = tile;\n }\n tile = prev.interimTile;\n } while (tile);\n }\n\n /**\n * Get the tile coordinate for this tile.\n * @return {import(\"./tilecoord.js\").TileCoord} The tile coordinate.\n * @api\n */\n getTileCoord() {\n return this.tileCoord;\n }\n\n /**\n * @return {import(\"./TileState.js\").default} State.\n */\n getState() {\n return this.state;\n }\n\n /**\n * Sets the state of this tile. If you write your own {@link module:ol/Tile~LoadFunction tileLoadFunction} ,\n * it is important to set the state correctly to {@link module:ol/TileState~ERROR}\n * when the tile cannot be loaded. Otherwise the tile cannot be removed from\n * the tile queue and will block other requests.\n * @param {import(\"./TileState.js\").default} state State.\n * @api\n */\n setState(state) {\n if (this.state !== TileState.ERROR && this.state > state) {\n throw new Error('Tile load sequence violation');\n }\n this.state = state;\n this.changed();\n }\n\n /**\n * Load the image or retry if loading previously failed.\n * Loading is taken care of by the tile queue, and calling this method is\n * only needed for preloading or for reloading in case of an error.\n * @abstract\n * @api\n */\n load() {\n abstract();\n }\n\n /**\n * Get the alpha value for rendering.\n * @param {string} id An id for the renderer.\n * @param {number} time The render frame time.\n * @return {number} A number between 0 and 1.\n */\n getAlpha(id, time) {\n if (!this.transition_) {\n return 1;\n }\n\n let start = this.transitionStarts_[id];\n if (!start) {\n start = time;\n this.transitionStarts_[id] = start;\n } else if (start === -1) {\n return 1;\n }\n\n const delta = time - start + 1000 / 60; // avoid rendering at 0\n if (delta >= this.transition_) {\n return 1;\n }\n return easeIn(delta / this.transition_);\n }\n\n /**\n * Determine if a tile is in an alpha transition. A tile is considered in\n * transition if tile.getAlpha() has not yet been called or has been called\n * and returned 1.\n * @param {string} id An id for the renderer.\n * @return {boolean} The tile is in transition.\n */\n inTransition(id) {\n if (!this.transition_) {\n return false;\n }\n return this.transitionStarts_[id] !== -1;\n }\n\n /**\n * Mark a transition as complete.\n * @param {string} id An id for the renderer.\n */\n endTransition(id) {\n if (this.transition_) {\n this.transitionStarts_[id] = -1;\n }\n }\n}\n\nexport default Tile;\n","/**\n * @module ol/TileCache\n */\nimport LRUCache from './structs/LRUCache.js';\nimport {fromKey, getKey} from './tilecoord.js';\n\nclass TileCache extends LRUCache {\n clear() {\n while (this.getCount() > 0) {\n this.pop().release();\n }\n super.clear();\n }\n\n /**\n * @param {!Object} usedTiles Used tiles.\n */\n expireCache(usedTiles) {\n while (this.canExpireCache()) {\n const tile = this.peekLast();\n if (tile.getKey() in usedTiles) {\n break;\n } else {\n this.pop().release();\n }\n }\n }\n\n /**\n * Prune all tiles from the cache that don't have the same z as the newest tile.\n */\n pruneExceptNewestZ() {\n if (this.getCount() === 0) {\n return;\n }\n const key = this.peekFirstKey();\n const tileCoord = fromKey(key);\n const z = tileCoord[0];\n this.forEach((tile) => {\n if (tile.tileCoord[0] !== z) {\n this.remove(getKey(tile.tileCoord));\n tile.release();\n }\n });\n }\n}\n\nexport default TileCache;\n","/**\n * @module ol/structs/PriorityQueue\n */\nimport {assert} from '../asserts.js';\nimport {clear} from '../obj.js';\n\n/**\n * @type {number}\n */\nexport const DROP = Infinity;\n\n/**\n * @classdesc\n * Priority queue.\n *\n * The implementation is inspired from the Closure Library's Heap class and\n * Python's heapq module.\n *\n * See https://github.com/google/closure-library/blob/master/closure/goog/structs/heap.js\n * and https://hg.python.org/cpython/file/2.7/Lib/heapq.py.\n *\n * @template T\n */\nclass PriorityQueue {\n /**\n * @param {function(T): number} priorityFunction Priority function.\n * @param {function(T): string} keyFunction Key function.\n */\n constructor(priorityFunction, keyFunction) {\n /**\n * @type {function(T): number}\n * @private\n */\n this.priorityFunction_ = priorityFunction;\n\n /**\n * @type {function(T): string}\n * @private\n */\n this.keyFunction_ = keyFunction;\n\n /**\n * @type {Array}\n * @private\n */\n this.elements_ = [];\n\n /**\n * @type {Array}\n * @private\n */\n this.priorities_ = [];\n\n /**\n * @type {!Object}\n * @private\n */\n this.queuedElements_ = {};\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n clear() {\n this.elements_.length = 0;\n this.priorities_.length = 0;\n clear(this.queuedElements_);\n }\n\n /**\n * Remove and return the highest-priority element. O(log N).\n * @return {T} Element.\n */\n dequeue() {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const element = elements[0];\n if (elements.length == 1) {\n elements.length = 0;\n priorities.length = 0;\n } else {\n elements[0] = /** @type {T} */ (elements.pop());\n priorities[0] = /** @type {number} */ (priorities.pop());\n this.siftUp_(0);\n }\n const elementKey = this.keyFunction_(element);\n delete this.queuedElements_[elementKey];\n return element;\n }\n\n /**\n * Enqueue an element. O(log N).\n * @param {T} element Element.\n * @return {boolean} The element was added to the queue.\n */\n enqueue(element) {\n assert(\n !(this.keyFunction_(element) in this.queuedElements_),\n 'Tried to enqueue an `element` that was already added to the queue'\n );\n const priority = this.priorityFunction_(element);\n if (priority != DROP) {\n this.elements_.push(element);\n this.priorities_.push(priority);\n this.queuedElements_[this.keyFunction_(element)] = true;\n this.siftDown_(0, this.elements_.length - 1);\n return true;\n }\n return false;\n }\n\n /**\n * @return {number} Count.\n */\n getCount() {\n return this.elements_.length;\n }\n\n /**\n * Gets the index of the left child of the node at the given index.\n * @param {number} index The index of the node to get the left child for.\n * @return {number} The index of the left child.\n * @private\n */\n getLeftChildIndex_(index) {\n return index * 2 + 1;\n }\n\n /**\n * Gets the index of the right child of the node at the given index.\n * @param {number} index The index of the node to get the right child for.\n * @return {number} The index of the right child.\n * @private\n */\n getRightChildIndex_(index) {\n return index * 2 + 2;\n }\n\n /**\n * Gets the index of the parent of the node at the given index.\n * @param {number} index The index of the node to get the parent for.\n * @return {number} The index of the parent.\n * @private\n */\n getParentIndex_(index) {\n return (index - 1) >> 1;\n }\n\n /**\n * Make this a heap. O(N).\n * @private\n */\n heapify_() {\n let i;\n for (i = (this.elements_.length >> 1) - 1; i >= 0; i--) {\n this.siftUp_(i);\n }\n }\n\n /**\n * @return {boolean} Is empty.\n */\n isEmpty() {\n return this.elements_.length === 0;\n }\n\n /**\n * @param {string} key Key.\n * @return {boolean} Is key queued.\n */\n isKeyQueued(key) {\n return key in this.queuedElements_;\n }\n\n /**\n * @param {T} element Element.\n * @return {boolean} Is queued.\n */\n isQueued(element) {\n return this.isKeyQueued(this.keyFunction_(element));\n }\n\n /**\n * @param {number} index The index of the node to move down.\n * @private\n */\n siftUp_(index) {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const count = elements.length;\n const element = elements[index];\n const priority = priorities[index];\n const startIndex = index;\n\n while (index < count >> 1) {\n const lIndex = this.getLeftChildIndex_(index);\n const rIndex = this.getRightChildIndex_(index);\n\n const smallerChildIndex =\n rIndex < count && priorities[rIndex] < priorities[lIndex]\n ? rIndex\n : lIndex;\n\n elements[index] = elements[smallerChildIndex];\n priorities[index] = priorities[smallerChildIndex];\n index = smallerChildIndex;\n }\n\n elements[index] = element;\n priorities[index] = priority;\n this.siftDown_(startIndex, index);\n }\n\n /**\n * @param {number} startIndex The index of the root.\n * @param {number} index The index of the node to move up.\n * @private\n */\n siftDown_(startIndex, index) {\n const elements = this.elements_;\n const priorities = this.priorities_;\n const element = elements[index];\n const priority = priorities[index];\n\n while (index > startIndex) {\n const parentIndex = this.getParentIndex_(index);\n if (priorities[parentIndex] > priority) {\n elements[index] = elements[parentIndex];\n priorities[index] = priorities[parentIndex];\n index = parentIndex;\n } else {\n break;\n }\n }\n elements[index] = element;\n priorities[index] = priority;\n }\n\n /**\n * FIXME empty description for jsdoc\n */\n reprioritize() {\n const priorityFunction = this.priorityFunction_;\n const elements = this.elements_;\n const priorities = this.priorities_;\n let index = 0;\n const n = elements.length;\n let element, i, priority;\n for (i = 0; i < n; ++i) {\n element = elements[i];\n priority = priorityFunction(element);\n if (priority == DROP) {\n delete this.queuedElements_[this.keyFunction_(element)];\n } else {\n priorities[index] = priority;\n elements[index++] = element;\n }\n }\n elements.length = index;\n priorities.length = index;\n this.heapify_();\n }\n}\n\nexport default PriorityQueue;\n","/**\n * @module ol/TileQueue\n */\nimport EventType from './events/EventType.js';\nimport PriorityQueue, {DROP} from './structs/PriorityQueue.js';\nimport TileState from './TileState.js';\n\n/**\n * @typedef {function(import(\"./Tile.js\").default, string, import(\"./coordinate.js\").Coordinate, number): number} PriorityFunction\n */\n\nclass TileQueue extends PriorityQueue {\n /**\n * @param {PriorityFunction} tilePriorityFunction Tile priority function.\n * @param {function(): ?} tileChangeCallback Function called on each tile change event.\n */\n constructor(tilePriorityFunction, tileChangeCallback) {\n super(\n /**\n * @param {Array} element Element.\n * @return {number} Priority.\n */\n function (element) {\n return tilePriorityFunction.apply(null, element);\n },\n /**\n * @param {Array} element Element.\n * @return {string} Key.\n */\n function (element) {\n return /** @type {import(\"./Tile.js\").default} */ (element[0]).getKey();\n }\n );\n\n /** @private */\n this.boundHandleTileChange_ = this.handleTileChange.bind(this);\n\n /**\n * @private\n * @type {function(): ?}\n */\n this.tileChangeCallback_ = tileChangeCallback;\n\n /**\n * @private\n * @type {number}\n */\n this.tilesLoading_ = 0;\n\n /**\n * @private\n * @type {!Object}\n */\n this.tilesLoadingKeys_ = {};\n }\n\n /**\n * @param {Array} element Element.\n * @return {boolean} The element was added to the queue.\n */\n enqueue(element) {\n const added = super.enqueue(element);\n if (added) {\n const tile = element[0];\n tile.addEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n return added;\n }\n\n /**\n * @return {number} Number of tiles loading.\n */\n getTilesLoading() {\n return this.tilesLoading_;\n }\n\n /**\n * @param {import(\"./events/Event.js\").default} event Event.\n * @protected\n */\n handleTileChange(event) {\n const tile = /** @type {import(\"./Tile.js\").default} */ (event.target);\n const state = tile.getState();\n if (\n state === TileState.LOADED ||\n state === TileState.ERROR ||\n state === TileState.EMPTY\n ) {\n if (state !== TileState.ERROR) {\n tile.removeEventListener(EventType.CHANGE, this.boundHandleTileChange_);\n }\n const tileKey = tile.getKey();\n if (tileKey in this.tilesLoadingKeys_) {\n delete this.tilesLoadingKeys_[tileKey];\n --this.tilesLoading_;\n }\n this.tileChangeCallback_();\n }\n }\n\n /**\n * @param {number} maxTotalLoading Maximum number tiles to load simultaneously.\n * @param {number} maxNewLoads Maximum number of new tiles to load.\n */\n loadMoreTiles(maxTotalLoading, maxNewLoads) {\n let newLoads = 0;\n let state, tile, tileKey;\n while (\n this.tilesLoading_ < maxTotalLoading &&\n newLoads < maxNewLoads &&\n this.getCount() > 0\n ) {\n tile = /** @type {import(\"./Tile.js\").default} */ (this.dequeue()[0]);\n tileKey = tile.getKey();\n state = tile.getState();\n if (state === TileState.IDLE && !(tileKey in this.tilesLoadingKeys_)) {\n this.tilesLoadingKeys_[tileKey] = true;\n ++this.tilesLoading_;\n ++newLoads;\n tile.load();\n }\n }\n }\n}\n\nexport default TileQueue;\n\n/**\n * @param {import('./Map.js').FrameState} frameState Frame state.\n * @param {import(\"./Tile.js\").default} tile Tile.\n * @param {string} tileSourceKey Tile source key.\n * @param {import(\"./coordinate.js\").Coordinate} tileCenter Tile center.\n * @param {number} tileResolution Tile resolution.\n * @return {number} Tile priority.\n */\nexport function getTilePriority(\n frameState,\n tile,\n tileSourceKey,\n tileCenter,\n tileResolution\n) {\n // Filter out tiles at higher zoom levels than the current zoom level, or that\n // are outside the visible extent.\n if (!frameState || !(tileSourceKey in frameState.wantedTiles)) {\n return DROP;\n }\n if (!frameState.wantedTiles[tileSourceKey][tile.getKey()]) {\n return DROP;\n }\n // Prioritize the highest zoom level tiles closest to the focus.\n // Tiles at higher zoom levels are prioritized using Math.log(tileResolution).\n // Within a zoom level, tiles are prioritized by the distance in pixels between\n // the center of the tile and the center of the viewport. The factor of 65536\n // means that the prioritization should behave as desired for tiles up to\n // 65536 * Math.log(2) = 45426 pixels from the focus.\n const center = frameState.viewState.center;\n const deltaX = tileCenter[0] - center[0];\n const deltaY = tileCenter[1] - center[1];\n return (\n 65536 * Math.log(tileResolution) +\n Math.sqrt(deltaX * deltaX + deltaY * deltaY) / tileResolution\n );\n}\n","/**\n * @module ol/TileRange\n */\n\n/**\n * A representation of a contiguous block of tiles. A tile range is specified\n * by its min/max tile coordinates and is inclusive of coordinates.\n */\nclass TileRange {\n /**\n * @param {number} minX Minimum X.\n * @param {number} maxX Maximum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxY Maximum Y.\n */\n constructor(minX, maxX, minY, maxY) {\n /**\n * @type {number}\n */\n this.minX = minX;\n\n /**\n * @type {number}\n */\n this.maxX = maxX;\n\n /**\n * @type {number}\n */\n this.minY = minY;\n\n /**\n * @type {number}\n */\n this.maxY = maxY;\n }\n\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @return {boolean} Contains tile coordinate.\n */\n contains(tileCoord) {\n return this.containsXY(tileCoord[1], tileCoord[2]);\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Contains.\n */\n containsTileRange(tileRange) {\n return (\n this.minX <= tileRange.minX &&\n tileRange.maxX <= this.maxX &&\n this.minY <= tileRange.minY &&\n tileRange.maxY <= this.maxY\n );\n }\n\n /**\n * @param {number} x Tile coordinate x.\n * @param {number} y Tile coordinate y.\n * @return {boolean} Contains coordinate.\n */\n containsXY(x, y) {\n return this.minX <= x && x <= this.maxX && this.minY <= y && y <= this.maxY;\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Equals.\n */\n equals(tileRange) {\n return (\n this.minX == tileRange.minX &&\n this.minY == tileRange.minY &&\n this.maxX == tileRange.maxX &&\n this.maxY == tileRange.maxY\n );\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n */\n extend(tileRange) {\n if (tileRange.minX < this.minX) {\n this.minX = tileRange.minX;\n }\n if (tileRange.maxX > this.maxX) {\n this.maxX = tileRange.maxX;\n }\n if (tileRange.minY < this.minY) {\n this.minY = tileRange.minY;\n }\n if (tileRange.maxY > this.maxY) {\n this.maxY = tileRange.maxY;\n }\n }\n\n /**\n * @return {number} Height.\n */\n getHeight() {\n return this.maxY - this.minY + 1;\n }\n\n /**\n * @return {import(\"./size.js\").Size} Size.\n */\n getSize() {\n return [this.getWidth(), this.getHeight()];\n }\n\n /**\n * @return {number} Width.\n */\n getWidth() {\n return this.maxX - this.minX + 1;\n }\n\n /**\n * @param {TileRange} tileRange Tile range.\n * @return {boolean} Intersects.\n */\n intersects(tileRange) {\n return (\n this.minX <= tileRange.maxX &&\n this.maxX >= tileRange.minX &&\n this.minY <= tileRange.maxY &&\n this.maxY >= tileRange.minY\n );\n }\n}\n\n/**\n * @param {number} minX Minimum X.\n * @param {number} maxX Maximum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxY Maximum Y.\n * @param {TileRange} [tileRange] TileRange.\n * @return {TileRange} Tile range.\n */\nexport function createOrUpdate(minX, maxX, minY, maxY, tileRange) {\n if (tileRange !== undefined) {\n tileRange.minX = minX;\n tileRange.maxX = maxX;\n tileRange.minY = minY;\n tileRange.maxY = maxY;\n return tileRange;\n }\n return new TileRange(minX, maxX, minY, maxY);\n}\n\nexport default TileRange;\n","/**\n * @module ol/TileState\n */\n\n/**\n * @enum {number}\n */\nexport default {\n IDLE: 0,\n LOADING: 1,\n LOADED: 2,\n /**\n * Indicates that tile loading failed\n * @type {number}\n */\n ERROR: 3,\n EMPTY: 4,\n};\n","/**\n * @module ol/VectorTile\n */\nimport Tile from './Tile.js';\nimport TileState from './TileState.js';\n\nclass VectorTile extends Tile {\n /**\n * @param {import(\"./tilecoord.js\").TileCoord} tileCoord Tile coordinate.\n * @param {import(\"./TileState.js\").default} state State.\n * @param {string} src Data source url.\n * @param {import(\"./format/Feature.js\").default} format Feature format.\n * @param {import(\"./Tile.js\").LoadFunction} tileLoadFunction Tile load function.\n * @param {import(\"./Tile.js\").Options} [options] Tile options.\n */\n constructor(tileCoord, state, src, format, tileLoadFunction, options) {\n super(tileCoord, state, options);\n\n /**\n * Extent of this tile; set by the source.\n * @type {import(\"./extent.js\").Extent}\n */\n this.extent = null;\n\n /**\n * @private\n * @type {import(\"./format/Feature.js\").default}\n */\n this.format_ = format;\n\n /**\n * @private\n * @type {Array}\n */\n this.features_ = null;\n\n /**\n * @private\n * @type {import(\"./featureloader.js\").FeatureLoader}\n */\n this.loader_;\n\n /**\n * Feature projection of this tile; set by the source.\n * @type {import(\"./proj/Projection.js\").default}\n */\n this.projection = null;\n\n /**\n * Resolution of this tile; set by the source.\n * @type {number}\n */\n this.resolution;\n\n /**\n * @private\n * @type {import(\"./Tile.js\").LoadFunction}\n */\n this.tileLoadFunction_ = tileLoadFunction;\n\n /**\n * @private\n * @type {string}\n */\n this.url_ = src;\n\n this.key = src;\n }\n\n /**\n * Get the feature format assigned for reading this tile's features.\n * @return {import(\"./format/Feature.js\").default} Feature format.\n * @api\n */\n getFormat() {\n return this.format_;\n }\n\n /**\n * Get the features for this tile. Geometries will be in the view projection.\n * @return {Array} Features.\n * @api\n */\n getFeatures() {\n return this.features_;\n }\n\n /**\n * Load not yet loaded URI.\n */\n load() {\n if (this.state == TileState.IDLE) {\n this.setState(TileState.LOADING);\n this.tileLoadFunction_(this, this.url_);\n if (this.loader_) {\n this.loader_(this.extent, this.resolution, this.projection);\n }\n }\n }\n\n /**\n * Handler for successful tile load.\n * @param {Array} features The loaded features.\n * @param {import(\"./proj/Projection.js\").default} dataProjection Data projection.\n */\n onLoad(features, dataProjection) {\n this.setFeatures(features);\n }\n\n /**\n * Handler for tile load errors.\n */\n onError() {\n this.setState(TileState.ERROR);\n }\n\n /**\n * Function for use in an {@link module:ol/source/VectorTile~VectorTile}'s `tileLoadFunction`.\n * Sets the features for the tile.\n * @param {Array} features Features.\n * @api\n */\n setFeatures(features) {\n this.features_ = features;\n this.setState(TileState.LOADED);\n }\n\n /**\n * Set the feature loader for reading this tile's features.\n * @param {import(\"./featureloader.js\").FeatureLoader} loader Feature loader.\n * @api\n */\n setLoader(loader) {\n this.loader_ = loader;\n }\n}\n\nexport default VectorTile;\n","/**\n * @module ol/centerconstraint\n */\nimport {clamp} from './math.js';\n\n/**\n * @typedef {function((import(\"./coordinate.js\").Coordinate|undefined), number, import(\"./size.js\").Size, boolean=, Array=): (import(\"./coordinate.js\").Coordinate|undefined)} Type\n */\n\n/**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {boolean} onlyCenter If true, the constraint will only apply to the view center.\n * @param {boolean} smooth If true, the view will be able to go slightly out of the given extent\n * (only during interaction and animation).\n * @return {Type} The constraint.\n */\nexport function createExtent(extent, onlyCenter, smooth) {\n return (\n /**\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center Center.\n * @param {number|undefined} resolution Resolution.\n * @param {import(\"./size.js\").Size} size Viewport size; unused if `onlyCenter` was specified.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @param {Array} [centerShift] Shift between map center and viewport center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\n function (center, resolution, size, isMoving, centerShift) {\n if (!center) {\n return undefined;\n }\n if (!resolution && !onlyCenter) {\n return center;\n }\n const viewWidth = onlyCenter ? 0 : size[0] * resolution;\n const viewHeight = onlyCenter ? 0 : size[1] * resolution;\n const shiftX = centerShift ? centerShift[0] : 0;\n const shiftY = centerShift ? centerShift[1] : 0;\n let minX = extent[0] + viewWidth / 2 + shiftX;\n let maxX = extent[2] - viewWidth / 2 + shiftX;\n let minY = extent[1] + viewHeight / 2 + shiftY;\n let maxY = extent[3] - viewHeight / 2 + shiftY;\n\n // note: when zooming out of bounds, min and max values for x and y may\n // end up inverted (min > max); this has to be accounted for\n if (minX > maxX) {\n minX = (maxX + minX) / 2;\n maxX = minX;\n }\n if (minY > maxY) {\n minY = (maxY + minY) / 2;\n maxY = minY;\n }\n\n let x = clamp(center[0], minX, maxX);\n let y = clamp(center[1], minY, maxY);\n\n // during an interaction, allow some overscroll\n if (isMoving && smooth && resolution) {\n const ratio = 30 * resolution;\n x +=\n -ratio * Math.log(1 + Math.max(0, minX - center[0]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[0] - maxX) / ratio);\n y +=\n -ratio * Math.log(1 + Math.max(0, minY - center[1]) / ratio) +\n ratio * Math.log(1 + Math.max(0, center[1] - maxY) / ratio);\n }\n\n return [x, y];\n }\n );\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} [center] Center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center.\n */\nexport function none(center) {\n return center;\n}\n","/**\n * @module ol/resolutionconstraint\n */\nimport {clamp} from './math.js';\nimport {getHeight, getWidth} from './extent.js';\nimport {linearFindNearest} from './array.js';\n\n/**\n * @typedef {function((number|undefined), number, import(\"./size.js\").Size, boolean=): (number|undefined)} Type\n */\n\n/**\n * Returns a modified resolution taking into account the viewport size and maximum\n * allowed extent.\n * @param {number} resolution Resolution\n * @param {import(\"./extent.js\").Extent} maxExtent Maximum allowed extent.\n * @param {import(\"./size.js\").Size} viewportSize Viewport size.\n * @param {boolean} showFullExtent Whether to show the full extent.\n * @return {number} Capped resolution.\n */\nfunction getViewportClampedResolution(\n resolution,\n maxExtent,\n viewportSize,\n showFullExtent\n) {\n const xResolution = getWidth(maxExtent) / viewportSize[0];\n const yResolution = getHeight(maxExtent) / viewportSize[1];\n\n if (showFullExtent) {\n return Math.min(resolution, Math.max(xResolution, yResolution));\n }\n return Math.min(resolution, Math.min(xResolution, yResolution));\n}\n\n/**\n * Returns a modified resolution to be between maxResolution and minResolution while\n * still allowing the value to be slightly out of bounds.\n * Note: the computation is based on the logarithm function (ln):\n * - at 1, ln(x) is 0\n * - above 1, ln(x) keeps increasing but at a much slower pace than x\n * The final result is clamped to prevent getting too far away from bounds.\n * @param {number} resolution Resolution.\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @return {number} Smoothed resolution.\n */\nfunction getSmoothClampedResolution(resolution, maxResolution, minResolution) {\n let result = Math.min(resolution, maxResolution);\n const ratio = 50;\n\n result *=\n Math.log(1 + ratio * Math.max(0, resolution / maxResolution - 1)) / ratio +\n 1;\n if (minResolution) {\n result = Math.max(result, minResolution);\n result /=\n Math.log(1 + ratio * Math.max(0, minResolution / resolution - 1)) /\n ratio +\n 1;\n }\n return clamp(result, minResolution / 2, maxResolution * 2);\n}\n\n/**\n * @param {Array} resolutions Resolutions.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToResolutions(\n resolutions,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const maxResolution = resolutions[0];\n const minResolution = resolutions[resolutions.length - 1];\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n // during interacting or animating, allow intermediary values\n if (isMoving) {\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n\n const capped = Math.min(cappedMaxRes, resolution);\n const z = Math.floor(linearFindNearest(resolutions, capped, direction));\n if (resolutions[z] > cappedMaxRes && z < resolutions.length - 1) {\n return resolutions[z + 1];\n }\n return resolutions[z];\n }\n return undefined;\n }\n );\n}\n\n/**\n * @param {number} power Power.\n * @param {number} maxResolution Maximum resolution.\n * @param {number} [minResolution] Minimum resolution.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createSnapToPower(\n power,\n maxResolution,\n minResolution,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\n minResolution = minResolution !== undefined ? minResolution : 0;\n\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n // during interacting or animating, allow intermediary values\n if (isMoving) {\n if (!smooth) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n\n const tolerance = 1e-9;\n const minZoomLevel = Math.ceil(\n Math.log(maxResolution / cappedMaxRes) / Math.log(power) - tolerance\n );\n const offset = -direction * (0.5 - tolerance) + 0.5;\n const capped = Math.min(cappedMaxRes, resolution);\n const cappedZoomLevel = Math.floor(\n Math.log(maxResolution / capped) / Math.log(power) + offset\n );\n const zoomLevel = Math.max(minZoomLevel, cappedZoomLevel);\n const newResolution = maxResolution / Math.pow(power, zoomLevel);\n return clamp(newResolution, minResolution, cappedMaxRes);\n }\n return undefined;\n }\n );\n}\n\n/**\n * @param {number} maxResolution Max resolution.\n * @param {number} minResolution Min resolution.\n * @param {boolean} [smooth] If true, the view will be able to slightly exceed resolution limits. Default: true.\n * @param {import(\"./extent.js\").Extent} [maxExtent] Maximum allowed extent.\n * @param {boolean} [showFullExtent] If true, allows us to show the full extent. Default: false.\n * @return {Type} Zoom function.\n */\nexport function createMinMaxResolution(\n maxResolution,\n minResolution,\n smooth,\n maxExtent,\n showFullExtent\n) {\n smooth = smooth !== undefined ? smooth : true;\n\n return (\n /**\n * @param {number|undefined} resolution Resolution.\n * @param {number} direction Direction.\n * @param {import(\"./size.js\").Size} size Viewport size.\n * @param {boolean} [isMoving] True if an interaction or animation is in progress.\n * @return {number|undefined} Resolution.\n */\n function (resolution, direction, size, isMoving) {\n if (resolution !== undefined) {\n const cappedMaxRes = maxExtent\n ? getViewportClampedResolution(\n maxResolution,\n maxExtent,\n size,\n showFullExtent\n )\n : maxResolution;\n\n if (!smooth || !isMoving) {\n return clamp(resolution, minResolution, cappedMaxRes);\n }\n return getSmoothClampedResolution(\n resolution,\n cappedMaxRes,\n minResolution\n );\n }\n return undefined;\n }\n );\n}\n","/**\n * @module ol/View\n */\nimport BaseObject from './Object.js';\nimport ViewHint from './ViewHint.js';\nimport ViewProperty from './ViewProperty.js';\nimport {DEFAULT_TILE_SIZE} from './tilegrid/common.js';\nimport {\n METERS_PER_UNIT,\n createProjection,\n disableCoordinateWarning,\n fromUserCoordinate,\n fromUserExtent,\n getUserProjection,\n toUserCoordinate,\n toUserExtent,\n} from './proj.js';\nimport {VOID} from './functions.js';\nimport {\n add as addCoordinate,\n equals as coordinatesEqual,\n equals,\n rotate as rotateCoordinate,\n} from './coordinate.js';\nimport {assert} from './asserts.js';\nimport {none as centerNone, createExtent} from './centerconstraint.js';\nimport {clamp, modulo} from './math.js';\nimport {\n createMinMaxResolution,\n createSnapToPower,\n createSnapToResolutions,\n} from './resolutionconstraint.js';\nimport {\n createSnapToN,\n createSnapToZero,\n disable,\n none as rotationNone,\n} from './rotationconstraint.js';\nimport {easeOut, inAndOut} from './easing.js';\nimport {\n getCenter,\n getForViewAndSize,\n getHeight,\n getWidth,\n isEmpty,\n} from './extent.js';\nimport {linearFindNearest} from './array.js';\nimport {fromExtent as polygonFromExtent} from './geom/Polygon.js';\n\n/**\n * An animation configuration\n *\n * @typedef {Object} Animation\n * @property {import(\"./coordinate.js\").Coordinate} [sourceCenter] Source center.\n * @property {import(\"./coordinate.js\").Coordinate} [targetCenter] Target center.\n * @property {number} [sourceResolution] Source resolution.\n * @property {number} [targetResolution] Target resolution.\n * @property {number} [sourceRotation] Source rotation.\n * @property {number} [targetRotation] Target rotation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Anchor.\n * @property {number} start Start.\n * @property {number} duration Duration.\n * @property {boolean} complete Complete.\n * @property {function(number):number} easing Easing.\n * @property {function(boolean):void} callback Callback.\n */\n\n/**\n * @typedef {Object} Constraints\n * @property {import(\"./centerconstraint.js\").Type} center Center.\n * @property {import(\"./resolutionconstraint.js\").Type} resolution Resolution.\n * @property {import(\"./rotationconstraint.js\").Type} rotation Rotation.\n */\n\n/**\n * @typedef {Object} FitOptions\n * @property {import(\"./size.js\").Size} [size] The size in pixels of the box to\n * fit the extent into. Defaults to the size of the map the view is associated with.\n * If no map or multiple maps are connected to the view, provide the desired box size\n * (e.g. `map.getSize()`).\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in pixels) to be\n * cleared inside the view. Values in the array are top, right, bottom and left\n * padding.\n * @property {boolean} [nearest=false] If the view `constrainResolution` option is `true`,\n * get the nearest extent instead of the closest that actually fits the view.\n * @property {number} [minResolution=0] Minimum resolution that we zoom to.\n * @property {number} [maxZoom] Maximum zoom level that we zoom to. If\n * `minResolution` is given, this property is ignored.\n * @property {number} [duration] The duration of the animation in milliseconds.\n * By default, there is no animation to the target extent.\n * @property {function(number):number} [easing] The easing function used during\n * the animation (defaults to {@link module:ol/easing.inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n * @property {function(boolean):void} [callback] Function called when the view is in\n * its final position. The callback will be called with `true` if the animation\n * series completed on its own or `false` if it was cancelled.\n */\n\n/**\n * @typedef {Object} ViewOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The initial center for\n * the view. If a user projection is not set, the coordinate system for the center is\n * specified with the `projection` option. Layer sources will not be fetched if this\n * is not set, but the center can be set later with {@link #setCenter}.\n * @property {boolean|number} [constrainRotation=true] Rotation constraint.\n * `false` means no constraint. `true` means no constraint, but snap to zero\n * near zero. A number constrains the rotation to that number of values. For\n * example, `4` will constrain the rotation to 0, 90, 180, and 270 degrees.\n * @property {boolean} [enableRotation=true] Enable rotation.\n * If `false`, a rotation constraint that always sets the rotation to zero is\n * used. The `constrainRotation` option has no effect if `enableRotation` is\n * `false`.\n * @property {import(\"./extent.js\").Extent} [extent] The extent that constrains the\n * view, in other words, nothing outside of this extent can be visible on the map.\n * @property {boolean} [constrainOnlyCenter=false] If true, the extent\n * constraint will only apply to the view center and not the whole extent.\n * @property {boolean} [smoothExtentConstraint=true] If true, the extent\n * constraint will be applied smoothly, i.e. allow the view to go slightly outside\n * of the given `extent`.\n * @property {number} [maxResolution] The maximum resolution used to determine\n * the resolution constraint. It is used together with `minResolution` (or\n * `maxZoom`) and `zoomFactor`. If unspecified it is calculated in such a way\n * that the projection's validity extent fits in a 256x256 px tile. If the\n * projection is Spherical Mercator (the default) then `maxResolution` defaults\n * to `40075016.68557849 / 256 = 156543.03392804097`.\n * @property {number} [minResolution] The minimum resolution used to determine\n * the resolution constraint. It is used together with `maxResolution` (or\n * `minZoom`) and `zoomFactor`. If unspecified it is calculated assuming 29\n * zoom levels (with a factor of 2). If the projection is Spherical Mercator\n * (the default) then `minResolution` defaults to\n * `40075016.68557849 / 256 / Math.pow(2, 28) = 0.0005831682455839253`.\n * @property {number} [maxZoom=28] The maximum zoom level used to determine the\n * resolution constraint. It is used together with `minZoom` (or\n * `maxResolution`) and `zoomFactor`. Note that if `minResolution` is also\n * provided, it is given precedence over `maxZoom`.\n * @property {number} [minZoom=0] The minimum zoom level used to determine the\n * resolution constraint. It is used together with `maxZoom` (or\n * `minResolution`) and `zoomFactor`. Note that if `maxResolution` is also\n * provided, it is given precedence over `minZoom`.\n * @property {boolean} [multiWorld=false] If `false` the view is constrained so\n * only one world is visible, and you cannot pan off the edge. If `true` the map\n * may show multiple worlds at low zoom levels. Only used if the `projection` is\n * global. Note that if `extent` is also provided it is given precedence.\n * @property {boolean} [constrainResolution=false] If true, the view will always\n * animate to the closest zoom level after an interaction; false means\n * intermediary zoom levels are allowed.\n * @property {boolean} [smoothResolutionConstraint=true] If true, the resolution\n * min/max values will be applied smoothly, i. e. allow the view to exceed slightly\n * the given resolution or zoom bounds.\n * @property {boolean} [showFullExtent=false] Allow the view to be zoomed out to\n * show the full configured extent. By default, when a view is configured with an\n * extent, users will not be able to zoom out so the viewport exceeds the extent in\n * either dimension. This means the full extent may not be visible if the viewport\n * is taller or wider than the aspect ratio of the configured extent. If\n * showFullExtent is true, the user will be able to zoom out so that the viewport\n * exceeds the height or width of the configured extent, but not both, allowing the\n * full extent to be shown.\n * @property {import(\"./proj.js\").ProjectionLike} [projection='EPSG:3857'] The\n * projection. The default is Spherical Mercator.\n * @property {number} [resolution] The initial resolution for the view. The\n * units are `projection` units per pixel (e.g. meters per pixel). An\n * alternative to setting this is to set `zoom`. Layer sources will not be\n * fetched if neither this nor `zoom` are defined, but they can be set later\n * with {@link #setZoom} or {@link #setResolution}.\n * @property {Array} [resolutions] Resolutions that determine the\n * zoom levels if specified. The index in the array corresponds to the zoom level,\n * therefore the resolution values have to be in descending order. It also constrains\n * the resolution by the minimum and maximum value. If set the `maxResolution`,\n * `minResolution`, `minZoom`, `maxZoom`, and `zoomFactor` options are ignored.\n * @property {number} [rotation=0] The initial rotation for the view in radians\n * (positive rotation clockwise, 0 means North).\n * @property {number} [zoom] Only used if `resolution` is not defined. Zoom\n * level used to calculate the initial resolution for the view.\n * @property {number} [zoomFactor=2] The zoom factor used to compute the\n * corresponding resolution.\n * @property {!Array} [padding=[0, 0, 0, 0]] Padding (in css pixels).\n * If the map viewport is partially covered with other content (overlays) along\n * its edges, this setting allows to shift the center of the viewport away from\n * that content. The order of the values is top, right, bottom, left.\n */\n\n/**\n * @typedef {Object} AnimationOptions\n * @property {import(\"./coordinate.js\").Coordinate} [center] The center of the view at the end of\n * the animation.\n * @property {number} [zoom] The zoom level of the view at the end of the\n * animation. This takes precedence over `resolution`.\n * @property {number} [resolution] The resolution of the view at the end\n * of the animation. If `zoom` is also provided, this option will be ignored.\n * @property {number} [rotation] The rotation of the view at the end of\n * the animation.\n * @property {import(\"./coordinate.js\").Coordinate} [anchor] Optional anchor to remain fixed\n * during a rotation or resolution animation.\n * @property {number} [duration=1000] The duration of the animation in milliseconds.\n * @property {function(number):number} [easing] The easing function used\n * during the animation (defaults to {@link module:ol/easing.inAndOut}).\n * The function will be called for each frame with a number representing a\n * fraction of the animation's duration. The function should return a number\n * between 0 and 1 representing the progress toward the destination state.\n */\n\n/**\n * @typedef {Object} State\n * @property {import(\"./coordinate.js\").Coordinate} center Center (in view projection coordinates).\n * @property {import(\"./proj/Projection.js\").default} projection Projection.\n * @property {number} resolution Resolution.\n * @property {import(\"./coordinate.js\").Coordinate} [nextCenter] The next center during an animation series.\n * @property {number} [nextResolution] The next resolution during an animation series.\n * @property {number} [nextRotation] The next rotation during an animation series.\n * @property {number} rotation Rotation.\n * @property {number} zoom Zoom.\n */\n\n/**\n * Like {@link import(\"./Map.js\").FrameState}, but just `viewState` and `extent`.\n * @typedef {Object} ViewStateLayerStateExtent\n * @property {State} viewState View state.\n * @property {import(\"./extent.js\").Extent} extent Extent (in user projection coordinates).\n * @property {Array} [layerStatesArray] Layer states.\n */\n\n/**\n * Default min zoom level for the map view.\n * @type {number}\n */\nconst DEFAULT_MIN_ZOOM = 0;\n\n/**\n * @typedef {import(\"./ObjectEventType\").Types|'change:center'|'change:resolution'|'change:rotation'} ViewObjectEventTypes\n */\n\n/***\n * @template Return\n * @typedef {import(\"./Observable\").OnSignature &\n * import(\"./Observable\").OnSignature &\n * import(\"./Observable\").CombinedOnSignature} ViewOnSignature\n */\n\n/**\n * @classdesc\n * A View object represents a simple 2D view of the map.\n *\n * This is the object to act upon to change the center, resolution,\n * and rotation of the map.\n *\n * A View has a `projection`. The projection determines the\n * coordinate system of the center, and its units determine the units of the\n * resolution (projection units per pixel). The default projection is\n * Web Mercator (EPSG:3857).\n *\n * ### The view states\n *\n * A View is determined by three states: `center`, `resolution`,\n * and `rotation`. Each state has a corresponding getter and setter, e.g.\n * `getCenter` and `setCenter` for the `center` state.\n *\n * The `zoom` state is actually not saved on the view: all computations\n * internally use the `resolution` state. Still, the `setZoom` and `getZoom`\n * methods are available, as well as `getResolutionForZoom` and\n * `getZoomForResolution` to switch from one system to the other.\n *\n * ### The constraints\n *\n * `setCenter`, `setResolution` and `setRotation` can be used to change the\n * states of the view, but any constraint defined in the constructor will\n * be applied along the way.\n *\n * A View object can have a *resolution constraint*, a *rotation constraint*\n * and a *center constraint*.\n *\n * The *resolution constraint* typically restricts min/max values and\n * snaps to specific resolutions. It is determined by the following\n * options: `resolutions`, `maxResolution`, `maxZoom` and `zoomFactor`.\n * If `resolutions` is set, the other three options are ignored. See\n * documentation for each option for more information. By default, the view\n * only has a min/max restriction and allow intermediary zoom levels when\n * pinch-zooming for example.\n *\n * The *rotation constraint* snaps to specific angles. It is determined\n * by the following options: `enableRotation` and `constrainRotation`.\n * By default rotation is allowed and its value is snapped to zero when approaching the\n * horizontal.\n *\n * The *center constraint* is determined by the `extent` option. By\n * default the view center is not constrained at all.\n *\n * ### Changing the view state\n *\n * It is important to note that `setZoom`, `setResolution`, `setCenter` and\n * `setRotation` are subject to the above mentioned constraints. As such, it\n * may sometimes not be possible to know in advance the resulting state of the\n * View. For example, calling `setResolution(10)` does not guarantee that\n * `getResolution()` will return `10`.\n *\n * A consequence of this is that, when applying a delta on the view state, one\n * should use `adjustCenter`, `adjustRotation`, `adjustZoom` and `adjustResolution`\n * rather than the corresponding setters. This will let view do its internal\n * computations. Besides, the `adjust*` methods also take an `anchor`\n * argument which allows specifying an origin for the transformation.\n *\n * ### Interacting with the view\n *\n * View constraints are usually only applied when the view is *at rest*, meaning that\n * no interaction or animation is ongoing. As such, if the user puts the view in a\n * state that is not equivalent to a constrained one (e.g. rotating the view when\n * the snap angle is 0), an animation will be triggered at the interaction end to\n * put back the view to a stable state;\n *\n * @api\n */\nclass View extends BaseObject {\n /**\n * @param {ViewOptions} [options] View options.\n */\n constructor(options) {\n super();\n\n /***\n * @type {ViewOnSignature}\n */\n this.on;\n\n /***\n * @type {ViewOnSignature}\n */\n this.once;\n\n /***\n * @type {ViewOnSignature}\n */\n this.un;\n\n options = Object.assign({}, options);\n\n /**\n * @private\n * @type {Array}\n */\n this.hints_ = [0, 0];\n\n /**\n * @private\n * @type {Array>}\n */\n this.animations_ = [];\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.updateAnimationKey_;\n\n /**\n * @private\n * @const\n * @type {import(\"./proj/Projection.js\").default}\n */\n this.projection_ = createProjection(options.projection, 'EPSG:3857');\n\n /**\n * @private\n * @type {import(\"./size.js\").Size}\n */\n this.viewportSize_ = [100, 100];\n\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n this.targetCenter_ = null;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.targetResolution_;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.targetRotation_;\n\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate}\n */\n this.nextCenter_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.nextResolution_;\n\n /**\n * @private\n * @type {number}\n */\n this.nextRotation_;\n\n /**\n * @private\n * @type {import(\"./coordinate.js\").Coordinate|undefined}\n */\n this.cancelAnchor_ = undefined;\n\n if (options.projection) {\n disableCoordinateWarning();\n }\n if (options.center) {\n options.center = fromUserCoordinate(options.center, this.projection_);\n }\n if (options.extent) {\n options.extent = fromUserExtent(options.extent, this.projection_);\n }\n\n this.applyOptions_(options);\n }\n\n /**\n * Set up the view with the given options.\n * @param {ViewOptions} options View options.\n */\n applyOptions_(options) {\n const properties = Object.assign({}, options);\n for (const key in ViewProperty) {\n delete properties[key];\n }\n this.setProperties(properties, true);\n\n const resolutionConstraintInfo = createResolutionConstraint(options);\n\n /**\n * @private\n * @type {number}\n */\n this.maxResolution_ = resolutionConstraintInfo.maxResolution;\n\n /**\n * @private\n * @type {number}\n */\n this.minResolution_ = resolutionConstraintInfo.minResolution;\n\n /**\n * @private\n * @type {number}\n */\n this.zoomFactor_ = resolutionConstraintInfo.zoomFactor;\n\n /**\n * @private\n * @type {Array|undefined}\n */\n this.resolutions_ = options.resolutions;\n\n /**\n * @type {Array|undefined}\n * @private\n */\n this.padding_ = options.padding;\n\n /**\n * @private\n * @type {number}\n */\n this.minZoom_ = resolutionConstraintInfo.minZoom;\n\n const centerConstraint = createCenterConstraint(options);\n const resolutionConstraint = resolutionConstraintInfo.constraint;\n const rotationConstraint = createRotationConstraint(options);\n\n /**\n * @private\n * @type {Constraints}\n */\n this.constraints_ = {\n center: centerConstraint,\n resolution: resolutionConstraint,\n rotation: rotationConstraint,\n };\n\n this.setRotation(options.rotation !== undefined ? options.rotation : 0);\n this.setCenterInternal(\n options.center !== undefined ? options.center : null\n );\n if (options.resolution !== undefined) {\n this.setResolution(options.resolution);\n } else if (options.zoom !== undefined) {\n this.setZoom(options.zoom);\n }\n }\n\n /**\n * Padding (in css pixels).\n * If the map viewport is partially covered with other content (overlays) along\n * its edges, this setting allows to shift the center of the viewport away from that\n * content. The order of the values in the array is top, right, bottom, left.\n * The default is no padding, which is equivalent to `[0, 0, 0, 0]`.\n * @type {Array|undefined}\n * @api\n */\n get padding() {\n return this.padding_;\n }\n set padding(padding) {\n let oldPadding = this.padding_;\n this.padding_ = padding;\n const center = this.getCenterInternal();\n if (center) {\n const newPadding = padding || [0, 0, 0, 0];\n oldPadding = oldPadding || [0, 0, 0, 0];\n const resolution = this.getResolution();\n const offsetX =\n (resolution / 2) *\n (newPadding[3] - oldPadding[3] + oldPadding[1] - newPadding[1]);\n const offsetY =\n (resolution / 2) *\n (newPadding[0] - oldPadding[0] + oldPadding[2] - newPadding[2]);\n this.setCenterInternal([center[0] + offsetX, center[1] - offsetY]);\n }\n }\n\n /**\n * Get an updated version of the view options used to construct the view. The\n * current resolution (or zoom), center, and rotation are applied to any stored\n * options. The provided options can be used to apply new min/max zoom or\n * resolution limits.\n * @param {ViewOptions} newOptions New options to be applied.\n * @return {ViewOptions} New options updated with the current view state.\n */\n getUpdatedOptions_(newOptions) {\n const options = this.getProperties();\n\n // preserve resolution (or zoom)\n if (options.resolution !== undefined) {\n options.resolution = this.getResolution();\n } else {\n options.zoom = this.getZoom();\n }\n\n // preserve center\n options.center = this.getCenterInternal();\n\n // preserve rotation\n options.rotation = this.getRotation();\n\n return Object.assign({}, options, newOptions);\n }\n\n /**\n * Animate the view. The view's center, zoom (or resolution), and rotation\n * can be animated for smooth transitions between view states. For example,\n * to animate the view to a new zoom level:\n *\n * view.animate({zoom: view.getZoom() + 1});\n *\n * By default, the animation lasts one second and uses in-and-out easing. You\n * can customize this behavior by including `duration` (in milliseconds) and\n * `easing` options (see {@link module:ol/easing}).\n *\n * To chain together multiple animations, call the method with multiple\n * animation objects. For example, to first zoom and then pan:\n *\n * view.animate({zoom: 10}, {center: [0, 0]});\n *\n * If you provide a function as the last argument to the animate method, it\n * will get called at the end of an animation series. The callback will be\n * called with `true` if the animation series completed on its own or `false`\n * if it was cancelled.\n *\n * Animations are cancelled by user interactions (e.g. dragging the map) or by\n * calling `view.setCenter()`, `view.setResolution()`, or `view.setRotation()`\n * (or another method that calls one of these).\n *\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation\n * options. Multiple animations can be run in series by passing multiple\n * options objects. To run multiple animations in parallel, call the method\n * multiple times. An optional callback can be provided as a final\n * argument. The callback will be called with a boolean indicating whether\n * the animation completed without being cancelled.\n * @api\n */\n animate(var_args) {\n if (this.isDef() && !this.getAnimating()) {\n this.resolveConstraints(0);\n }\n const args = new Array(arguments.length);\n for (let i = 0; i < args.length; ++i) {\n let options = arguments[i];\n if (options.center) {\n options = Object.assign({}, options);\n options.center = fromUserCoordinate(\n options.center,\n this.getProjection()\n );\n }\n if (options.anchor) {\n options = Object.assign({}, options);\n options.anchor = fromUserCoordinate(\n options.anchor,\n this.getProjection()\n );\n }\n args[i] = options;\n }\n this.animateInternal.apply(this, args);\n }\n\n /**\n * @param {...(AnimationOptions|function(boolean): void)} var_args Animation options.\n */\n animateInternal(var_args) {\n let animationCount = arguments.length;\n let callback;\n if (\n animationCount > 1 &&\n typeof arguments[animationCount - 1] === 'function'\n ) {\n callback = arguments[animationCount - 1];\n --animationCount;\n }\n\n let i = 0;\n for (; i < animationCount && !this.isDef(); ++i) {\n // if view properties are not yet set, shortcut to the final state\n const state = arguments[i];\n if (state.center) {\n this.setCenterInternal(state.center);\n }\n if (state.zoom !== undefined) {\n this.setZoom(state.zoom);\n } else if (state.resolution) {\n this.setResolution(state.resolution);\n }\n if (state.rotation !== undefined) {\n this.setRotation(state.rotation);\n }\n }\n if (i === animationCount) {\n if (callback) {\n animationCallback(callback, true);\n }\n return;\n }\n\n let start = Date.now();\n let center = this.targetCenter_.slice();\n let resolution = this.targetResolution_;\n let rotation = this.targetRotation_;\n const series = [];\n for (; i < animationCount; ++i) {\n const options = /** @type {AnimationOptions} */ (arguments[i]);\n\n const animation = {\n start: start,\n complete: false,\n anchor: options.anchor,\n duration: options.duration !== undefined ? options.duration : 1000,\n easing: options.easing || inAndOut,\n callback: callback,\n };\n\n if (options.center) {\n animation.sourceCenter = center;\n animation.targetCenter = options.center.slice();\n center = animation.targetCenter;\n }\n\n if (options.zoom !== undefined) {\n animation.sourceResolution = resolution;\n animation.targetResolution = this.getResolutionForZoom(options.zoom);\n resolution = animation.targetResolution;\n } else if (options.resolution) {\n animation.sourceResolution = resolution;\n animation.targetResolution = options.resolution;\n resolution = animation.targetResolution;\n }\n\n if (options.rotation !== undefined) {\n animation.sourceRotation = rotation;\n const delta =\n modulo(options.rotation - rotation + Math.PI, 2 * Math.PI) - Math.PI;\n animation.targetRotation = rotation + delta;\n rotation = animation.targetRotation;\n }\n\n // check if animation is a no-op\n if (isNoopAnimation(animation)) {\n animation.complete = true;\n // we still push it onto the series for callback handling\n } else {\n start += animation.duration;\n }\n series.push(animation);\n }\n this.animations_.push(series);\n this.setHint(ViewHint.ANIMATING, 1);\n this.updateAnimations_();\n }\n\n /**\n * Determine if the view is being animated.\n * @return {boolean} The view is being animated.\n * @api\n */\n getAnimating() {\n return this.hints_[ViewHint.ANIMATING] > 0;\n }\n\n /**\n * Determine if the user is interacting with the view, such as panning or zooming.\n * @return {boolean} The view is being interacted with.\n * @api\n */\n getInteracting() {\n return this.hints_[ViewHint.INTERACTING] > 0;\n }\n\n /**\n * Cancel any ongoing animations.\n * @api\n */\n cancelAnimations() {\n this.setHint(ViewHint.ANIMATING, -this.hints_[ViewHint.ANIMATING]);\n let anchor;\n for (let i = 0, ii = this.animations_.length; i < ii; ++i) {\n const series = this.animations_[i];\n if (series[0].callback) {\n animationCallback(series[0].callback, false);\n }\n if (!anchor) {\n for (let j = 0, jj = series.length; j < jj; ++j) {\n const animation = series[j];\n if (!animation.complete) {\n anchor = animation.anchor;\n break;\n }\n }\n }\n }\n this.animations_.length = 0;\n this.cancelAnchor_ = anchor;\n this.nextCenter_ = null;\n this.nextResolution_ = NaN;\n this.nextRotation_ = NaN;\n }\n\n /**\n * Update all animations.\n */\n updateAnimations_() {\n if (this.updateAnimationKey_ !== undefined) {\n cancelAnimationFrame(this.updateAnimationKey_);\n this.updateAnimationKey_ = undefined;\n }\n if (!this.getAnimating()) {\n return;\n }\n const now = Date.now();\n let more = false;\n for (let i = this.animations_.length - 1; i >= 0; --i) {\n const series = this.animations_[i];\n let seriesComplete = true;\n for (let j = 0, jj = series.length; j < jj; ++j) {\n const animation = series[j];\n if (animation.complete) {\n continue;\n }\n const elapsed = now - animation.start;\n let fraction =\n animation.duration > 0 ? elapsed / animation.duration : 1;\n if (fraction >= 1) {\n animation.complete = true;\n fraction = 1;\n } else {\n seriesComplete = false;\n }\n const progress = animation.easing(fraction);\n if (animation.sourceCenter) {\n const x0 = animation.sourceCenter[0];\n const y0 = animation.sourceCenter[1];\n const x1 = animation.targetCenter[0];\n const y1 = animation.targetCenter[1];\n this.nextCenter_ = animation.targetCenter;\n const x = x0 + progress * (x1 - x0);\n const y = y0 + progress * (y1 - y0);\n this.targetCenter_ = [x, y];\n }\n if (animation.sourceResolution && animation.targetResolution) {\n const resolution =\n progress === 1\n ? animation.targetResolution\n : animation.sourceResolution +\n progress *\n (animation.targetResolution - animation.sourceResolution);\n if (animation.anchor) {\n const size = this.getViewportSize_(this.getRotation());\n const constrainedResolution = this.constraints_.resolution(\n resolution,\n 0,\n size,\n true\n );\n this.targetCenter_ = this.calculateCenterZoom(\n constrainedResolution,\n animation.anchor\n );\n }\n this.nextResolution_ = animation.targetResolution;\n this.targetResolution_ = resolution;\n this.applyTargetState_(true);\n }\n if (\n animation.sourceRotation !== undefined &&\n animation.targetRotation !== undefined\n ) {\n const rotation =\n progress === 1\n ? modulo(animation.targetRotation + Math.PI, 2 * Math.PI) -\n Math.PI\n : animation.sourceRotation +\n progress *\n (animation.targetRotation - animation.sourceRotation);\n if (animation.anchor) {\n const constrainedRotation = this.constraints_.rotation(\n rotation,\n true\n );\n this.targetCenter_ = this.calculateCenterRotate(\n constrainedRotation,\n animation.anchor\n );\n }\n this.nextRotation_ = animation.targetRotation;\n this.targetRotation_ = rotation;\n }\n this.applyTargetState_(true);\n more = true;\n if (!animation.complete) {\n break;\n }\n }\n if (seriesComplete) {\n this.animations_[i] = null;\n this.setHint(ViewHint.ANIMATING, -1);\n this.nextCenter_ = null;\n this.nextResolution_ = NaN;\n this.nextRotation_ = NaN;\n const callback = series[0].callback;\n if (callback) {\n animationCallback(callback, true);\n }\n }\n }\n // prune completed series\n this.animations_ = this.animations_.filter(Boolean);\n if (more && this.updateAnimationKey_ === undefined) {\n this.updateAnimationKey_ = requestAnimationFrame(\n this.updateAnimations_.bind(this)\n );\n }\n }\n\n /**\n * @param {number} rotation Target rotation.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Rotation anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for rotation and anchor.\n */\n calculateCenterRotate(rotation, anchor) {\n let center;\n const currentCenter = this.getCenterInternal();\n if (currentCenter !== undefined) {\n center = [currentCenter[0] - anchor[0], currentCenter[1] - anchor[1]];\n rotateCoordinate(center, rotation - this.getRotation());\n addCoordinate(center, anchor);\n }\n return center;\n }\n\n /**\n * @param {number} resolution Target resolution.\n * @param {import(\"./coordinate.js\").Coordinate} anchor Zoom anchor.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Center for resolution and anchor.\n */\n calculateCenterZoom(resolution, anchor) {\n let center;\n const currentCenter = this.getCenterInternal();\n const currentResolution = this.getResolution();\n if (currentCenter !== undefined && currentResolution !== undefined) {\n const x =\n anchor[0] -\n (resolution * (anchor[0] - currentCenter[0])) / currentResolution;\n const y =\n anchor[1] -\n (resolution * (anchor[1] - currentCenter[1])) / currentResolution;\n center = [x, y];\n }\n return center;\n }\n\n /**\n * Returns the current viewport size.\n * @private\n * @param {number} [rotation] Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size or `[100, 100]` when no viewport is found.\n */\n getViewportSize_(rotation) {\n const size = this.viewportSize_;\n if (rotation) {\n const w = size[0];\n const h = size[1];\n return [\n Math.abs(w * Math.cos(rotation)) + Math.abs(h * Math.sin(rotation)),\n Math.abs(w * Math.sin(rotation)) + Math.abs(h * Math.cos(rotation)),\n ];\n }\n return size;\n }\n\n /**\n * Stores the viewport size on the view. The viewport size is not read every time from the DOM\n * to avoid performance hit and layout reflow.\n * This should be done on map size change.\n * Note: the constraints are not resolved during an animation to avoid stopping it\n * @param {import(\"./size.js\").Size} [size] Viewport size; if undefined, [100, 100] is assumed\n */\n setViewportSize(size) {\n this.viewportSize_ = Array.isArray(size) ? size.slice() : [100, 100];\n if (!this.getAnimating()) {\n this.resolveConstraints(0);\n }\n }\n\n /**\n * Get the view center.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n * @observable\n * @api\n */\n getCenter() {\n const center = this.getCenterInternal();\n if (!center) {\n return center;\n }\n return toUserCoordinate(center, this.getProjection());\n }\n\n /**\n * Get the view center without transforming to user projection.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} The center of the view.\n */\n getCenterInternal() {\n return /** @type {import(\"./coordinate.js\").Coordinate|undefined} */ (\n this.get(ViewProperty.CENTER)\n );\n }\n\n /**\n * @return {Constraints} Constraints.\n */\n getConstraints() {\n return this.constraints_;\n }\n\n /**\n * @return {boolean} Resolution constraint is set\n */\n getConstrainResolution() {\n return this.get('constrainResolution');\n }\n\n /**\n * @param {Array} [hints] Destination array.\n * @return {Array} Hint.\n */\n getHints(hints) {\n if (hints !== undefined) {\n hints[0] = this.hints_[0];\n hints[1] = this.hints_[1];\n return hints;\n }\n return this.hints_.slice();\n }\n\n /**\n * Calculate the extent for the current view state and the passed box size.\n * @param {import(\"./size.js\").Size} [size] The pixel dimensions of the box\n * into which the calculated extent should fit. Defaults to the size of the\n * map the view is associated with.\n * If no map or multiple maps are connected to the view, provide the desired\n * box size (e.g. `map.getSize()`).\n * @return {import(\"./extent.js\").Extent} Extent.\n * @api\n */\n calculateExtent(size) {\n const extent = this.calculateExtentInternal(size);\n return toUserExtent(extent, this.getProjection());\n }\n\n /**\n * @param {import(\"./size.js\").Size} [size] Box pixel size. If not provided,\n * the map's last known viewport size will be used.\n * @return {import(\"./extent.js\").Extent} Extent.\n */\n calculateExtentInternal(size) {\n size = size || this.getViewportSizeMinusPadding_();\n const center = /** @type {!import(\"./coordinate.js\").Coordinate} */ (\n this.getCenterInternal()\n );\n assert(center, 'The view center is not defined');\n const resolution = /** @type {!number} */ (this.getResolution());\n assert(resolution !== undefined, 'The view resolution is not defined');\n const rotation = /** @type {!number} */ (this.getRotation());\n assert(rotation !== undefined, 'The view rotation is not defined');\n\n return getForViewAndSize(center, resolution, rotation, size);\n }\n\n /**\n * Get the maximum resolution of the view.\n * @return {number} The maximum resolution of the view.\n * @api\n */\n getMaxResolution() {\n return this.maxResolution_;\n }\n\n /**\n * Get the minimum resolution of the view.\n * @return {number} The minimum resolution of the view.\n * @api\n */\n getMinResolution() {\n return this.minResolution_;\n }\n\n /**\n * Get the maximum zoom level for the view.\n * @return {number} The maximum zoom level.\n * @api\n */\n getMaxZoom() {\n return /** @type {number} */ (\n this.getZoomForResolution(this.minResolution_)\n );\n }\n\n /**\n * Set a new maximum zoom level for the view.\n * @param {number} zoom The maximum zoom level.\n * @api\n */\n setMaxZoom(zoom) {\n this.applyOptions_(this.getUpdatedOptions_({maxZoom: zoom}));\n }\n\n /**\n * Get the minimum zoom level for the view.\n * @return {number} The minimum zoom level.\n * @api\n */\n getMinZoom() {\n return /** @type {number} */ (\n this.getZoomForResolution(this.maxResolution_)\n );\n }\n\n /**\n * Set a new minimum zoom level for the view.\n * @param {number} zoom The minimum zoom level.\n * @api\n */\n setMinZoom(zoom) {\n this.applyOptions_(this.getUpdatedOptions_({minZoom: zoom}));\n }\n\n /**\n * Set whether the view should allow intermediary zoom levels.\n * @param {boolean} enabled Whether the resolution is constrained.\n * @api\n */\n setConstrainResolution(enabled) {\n this.applyOptions_(this.getUpdatedOptions_({constrainResolution: enabled}));\n }\n\n /**\n * Get the view projection.\n * @return {import(\"./proj/Projection.js\").default} The projection of the view.\n * @api\n */\n getProjection() {\n return this.projection_;\n }\n\n /**\n * Get the view resolution.\n * @return {number|undefined} The resolution of the view.\n * @observable\n * @api\n */\n getResolution() {\n return /** @type {number|undefined} */ (this.get(ViewProperty.RESOLUTION));\n }\n\n /**\n * Get the resolutions for the view. This returns the array of resolutions\n * passed to the constructor of the View, or undefined if none were given.\n * @return {Array|undefined} The resolutions of the view.\n * @api\n */\n getResolutions() {\n return this.resolutions_;\n }\n\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size} [size] Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n * @api\n */\n getResolutionForExtent(extent, size) {\n return this.getResolutionForExtentInternal(\n fromUserExtent(extent, this.getProjection()),\n size\n );\n }\n\n /**\n * Get the resolution for a provided extent (in map units) and size (in pixels).\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {import(\"./size.js\").Size} [size] Box pixel size.\n * @return {number} The resolution at which the provided extent will render at\n * the given size.\n */\n getResolutionForExtentInternal(extent, size) {\n size = size || this.getViewportSizeMinusPadding_();\n const xResolution = getWidth(extent) / size[0];\n const yResolution = getHeight(extent) / size[1];\n return Math.max(xResolution, yResolution);\n }\n\n /**\n * Return a function that returns a value between 0 and 1 for a\n * resolution. Exponential scaling is assumed.\n * @param {number} [power] Power.\n * @return {function(number): number} Resolution for value function.\n */\n getResolutionForValueFunction(power) {\n power = power || 2;\n const maxResolution = this.getConstrainedResolution(this.maxResolution_);\n const minResolution = this.minResolution_;\n const max = Math.log(maxResolution / minResolution) / Math.log(power);\n return (\n /**\n * @param {number} value Value.\n * @return {number} Resolution.\n */\n function (value) {\n const resolution = maxResolution / Math.pow(power, value * max);\n return resolution;\n }\n );\n }\n\n /**\n * Get the view rotation.\n * @return {number} The rotation of the view in radians.\n * @observable\n * @api\n */\n getRotation() {\n return /** @type {number} */ (this.get(ViewProperty.ROTATION));\n }\n\n /**\n * Return a function that returns a resolution for a value between\n * 0 and 1. Exponential scaling is assumed.\n * @param {number} [power] Power.\n * @return {function(number): number} Value for resolution function.\n */\n getValueForResolutionFunction(power) {\n const logPower = Math.log(power || 2);\n const maxResolution = this.getConstrainedResolution(this.maxResolution_);\n const minResolution = this.minResolution_;\n const max = Math.log(maxResolution / minResolution) / logPower;\n return (\n /**\n * @param {number} resolution Resolution.\n * @return {number} Value.\n */\n function (resolution) {\n const value = Math.log(maxResolution / resolution) / logPower / max;\n return value;\n }\n );\n }\n\n /**\n * Returns the size of the viewport minus padding.\n * @private\n * @param {number} [rotation] Take into account the rotation of the viewport when giving the size\n * @return {import(\"./size.js\").Size} Viewport size reduced by the padding.\n */\n getViewportSizeMinusPadding_(rotation) {\n let size = this.getViewportSize_(rotation);\n const padding = this.padding_;\n if (padding) {\n size = [\n size[0] - padding[1] - padding[3],\n size[1] - padding[0] - padding[2],\n ];\n }\n return size;\n }\n\n /**\n * @return {State} View state.\n */\n getState() {\n const projection = this.getProjection();\n const resolution = this.getResolution();\n const rotation = this.getRotation();\n let center = /** @type {import(\"./coordinate.js\").Coordinate} */ (\n this.getCenterInternal()\n );\n const padding = this.padding_;\n if (padding) {\n const reducedSize = this.getViewportSizeMinusPadding_();\n center = calculateCenterOn(\n center,\n this.getViewportSize_(),\n [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]],\n resolution,\n rotation\n );\n }\n return {\n center: center.slice(0),\n projection: projection !== undefined ? projection : null,\n resolution: resolution,\n nextCenter: this.nextCenter_,\n nextResolution: this.nextResolution_,\n nextRotation: this.nextRotation_,\n rotation: rotation,\n zoom: this.getZoom(),\n };\n }\n\n /**\n * @return {ViewStateLayerStateExtent} Like `FrameState`, but just `viewState` and `extent`.\n */\n getViewStateAndExtent() {\n return {\n viewState: this.getState(),\n extent: this.calculateExtent(),\n };\n }\n\n /**\n * Get the current zoom level. This method may return non-integer zoom levels\n * if the view does not constrain the resolution, or if an interaction or\n * animation is underway.\n * @return {number|undefined} Zoom.\n * @api\n */\n getZoom() {\n let zoom;\n const resolution = this.getResolution();\n if (resolution !== undefined) {\n zoom = this.getZoomForResolution(resolution);\n }\n return zoom;\n }\n\n /**\n * Get the zoom level for a resolution.\n * @param {number} resolution The resolution.\n * @return {number|undefined} The zoom level for the provided resolution.\n * @api\n */\n getZoomForResolution(resolution) {\n let offset = this.minZoom_ || 0;\n let max, zoomFactor;\n if (this.resolutions_) {\n const nearest = linearFindNearest(this.resolutions_, resolution, 1);\n offset = nearest;\n max = this.resolutions_[nearest];\n if (nearest == this.resolutions_.length - 1) {\n zoomFactor = 2;\n } else {\n zoomFactor = max / this.resolutions_[nearest + 1];\n }\n } else {\n max = this.maxResolution_;\n zoomFactor = this.zoomFactor_;\n }\n return offset + Math.log(max / resolution) / Math.log(zoomFactor);\n }\n\n /**\n * Get the resolution for a zoom level.\n * @param {number} zoom Zoom level.\n * @return {number} The view resolution for the provided zoom level.\n * @api\n */\n getResolutionForZoom(zoom) {\n if (this.resolutions_) {\n if (this.resolutions_.length <= 1) {\n return 0;\n }\n const baseLevel = clamp(\n Math.floor(zoom),\n 0,\n this.resolutions_.length - 2\n );\n const zoomFactor =\n this.resolutions_[baseLevel] / this.resolutions_[baseLevel + 1];\n return (\n this.resolutions_[baseLevel] /\n Math.pow(zoomFactor, clamp(zoom - baseLevel, 0, 1))\n );\n }\n return (\n this.maxResolution_ / Math.pow(this.zoomFactor_, zoom - this.minZoom_)\n );\n }\n\n /**\n * Fit the given geometry or extent based on the given map size and border.\n * The size is pixel dimensions of the box to fit the extent into.\n * In most cases you will want to use the map size, that is `map.getSize()`.\n * Takes care of the map angle.\n * @param {import(\"./geom/SimpleGeometry.js\").default|import(\"./extent.js\").Extent} geometryOrExtent The geometry or\n * extent to fit the view to.\n * @param {FitOptions} [options] Options.\n * @api\n */\n fit(geometryOrExtent, options) {\n /** @type {import(\"./geom/SimpleGeometry.js\").default} */\n let geometry;\n assert(\n Array.isArray(geometryOrExtent) ||\n typeof (/** @type {?} */ (geometryOrExtent).getSimplifiedGeometry) ===\n 'function',\n 'Invalid extent or geometry provided as `geometry`'\n );\n if (Array.isArray(geometryOrExtent)) {\n assert(\n !isEmpty(geometryOrExtent),\n 'Cannot fit empty extent provided as `geometry`'\n );\n const extent = fromUserExtent(geometryOrExtent, this.getProjection());\n geometry = polygonFromExtent(extent);\n } else if (geometryOrExtent.getType() === 'Circle') {\n const extent = fromUserExtent(\n geometryOrExtent.getExtent(),\n this.getProjection()\n );\n geometry = polygonFromExtent(extent);\n geometry.rotate(this.getRotation(), getCenter(extent));\n } else {\n const userProjection = getUserProjection();\n if (userProjection) {\n geometry = /** @type {import(\"./geom/SimpleGeometry.js\").default} */ (\n geometryOrExtent\n .clone()\n .transform(userProjection, this.getProjection())\n );\n } else {\n geometry = geometryOrExtent;\n }\n }\n\n this.fitInternal(geometry, options);\n }\n\n /**\n * Calculate rotated extent\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @return {import(\"./extent\").Extent} The rotated extent for the geometry.\n */\n rotatedExtentForGeometry(geometry) {\n const rotation = this.getRotation();\n const cosAngle = Math.cos(rotation);\n const sinAngle = Math.sin(-rotation);\n const coords = geometry.getFlatCoordinates();\n const stride = geometry.getStride();\n let minRotX = +Infinity;\n let minRotY = +Infinity;\n let maxRotX = -Infinity;\n let maxRotY = -Infinity;\n for (let i = 0, ii = coords.length; i < ii; i += stride) {\n const rotX = coords[i] * cosAngle - coords[i + 1] * sinAngle;\n const rotY = coords[i] * sinAngle + coords[i + 1] * cosAngle;\n minRotX = Math.min(minRotX, rotX);\n minRotY = Math.min(minRotY, rotY);\n maxRotX = Math.max(maxRotX, rotX);\n maxRotY = Math.max(maxRotY, rotY);\n }\n return [minRotX, minRotY, maxRotX, maxRotY];\n }\n\n /**\n * @param {import(\"./geom/SimpleGeometry.js\").default} geometry The geometry.\n * @param {FitOptions} [options] Options.\n */\n fitInternal(geometry, options) {\n options = options || {};\n let size = options.size;\n if (!size) {\n size = this.getViewportSizeMinusPadding_();\n }\n const padding =\n options.padding !== undefined ? options.padding : [0, 0, 0, 0];\n const nearest = options.nearest !== undefined ? options.nearest : false;\n let minResolution;\n if (options.minResolution !== undefined) {\n minResolution = options.minResolution;\n } else if (options.maxZoom !== undefined) {\n minResolution = this.getResolutionForZoom(options.maxZoom);\n } else {\n minResolution = 0;\n }\n\n const rotatedExtent = this.rotatedExtentForGeometry(geometry);\n\n // calculate resolution\n let resolution = this.getResolutionForExtentInternal(rotatedExtent, [\n size[0] - padding[1] - padding[3],\n size[1] - padding[0] - padding[2],\n ]);\n resolution = isNaN(resolution)\n ? minResolution\n : Math.max(resolution, minResolution);\n resolution = this.getConstrainedResolution(resolution, nearest ? 0 : 1);\n\n // calculate center\n const rotation = this.getRotation();\n const sinAngle = Math.sin(rotation);\n const cosAngle = Math.cos(rotation);\n const centerRot = getCenter(rotatedExtent);\n centerRot[0] += ((padding[1] - padding[3]) / 2) * resolution;\n centerRot[1] += ((padding[0] - padding[2]) / 2) * resolution;\n const centerX = centerRot[0] * cosAngle - centerRot[1] * sinAngle;\n const centerY = centerRot[1] * cosAngle + centerRot[0] * sinAngle;\n const center = this.getConstrainedCenter([centerX, centerY], resolution);\n const callback = options.callback ? options.callback : VOID;\n\n if (options.duration !== undefined) {\n this.animateInternal(\n {\n resolution: resolution,\n center: center,\n duration: options.duration,\n easing: options.easing,\n },\n callback\n );\n } else {\n this.targetResolution_ = resolution;\n this.targetCenter_ = center;\n this.applyTargetState_(false, true);\n animationCallback(callback, true);\n }\n }\n\n /**\n * Center on coordinate and view position.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @api\n */\n centerOn(coordinate, size, position) {\n this.centerOnInternal(\n fromUserCoordinate(coordinate, this.getProjection()),\n size,\n position\n );\n }\n\n /**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n */\n centerOnInternal(coordinate, size, position) {\n this.setCenterInternal(\n calculateCenterOn(\n coordinate,\n size,\n position,\n this.getResolution(),\n this.getRotation()\n )\n );\n }\n\n /**\n * Calculates the shift between map and viewport center.\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @return {Array|undefined} Center shift.\n */\n calculateCenterShift(center, resolution, rotation, size) {\n let centerShift;\n const padding = this.padding_;\n if (padding && center) {\n const reducedSize = this.getViewportSizeMinusPadding_(-rotation);\n const shiftedCenter = calculateCenterOn(\n center,\n size,\n [reducedSize[0] / 2 + padding[3], reducedSize[1] / 2 + padding[0]],\n resolution,\n rotation\n );\n centerShift = [\n center[0] - shiftedCenter[0],\n center[1] - shiftedCenter[1],\n ];\n }\n return centerShift;\n }\n\n /**\n * @return {boolean} Is defined.\n */\n isDef() {\n return !!this.getCenterInternal() && this.getResolution() !== undefined;\n }\n\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n * @api\n */\n adjustCenter(deltaCoordinates) {\n const center = toUserCoordinate(this.targetCenter_, this.getProjection());\n this.setCenter([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n }\n\n /**\n * Adds relative coordinates to the center of the view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate} deltaCoordinates Relative value to add.\n */\n adjustCenterInternal(deltaCoordinates) {\n const center = this.targetCenter_;\n this.setCenterInternal([\n center[0] + deltaCoordinates[0],\n center[1] + deltaCoordinates[1],\n ]);\n }\n\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n * @api\n */\n adjustResolution(ratio, anchor) {\n anchor = anchor && fromUserCoordinate(anchor, this.getProjection());\n this.adjustResolutionInternal(ratio, anchor);\n }\n\n /**\n * Multiply the view resolution by a ratio, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} ratio The ratio to apply on the view resolution.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n */\n adjustResolutionInternal(ratio, anchor) {\n const isMoving = this.getAnimating() || this.getInteracting();\n const size = this.getViewportSize_(this.getRotation());\n const newResolution = this.constraints_.resolution(\n this.targetResolution_ * ratio,\n 0,\n size,\n isMoving\n );\n\n if (anchor) {\n this.targetCenter_ = this.calculateCenterZoom(newResolution, anchor);\n }\n\n this.targetResolution_ *= ratio;\n this.applyTargetState_();\n }\n\n /**\n * Adds a value to the view zoom level, optionally using an anchor. Any resolution\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom level.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n * @api\n */\n adjustZoom(delta, anchor) {\n this.adjustResolution(Math.pow(this.zoomFactor_, -delta), anchor);\n }\n\n /**\n * Adds a value to the view rotation, optionally using an anchor. Any rotation\n * constraint will apply.\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The rotation center.\n * @api\n */\n adjustRotation(delta, anchor) {\n if (anchor) {\n anchor = fromUserCoordinate(anchor, this.getProjection());\n }\n this.adjustRotationInternal(delta, anchor);\n }\n\n /**\n * @param {number} delta Relative value to add to the zoom rotation, in radians.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The rotation center.\n */\n adjustRotationInternal(delta, anchor) {\n const isMoving = this.getAnimating() || this.getInteracting();\n const newRotation = this.constraints_.rotation(\n this.targetRotation_ + delta,\n isMoving\n );\n if (anchor) {\n this.targetCenter_ = this.calculateCenterRotate(newRotation, anchor);\n }\n this.targetRotation_ += delta;\n this.applyTargetState_();\n }\n\n /**\n * Set the center of the current view. Any extent constraint will apply.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n * @observable\n * @api\n */\n setCenter(center) {\n this.setCenterInternal(\n center ? fromUserCoordinate(center, this.getProjection()) : center\n );\n }\n\n /**\n * Set the center using the view projection (not the user projection).\n * @param {import(\"./coordinate.js\").Coordinate|undefined} center The center of the view.\n */\n setCenterInternal(center) {\n this.targetCenter_ = center;\n this.applyTargetState_();\n }\n\n /**\n * @param {import(\"./ViewHint.js\").default} hint Hint.\n * @param {number} delta Delta.\n * @return {number} New value.\n */\n setHint(hint, delta) {\n this.hints_[hint] += delta;\n this.changed();\n return this.hints_[hint];\n }\n\n /**\n * Set the resolution for this view. Any resolution constraint will apply.\n * @param {number|undefined} resolution The resolution of the view.\n * @observable\n * @api\n */\n setResolution(resolution) {\n this.targetResolution_ = resolution;\n this.applyTargetState_();\n }\n\n /**\n * Set the rotation for this view. Any rotation constraint will apply.\n * @param {number} rotation The rotation of the view in radians.\n * @observable\n * @api\n */\n setRotation(rotation) {\n this.targetRotation_ = rotation;\n this.applyTargetState_();\n }\n\n /**\n * Zoom to a specific zoom level. Any resolution constrain will apply.\n * @param {number} zoom Zoom level.\n * @api\n */\n setZoom(zoom) {\n this.setResolution(this.getResolutionForZoom(zoom));\n }\n\n /**\n * Recompute rotation/resolution/center based on target values.\n * Note: we have to compute rotation first, then resolution and center considering that\n * parameters can influence one another in case a view extent constraint is present.\n * @param {boolean} [doNotCancelAnims] Do not cancel animations.\n * @param {boolean} [forceMoving] Apply constraints as if the view is moving.\n * @private\n */\n applyTargetState_(doNotCancelAnims, forceMoving) {\n const isMoving =\n this.getAnimating() || this.getInteracting() || forceMoving;\n\n // compute rotation\n const newRotation = this.constraints_.rotation(\n this.targetRotation_,\n isMoving\n );\n const size = this.getViewportSize_(newRotation);\n const newResolution = this.constraints_.resolution(\n this.targetResolution_,\n 0,\n size,\n isMoving\n );\n const newCenter = this.constraints_.center(\n this.targetCenter_,\n newResolution,\n size,\n isMoving,\n this.calculateCenterShift(\n this.targetCenter_,\n newResolution,\n newRotation,\n size\n )\n );\n\n if (this.get(ViewProperty.ROTATION) !== newRotation) {\n this.set(ViewProperty.ROTATION, newRotation);\n }\n if (this.get(ViewProperty.RESOLUTION) !== newResolution) {\n this.set(ViewProperty.RESOLUTION, newResolution);\n this.set('zoom', this.getZoom(), true);\n }\n if (\n !newCenter ||\n !this.get(ViewProperty.CENTER) ||\n !equals(this.get(ViewProperty.CENTER), newCenter)\n ) {\n this.set(ViewProperty.CENTER, newCenter);\n }\n\n if (this.getAnimating() && !doNotCancelAnims) {\n this.cancelAnimations();\n }\n this.cancelAnchor_ = undefined;\n }\n\n /**\n * If any constraints need to be applied, an animation will be triggered.\n * This is typically done on interaction end.\n * Note: calling this with a duration of 0 will apply the constrained values straight away,\n * without animation.\n * @param {number} [duration] The animation duration in ms.\n * @param {number} [resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n */\n resolveConstraints(duration, resolutionDirection, anchor) {\n duration = duration !== undefined ? duration : 200;\n const direction = resolutionDirection || 0;\n\n const newRotation = this.constraints_.rotation(this.targetRotation_);\n const size = this.getViewportSize_(newRotation);\n const newResolution = this.constraints_.resolution(\n this.targetResolution_,\n direction,\n size\n );\n const newCenter = this.constraints_.center(\n this.targetCenter_,\n newResolution,\n size,\n false,\n this.calculateCenterShift(\n this.targetCenter_,\n newResolution,\n newRotation,\n size\n )\n );\n\n if (duration === 0 && !this.cancelAnchor_) {\n this.targetResolution_ = newResolution;\n this.targetRotation_ = newRotation;\n this.targetCenter_ = newCenter;\n this.applyTargetState_();\n return;\n }\n\n anchor = anchor || (duration === 0 ? this.cancelAnchor_ : undefined);\n this.cancelAnchor_ = undefined;\n\n if (\n this.getResolution() !== newResolution ||\n this.getRotation() !== newRotation ||\n !this.getCenterInternal() ||\n !equals(this.getCenterInternal(), newCenter)\n ) {\n if (this.getAnimating()) {\n this.cancelAnimations();\n }\n\n this.animateInternal({\n rotation: newRotation,\n center: newCenter,\n resolution: newResolution,\n duration: duration,\n easing: easeOut,\n anchor: anchor,\n });\n }\n }\n\n /**\n * Notify the View that an interaction has started.\n * The view state will be resolved to a stable one if needed\n * (depending on its constraints).\n * @api\n */\n beginInteraction() {\n this.resolveConstraints(0);\n\n this.setHint(ViewHint.INTERACTING, 1);\n }\n\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number} [duration] Animation duration in ms.\n * @param {number} [resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n * @api\n */\n endInteraction(duration, resolutionDirection, anchor) {\n anchor = anchor && fromUserCoordinate(anchor, this.getProjection());\n this.endInteractionInternal(duration, resolutionDirection, anchor);\n }\n\n /**\n * Notify the View that an interaction has ended. The view state will be resolved\n * to a stable one if needed (depending on its constraints).\n * @param {number} [duration] Animation duration in ms.\n * @param {number} [resolutionDirection] Which direction to zoom.\n * @param {import(\"./coordinate.js\").Coordinate} [anchor] The origin of the transformation.\n */\n endInteractionInternal(duration, resolutionDirection, anchor) {\n if (!this.getInteracting()) {\n return;\n }\n this.setHint(ViewHint.INTERACTING, -1);\n this.resolveConstraints(duration, resolutionDirection, anchor);\n }\n\n /**\n * Get a valid position for the view center according to the current constraints.\n * @param {import(\"./coordinate.js\").Coordinate|undefined} targetCenter Target center position.\n * @param {number} [targetResolution] Target resolution. If not supplied, the current one will be used.\n * This is useful to guess a valid center position at a different zoom level.\n * @return {import(\"./coordinate.js\").Coordinate|undefined} Valid center position.\n */\n getConstrainedCenter(targetCenter, targetResolution) {\n const size = this.getViewportSize_(this.getRotation());\n return this.constraints_.center(\n targetCenter,\n targetResolution || this.getResolution(),\n size\n );\n }\n\n /**\n * Get a valid zoom level according to the current view constraints.\n * @param {number|undefined} targetZoom Target zoom.\n * @param {number} [direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid zoom level.\n */\n getConstrainedZoom(targetZoom, direction) {\n const targetRes = this.getResolutionForZoom(targetZoom);\n return this.getZoomForResolution(\n this.getConstrainedResolution(targetRes, direction)\n );\n }\n\n /**\n * Get a valid resolution according to the current view constraints.\n * @param {number|undefined} targetResolution Target resolution.\n * @param {number} [direction=0] Indicate which resolution should be used\n * by a renderer if the view resolution does not match any resolution of the tile source.\n * If 0, the nearest resolution will be used. If 1, the nearest lower resolution\n * will be used. If -1, the nearest higher resolution will be used.\n * @return {number|undefined} Valid resolution.\n */\n getConstrainedResolution(targetResolution, direction) {\n direction = direction || 0;\n const size = this.getViewportSize_(this.getRotation());\n\n return this.constraints_.resolution(targetResolution, direction, size);\n }\n}\n\n/**\n * @param {Function} callback Callback.\n * @param {*} returnValue Return value.\n */\nfunction animationCallback(callback, returnValue) {\n setTimeout(function () {\n callback(returnValue);\n }, 0);\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./centerconstraint.js\").Type} The constraint.\n */\nexport function createCenterConstraint(options) {\n if (options.extent !== undefined) {\n const smooth =\n options.smoothExtentConstraint !== undefined\n ? options.smoothExtentConstraint\n : true;\n return createExtent(options.extent, options.constrainOnlyCenter, smooth);\n }\n\n const projection = createProjection(options.projection, 'EPSG:3857');\n if (options.multiWorld !== true && projection.isGlobal()) {\n const extent = projection.getExtent().slice();\n extent[0] = -Infinity;\n extent[2] = Infinity;\n return createExtent(extent, false, false);\n }\n\n return centerNone;\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {{constraint: import(\"./resolutionconstraint.js\").Type, maxResolution: number,\n * minResolution: number, minZoom: number, zoomFactor: number}} The constraint.\n */\nexport function createResolutionConstraint(options) {\n let resolutionConstraint;\n let maxResolution;\n let minResolution;\n\n // TODO: move these to be ol constants\n // see https://github.com/openlayers/openlayers/issues/2076\n const defaultMaxZoom = 28;\n const defaultZoomFactor = 2;\n\n let minZoom =\n options.minZoom !== undefined ? options.minZoom : DEFAULT_MIN_ZOOM;\n\n let maxZoom =\n options.maxZoom !== undefined ? options.maxZoom : defaultMaxZoom;\n\n const zoomFactor =\n options.zoomFactor !== undefined ? options.zoomFactor : defaultZoomFactor;\n\n const multiWorld =\n options.multiWorld !== undefined ? options.multiWorld : false;\n\n const smooth =\n options.smoothResolutionConstraint !== undefined\n ? options.smoothResolutionConstraint\n : true;\n\n const showFullExtent =\n options.showFullExtent !== undefined ? options.showFullExtent : false;\n\n const projection = createProjection(options.projection, 'EPSG:3857');\n const projExtent = projection.getExtent();\n let constrainOnlyCenter = options.constrainOnlyCenter;\n let extent = options.extent;\n if (!multiWorld && !extent && projection.isGlobal()) {\n constrainOnlyCenter = false;\n extent = projExtent;\n }\n\n if (options.resolutions !== undefined) {\n const resolutions = options.resolutions;\n maxResolution = resolutions[minZoom];\n minResolution =\n resolutions[maxZoom] !== undefined\n ? resolutions[maxZoom]\n : resolutions[resolutions.length - 1];\n\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToResolutions(\n resolutions,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n } else {\n resolutionConstraint = createMinMaxResolution(\n maxResolution,\n minResolution,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n }\n } else {\n // calculate the default min and max resolution\n const size = !projExtent\n ? // use an extent that can fit the whole world if need be\n (360 * METERS_PER_UNIT.degrees) / projection.getMetersPerUnit()\n : Math.max(getWidth(projExtent), getHeight(projExtent));\n\n const defaultMaxResolution =\n size / DEFAULT_TILE_SIZE / Math.pow(defaultZoomFactor, DEFAULT_MIN_ZOOM);\n\n const defaultMinResolution =\n defaultMaxResolution /\n Math.pow(defaultZoomFactor, defaultMaxZoom - DEFAULT_MIN_ZOOM);\n\n // user provided maxResolution takes precedence\n maxResolution = options.maxResolution;\n if (maxResolution !== undefined) {\n minZoom = 0;\n } else {\n maxResolution = defaultMaxResolution / Math.pow(zoomFactor, minZoom);\n }\n\n // user provided minResolution takes precedence\n minResolution = options.minResolution;\n if (minResolution === undefined) {\n if (options.maxZoom !== undefined) {\n if (options.maxResolution !== undefined) {\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom);\n } else {\n minResolution = defaultMaxResolution / Math.pow(zoomFactor, maxZoom);\n }\n } else {\n minResolution = defaultMinResolution;\n }\n }\n\n // given discrete zoom levels, minResolution may be different than provided\n maxZoom =\n minZoom +\n Math.floor(\n Math.log(maxResolution / minResolution) / Math.log(zoomFactor)\n );\n minResolution = maxResolution / Math.pow(zoomFactor, maxZoom - minZoom);\n\n if (options.constrainResolution) {\n resolutionConstraint = createSnapToPower(\n zoomFactor,\n maxResolution,\n minResolution,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n } else {\n resolutionConstraint = createMinMaxResolution(\n maxResolution,\n minResolution,\n smooth,\n !constrainOnlyCenter && extent,\n showFullExtent\n );\n }\n }\n return {\n constraint: resolutionConstraint,\n maxResolution: maxResolution,\n minResolution: minResolution,\n minZoom: minZoom,\n zoomFactor: zoomFactor,\n };\n}\n\n/**\n * @param {ViewOptions} options View options.\n * @return {import(\"./rotationconstraint.js\").Type} Rotation constraint.\n */\nexport function createRotationConstraint(options) {\n const enableRotation =\n options.enableRotation !== undefined ? options.enableRotation : true;\n if (enableRotation) {\n const constrainRotation = options.constrainRotation;\n if (constrainRotation === undefined || constrainRotation === true) {\n return createSnapToZero();\n }\n if (constrainRotation === false) {\n return rotationNone;\n }\n if (typeof constrainRotation === 'number') {\n return createSnapToN(constrainRotation);\n }\n return rotationNone;\n }\n return disable;\n}\n\n/**\n * Determine if an animation involves no view change.\n * @param {Animation} animation The animation.\n * @return {boolean} The animation involves no view change.\n */\nexport function isNoopAnimation(animation) {\n if (animation.sourceCenter && animation.targetCenter) {\n if (!coordinatesEqual(animation.sourceCenter, animation.targetCenter)) {\n return false;\n }\n }\n if (animation.sourceResolution !== animation.targetResolution) {\n return false;\n }\n if (animation.sourceRotation !== animation.targetRotation) {\n return false;\n }\n return true;\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {import(\"./size.js\").Size} size Box pixel size.\n * @param {import(\"./pixel.js\").Pixel} position Position on the view to center on.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @return {import(\"./coordinate.js\").Coordinate} Shifted center.\n */\nfunction calculateCenterOn(coordinate, size, position, resolution, rotation) {\n // calculate rotated position\n const cosAngle = Math.cos(-rotation);\n let sinAngle = Math.sin(-rotation);\n let rotX = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n let rotY = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n rotX += (size[0] / 2 - position[0]) * resolution;\n rotY += (position[1] - size[1] / 2) * resolution;\n\n // go back to original angle\n sinAngle = -sinAngle; // go back to original rotation\n const centerX = rotX * cosAngle - rotY * sinAngle;\n const centerY = rotY * cosAngle + rotX * sinAngle;\n\n return [centerX, centerY];\n}\n\nexport default View;\n","/**\n * @module ol/ViewHint\n */\n\n/**\n * @enum {number}\n */\nexport default {\n ANIMATING: 0,\n INTERACTING: 1,\n};\n","/**\n * @module ol/ViewProperty\n */\n\n/**\n * @enum {string}\n */\nexport default {\n CENTER: 'center',\n RESOLUTION: 'resolution',\n ROTATION: 'rotation',\n};\n","/**\n * @module ol/array\n */\n\n/**\n * Performs a binary search on the provided sorted list and returns the index of the item if found. If it can't be found it'll return -1.\n * https://github.com/darkskyapp/binary-search\n *\n * @param {Array<*>} haystack Items to search through.\n * @param {*} needle The item to look for.\n * @param {Function} [comparator] Comparator function.\n * @return {number} The index of the item if found, -1 if not.\n */\nexport function binarySearch(haystack, needle, comparator) {\n let mid, cmp;\n comparator = comparator || ascending;\n let low = 0;\n let high = haystack.length;\n let found = false;\n\n while (low < high) {\n /* Note that \"(low + high) >>> 1\" may overflow, and results in a typecast\n * to double (which gives the wrong results). */\n mid = low + ((high - low) >> 1);\n cmp = +comparator(haystack[mid], needle);\n\n if (cmp < 0.0) {\n /* Too low. */\n low = mid + 1;\n } else {\n /* Key found or too high */\n high = mid;\n found = !cmp;\n }\n }\n\n /* Key not found. */\n return found ? low : ~low;\n}\n\n/**\n * Compare function sorting arrays in ascending order. Safe to use for numeric values.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is less than, equal to, or greater than the second.\n */\nexport function ascending(a, b) {\n return a > b ? 1 : a < b ? -1 : 0;\n}\n\n/**\n * Compare function sorting arrays in descending order. Safe to use for numeric values.\n * @param {*} a The first object to be compared.\n * @param {*} b The second object to be compared.\n * @return {number} A negative number, zero, or a positive number as the first\n * argument is greater than, equal to, or less than the second.\n */\nexport function descending(a, b) {\n return a < b ? 1 : a > b ? -1 : 0;\n}\n\n/**\n * {@link module:ol/tilegrid/TileGrid~TileGrid#getZForResolution} can use a function\n * of this type to determine which nearest resolution to use.\n *\n * This function takes a `{number}` representing a value between two array entries,\n * a `{number}` representing the value of the nearest higher entry and\n * a `{number}` representing the value of the nearest lower entry\n * as arguments and returns a `{number}`. If a negative number or zero is returned\n * the lower value will be used, if a positive number is returned the higher value\n * will be used.\n * @typedef {function(number, number, number): number} NearestDirectionFunction\n * @api\n */\n\n/**\n * @param {Array} arr Array in descending order.\n * @param {number} target Target.\n * @param {number|NearestDirectionFunction} direction\n * 0 means return the nearest,\n * > 0 means return the largest nearest,\n * < 0 means return the smallest nearest.\n * @return {number} Index.\n */\nexport function linearFindNearest(arr, target, direction) {\n if (arr[0] <= target) {\n return 0;\n }\n\n const n = arr.length;\n if (target <= arr[n - 1]) {\n return n - 1;\n }\n\n if (typeof direction === 'function') {\n for (let i = 1; i < n; ++i) {\n const candidate = arr[i];\n if (candidate === target) {\n return i;\n }\n if (candidate < target) {\n if (direction(target, arr[i - 1], candidate) > 0) {\n return i - 1;\n }\n return i;\n }\n }\n return n - 1;\n }\n\n if (direction > 0) {\n for (let i = 1; i < n; ++i) {\n if (arr[i] < target) {\n return i - 1;\n }\n }\n return n - 1;\n }\n\n if (direction < 0) {\n for (let i = 1; i < n; ++i) {\n if (arr[i] <= target) {\n return i;\n }\n }\n return n - 1;\n }\n\n for (let i = 1; i < n; ++i) {\n if (arr[i] == target) {\n return i;\n }\n if (arr[i] < target) {\n if (arr[i - 1] - target < target - arr[i]) {\n return i - 1;\n }\n return i;\n }\n }\n return n - 1;\n}\n\n/**\n * @param {Array<*>} arr Array.\n * @param {number} begin Begin index.\n * @param {number} end End index.\n */\nexport function reverseSubArray(arr, begin, end) {\n while (begin < end) {\n const tmp = arr[begin];\n arr[begin] = arr[end];\n arr[end] = tmp;\n ++begin;\n --end;\n }\n}\n\n/**\n * @param {Array} arr The array to modify.\n * @param {!Array|VALUE} data The elements or arrays of elements to add to arr.\n * @template VALUE\n */\nexport function extend(arr, data) {\n const extension = Array.isArray(data) ? data : [data];\n const length = extension.length;\n for (let i = 0; i < length; i++) {\n arr[arr.length] = extension[i];\n }\n}\n\n/**\n * @param {Array} arr The array to modify.\n * @param {VALUE} obj The element to remove.\n * @template VALUE\n * @return {boolean} If the element was removed.\n */\nexport function remove(arr, obj) {\n const i = arr.indexOf(obj);\n const found = i > -1;\n if (found) {\n arr.splice(i, 1);\n }\n return found;\n}\n\n/**\n * @param {Array|Uint8ClampedArray} arr1 The first array to compare.\n * @param {Array|Uint8ClampedArray} arr2 The second array to compare.\n * @return {boolean} Whether the two arrays are equal.\n */\nexport function equals(arr1, arr2) {\n const len1 = arr1.length;\n if (len1 !== arr2.length) {\n return false;\n }\n for (let i = 0; i < len1; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\n/**\n * Sort the passed array such that the relative order of equal elements is preserved.\n * See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability for details.\n * @param {Array<*>} arr The array to sort (modifies original).\n * @param {!function(*, *): number} compareFnc Comparison function.\n * @api\n */\nexport function stableSort(arr, compareFnc) {\n const length = arr.length;\n const tmp = Array(arr.length);\n let i;\n for (i = 0; i < length; i++) {\n tmp[i] = {index: i, value: arr[i]};\n }\n tmp.sort(function (a, b) {\n return compareFnc(a.value, b.value) || a.index - b.index;\n });\n for (i = 0; i < arr.length; i++) {\n arr[i] = tmp[i].value;\n }\n}\n\n/**\n * @param {Array<*>} arr The array to test.\n * @param {Function} [func] Comparison function.\n * @param {boolean} [strict] Strictly sorted (default false).\n * @return {boolean} Return index.\n */\nexport function isSorted(arr, func, strict) {\n const compare = func || ascending;\n return arr.every(function (currentVal, index) {\n if (index === 0) {\n return true;\n }\n const res = compare(arr[index - 1], currentVal);\n return !(res > 0 || (strict && res === 0));\n });\n}\n","/**\n * @module ol/asserts\n */\n\n/**\n * @param {*} assertion Assertion we expected to be truthy.\n * @param {string} errorMessage Error message.\n */\nexport function assert(assertion, errorMessage) {\n if (!assertion) {\n throw new Error(errorMessage);\n }\n}\n","/**\n * RGB space.\n *\n * @module color-space/rgb\n */\n\nexport default {\n\tname: 'rgb',\n\tmin: [0,0,0],\n\tmax: [255,255,255],\n\tchannel: ['red', 'green', 'blue'],\n\talias: ['RGB']\n};\n","/**\n * CIE XYZ\n *\n * @module color-space/xyz\n */\nimport rgb from './rgb.js';\n\nvar xyz = {\n\tname: 'xyz',\n\tmin: [0,0,0],\n\tchannel: ['X','Y','Z'],\n\talias: ['XYZ', 'ciexyz', 'cie1931']\n};\n\n\n/**\n * Whitepoint reference values with observer/illuminant\n *\n * http://en.wikipedia.org/wiki/Standard_illuminant\n */\nxyz.whitepoint = {\n\t//1931 2°\n\t2: {\n\t\t//incadescent\n\t\tA:[109.85, 100, 35.585],\n\t\t// B:[],\n\t\tC: [98.074, 100, 118.232],\n\t\tD50: [96.422, 100, 82.521],\n\t\tD55: [95.682, 100, 92.149],\n\t\t//daylight\n\t\tD65: [95.045592705167, 100, 108.9057750759878],\n\t\tD75: [94.972, 100, 122.638],\n\t\t//flourescent\n\t\t// F1: [],\n\t\tF2: [99.187, 100, 67.395],\n\t\t// F3: [],\n\t\t// F4: [],\n\t\t// F5: [],\n\t\t// F6:[],\n\t\tF7: [95.044, 100, 108.755],\n\t\t// F8: [],\n\t\t// F9: [],\n\t\t// F10: [],\n\t\tF11: [100.966, 100, 64.370],\n\t\t// F12: [],\n\t\tE: [100,100,100]\n\t},\n\n\t//1964 10°\n\t10: {\n\t\t//incadescent\n\t\tA:[111.144, 100, 35.200],\n\t\tC: [97.285, 100, 116.145],\n\t\tD50: [96.720, 100, 81.427],\n\t\tD55: [95.799, 100, 90.926],\n\t\t//daylight\n\t\tD65: [94.811, 100, 107.304],\n\t\tD75: [94.416, 100, 120.641],\n\t\t//flourescent\n\t\tF2: [103.280, 100, 69.026],\n\t\tF7: [95.792, 100, 107.687],\n\t\tF11: [103.866, 100, 65.627],\n\t\tE: [100,100,100]\n\t}\n};\n\n\n/**\n * Top values are the whitepoint’s top values, default are D65\n */\nxyz.max = xyz.whitepoint[2].D65;\n\n\n/**\n * Transform xyz to rgb\n *\n * @param {Array} xyz Array of xyz values\n *\n * @return {Array} RGB values\n */\nxyz.rgb = function (_xyz, white) {\n\t//FIXME: make sure we have to divide like this. Probably we have to replace matrix as well then\n\twhite = white || xyz.whitepoint[2].E;\n\n\tvar x = _xyz[0] / white[0],\n\t\ty = _xyz[1] / white[1],\n\t\tz = _xyz[2] / white[2],\n\t\tr, g, b;\n\n\t// assume sRGB\n\t// http://www.brucelindbloom.com/index.html?Eqn_RGB_XYZ_Matrix.html\n\tr = (x * 3.240969941904521) + (y * -1.537383177570093) + (z * -0.498610760293);\n\tg = (x * -0.96924363628087) + (y * 1.87596750150772) + (z * 0.041555057407175);\n\tb = (x * 0.055630079696993) + (y * -0.20397695888897) + (z * 1.056971514242878);\n\n\tr = r > 0.0031308 ? ((1.055 * Math.pow(r, 1.0 / 2.4)) - 0.055)\n\t\t: r = (r * 12.92);\n\n\tg = g > 0.0031308 ? ((1.055 * Math.pow(g, 1.0 / 2.4)) - 0.055)\n\t\t: g = (g * 12.92);\n\n\tb = b > 0.0031308 ? ((1.055 * Math.pow(b, 1.0 / 2.4)) - 0.055)\n\t\t: b = (b * 12.92);\n\n\tr = Math.min(Math.max(0, r), 1);\n\tg = Math.min(Math.max(0, g), 1);\n\tb = Math.min(Math.max(0, b), 1);\n\n\treturn [r * 255, g * 255, b * 255];\n}\n\n\n\n/**\n * RGB to XYZ\n *\n * @param {Array} rgb RGB channels\n *\n * @return {Array} XYZ channels\n */\nrgb.xyz = function(rgb, white) {\n\tvar r = rgb[0] / 255,\n\t\t\tg = rgb[1] / 255,\n\t\t\tb = rgb[2] / 255;\n\n\t// assume sRGB\n\tr = r > 0.04045 ? Math.pow(((r + 0.055) / 1.055), 2.4) : (r / 12.92);\n\tg = g > 0.04045 ? Math.pow(((g + 0.055) / 1.055), 2.4) : (g / 12.92);\n\tb = b > 0.04045 ? Math.pow(((b + 0.055) / 1.055), 2.4) : (b / 12.92);\n\n\tvar x = (r * 0.41239079926595) + (g * 0.35758433938387) + (b * 0.18048078840183);\n\tvar y = (r * 0.21263900587151) + (g * 0.71516867876775) + (b * 0.072192315360733);\n\tvar z = (r * 0.019330818715591) + (g * 0.11919477979462) + (b * 0.95053215224966);\n\n\twhite = white || xyz.whitepoint[2].E;\n\n\treturn [x * white[0], y * white[1], z * white[2]];\n};\n\n\n\nexport default xyz;\n","/**\n * CIE LUV (C'est la vie)\n *\n * @module color-space/luv\n */\n import xyz from './xyz.js';\n\nexport default {\n\tname: 'luv',\n\t//NOTE: luv has no rigidly defined limits\n\t//easyrgb fails to get proper coords\n\t//boronine states no rigid limits\n\t//colorMine refers this ones:\n\tmin: [0,-134,-140],\n\tmax: [100,224,122],\n\tchannel: ['lightness', 'u', 'v'],\n\talias: ['LUV', 'cieluv', 'cie1976'],\n\n\txyz: function(arg, i, o){\n\t\tvar _u, _v, l, u, v, x, y, z, xn, yn, zn, un, vn;\n\t\tl = arg[0], u = arg[1], v = arg[2];\n\n\t\tif (l === 0) return [0,0,0];\n\n\t\t//get constants\n\t\t//var e = 0.008856451679035631; //(6/29)^3\n\t\tvar k = 0.0011070564598794539; //(3/29)^3\n\n\t\t//get illuminant/observer\n\t\ti = i || 'D65';\n\t\to = o || 2;\n\n\t\txn = xyz.whitepoint[o][i][0];\n\t\tyn = xyz.whitepoint[o][i][1];\n\t\tzn = xyz.whitepoint[o][i][2];\n\n\t\tun = (4 * xn) / (xn + (15 * yn) + (3 * zn));\n\t\tvn = (9 * yn) / (xn + (15 * yn) + (3 * zn));\n\t\t// un = 0.19783000664283;\n\t\t// vn = 0.46831999493879;\n\n\n\t\t_u = u / (13 * l) + un || 0;\n\t\t_v = v / (13 * l) + vn || 0;\n\n\t\ty = l > 8 ? yn * Math.pow( (l + 16) / 116 , 3) : yn * l * k;\n\n\t\t//wikipedia method\n\t\tx = y * 9 * _u / (4 * _v) || 0;\n\t\tz = y * (12 - 3 * _u - 20 * _v) / (4 * _v) || 0;\n\n\t\t//boronine method\n\t\t//https://github.com/boronine/husl/blob/master/husl.coffee#L201\n\t\t// x = 0 - (9 * y * _u) / ((_u - 4) * _v - _u * _v);\n\t\t// z = (9 * y - (15 * _v * y) - (_v * x)) / (3 * _v);\n\n\t\treturn [x, y, z];\n\t}\n};\n\n// http://www.brucelindbloom.com/index.html?Equations.html\n// https://github.com/boronine/husl/blob/master/husl.coffee\n//i - illuminant\n//o - observer\nxyz.luv = function(arg, i, o) {\n\tvar _u, _v, l, u, v, x, y, z, xn, yn, zn, un, vn;\n\n\t//get constants\n\tvar e = 0.008856451679035631; //(6/29)^3\n\tvar k = 903.2962962962961; //(29/3)^3\n\n\t//get illuminant/observer coords\n\ti = i || 'D65';\n\to = o || 2;\n\n\txn = xyz.whitepoint[o][i][0];\n\tyn = xyz.whitepoint[o][i][1];\n\tzn = xyz.whitepoint[o][i][2];\n\n\tun = (4 * xn) / (xn + (15 * yn) + (3 * zn));\n\tvn = (9 * yn) / (xn + (15 * yn) + (3 * zn));\n\n\n\tx = arg[0], y = arg[1], z = arg[2];\n\n\n\t_u = (4 * x) / (x + (15 * y) + (3 * z)) || 0;\n\t_v = (9 * y) / (x + (15 * y) + (3 * z)) || 0;\n\n\tvar yr = y/yn;\n\n\tl = yr <= e ? k * yr : 116 * Math.pow(yr, 1/3) - 16;\n\n\tu = 13 * l * (_u - un);\n\tv = 13 * l * (_v - vn);\n\n\treturn [l, u, v];\n};\n","/**\n * Cylindrical CIE LUV\n *\n * @module color-space/lchuv\n */\nimport luv from './luv.js';\nimport xyz from './xyz.js';\n\n//cylindrical luv\nvar lchuv = {\n\tname: 'lchuv',\n\tchannel: ['lightness', 'chroma', 'hue'],\n\talias: ['LCHuv', 'cielchuv'],\n\tmin: [0,0,0],\n\tmax: [100,100,360],\n\n\tluv: function(luv){\n\t\tvar l = luv[0],\n\t\tc = luv[1],\n\t\th = luv[2],\n\t\tu, v, hr;\n\n\t\thr = h / 360 * 2 * Math.PI;\n\t\tu = c * Math.cos(hr);\n\t\tv = c * Math.sin(hr);\n\t\treturn [l, u, v];\n\t},\n\n\txyz: function(arg) {\n\t\treturn luv.xyz(lchuv.luv(arg));\n\t}\n};\n\nexport default lchuv;\n\nluv.lchuv = function(luv){\n\tvar l = luv[0], u = luv[1], v = luv[2];\n\n\tvar c = Math.sqrt(u*u + v*v);\n\tvar hr = Math.atan2(v,u);\n\tvar h = hr * 360 / 2 / Math.PI;\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\treturn [l,c,h]\n};\n\nxyz.lchuv = function(arg){\n return luv.lchuv(xyz.luv(arg));\n};\n","/**\n * @module color-parse\n */\nimport names from 'color-name'\n\nexport default parse\n\n/**\n * Base hues\n * http://dev.w3.org/csswg/css-color/#typedef-named-hue\n */\n//FIXME: use external hue detector\nvar baseHues = {\n\tred: 0,\n\torange: 60,\n\tyellow: 120,\n\tgreen: 180,\n\tblue: 240,\n\tpurple: 300\n}\n\n/**\n * Parse color from the string passed\n *\n * @return {Object} A space indicator `space`, an array `values` and `alpha`\n */\nfunction parse(cstr) {\n\tvar m, parts = [], alpha = 1, space\n\n\t//numeric case\n\tif (typeof cstr === 'number') {\n\t\treturn { space: 'rgb', values: [cstr >>> 16, (cstr & 0x00ff00) >>> 8, cstr & 0x0000ff], alpha: 1 }\n\t}\n\tif (typeof cstr === 'number') return { space: 'rgb', values: [cstr >>> 16, (cstr & 0x00ff00) >>> 8, cstr & 0x0000ff], alpha: 1 }\n\n\tcstr = String(cstr).toLowerCase();\n\n\t//keyword\n\tif (names[cstr]) {\n\t\tparts = names[cstr].slice()\n\t\tspace = 'rgb'\n\t}\n\n\t//reserved words\n\telse if (cstr === 'transparent') {\n\t\talpha = 0\n\t\tspace = 'rgb'\n\t\tparts = [0, 0, 0]\n\t}\n\n\t//hex\n\telse if (cstr[0] === '#') {\n\t\tvar base = cstr.slice(1)\n\t\tvar size = base.length\n\t\tvar isShort = size <= 4\n\t\talpha = 1\n\n\t\tif (isShort) {\n\t\t\tparts = [\n\t\t\t\tparseInt(base[0] + base[0], 16),\n\t\t\t\tparseInt(base[1] + base[1], 16),\n\t\t\t\tparseInt(base[2] + base[2], 16)\n\t\t\t]\n\t\t\tif (size === 4) {\n\t\t\t\talpha = parseInt(base[3] + base[3], 16) / 255\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tparts = [\n\t\t\t\tparseInt(base[0] + base[1], 16),\n\t\t\t\tparseInt(base[2] + base[3], 16),\n\t\t\t\tparseInt(base[4] + base[5], 16)\n\t\t\t]\n\t\t\tif (size === 8) {\n\t\t\t\talpha = parseInt(base[6] + base[7], 16) / 255\n\t\t\t}\n\t\t}\n\n\t\tif (!parts[0]) parts[0] = 0\n\t\tif (!parts[1]) parts[1] = 0\n\t\tif (!parts[2]) parts[2] = 0\n\n\t\tspace = 'rgb'\n\t}\n\n\t// color space\n\telse if (m = /^((?:rgba?|hs[lvb]a?|hwba?|cmyk?|xy[zy]|gray|lab|lchu?v?|[ly]uv|lms|oklch|oklab|color))\\s*\\(([^\\)]*)\\)/.exec(cstr)) {\n\t\tvar name = m[1]\n\t\tspace = name.replace(/a$/, '')\n\t\tvar dims = space === 'cmyk' ? 4 : space === 'gray' ? 1 : 3\n\t\tparts = m[2].trim().split(/\\s*[,\\/]\\s*|\\s+/)\n\n\t\t// color(srgb-linear x x x) -> srgb-linear(x x x)\n\t\tif (space === 'color') space = parts.shift()\n\n\t\tparts = parts.map(function (x, i) {\n\t\t\t//\n\t\t\tif (x[x.length - 1] === '%') {\n\t\t\t\tx = parseFloat(x) / 100\n\t\t\t\t// alpha -> 0..1\n\t\t\t\tif (i === 3) return x\n\t\t\t\t// rgb -> 0..255\n\t\t\t\tif (space === 'rgb') return x * 255\n\t\t\t\t// hsl, hwb H -> 0..100\n\t\t\t\tif (space[0] === 'h') return x * 100\n\t\t\t\t// lch, lab L -> 0..100\n\t\t\t\tif (space[0] === 'l' && !i) return x * 100\n\t\t\t\t// lab A B -> -125..125\n\t\t\t\tif (space === 'lab') return x * 125\n\t\t\t\t// lch C -> 0..150, H -> 0..360\n\t\t\t\tif (space === 'lch') return i < 2 ? x * 150 : x * 360\n\t\t\t\t// oklch/oklab L -> 0..1\n\t\t\t\tif (space[0] === 'o' && !i) return x\n\t\t\t\t// oklab A B -> -0.4..0.4\n\t\t\t\tif (space === 'oklab') return x * 0.4\n\t\t\t\t// oklch C -> 0..0.4, H -> 0..360\n\t\t\t\tif (space === 'oklch') return i < 2 ? x * 0.4 : x * 360\n\t\t\t\t// color(xxx) -> 0..1\n\t\t\t\treturn x\n\t\t\t}\n\n\t\t\t//hue\n\t\t\tif (space[i] === 'h' || (i === 2 && space[space.length - 1] === 'h')) {\n\t\t\t\t//\n\t\t\t\tif (baseHues[x] !== undefined) return baseHues[x]\n\t\t\t\t//\n\t\t\t\tif (x.endsWith('deg')) return parseFloat(x)\n\t\t\t\t//\n\t\t\t\tif (x.endsWith('turn')) return parseFloat(x) * 360\n\t\t\t\tif (x.endsWith('grad')) return parseFloat(x) * 360 / 400\n\t\t\t\tif (x.endsWith('rad')) return parseFloat(x) * 180 / Math.PI\n\t\t\t}\n\t\t\tif (x === 'none') return 0\n\t\t\treturn parseFloat(x)\n\t\t});\n\n\t\talpha = parts.length > dims ? parts.pop() : 1\n\t}\n\n\t//named channels case\n\telse if (/[0-9](?:\\s|\\/|,)/.test(cstr)) {\n\t\tparts = cstr.match(/([0-9]+)/g).map(function (value) {\n\t\t\treturn parseFloat(value)\n\t\t})\n\n\t\tspace = cstr.match(/([a-z])/ig)?.join('')?.toLowerCase() || 'rgb'\n\t}\n\n\treturn {\n\t\tspace,\n\t\tvalues: parts,\n\t\talpha\n\t}\n}\n","/**\n * @module color-space/hsl\n */\nimport rgb from './rgb.js';\n\nexport default {\n\tname: 'hsl',\n\tmin: [0,0,0],\n\tmax: [360,100,100],\n\tchannel: ['hue', 'saturation', 'lightness'],\n\talias: ['HSL'],\n\n\trgb: function(hsl) {\n\t\tvar h = hsl[0]/360, s = hsl[1]/100, l = hsl[2]/100, t1, t2, t3, rgb, val, i=0;\n\n\t\tif (s === 0) return val = l * 255, [val, val, val];\n\n\t\tt2 = l < 0.5 ? l * (1 + s) : l + s - l * s;\n\t\tt1 = 2 * l - t2;\n\n\t\trgb = [0, 0, 0];\n\t\tfor (;i<3;) {\n\t\t\tt3 = h + 1 / 3 * - (i - 1);\n\t\t\tt3 < 0 ? t3++ : t3 > 1 && t3--;\n\t\t\tval = 6 * t3 < 1 ? t1 + (t2 - t1) * 6 * t3 :\n\t\t\t2 * t3 < 1 ? t2 :\n\t\t\t3 * t3 < 2 ? t1 + (t2 - t1) * (2 / 3 - t3) * 6 :\n\t\t\tt1;\n\t\t\trgb[i++] = val * 255;\n\t\t}\n\n\t\treturn rgb;\n\t}\n};\n\n\n//extend rgb\nrgb.hsl = function(rgb) {\n\tvar r = rgb[0]/255,\n\t\t\tg = rgb[1]/255,\n\t\t\tb = rgb[2]/255,\n\t\t\tmin = Math.min(r, g, b),\n\t\t\tmax = Math.max(r, g, b),\n\t\t\tdelta = max - min,\n\t\t\th, s, l;\n\n\tif (max === min) {\n\t\th = 0;\n\t}\n\telse if (r === max) {\n\t\th = (g - b) / delta;\n\t}\n\telse if (g === max) {\n\t\th = 2 + (b - r) / delta;\n\t}\n\telse if (b === max) {\n\t\th = 4 + (r - g)/ delta;\n\t}\n\n\th = Math.min(h * 60, 360);\n\n\tif (h < 0) {\n\t\th += 360;\n\t}\n\n\tl = (min + max) / 2;\n\n\tif (max === min) {\n\t\ts = 0;\n\t}\n\telse if (l <= 0.5) {\n\t\ts = delta / (max + min);\n\t}\n\telse {\n\t\ts = delta / (2 - max - min);\n\t}\n\n\treturn [h, s * 100, l * 100];\n};\n","/**\n * @module ol/color\n */\nimport lchuv from 'color-space/lchuv.js';\nimport parseRgba from 'color-rgba';\nimport rgb from 'color-space/rgb.js';\nimport xyz from 'color-space/xyz.js';\nimport {clamp} from './math.js';\n\n/**\n * A color represented as a short array [red, green, blue, alpha].\n * red, green, and blue should be integers in the range 0..255 inclusive.\n * alpha should be a float in the range 0..1 inclusive. If no alpha value is\n * given then `1` will be used.\n * @typedef {Array} Color\n * @api\n */\n\n/**\n * Return the color as an rgba string.\n * @param {Color|string} color Color.\n * @return {string} Rgba string.\n * @api\n */\nexport function asString(color) {\n if (typeof color === 'string') {\n return color;\n }\n return toString(color);\n}\n\n/**\n * @type {number}\n */\nconst MAX_CACHE_SIZE = 1024;\n\n/**\n * We maintain a small cache of parsed strings. Whenever the cache grows too large,\n * we delete an arbitrary set of the entries.\n *\n * @type {Object}\n */\nconst cache = {};\n\n/**\n * @type {number}\n */\nlet cacheSize = 0;\n\n/**\n * @param {Color} color A color that may or may not have an alpha channel.\n * @return {Color} The input color with an alpha channel. If the input color has\n * an alpha channel, the input color will be returned unchanged. Otherwise, a new\n * array will be returned with the input color and an alpha channel of 1.\n */\nexport function withAlpha(color) {\n if (color.length === 4) {\n return color;\n }\n const output = color.slice();\n output[3] = 1;\n return output;\n}\n\n/**\n * @param {Color} color RGBA color.\n * @return {Color} LCHuv color with alpha.\n */\nexport function rgbaToLcha(color) {\n const output = xyz.lchuv(rgb.xyz(color));\n output[3] = color[3];\n return output;\n}\n\n/**\n * @param {Color} color LCHuv color with alpha.\n * @return {Color} RGBA color.\n */\nexport function lchaToRgba(color) {\n const output = xyz.rgb(lchuv.xyz(color));\n output[3] = color[3];\n return output;\n}\n\n/**\n * @param {string} s String.\n * @return {Color} Color.\n */\nexport function fromString(s) {\n if (cache.hasOwnProperty(s)) {\n return cache[s];\n }\n if (cacheSize >= MAX_CACHE_SIZE) {\n let i = 0;\n for (const key in cache) {\n if ((i++ & 3) === 0) {\n delete cache[key];\n --cacheSize;\n }\n }\n }\n\n const color = parseRgba(s);\n if (color.length !== 4) {\n throw new Error('Failed to parse \"' + s + '\" as color');\n }\n for (const c of color) {\n if (isNaN(c)) {\n throw new Error('Failed to parse \"' + s + '\" as color');\n }\n }\n normalize(color);\n cache[s] = color;\n ++cacheSize;\n return color;\n}\n\n/**\n * Return the color as an array. This function maintains a cache of calculated\n * arrays which means the result should not be modified.\n * @param {Color|string} color Color.\n * @return {Color} Color.\n * @api\n */\nexport function asArray(color) {\n if (Array.isArray(color)) {\n return color;\n }\n return fromString(color);\n}\n\n/**\n * Exported for the tests.\n * @param {Color} color Color.\n * @return {Color} Clamped color.\n */\nexport function normalize(color) {\n color[0] = clamp((color[0] + 0.5) | 0, 0, 255);\n color[1] = clamp((color[1] + 0.5) | 0, 0, 255);\n color[2] = clamp((color[2] + 0.5) | 0, 0, 255);\n color[3] = clamp(color[3], 0, 1);\n return color;\n}\n\n/**\n * @param {Color} color Color.\n * @return {string} String.\n */\nexport function toString(color) {\n let r = color[0];\n if (r != (r | 0)) {\n r = (r + 0.5) | 0;\n }\n let g = color[1];\n if (g != (g | 0)) {\n g = (g + 0.5) | 0;\n }\n let b = color[2];\n if (b != (b | 0)) {\n b = (b + 0.5) | 0;\n }\n const a = color[3] === undefined ? 1 : Math.round(color[3] * 100) / 100;\n return 'rgba(' + r + ',' + g + ',' + b + ',' + a + ')';\n}\n\n/**\n * @param {string} s String.\n * @return {boolean} Whether the string is actually a valid color\n */\nexport function isStringColor(s) {\n try {\n fromString(s);\n return true;\n } catch (_) {\n return false;\n }\n}\n","/** @module color-rgba */\nimport parse from 'color-parse'\nimport rgb from 'color-space/rgb.js'\nimport hsl from 'color-space/hsl.js'\n\nexport default function rgba(color) {\n\t// template literals\n\tif (Array.isArray(color) && color.raw) color = String.raw(...arguments)\n\tif (color instanceof Number) color = +color\n\n\tvar values, i, l\n\n\t//attempt to parse non-array arguments\n\tvar parsed = parse(color)\n\n\tif (!parsed.space) return []\n\n\tconst min = parsed.space[0] === 'h' ? hsl.min : rgb.min\n\tconst max = parsed.space[0] === 'h' ? hsl.max : rgb.max\n\n\tvalues = Array(3)\n\tvalues[0] = Math.min(Math.max(parsed.values[0], min[0]), max[0])\n\tvalues[1] = Math.min(Math.max(parsed.values[1], min[1]), max[1])\n\tvalues[2] = Math.min(Math.max(parsed.values[2], min[2]), max[2])\n\n\tif (parsed.space[0] === 'h') {\n\t\tvalues = hsl.rgb(values)\n\t}\n\n\tvalues.push(Math.min(Math.max(parsed.alpha, 0), 1))\n\n\treturn values\n}\n","/**\n * @module ol/colorlike\n */\nimport {toString} from './color.js';\n\n/**\n * A type accepted by CanvasRenderingContext2D.fillStyle\n * or CanvasRenderingContext2D.strokeStyle.\n * Represents a color, pattern, or gradient. The origin for patterns and\n * gradients as fill style is an increment of 512 css pixels from map coordinate\n * `[0, 0]`. For seamless repeat patterns, width and height of the pattern image\n * must be a factor of two (2, 4, 8, ..., 512).\n *\n * @typedef {string|CanvasPattern|CanvasGradient} ColorLike\n * @api\n */\n\n/**\n * @param {import(\"./color.js\").Color|ColorLike} color Color.\n * @return {ColorLike} The color as an {@link ol/colorlike~ColorLike}.\n * @api\n */\nexport function asColorLike(color) {\n if (Array.isArray(color)) {\n return toString(color);\n }\n return color;\n}\n","/**\n * @module ol/console\n */\n\n/**\n * @typedef {'info'|'warn'|'error'|'none'} Level\n */\n\n/**\n * @type {Object}\n */\nconst levels = {\n info: 1,\n warn: 2,\n error: 3,\n none: 4,\n};\n\n/**\n * @type {number}\n */\nlet level = levels.info;\n\n/**\n * Set the logging level. By default, the level is set to 'info' and all\n * messages will be logged. Set to 'warn' to only display warnings and errors.\n * Set to 'error' to only display errors. Set to 'none' to silence all messages.\n *\n * @param {Level} l The new level.\n */\nexport function setLevel(l) {\n level = levels[l];\n}\n\n/**\n * @param {...any} args Arguments to log\n */\nexport function log(...args) {\n if (level > levels.info) {\n return;\n }\n console.log(...args); // eslint-disable-line no-console\n}\n\n/**\n * @param {...any} args Arguments to log\n */\nexport function warn(...args) {\n if (level > levels.warn) {\n return;\n }\n console.warn(...args); // eslint-disable-line no-console\n}\n\n/**\n * @param {...any} args Arguments to log\n */\nexport function error(...args) {\n if (level > levels.error) {\n return;\n }\n console.error(...args); // eslint-disable-line no-console\n}\n","/**\n * @module ol/control/Attribution\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport {CLASS_COLLAPSED, CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {equals} from '../array.js';\nimport {removeChildren, replaceNode} from '../dom.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-attribution'] CSS class name.\n * @property {HTMLElement|string} [target] Specify a target if you\n * want the control to be rendered outside of the map's\n * viewport.\n * @property {boolean} [collapsible] Specify if attributions can\n * be collapsed. If not specified, sources control this behavior with their\n * `attributionsCollapsible` setting.\n * @property {boolean} [collapsed=true] Specify if attributions should\n * be collapsed at startup.\n * @property {string} [tipLabel='Attributions'] Text label to use for the button tip.\n * @property {string|HTMLElement} [label='i'] Text label to use for the\n * collapsed attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [expandClassName=className + '-expand'] CSS class name for the\n * collapsed attributions button.\n * @property {string|HTMLElement} [collapseLabel='›'] Text label to use\n * for the expanded attributions button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [collapseClassName=className + '-collapse'] CSS class name for the\n * expanded attributions button.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n */\n\n/**\n * @classdesc\n * Control to show all the attributions associated with the layer sources\n * in the map. This control is one of the default controls included in maps.\n * By default it will show in the bottom right portion of the map, but this can\n * be changed by using a css selector for `.ol-attribution`.\n *\n * @api\n */\nclass Attribution extends Control {\n /**\n * @param {Options} [options] Attribution options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n });\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.ulElement_ = document.createElement('ul');\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsed_ =\n options.collapsed !== undefined ? options.collapsed : true;\n\n /**\n * @private\n * @type {boolean}\n */\n this.userCollapsed_ = this.collapsed_;\n\n /**\n * @private\n * @type {boolean}\n */\n this.overrideCollapsible_ = options.collapsible !== undefined;\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsible_ =\n options.collapsible !== undefined ? options.collapsible : true;\n\n if (!this.collapsible_) {\n this.collapsed_ = false;\n }\n\n const className =\n options.className !== undefined ? options.className : 'ol-attribution';\n\n const tipLabel =\n options.tipLabel !== undefined ? options.tipLabel : 'Attributions';\n\n const expandClassName =\n options.expandClassName !== undefined\n ? options.expandClassName\n : className + '-expand';\n\n const collapseLabel =\n options.collapseLabel !== undefined ? options.collapseLabel : '\\u203A';\n\n const collapseClassName =\n options.collapseClassName !== undefined\n ? options.collapseClassName\n : className + '-collapse';\n\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.collapseLabel_ = document.createElement('span');\n this.collapseLabel_.textContent = collapseLabel;\n this.collapseLabel_.className = collapseClassName;\n } else {\n this.collapseLabel_ = collapseLabel;\n }\n\n const label = options.label !== undefined ? options.label : 'i';\n\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.label_ = document.createElement('span');\n this.label_.textContent = label;\n this.label_.className = expandClassName;\n } else {\n this.label_ = label;\n }\n\n const activeLabel =\n this.collapsible_ && !this.collapsed_ ? this.collapseLabel_ : this.label_;\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.toggleButton_ = document.createElement('button');\n this.toggleButton_.setAttribute('type', 'button');\n this.toggleButton_.setAttribute('aria-expanded', String(!this.collapsed_));\n this.toggleButton_.title = tipLabel;\n this.toggleButton_.appendChild(activeLabel);\n\n this.toggleButton_.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this),\n false\n );\n\n const cssClasses =\n className +\n ' ' +\n CLASS_UNSELECTABLE +\n ' ' +\n CLASS_CONTROL +\n (this.collapsed_ && this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (this.collapsible_ ? '' : ' ol-uncollapsible');\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(this.toggleButton_);\n element.appendChild(this.ulElement_);\n\n /**\n * A list of currently rendered resolutions.\n * @type {Array}\n * @private\n */\n this.renderedAttributions_ = [];\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = true;\n }\n\n /**\n * Collect a list of visible attributions and set the collapsible state.\n * @param {import(\"../Map.js\").FrameState} frameState Frame state.\n * @return {Array} Attributions.\n * @private\n */\n collectSourceAttributions_(frameState) {\n const visibleAttributions = Array.from(\n new Set(\n this.getMap()\n .getAllLayers()\n .flatMap((layer) => layer.getAttributions(frameState))\n )\n );\n\n const collapsible = !this.getMap()\n .getAllLayers()\n .some(\n (layer) =>\n layer.getSource() &&\n layer.getSource().getAttributionsCollapsible() === false\n );\n if (!this.overrideCollapsible_) {\n this.setCollapsible(collapsible);\n }\n return visibleAttributions;\n }\n\n /**\n * @private\n * @param {?import(\"../Map.js\").FrameState} frameState Frame state.\n */\n updateElement_(frameState) {\n if (!frameState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n const attributions = this.collectSourceAttributions_(frameState);\n\n const visible = attributions.length > 0;\n if (this.renderedVisible_ != visible) {\n this.element.style.display = visible ? '' : 'none';\n this.renderedVisible_ = visible;\n }\n\n if (equals(attributions, this.renderedAttributions_)) {\n return;\n }\n\n removeChildren(this.ulElement_);\n\n // append the attributions\n for (let i = 0, ii = attributions.length; i < ii; ++i) {\n const element = document.createElement('li');\n element.innerHTML = attributions[i];\n this.ulElement_.appendChild(element);\n }\n\n this.renderedAttributions_ = attributions;\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n this.handleToggle_();\n this.userCollapsed_ = this.collapsed_;\n }\n\n /**\n * @private\n */\n handleToggle_() {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n } else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n this.toggleButton_.setAttribute('aria-expanded', String(!this.collapsed_));\n }\n\n /**\n * Return `true` if the attribution is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n getCollapsible() {\n return this.collapsible_;\n }\n\n /**\n * Set whether the attribution should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n setCollapsible(collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (this.userCollapsed_) {\n this.handleToggle_();\n }\n }\n\n /**\n * Collapse or expand the attribution according to the passed parameter. Will\n * not do anything if the attribution isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n setCollapsed(collapsed) {\n this.userCollapsed_ = collapsed;\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n }\n\n /**\n * Return `true` when the attribution is currently collapsed or `false`\n * otherwise.\n * @return {boolean} True if the widget is collapsed.\n * @api\n */\n getCollapsed() {\n return this.collapsed_;\n }\n\n /**\n * Update the attribution element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n this.updateElement_(mapEvent.frameState);\n }\n}\n\nexport default Attribution;\n","/**\n * @module ol/control/Control\n */\nimport BaseObject from '../Object.js';\nimport MapEventType from '../MapEventType.js';\nimport {VOID} from '../functions.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {removeNode} from '../dom.js';\n\n/**\n * @typedef {Object} Options\n * @property {HTMLElement} [element] The element is the control's\n * container element. This only needs to be specified if you're developing\n * a custom control.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when\n * the control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want\n * the control to be rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A control is a visible widget with a DOM element in a fixed position on the\n * screen. They can involve user input (buttons), or be informational only;\n * the position is determined using CSS. By default these are placed in the\n * container with CSS class name `ol-overlaycontainer-stopevent`, but can use\n * any outside DOM element.\n *\n * This is the base class for controls. You can use it for simple custom\n * controls by creating the element with listeners, creating an instance:\n * ```js\n * const myControl = new Control({element: myElement});\n * ```\n * and then adding this to the map.\n *\n * The main advantage of having this as a control rather than a simple separate\n * DOM element is that preventing propagation is handled for you. Controls\n * will also be objects in a {@link module:ol/Collection~Collection}, so you can use their methods.\n *\n * You can also extend this base for your own control class. See\n * examples/custom-controls for an example of how to do this.\n *\n * @api\n */\nclass Control extends BaseObject {\n /**\n * @param {Options} options Control options.\n */\n constructor(options) {\n super();\n\n const element = options.element;\n if (element && !options.target && !element.style.pointerEvents) {\n element.style.pointerEvents = 'auto';\n }\n\n /**\n * @protected\n * @type {HTMLElement}\n */\n this.element = element ? element : null;\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.target_ = null;\n\n /**\n * @private\n * @type {import(\"../Map.js\").default|null}\n */\n this.map_ = null;\n\n /**\n * @protected\n * @type {!Array}\n */\n this.listenerKeys = [];\n\n if (options.render) {\n this.render = options.render;\n }\n\n if (options.target) {\n this.setTarget(options.target);\n }\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n removeNode(this.element);\n super.disposeInternal();\n }\n\n /**\n * Get the map associated with this control.\n * @return {import(\"../Map.js\").default|null} Map.\n * @api\n */\n getMap() {\n return this.map_;\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Pass `null` to just remove the control from the current map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n */\n setMap(map) {\n if (this.map_) {\n removeNode(this.element);\n }\n for (let i = 0, ii = this.listenerKeys.length; i < ii; ++i) {\n unlistenByKey(this.listenerKeys[i]);\n }\n this.listenerKeys.length = 0;\n this.map_ = map;\n if (map) {\n const target = this.target_\n ? this.target_\n : map.getOverlayContainerStopEvent();\n target.appendChild(this.element);\n if (this.render !== VOID) {\n this.listenerKeys.push(\n listen(map, MapEventType.POSTRENDER, this.render, this)\n );\n }\n map.render();\n }\n }\n\n /**\n * Renders the control.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @api\n */\n render(mapEvent) {}\n\n /**\n * This function is used to set a target element for the control. It has no\n * effect if it is called after the control has been added to the map (i.e.\n * after `setMap` is called on the control). If no `target` is set in the\n * options passed to the control constructor and if `setTarget` is not called\n * then the control is added to the map's overlay container.\n * @param {HTMLElement|string} target Target.\n * @api\n */\n setTarget(target) {\n this.target_ =\n typeof target === 'string' ? document.getElementById(target) : target;\n }\n}\n\nexport default Control;\n","/**\n * @module ol/control/FullScreen\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport MapProperty from '../MapProperty.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE, CLASS_UNSUPPORTED} from '../css.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {replaceNode} from '../dom.js';\n\nconst events = [\n 'fullscreenchange',\n 'webkitfullscreenchange',\n 'MSFullscreenChange',\n];\n\n/**\n * @enum {string}\n */\nconst FullScreenEventType = {\n /**\n * Triggered after the map entered fullscreen.\n * @event FullScreenEventType#enterfullscreen\n * @api\n */\n ENTERFULLSCREEN: 'enterfullscreen',\n\n /**\n * Triggered after the map leave fullscreen.\n * @event FullScreenEventType#leavefullscreen\n * @api\n */\n LEAVEFULLSCREEN: 'leavefullscreen',\n};\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} FullScreenOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-full-screen'] CSS class name.\n * @property {string|Text|HTMLElement} [label='\\u2922'] Text label to use for the button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|Text|HTMLElement} [labelActive='\\u00d7'] Text label to use for the\n * button when full-screen is active.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [activeClassName=className + '-true'] CSS class name for the button\n * when full-screen is active.\n * @property {string} [inactiveClassName=className + '-false'] CSS class name for the button\n * when full-screen is inactive.\n * @property {string} [tipLabel='Toggle full-screen'] Text label to use for the button tip.\n * @property {boolean} [keys=false] Full keyboard access.\n * @property {HTMLElement|string} [target] Specify a target if you want the\n * control to be rendered outside of the map's viewport.\n * @property {HTMLElement|string} [source] The element to be displayed\n * fullscreen. When not provided, the element containing the map viewport will\n * be displayed fullscreen.\n */\n\n/**\n * @classdesc\n * Provides a button that when clicked fills up the full screen with the map.\n * The full screen source element is by default the element containing the map viewport unless\n * overridden by providing the `source` option. In which case, the dom\n * element introduced using this parameter will be displayed in full screen.\n *\n * When in full screen mode, a close button is shown to exit full screen mode.\n * The [Fullscreen API](https://www.w3.org/TR/fullscreen/) is used to\n * toggle the map in full screen mode.\n *\n * @fires FullScreenEventType#enterfullscreen\n * @fires FullScreenEventType#leavefullscreen\n * @api\n */\nclass FullScreen extends Control {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n target: options.target,\n });\n\n /***\n * @type {FullScreenOnSignature}\n */\n this.on;\n\n /***\n * @type {FullScreenOnSignature}\n */\n this.once;\n\n /***\n * @type {FullScreenOnSignature}\n */\n this.un;\n\n /**\n * @private\n * @type {boolean}\n */\n this.keys_ = options.keys !== undefined ? options.keys : false;\n\n /**\n * @private\n * @type {HTMLElement|string|undefined}\n */\n this.source_ = options.source;\n\n /**\n * @type {boolean}\n * @private\n */\n this.isInFullscreen_ = false;\n\n /**\n * @private\n */\n this.boundHandleMapTargetChange_ = this.handleMapTargetChange_.bind(this);\n\n /**\n * @private\n * @type {string}\n */\n this.cssClassName_ =\n options.className !== undefined ? options.className : 'ol-full-screen';\n\n /**\n * @private\n * @type {Array}\n */\n this.documentListeners_ = [];\n\n /**\n * @private\n * @type {Array}\n */\n this.activeClassName_ =\n options.activeClassName !== undefined\n ? options.activeClassName.split(' ')\n : [this.cssClassName_ + '-true'];\n\n /**\n * @private\n * @type {Array}\n */\n this.inactiveClassName_ =\n options.inactiveClassName !== undefined\n ? options.inactiveClassName.split(' ')\n : [this.cssClassName_ + '-false'];\n\n const label = options.label !== undefined ? options.label : '\\u2922';\n\n /**\n * @private\n * @type {Text|HTMLElement}\n */\n this.labelNode_ =\n typeof label === 'string' ? document.createTextNode(label) : label;\n\n const labelActive =\n options.labelActive !== undefined ? options.labelActive : '\\u00d7';\n\n /**\n * @private\n * @type {Text|HTMLElement}\n */\n this.labelActiveNode_ =\n typeof labelActive === 'string'\n ? document.createTextNode(labelActive)\n : labelActive;\n\n const tipLabel = options.tipLabel ? options.tipLabel : 'Toggle full-screen';\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.button_ = document.createElement('button');\n this.button_.title = tipLabel;\n this.button_.setAttribute('type', 'button');\n this.button_.appendChild(this.labelNode_);\n this.button_.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this),\n false\n );\n this.setClassName_(this.button_, this.isInFullscreen_);\n\n this.element.className = `${this.cssClassName_} ${CLASS_UNSELECTABLE} ${CLASS_CONTROL}`;\n this.element.appendChild(this.button_);\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n this.handleFullScreen_();\n }\n\n /**\n * @private\n */\n handleFullScreen_() {\n const map = this.getMap();\n if (!map) {\n return;\n }\n const doc = map.getOwnerDocument();\n if (!isFullScreenSupported(doc)) {\n return;\n }\n if (isFullScreen(doc)) {\n exitFullScreen(doc);\n } else {\n let element;\n if (this.source_) {\n element =\n typeof this.source_ === 'string'\n ? doc.getElementById(this.source_)\n : this.source_;\n } else {\n element = map.getTargetElement();\n }\n if (this.keys_) {\n requestFullScreenWithKeys(element);\n } else {\n requestFullScreen(element);\n }\n }\n }\n\n /**\n * @private\n */\n handleFullScreenChange_() {\n const map = this.getMap();\n if (!map) {\n return;\n }\n const wasInFullscreen = this.isInFullscreen_;\n this.isInFullscreen_ = isFullScreen(map.getOwnerDocument());\n if (wasInFullscreen !== this.isInFullscreen_) {\n this.setClassName_(this.button_, this.isInFullscreen_);\n if (this.isInFullscreen_) {\n replaceNode(this.labelActiveNode_, this.labelNode_);\n this.dispatchEvent(FullScreenEventType.ENTERFULLSCREEN);\n } else {\n replaceNode(this.labelNode_, this.labelActiveNode_);\n this.dispatchEvent(FullScreenEventType.LEAVEFULLSCREEN);\n }\n map.updateSize();\n }\n }\n\n /**\n * @param {HTMLElement} element Target element\n * @param {boolean} fullscreen True if fullscreen class name should be active\n * @private\n */\n setClassName_(element, fullscreen) {\n if (fullscreen) {\n element.classList.remove(...this.inactiveClassName_);\n element.classList.add(...this.activeClassName_);\n } else {\n element.classList.remove(...this.activeClassName_);\n element.classList.add(...this.inactiveClassName_);\n }\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Pass `null` to just remove the control from the current map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n */\n setMap(map) {\n const oldMap = this.getMap();\n if (oldMap) {\n oldMap.removeChangeListener(\n MapProperty.TARGET,\n this.boundHandleMapTargetChange_\n );\n }\n\n super.setMap(map);\n\n this.handleMapTargetChange_();\n if (map) {\n map.addChangeListener(\n MapProperty.TARGET,\n this.boundHandleMapTargetChange_\n );\n }\n }\n\n /**\n * @private\n */\n handleMapTargetChange_() {\n const listeners = this.documentListeners_;\n for (let i = 0, ii = listeners.length; i < ii; ++i) {\n unlistenByKey(listeners[i]);\n }\n listeners.length = 0;\n\n const map = this.getMap();\n if (map) {\n const doc = map.getOwnerDocument();\n if (isFullScreenSupported(doc)) {\n this.element.classList.remove(CLASS_UNSUPPORTED);\n } else {\n this.element.classList.add(CLASS_UNSUPPORTED);\n }\n\n for (let i = 0, ii = events.length; i < ii; ++i) {\n listeners.push(\n listen(doc, events[i], this.handleFullScreenChange_, this)\n );\n }\n this.handleFullScreenChange_();\n }\n }\n}\n\n/**\n * @param {Document} doc The root document to check.\n * @return {boolean} Fullscreen is supported by the current platform.\n */\nfunction isFullScreenSupported(doc) {\n const body = doc.body;\n return !!(\n body['webkitRequestFullscreen'] ||\n (body.requestFullscreen && doc.fullscreenEnabled)\n );\n}\n\n/**\n * @param {Document} doc The root document to check.\n * @return {boolean} Element is currently in fullscreen.\n */\nfunction isFullScreen(doc) {\n return !!(doc['webkitIsFullScreen'] || doc.fullscreenElement);\n}\n\n/**\n * Request to fullscreen an element.\n * @param {HTMLElement} element Element to request fullscreen\n */\nfunction requestFullScreen(element) {\n if (element.requestFullscreen) {\n element.requestFullscreen();\n } else if (element['webkitRequestFullscreen']) {\n element['webkitRequestFullscreen']();\n }\n}\n\n/**\n * Request to fullscreen an element with keyboard input.\n * @param {HTMLElement} element Element to request fullscreen\n */\nfunction requestFullScreenWithKeys(element) {\n if (element['webkitRequestFullscreen']) {\n element['webkitRequestFullscreen']();\n } else {\n requestFullScreen(element);\n }\n}\n\n/**\n * Exit fullscreen.\n * @param {Document} doc The document to exit fullscren from\n */\nfunction exitFullScreen(doc) {\n if (doc.exitFullscreen) {\n doc.exitFullscreen();\n } else if (doc['webkitExitFullscreen']) {\n doc['webkitExitFullscreen']();\n }\n}\n\nexport default FullScreen;\n","/**\n * @module ol/control/MousePosition\n */\n\nimport Control from './Control.js';\nimport EventType from '../pointer/EventType.js';\nimport {\n get as getProjection,\n getTransformFromProjections,\n getUserProjection,\n identityTransform,\n} from '../proj.js';\nimport {listen} from '../events.js';\nimport {wrapX} from '../coordinate.js';\n\n/**\n * @type {string}\n */\nconst PROJECTION = 'projection';\n\n/**\n * @type {string}\n */\nconst COORDINATE_FORMAT = 'coordinateFormat';\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} MousePositionOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-mouse-position'] CSS class name.\n * @property {import(\"../coordinate.js\").CoordinateFormat} [coordinateFormat] Coordinate format.\n * @property {import(\"../proj.js\").ProjectionLike} [projection] Projection. Default is the view projection.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the\n * control should be re-rendered. This is called in a `requestAnimationFrame`\n * callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the\n * control to be rendered outside of the map's viewport.\n * @property {string} [placeholder] Markup to show when the mouse position is not\n * available (e.g. when the pointer leaves the map viewport). By default, a non-breaking space is rendered\n * initially and the last position is retained when the mouse leaves the viewport.\n * When a string is provided (e.g. `'no position'` or `''` for an empty string) it is used as a\n * placeholder.\n * @property {boolean} [wrapX=true] Wrap the world horizontally on the projection's antimeridian, if it\n * is a global projection.\n */\n\n/**\n * @classdesc\n * A control to show the 2D coordinates of the mouse cursor. By default, these\n * are in the view projection, but can be in any supported projection.\n * By default the control is shown in the top right corner of the map, but this\n * can be changed by using the css selector `.ol-mouse-position`.\n *\n * On touch devices, which usually do not have a mouse cursor, the coordinates\n * of the currently touched position are shown.\n *\n * @api\n */\nclass MousePosition extends Control {\n /**\n * @param {Options} [options] Mouse position options.\n */\n constructor(options) {\n options = options ? options : {};\n\n const element = document.createElement('div');\n element.className =\n options.className !== undefined ? options.className : 'ol-mouse-position';\n\n super({\n element: element,\n render: options.render,\n target: options.target,\n });\n\n /***\n * @type {MousePositionOnSignature}\n */\n this.on;\n\n /***\n * @type {MousePositionOnSignature}\n */\n this.once;\n\n /***\n * @type {MousePositionOnSignature}\n */\n this.un;\n\n this.addChangeListener(PROJECTION, this.handleProjectionChanged_);\n\n if (options.coordinateFormat) {\n this.setCoordinateFormat(options.coordinateFormat);\n }\n if (options.projection) {\n this.setProjection(options.projection);\n }\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderOnMouseOut_ = options.placeholder !== undefined;\n\n /**\n * @private\n * @type {string}\n */\n this.placeholder_ = this.renderOnMouseOut_ ? options.placeholder : ' ';\n\n /**\n * @private\n * @type {string}\n */\n this.renderedHTML_ = element.innerHTML;\n\n /**\n * @private\n * @type {?import(\"../proj/Projection.js\").default}\n */\n this.mapProjection_ = null;\n\n /**\n * @private\n * @type {?import(\"../proj.js\").TransformFunction}\n */\n this.transform_ = null;\n\n /**\n * @private\n * @type {boolean}\n */\n this.wrapX_ = options.wrapX === false ? false : true;\n }\n\n /**\n * @private\n */\n handleProjectionChanged_() {\n this.transform_ = null;\n }\n\n /**\n * Return the coordinate format type used to render the current position or\n * undefined.\n * @return {import(\"../coordinate.js\").CoordinateFormat|undefined} The format to render the current\n * position in.\n * @observable\n * @api\n */\n getCoordinateFormat() {\n return /** @type {import(\"../coordinate.js\").CoordinateFormat|undefined} */ (\n this.get(COORDINATE_FORMAT)\n );\n }\n\n /**\n * Return the projection that is used to report the mouse position.\n * @return {import(\"../proj/Projection.js\").default|undefined} The projection to report mouse\n * position in.\n * @observable\n * @api\n */\n getProjection() {\n return /** @type {import(\"../proj/Projection.js\").default|undefined} */ (\n this.get(PROJECTION)\n );\n }\n\n /**\n * @param {MouseEvent} event Browser event.\n * @protected\n */\n handleMouseMove(event) {\n const map = this.getMap();\n this.updateHTML_(map.getEventPixel(event));\n }\n\n /**\n * @param {Event} event Browser event.\n * @protected\n */\n handleMouseOut(event) {\n this.updateHTML_(null);\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Pass `null` to just remove the control from the current map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n */\n setMap(map) {\n super.setMap(map);\n if (map) {\n const viewport = map.getViewport();\n this.listenerKeys.push(\n listen(viewport, EventType.POINTERMOVE, this.handleMouseMove, this)\n );\n if (this.renderOnMouseOut_) {\n this.listenerKeys.push(\n listen(viewport, EventType.POINTEROUT, this.handleMouseOut, this)\n );\n }\n this.updateHTML_(null);\n }\n }\n\n /**\n * Set the coordinate format type used to render the current position.\n * @param {import(\"../coordinate.js\").CoordinateFormat} format The format to render the current\n * position in.\n * @observable\n * @api\n */\n setCoordinateFormat(format) {\n this.set(COORDINATE_FORMAT, format);\n }\n\n /**\n * Set the projection that is used to report the mouse position.\n * @param {import(\"../proj.js\").ProjectionLike} projection The projection to report mouse\n * position in.\n * @observable\n * @api\n */\n setProjection(projection) {\n this.set(PROJECTION, getProjection(projection));\n }\n\n /**\n * @param {?import(\"../pixel.js\").Pixel} pixel Pixel.\n * @private\n */\n updateHTML_(pixel) {\n let html = this.placeholder_;\n if (pixel && this.mapProjection_) {\n if (!this.transform_) {\n const projection = this.getProjection();\n if (projection) {\n this.transform_ = getTransformFromProjections(\n this.mapProjection_,\n projection\n );\n } else {\n this.transform_ = identityTransform;\n }\n }\n const map = this.getMap();\n const coordinate = map.getCoordinateFromPixelInternal(pixel);\n if (coordinate) {\n const userProjection = getUserProjection();\n if (userProjection) {\n this.transform_ = getTransformFromProjections(\n this.mapProjection_,\n userProjection\n );\n }\n this.transform_(coordinate, coordinate);\n if (this.wrapX_) {\n const projection =\n userProjection || this.getProjection() || this.mapProjection_;\n wrapX(coordinate, projection);\n }\n const coordinateFormat = this.getCoordinateFormat();\n if (coordinateFormat) {\n html = coordinateFormat(coordinate);\n } else {\n html = coordinate.toString();\n }\n }\n }\n if (!this.renderedHTML_ || html !== this.renderedHTML_) {\n this.element.innerHTML = html;\n this.renderedHTML_ = html;\n }\n }\n\n /**\n * Update the projection. Rendering of the coordinates is done in\n * `handleMouseMove` and `handleMouseUp`.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n const frameState = mapEvent.frameState;\n if (!frameState) {\n this.mapProjection_ = null;\n } else {\n if (this.mapProjection_ != frameState.viewState.projection) {\n this.mapProjection_ = frameState.viewState.projection;\n this.transform_ = null;\n }\n }\n }\n}\n\nexport default MousePosition;\n","/**\n * @module ol/control/OverviewMap\n */\nimport Collection from '../Collection.js';\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport Map from '../Map.js';\nimport MapEventType from '../MapEventType.js';\nimport MapProperty from '../MapProperty.js';\nimport ObjectEventType from '../ObjectEventType.js';\nimport Overlay from '../Overlay.js';\nimport View from '../View.js';\nimport ViewProperty from '../ViewProperty.js';\nimport {CLASS_COLLAPSED, CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {\n containsExtent,\n equals as equalsExtent,\n getBottomRight,\n getTopLeft,\n scaleFromCenter,\n} from '../extent.js';\nimport {listen, listenOnce} from '../events.js';\nimport {fromExtent as polygonFromExtent} from '../geom/Polygon.js';\nimport {replaceNode} from '../dom.js';\n\n/**\n * Maximum width and/or height extent ratio that determines when the overview\n * map should be zoomed out.\n * @type {number}\n */\nconst MAX_RATIO = 0.75;\n\n/**\n * Minimum width and/or height extent ratio that determines when the overview\n * map should be zoomed in.\n * @type {number}\n */\nconst MIN_RATIO = 0.1;\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-overviewmap'] CSS class name.\n * @property {boolean} [collapsed=true] Whether the control should start collapsed or not (expanded).\n * @property {string|HTMLElement} [collapseLabel='‹'] Text label to use for the\n * expanded overviewmap button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {boolean} [collapsible=true] Whether the control can be collapsed or not.\n * @property {string|HTMLElement} [label='›'] Text label to use for the collapsed\n * overviewmap button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {Array|import(\"../Collection.js\").default} [layers]\n * Layers for the overview map.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {boolean} [rotateWithView=false] Whether the control view should rotate with the main map view.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {string} [tipLabel='Overview map'] Text label to use for the button tip.\n * @property {View} [view] Custom view for the overview map (should use same projection as main map). If not provided,\n * a default view with the same projection as the main map will be used.\n */\n\n/**\n * Create a new control with a map acting as an overview map for another\n * defined map.\n *\n * @api\n */\nclass OverviewMap extends Control {\n /**\n * @param {Options} [options] OverviewMap options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n });\n\n /**\n * @private\n */\n this.boundHandleRotationChanged_ = this.handleRotationChanged_.bind(this);\n\n /**\n * @type {boolean}\n * @private\n */\n this.collapsed_ =\n options.collapsed !== undefined ? options.collapsed : true;\n\n /**\n * @private\n * @type {boolean}\n */\n this.collapsible_ =\n options.collapsible !== undefined ? options.collapsible : true;\n\n if (!this.collapsible_) {\n this.collapsed_ = false;\n }\n\n /**\n * @private\n * @type {boolean}\n */\n this.rotateWithView_ =\n options.rotateWithView !== undefined ? options.rotateWithView : false;\n\n /**\n * @private\n * @type {import(\"../extent.js\").Extent|undefined}\n */\n this.viewExtent_ = undefined;\n\n const className =\n options.className !== undefined ? options.className : 'ol-overviewmap';\n\n const tipLabel =\n options.tipLabel !== undefined ? options.tipLabel : 'Overview map';\n\n const collapseLabel =\n options.collapseLabel !== undefined ? options.collapseLabel : '\\u2039';\n\n if (typeof collapseLabel === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.collapseLabel_ = document.createElement('span');\n this.collapseLabel_.textContent = collapseLabel;\n } else {\n this.collapseLabel_ = collapseLabel;\n }\n\n const label = options.label !== undefined ? options.label : '\\u203A';\n\n if (typeof label === 'string') {\n /**\n * @private\n * @type {HTMLElement}\n */\n this.label_ = document.createElement('span');\n this.label_.textContent = label;\n } else {\n this.label_ = label;\n }\n\n const activeLabel =\n this.collapsible_ && !this.collapsed_ ? this.collapseLabel_ : this.label_;\n const button = document.createElement('button');\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(activeLabel);\n\n button.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this),\n false\n );\n\n /**\n * @type {HTMLElement}\n * @private\n */\n this.ovmapDiv_ = document.createElement('div');\n this.ovmapDiv_.className = 'ol-overviewmap-map';\n\n /**\n * Explicitly given view to be used instead of a view derived from the main map.\n * @type {View}\n * @private\n */\n this.view_ = options.view;\n\n const ovmap = new Map({\n view: options.view,\n controls: new Collection(),\n interactions: new Collection(),\n });\n\n /**\n * @type {Map}\n * @private\n */\n this.ovmap_ = ovmap;\n\n if (options.layers) {\n options.layers.forEach(function (layer) {\n ovmap.addLayer(layer);\n });\n }\n\n const box = document.createElement('div');\n box.className = 'ol-overviewmap-box';\n box.style.boxSizing = 'border-box';\n\n /**\n * @type {import(\"../Overlay.js\").default}\n * @private\n */\n this.boxOverlay_ = new Overlay({\n position: [0, 0],\n positioning: 'center-center',\n element: box,\n });\n this.ovmap_.addOverlay(this.boxOverlay_);\n\n const cssClasses =\n className +\n ' ' +\n CLASS_UNSELECTABLE +\n ' ' +\n CLASS_CONTROL +\n (this.collapsed_ && this.collapsible_ ? ' ' + CLASS_COLLAPSED : '') +\n (this.collapsible_ ? '' : ' ol-uncollapsible');\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(this.ovmapDiv_);\n element.appendChild(button);\n\n /* Interactive map */\n\n const scope = this;\n\n const overlay = this.boxOverlay_;\n const overlayBox = this.boxOverlay_.getElement();\n\n /* Functions definition */\n\n const computeDesiredMousePosition = function (mousePosition) {\n return {\n clientX: mousePosition.clientX,\n clientY: mousePosition.clientY,\n };\n };\n\n const move = function (event) {\n const position = /** @type {?} */ (computeDesiredMousePosition(event));\n const coordinates = ovmap.getEventCoordinateInternal(\n /** @type {MouseEvent} */ (position)\n );\n\n overlay.setPosition(coordinates);\n };\n\n const endMoving = function (event) {\n const coordinates = ovmap.getEventCoordinateInternal(event);\n\n scope.getMap().getView().setCenterInternal(coordinates);\n\n window.removeEventListener('mousemove', move);\n window.removeEventListener('mouseup', endMoving);\n };\n\n /* Binding */\n\n overlayBox.addEventListener('mousedown', function () {\n window.addEventListener('mousemove', move);\n window.addEventListener('mouseup', endMoving);\n });\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Pass `null` to just remove the control from the current map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n */\n setMap(map) {\n const oldMap = this.getMap();\n if (map === oldMap) {\n return;\n }\n if (oldMap) {\n const oldView = oldMap.getView();\n if (oldView) {\n this.unbindView_(oldView);\n }\n this.ovmap_.setTarget(null);\n }\n super.setMap(map);\n\n if (map) {\n this.ovmap_.setTarget(this.ovmapDiv_);\n this.listenerKeys.push(\n listen(\n map,\n ObjectEventType.PROPERTYCHANGE,\n this.handleMapPropertyChange_,\n this\n )\n );\n\n const view = map.getView();\n if (view) {\n this.bindView_(view);\n if (view.isDef()) {\n this.ovmap_.updateSize();\n this.resetExtent_();\n }\n }\n\n if (!this.ovmap_.isRendered()) {\n this.updateBoxAfterOvmapIsRendered_();\n }\n }\n }\n\n /**\n * Handle map property changes. This only deals with changes to the map's view.\n * @param {import(\"../Object.js\").ObjectEvent} event The propertychange event.\n * @private\n */\n handleMapPropertyChange_(event) {\n if (event.key === MapProperty.VIEW) {\n const oldView = /** @type {import(\"../View.js\").default} */ (\n event.oldValue\n );\n if (oldView) {\n this.unbindView_(oldView);\n }\n const newView = this.getMap().getView();\n this.bindView_(newView);\n } else if (\n !this.ovmap_.isRendered() &&\n (event.key === MapProperty.TARGET || event.key === MapProperty.SIZE)\n ) {\n this.ovmap_.updateSize();\n }\n }\n\n /**\n * Register listeners for view property changes.\n * @param {import(\"../View.js\").default} view The view.\n * @private\n */\n bindView_(view) {\n if (!this.view_) {\n // Unless an explicit view definition was given, derive default from whatever main map uses.\n const newView = new View({\n projection: view.getProjection(),\n });\n this.ovmap_.setView(newView);\n }\n\n view.addChangeListener(\n ViewProperty.ROTATION,\n this.boundHandleRotationChanged_\n );\n // Sync once with the new view\n this.handleRotationChanged_();\n }\n\n /**\n * Unregister listeners for view property changes.\n * @param {import(\"../View.js\").default} view The view.\n * @private\n */\n unbindView_(view) {\n view.removeChangeListener(\n ViewProperty.ROTATION,\n this.boundHandleRotationChanged_\n );\n }\n\n /**\n * Handle rotation changes to the main map.\n * @private\n */\n handleRotationChanged_() {\n if (this.rotateWithView_) {\n this.ovmap_.getView().setRotation(this.getMap().getView().getRotation());\n }\n }\n\n /**\n * Reset the overview map extent if the box size (width or\n * height) is less than the size of the overview map size times minRatio\n * or is greater than the size of the overview size times maxRatio.\n *\n * If the map extent was not reset, the box size can fits in the defined\n * ratio sizes. This method then checks if is contained inside the overview\n * map current extent. If not, recenter the overview map to the current\n * main map center location.\n * @private\n */\n validateExtent_() {\n const map = this.getMap();\n const ovmap = this.ovmap_;\n\n if (!map.isRendered() || !ovmap.isRendered()) {\n return;\n }\n\n const mapSize = /** @type {import(\"../size.js\").Size} */ (map.getSize());\n\n const view = map.getView();\n const extent = view.calculateExtentInternal(mapSize);\n\n if (this.viewExtent_ && equalsExtent(extent, this.viewExtent_)) {\n // repeats of the same extent may indicate constraint conflicts leading to an endless cycle\n return;\n }\n this.viewExtent_ = extent;\n\n const ovmapSize = /** @type {import(\"../size.js\").Size} */ (\n ovmap.getSize()\n );\n\n const ovview = ovmap.getView();\n const ovextent = ovview.calculateExtentInternal(ovmapSize);\n\n const topLeftPixel = ovmap.getPixelFromCoordinateInternal(\n getTopLeft(extent)\n );\n const bottomRightPixel = ovmap.getPixelFromCoordinateInternal(\n getBottomRight(extent)\n );\n\n const boxWidth = Math.abs(topLeftPixel[0] - bottomRightPixel[0]);\n const boxHeight = Math.abs(topLeftPixel[1] - bottomRightPixel[1]);\n\n const ovmapWidth = ovmapSize[0];\n const ovmapHeight = ovmapSize[1];\n\n if (\n boxWidth < ovmapWidth * MIN_RATIO ||\n boxHeight < ovmapHeight * MIN_RATIO ||\n boxWidth > ovmapWidth * MAX_RATIO ||\n boxHeight > ovmapHeight * MAX_RATIO\n ) {\n this.resetExtent_();\n } else if (!containsExtent(ovextent, extent)) {\n this.recenter_();\n }\n }\n\n /**\n * Reset the overview map extent to half calculated min and max ratio times\n * the extent of the main map.\n * @private\n */\n resetExtent_() {\n if (MAX_RATIO === 0 || MIN_RATIO === 0) {\n return;\n }\n\n const map = this.getMap();\n const ovmap = this.ovmap_;\n\n const mapSize = /** @type {import(\"../size.js\").Size} */ (map.getSize());\n\n const view = map.getView();\n const extent = view.calculateExtentInternal(mapSize);\n\n const ovview = ovmap.getView();\n\n // get how many times the current map overview could hold different\n // box sizes using the min and max ratio, pick the step in the middle used\n // to calculate the extent from the main map to set it to the overview map,\n const steps = Math.log(MAX_RATIO / MIN_RATIO) / Math.LN2;\n const ratio = 1 / (Math.pow(2, steps / 2) * MIN_RATIO);\n scaleFromCenter(extent, ratio);\n ovview.fitInternal(polygonFromExtent(extent));\n }\n\n /**\n * Set the center of the overview map to the map center without changing its\n * resolution.\n * @private\n */\n recenter_() {\n const map = this.getMap();\n const ovmap = this.ovmap_;\n\n const view = map.getView();\n\n const ovview = ovmap.getView();\n\n ovview.setCenterInternal(view.getCenterInternal());\n }\n\n /**\n * Update the box using the main map extent\n * @private\n */\n updateBox_() {\n const map = this.getMap();\n const ovmap = this.ovmap_;\n\n if (!map.isRendered() || !ovmap.isRendered()) {\n return;\n }\n\n const mapSize = /** @type {import(\"../size.js\").Size} */ (map.getSize());\n\n const view = map.getView();\n\n const ovview = ovmap.getView();\n\n const rotation = this.rotateWithView_ ? 0 : -view.getRotation();\n\n const overlay = this.boxOverlay_;\n const box = this.boxOverlay_.getElement();\n const center = view.getCenterInternal();\n const resolution = view.getResolution();\n const ovresolution = ovview.getResolution();\n const width = (mapSize[0] * resolution) / ovresolution;\n const height = (mapSize[1] * resolution) / ovresolution;\n\n // set position using center coordinates\n overlay.setPosition(center);\n\n // set box size calculated from map extent size and overview map resolution\n if (box) {\n box.style.width = width + 'px';\n box.style.height = height + 'px';\n const transform = 'rotate(' + rotation + 'rad)';\n box.style.transform = transform;\n }\n }\n\n /**\n * @private\n */\n updateBoxAfterOvmapIsRendered_() {\n if (this.ovmapPostrenderKey_) {\n return;\n }\n this.ovmapPostrenderKey_ = listenOnce(\n this.ovmap_,\n MapEventType.POSTRENDER,\n function (event) {\n delete this.ovmapPostrenderKey_;\n this.updateBox_();\n },\n this\n );\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n this.handleToggle_();\n }\n\n /**\n * @private\n */\n handleToggle_() {\n this.element.classList.toggle(CLASS_COLLAPSED);\n if (this.collapsed_) {\n replaceNode(this.collapseLabel_, this.label_);\n } else {\n replaceNode(this.label_, this.collapseLabel_);\n }\n this.collapsed_ = !this.collapsed_;\n\n // manage overview map if it had not been rendered before and control\n // is expanded\n const ovmap = this.ovmap_;\n if (!this.collapsed_) {\n if (ovmap.isRendered()) {\n this.viewExtent_ = undefined;\n ovmap.render();\n return;\n }\n ovmap.updateSize();\n this.resetExtent_();\n this.updateBoxAfterOvmapIsRendered_();\n }\n }\n\n /**\n * Return `true` if the overview map is collapsible, `false` otherwise.\n * @return {boolean} True if the widget is collapsible.\n * @api\n */\n getCollapsible() {\n return this.collapsible_;\n }\n\n /**\n * Set whether the overview map should be collapsible.\n * @param {boolean} collapsible True if the widget is collapsible.\n * @api\n */\n setCollapsible(collapsible) {\n if (this.collapsible_ === collapsible) {\n return;\n }\n this.collapsible_ = collapsible;\n this.element.classList.toggle('ol-uncollapsible');\n if (!collapsible && this.collapsed_) {\n this.handleToggle_();\n }\n }\n\n /**\n * Collapse or expand the overview map according to the passed parameter. Will\n * not do anything if the overview map isn't collapsible or if the current\n * collapsed state is already the one requested.\n * @param {boolean} collapsed True if the widget is collapsed.\n * @api\n */\n setCollapsed(collapsed) {\n if (!this.collapsible_ || this.collapsed_ === collapsed) {\n return;\n }\n this.handleToggle_();\n }\n\n /**\n * Determine if the overview map is collapsed.\n * @return {boolean} The overview map is collapsed.\n * @api\n */\n getCollapsed() {\n return this.collapsed_;\n }\n\n /**\n * Return `true` if the overview map view can rotate, `false` otherwise.\n * @return {boolean} True if the control view can rotate.\n * @api\n */\n getRotateWithView() {\n return this.rotateWithView_;\n }\n\n /**\n * Set whether the overview map view should rotate with the main map view.\n * @param {boolean} rotateWithView True if the control view should rotate.\n * @api\n */\n setRotateWithView(rotateWithView) {\n if (this.rotateWithView_ === rotateWithView) {\n return;\n }\n this.rotateWithView_ = rotateWithView;\n if (this.getMap().getView().getRotation() !== 0) {\n if (this.rotateWithView_) {\n this.handleRotationChanged_();\n } else {\n this.ovmap_.getView().setRotation(0);\n }\n this.viewExtent_ = undefined;\n this.validateExtent_();\n this.updateBox_();\n }\n }\n\n /**\n * Return the overview map.\n * @return {import(\"../Map.js\").default} Overview map.\n * @api\n */\n getOverviewMap() {\n return this.ovmap_;\n }\n\n /**\n * Update the overview map element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n this.validateExtent_();\n this.updateBox_();\n }\n}\n\nexport default OverviewMap;\n","/**\n * @module ol/control/ScaleLine\n */\nimport Control from './Control.js';\nimport {CLASS_UNSELECTABLE} from '../css.js';\nimport {METERS_PER_UNIT, getPointResolution} from '../proj.js';\n\n/**\n * @type {string}\n */\nconst UNITS_PROP = 'units';\n\n/**\n * @typedef {'degrees' | 'imperial' | 'nautical' | 'metric' | 'us'} Units\n * Units for the scale line.\n */\n\n/**\n * @const\n * @type {Array}\n */\nconst LEADING_DIGITS = [1, 2, 5];\n\n/**\n * @const\n * @type {number}\n */\nconst DEFAULT_DPI = 25.4 / 0.28;\n\n/***\n * @template Return\n * @typedef {import(\"../Observable\").OnSignature &\n * import(\"../Observable\").OnSignature &\n * import(\"../Observable\").CombinedOnSignature} ScaleLineOnSignature\n */\n\n/**\n * @typedef {Object} Options\n * @property {string} [className] CSS class name. The default is `ol-scale-bar` when configured with\n * `bar: true`. Otherwise the default is `ol-scale-line`.\n * @property {number} [minWidth=64] Minimum width in pixels at the OGC default dpi. The width will be\n * adjusted to match the dpi used.\n * @property {number} [maxWidth] Maximum width in pixels at the OGC default dpi. The width will be\n * adjusted to match the dpi used.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the control\n * to be rendered outside of the map's viewport.\n * @property {Units} [units='metric'] Units.\n * @property {boolean} [bar=false] Render scalebars instead of a line.\n * @property {number} [steps=4] Number of steps the scalebar should use. Use even numbers\n * for best results. Only applies when `bar` is `true`.\n * @property {boolean} [text=false] Render the text scale above of the scalebar. Only applies\n * when `bar` is `true`.\n * @property {number|undefined} [dpi=undefined] dpi of output device such as printer. Only applies\n * when `bar` is `true`. If undefined the OGC default screen pixel size of 0.28mm will be assumed.\n */\n\n/**\n * @classdesc\n * A control displaying rough y-axis distances, calculated for the center of the\n * viewport. For conformal projections (e.g. EPSG:3857, the default view\n * projection in OpenLayers), the scale is valid for all directions.\n * No scale line will be shown when the y-axis distance of a pixel at the\n * viewport center cannot be calculated in the view projection.\n * By default the scale line will show in the bottom left portion of the map,\n * but this can be changed by using the css selector `.ol-scale-line`.\n * When specifying `bar` as `true`, a scalebar will be rendered instead\n * of a scaleline.\n *\n * @api\n */\nclass ScaleLine extends Control {\n /**\n * @param {Options} [options] Scale line options.\n */\n constructor(options) {\n options = options ? options : {};\n\n const element = document.createElement('div');\n element.style.pointerEvents = 'none';\n\n super({\n element: element,\n render: options.render,\n target: options.target,\n });\n\n /***\n * @type {ScaleLineOnSignature}\n */\n this.on;\n\n /***\n * @type {ScaleLineOnSignature}\n */\n this.once;\n\n /***\n * @type {ScaleLineOnSignature}\n */\n this.un;\n\n const className =\n options.className !== undefined\n ? options.className\n : options.bar\n ? 'ol-scale-bar'\n : 'ol-scale-line';\n\n /**\n * @private\n * @type {HTMLElement}\n */\n this.innerElement_ = document.createElement('div');\n this.innerElement_.className = className + '-inner';\n\n this.element.className = className + ' ' + CLASS_UNSELECTABLE;\n this.element.appendChild(this.innerElement_);\n\n /**\n * @private\n * @type {?import(\"../View.js\").State}\n */\n this.viewState_ = null;\n\n /**\n * @private\n * @type {number}\n */\n this.minWidth_ = options.minWidth !== undefined ? options.minWidth : 64;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.maxWidth_ = options.maxWidth;\n\n /**\n * @private\n * @type {boolean}\n */\n this.renderedVisible_ = false;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.renderedWidth_ = undefined;\n\n /**\n * @private\n * @type {string}\n */\n this.renderedHTML_ = '';\n\n this.addChangeListener(UNITS_PROP, this.handleUnitsChanged_);\n\n this.setUnits(options.units || 'metric');\n\n /**\n * @private\n * @type {boolean}\n */\n this.scaleBar_ = options.bar || false;\n\n /**\n * @private\n * @type {number}\n */\n this.scaleBarSteps_ = options.steps || 4;\n\n /**\n * @private\n * @type {boolean}\n */\n this.scaleBarText_ = options.text || false;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.dpi_ = options.dpi || undefined;\n }\n\n /**\n * Return the units to use in the scale line.\n * @return {Units} The units\n * to use in the scale line.\n * @observable\n * @api\n */\n getUnits() {\n return this.get(UNITS_PROP);\n }\n\n /**\n * @private\n */\n handleUnitsChanged_() {\n this.updateElement_();\n }\n\n /**\n * Set the units to use in the scale line.\n * @param {Units} units The units to use in the scale line.\n * @observable\n * @api\n */\n setUnits(units) {\n this.set(UNITS_PROP, units);\n }\n\n /**\n * Specify the dpi of output device such as printer.\n * @param {number|undefined} dpi The dpi of output device.\n * @api\n */\n setDpi(dpi) {\n this.dpi_ = dpi;\n }\n\n /**\n * @private\n */\n updateElement_() {\n const viewState = this.viewState_;\n\n if (!viewState) {\n if (this.renderedVisible_) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n }\n return;\n }\n\n const center = viewState.center;\n const projection = viewState.projection;\n const units = this.getUnits();\n const pointResolutionUnits = units == 'degrees' ? 'degrees' : 'm';\n let pointResolution = getPointResolution(\n projection,\n viewState.resolution,\n center,\n pointResolutionUnits\n );\n\n const minWidth =\n (this.minWidth_ * (this.dpi_ || DEFAULT_DPI)) / DEFAULT_DPI;\n\n const maxWidth =\n this.maxWidth_ !== undefined\n ? (this.maxWidth_ * (this.dpi_ || DEFAULT_DPI)) / DEFAULT_DPI\n : undefined;\n\n let nominalCount = minWidth * pointResolution;\n let suffix = '';\n if (units == 'degrees') {\n const metersPerDegree = METERS_PER_UNIT.degrees;\n nominalCount *= metersPerDegree;\n if (nominalCount < metersPerDegree / 60) {\n suffix = '\\u2033'; // seconds\n pointResolution *= 3600;\n } else if (nominalCount < metersPerDegree) {\n suffix = '\\u2032'; // minutes\n pointResolution *= 60;\n } else {\n suffix = '\\u00b0'; // degrees\n }\n } else if (units == 'imperial') {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution /= 0.0254;\n } else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.3048;\n } else {\n suffix = 'mi';\n pointResolution /= 1609.344;\n }\n } else if (units == 'nautical') {\n pointResolution /= 1852;\n suffix = 'NM';\n } else if (units == 'metric') {\n if (nominalCount < 0.001) {\n suffix = 'μm';\n pointResolution *= 1000000;\n } else if (nominalCount < 1) {\n suffix = 'mm';\n pointResolution *= 1000;\n } else if (nominalCount < 1000) {\n suffix = 'm';\n } else {\n suffix = 'km';\n pointResolution /= 1000;\n }\n } else if (units == 'us') {\n if (nominalCount < 0.9144) {\n suffix = 'in';\n pointResolution *= 39.37;\n } else if (nominalCount < 1609.344) {\n suffix = 'ft';\n pointResolution /= 0.30480061;\n } else {\n suffix = 'mi';\n pointResolution /= 1609.3472;\n }\n } else {\n throw new Error('Invalid units');\n }\n\n let i = 3 * Math.floor(Math.log(minWidth * pointResolution) / Math.log(10));\n let count, width, decimalCount;\n let previousCount, previousWidth, previousDecimalCount;\n while (true) {\n decimalCount = Math.floor(i / 3);\n const decimal = Math.pow(10, decimalCount);\n count = LEADING_DIGITS[((i % 3) + 3) % 3] * decimal;\n width = Math.round(count / pointResolution);\n if (isNaN(width)) {\n this.element.style.display = 'none';\n this.renderedVisible_ = false;\n return;\n }\n if (maxWidth !== undefined && width >= maxWidth) {\n count = previousCount;\n width = previousWidth;\n decimalCount = previousDecimalCount;\n break;\n } else if (width >= minWidth) {\n break;\n }\n previousCount = count;\n previousWidth = width;\n previousDecimalCount = decimalCount;\n ++i;\n }\n const html = this.scaleBar_\n ? this.createScaleBar(width, count, suffix)\n : count.toFixed(decimalCount < 0 ? -decimalCount : 0) + ' ' + suffix;\n\n if (this.renderedHTML_ != html) {\n this.innerElement_.innerHTML = html;\n this.renderedHTML_ = html;\n }\n\n if (this.renderedWidth_ != width) {\n this.innerElement_.style.width = width + 'px';\n this.renderedWidth_ = width;\n }\n\n if (!this.renderedVisible_) {\n this.element.style.display = '';\n this.renderedVisible_ = true;\n }\n }\n\n /**\n * @private\n * @param {number} width The current width of the scalebar.\n * @param {number} scale The current scale.\n * @param {string} suffix The suffix to append to the scale text.\n * @return {string} The stringified HTML of the scalebar.\n */\n createScaleBar(width, scale, suffix) {\n const resolutionScale = this.getScaleForResolution();\n const mapScale =\n resolutionScale < 1\n ? Math.round(1 / resolutionScale).toLocaleString() + ' : 1'\n : '1 : ' + Math.round(resolutionScale).toLocaleString();\n const steps = this.scaleBarSteps_;\n const stepWidth = width / steps;\n const scaleSteps = [this.createMarker('absolute')];\n for (let i = 0; i < steps; ++i) {\n const cls =\n i % 2 === 0 ? 'ol-scale-singlebar-odd' : 'ol-scale-singlebar-even';\n scaleSteps.push(\n '
' +\n '
' +\n '
' +\n this.createMarker('relative') +\n // render text every second step, except when only 2 steps\n (i % 2 === 0 || steps === 2\n ? this.createStepText(i, width, false, scale, suffix)\n : '') +\n '
'\n );\n }\n // render text at the end\n scaleSteps.push(this.createStepText(steps, width, true, scale, suffix));\n\n const scaleBarText = this.scaleBarText_\n ? `
` +\n mapScale +\n '
'\n : '';\n return scaleBarText + scaleSteps.join('');\n }\n\n /**\n * Creates a marker at given position\n * @param {'absolute'|'relative'} position The position, absolute or relative\n * @return {string} The stringified div containing the marker\n */\n createMarker(position) {\n const top = position === 'absolute' ? 3 : -10;\n return (\n '
'\n );\n }\n\n /**\n * Creates the label for a marker marker at given position\n * @param {number} i The iterator\n * @param {number} width The width the scalebar will currently use\n * @param {boolean} isLast Flag indicating if we add the last step text\n * @param {number} scale The current scale for the whole scalebar\n * @param {string} suffix The suffix for the scale\n * @return {string} The stringified div containing the step text\n */\n createStepText(i, width, isLast, scale, suffix) {\n const length =\n i === 0 ? 0 : Math.round((scale / this.scaleBarSteps_) * i * 100) / 100;\n const lengthString = length + (i === 0 ? '' : ' ' + suffix);\n const margin = i === 0 ? -3 : (width / this.scaleBarSteps_) * -1;\n const minWidth = i === 0 ? 0 : (width / this.scaleBarSteps_) * 2;\n return (\n '
' +\n lengthString +\n '
'\n );\n }\n\n /**\n * Returns the appropriate scale for the given resolution and units.\n * @return {number} The appropriate scale.\n */\n getScaleForResolution() {\n const resolution = getPointResolution(\n this.viewState_.projection,\n this.viewState_.resolution,\n this.viewState_.center,\n 'm'\n );\n const dpi = this.dpi_ || DEFAULT_DPI;\n const inchesPerMeter = 1000 / 25.4;\n return resolution * inchesPerMeter * dpi;\n }\n\n /**\n * Update the scale line element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n const frameState = mapEvent.frameState;\n if (!frameState) {\n this.viewState_ = null;\n } else {\n this.viewState_ = frameState.viewState;\n }\n this.updateElement_();\n }\n}\n\nexport default ScaleLine;\n","/**\n * @module ol/control/ZoomSlider\n */\n\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport PointerEventType from '../pointer/EventType.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {clamp} from '../math.js';\nimport {easeOut} from '../easing.js';\nimport {listen, unlistenByKey} from '../events.js';\nimport {stopPropagation} from '../events/Event.js';\n\n/**\n * The enum for available directions.\n *\n * @enum {number}\n */\nconst Direction = {\n VERTICAL: 0,\n HORIZONTAL: 1,\n};\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-zoomslider'] CSS class name.\n * @property {number} [duration=200] Animation duration in milliseconds.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control\n * should be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A slider type of control for zooming.\n *\n * Example:\n *\n * map.addControl(new ZoomSlider());\n *\n * @api\n */\nclass ZoomSlider extends Control {\n /**\n * @param {Options} [options] Zoom slider options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n target: options.target,\n element: document.createElement('div'),\n render: options.render,\n });\n\n /**\n * @type {!Array}\n * @private\n */\n this.dragListenerKeys_ = [];\n\n /**\n * Will hold the current resolution of the view.\n *\n * @type {number|undefined}\n * @private\n */\n this.currentResolution_ = undefined;\n\n /**\n * The direction of the slider. Will be determined from actual display of the\n * container and defaults to Direction.VERTICAL.\n *\n * @type {Direction}\n * @private\n */\n this.direction_ = Direction.VERTICAL;\n\n /**\n * @type {boolean}\n * @private\n */\n this.dragging_;\n\n /**\n * @type {number}\n * @private\n */\n this.heightLimit_ = 0;\n\n /**\n * @type {number}\n * @private\n */\n this.widthLimit_ = 0;\n\n /**\n * @type {number|undefined}\n * @private\n */\n this.startX_;\n\n /**\n * @type {number|undefined}\n * @private\n */\n this.startY_;\n\n /**\n * The calculated thumb size (border box plus margins). Set when initSlider_\n * is called.\n * @type {import(\"../size.js\").Size}\n * @private\n */\n this.thumbSize_ = null;\n\n /**\n * Whether the slider is initialized.\n * @type {boolean}\n * @private\n */\n this.sliderInitialized_ = false;\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 200;\n\n const className =\n options.className !== undefined ? options.className : 'ol-zoomslider';\n const thumbElement = document.createElement('button');\n thumbElement.setAttribute('type', 'button');\n thumbElement.className = className + '-thumb ' + CLASS_UNSELECTABLE;\n const containerElement = this.element;\n containerElement.className =\n className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n containerElement.appendChild(thumbElement);\n\n containerElement.addEventListener(\n PointerEventType.POINTERDOWN,\n this.handleDraggerStart_.bind(this),\n false\n );\n containerElement.addEventListener(\n PointerEventType.POINTERMOVE,\n this.handleDraggerDrag_.bind(this),\n false\n );\n containerElement.addEventListener(\n PointerEventType.POINTERUP,\n this.handleDraggerEnd_.bind(this),\n false\n );\n\n containerElement.addEventListener(\n EventType.CLICK,\n this.handleContainerClick_.bind(this),\n false\n );\n thumbElement.addEventListener(EventType.CLICK, stopPropagation, false);\n }\n\n /**\n * Remove the control from its current map and attach it to the new map.\n * Pass `null` to just remove the control from the current map.\n * Subclasses may set up event handlers to get notified about changes to\n * the map here.\n * @param {import(\"../Map.js\").default|null} map Map.\n * @api\n */\n setMap(map) {\n super.setMap(map);\n if (map) {\n map.render();\n }\n }\n\n /**\n * Initializes the slider element. This will determine and set this controls\n * direction_ and also constrain the dragging of the thumb to always be within\n * the bounds of the container.\n *\n * @return {boolean} Initialization successful\n * @private\n */\n initSlider_() {\n const container = this.element;\n let containerWidth = container.offsetWidth;\n let containerHeight = container.offsetHeight;\n if (containerWidth === 0 && containerHeight === 0) {\n return (this.sliderInitialized_ = false);\n }\n\n const containerStyle = getComputedStyle(container);\n containerWidth -=\n parseFloat(containerStyle['paddingRight']) +\n parseFloat(containerStyle['paddingLeft']);\n containerHeight -=\n parseFloat(containerStyle['paddingTop']) +\n parseFloat(containerStyle['paddingBottom']);\n const thumb = /** @type {HTMLElement} */ (container.firstElementChild);\n const thumbStyle = getComputedStyle(thumb);\n const thumbWidth =\n thumb.offsetWidth +\n parseFloat(thumbStyle['marginRight']) +\n parseFloat(thumbStyle['marginLeft']);\n const thumbHeight =\n thumb.offsetHeight +\n parseFloat(thumbStyle['marginTop']) +\n parseFloat(thumbStyle['marginBottom']);\n this.thumbSize_ = [thumbWidth, thumbHeight];\n\n if (containerWidth > containerHeight) {\n this.direction_ = Direction.HORIZONTAL;\n this.widthLimit_ = containerWidth - thumbWidth;\n } else {\n this.direction_ = Direction.VERTICAL;\n this.heightLimit_ = containerHeight - thumbHeight;\n }\n return (this.sliderInitialized_ = true);\n }\n\n /**\n * @param {PointerEvent} event The browser event to handle.\n * @private\n */\n handleContainerClick_(event) {\n const view = this.getMap().getView();\n\n const relativePosition = this.getRelativePosition_(\n event.offsetX - this.thumbSize_[0] / 2,\n event.offsetY - this.thumbSize_[1] / 2\n );\n\n const resolution = this.getResolutionForPosition_(relativePosition);\n const zoom = view.getConstrainedZoom(view.getZoomForResolution(resolution));\n\n view.animateInternal({\n zoom: zoom,\n duration: this.duration_,\n easing: easeOut,\n });\n }\n\n /**\n * Handle dragger start events.\n * @param {PointerEvent} event The drag event.\n * @private\n */\n handleDraggerStart_(event) {\n if (!this.dragging_ && event.target === this.element.firstElementChild) {\n const element = /** @type {HTMLElement} */ (\n this.element.firstElementChild\n );\n this.getMap().getView().beginInteraction();\n this.startX_ = event.clientX - parseFloat(element.style.left);\n this.startY_ = event.clientY - parseFloat(element.style.top);\n this.dragging_ = true;\n\n if (this.dragListenerKeys_.length === 0) {\n const drag = this.handleDraggerDrag_;\n const end = this.handleDraggerEnd_;\n const doc = this.getMap().getOwnerDocument();\n this.dragListenerKeys_.push(\n listen(doc, PointerEventType.POINTERMOVE, drag, this),\n listen(doc, PointerEventType.POINTERUP, end, this)\n );\n }\n }\n }\n\n /**\n * Handle dragger drag events.\n *\n * @param {PointerEvent} event The drag event.\n * @private\n */\n handleDraggerDrag_(event) {\n if (this.dragging_) {\n const deltaX = event.clientX - this.startX_;\n const deltaY = event.clientY - this.startY_;\n const relativePosition = this.getRelativePosition_(deltaX, deltaY);\n this.currentResolution_ =\n this.getResolutionForPosition_(relativePosition);\n this.getMap().getView().setResolution(this.currentResolution_);\n }\n }\n\n /**\n * Handle dragger end events.\n * @param {PointerEvent} event The drag event.\n * @private\n */\n handleDraggerEnd_(event) {\n if (this.dragging_) {\n const view = this.getMap().getView();\n view.endInteraction();\n\n this.dragging_ = false;\n this.startX_ = undefined;\n this.startY_ = undefined;\n this.dragListenerKeys_.forEach(unlistenByKey);\n this.dragListenerKeys_.length = 0;\n }\n }\n\n /**\n * Positions the thumb inside its container according to the given resolution.\n *\n * @param {number} res The res.\n * @private\n */\n setThumbPosition_(res) {\n const position = this.getPositionForResolution_(res);\n const thumb = /** @type {HTMLElement} */ (this.element.firstElementChild);\n\n if (this.direction_ == Direction.HORIZONTAL) {\n thumb.style.left = this.widthLimit_ * position + 'px';\n } else {\n thumb.style.top = this.heightLimit_ * position + 'px';\n }\n }\n\n /**\n * Calculates the relative position of the thumb given x and y offsets. The\n * relative position scales from 0 to 1. The x and y offsets are assumed to be\n * in pixel units within the dragger limits.\n *\n * @param {number} x Pixel position relative to the left of the slider.\n * @param {number} y Pixel position relative to the top of the slider.\n * @return {number} The relative position of the thumb.\n * @private\n */\n getRelativePosition_(x, y) {\n let amount;\n if (this.direction_ === Direction.HORIZONTAL) {\n amount = x / this.widthLimit_;\n } else {\n amount = y / this.heightLimit_;\n }\n return clamp(amount, 0, 1);\n }\n\n /**\n * Calculates the corresponding resolution of the thumb given its relative\n * position (where 0 is the minimum and 1 is the maximum).\n *\n * @param {number} position The relative position of the thumb.\n * @return {number} The corresponding resolution.\n * @private\n */\n getResolutionForPosition_(position) {\n const fn = this.getMap().getView().getResolutionForValueFunction();\n return fn(1 - position);\n }\n\n /**\n * Determines the relative position of the slider for the given resolution. A\n * relative position of 0 corresponds to the minimum view resolution. A\n * relative position of 1 corresponds to the maximum view resolution.\n *\n * @param {number} res The resolution.\n * @return {number} The relative position value (between 0 and 1).\n * @private\n */\n getPositionForResolution_(res) {\n const fn = this.getMap().getView().getValueForResolutionFunction();\n return clamp(1 - fn(res), 0, 1);\n }\n\n /**\n * Update the zoomslider element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n if (!mapEvent.frameState) {\n return;\n }\n if (!this.sliderInitialized_ && !this.initSlider_()) {\n return;\n }\n const res = mapEvent.frameState.viewState.resolution;\n this.currentResolution_ = res;\n this.setThumbPosition_(res);\n }\n}\n\nexport default ZoomSlider;\n","/**\n * @module ol/control/Rotate\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport {CLASS_CONTROL, CLASS_HIDDEN, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\n\n/**\n * @typedef {Object} Options\n * @property {string} [className='ol-rotate'] CSS class name.\n * @property {string|HTMLElement} [label='⇧'] Text label to use for the rotate button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [tipLabel='Reset rotation'] Text label to use for the rotate tip.\n * @property {string} [compassClassName='ol-compass'] CSS class name for the compass.\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {boolean} [autoHide=true] Hide the control when rotation is 0.\n * @property {function(import(\"../MapEvent.js\").default):void} [render] Function called when the control should\n * be re-rendered. This is called in a `requestAnimationFrame` callback.\n * @property {function():void} [resetNorth] Function called when the control is clicked.\n * This will override the default `resetNorth`.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A button control to reset rotation to 0.\n * To style this control use css selector `.ol-rotate`. A `.ol-hidden` css\n * selector is added to the button when the rotation is 0.\n *\n * @api\n */\nclass Rotate extends Control {\n /**\n * @param {Options} [options] Rotate options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n render: options.render,\n target: options.target,\n });\n\n const className =\n options.className !== undefined ? options.className : 'ol-rotate';\n\n const label = options.label !== undefined ? options.label : '\\u21E7';\n\n const compassClassName =\n options.compassClassName !== undefined\n ? options.compassClassName\n : 'ol-compass';\n\n /**\n * @type {HTMLElement}\n * @private\n */\n this.label_ = null;\n\n if (typeof label === 'string') {\n this.label_ = document.createElement('span');\n this.label_.className = compassClassName;\n this.label_.textContent = label;\n } else {\n this.label_ = label;\n this.label_.classList.add(compassClassName);\n }\n\n const tipLabel = options.tipLabel ? options.tipLabel : 'Reset rotation';\n\n const button = document.createElement('button');\n button.className = className + '-reset';\n button.setAttribute('type', 'button');\n button.title = tipLabel;\n button.appendChild(this.label_);\n\n button.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this),\n false\n );\n\n const cssClasses =\n className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(button);\n\n this.callResetNorth_ = options.resetNorth ? options.resetNorth : undefined;\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n\n /**\n * @type {boolean}\n * @private\n */\n this.autoHide_ = options.autoHide !== undefined ? options.autoHide : true;\n\n /**\n * @private\n * @type {number|undefined}\n */\n this.rotation_ = undefined;\n\n if (this.autoHide_) {\n this.element.classList.add(CLASS_HIDDEN);\n }\n }\n\n /**\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(event) {\n event.preventDefault();\n if (this.callResetNorth_ !== undefined) {\n this.callResetNorth_();\n } else {\n this.resetNorth_();\n }\n }\n\n /**\n * @private\n */\n resetNorth_() {\n const map = this.getMap();\n const view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n const rotation = view.getRotation();\n if (rotation !== undefined) {\n if (this.duration_ > 0 && rotation % (2 * Math.PI) !== 0) {\n view.animate({\n rotation: 0,\n duration: this.duration_,\n easing: easeOut,\n });\n } else {\n view.setRotation(0);\n }\n }\n }\n\n /**\n * Update the rotate control element.\n * @param {import(\"../MapEvent.js\").default} mapEvent Map event.\n * @override\n */\n render(mapEvent) {\n const frameState = mapEvent.frameState;\n if (!frameState) {\n return;\n }\n const rotation = frameState.viewState.rotation;\n if (rotation != this.rotation_) {\n const transform = 'rotate(' + rotation + 'rad)';\n if (this.autoHide_) {\n const contains = this.element.classList.contains(CLASS_HIDDEN);\n if (!contains && rotation === 0) {\n this.element.classList.add(CLASS_HIDDEN);\n } else if (contains && rotation !== 0) {\n this.element.classList.remove(CLASS_HIDDEN);\n }\n }\n this.label_.style.transform = transform;\n }\n this.rotation_ = rotation;\n }\n}\n\nexport default Rotate;\n","/**\n * @module ol/control/Zoom\n */\nimport Control from './Control.js';\nimport EventType from '../events/EventType.js';\nimport {CLASS_CONTROL, CLASS_UNSELECTABLE} from '../css.js';\nimport {easeOut} from '../easing.js';\n\n/**\n * @typedef {Object} Options\n * @property {number} [duration=250] Animation duration in milliseconds.\n * @property {string} [className='ol-zoom'] CSS class name.\n * @property {string} [zoomInClassName=className + '-in'] CSS class name for the zoom-in button.\n * @property {string} [zoomOutClassName=className + '-out'] CSS class name for the zoom-out button.\n * @property {string|HTMLElement} [zoomInLabel='+'] Text label to use for the zoom-in\n * button. Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string|HTMLElement} [zoomOutLabel='–'] Text label to use for the zoom-out button.\n * Instead of text, also an element (e.g. a `span` element) can be used.\n * @property {string} [zoomInTipLabel='Zoom in'] Text label to use for the button tip.\n * @property {string} [zoomOutTipLabel='Zoom out'] Text label to use for the button tip.\n * @property {number} [delta=1] The zoom delta applied on each click.\n * @property {HTMLElement|string} [target] Specify a target if you want the control to be\n * rendered outside of the map's viewport.\n */\n\n/**\n * @classdesc\n * A control with 2 buttons, one for zoom in and one for zoom out.\n * This control is one of the default controls of a map. To style this control\n * use css selectors `.ol-zoom-in` and `.ol-zoom-out`.\n *\n * @api\n */\nclass Zoom extends Control {\n /**\n * @param {Options} [options] Zoom options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super({\n element: document.createElement('div'),\n target: options.target,\n });\n\n const className =\n options.className !== undefined ? options.className : 'ol-zoom';\n\n const delta = options.delta !== undefined ? options.delta : 1;\n\n const zoomInClassName =\n options.zoomInClassName !== undefined\n ? options.zoomInClassName\n : className + '-in';\n\n const zoomOutClassName =\n options.zoomOutClassName !== undefined\n ? options.zoomOutClassName\n : className + '-out';\n\n const zoomInLabel =\n options.zoomInLabel !== undefined ? options.zoomInLabel : '+';\n const zoomOutLabel =\n options.zoomOutLabel !== undefined ? options.zoomOutLabel : '\\u2013';\n\n const zoomInTipLabel =\n options.zoomInTipLabel !== undefined ? options.zoomInTipLabel : 'Zoom in';\n const zoomOutTipLabel =\n options.zoomOutTipLabel !== undefined\n ? options.zoomOutTipLabel\n : 'Zoom out';\n\n const inElement = document.createElement('button');\n inElement.className = zoomInClassName;\n inElement.setAttribute('type', 'button');\n inElement.title = zoomInTipLabel;\n inElement.appendChild(\n typeof zoomInLabel === 'string'\n ? document.createTextNode(zoomInLabel)\n : zoomInLabel\n );\n\n inElement.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this, delta),\n false\n );\n\n const outElement = document.createElement('button');\n outElement.className = zoomOutClassName;\n outElement.setAttribute('type', 'button');\n outElement.title = zoomOutTipLabel;\n outElement.appendChild(\n typeof zoomOutLabel === 'string'\n ? document.createTextNode(zoomOutLabel)\n : zoomOutLabel\n );\n\n outElement.addEventListener(\n EventType.CLICK,\n this.handleClick_.bind(this, -delta),\n false\n );\n\n const cssClasses =\n className + ' ' + CLASS_UNSELECTABLE + ' ' + CLASS_CONTROL;\n const element = this.element;\n element.className = cssClasses;\n element.appendChild(inElement);\n element.appendChild(outElement);\n\n /**\n * @type {number}\n * @private\n */\n this.duration_ = options.duration !== undefined ? options.duration : 250;\n }\n\n /**\n * @param {number} delta Zoom delta.\n * @param {MouseEvent} event The event to handle\n * @private\n */\n handleClick_(delta, event) {\n event.preventDefault();\n this.zoomByDelta_(delta);\n }\n\n /**\n * @param {number} delta Zoom delta.\n * @private\n */\n zoomByDelta_(delta) {\n const map = this.getMap();\n const view = map.getView();\n if (!view) {\n // the map does not have a view, so we can't act\n // upon it\n return;\n }\n const currentZoom = view.getZoom();\n if (currentZoom !== undefined) {\n const newZoom = view.getConstrainedZoom(currentZoom + delta);\n if (this.duration_ > 0) {\n if (view.getAnimating()) {\n view.cancelAnimations();\n }\n view.animate({\n zoom: newZoom,\n duration: this.duration_,\n easing: easeOut,\n });\n } else {\n view.setZoom(newZoom);\n }\n }\n }\n}\n\nexport default Zoom;\n","/**\n * @module ol/control/defaults\n */\nimport Attribution from './Attribution.js';\nimport Collection from '../Collection.js';\nimport Rotate from './Rotate.js';\nimport Zoom from './Zoom.js';\n\n/**\n * @typedef {Object} DefaultsOptions\n * @property {boolean} [attribution=true] Include\n * {@link module:ol/control/Attribution~Attribution}.\n * @property {import(\"./Attribution.js\").Options} [attributionOptions]\n * Options for {@link module:ol/control/Attribution~Attribution}.\n * @property {boolean} [rotate=true] Include\n * {@link module:ol/control/Rotate~Rotate}.\n * @property {import(\"./Rotate.js\").Options} [rotateOptions] Options\n * for {@link module:ol/control/Rotate~Rotate}.\n * @property {boolean} [zoom] Include {@link module:ol/control/Zoom~Zoom}.\n * @property {import(\"./Zoom.js\").Options} [zoomOptions] Options for\n * {@link module:ol/control/Zoom~Zoom}.\n */\n\n/**\n * Set of controls included in maps by default. Unless configured otherwise,\n * this returns a collection containing an instance of each of the following\n * controls:\n * * {@link module:ol/control/Zoom~Zoom}\n * * {@link module:ol/control/Rotate~Rotate}\n * * {@link module:ol/control/Attribution~Attribution}\n *\n * @param {DefaultsOptions} [options] Options for the default controls.\n * @return {Collection} A collection of controls\n * to be used with the {@link module:ol/Map~Map} constructor's `controls` option.\n * @api\n */\nexport function defaults(options) {\n options = options ? options : {};\n\n /** @type {Collection} */\n const controls = new Collection();\n\n const zoomControl = options.zoom !== undefined ? options.zoom : true;\n if (zoomControl) {\n controls.push(new Zoom(options.zoomOptions));\n }\n\n const rotateControl = options.rotate !== undefined ? options.rotate : true;\n if (rotateControl) {\n controls.push(new Rotate(options.rotateOptions));\n }\n\n const attributionControl =\n options.attribution !== undefined ? options.attribution : true;\n if (attributionControl) {\n controls.push(new Attribution(options.attributionOptions));\n }\n\n return controls;\n}\n","/**\n * @module ol/coordinate\n */\nimport {getWidth} from './extent.js';\nimport {modulo, toFixed} from './math.js';\nimport {padNumber} from './string.js';\n\n/**\n * An array of numbers representing an `xy`, `xyz` or `xyzm` coordinate.\n * Example: `[16, 48]`.\n * @typedef {Array} Coordinate\n * @api\n */\n\n/**\n * A function that takes a {@link module:ol/coordinate~Coordinate} and\n * transforms it into a `{string}`.\n *\n * @typedef {function((Coordinate|undefined)): string} CoordinateFormat\n * @api\n */\n\n/**\n * Add `delta` to `coordinate`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {add} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * add(coord, [-2, 4]);\n * // coord is now [5.85, 51.983333]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {Coordinate} delta Delta.\n * @return {Coordinate} The input coordinate adjusted by\n * the given delta.\n * @api\n */\nexport function add(coordinate, delta) {\n coordinate[0] += +delta[0];\n coordinate[1] += +delta[1];\n return coordinate;\n}\n\n/**\n * Calculates the point closest to the passed coordinate on the passed circle.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {import(\"./geom/Circle.js\").default} circle The circle.\n * @return {Coordinate} Closest point on the circumference.\n */\nexport function closestOnCircle(coordinate, circle) {\n const r = circle.getRadius();\n const center = circle.getCenter();\n const x0 = center[0];\n const y0 = center[1];\n const x1 = coordinate[0];\n const y1 = coordinate[1];\n\n let dx = x1 - x0;\n const dy = y1 - y0;\n if (dx === 0 && dy === 0) {\n dx = 1;\n }\n const d = Math.sqrt(dx * dx + dy * dy);\n\n const x = x0 + (r * dx) / d;\n const y = y0 + (r * dy) / d;\n\n return [x, y];\n}\n\n/**\n * Calculates the point closest to the passed coordinate on the passed segment.\n * This is the foot of the perpendicular of the coordinate to the segment when\n * the foot is on the segment, or the closest segment coordinate when the foot\n * is outside the segment.\n *\n * @param {Coordinate} coordinate The coordinate.\n * @param {Array} segment The two coordinates\n * of the segment.\n * @return {Coordinate} The foot of the perpendicular of\n * the coordinate to the segment.\n */\nexport function closestOnSegment(coordinate, segment) {\n const x0 = coordinate[0];\n const y0 = coordinate[1];\n const start = segment[0];\n const end = segment[1];\n const x1 = start[0];\n const y1 = start[1];\n const x2 = end[0];\n const y2 = end[1];\n const dx = x2 - x1;\n const dy = y2 - y1;\n const along =\n dx === 0 && dy === 0\n ? 0\n : (dx * (x0 - x1) + dy * (y0 - y1)) / (dx * dx + dy * dy || 0);\n let x, y;\n if (along <= 0) {\n x = x1;\n y = y1;\n } else if (along >= 1) {\n x = x2;\n y = y2;\n } else {\n x = x1 + along * dx;\n y = y1 + along * dy;\n }\n return [x, y];\n}\n\n/**\n * Returns a {@link module:ol/coordinate~CoordinateFormat} function that can be\n * used to format\n * a {Coordinate} to a string.\n *\n * Example without specifying the fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const stringifyFunc = createStringXY();\n * const out = stringifyFunc(coord);\n * // out is now '8, 48'\n *\n * Example with explicitly specifying 2 fractional digits:\n *\n * import {createStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const stringifyFunc = createStringXY(2);\n * const out = stringifyFunc(coord);\n * // out is now '7.85, 47.98'\n *\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {CoordinateFormat} Coordinate format.\n * @api\n */\nexport function createStringXY(fractionDigits) {\n return (\n /**\n * @param {Coordinate} coordinate Coordinate.\n * @return {string} String XY.\n */\n function (coordinate) {\n return toStringXY(coordinate, fractionDigits);\n }\n );\n}\n\n/**\n * @param {string} hemispheres Hemispheres.\n * @param {number} degrees Degrees.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} String.\n */\nexport function degreesToStringHDMS(hemispheres, degrees, fractionDigits) {\n const normalizedDegrees = modulo(degrees + 180, 360) - 180;\n const x = Math.abs(3600 * normalizedDegrees);\n const decimals = fractionDigits || 0;\n\n let deg = Math.floor(x / 3600);\n let min = Math.floor((x - deg * 3600) / 60);\n let sec = toFixed(x - deg * 3600 - min * 60, decimals);\n\n if (sec >= 60) {\n sec = 0;\n min += 1;\n }\n\n if (min >= 60) {\n min = 0;\n deg += 1;\n }\n\n let hdms = deg + '\\u00b0';\n if (min !== 0 || sec !== 0) {\n hdms += ' ' + padNumber(min, 2) + '\\u2032';\n }\n if (sec !== 0) {\n hdms += ' ' + padNumber(sec, 2, decimals) + '\\u2033';\n }\n if (normalizedDegrees !== 0) {\n hdms += ' ' + hemispheres.charAt(normalizedDegrees < 0 ? 1 : 0);\n }\n\n return hdms;\n}\n\n/**\n * Transforms the given {@link module:ol/coordinate~Coordinate} to a string\n * using the given string template. The strings `{x}` and `{y}` in the template\n * will be replaced with the first and second coordinate values respectively.\n *\n * Example without specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const template = 'Coordinate is ({x}|{y}).';\n * const out = format(coord, template);\n * // out is now 'Coordinate is (8|48).'\n *\n * Example explicitly specifying the fractional digits:\n *\n * import {format} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const template = 'Coordinate is ({x}|{y}).';\n * const out = format(coord, template, 2);\n * // out is now 'Coordinate is (7.85|47.98).'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {string} template A template string with `{x}` and `{y}` placeholders\n * that will be replaced by first and second coordinate values.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Formatted coordinate.\n * @api\n */\nexport function format(coordinate, template, fractionDigits) {\n if (coordinate) {\n return template\n .replace('{x}', coordinate[0].toFixed(fractionDigits))\n .replace('{y}', coordinate[1].toFixed(fractionDigits));\n }\n return '';\n}\n\n/**\n * @param {Coordinate} coordinate1 First coordinate.\n * @param {Coordinate} coordinate2 Second coordinate.\n * @return {boolean} The two coordinates are equal.\n */\nexport function equals(coordinate1, coordinate2) {\n let equals = true;\n for (let i = coordinate1.length - 1; i >= 0; --i) {\n if (coordinate1[i] != coordinate2[i]) {\n equals = false;\n break;\n }\n }\n return equals;\n}\n\n/**\n * Rotate `coordinate` by `angle`. `coordinate` is modified in place and\n * returned by the function.\n *\n * Example:\n *\n * import {rotate} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const rotateRadians = Math.PI / 2; // 90 degrees\n * rotate(coord, rotateRadians);\n * // coord is now [-47.983333, 7.85]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} angle Angle in radian.\n * @return {Coordinate} Coordinate.\n * @api\n */\nexport function rotate(coordinate, angle) {\n const cosAngle = Math.cos(angle);\n const sinAngle = Math.sin(angle);\n const x = coordinate[0] * cosAngle - coordinate[1] * sinAngle;\n const y = coordinate[1] * cosAngle + coordinate[0] * sinAngle;\n coordinate[0] = x;\n coordinate[1] = y;\n return coordinate;\n}\n\n/**\n * Scale `coordinate` by `scale`. `coordinate` is modified in place and returned\n * by the function.\n *\n * Example:\n *\n * import {scale as scaleCoordinate} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const scale = 1.2;\n * scaleCoordinate(coord, scale);\n * // coord is now [9.42, 57.5799996]\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} scale Scale factor.\n * @return {Coordinate} Coordinate.\n */\nexport function scale(coordinate, scale) {\n coordinate[0] *= scale;\n coordinate[1] *= scale;\n return coordinate;\n}\n\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Squared distance between coord1 and coord2.\n */\nexport function squaredDistance(coord1, coord2) {\n const dx = coord1[0] - coord2[0];\n const dy = coord1[1] - coord2[1];\n return dx * dx + dy * dy;\n}\n\n/**\n * @param {Coordinate} coord1 First coordinate.\n * @param {Coordinate} coord2 Second coordinate.\n * @return {number} Distance between coord1 and coord2.\n */\nexport function distance(coord1, coord2) {\n return Math.sqrt(squaredDistance(coord1, coord2));\n}\n\n/**\n * Calculate the squared distance from a coordinate to a line segment.\n *\n * @param {Coordinate} coordinate Coordinate of the point.\n * @param {Array} segment Line segment (2\n * coordinates).\n * @return {number} Squared distance from the point to the line segment.\n */\nexport function squaredDistanceToSegment(coordinate, segment) {\n return squaredDistance(coordinate, closestOnSegment(coordinate, segment));\n}\n\n/**\n * Format a geographic coordinate with the hemisphere, degrees, minutes, and\n * seconds.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringHDMS} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringHDMS(coord);\n * // out is now '47° 58′ 60″ N 7° 50′ 60″ E'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringHDMS} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringHDMS(coord, 1);\n * // out is now '47° 58′ 60.0″ N 7° 50′ 60.0″ E'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} Hemisphere, degrees, minutes and seconds.\n * @api\n */\nexport function toStringHDMS(coordinate, fractionDigits) {\n if (coordinate) {\n return (\n degreesToStringHDMS('NS', coordinate[1], fractionDigits) +\n ' ' +\n degreesToStringHDMS('EW', coordinate[0], fractionDigits)\n );\n }\n return '';\n}\n\n/**\n * Format a coordinate as a comma delimited string.\n *\n * Example without specifying fractional digits:\n *\n * import {toStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringXY(coord);\n * // out is now '8, 48'\n *\n * Example explicitly specifying 1 fractional digit:\n *\n * import {toStringXY} from 'ol/coordinate.js';\n *\n * const coord = [7.85, 47.983333];\n * const out = toStringXY(coord, 1);\n * // out is now '7.8, 48.0'\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {number} [fractionDigits] The number of digits to include\n * after the decimal point. Default is `0`.\n * @return {string} XY.\n * @api\n */\nexport function toStringXY(coordinate, fractionDigits) {\n return format(coordinate, '{x}, {y}', fractionDigits);\n}\n\n/**\n * Modifies the provided coordinate in-place to be within the real world\n * extent. The lower projection extent boundary is inclusive, the upper one\n * exclusive.\n *\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @return {Coordinate} The coordinate within the real world extent.\n */\nexport function wrapX(coordinate, projection) {\n if (projection.canWrapX()) {\n const worldWidth = getWidth(projection.getExtent());\n const worldsAway = getWorldsAway(coordinate, projection, worldWidth);\n if (worldsAway) {\n coordinate[0] -= worldsAway * worldWidth;\n }\n }\n return coordinate;\n}\n/**\n * @param {Coordinate} coordinate Coordinate.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {number} [sourceExtentWidth] Width of the source extent.\n * @return {number} Offset in world widths.\n */\nexport function getWorldsAway(coordinate, projection, sourceExtentWidth) {\n const projectionExtent = projection.getExtent();\n let worldsAway = 0;\n if (\n projection.canWrapX() &&\n (coordinate[0] < projectionExtent[0] || coordinate[0] > projectionExtent[2])\n ) {\n sourceExtentWidth = sourceExtentWidth || getWidth(projectionExtent);\n worldsAway = Math.floor(\n (coordinate[0] - projectionExtent[0]) / sourceExtentWidth\n );\n }\n return worldsAway;\n}\n","/**\n * @module ol/css\n */\n\n/**\n * @typedef {Object} FontParameters\n * @property {string} style Style.\n * @property {string} variant Variant.\n * @property {string} weight Weight.\n * @property {string} size Size.\n * @property {string} lineHeight LineHeight.\n * @property {string} family Family.\n * @property {Array} families Families.\n */\n\n/**\n * The CSS class for hidden feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_HIDDEN = 'ol-hidden';\n\n/**\n * The CSS class that we'll give the DOM elements to have them selectable.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_SELECTABLE = 'ol-selectable';\n\n/**\n * The CSS class that we'll give the DOM elements to have them unselectable.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSELECTABLE = 'ol-unselectable';\n\n/**\n * The CSS class for unsupported feature.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_UNSUPPORTED = 'ol-unsupported';\n\n/**\n * The CSS class for controls.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_CONTROL = 'ol-control';\n\n/**\n * The CSS class that we'll give the DOM elements that are collapsed, i.e.\n * to those elements which usually can be expanded.\n *\n * @const\n * @type {string}\n */\nexport const CLASS_COLLAPSED = 'ol-collapsed';\n\n/**\n * From https://stackoverflow.com/questions/10135697/regex-to-parse-any-css-font\n * @type {RegExp}\n */\nconst fontRegEx = new RegExp(\n [\n '^\\\\s*(?=(?:(?:[-a-z]+\\\\s*){0,2}(italic|oblique))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(small-caps))?)',\n '(?=(?:(?:[-a-z]+\\\\s*){0,2}(bold(?:er)?|lighter|[1-9]00 ))?)',\n '(?:(?:normal|\\\\1|\\\\2|\\\\3)\\\\s*){0,3}((?:xx?-)?',\n '(?:small|large)|medium|smaller|larger|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx]))',\n '(?:\\\\s*\\\\/\\\\s*(normal|[\\\\.\\\\d]+(?:\\\\%|in|[cem]m|ex|p[ctx])?))',\n '?\\\\s*([-,\\\\\"\\\\\\'\\\\sa-z]+?)\\\\s*$',\n ].join(''),\n 'i'\n);\n/** @type {Array<'style'|'variant'|'weight'|'size'|'lineHeight'|'family'>} */\nconst fontRegExMatchIndex = [\n 'style',\n 'variant',\n 'weight',\n 'size',\n 'lineHeight',\n 'family',\n];\n\n/**\n * Get the list of font families from a font spec. Note that this doesn't work\n * for font families that have commas in them.\n * @param {string} fontSpec The CSS font property.\n * @return {FontParameters|null} The font parameters (or null if the input spec is invalid).\n */\nexport const getFontParameters = function (fontSpec) {\n const match = fontSpec.match(fontRegEx);\n if (!match) {\n return null;\n }\n const style = /** @type {FontParameters} */ ({\n lineHeight: 'normal',\n size: '1.2em',\n style: 'normal',\n weight: 'normal',\n variant: 'normal',\n });\n for (let i = 0, ii = fontRegExMatchIndex.length; i < ii; ++i) {\n const value = match[i + 1];\n if (value !== undefined) {\n style[fontRegExMatchIndex[i]] = value;\n }\n }\n style.families = style.family.split(/,\\s?/);\n return style;\n};\n","import {WORKER_OFFSCREEN_CANVAS} from './has.js';\n\n/**\n * @module ol/dom\n */\n\n//FIXME Move this function to the canvas module\n/**\n * Create an html canvas element and returns its 2d context.\n * @param {number} [width] Canvas width.\n * @param {number} [height] Canvas height.\n * @param {Array} [canvasPool] Canvas pool to take existing canvas from.\n * @param {CanvasRenderingContext2DSettings} [settings] CanvasRenderingContext2DSettings\n * @return {CanvasRenderingContext2D} The context.\n */\nexport function createCanvasContext2D(width, height, canvasPool, settings) {\n /** @type {HTMLCanvasElement|OffscreenCanvas} */\n let canvas;\n if (canvasPool && canvasPool.length) {\n canvas = /** @type {HTMLCanvasElement} */ (canvasPool.shift());\n } else if (WORKER_OFFSCREEN_CANVAS) {\n canvas = new OffscreenCanvas(width || 300, height || 300);\n } else {\n canvas = document.createElement('canvas');\n }\n if (width) {\n canvas.width = width;\n }\n if (height) {\n canvas.height = height;\n }\n //FIXME Allow OffscreenCanvasRenderingContext2D as return type\n return /** @type {CanvasRenderingContext2D} */ (\n canvas.getContext('2d', settings)\n );\n}\n\n/**\n * Releases canvas memory to avoid exceeding memory limits in Safari.\n * See https://pqina.nl/blog/total-canvas-memory-use-exceeds-the-maximum-limit/\n * @param {CanvasRenderingContext2D} context Context.\n */\nexport function releaseCanvas(context) {\n const canvas = context.canvas;\n canvas.width = 1;\n canvas.height = 1;\n context.clearRect(0, 0, 1, 1);\n}\n\n/**\n * Get the current computed width for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerWidth(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The width.\n */\nexport function outerWidth(element) {\n let width = element.offsetWidth;\n const style = getComputedStyle(element);\n width += parseInt(style.marginLeft, 10) + parseInt(style.marginRight, 10);\n\n return width;\n}\n\n/**\n * Get the current computed height for the given element including margin,\n * padding and border.\n * Equivalent to jQuery's `$(el).outerHeight(true)`.\n * @param {!HTMLElement} element Element.\n * @return {number} The height.\n */\nexport function outerHeight(element) {\n let height = element.offsetHeight;\n const style = getComputedStyle(element);\n height += parseInt(style.marginTop, 10) + parseInt(style.marginBottom, 10);\n\n return height;\n}\n\n/**\n * @param {Node} newNode Node to replace old node\n * @param {Node} oldNode The node to be replaced\n */\nexport function replaceNode(newNode, oldNode) {\n const parent = oldNode.parentNode;\n if (parent) {\n parent.replaceChild(newNode, oldNode);\n }\n}\n\n/**\n * @param {Node} node The node to remove.\n * @return {Node|null} The node that was removed or null.\n */\nexport function removeNode(node) {\n return node && node.parentNode ? node.parentNode.removeChild(node) : null;\n}\n\n/**\n * @param {Node} node The node to remove the children from.\n */\nexport function removeChildren(node) {\n while (node.lastChild) {\n node.removeChild(node.lastChild);\n }\n}\n\n/**\n * Transform the children of a parent node so they match the\n * provided list of children. This function aims to efficiently\n * remove, add, and reorder child nodes while maintaining a simple\n * implementation (it is not guaranteed to minimize DOM operations).\n * @param {Node} node The parent node whose children need reworking.\n * @param {Array} children The desired children.\n */\nexport function replaceChildren(node, children) {\n const oldChildren = node.childNodes;\n\n for (let i = 0; true; ++i) {\n const oldChild = oldChildren[i];\n const newChild = children[i];\n\n // check if our work is done\n if (!oldChild && !newChild) {\n break;\n }\n\n // check if children match\n if (oldChild === newChild) {\n continue;\n }\n\n // check if a new child needs to be added\n if (!oldChild) {\n node.appendChild(newChild);\n continue;\n }\n\n // check if an old child needs to be removed\n if (!newChild) {\n node.removeChild(oldChild);\n --i;\n continue;\n }\n\n // reorder\n node.insertBefore(newChild, oldChild);\n }\n}\n","/**\n * @module ol/easing\n */\n\n/**\n * Start slow and speed up.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeIn(t) {\n return Math.pow(t, 3);\n}\n\n/**\n * Start fast and slow down.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function easeOut(t) {\n return 1 - easeIn(1 - t);\n}\n\n/**\n * Start slow, speed up, and then slow down again.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function inAndOut(t) {\n return 3 * t * t - 2 * t * t * t;\n}\n\n/**\n * Maintain a constant speed over time.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function linear(t) {\n return t;\n}\n\n/**\n * Start slow, speed up, and at the very end slow down again. This has the\n * same general behavior as {@link module:ol/easing.inAndOut}, but the final\n * slowdown is delayed.\n * @param {number} t Input between 0 and 1.\n * @return {number} Output between 0 and 1.\n * @api\n */\nexport function upAndDown(t) {\n if (t < 0.5) {\n return inAndOut(2 * t);\n }\n return 1 - inAndOut(2 * (t - 0.5));\n}\n","/**\n * @module ol/events\n */\nimport {clear} from './obj.js';\n\n/**\n * Key to use with {@link module:ol/Observable.unByKey}.\n * @typedef {Object} EventsKey\n * @property {ListenerFunction} listener Listener.\n * @property {import(\"./events/Target.js\").EventTargetLike} target Target.\n * @property {string} type Type.\n * @api\n */\n\n/**\n * Listener function. This function is called with an event object as argument.\n * When the function returns `false`, event propagation will stop.\n *\n * @typedef {function((Event|import(\"./events/Event.js\").default)): (void|boolean)} ListenerFunction\n * @api\n */\n\n/**\n * @typedef {Object} ListenerObject\n * @property {ListenerFunction} handleEvent HandleEvent listener function.\n */\n\n/**\n * @typedef {ListenerFunction|ListenerObject} Listener\n */\n\n/**\n * Registers an event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` to a `this` object, and returns\n * a key for use with {@link module:ol/events.unlistenByKey}.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [thisArg] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @param {boolean} [once] If true, add the listener as one-off listener.\n * @return {EventsKey} Unique key for the listener.\n */\nexport function listen(target, type, listener, thisArg, once) {\n if (thisArg && thisArg !== target) {\n listener = listener.bind(thisArg);\n }\n if (once) {\n const originalListener = listener;\n listener = function () {\n target.removeEventListener(type, listener);\n originalListener.apply(this, arguments);\n };\n }\n const eventsKey = {\n target: target,\n type: type,\n listener: listener,\n };\n target.addEventListener(type, listener);\n return eventsKey;\n}\n\n/**\n * Registers a one-off event listener on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * This function efficiently binds a `listener` as self-unregistering listener\n * to a `this` object, and returns a key for use with\n * {@link module:ol/events.unlistenByKey} in case the listener needs to be\n * unregistered before it is called.\n *\n * When {@link module:ol/events.listen} is called with the same arguments after this\n * function, the self-unregistering listener will be turned into a permanent\n * listener.\n *\n * @param {import(\"./events/Target.js\").EventTargetLike} target Event target.\n * @param {string} type Event type.\n * @param {ListenerFunction} listener Listener.\n * @param {Object} [thisArg] Object referenced by the `this` keyword in the\n * listener. Default is the `target`.\n * @return {EventsKey} Key for unlistenByKey.\n */\nexport function listenOnce(target, type, listener, thisArg) {\n return listen(target, type, listener, thisArg, true);\n}\n\n/**\n * Unregisters event listeners on an event target. Inspired by\n * https://google.github.io/closure-library/api/source/closure/goog/events/events.js.src.html\n *\n * The argument passed to this function is the key returned from\n * {@link module:ol/events.listen} or {@link module:ol/events.listenOnce}.\n *\n * @param {EventsKey} key The key.\n */\nexport function unlistenByKey(key) {\n if (key && key.target) {\n key.target.removeEventListener(key.type, key.listener);\n clear(key);\n }\n}\n","/**\n * @module ol/events/Event\n */\n\n/**\n * @classdesc\n * Stripped down implementation of the W3C DOM Level 2 Event interface.\n * See https://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-interface.\n *\n * This implementation only provides `type` and `target` properties, and\n * `stopPropagation` and `preventDefault` methods. It is meant as base class\n * for higher level events defined in the library, and works with\n * {@link module:ol/events/Target~Target}.\n */\nclass BaseEvent {\n /**\n * @param {string} type Type.\n */\n constructor(type) {\n /**\n * @type {boolean}\n */\n this.propagationStopped;\n\n /**\n * @type {boolean}\n */\n this.defaultPrevented;\n\n /**\n * The event type.\n * @type {string}\n * @api\n */\n this.type = type;\n\n /**\n * The event target.\n * @type {Object}\n * @api\n */\n this.target = null;\n }\n\n /**\n * Prevent default. This means that no emulated `click`, `singleclick` or `doubleclick` events\n * will be fired.\n * @api\n */\n preventDefault() {\n this.defaultPrevented = true;\n }\n\n /**\n * Stop event propagation.\n * @api\n */\n stopPropagation() {\n this.propagationStopped = true;\n }\n}\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function stopPropagation(evt) {\n evt.stopPropagation();\n}\n\n/**\n * @param {Event|import(\"./Event.js\").default} evt Event\n */\nexport function preventDefault(evt) {\n evt.preventDefault();\n}\n\nexport default BaseEvent;\n","/**\n * @module ol/events/EventType\n */\n\n/**\n * @enum {string}\n * @const\n */\nexport default {\n /**\n * Generic change event. Triggered when the revision counter is increased.\n * @event module:ol/events/Event~BaseEvent#change\n * @api\n */\n CHANGE: 'change',\n\n /**\n * Generic error event. Triggered when an error occurs.\n * @event module:ol/events/Event~BaseEvent#error\n * @api\n */\n ERROR: 'error',\n\n BLUR: 'blur',\n CLEAR: 'clear',\n CONTEXTMENU: 'contextmenu',\n CLICK: 'click',\n DBLCLICK: 'dblclick',\n DRAGENTER: 'dragenter',\n DRAGOVER: 'dragover',\n DROP: 'drop',\n FOCUS: 'focus',\n KEYDOWN: 'keydown',\n KEYPRESS: 'keypress',\n LOAD: 'load',\n RESIZE: 'resize',\n TOUCHMOVE: 'touchmove',\n WHEEL: 'wheel',\n};\n","/**\n * @module ol/events/Target\n */\nimport Disposable from '../Disposable.js';\nimport Event from './Event.js';\nimport {VOID} from '../functions.js';\nimport {clear} from '../obj.js';\n\n/**\n * @typedef {EventTarget|Target} EventTargetLike\n */\n\n/**\n * @classdesc\n * A simplified implementation of the W3C DOM Level 2 EventTarget interface.\n * See https://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html#Events-EventTarget.\n *\n * There are two important simplifications compared to the specification:\n *\n * 1. The handling of `useCapture` in `addEventListener` and\n * `removeEventListener`. There is no real capture model.\n * 2. The handling of `stopPropagation` and `preventDefault` on `dispatchEvent`.\n * There is no event target hierarchy. When a listener calls\n * `stopPropagation` or `preventDefault` on an event object, it means that no\n * more listeners after this one will be called. Same as when the listener\n * returns false.\n */\nclass Target extends Disposable {\n /**\n * @param {*} [target] Default event target for dispatched events.\n */\n constructor(target) {\n super();\n\n /**\n * @private\n * @type {*}\n */\n this.eventTarget_ = target;\n\n /**\n * @private\n * @type {Object|null}\n */\n this.pendingRemovals_ = null;\n\n /**\n * @private\n * @type {Object|null}\n */\n this.dispatching_ = null;\n\n /**\n * @private\n * @type {Object>|null}\n */\n this.listeners_ = null;\n }\n\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n addEventListener(type, listener) {\n if (!type || !listener) {\n return;\n }\n const listeners = this.listeners_ || (this.listeners_ = {});\n const listenersForType = listeners[type] || (listeners[type] = []);\n if (!listenersForType.includes(listener)) {\n listenersForType.push(listener);\n }\n }\n\n /**\n * Dispatches an event and calls all listeners listening for events\n * of this type. The event parameter can either be a string or an\n * Object with a `type` property.\n *\n * @param {import(\"./Event.js\").default|string} event Event object.\n * @return {boolean|undefined} `false` if anyone called preventDefault on the\n * event object or if any of the listeners returned false.\n * @api\n */\n dispatchEvent(event) {\n const isString = typeof event === 'string';\n const type = isString ? event : event.type;\n const listeners = this.listeners_ && this.listeners_[type];\n if (!listeners) {\n return;\n }\n\n const evt = isString ? new Event(event) : /** @type {Event} */ (event);\n if (!evt.target) {\n evt.target = this.eventTarget_ || this;\n }\n const dispatching = this.dispatching_ || (this.dispatching_ = {});\n const pendingRemovals =\n this.pendingRemovals_ || (this.pendingRemovals_ = {});\n if (!(type in dispatching)) {\n dispatching[type] = 0;\n pendingRemovals[type] = 0;\n }\n ++dispatching[type];\n let propagate;\n for (let i = 0, ii = listeners.length; i < ii; ++i) {\n if ('handleEvent' in listeners[i]) {\n propagate = /** @type {import(\"../events.js\").ListenerObject} */ (\n listeners[i]\n ).handleEvent(evt);\n } else {\n propagate = /** @type {import(\"../events.js\").ListenerFunction} */ (\n listeners[i]\n ).call(this, evt);\n }\n if (propagate === false || evt.propagationStopped) {\n propagate = false;\n break;\n }\n }\n if (--dispatching[type] === 0) {\n let pr = pendingRemovals[type];\n delete pendingRemovals[type];\n while (pr--) {\n this.removeEventListener(type, VOID);\n }\n delete dispatching[type];\n }\n return propagate;\n }\n\n /**\n * Clean up.\n */\n disposeInternal() {\n this.listeners_ && clear(this.listeners_);\n }\n\n /**\n * Get the listeners for a specified event type. Listeners are returned in the\n * order that they will be called in.\n *\n * @param {string} type Type.\n * @return {Array|undefined} Listeners.\n */\n getListeners(type) {\n return (this.listeners_ && this.listeners_[type]) || undefined;\n }\n\n /**\n * @param {string} [type] Type. If not provided,\n * `true` will be returned if this event target has any listeners.\n * @return {boolean} Has listeners.\n */\n hasListener(type) {\n if (!this.listeners_) {\n return false;\n }\n return type\n ? type in this.listeners_\n : Object.keys(this.listeners_).length > 0;\n }\n\n /**\n * @param {string} type Type.\n * @param {import(\"../events.js\").Listener} listener Listener.\n */\n removeEventListener(type, listener) {\n if (!this.listeners_) {\n return;\n }\n const listeners = this.listeners_[type];\n if (!listeners) {\n return;\n }\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n if (this.pendingRemovals_ && type in this.pendingRemovals_) {\n // make listener a no-op, and remove later in #dispatchEvent()\n listeners[index] = VOID;\n ++this.pendingRemovals_[type];\n } else {\n listeners.splice(index, 1);\n if (listeners.length === 0) {\n delete this.listeners_[type];\n }\n }\n }\n }\n}\n\nexport default Target;\n","/**\n * @module ol/events/condition\n */\nimport MapBrowserEventType from '../MapBrowserEventType.js';\nimport {FALSE, TRUE} from '../functions.js';\nimport {MAC, WEBKIT} from '../has.js';\nimport {assert} from '../asserts.js';\n\n/**\n * A function that takes an {@link module:ol/MapBrowserEvent~MapBrowserEvent} and returns a\n * `{boolean}`. If the condition is met, true should be returned.\n *\n * @typedef {function(this: ?, import(\"../MapBrowserEvent.js\").default): boolean} Condition\n */\n\n/**\n * Creates a condition function that passes when all provided conditions pass.\n * @param {...Condition} var_args Conditions to check.\n * @return {Condition} Condition function.\n */\nexport function all(var_args) {\n const conditions = arguments;\n /**\n * @param {import(\"../MapBrowserEvent.js\").default} event Event.\n * @return {boolean} All conditions passed.\n */\n return function (event) {\n let pass = true;\n for (let i = 0, ii = conditions.length; i < ii; ++i) {\n pass = pass && conditions[i](event);\n if (!pass) {\n break;\n }\n }\n return pass;\n };\n}\n\n/**\n * Return `true` if only the alt-key is pressed, `false` otherwise (e.g. when\n * additionally the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt key is pressed.\n * @api\n */\nexport const altKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if only the alt-key and shift-key is pressed, `false` otherwise\n * (e.g. when additionally the platform-modifier-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the alt and shift keys are pressed.\n * @api\n */\nexport const altShiftKeysOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if the map has the focus. This condition requires a map target\n * element with a `tabindex` attribute, e.g. `
`.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map has the focus.\n * @api\n */\nexport const focus = function (event) {\n const targetElement = event.map.getTargetElement();\n const activeElement = event.map.getOwnerDocument().activeElement;\n return targetElement.contains(activeElement);\n};\n\n/**\n * Return `true` if the map has the focus or no 'tabindex' attribute set.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} event Map browser event.\n * @return {boolean} The map container has the focus or no 'tabindex' attribute.\n */\nexport const focusWithTabindex = function (event) {\n return event.map.getTargetElement().hasAttribute('tabindex')\n ? focus(event)\n : true;\n};\n\n/**\n * Return always true.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True.\n * @api\n */\nexport const always = TRUE;\n\n/**\n * Return `true` if the event is a `click` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `click` event.\n * @api\n */\nexport const click = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.CLICK;\n};\n\n/**\n * Return `true` if the event has an \"action\"-producing mouse button.\n *\n * By definition, this includes left-click on windows/linux, and left-click\n * without the ctrl key on Macs.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} The result.\n */\nexport const mouseActionButton = function (mapBrowserEvent) {\n const originalEvent = /** @type {MouseEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return originalEvent.button == 0 && !(WEBKIT && MAC && originalEvent.ctrlKey);\n};\n\n/**\n * Return always false.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} False.\n * @api\n */\nexport const never = FALSE;\n\n/**\n * Return `true` if the browser event is a `pointermove` event, `false`\n * otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the browser event is a `pointermove` event.\n * @api\n */\nexport const pointerMove = function (mapBrowserEvent) {\n return mapBrowserEvent.type == 'pointermove';\n};\n\n/**\n * Return `true` if the event is a map `singleclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `singleclick` event.\n * @api\n */\nexport const singleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.SINGLECLICK;\n};\n\n/**\n * Return `true` if the event is a map `dblclick` event, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event is a map `dblclick` event.\n * @api\n */\nexport const doubleClick = function (mapBrowserEvent) {\n return mapBrowserEvent.type == MapBrowserEventType.DBLCLICK;\n};\n\n/**\n * Return `true` if no modifier key (alt-, shift- or platform-modifier-key) is\n * pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if there no modifier keys are pressed.\n * @api\n */\nexport const noModifierKeys = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if only the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed, `false` otherwise (e.g. when additionally\n * the shift-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the platform modifier key is pressed.\n * @api\n */\nexport const platformModifierKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n (MAC ? originalEvent.metaKey : originalEvent.ctrlKey) &&\n !originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if the platform-modifier-key (the meta-key on Mac,\n * ctrl-key otherwise) is pressed.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the platform modifier key is pressed.\n * @api\n */\nexport const platformModifierKey = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return MAC ? originalEvent.metaKey : originalEvent.ctrlKey;\n};\n\n/**\n * Return `true` if only the shift-key is pressed, `false` otherwise (e.g. when\n * additionally the alt-key is pressed).\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if only the shift key is pressed.\n * @api\n */\nexport const shiftKeyOnly = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n return (\n !originalEvent.altKey &&\n !(originalEvent.metaKey || originalEvent.ctrlKey) &&\n originalEvent.shiftKey\n );\n};\n\n/**\n * Return `true` if the target element is not editable, i.e. not an `input`,\n * `select`, or `textarea` element and no `contenteditable` attribute is\n * set or inherited, `false` otherwise.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True only if the target element is not editable.\n * @api\n */\nexport const targetNotEditable = function (mapBrowserEvent) {\n const originalEvent = /** @type {KeyboardEvent|MouseEvent|TouchEvent} */ (\n mapBrowserEvent.originalEvent\n );\n const tagName = /** @type {Element} */ (originalEvent.target).tagName;\n return (\n tagName !== 'INPUT' &&\n tagName !== 'SELECT' &&\n tagName !== 'TEXTAREA' &&\n // `isContentEditable` is only available on `HTMLElement`, but it may also be a\n // different type like `SVGElement`.\n // @ts-ignore\n !originalEvent.target.isContentEditable\n );\n};\n\n/**\n * Return `true` if the event originates from a mouse device.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a mouse device.\n * @api\n */\nexport const mouseOnly = function (mapBrowserEvent) {\n const pointerEvent = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(\n pointerEvent !== undefined,\n 'mapBrowserEvent must originate from a pointer event'\n );\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvent.pointerType == 'mouse';\n};\n\n/**\n * Return `true` if the event originates from a touchable device.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a touchable device.\n * @api\n */\nexport const touchOnly = function (mapBrowserEvent) {\n const pointerEvt = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(\n pointerEvt !== undefined,\n 'mapBrowserEvent must originate from a pointer event'\n );\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvt.pointerType === 'touch';\n};\n\n/**\n * Return `true` if the event originates from a digital pen.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a digital pen.\n * @api\n */\nexport const penOnly = function (mapBrowserEvent) {\n const pointerEvt = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(\n pointerEvt !== undefined,\n 'mapBrowserEvent must originate from a pointer event'\n );\n // see https://www.w3.org/TR/pointerevents/#widl-PointerEvent-pointerType\n return pointerEvt.pointerType === 'pen';\n};\n\n/**\n * Return `true` if the event originates from a primary pointer in\n * contact with the surface or if the left mouse button is pressed.\n * See https://www.w3.org/TR/pointerevents/#button-states.\n *\n * @param {import(\"../MapBrowserEvent.js\").default} mapBrowserEvent Map browser event.\n * @return {boolean} True if the event originates from a primary pointer.\n * @api\n */\nexport const primaryAction = function (mapBrowserEvent) {\n const pointerEvent = /** @type {import(\"../MapBrowserEvent\").default} */ (\n mapBrowserEvent\n ).originalEvent;\n assert(\n pointerEvent !== undefined,\n 'mapBrowserEvent must originate from a pointer event'\n );\n return pointerEvent.isPrimary && pointerEvent.button === 0;\n};\n","/**\n * @module ol/expr/expression\n */\nimport {ascending} from '../array.js';\nimport {isStringColor} from '../color.js';\n\n/**\n * @fileoverview This module includes types and functions for parsing array encoded expressions.\n * The result of parsing an encoded expression is one of the specific expression classes.\n * During parsing, information is added to the parsing context about the data accessed by the\n * expression.\n */\n\n/**\n * Base type used for literal style parameters; can be a number literal or the output of an operator,\n * which in turns takes {@link import(\"./expression.js\").ExpressionValue} arguments.\n *\n * The following operators can be used:\n *\n * * Reading operators:\n * * `['band', bandIndex, xOffset, yOffset]` For tile layers only. Fetches pixel values from band\n * `bandIndex` of the source's data. The first `bandIndex` of the source data is `1`. Fetched values\n * are in the 0..1 range. {@link import(\"../source/TileImage.js\").default} sources have 4 bands: red,\n * green, blue and alpha. {@link import(\"../source/DataTile.js\").default} sources can have any number\n * of bands, depending on the underlying data source and\n * {@link import(\"../source/GeoTIFF.js\").Options configuration}. `xOffset` and `yOffset` are optional\n * and allow specifying pixel offsets for x and y. This is used for sampling data from neighboring pixels.\n * * `['get', 'attributeName', typeHint]` fetches a feature property value, similar to `feature.get('attributeName')`\n * A type hint can optionally be specified, in case the resulting expression contains a type ambiguity which\n * will make it invalid. Type hints can be one of: 'string', 'color', 'number', 'boolean', 'number[]'\n * * `['geometry-type']` returns a feature's geometry type as string, either: 'LineString', 'Point' or 'Polygon'\n * `Multi*` values are returned as their singular equivalent\n * `Circle` geometries are returned as 'Polygon'\n * `GeometryCollection` geometries are returned as the type of the first geometry found in the collection\n * * `['resolution']` returns the current resolution\n * * `['time']` returns the time in seconds since the creation of the layer\n * * `['var', 'varName']` fetches a value from the style variables; will throw an error if that variable is undefined\n * * `['zoom']` returns the current zoom level\n *\n * * Math operators:\n * * `['*', value1, value2, ...]` multiplies the values (either numbers or colors)\n * * `['/', value1, value2]` divides `value1` by `value2`\n * * `['+', value1, value2, ...]` adds the values\n * * `['-', value1, value2]` subtracts `value2` from `value1`\n * * `['clamp', value, low, high]` clamps `value` between `low` and `high`\n * * `['%', value1, value2]` returns the result of `value1 % value2` (modulo)\n * * `['^', value1, value2]` returns the value of `value1` raised to the `value2` power\n * * `['abs', value1]` returns the absolute value of `value1`\n * * `['floor', value1]` returns the nearest integer less than or equal to `value1`\n * * `['round', value1]` returns the nearest integer to `value1`\n * * `['ceil', value1]` returns the nearest integer greater than or equal to `value1`\n * * `['sin', value1]` returns the sine of `value1`\n * * `['cos', value1]` returns the cosine of `value1`\n * * `['atan', value1, value2]` returns `atan2(value1, value2)`. If `value2` is not provided, returns `atan(value1)`\n * * `['sqrt', value1]` returns the square root of `value1`\n *\n * * Transform operators:\n * * `['case', condition1, output1, ...conditionN, outputN, fallback]` selects the first output whose corresponding\n * condition evaluates to `true`. If no match is found, returns the `fallback` value.\n * All conditions should be `boolean`, output and fallback can be any kind.\n * * `['match', input, match1, output1, ...matchN, outputN, fallback]` compares the `input` value against all\n * provided `matchX` values, returning the output associated with the first valid match. If no match is found,\n * returns the `fallback` value.\n * `input` and `matchX` values must all be of the same type, and can be `number` or `string`. `outputX` and\n * `fallback` values must be of the same type, and can be of any kind.\n * * `['interpolate', interpolation, input, stop1, output1, ...stopN, outputN]` returns a value by interpolating between\n * pairs of inputs and outputs; `interpolation` can either be `['linear']` or `['exponential', base]` where `base` is\n * the rate of increase from stop A to stop B (i.e. power to which the interpolation ratio is raised); a value\n * of 1 is equivalent to `['linear']`.\n * `input` and `stopX` values must all be of type `number`. `outputX` values can be `number` or `color` values.\n * Note: `input` will be clamped between `stop1` and `stopN`, meaning that all output values will be comprised\n * between `output1` and `outputN`.\n *\n * * Logical operators:\n * * `['<', value1, value2]` returns `true` if `value1` is strictly lower than `value2`, or `false` otherwise.\n * * `['<=', value1, value2]` returns `true` if `value1` is lower than or equals `value2`, or `false` otherwise.\n * * `['>', value1, value2]` returns `true` if `value1` is strictly greater than `value2`, or `false` otherwise.\n * * `['>=', value1, value2]` returns `true` if `value1` is greater than or equals `value2`, or `false` otherwise.\n * * `['==', value1, value2]` returns `true` if `value1` equals `value2`, or `false` otherwise.\n * * `['!=', value1, value2]` returns `true` if `value1` does not equal `value2`, or `false` otherwise.\n * * `['!', value1]` returns `false` if `value1` is `true` or greater than `0`, or `true` otherwise.\n * * `['all', value1, value2, ...]` returns `true` if all the inputs are `true`, `false` otherwise.\n * * `['any', value1, value2, ...]` returns `true` if any of the inputs are `true`, `false` otherwise.\n * * `['between', value1, value2, value3]` returns `true` if `value1` is contained between `value2` and `value3`\n * (inclusively), or `false` otherwise.\n * * `['in', needle, haystack]` returns `true` if `needle` is found in `haystack`, and\n * `false` otherwise.\n * This operator has the following limitations:\n * * `haystack` has to be an array of numbers or strings (searching for a substring in a string is not supported yet)\n * * Only literal arrays are supported as `haystack` for now; this means that `haystack` cannot be the result of an\n * expression. If `haystack` is an array of strings, use the `literal` operator to disambiguate from an expression:\n * `['literal', ['abc', 'def', 'ghi']]`\n *\n * * Conversion operators:\n * * `['array', value1, ...valueN]` creates a numerical array from `number` values; please note that the amount of\n * values can currently only be 2, 3 or 4.\n * * `['color', red, green, blue, alpha]` creates a `color` value from `number` values; the `alpha` parameter is\n * optional; if not specified, it will be set to 1.\n * Note: `red`, `green` and `blue` components must be values between 0 and 255; `alpha` between 0 and 1.\n * * `['palette', index, colors]` picks a `color` value from an array of colors using the given index; the `index`\n * expression must evaluate to a number; the items in the `colors` array must be strings with hex colors\n * (e.g. `'#86A136'`), colors using the rgba[a] functional notation (e.g. `'rgb(134, 161, 54)'` or `'rgba(134, 161, 54, 1)'`),\n * named colors (e.g. `'red'`), or array literals with 3 ([r, g, b]) or 4 ([r, g, b, a]) values (with r, g, and b\n * in the 0-255 range and a in the 0-1 range).\n *\n * Values can either be literals or another operator, as they will be evaluated recursively.\n * Literal values can be of the following types:\n * * `boolean`\n * * `number`\n * * `number[]` (number arrays can only have a length of 2, 3 or 4)\n * * `string`\n * * {@link module:ol/color~Color}\n *\n * @typedef {Array<*>|import(\"../color.js\").Color|string|number|boolean} ExpressionValue\n * @api\n */\n\nlet numTypes = 0;\nexport const NoneType = 0;\nexport const BooleanType = 1 << numTypes++;\nexport const NumberType = 1 << numTypes++;\nexport const StringType = 1 << numTypes++;\nexport const ColorType = 1 << numTypes++;\nexport const NumberArrayType = 1 << numTypes++;\nexport const AnyType = Math.pow(2, numTypes) - 1;\n\nconst typeNames = {\n [BooleanType]: 'boolean',\n [NumberType]: 'number',\n [StringType]: 'string',\n [ColorType]: 'color',\n [NumberArrayType]: 'number[]',\n};\n\nconst namedTypes = Object.keys(typeNames).map(Number).sort(ascending);\n\n/**\n * Get a string representation for a type.\n * @param {number} type The type.\n * @return {string} The type name.\n */\nexport function typeName(type) {\n const names = [];\n for (const namedType of namedTypes) {\n if (includesType(type, namedType)) {\n names.push(typeNames[namedType]);\n }\n }\n if (names.length === 0) {\n return 'untyped';\n }\n if (names.length < 3) {\n return names.join(' or ');\n }\n return names.slice(0, -1).join(', ') + ', or ' + names[names.length - 1];\n}\n\n/**\n * @param {number} broad The broad type.\n * @param {number} specific The specific type.\n * @return {boolean} The broad type includes the specific type.\n */\nexport function includesType(broad, specific) {\n return (broad & specific) === specific;\n}\n\n/**\n * @param {number} oneType One type.\n * @param {number} otherType Another type.\n * @return {boolean} The set of types overlap (share a common specific type)\n */\nexport function overlapsType(oneType, otherType) {\n return !!(oneType & otherType);\n}\n\n/**\n * @param {number} type The type.\n * @param {number} expected The expected type.\n * @return {boolean} The given type is exactly the expected type.\n */\nexport function isType(type, expected) {\n return type === expected;\n}\n\n/**\n * @typedef {boolean|number|string|Array} LiteralValue\n */\n\nexport class LiteralExpression {\n /**\n * @param {number} type The value type.\n * @param {LiteralValue} value The literal value.\n */\n constructor(type, value) {\n this.type = type;\n this.value = value;\n }\n}\n\nexport class CallExpression {\n /**\n * @param {number} type The return type.\n * @param {string} operator The operator.\n * @param {...Expression} args The arguments.\n */\n constructor(type, operator, ...args) {\n this.type = type;\n this.operator = operator;\n this.args = args;\n }\n}\n\n/**\n * @typedef {LiteralExpression|CallExpression} Expression\n */\n\n/**\n * @typedef {Object} ParsingContext\n * @property {Set} variables Variables referenced with the 'var' operator.\n * @property {Set} properties Properties referenced with the 'get' operator.\n * @property {boolean} featureId The style uses the feature id.\n * @property {import(\"../style/literal\").LiteralStyle} style The style being parsed\n */\n\n/**\n * @return {ParsingContext} A new parsing context.\n */\nexport function newParsingContext() {\n return {\n variables: new Set(),\n properties: new Set(),\n featureId: false,\n style: {},\n };\n}\n\n/**\n * @param {string} typeHint Type hint\n * @return {number} Resulting value type (will be a single type)\n */\nfunction getTypeFromHint(typeHint) {\n switch (typeHint) {\n case 'string':\n return StringType;\n case 'color':\n return ColorType;\n case 'number':\n return NumberType;\n case 'boolean':\n return BooleanType;\n case 'number[]':\n return NumberArrayType;\n default:\n throw new Error(`Unrecognized type hint: ${typeHint}`);\n }\n}\n\n/**\n * @typedef {LiteralValue|Array} EncodedExpression\n */\n\n/**\n * @param {EncodedExpression} encoded The encoded expression.\n * @param {ParsingContext} context The parsing context.\n * @param {number} [typeHint] Optional type hint\n * @return {Expression} The parsed expression result.\n */\nexport function parse(encoded, context, typeHint) {\n switch (typeof encoded) {\n case 'boolean': {\n return new LiteralExpression(BooleanType, encoded);\n }\n case 'number': {\n return new LiteralExpression(NumberType, encoded);\n }\n case 'string': {\n let type = StringType;\n if (isStringColor(encoded)) {\n type |= ColorType;\n }\n // apply the given type hint only if it won't result in an empty type\n if (!isType(type & typeHint, NoneType)) {\n type &= typeHint;\n }\n return new LiteralExpression(type, encoded);\n }\n default: {\n // pass\n }\n }\n\n if (!Array.isArray(encoded)) {\n throw new Error('Expression must be an array or a primitive value');\n }\n\n if (encoded.length === 0) {\n throw new Error('Empty expression');\n }\n\n if (typeof encoded[0] === 'string') {\n return parseCallExpression(encoded, context, typeHint);\n }\n\n for (const item of encoded) {\n if (typeof item !== 'number') {\n throw new Error('Expected an array of numbers');\n }\n }\n\n let type = NumberArrayType;\n if (encoded.length === 3 || encoded.length === 4) {\n type |= ColorType;\n }\n if (typeHint) {\n type &= typeHint;\n }\n return new LiteralExpression(type, encoded);\n}\n\n/**\n * @type {Object}\n */\nexport const Ops = {\n Get: 'get',\n Var: 'var',\n Concat: 'concat',\n GeometryType: 'geometry-type',\n Any: 'any',\n All: 'all',\n Not: '!',\n Resolution: 'resolution',\n Zoom: 'zoom',\n Time: 'time',\n Equal: '==',\n NotEqual: '!=',\n GreaterThan: '>',\n GreaterThanOrEqualTo: '>=',\n LessThan: '<',\n LessThanOrEqualTo: '<=',\n Multiply: '*',\n Divide: '/',\n Add: '+',\n Subtract: '-',\n Clamp: 'clamp',\n Mod: '%',\n Pow: '^',\n Abs: 'abs',\n Floor: 'floor',\n Ceil: 'ceil',\n Round: 'round',\n Sin: 'sin',\n Cos: 'cos',\n Atan: 'atan',\n Sqrt: 'sqrt',\n Match: 'match',\n Between: 'between',\n Interpolate: 'interpolate',\n Case: 'case',\n In: 'in',\n Number: 'number',\n String: 'string',\n Array: 'array',\n Color: 'color',\n Id: 'id',\n Band: 'band',\n Palette: 'palette',\n};\n\n/**\n * @typedef {function(Array, ParsingContext, number):Expression} Parser\n * Third argument is a type hint\n */\n\n/**\n * @type {Object}\n */\nconst parsers = {\n [Ops.Get]: createParser(\n ([_, typeHint]) => {\n if (typeHint !== undefined) {\n return getTypeFromHint(\n /** @type {string} */ (\n /** @type {LiteralExpression} */ (typeHint).value\n )\n );\n }\n return AnyType;\n },\n withArgsCount(1, 2),\n withGetArgs\n ),\n [Ops.Var]: createParser(\n ([firstArg]) => firstArg.type,\n withArgsCount(1, 1),\n withVarArgs\n ),\n [Ops.Id]: createParser(NumberType | StringType, withNoArgs, usesFeatureId),\n [Ops.Concat]: createParser(\n StringType,\n withArgsCount(2, Infinity),\n parseArgsOfType(AnyType)\n ),\n [Ops.GeometryType]: createParser(StringType, withNoArgs),\n [Ops.Resolution]: createParser(NumberType, withNoArgs),\n [Ops.Zoom]: createParser(NumberType, withNoArgs),\n [Ops.Time]: createParser(NumberType, withNoArgs),\n [Ops.Any]: createParser(\n BooleanType,\n withArgsCount(2, Infinity),\n parseArgsOfType(BooleanType)\n ),\n [Ops.All]: createParser(\n BooleanType,\n withArgsCount(2, Infinity),\n parseArgsOfType(BooleanType)\n ),\n [Ops.Not]: createParser(\n BooleanType,\n withArgsCount(1, 1),\n parseArgsOfType(BooleanType)\n ),\n [Ops.Equal]: createParser(\n BooleanType,\n withArgsCount(2, 2),\n parseArgsOfType(AnyType),\n narrowArgsType\n ),\n [Ops.NotEqual]: createParser(\n BooleanType,\n withArgsCount(2, 2),\n parseArgsOfType(AnyType),\n narrowArgsType\n ),\n [Ops.GreaterThan]: createParser(\n BooleanType,\n withArgsCount(2, 2),\n parseArgsOfType(AnyType),\n narrowArgsType\n ),\n [Ops.GreaterThanOrEqualTo]: createParser(\n BooleanType,\n withArgsCount(2, 2),\n parseArgsOfType(AnyType),\n narrowArgsType\n ),\n [Ops.LessThan]: createParser(\n BooleanType,\n withArgsCount(2, 2),\n parseArgsOfType(AnyType),\n narrowArgsType\n ),\n [Ops.LessThanOrEqualTo]: createParser(\n BooleanType,\n withArgsCount(2, 2),\n parseArgsOfType(AnyType),\n narrowArgsType\n ),\n [Ops.Multiply]: createParser(\n (parsedArgs) => {\n let outputType = NumberType | ColorType;\n for (let i = 0; i < parsedArgs.length; i++) {\n outputType &= parsedArgs[i].type;\n }\n return outputType;\n },\n withArgsCount(2, Infinity),\n parseArgsOfType(NumberType | ColorType),\n narrowArgsType\n ),\n [Ops.Divide]: createParser(\n NumberType,\n withArgsCount(2, 2),\n parseArgsOfType(NumberType)\n ),\n [Ops.Add]: createParser(\n NumberType,\n withArgsCount(2, Infinity),\n parseArgsOfType(NumberType)\n ),\n [Ops.Subtract]: createParser(\n NumberType,\n withArgsCount(2, 2),\n parseArgsOfType(NumberType)\n ),\n [Ops.Clamp]: createParser(\n NumberType,\n withArgsCount(3, 3),\n parseArgsOfType(NumberType)\n ),\n [Ops.Mod]: createParser(\n NumberType,\n withArgsCount(2, 2),\n parseArgsOfType(NumberType)\n ),\n [Ops.Pow]: createParser(\n NumberType,\n withArgsCount(2, 2),\n parseArgsOfType(NumberType)\n ),\n [Ops.Abs]: createParser(\n NumberType,\n withArgsCount(1, 1),\n parseArgsOfType(NumberType)\n ),\n [Ops.Floor]: createParser(\n NumberType,\n withArgsCount(1, 1),\n parseArgsOfType(NumberType)\n ),\n [Ops.Ceil]: createParser(\n NumberType,\n withArgsCount(1, 1),\n parseArgsOfType(NumberType)\n ),\n [Ops.Round]: createParser(\n NumberType,\n withArgsCount(1, 1),\n parseArgsOfType(NumberType)\n ),\n [Ops.Sin]: createParser(\n NumberType,\n withArgsCount(1, 1),\n parseArgsOfType(NumberType)\n ),\n [Ops.Cos]: createParser(\n NumberType,\n withArgsCount(1, 1),\n parseArgsOfType(NumberType)\n ),\n [Ops.Atan]: createParser(\n NumberType,\n withArgsCount(1, 2),\n parseArgsOfType(NumberType)\n ),\n [Ops.Sqrt]: createParser(\n NumberType,\n withArgsCount(1, 1),\n parseArgsOfType(NumberType)\n ),\n [Ops.Match]: createParser(\n (parsedArgs) => {\n let type = AnyType;\n for (let i = 2; i < parsedArgs.length; i += 2) {\n type &= parsedArgs[i].type;\n }\n type &= parsedArgs[parsedArgs.length - 1].type;\n return type;\n },\n withArgsCount(4, Infinity),\n withEvenArgs,\n parseMatchArgs\n ),\n [Ops.Between]: createParser(\n BooleanType,\n withArgsCount(3, 3),\n parseArgsOfType(NumberType)\n ),\n [Ops.Interpolate]: createParser(\n (parsedArgs) => {\n let type = ColorType | NumberType;\n for (let i = 3; i < parsedArgs.length; i += 2) {\n type &= parsedArgs[i].type;\n }\n return type;\n },\n withArgsCount(6, Infinity),\n withEvenArgs,\n parseInterpolateArgs\n ),\n [Ops.Case]: createParser(\n (parsedArgs) => {\n let type = AnyType;\n for (let i = 1; i < parsedArgs.length; i += 2) {\n type &= parsedArgs[i].type;\n }\n type &= parsedArgs[parsedArgs.length - 1].type;\n return type;\n },\n withArgsCount(3, Infinity),\n withOddArgs,\n parseCaseArgs\n ),\n [Ops.In]: createParser(BooleanType, withArgsCount(2, 2), parseInArgs),\n [Ops.Number]: createParser(\n NumberType,\n withArgsCount(1, Infinity),\n parseArgsOfType(AnyType)\n ),\n [Ops.String]: createParser(\n StringType,\n withArgsCount(1, Infinity),\n parseArgsOfType(AnyType)\n ),\n [Ops.Array]: createParser(\n (parsedArgs) => {\n return parsedArgs.length === 3 || parsedArgs.length === 4\n ? NumberArrayType | ColorType\n : NumberArrayType;\n },\n withArgsCount(1, Infinity),\n parseArgsOfType(NumberType)\n ),\n [Ops.Color]: createParser(\n ColorType,\n withArgsCount(3, 4),\n parseArgsOfType(NumberType)\n ),\n [Ops.Band]: createParser(\n NumberType,\n withArgsCount(1, 3),\n parseArgsOfType(NumberType)\n ),\n [Ops.Palette]: createParser(ColorType, withArgsCount(2, 2), parsePaletteArgs),\n};\n\n/**\n * @typedef {function(Array, ParsingContext, Array, number?):Array|void} ArgValidator\n * An argument validator applies various checks to an encoded expression arguments\n * Returns the parsed arguments if any.\n * Third argument is the array of parsed arguments from previous validators\n * Fourth argument is an optional type hint\n */\n\n/**\n * @type ArgValidator\n */\nfunction withGetArgs(encoded, context) {\n const arg = parse(encoded[1], context);\n if (!(arg instanceof LiteralExpression)) {\n throw new Error('Expected a literal argument for get operation');\n }\n if (typeof arg.value !== 'string') {\n throw new Error('Expected a string argument for get operation');\n }\n context.properties.add(arg.value);\n if (encoded.length === 3) {\n const hint = parse(encoded[2], context);\n return [arg, hint];\n }\n return [arg];\n}\n\n/**\n * @type ArgValidator\n */\nfunction withVarArgs(encoded, context, parsedArgs, typeHint) {\n const varName = encoded[1];\n if (typeof varName !== 'string') {\n throw new Error('Expected a string argument for var operation');\n }\n context.variables.add(varName);\n if (\n !context.style.variables ||\n context.style.variables[varName] === undefined\n ) {\n return [new LiteralExpression(AnyType, varName)];\n }\n const initialValue = context.style.variables[varName];\n const arg = /** @type {LiteralExpression} */ (parse(initialValue, context));\n arg.value = varName;\n if (typeHint && !overlapsType(typeHint, arg.type)) {\n throw new Error(\n `The variable ${varName} has type ${typeName(\n arg.type\n )} but the following type was expected: ${typeName(typeHint)}`\n );\n }\n return [arg];\n}\n\n/**\n * @type ArgValidator\n */\nfunction usesFeatureId(encoded, context) {\n context.featureId = true;\n}\n\n/**\n * @type ArgValidator\n */\nfunction withNoArgs(encoded, context) {\n const operation = encoded[0];\n if (encoded.length !== 1) {\n throw new Error(`Expected no arguments for ${operation} operation`);\n }\n return [];\n}\n\n/**\n * @param {number} minArgs The minimum number of arguments.\n * @param {number} maxArgs The maximum number of arguments.\n * @return {ArgValidator} The argument validator\n */\nfunction withArgsCount(minArgs, maxArgs) {\n return function (encoded, context) {\n const operation = encoded[0];\n const argCount = encoded.length - 1;\n if (minArgs === maxArgs) {\n if (argCount !== minArgs) {\n const plural = minArgs === 1 ? '' : 's';\n throw new Error(\n `Expected ${minArgs} argument${plural} for ${operation}, got ${argCount}`\n );\n }\n } else if (argCount < minArgs || argCount > maxArgs) {\n const range =\n maxArgs === Infinity\n ? `${minArgs} or more`\n : `${minArgs} to ${maxArgs}`;\n throw new Error(\n `Expected ${range} arguments for ${operation}, got ${argCount}`\n );\n }\n };\n}\n\n/**\n * @param {number} argType The argument type.\n * @return {ArgValidator} The argument validator\n */\nfunction parseArgsOfType(argType) {\n return function (encoded, context) {\n const operation = encoded[0];\n const argCount = encoded.length - 1;\n /**\n * @type {Array}\n */\n const args = new Array(argCount);\n for (let i = 0; i < argCount; ++i) {\n const expression = parse(encoded[i + 1], context);\n if (!overlapsType(argType, expression.type)) {\n const gotType = typeName(argType);\n const expectedType = typeName(expression.type);\n throw new Error(\n `Unexpected type for argument ${i} of ${operation} operation` +\n `, got ${gotType} but expected ${expectedType}`\n );\n }\n expression.type &= argType;\n args[i] = expression;\n }\n return args;\n };\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction narrowArgsType(encoded, context, parsedArgs) {\n const operation = encoded[0];\n const argCount = encoded.length - 1;\n\n // first pass to determine a narrowed down type\n let sameType = AnyType;\n for (let i = 0; i < parsedArgs.length; ++i) {\n sameType &= parsedArgs[i].type;\n }\n\n if (sameType === NoneType) {\n throw new Error(\n `No common type could be found for arguments of ${operation} operation`\n );\n }\n\n // re-parse args\n const args = new Array(argCount);\n for (let i = 0; i < argCount; ++i) {\n args[i] = parse(encoded[i + 1], context, sameType);\n }\n return args;\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withOddArgs(encoded, context) {\n const operation = encoded[0];\n const argCount = encoded.length - 1;\n if (argCount % 2 === 0) {\n throw new Error(\n `An odd amount of arguments was expected for operation ${operation}, got ${JSON.stringify(\n argCount\n )} instead`\n );\n }\n}\n\n/**\n * @type {ArgValidator}\n */\nfunction withEvenArgs(encoded, context) {\n const operation = encoded[0];\n const argCount = encoded.length - 1;\n if (argCount % 2 === 1) {\n throw new Error(\n `An even amount of arguments was expected for operation ${operation}, got ${JSON.stringify(\n argCount\n )} instead`\n );\n }\n}\n\n/**\n * @type ArgValidator\n */\nfunction parseMatchArgs(encoded, context, parsedArgs, typeHint) {\n const argsCount = encoded.length - 1;\n\n const input = parse(encoded[1], context);\n let inputType = input.type;\n const fallback = parse(encoded[encoded.length - 1], context);\n let outputType =\n typeHint !== undefined ? typeHint & fallback.type : fallback.type;\n\n // first parse args to figure out possible types\n const args = new Array(argsCount - 2);\n for (let i = 0; i < argsCount - 2; i += 2) {\n const match = parse(encoded[i + 2], context);\n const output = parse(encoded[i + 3], context);\n inputType &= match.type;\n outputType &= output.type;\n args[i] = match;\n args[i + 1] = output;\n }\n\n // check input and output types validity\n const expectedInputType = StringType | NumberType | BooleanType;\n if (!overlapsType(expectedInputType, inputType)) {\n throw new Error(\n `Expected an input of type ${typeName(\n expectedInputType\n )} for the interpolate operation` + `, got ${typeName(inputType)} instead`\n );\n }\n if (isType(outputType, NoneType)) {\n throw new Error(\n `Could not find a common output type for the following match operation: ` +\n JSON.stringify(encoded)\n );\n }\n\n // parse again inputs and outputs with common type\n for (let i = 0; i < argsCount - 2; i += 2) {\n const match = parse(encoded[i + 2], context, inputType);\n const output = parse(encoded[i + 3], context, outputType);\n args[i] = match;\n args[i + 1] = output;\n }\n\n return [\n parse(encoded[1], context, inputType),\n ...args,\n parse(encoded[encoded.length - 1], context, outputType),\n ];\n}\n\n/**\n * @type ArgValidator\n */\nfunction parseInterpolateArgs(encoded, context, parsedArgs, typeHint) {\n const interpolationType = encoded[1];\n let interpolation;\n switch (interpolationType[0]) {\n case 'linear':\n interpolation = 1;\n break;\n case 'exponential':\n interpolation = interpolationType[1];\n if (typeof interpolation !== 'number') {\n throw new Error(\n `Expected a number base for exponential interpolation` +\n `, got ${JSON.stringify(interpolation)} instead`\n );\n }\n break;\n default:\n interpolation = null;\n }\n if (!interpolation) {\n throw new Error(\n `Invalid interpolation type: ${JSON.stringify(interpolationType)}`\n );\n }\n interpolation = parse(interpolation, context);\n\n // check input types\n let input = parse(encoded[2], context);\n if (!overlapsType(NumberType, input.type)) {\n throw new Error(\n `Expected an input of type number for the interpolate operation` +\n `, got ${typeName(input.type)} instead`\n );\n }\n input = parse(encoded[2], context, NumberType); // parse again with narrower output\n\n const args = new Array(encoded.length - 3);\n for (let i = 0; i < args.length; i += 2) {\n let stop = parse(encoded[i + 3], context);\n if (!overlapsType(NumberType, stop.type)) {\n throw new Error(\n `Expected all stop input values in the interpolate operation to be of type number` +\n `, got ${typeName(stop.type)} at position ${i + 2} instead`\n );\n }\n let output = parse(encoded[i + 4], context);\n if (!overlapsType(NumberType | ColorType, output.type)) {\n throw new Error(\n `Expected all stop output values in the interpolate operation to be a number or color` +\n `, got ${typeName(output.type)} at position ${i + 3} instead`\n );\n }\n // parse again with narrower types\n stop = parse(encoded[i + 3], context, NumberType);\n output = parse(encoded[i + 4], context, NumberType | ColorType);\n args[i] = stop;\n args[i + 1] = output;\n }\n\n return [interpolation, input, ...args];\n}\n\n/**\n * @type ArgValidator\n */\nfunction parseCaseArgs(encoded, context, parsedArgs, typeHint) {\n const fallback = parse(encoded[encoded.length - 1], context);\n let outputType =\n typeHint !== undefined ? typeHint & fallback.type : fallback.type;\n\n // first parse args to figure out possible types\n const args = new Array(encoded.length - 1);\n for (let i = 0; i < args.length - 1; i += 2) {\n const condition = parse(encoded[i + 1], context);\n const output = parse(encoded[i + 2], context);\n if (!overlapsType(BooleanType, condition.type)) {\n throw new Error(\n `Expected all conditions in the case operation to be of type boolean` +\n `, got ${typeName(condition.type)} at position ${i} instead`\n );\n }\n outputType &= output.type;\n args[i] = condition;\n args[i + 1] = output;\n }\n\n if (isType(outputType, NoneType)) {\n throw new Error(\n `Could not find a common output type for the following case operation: ` +\n JSON.stringify(encoded)\n );\n }\n\n // parse again args with common output type\n for (let i = 0; i < args.length - 1; i += 2) {\n args[i + 1] = parse(encoded[i + 2], context, outputType);\n }\n args[args.length - 1] = parse(\n encoded[encoded.length - 1],\n context,\n outputType\n );\n\n return args;\n}\n\n/**\n * @type ArgValidator\n */\nfunction parseInArgs(encoded, context) {\n /** @type {Array} */\n let haystack = /** @type {any} */ (encoded[2]);\n if (!Array.isArray(haystack)) {\n throw new Error(\n `The \"in\" operator was provided a literal value which was not an array as second argument.`\n );\n }\n if (typeof haystack[0] === 'string') {\n if (haystack[0] !== 'literal') {\n throw new Error(\n `For the \"in\" operator, a string array should be wrapped in a \"literal\" operator to disambiguate from expressions.`\n );\n }\n if (!Array.isArray(haystack[1])) {\n throw new Error(\n `The \"in\" operator was provided a literal value which was not an array as second argument.`\n );\n }\n haystack = haystack[1];\n }\n\n let needleType = StringType | NumberType;\n const args = new Array(haystack.length);\n for (let i = 0; i < args.length; i++) {\n const arg = parse(haystack[i], context);\n needleType &= arg.type;\n args[i] = arg;\n }\n if (isType(needleType, NoneType)) {\n throw new Error(\n `Could not find a common type for the following in operation: ` +\n JSON.stringify(encoded)\n );\n }\n\n const needle = parse(encoded[1], context, needleType);\n return [needle, ...args];\n}\n\n/**\n * @type ArgValidator\n */\nfunction parsePaletteArgs(encoded, context) {\n const index = parse(encoded[1], context, NumberType);\n if (index.type !== NumberType) {\n throw new Error(\n `The first argument of palette must be an number, got ${typeName(\n index.type\n )} instead`\n );\n }\n const colors = encoded[2];\n if (!Array.isArray(colors)) {\n throw new Error('The second argument of palette must be an array');\n }\n const parsedColors = new Array(colors.length);\n for (let i = 0; i < parsedColors.length; i++) {\n const color = parse(colors[i], context, ColorType);\n if (!(color instanceof LiteralExpression)) {\n throw new Error(\n `The palette color at index ${i} must be a literal value`\n );\n }\n if (!overlapsType(color.type, ColorType)) {\n throw new Error(\n `The palette color at index ${i} should be of type color, got ${typeName(\n color.type\n )} instead`\n );\n }\n parsedColors[i] = color;\n }\n return [index, ...parsedColors];\n}\n\n/**\n * @param {number|function(Array):number} returnType The return type of the operator; can be a fixed value or a callback taking the parsed\n * arguments\n * @param {Array} argValidators A chain of argument validators; the return value of the last validator\n * will be used as parsed arguments\n * @return {Parser} The parser.\n */\nfunction createParser(returnType, ...argValidators) {\n return function (encoded, context, typeHint) {\n const operator = encoded[0];\n let parsedArgs = [];\n for (let i = 0; i < argValidators.length; i++) {\n parsedArgs =\n argValidators[i](encoded, context, parsedArgs, typeHint) || parsedArgs;\n }\n let actualType =\n typeof returnType === 'function' ? returnType(parsedArgs) : returnType;\n if (typeHint !== undefined) {\n if (!overlapsType(actualType, typeHint)) {\n throw new Error(\n `The following expression was expected to return ${typeName(\n typeHint\n )}, but returns ${typeName(actualType)} instead: ${JSON.stringify(\n encoded\n )}`\n );\n }\n actualType &= typeHint;\n }\n if (actualType === NoneType) {\n throw new Error(\n `No matching type was found for the following expression: ${JSON.stringify(\n encoded\n )}`\n );\n }\n return new CallExpression(actualType, operator, ...parsedArgs);\n };\n}\n\n/**\n * @param {Array} encoded The encoded expression.\n * @param {ParsingContext} context The parsing context.\n * @param {number} [typeHint] Optional type hint\n * @return {Expression} The parsed expression.\n */\nfunction parseCallExpression(encoded, context, typeHint) {\n const operator = encoded[0];\n\n const parser = parsers[operator];\n if (!parser) {\n throw new Error(`Unknown operator: ${operator}`);\n }\n return parser(encoded, context, typeHint);\n}\n","/**\n * @module ol/webgl/PaletteTexture\n */\n\nclass PaletteTexture {\n /**\n * @param {string} name The name of the texture.\n * @param {Uint8Array} data The texture data.\n */\n constructor(name, data) {\n this.name = name;\n this.data = data;\n\n /**\n * @type {WebGLTexture|null}\n * @private\n */\n this.texture_ = null;\n }\n\n /**\n * @param {WebGLRenderingContext} gl Rendering context.\n * @return {WebGLTexture} The texture.\n */\n getTexture(gl) {\n if (!this.texture_) {\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);\n gl.texImage2D(\n gl.TEXTURE_2D,\n 0,\n gl.RGBA,\n this.data.length / 4,\n 1,\n 0,\n gl.RGBA,\n gl.UNSIGNED_BYTE,\n this.data\n );\n this.texture_ = texture;\n }\n return this.texture_;\n }\n}\n\nexport default PaletteTexture;\n","/**\n * @module ol/expr/gpu\n */\nimport PaletteTexture from '../webgl/PaletteTexture.js';\nimport {\n BooleanType,\n CallExpression,\n ColorType,\n NoneType,\n NumberArrayType,\n NumberType,\n Ops,\n StringType,\n isType,\n overlapsType,\n parse,\n typeName,\n} from './expression.js';\nimport {Uniforms} from '../renderer/webgl/TileLayer.js';\nimport {asArray} from '../color.js';\n\n/**\n * @param {string} operator Operator\n * @param {CompilationContext} context Compilation context\n * @return {string} A function name based on the operator, unique in the given context\n */\nfunction computeOperatorFunctionName(operator, context) {\n return `operator_${operator}_${Object.keys(context.functions).length}`;\n}\n\n/**\n * Will return the number as a float with a dot separator, which is required by GLSL.\n * @param {number} v Numerical value.\n * @return {string} The value as string.\n */\nexport function numberToGlsl(v) {\n const s = v.toString();\n return s.includes('.') ? s : s + '.0';\n}\n\n/**\n * Will return the number array as a float with a dot separator, concatenated with ', '.\n * @param {Array} array Numerical values array.\n * @return {string} The array as a vector, e. g.: `vec3(1.0, 2.0, 3.0)`.\n */\nexport function arrayToGlsl(array) {\n if (array.length < 2 || array.length > 4) {\n throw new Error(\n '`formatArray` can only output `vec2`, `vec3` or `vec4` arrays.'\n );\n }\n return `vec${array.length}(${array.map(numberToGlsl).join(', ')})`;\n}\n\n/**\n * Will normalize and converts to string a `vec4` color array compatible with GLSL.\n * @param {string|import(\"../color.js\").Color} color Color either in string format or [r, g, b, a] array format,\n * with RGB components in the 0..255 range and the alpha component in the 0..1 range.\n * Note that the final array will always have 4 components.\n * @return {string} The color expressed in the `vec4(1.0, 1.0, 1.0, 1.0)` form.\n */\nexport function colorToGlsl(color) {\n const array = asArray(color);\n const alpha = array.length > 3 ? array[3] : 1;\n // all components are premultiplied with alpha value\n return arrayToGlsl([\n (array[0] / 255) * alpha,\n (array[1] / 255) * alpha,\n (array[2] / 255) * alpha,\n alpha,\n ]);\n}\n\n/** @type {Object} */\nconst stringToFloatMap = {};\nlet stringToFloatCounter = 0;\n\n/**\n * Returns a stable equivalent number for the string literal.\n * @param {string} string String literal value\n * @return {number} Number equivalent\n */\nexport function getStringNumberEquivalent(string) {\n if (!(string in stringToFloatMap)) {\n stringToFloatMap[string] = stringToFloatCounter++;\n }\n return stringToFloatMap[string];\n}\n\n/**\n * Returns a stable equivalent number for the string literal, for use in shaders. This number is then\n * converted to be a GLSL-compatible string.\n * Note: with a float precision of `mediump`, the amount of unique strings supported is 16,777,216\n * @param {string} string String literal value\n * @return {string} GLSL-compatible string containing a number\n */\nexport function stringToGlsl(string) {\n return numberToGlsl(getStringNumberEquivalent(string));\n}\n\n/**\n * Get the uniform name given a variable name.\n * @param {string} variableName The variable name.\n * @return {string} The uniform name.\n */\nexport function uniformNameForVariable(variableName) {\n return 'u_var_' + variableName;\n}\n\n/**\n * @typedef {import('./expression.js').ParsingContext} ParsingContext\n */\n/**\n *\n * @typedef {import(\"./expression.js\").Expression} Expression\n */\n/**\n *\n * @typedef {import(\"./expression.js\").LiteralExpression} LiteralExpression\n */\n\n/**\n * @typedef {Object} CompilationContextProperty\n * @property {string} name Name\n * @property {number} type Resolved property type\n * @property {function(import(\"../Feature.js\").FeatureLike): *} [evaluator] Function used for evaluating the value;\n */\n\n/**\n * @typedef {Object} CompilationContextVariable\n * @property {string} name Name\n * @property {number} type Resolved variable type\n * @property {function(Object): *} [evaluator] Function used for evaluating the value; argument is the style variables object\n */\n\n/**\n * @typedef {Object} CompilationContext\n * @property {boolean} [inFragmentShader] If false, means the expression output should be made for a vertex shader\n * @property {Object} properties The values for properties used in 'get' expressions.\n * @property {Object} variables The values for variables used in 'var' expressions.\n * @property {Object} functions Lookup of functions used by the style.\n * @property {number} [bandCount] Number of bands per pixel.\n * @property {Array} [paletteTextures] List of palettes used by the style.\n * @property {import(\"../style/literal.js\").LiteralStyle} style Literal style.\n */\n\n/**\n * @return {CompilationContext} A new compilation context.\n */\nexport function newCompilationContext() {\n return {\n inFragmentShader: false,\n variables: {},\n properties: {},\n functions: {},\n bandCount: 0,\n style: {},\n };\n}\n\nconst GET_BAND_VALUE_FUNC = 'getBandValue';\n\nexport const PALETTE_TEXTURE_ARRAY = 'u_paletteTextures';\n\n/**\n * @typedef {string} CompiledExpression\n */\n\n/**\n * @typedef {function(CompilationContext, CallExpression, number): string} Compiler\n * Third argument is the expected value types\n */\n\n/**\n * @param {import('./expression.js').EncodedExpression} encoded The encoded expression.\n * @param {number} type The expected type.\n * @param {import('./expression.js').ParsingContext} parsingContext The parsing context.\n * @param {CompilationContext} compilationContext An existing compilation context\n * @return {CompiledExpression} The compiled expression.\n */\nexport function buildExpression(\n encoded,\n type,\n parsingContext,\n compilationContext\n) {\n const expression = parse(encoded, parsingContext, type);\n if (isType(expression.type, NoneType)) {\n throw new Error(`No matching type was found`);\n }\n if (!overlapsType(type, expression.type)) {\n const expected = typeName(type);\n const actual = typeName(expression.type);\n throw new Error(\n `Expected expression to be of type ${expected}, got ${actual}`\n );\n }\n return compile(expression, type, compilationContext);\n}\n\n/**\n * @param {function(Array, CompilationContext): string} output Function that takes in parsed arguments and returns a string\n * @return {function(CompilationContext, import(\"./expression.js\").CallExpression, number): string} Compiler for the call expression\n */\nfunction createCompiler(output) {\n return (context, expression, type) => {\n const length = expression.args.length;\n const args = new Array(length);\n for (let i = 0; i < length; ++i) {\n args[i] = compile(expression.args[i], type, context);\n }\n return output(args, context);\n };\n}\n\n/**\n * @type {Object}\n */\nconst compilers = {\n [Ops.Get]: (context, expression) => {\n const firstArg = /** @type {LiteralExpression} */ (expression.args[0]);\n const propName = /** @type {string} */ (firstArg.value);\n const isExisting = propName in context.properties;\n if (!isExisting) {\n context.properties[propName] = {\n name: propName,\n type: expression.type,\n };\n }\n const prefix = context.inFragmentShader ? 'v_prop_' : 'a_prop_';\n return prefix + propName;\n },\n [Ops.GeometryType]: (context, expression, type) => {\n const propName = 'geometryType';\n const computeType = (geometry) => {\n const type = geometry.getType();\n switch (type) {\n case 'Point':\n case 'LineString':\n case 'Polygon':\n return type;\n case 'MultiPoint':\n case 'MultiLineString':\n case 'MultiPolygon':\n return type.substring(5);\n case 'Circle':\n return 'Polygon';\n case 'GeometryCollection':\n return computeType(geometry.getGeometries()[0]);\n default:\n }\n };\n const isExisting = propName in context.properties;\n if (!isExisting) {\n context.properties[propName] = {\n name: propName,\n type: StringType,\n evaluator: (feature) => {\n return computeType(feature.getGeometry());\n },\n };\n }\n const prefix = context.inFragmentShader ? 'v_prop_' : 'a_prop_';\n return prefix + propName;\n },\n [Ops.Var]: (context, expression) => {\n const firstArg = /** @type {LiteralExpression} */ (expression.args[0]);\n const varName = /** @type {string} */ (firstArg.value);\n const isExisting = varName in context.variables;\n if (!isExisting) {\n context.variables[varName] = {\n name: varName,\n type: expression.type,\n };\n }\n return uniformNameForVariable(varName);\n },\n [Ops.Resolution]: () => 'u_resolution',\n [Ops.Zoom]: () => 'u_zoom',\n [Ops.Time]: () => 'u_time',\n [Ops.Any]: createCompiler((compiledArgs) => `(${compiledArgs.join(` || `)})`),\n [Ops.All]: createCompiler((compiledArgs) => `(${compiledArgs.join(` && `)})`),\n [Ops.Not]: createCompiler(([value]) => `(!${value})`),\n [Ops.Equal]: createCompiler(\n ([firstValue, secondValue]) => `(${firstValue} == ${secondValue})`\n ),\n [Ops.NotEqual]: createCompiler(\n ([firstValue, secondValue]) => `(${firstValue} != ${secondValue})`\n ),\n [Ops.GreaterThan]: createCompiler(\n ([firstValue, secondValue]) => `(${firstValue} > ${secondValue})`\n ),\n [Ops.GreaterThanOrEqualTo]: createCompiler(\n ([firstValue, secondValue]) => `(${firstValue} >= ${secondValue})`\n ),\n [Ops.LessThan]: createCompiler(\n ([firstValue, secondValue]) => `(${firstValue} < ${secondValue})`\n ),\n [Ops.LessThanOrEqualTo]: createCompiler(\n ([firstValue, secondValue]) => `(${firstValue} <= ${secondValue})`\n ),\n [Ops.Multiply]: createCompiler(\n (compiledArgs) => `(${compiledArgs.join(' * ')})`\n ),\n [Ops.Divide]: createCompiler(\n ([firstValue, secondValue]) => `(${firstValue} / ${secondValue})`\n ),\n [Ops.Add]: createCompiler((compiledArgs) => `(${compiledArgs.join(' + ')})`),\n [Ops.Subtract]: createCompiler(\n ([firstValue, secondValue]) => `(${firstValue} - ${secondValue})`\n ),\n [Ops.Clamp]: createCompiler(\n ([value, min, max]) => `clamp(${value}, ${min}, ${max})`\n ),\n [Ops.Mod]: createCompiler(([value, modulo]) => `mod(${value}, ${modulo})`),\n [Ops.Pow]: createCompiler(([value, power]) => `pow(${value}, ${power})`),\n [Ops.Abs]: createCompiler(([value]) => `abs(${value})`),\n [Ops.Floor]: createCompiler(([value]) => `floor(${value})`),\n [Ops.Ceil]: createCompiler(([value]) => `ceil(${value})`),\n [Ops.Round]: createCompiler(([value]) => `floor(${value} + 0.5)`),\n [Ops.Sin]: createCompiler(([value]) => `sin(${value})`),\n [Ops.Cos]: createCompiler(([value]) => `cos(${value})`),\n [Ops.Atan]: createCompiler(([firstValue, secondValue]) => {\n return secondValue !== undefined\n ? `atan(${firstValue}, ${secondValue})`\n : `atan(${firstValue})`;\n }),\n [Ops.Sqrt]: createCompiler(([value]) => `sqrt(${value})`),\n [Ops.Match]: createCompiler((compiledArgs) => {\n const input = compiledArgs[0];\n const fallback = compiledArgs[compiledArgs.length - 1];\n let result = null;\n for (let i = compiledArgs.length - 3; i >= 1; i -= 2) {\n const match = compiledArgs[i];\n const output = compiledArgs[i + 1];\n result = `(${input} == ${match} ? ${output} : ${result || fallback})`;\n }\n return result;\n }),\n [Ops.Between]: createCompiler(\n ([value, min, max]) => `(${value} >= ${min} && ${value} <= ${max})`\n ),\n [Ops.Interpolate]: createCompiler(([exponent, input, ...compiledArgs]) => {\n let result = '';\n for (let i = 0; i < compiledArgs.length - 2; i += 2) {\n const stop1 = compiledArgs[i];\n const output1 = result || compiledArgs[i + 1];\n const stop2 = compiledArgs[i + 2];\n const output2 = compiledArgs[i + 3];\n let ratio;\n if (exponent === numberToGlsl(1)) {\n ratio = `(${input} - ${stop1}) / (${stop2} - ${stop1})`;\n } else {\n ratio = `(pow(${exponent}, (${input} - ${stop1})) - 1.0) / (pow(${exponent}, (${stop2} - ${stop1})) - 1.0)`;\n }\n result = `mix(${output1}, ${output2}, clamp(${ratio}, 0.0, 1.0))`;\n }\n return result;\n }),\n [Ops.Case]: createCompiler((compiledArgs) => {\n const fallback = compiledArgs[compiledArgs.length - 1];\n let result = null;\n for (let i = compiledArgs.length - 3; i >= 0; i -= 2) {\n const condition = compiledArgs[i];\n const output = compiledArgs[i + 1];\n result = `(${condition} ? ${output} : ${result || fallback})`;\n }\n return result;\n }),\n [Ops.In]: createCompiler(([needle, ...haystack], context) => {\n const funcName = computeOperatorFunctionName('in', context);\n const tests = [];\n for (let i = 0; i < haystack.length; i += 1) {\n tests.push(` if (inputValue == ${haystack[i]}) { return true; }`);\n }\n context.functions[funcName] = `bool ${funcName}(float inputValue) {\n${tests.join('\\n')}\n return false;\n}`;\n return `${funcName}(${needle})`;\n }),\n [Ops.Array]: createCompiler(\n (args) => `vec${args.length}(${args.join(', ')})`\n ),\n [Ops.Color]: createCompiler((compiledArgs) => {\n const rgb = compiledArgs.slice(0, 3).map((color) => `${color} / 255.0`);\n if (compiledArgs.length === 3) {\n return `vec4(${rgb.join(', ')}, 1.0)`;\n }\n const alpha = compiledArgs[3];\n return `(${alpha} * vec4(${rgb.join(', ')}, 1.0))`;\n }),\n [Ops.Band]: createCompiler(([band, xOffset, yOffset], context) => {\n if (!(GET_BAND_VALUE_FUNC in context.functions)) {\n let ifBlocks = '';\n const bandCount = context.bandCount || 1;\n for (let i = 0; i < bandCount; i++) {\n const colorIndex = Math.floor(i / 4);\n let bandIndex = i % 4;\n if (i === bandCount - 1 && bandIndex === 1) {\n // LUMINANCE_ALPHA - band 1 assigned to rgb and band 2 assigned to alpha\n bandIndex = 3;\n }\n const textureName = `${Uniforms.TILE_TEXTURE_ARRAY}[${colorIndex}]`;\n ifBlocks += ` if (band == ${i + 1}.0) {\n return texture2D(${textureName}, v_textureCoord + vec2(dx, dy))[${bandIndex}];\n }\n`;\n }\n\n context.functions[\n GET_BAND_VALUE_FUNC\n ] = `float getBandValue(float band, float xOffset, float yOffset) {\n float dx = xOffset / ${Uniforms.TEXTURE_PIXEL_WIDTH};\n float dy = yOffset / ${Uniforms.TEXTURE_PIXEL_HEIGHT};\n${ifBlocks}\n}`;\n }\n\n return `${GET_BAND_VALUE_FUNC}(${band}, ${xOffset ?? '0.0'}, ${\n yOffset ?? '0.0'\n })`;\n }),\n [Ops.Palette]: (context, expression) => {\n const [index, ...colors] = expression.args;\n const numColors = colors.length;\n const palette = new Uint8Array(numColors * 4);\n for (let i = 0; i < colors.length; i++) {\n const parsedValue = /** @type {string | Array} */ (\n /** @type {LiteralExpression} */ (colors[i]).value\n );\n const color = asArray(parsedValue);\n const offset = i * 4;\n palette[offset] = color[0];\n palette[offset + 1] = color[1];\n palette[offset + 2] = color[2];\n palette[offset + 3] = color[3] * 255;\n }\n if (!context.paletteTextures) {\n context.paletteTextures = [];\n }\n const paletteName = `${PALETTE_TEXTURE_ARRAY}[${context.paletteTextures.length}]`;\n const paletteTexture = new PaletteTexture(paletteName, palette);\n context.paletteTextures.push(paletteTexture);\n const compiledIndex = compile(index, NumberType, context);\n return `texture2D(${paletteName}, vec2((${compiledIndex} + 0.5) / ${numColors}.0, 0.5))`;\n },\n // TODO: unimplemented\n // Ops.Number\n // Ops.String\n // Ops.Concat\n};\n\n/**\n * @param {Expression} expression The expression.\n * @param {number} returnType The expected return type.\n * @param {CompilationContext} context The compilation context.\n * @return {CompiledExpression} The compiled expression\n */\nfunction compile(expression, returnType, context) {\n // operator\n if (expression instanceof CallExpression) {\n const compiler = compilers[expression.operator];\n if (compiler === undefined) {\n throw new Error(\n `No compiler defined for this operator: ${JSON.stringify(\n expression.operator\n )}`\n );\n }\n return compiler(context, expression, returnType);\n }\n\n if ((expression.type & NumberType) > 0) {\n return numberToGlsl(/** @type {number} */ (expression.value));\n }\n\n if ((expression.type & BooleanType) > 0) {\n return expression.value.toString();\n }\n\n if ((expression.type & StringType) > 0) {\n return stringToGlsl(expression.value.toString());\n }\n\n if ((expression.type & ColorType) > 0) {\n return colorToGlsl(\n /** @type {Array | string} */ (expression.value)\n );\n }\n\n if ((expression.type & NumberArrayType) > 0) {\n return arrayToGlsl(/** @type {Array} */ (expression.value));\n }\n\n throw new Error(\n `Unexpected expression ${expression.value} (expected type ${typeName(\n returnType\n )})`\n );\n}\n","/**\n * @module ol/extent\n */\nimport Relationship from './extent/Relationship.js';\n\n/**\n * An array of numbers representing an extent: `[minx, miny, maxx, maxy]`.\n * @typedef {Array} Extent\n * @api\n */\n\n/**\n * Extent corner.\n * @typedef {'bottom-left' | 'bottom-right' | 'top-left' | 'top-right'} Corner\n */\n\n/**\n * Build an extent that includes all given coordinates.\n *\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Bounding extent.\n * @api\n */\nexport function boundingExtent(coordinates) {\n const extent = createEmpty();\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n\n/**\n * @param {Array} xs Xs.\n * @param {Array} ys Ys.\n * @param {Extent} [dest] Destination extent.\n * @private\n * @return {Extent} Extent.\n */\nfunction _boundingExtentXYs(xs, ys, dest) {\n const minX = Math.min.apply(null, xs);\n const minY = Math.min.apply(null, ys);\n const maxX = Math.max.apply(null, xs);\n const maxY = Math.max.apply(null, ys);\n return createOrUpdate(minX, minY, maxX, maxY, dest);\n}\n\n/**\n * Return extent increased by the provided value.\n * @param {Extent} extent Extent.\n * @param {number} value The amount by which the extent should be buffered.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n * @api\n */\nexport function buffer(extent, value, dest) {\n if (dest) {\n dest[0] = extent[0] - value;\n dest[1] = extent[1] - value;\n dest[2] = extent[2] + value;\n dest[3] = extent[3] + value;\n return dest;\n }\n return [\n extent[0] - value,\n extent[1] - value,\n extent[2] + value,\n extent[3] + value,\n ];\n}\n\n/**\n * Creates a clone of an extent.\n *\n * @param {Extent} extent Extent to clone.\n * @param {Extent} [dest] Extent.\n * @return {Extent} The clone.\n */\nexport function clone(extent, dest) {\n if (dest) {\n dest[0] = extent[0];\n dest[1] = extent[1];\n dest[2] = extent[2];\n dest[3] = extent[3];\n return dest;\n }\n return extent.slice();\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n * @return {number} Closest squared distance.\n */\nexport function closestSquaredDistanceXY(extent, x, y) {\n let dx, dy;\n if (x < extent[0]) {\n dx = extent[0] - x;\n } else if (extent[2] < x) {\n dx = x - extent[2];\n } else {\n dx = 0;\n }\n if (y < extent[1]) {\n dy = extent[1] - y;\n } else if (extent[3] < y) {\n dy = y - extent[3];\n } else {\n dy = 0;\n }\n return dx * dx + dy * dy;\n}\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @return {boolean} The coordinate is contained in the extent.\n * @api\n */\nexport function containsCoordinate(extent, coordinate) {\n return containsXY(extent, coordinate[0], coordinate[1]);\n}\n\n/**\n * Check if one extent contains another.\n *\n * An extent is deemed contained if it lies completely within the other extent,\n * including if they share one or more edges.\n *\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The second extent is contained by or on the edge of the\n * first.\n * @api\n */\nexport function containsExtent(extent1, extent2) {\n return (\n extent1[0] <= extent2[0] &&\n extent2[2] <= extent1[2] &&\n extent1[1] <= extent2[1] &&\n extent2[3] <= extent1[3]\n );\n}\n\n/**\n * Check if the passed coordinate is contained or on the edge of the extent.\n *\n * @param {Extent} extent Extent.\n * @param {number} x X coordinate.\n * @param {number} y Y coordinate.\n * @return {boolean} The x, y values are contained in the extent.\n * @api\n */\nexport function containsXY(extent, x, y) {\n return extent[0] <= x && x <= extent[2] && extent[1] <= y && y <= extent[3];\n}\n\n/**\n * Get the relationship between a coordinate and extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate The coordinate.\n * @return {import(\"./extent/Relationship.js\").default} The relationship (bitwise compare with\n * import(\"./extent/Relationship.js\").Relationship).\n */\nexport function coordinateRelationship(extent, coordinate) {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const x = coordinate[0];\n const y = coordinate[1];\n let relationship = Relationship.UNKNOWN;\n if (x < minX) {\n relationship = relationship | Relationship.LEFT;\n } else if (x > maxX) {\n relationship = relationship | Relationship.RIGHT;\n }\n if (y < minY) {\n relationship = relationship | Relationship.BELOW;\n } else if (y > maxY) {\n relationship = relationship | Relationship.ABOVE;\n }\n if (relationship === Relationship.UNKNOWN) {\n relationship = Relationship.INTERSECTING;\n }\n return relationship;\n}\n\n/**\n * Create an empty extent.\n * @return {Extent} Empty extent.\n * @api\n */\nexport function createEmpty() {\n return [Infinity, Infinity, -Infinity, -Infinity];\n}\n\n/**\n * Create a new extent or update the provided extent.\n * @param {number} minX Minimum X.\n * @param {number} minY Minimum Y.\n * @param {number} maxX Maximum X.\n * @param {number} maxY Maximum Y.\n * @param {Extent} [dest] Destination extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdate(minX, minY, maxX, maxY, dest) {\n if (dest) {\n dest[0] = minX;\n dest[1] = minY;\n dest[2] = maxX;\n dest[3] = maxY;\n return dest;\n }\n return [minX, minY, maxX, maxY];\n}\n\n/**\n * Create a new empty extent or make the provided one empty.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateEmpty(dest) {\n return createOrUpdate(Infinity, Infinity, -Infinity, -Infinity, dest);\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinate(coordinate, dest) {\n const x = coordinate[0];\n const y = coordinate[1];\n return createOrUpdate(x, y, x, y, dest);\n}\n\n/**\n * @param {Array} coordinates Coordinates.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromCoordinates(coordinates, dest) {\n const extent = createOrUpdateEmpty(dest);\n return extendCoordinates(extent, coordinates);\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromFlatCoordinates(\n flatCoordinates,\n offset,\n end,\n stride,\n dest\n) {\n const extent = createOrUpdateEmpty(dest);\n return extendFlatCoordinates(extent, flatCoordinates, offset, end, stride);\n}\n\n/**\n * @param {Array>} rings Rings.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function createOrUpdateFromRings(rings, dest) {\n const extent = createOrUpdateEmpty(dest);\n return extendRings(extent, rings);\n}\n\n/**\n * Determine if two extents are equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {boolean} The two extents are equivalent.\n * @api\n */\nexport function equals(extent1, extent2) {\n return (\n extent1[0] == extent2[0] &&\n extent1[2] == extent2[2] &&\n extent1[1] == extent2[1] &&\n extent1[3] == extent2[3]\n );\n}\n\n/**\n * Determine if two extents are approximately equivalent.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {number} tolerance Tolerance in extent coordinate units.\n * @return {boolean} The two extents differ by less than the tolerance.\n */\nexport function approximatelyEquals(extent1, extent2, tolerance) {\n return (\n Math.abs(extent1[0] - extent2[0]) < tolerance &&\n Math.abs(extent1[2] - extent2[2]) < tolerance &&\n Math.abs(extent1[1] - extent2[1]) < tolerance &&\n Math.abs(extent1[3] - extent2[3]) < tolerance\n );\n}\n\n/**\n * Modify an extent to include another extent.\n * @param {Extent} extent1 The extent to be modified.\n * @param {Extent} extent2 The extent that will be included in the first.\n * @return {Extent} A reference to the first (extended) extent.\n * @api\n */\nexport function extend(extent1, extent2) {\n if (extent2[0] < extent1[0]) {\n extent1[0] = extent2[0];\n }\n if (extent2[2] > extent1[2]) {\n extent1[2] = extent2[2];\n }\n if (extent2[1] < extent1[1]) {\n extent1[1] = extent2[1];\n }\n if (extent2[3] > extent1[3]) {\n extent1[3] = extent2[3];\n }\n return extent1;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {import(\"./coordinate.js\").Coordinate} coordinate Coordinate.\n */\nexport function extendCoordinate(extent, coordinate) {\n if (coordinate[0] < extent[0]) {\n extent[0] = coordinate[0];\n }\n if (coordinate[0] > extent[2]) {\n extent[2] = coordinate[0];\n }\n if (coordinate[1] < extent[1]) {\n extent[1] = coordinate[1];\n }\n if (coordinate[1] > extent[3]) {\n extent[3] = coordinate[1];\n }\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array} coordinates Coordinates.\n * @return {Extent} Extent.\n */\nexport function extendCoordinates(extent, coordinates) {\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n extendCoordinate(extent, coordinates[i]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {number} offset Offset.\n * @param {number} end End.\n * @param {number} stride Stride.\n * @return {Extent} Extent.\n */\nexport function extendFlatCoordinates(\n extent,\n flatCoordinates,\n offset,\n end,\n stride\n) {\n for (; offset < end; offset += stride) {\n extendXY(extent, flatCoordinates[offset], flatCoordinates[offset + 1]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Array>} rings Rings.\n * @return {Extent} Extent.\n */\nexport function extendRings(extent, rings) {\n for (let i = 0, ii = rings.length; i < ii; ++i) {\n extendCoordinates(extent, rings[i]);\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} x X.\n * @param {number} y Y.\n */\nexport function extendXY(extent, x, y) {\n extent[0] = Math.min(extent[0], x);\n extent[1] = Math.min(extent[1], y);\n extent[2] = Math.max(extent[2], x);\n extent[3] = Math.max(extent[3], y);\n}\n\n/**\n * This function calls `callback` for each corner of the extent. If the\n * callback returns a truthy value the function returns that value\n * immediately. Otherwise the function returns `false`.\n * @param {Extent} extent Extent.\n * @param {function(import(\"./coordinate.js\").Coordinate): S} callback Callback.\n * @return {S|boolean} Value.\n * @template S\n */\nexport function forEachCorner(extent, callback) {\n let val;\n val = callback(getBottomLeft(extent));\n if (val) {\n return val;\n }\n val = callback(getBottomRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopRight(extent));\n if (val) {\n return val;\n }\n val = callback(getTopLeft(extent));\n if (val) {\n return val;\n }\n return false;\n}\n\n/**\n * Get the size of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Area.\n * @api\n */\nexport function getArea(extent) {\n let area = 0;\n if (!isEmpty(extent)) {\n area = getWidth(extent) * getHeight(extent);\n }\n return area;\n}\n\n/**\n * Get the bottom left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom left coordinate.\n * @api\n */\nexport function getBottomLeft(extent) {\n return [extent[0], extent[1]];\n}\n\n/**\n * Get the bottom right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Bottom right coordinate.\n * @api\n */\nexport function getBottomRight(extent) {\n return [extent[2], extent[1]];\n}\n\n/**\n * Get the center coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Center.\n * @api\n */\nexport function getCenter(extent) {\n return [(extent[0] + extent[2]) / 2, (extent[1] + extent[3]) / 2];\n}\n\n/**\n * Get a corner coordinate of an extent.\n * @param {Extent} extent Extent.\n * @param {Corner} corner Corner.\n * @return {import(\"./coordinate.js\").Coordinate} Corner coordinate.\n */\nexport function getCorner(extent, corner) {\n let coordinate;\n if (corner === 'bottom-left') {\n coordinate = getBottomLeft(extent);\n } else if (corner === 'bottom-right') {\n coordinate = getBottomRight(extent);\n } else if (corner === 'top-left') {\n coordinate = getTopLeft(extent);\n } else if (corner === 'top-right') {\n coordinate = getTopRight(extent);\n } else {\n throw new Error('Invalid corner');\n }\n return coordinate;\n}\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Enlarged area.\n */\nexport function getEnlargedArea(extent1, extent2) {\n const minX = Math.min(extent1[0], extent2[0]);\n const minY = Math.min(extent1[1], extent2[1]);\n const maxX = Math.max(extent1[2], extent2[2]);\n const maxY = Math.max(extent1[3], extent2[3]);\n return (maxX - minX) * (maxY - minY);\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @param {Extent} [dest] Destination extent.\n * @return {Extent} Extent.\n */\nexport function getForViewAndSize(center, resolution, rotation, size, dest) {\n const [x0, y0, x1, y1, x2, y2, x3, y3] = getRotatedViewport(\n center,\n resolution,\n rotation,\n size\n );\n return createOrUpdate(\n Math.min(x0, x1, x2, x3),\n Math.min(y0, y1, y2, y3),\n Math.max(x0, x1, x2, x3),\n Math.max(y0, y1, y2, y3),\n dest\n );\n}\n\n/**\n * @param {import(\"./coordinate.js\").Coordinate} center Center.\n * @param {number} resolution Resolution.\n * @param {number} rotation Rotation.\n * @param {import(\"./size.js\").Size} size Size.\n * @return {Array} Linear ring representing the viewport.\n */\nexport function getRotatedViewport(center, resolution, rotation, size) {\n const dx = (resolution * size[0]) / 2;\n const dy = (resolution * size[1]) / 2;\n const cosRotation = Math.cos(rotation);\n const sinRotation = Math.sin(rotation);\n const xCos = dx * cosRotation;\n const xSin = dx * sinRotation;\n const yCos = dy * cosRotation;\n const ySin = dy * sinRotation;\n const x = center[0];\n const y = center[1];\n return [\n x - xCos + ySin,\n y - xSin - yCos,\n x - xCos - ySin,\n y - xSin + yCos,\n x + xCos - ySin,\n y + xSin + yCos,\n x + xCos + ySin,\n y + xSin - yCos,\n x - xCos + ySin,\n y - xSin - yCos,\n ];\n}\n\n/**\n * Get the height of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Height.\n * @api\n */\nexport function getHeight(extent) {\n return extent[3] - extent[1];\n}\n\n/**\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @return {number} Intersection area.\n */\nexport function getIntersectionArea(extent1, extent2) {\n const intersection = getIntersection(extent1, extent2);\n return getArea(intersection);\n}\n\n/**\n * Get the intersection of two extents.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent 2.\n * @param {Extent} [dest] Optional extent to populate with intersection.\n * @return {Extent} Intersecting extent.\n * @api\n */\nexport function getIntersection(extent1, extent2, dest) {\n const intersection = dest ? dest : createEmpty();\n if (intersects(extent1, extent2)) {\n if (extent1[0] > extent2[0]) {\n intersection[0] = extent1[0];\n } else {\n intersection[0] = extent2[0];\n }\n if (extent1[1] > extent2[1]) {\n intersection[1] = extent1[1];\n } else {\n intersection[1] = extent2[1];\n }\n if (extent1[2] < extent2[2]) {\n intersection[2] = extent1[2];\n } else {\n intersection[2] = extent2[2];\n }\n if (extent1[3] < extent2[3]) {\n intersection[3] = extent1[3];\n } else {\n intersection[3] = extent2[3];\n }\n } else {\n createOrUpdateEmpty(intersection);\n }\n return intersection;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @return {number} Margin.\n */\nexport function getMargin(extent) {\n return getWidth(extent) + getHeight(extent);\n}\n\n/**\n * Get the size (width, height) of an extent.\n * @param {Extent} extent The extent.\n * @return {import(\"./size.js\").Size} The extent size.\n * @api\n */\nexport function getSize(extent) {\n return [extent[2] - extent[0], extent[3] - extent[1]];\n}\n\n/**\n * Get the top left coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top left coordinate.\n * @api\n */\nexport function getTopLeft(extent) {\n return [extent[0], extent[3]];\n}\n\n/**\n * Get the top right coordinate of an extent.\n * @param {Extent} extent Extent.\n * @return {import(\"./coordinate.js\").Coordinate} Top right coordinate.\n * @api\n */\nexport function getTopRight(extent) {\n return [extent[2], extent[3]];\n}\n\n/**\n * Get the width of an extent.\n * @param {Extent} extent Extent.\n * @return {number} Width.\n * @api\n */\nexport function getWidth(extent) {\n return extent[2] - extent[0];\n}\n\n/**\n * Determine if one extent intersects another.\n * @param {Extent} extent1 Extent 1.\n * @param {Extent} extent2 Extent.\n * @return {boolean} The two extents intersect.\n * @api\n */\nexport function intersects(extent1, extent2) {\n return (\n extent1[0] <= extent2[2] &&\n extent1[2] >= extent2[0] &&\n extent1[1] <= extent2[3] &&\n extent1[3] >= extent2[1]\n );\n}\n\n/**\n * Determine if an extent is empty.\n * @param {Extent} extent Extent.\n * @return {boolean} Is empty.\n * @api\n */\nexport function isEmpty(extent) {\n return extent[2] < extent[0] || extent[3] < extent[1];\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {Extent} [dest] Extent.\n * @return {Extent} Extent.\n */\nexport function returnOrUpdate(extent, dest) {\n if (dest) {\n dest[0] = extent[0];\n dest[1] = extent[1];\n dest[2] = extent[2];\n dest[3] = extent[3];\n return dest;\n }\n return extent;\n}\n\n/**\n * @param {Extent} extent Extent.\n * @param {number} value Value.\n */\nexport function scaleFromCenter(extent, value) {\n const deltaX = ((extent[2] - extent[0]) / 2) * (value - 1);\n const deltaY = ((extent[3] - extent[1]) / 2) * (value - 1);\n extent[0] -= deltaX;\n extent[2] += deltaX;\n extent[1] -= deltaY;\n extent[3] += deltaY;\n}\n\n/**\n * Determine if the segment between two coordinates intersects (crosses,\n * touches, or is contained by) the provided extent.\n * @param {Extent} extent The extent.\n * @param {import(\"./coordinate.js\").Coordinate} start Segment start coordinate.\n * @param {import(\"./coordinate.js\").Coordinate} end Segment end coordinate.\n * @return {boolean} The segment intersects the extent.\n */\nexport function intersectsSegment(extent, start, end) {\n let intersects = false;\n const startRel = coordinateRelationship(extent, start);\n const endRel = coordinateRelationship(extent, end);\n if (\n startRel === Relationship.INTERSECTING ||\n endRel === Relationship.INTERSECTING\n ) {\n intersects = true;\n } else {\n const minX = extent[0];\n const minY = extent[1];\n const maxX = extent[2];\n const maxY = extent[3];\n const startX = start[0];\n const startY = start[1];\n const endX = end[0];\n const endY = end[1];\n const slope = (endY - startY) / (endX - startX);\n let x, y;\n if (!!(endRel & Relationship.ABOVE) && !(startRel & Relationship.ABOVE)) {\n // potentially intersects top\n x = endX - (endY - maxY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.RIGHT) &&\n !(startRel & Relationship.RIGHT)\n ) {\n // potentially intersects right\n y = endY - (endX - maxX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.BELOW) &&\n !(startRel & Relationship.BELOW)\n ) {\n // potentially intersects bottom\n x = endX - (endY - minY) / slope;\n intersects = x >= minX && x <= maxX;\n }\n if (\n !intersects &&\n !!(endRel & Relationship.LEFT) &&\n !(startRel & Relationship.LEFT)\n ) {\n // potentially intersects left\n y = endY - (endX - minX) * slope;\n intersects = y >= minY && y <= maxY;\n }\n }\n return intersects;\n}\n\n/**\n * Apply a transform function to the extent.\n * @param {Extent} extent Extent.\n * @param {import(\"./proj.js\").TransformFunction} transformFn Transform function.\n * Called with `[minX, minY, maxX, maxY]` extent coordinates.\n * @param {Extent} [dest] Destination extent.\n * @param {number} [stops] Number of stops per side used for the transform.\n * By default only the corners are used.\n * @return {Extent} Extent.\n * @api\n */\nexport function applyTransform(extent, transformFn, dest, stops) {\n if (isEmpty(extent)) {\n return createOrUpdateEmpty(dest);\n }\n let coordinates = [];\n if (stops > 1) {\n const width = extent[2] - extent[0];\n const height = extent[3] - extent[1];\n for (let i = 0; i < stops; ++i) {\n coordinates.push(\n extent[0] + (width * i) / stops,\n extent[1],\n extent[2],\n extent[1] + (height * i) / stops,\n extent[2] - (width * i) / stops,\n extent[3],\n extent[0],\n extent[3] - (height * i) / stops\n );\n }\n } else {\n coordinates = [\n extent[0],\n extent[1],\n extent[2],\n extent[1],\n extent[2],\n extent[3],\n extent[0],\n extent[3],\n ];\n }\n transformFn(coordinates, coordinates, 2);\n const xs = [];\n const ys = [];\n for (let i = 0, l = coordinates.length; i < l; i += 2) {\n xs.push(coordinates[i]);\n ys.push(coordinates[i + 1]);\n }\n return _boundingExtentXYs(xs, ys, dest);\n}\n\n/**\n * Modifies the provided extent in-place to be within the real world\n * extent.\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Extent} The extent within the real world extent.\n */\nexport function wrapX(extent, projection) {\n const projectionExtent = projection.getExtent();\n const center = getCenter(extent);\n if (\n projection.canWrapX() &&\n (center[0] < projectionExtent[0] || center[0] >= projectionExtent[2])\n ) {\n const worldWidth = getWidth(projectionExtent);\n const worldsAway = Math.floor(\n (center[0] - projectionExtent[0]) / worldWidth\n );\n const offset = worldsAway * worldWidth;\n extent[0] -= offset;\n extent[2] -= offset;\n }\n return extent;\n}\n\n/**\n * Fits the extent to the real world\n *\n * If the extent does not cross the anti meridian, this will return the extent in an array\n * If the extent crosses the anti meridian, the extent will be sliced, so each part fits within the\n * real world\n *\n *\n * @param {Extent} extent Extent.\n * @param {import(\"./proj/Projection.js\").default} projection Projection\n * @return {Array} The extent within the real world extent.\n */\nexport function wrapAndSliceX(extent, projection) {\n if (projection.canWrapX()) {\n const projectionExtent = projection.getExtent();\n\n if (!isFinite(extent[0]) || !isFinite(extent[2])) {\n return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];\n }\n\n wrapX(extent, projection);\n const worldWidth = getWidth(projectionExtent);\n\n if (getWidth(extent) > worldWidth) {\n // the extent wraps around on itself\n return [[projectionExtent[0], extent[1], projectionExtent[2], extent[3]]];\n }\n if (extent[0] < projectionExtent[0]) {\n // the extent crosses the anti meridian, so it needs to be sliced\n return [\n [extent[0] + worldWidth, extent[1], projectionExtent[2], extent[3]],\n [projectionExtent[0], extent[1], extent[2], extent[3]],\n ];\n }\n if (extent[2] > projectionExtent[2]) {\n // the extent crosses the anti meridian, so it needs to be sliced\n return [\n [extent[0], extent[1], projectionExtent[2], extent[3]],\n [projectionExtent[0], extent[1], extent[2] - worldWidth, extent[3]],\n ];\n }\n }\n\n return [extent];\n}\n","/**\n * @module ol/extent/Relationship\n */\n\n/**\n * Relationship to an extent.\n * @enum {number}\n */\nexport default {\n UNKNOWN: 0,\n INTERSECTING: 1,\n ABOVE: 2,\n RIGHT: 4,\n BELOW: 8,\n LEFT: 16,\n};\n","/**\n * @module ol/featureloader\n */\nimport {VOID} from './functions.js';\n\n/**\n *\n * @type {boolean}\n * @private\n */\nlet withCredentials = false;\n\n/**\n * {@link module:ol/source/Vector~VectorSource} sources use a function of this type to\n * load features.\n *\n * This function takes up to 5 arguments. These are an {@link module:ol/extent~Extent} representing\n * the area to be loaded, a `{number}` representing the resolution (map units per pixel), an\n * {@link module:ol/proj/Projection~Projection} for the projection, an optional success callback that should get\n * the loaded features passed as an argument and an optional failure callback with no arguments. If\n * the callbacks are not used, the corresponding vector source will not fire `'featuresloadend'` and\n * `'featuresloaderror'` events. `this` within the function is bound to the\n * {@link module:ol/source/Vector~VectorSource} it's called from.\n *\n * The function is responsible for loading the features and adding them to the\n * source.\n * @typedef {function(this:(import(\"./source/Vector\").default|import(\"./VectorTile.js\").default),\n * import(\"./extent.js\").Extent,\n * number,\n * import(\"./proj/Projection.js\").default,\n * function(Array): void=,\n * function(): void=): void} FeatureLoader\n * @api\n */\n\n/**\n * {@link module:ol/source/Vector~VectorSource} sources use a function of this type to\n * get the url to load features from.\n *\n * This function takes an {@link module:ol/extent~Extent} representing the area\n * to be loaded, a `{number}` representing the resolution (map units per pixel)\n * and an {@link module:ol/proj/Projection~Projection} for the projection as\n * arguments and returns a `{string}` representing the URL.\n * @typedef {function(import(\"./extent.js\").Extent, number, import(\"./proj/Projection.js\").default): string} FeatureUrlFunction\n * @api\n */\n\n/**\n * @param {string|FeatureUrlFunction} url Feature URL service.\n * @param {import(\"./format/Feature.js\").default} format Feature format.\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {function(Array, import(\"./proj/Projection.js\").default): void} success Success\n * Function called with the loaded features and optionally with the data projection.\n * @param {function(): void} failure Failure\n * Function called when loading failed.\n */\nexport function loadFeaturesXhr(\n url,\n format,\n extent,\n resolution,\n projection,\n success,\n failure\n) {\n const xhr = new XMLHttpRequest();\n xhr.open(\n 'GET',\n typeof url === 'function' ? url(extent, resolution, projection) : url,\n true\n );\n if (format.getType() == 'arraybuffer') {\n xhr.responseType = 'arraybuffer';\n }\n xhr.withCredentials = withCredentials;\n /**\n * @param {Event} event Event.\n * @private\n */\n xhr.onload = function (event) {\n // status will be 0 for file:// urls\n if (!xhr.status || (xhr.status >= 200 && xhr.status < 300)) {\n const type = format.getType();\n /** @type {Document|Node|Object|string|undefined} */\n let source;\n if (type == 'json') {\n source = JSON.parse(xhr.responseText);\n } else if (type == 'text') {\n source = xhr.responseText;\n } else if (type == 'xml') {\n source = xhr.responseXML;\n if (!source) {\n source = new DOMParser().parseFromString(\n xhr.responseText,\n 'application/xml'\n );\n }\n } else if (type == 'arraybuffer') {\n source = /** @type {ArrayBuffer} */ (xhr.response);\n }\n if (source) {\n success(\n /** @type {Array} */\n (\n format.readFeatures(source, {\n extent: extent,\n featureProjection: projection,\n })\n ),\n format.readProjection(source)\n );\n } else {\n failure();\n }\n } else {\n failure();\n }\n };\n /**\n * @private\n */\n xhr.onerror = failure;\n xhr.send();\n}\n\n/**\n * Create an XHR feature loader for a `url` and `format`. The feature loader\n * loads features (with XHR), parses the features, and adds them to the\n * vector source.\n * @param {string|FeatureUrlFunction} url Feature URL service.\n * @param {import(\"./format/Feature.js\").default} format Feature format.\n * @return {FeatureLoader} The feature loader.\n * @api\n */\nexport function xhr(url, format) {\n /**\n * @param {import(\"./extent.js\").Extent} extent Extent.\n * @param {number} resolution Resolution.\n * @param {import(\"./proj/Projection.js\").default} projection Projection.\n * @param {function(Array): void} [success] Success\n * Function called when loading succeeded.\n * @param {function(): void} [failure] Failure\n * Function called when loading failed.\n */\n return function (extent, resolution, projection, success, failure) {\n const source = /** @type {import(\"./source/Vector\").default} */ (this);\n loadFeaturesXhr(\n url,\n format,\n extent,\n resolution,\n projection,\n /**\n * @param {Array} features The loaded features.\n * @param {import(\"./proj/Projection.js\").default} dataProjection Data\n * projection.\n */\n function (features, dataProjection) {\n source.addFeatures(features);\n if (success !== undefined) {\n success(features);\n }\n },\n /* FIXME handle error */ failure ? failure : VOID\n );\n };\n}\n\n/**\n * Setter for the withCredentials configuration for the XHR.\n *\n * @param {boolean} xhrWithCredentials The value of withCredentials to set.\n * Compare https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/\n * @api\n */\nexport function setWithCredentials(xhrWithCredentials) {\n withCredentials = xhrWithCredentials;\n}\n","/**\n * @module ol/format/EsriJSON\n */\nimport Feature from '../Feature.js';\nimport JSONFeature from './JSONFeature.js';\nimport LineString from '../geom/LineString.js';\nimport LinearRing from '../geom/LinearRing.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport {containsExtent} from '../extent.js';\nimport {deflateCoordinates} from '../geom/flat/deflate.js';\nimport {get as getProjection} from '../proj.js';\nimport {isEmpty} from '../obj.js';\nimport {linearRingIsClockwise} from '../geom/flat/orient.js';\nimport {transformGeometryWithOptions} from './Feature.js';\n\n/**\n * @typedef {import(\"arcgis-rest-api\").Feature} EsriJSONFeature\n * @typedef {import(\"arcgis-rest-api\").FeatureSet} EsriJSONFeatureSet\n * @typedef {import(\"arcgis-rest-api\").Geometry} EsriJSONGeometry\n * @typedef {import(\"arcgis-rest-api\").Point} EsriJSONPoint\n * @typedef {import(\"arcgis-rest-api\").Polyline} EsriJSONPolyline\n * @typedef {import(\"arcgis-rest-api\").Polygon} EsriJSONPolygon\n * @typedef {import(\"arcgis-rest-api\").Multipoint} EsriJSONMultipoint\n * @typedef {import(\"arcgis-rest-api\").HasZM} EsriJSONHasZM\n * @typedef {import(\"arcgis-rest-api\").Position} EsriJSONPosition\n * @typedef {import(\"arcgis-rest-api\").SpatialReferenceWkid} EsriJSONSpatialReferenceWkid\n */\n\n/**\n * @typedef {Object} EsriJSONMultiPolygon\n * @property {Array>>>} rings Rings for the MultiPolygon.\n * @property {boolean} [hasM] If the polygon coordinates have an M value.\n * @property {boolean} [hasZ] If the polygon coordinates have a Z value.\n * @property {EsriJSONSpatialReferenceWkid} [spatialReference] The coordinate reference system.\n */\n\n/**\n * @const\n * @type {Object}\n */\nconst GEOMETRY_READERS = {\n Point: readPointGeometry,\n LineString: readLineStringGeometry,\n Polygon: readPolygonGeometry,\n MultiPoint: readMultiPointGeometry,\n MultiLineString: readMultiLineStringGeometry,\n MultiPolygon: readMultiPolygonGeometry,\n};\n\n/**\n * @const\n * @type {Object}\n */\nconst GEOMETRY_WRITERS = {\n Point: writePointGeometry,\n LineString: writeLineStringGeometry,\n Polygon: writePolygonGeometry,\n MultiPoint: writeMultiPointGeometry,\n MultiLineString: writeMultiLineStringGeometry,\n MultiPolygon: writeMultiPolygonGeometry,\n};\n\n/**\n * @typedef {Object} Options\n * @property {string} [geometryName] Geometry name to use when creating features.\n */\n\n/**\n * @classdesc\n * Feature format for reading and writing data in the EsriJSON format.\n *\n * @api\n */\nclass EsriJSON extends JSONFeature {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super();\n\n /**\n * Name of the geometry attribute for features.\n * @type {string|undefined}\n * @private\n */\n this.geometryName_ = options.geometryName;\n }\n\n /**\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @param {string} [idField] Name of the field where to get the id from.\n * @protected\n * @return {import(\"../Feature.js\").default} Feature.\n */\n readFeatureFromObject(object, options, idField) {\n const esriJSONFeature = /** @type {EsriJSONFeature} */ (object);\n const geometry = readGeometry(esriJSONFeature.geometry, options);\n const feature = new Feature();\n if (this.geometryName_) {\n feature.setGeometryName(this.geometryName_);\n }\n feature.setGeometry(geometry);\n if (esriJSONFeature.attributes) {\n feature.setProperties(esriJSONFeature.attributes, true);\n const id = esriJSONFeature.attributes[idField];\n if (id !== undefined) {\n feature.setId(/** @type {number} */ (id));\n }\n }\n return feature;\n }\n\n /**\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {Array} Features.\n */\n readFeaturesFromObject(object, options) {\n options = options ? options : {};\n if (object['features']) {\n const esriJSONFeatureSet = /** @type {EsriJSONFeatureSet} */ (object);\n /** @type {Array} */\n const features = [];\n const esriJSONFeatures = esriJSONFeatureSet.features;\n for (let i = 0, ii = esriJSONFeatures.length; i < ii; ++i) {\n features.push(\n this.readFeatureFromObject(\n esriJSONFeatures[i],\n options,\n object.objectIdFieldName\n )\n );\n }\n return features;\n }\n return [this.readFeatureFromObject(object, options)];\n }\n\n /**\n * @param {EsriJSONGeometry} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n readGeometryFromObject(object, options) {\n return readGeometry(object, options);\n }\n\n /**\n * @param {Object} object Object.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n readProjectionFromObject(object) {\n if (\n object['spatialReference'] &&\n object['spatialReference']['wkid'] !== undefined\n ) {\n const spatialReference = /** @type {EsriJSONSpatialReferenceWkid} */ (\n object['spatialReference']\n );\n const crs = spatialReference.wkid;\n return getProjection('EPSG:' + crs);\n }\n return null;\n }\n\n /**\n * Encode a geometry as a EsriJSON object.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONGeometry} Object.\n * @api\n */\n writeGeometryObject(geometry, options) {\n return writeGeometry(geometry, this.adaptOptions(options));\n }\n\n /**\n * Encode a feature as a esriJSON Feature object.\n *\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {Object} Object.\n * @api\n */\n writeFeatureObject(feature, options) {\n options = this.adaptOptions(options);\n const object = {};\n if (!feature.hasProperties()) {\n object['attributes'] = {};\n return object;\n }\n const properties = feature.getProperties();\n const geometry = feature.getGeometry();\n if (geometry) {\n object['geometry'] = writeGeometry(geometry, options);\n const projection =\n options && (options.dataProjection || options.featureProjection);\n if (projection) {\n object['geometry']['spatialReference'] =\n /** @type {EsriJSONSpatialReferenceWkid} */ ({\n wkid: Number(getProjection(projection).getCode().split(':').pop()),\n });\n }\n delete properties[feature.getGeometryName()];\n }\n if (!isEmpty(properties)) {\n object['attributes'] = properties;\n } else {\n object['attributes'] = {};\n }\n return object;\n }\n\n /**\n * Encode an array of features as a EsriJSON object.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONFeatureSet} EsriJSON Object.\n * @api\n */\n writeFeaturesObject(features, options) {\n options = this.adaptOptions(options);\n const objects = [];\n for (let i = 0, ii = features.length; i < ii; ++i) {\n objects.push(this.writeFeatureObject(features[i], options));\n }\n return {\n 'features': objects,\n };\n }\n}\n\n/**\n * @param {EsriJSONGeometry} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\nfunction readGeometry(object, options) {\n if (!object) {\n return null;\n }\n /** @type {import(\"../geom/Geometry.js\").Type} */\n let type;\n if (typeof object['x'] === 'number' && typeof object['y'] === 'number') {\n type = 'Point';\n } else if (object['points']) {\n type = 'MultiPoint';\n } else if (object['paths']) {\n const esriJSONPolyline = /** @type {EsriJSONPolyline} */ (object);\n if (esriJSONPolyline.paths.length === 1) {\n type = 'LineString';\n } else {\n type = 'MultiLineString';\n }\n } else if (object['rings']) {\n const esriJSONPolygon = /** @type {EsriJSONPolygon} */ (object);\n const layout = getGeometryLayout(esriJSONPolygon);\n const rings = convertRings(esriJSONPolygon.rings, layout);\n if (rings.length === 1) {\n type = 'Polygon';\n object = Object.assign({}, object, {['rings']: rings[0]});\n } else {\n type = 'MultiPolygon';\n object = Object.assign({}, object, {['rings']: rings});\n }\n }\n const geometryReader = GEOMETRY_READERS[type];\n return transformGeometryWithOptions(geometryReader(object), false, options);\n}\n\n/**\n * Determines inner and outer rings.\n * Checks if any polygons in this array contain any other polygons in this\n * array. It is used for checking for holes.\n * Logic inspired by: https://github.com/Esri/terraformer-arcgis-parser\n * @param {Array>>} rings Rings.\n * @param {import(\"../geom/Geometry.js\").GeometryLayout} layout Geometry layout.\n * @return {Array>>>} Transformed rings.\n */\nfunction convertRings(rings, layout) {\n const flatRing = [];\n const outerRings = [];\n const holes = [];\n let i, ii;\n for (i = 0, ii = rings.length; i < ii; ++i) {\n flatRing.length = 0;\n deflateCoordinates(flatRing, 0, rings[i], layout.length);\n // is this ring an outer ring? is it clockwise?\n const clockwise = linearRingIsClockwise(\n flatRing,\n 0,\n flatRing.length,\n layout.length\n );\n if (clockwise) {\n outerRings.push([rings[i]]);\n } else {\n holes.push(rings[i]);\n }\n }\n while (holes.length) {\n const hole = holes.shift();\n let matched = false;\n // loop over all outer rings and see if they contain our hole.\n for (i = outerRings.length - 1; i >= 0; i--) {\n const outerRing = outerRings[i][0];\n const containsHole = containsExtent(\n new LinearRing(outerRing).getExtent(),\n new LinearRing(hole).getExtent()\n );\n if (containsHole) {\n // the hole is contained push it into our polygon\n outerRings[i].push(hole);\n matched = true;\n break;\n }\n }\n if (!matched) {\n // no outer rings contain this hole turn it into and outer\n // ring (reverse it)\n outerRings.push([hole.reverse()]);\n }\n }\n return outerRings;\n}\n\n/**\n * @param {EsriJSONPoint} object Object.\n * @return {import(\"../geom/Geometry.js\").default} Point.\n */\nfunction readPointGeometry(object) {\n let point;\n if (object.m !== undefined && object.z !== undefined) {\n point = new Point([object.x, object.y, object.z, object.m], 'XYZM');\n } else if (object.z !== undefined) {\n point = new Point([object.x, object.y, object.z], 'XYZ');\n } else if (object.m !== undefined) {\n point = new Point([object.x, object.y, object.m], 'XYM');\n } else {\n point = new Point([object.x, object.y]);\n }\n return point;\n}\n\n/**\n * @param {EsriJSONPolyline} object Object.\n * @return {import(\"../geom/Geometry.js\").default} LineString.\n */\nfunction readLineStringGeometry(object) {\n const layout = getGeometryLayout(object);\n return new LineString(object.paths[0], layout);\n}\n\n/**\n * @param {EsriJSONPolyline} object Object.\n * @return {import(\"../geom/Geometry.js\").default} MultiLineString.\n */\nfunction readMultiLineStringGeometry(object) {\n const layout = getGeometryLayout(object);\n return new MultiLineString(object.paths, layout);\n}\n\n/**\n * @param {EsriJSONHasZM} object Object.\n * @return {import(\"../geom/Geometry.js\").GeometryLayout} The geometry layout to use.\n */\nfunction getGeometryLayout(object) {\n /** @type {import(\"../geom/Geometry.js\").GeometryLayout} */\n let layout = 'XY';\n if (object.hasZ === true && object.hasM === true) {\n layout = 'XYZM';\n } else if (object.hasZ === true) {\n layout = 'XYZ';\n } else if (object.hasM === true) {\n layout = 'XYM';\n }\n return layout;\n}\n\n/**\n * @param {EsriJSONMultipoint} object Object.\n * @return {import(\"../geom/Geometry.js\").default} MultiPoint.\n */\nfunction readMultiPointGeometry(object) {\n const layout = getGeometryLayout(object);\n return new MultiPoint(object.points, layout);\n}\n\n/**\n * @param {EsriJSONMultiPolygon} object Object.\n * @return {import(\"../geom/Geometry.js\").default} MultiPolygon.\n */\nfunction readMultiPolygonGeometry(object) {\n const layout = getGeometryLayout(object);\n return new MultiPolygon(object.rings, layout);\n}\n\n/**\n * @param {EsriJSONPolygon} object Object.\n * @return {import(\"../geom/Geometry.js\").default} Polygon.\n */\nfunction readPolygonGeometry(object) {\n const layout = getGeometryLayout(object);\n return new Polygon(object.rings, layout);\n}\n\n/**\n * @param {import(\"../geom/Point.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONPoint} EsriJSON geometry.\n */\nfunction writePointGeometry(geometry, options) {\n const coordinates = geometry.getCoordinates();\n /** @type {EsriJSONPoint} */\n let esriJSON;\n const layout = geometry.getLayout();\n if (layout === 'XYZ') {\n esriJSON = {\n x: coordinates[0],\n y: coordinates[1],\n z: coordinates[2],\n };\n } else if (layout === 'XYM') {\n esriJSON = {\n x: coordinates[0],\n y: coordinates[1],\n m: coordinates[2],\n };\n } else if (layout === 'XYZM') {\n esriJSON = {\n x: coordinates[0],\n y: coordinates[1],\n z: coordinates[2],\n m: coordinates[3],\n };\n } else if (layout === 'XY') {\n esriJSON = {\n x: coordinates[0],\n y: coordinates[1],\n };\n } else {\n throw new Error('Invalid geometry layout');\n }\n return esriJSON;\n}\n\n/**\n * @param {import(\"../geom/SimpleGeometry.js\").default} geometry Geometry.\n * @return {Object} Object with boolean hasZ and hasM keys.\n */\nfunction getHasZM(geometry) {\n const layout = geometry.getLayout();\n return {\n hasZ: layout === 'XYZ' || layout === 'XYZM',\n hasM: layout === 'XYM' || layout === 'XYZM',\n };\n}\n\n/**\n * @param {import(\"../geom/LineString.js\").default} lineString Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONPolyline} EsriJSON geometry.\n */\nfunction writeLineStringGeometry(lineString, options) {\n const hasZM = getHasZM(lineString);\n return {\n hasZ: hasZM.hasZ,\n hasM: hasZM.hasM,\n paths: [\n /** @type {Array} */ (lineString.getCoordinates()),\n ],\n };\n}\n\n/**\n * @param {import(\"../geom/Polygon.js\").default} polygon Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONPolygon} EsriJSON geometry.\n */\nfunction writePolygonGeometry(polygon, options) {\n // Esri geometries use the left-hand rule\n const hasZM = getHasZM(polygon);\n return {\n hasZ: hasZM.hasZ,\n hasM: hasZM.hasM,\n rings: /** @type {Array>} */ (\n polygon.getCoordinates(false)\n ),\n };\n}\n\n/**\n * @param {import(\"../geom/MultiLineString.js\").default} multiLineString Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONPolyline} EsriJSON geometry.\n */\nfunction writeMultiLineStringGeometry(multiLineString, options) {\n const hasZM = getHasZM(multiLineString);\n return {\n hasZ: hasZM.hasZ,\n hasM: hasZM.hasM,\n paths: /** @type {Array>} */ (\n multiLineString.getCoordinates()\n ),\n };\n}\n\n/**\n * @param {import(\"../geom/MultiPoint.js\").default} multiPoint Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONMultipoint} EsriJSON geometry.\n */\nfunction writeMultiPointGeometry(multiPoint, options) {\n const hasZM = getHasZM(multiPoint);\n return {\n hasZ: hasZM.hasZ,\n hasM: hasZM.hasM,\n points: /** @type {Array} */ (\n multiPoint.getCoordinates()\n ),\n };\n}\n\n/**\n * @param {import(\"../geom/MultiPolygon.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONPolygon} EsriJSON geometry.\n */\nfunction writeMultiPolygonGeometry(geometry, options) {\n const hasZM = getHasZM(geometry);\n const coordinates = geometry.getCoordinates(false);\n const output = [];\n for (let i = 0; i < coordinates.length; i++) {\n for (let x = coordinates[i].length - 1; x >= 0; x--) {\n output.push(coordinates[i][x]);\n }\n }\n return {\n hasZ: hasZM.hasZ,\n hasM: hasZM.hasM,\n rings: /** @type {Array>} */ (output),\n };\n}\n\n/**\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {EsriJSONGeometry} EsriJSON geometry.\n */\nfunction writeGeometry(geometry, options) {\n const geometryWriter = GEOMETRY_WRITERS[geometry.getType()];\n return geometryWriter(\n transformGeometryWithOptions(geometry, true, options),\n options\n );\n}\n\nexport default EsriJSON;\n","/**\n * @module ol/format/Feature\n */\nimport Feature from '../Feature.js';\nimport RenderFeature from '../render/Feature.js';\nimport {\n GeometryCollection,\n LineString,\n MultiLineString,\n MultiPoint,\n MultiPolygon,\n Point,\n Polygon,\n} from '../geom.js';\nimport {abstract} from '../util.js';\nimport {\n equivalent as equivalentProjection,\n get as getProjection,\n getTransform,\n transformExtent,\n} from '../proj.js';\nimport {\n linearRingsAreOriented,\n linearRingssAreOriented,\n orientLinearRings,\n orientLinearRingsArray,\n} from '../geom/flat/orient.js';\n\n/**\n * @typedef {Object} ReadOptions\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection] Projection of the data we are reading.\n * If not provided, the projection will be derived from the data (where possible) or\n * the `dataProjection` of the format is assigned (where set). If the projection\n * can not be derived from the data and if no `dataProjection` is set for a format,\n * the features will not be reprojected.\n * @property {import(\"../extent.js\").Extent} [extent] Tile extent in map units of the tile being read.\n * This is only required when reading data with tile pixels as geometry units. When configured,\n * a `dataProjection` with `TILE_PIXELS` as `units` and the tile's pixel extent as `extent` needs to be\n * provided.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection of the feature geometries\n * created by the format reader. If not provided, features will be returned in the\n * `dataProjection`.\n */\n\n/**\n * @typedef {Object} WriteOptions\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection] Projection of the data we are writing.\n * If not provided, the `dataProjection` of the format is assigned (where set).\n * If no `dataProjection` is set for a format, the features will be returned\n * in the `featureProjection`.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection of the feature geometries\n * that will be serialized by the format writer. If not provided, geometries are assumed\n * to be in the `dataProjection` if that is set; in other words, they are not transformed.\n * @property {boolean} [rightHanded] When writing geometries, follow the right-hand\n * rule for linear ring orientation. This means that polygons will have counter-clockwise\n * exterior rings and clockwise interior rings. By default, coordinates are serialized\n * as they are provided at construction. If `true`, the right-hand rule will\n * be applied. If `false`, the left-hand rule will be applied (clockwise for\n * exterior and counter-clockwise for interior rings). Note that not all\n * formats support this. The GeoJSON format does use this property when writing\n * geometries.\n * @property {number} [decimals] Maximum number of decimal places for coordinates.\n * Coordinates are stored internally as floats, but floating-point arithmetic can create\n * coordinates with a large number of decimal places, not generally wanted on output.\n * Set a number here to round coordinates. Can also be used to ensure that\n * coordinates read in can be written back out with the same number of decimals.\n * Default is no rounding.\n */\n\n/**\n * @typedef {'arraybuffer' | 'json' | 'text' | 'xml'} Type\n */\n\n/**\n * @typedef {Object} SimpleGeometryObject\n * @property {import('../geom/Geometry.js').Type} type Type.\n * @property {Array} flatCoordinates Flat coordinates.\n * @property {Array|Array>} [ends] Ends or endss.\n * @property {import('../geom/Geometry.js').GeometryLayout} [layout] Layout.\n */\n\n/**\n * @typedef {Array} GeometryCollectionObject\n */\n\n/**\n * @typedef {SimpleGeometryObject|GeometryCollectionObject} GeometryObject\n */\n\n/**\n * @typedef {Object} FeatureObject\n * @property {string|number} [id] Id.\n * @property {GeometryObject} [geometry] Geometry.\n * @property {Object} [properties] Properties.\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for feature formats.\n * {@link module:ol/format/Feature~FeatureFormat} subclasses provide the ability to decode and encode\n * {@link module:ol/Feature~Feature} objects from a variety of commonly used geospatial\n * file formats. See the documentation for each format for more details.\n *\n * @abstract\n * @api\n */\nclass FeatureFormat {\n constructor() {\n /**\n * @protected\n * @type {import(\"../proj/Projection.js\").default|undefined}\n */\n this.dataProjection = undefined;\n\n /**\n * @protected\n * @type {import(\"../proj/Projection.js\").default|undefined}\n */\n this.defaultFeatureProjection = undefined;\n\n /**\n * @protected\n * @type {import(\"../Feature.js\").FeatureClass}\n */\n this.featureClass = Feature;\n\n /**\n * A list media types supported by the format in descending order of preference.\n * @type {Array}\n */\n this.supportedMediaTypes = null;\n }\n\n /**\n * Adds the data projection to the read options.\n * @param {Document|Element|Object|string} source Source.\n * @param {ReadOptions} [options] Options.\n * @return {ReadOptions|undefined} Options.\n * @protected\n */\n getReadOptions(source, options) {\n if (options) {\n let dataProjection = options.dataProjection\n ? getProjection(options.dataProjection)\n : this.readProjection(source);\n if (\n options.extent &&\n dataProjection &&\n dataProjection.getUnits() === 'tile-pixels'\n ) {\n dataProjection = getProjection(dataProjection);\n dataProjection.setWorldExtent(options.extent);\n }\n options = {\n dataProjection: dataProjection,\n featureProjection: options.featureProjection,\n };\n }\n return this.adaptOptions(options);\n }\n\n /**\n * Sets the `dataProjection` on the options, if no `dataProjection`\n * is set.\n * @param {WriteOptions|ReadOptions|undefined} options\n * Options.\n * @protected\n * @return {WriteOptions|ReadOptions|undefined}\n * Updated options.\n */\n adaptOptions(options) {\n return Object.assign(\n {\n dataProjection: this.dataProjection,\n featureProjection: this.defaultFeatureProjection,\n featureClass: this.featureClass,\n },\n options\n );\n }\n\n /**\n * @abstract\n * @return {Type} The format type.\n */\n getType() {\n return abstract();\n }\n\n /**\n * Read a single feature from a source.\n *\n * @abstract\n * @param {Document|Element|Object|string} source Source.\n * @param {ReadOptions} [options] Read options.\n * @return {import(\"../Feature.js\").FeatureLike|Array} Feature.\n */\n readFeature(source, options) {\n return abstract();\n }\n\n /**\n * Read all features from a source.\n *\n * @abstract\n * @param {Document|Element|ArrayBuffer|Object|string} source Source.\n * @param {ReadOptions} [options] Read options.\n * @return {Array} Features.\n */\n readFeatures(source, options) {\n return abstract();\n }\n\n /**\n * Read a single geometry from a source.\n *\n * @abstract\n * @param {Document|Element|Object|string} source Source.\n * @param {ReadOptions} [options] Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n readGeometry(source, options) {\n return abstract();\n }\n\n /**\n * Read the projection from a source.\n *\n * @abstract\n * @param {Document|Element|Object|string} source Source.\n * @return {import(\"../proj/Projection.js\").default|undefined} Projection.\n */\n readProjection(source) {\n return abstract();\n }\n\n /**\n * Encode a feature in this format.\n *\n * @abstract\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {WriteOptions} [options] Write options.\n * @return {string|ArrayBuffer} Result.\n */\n writeFeature(feature, options) {\n return abstract();\n }\n\n /**\n * Encode an array of features in this format.\n *\n * @abstract\n * @param {Array} features Features.\n * @param {WriteOptions} [options] Write options.\n * @return {string|ArrayBuffer} Result.\n */\n writeFeatures(features, options) {\n return abstract();\n }\n\n /**\n * Write a single geometry in this format.\n *\n * @abstract\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {WriteOptions} [options] Write options.\n * @return {string|ArrayBuffer} Result.\n */\n writeGeometry(geometry, options) {\n return abstract();\n }\n}\n\nexport default FeatureFormat;\n\n/**\n * @template {import(\"../geom/Geometry.js\").default|RenderFeature} T\n * @param {T} geometry Geometry.\n * @param {boolean} write Set to true for writing, false for reading.\n * @param {WriteOptions|ReadOptions} [options] Options.\n * @return {T} Transformed geometry.\n */\nexport function transformGeometryWithOptions(geometry, write, options) {\n const featureProjection = options\n ? getProjection(options.featureProjection)\n : null;\n const dataProjection = options ? getProjection(options.dataProjection) : null;\n\n let transformed = geometry;\n if (\n featureProjection &&\n dataProjection &&\n !equivalentProjection(featureProjection, dataProjection)\n ) {\n if (write) {\n transformed = /** @type {T} */ (geometry.clone());\n }\n const fromProjection = write ? featureProjection : dataProjection;\n const toProjection = write ? dataProjection : featureProjection;\n if (fromProjection.getUnits() === 'tile-pixels') {\n transformed.transform(fromProjection, toProjection);\n } else {\n transformed.applyTransform(getTransform(fromProjection, toProjection));\n }\n }\n if (\n write &&\n options &&\n /** @type {WriteOptions} */ (options).decimals !== undefined\n ) {\n const power = Math.pow(10, /** @type {WriteOptions} */ (options).decimals);\n // if decimals option on write, round each coordinate appropriately\n /**\n * @param {Array} coordinates Coordinates.\n * @return {Array} Transformed coordinates.\n */\n const transform = function (coordinates) {\n for (let i = 0, ii = coordinates.length; i < ii; ++i) {\n coordinates[i] = Math.round(coordinates[i] * power) / power;\n }\n return coordinates;\n };\n if (transformed === geometry) {\n transformed = /** @type {T} */ (geometry.clone());\n }\n transformed.applyTransform(transform);\n }\n return transformed;\n}\n\n/**\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {ReadOptions} [options] Read options.\n * @return {import(\"../extent.js\").Extent} Transformed extent.\n */\nexport function transformExtentWithOptions(extent, options) {\n const featureProjection = options\n ? getProjection(options.featureProjection)\n : null;\n const dataProjection = options ? getProjection(options.dataProjection) : null;\n\n if (\n featureProjection &&\n dataProjection &&\n !equivalentProjection(featureProjection, dataProjection)\n ) {\n return transformExtent(extent, dataProjection, featureProjection);\n }\n return extent;\n}\n\nconst GeometryConstructor = {\n Point: Point,\n LineString: LineString,\n Polygon: Polygon,\n MultiPoint: MultiPoint,\n MultiLineString: MultiLineString,\n MultiPolygon: MultiPolygon,\n};\n\nfunction orientFlatCoordinates(flatCoordinates, ends, stride) {\n if (Array.isArray(ends[0])) {\n // MultiPolagon\n if (!linearRingssAreOriented(flatCoordinates, 0, ends, stride)) {\n flatCoordinates = flatCoordinates.slice();\n orientLinearRingsArray(flatCoordinates, 0, ends, stride);\n }\n return flatCoordinates;\n }\n if (!linearRingsAreOriented(flatCoordinates, 0, ends, stride)) {\n flatCoordinates = flatCoordinates.slice();\n orientLinearRings(flatCoordinates, 0, ends, stride);\n }\n return flatCoordinates;\n}\n\n/**\n * @param {FeatureObject} object Feature object.\n * @param {WriteOptions|ReadOptions} [options] Options.\n * @return {RenderFeature|Array} Render feature.\n */\nexport function createRenderFeature(object, options) {\n const geometry = object.geometry;\n if (!geometry) {\n return [];\n }\n if (Array.isArray(geometry)) {\n return geometry\n .map((geometry) => createRenderFeature({...object, geometry}))\n .flat();\n }\n\n const geometryType =\n geometry.type === 'MultiPolygon' ? 'Polygon' : geometry.type;\n if (geometryType === 'GeometryCollection' || geometryType === 'Circle') {\n throw new Error('Unsupported geometry type: ' + geometryType);\n }\n\n const stride = geometry.layout.length;\n return transformGeometryWithOptions(\n new RenderFeature(\n geometryType,\n geometryType === 'Polygon'\n ? orientFlatCoordinates(geometry.flatCoordinates, geometry.ends, stride)\n : geometry.flatCoordinates,\n geometry.ends?.flat(),\n stride,\n object.properties || {},\n object.id\n ).enableSimplifyTransformed(),\n false,\n options\n );\n}\n\n/**\n * @param {GeometryObject|null} object Geometry object.\n * @param {WriteOptions|ReadOptions} [options] Options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\nexport function createGeometry(object, options) {\n if (!object) {\n return null;\n }\n if (Array.isArray(object)) {\n const geometries = object.map((geometry) =>\n createGeometry(geometry, options)\n );\n return new GeometryCollection(geometries);\n }\n const Geometry = GeometryConstructor[object.type];\n return transformGeometryWithOptions(\n new Geometry(object.flatCoordinates, object.layout, object.ends),\n false,\n options\n );\n}\n","/**\n * @module ol/format/GML2\n */\nimport GMLBase, {GMLNS} from './GMLBase.js';\nimport {\n OBJECT_PROPERTY_NODE_FACTORY,\n createElementNS,\n getAllTextContent,\n makeArrayPusher,\n makeChildAppender,\n makeReplacer,\n makeSimpleNodeFactory,\n pushParseAndPop,\n pushSerializeAndPop,\n} from '../xml.js';\nimport {createOrUpdate} from '../extent.js';\nimport {get as getProjection} from '../proj.js';\nimport {\n transformExtentWithOptions,\n transformGeometryWithOptions,\n} from './Feature.js';\nimport {writeStringTextNode} from './xsd.js';\n\n/**\n * @const\n * @type {string}\n */\nconst schemaLocation =\n GMLNS + ' http://schemas.opengis.net/gml/2.1.2/feature.xsd';\n\n/**\n * @const\n * @type {Object}\n */\nconst MULTIGEOMETRY_TO_MEMBER_NODENAME = {\n 'MultiLineString': 'lineStringMember',\n 'MultiCurve': 'curveMember',\n 'MultiPolygon': 'polygonMember',\n 'MultiSurface': 'surfaceMember',\n};\n\n/**\n * @classdesc\n * Feature format for reading and writing data in the GML format,\n * version 2.1.2.\n *\n * @api\n */\nclass GML2 extends GMLBase {\n /**\n * @param {import(\"./GMLBase.js\").Options} [options] Optional configuration object.\n */\n constructor(options) {\n options = options ? options : {};\n\n super(options);\n\n this.FEATURE_COLLECTION_PARSERS[GMLNS]['featureMember'] = makeArrayPusher(\n this.readFeaturesInternal\n );\n\n /**\n * @type {string}\n */\n this.schemaLocation = options.schemaLocation\n ? options.schemaLocation\n : schemaLocation;\n }\n\n /**\n * @param {Node} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} Flat coordinates.\n */\n readFlatCoordinates(node, objectStack) {\n const s = getAllTextContent(node, false).replace(/^\\s*|\\s*$/g, '');\n const context = /** @type {import(\"../xml.js\").NodeStackItem} */ (\n objectStack[0]\n );\n const containerSrs = context['srsName'];\n let axisOrientation = 'enu';\n if (containerSrs) {\n const proj = getProjection(containerSrs);\n if (proj) {\n axisOrientation = proj.getAxisOrientation();\n }\n }\n const coordsGroups = s.trim().split(/\\s+/);\n const flatCoordinates = [];\n for (let i = 0, ii = coordsGroups.length; i < ii; i++) {\n const coords = coordsGroups[i].split(/,+/);\n const x = parseFloat(coords[0]);\n const y = parseFloat(coords[1]);\n const z = coords.length === 3 ? parseFloat(coords[2]) : 0;\n if (axisOrientation.substr(0, 2) === 'en') {\n flatCoordinates.push(x, y, z);\n } else {\n flatCoordinates.push(y, x, z);\n }\n }\n return flatCoordinates;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {import(\"../extent.js\").Extent|undefined} Envelope.\n */\n readBox(node, objectStack) {\n /** @type {Array} */\n const flatCoordinates = pushParseAndPop(\n [null],\n this.BOX_PARSERS_,\n node,\n objectStack,\n this\n );\n return createOrUpdate(\n flatCoordinates[1][0],\n flatCoordinates[1][1],\n flatCoordinates[1][3],\n flatCoordinates[1][4]\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n innerBoundaryIsParser(node, objectStack) {\n /** @type {Array|undefined} */\n const flatLinearRing = pushParseAndPop(\n undefined,\n this.RING_PARSERS,\n node,\n objectStack,\n this\n );\n if (flatLinearRing) {\n const flatLinearRings =\n /** @type {Array>} */\n (objectStack[objectStack.length - 1]);\n flatLinearRings.push(flatLinearRing);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n outerBoundaryIsParser(node, objectStack) {\n /** @type {Array|undefined} */\n const flatLinearRing = pushParseAndPop(\n undefined,\n this.RING_PARSERS,\n node,\n objectStack,\n this\n );\n if (flatLinearRing) {\n const flatLinearRings =\n /** @type {Array>} */\n (objectStack[objectStack.length - 1]);\n flatLinearRings[0] = flatLinearRing;\n }\n }\n\n /**\n * @const\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string} [nodeName] Node name.\n * @return {Element|undefined} Node.\n * @private\n */\n GEOMETRY_NODE_FACTORY_(value, objectStack, nodeName) {\n const context = objectStack[objectStack.length - 1];\n const multiSurface = context['multiSurface'];\n const surface = context['surface'];\n const multiCurve = context['multiCurve'];\n if (!Array.isArray(value)) {\n nodeName = /** @type {import(\"../geom/Geometry.js\").default} */ (\n value\n ).getType();\n if (nodeName === 'MultiPolygon' && multiSurface === true) {\n nodeName = 'MultiSurface';\n } else if (nodeName === 'Polygon' && surface === true) {\n nodeName = 'Surface';\n } else if (nodeName === 'MultiLineString' && multiCurve === true) {\n nodeName = 'MultiCurve';\n }\n } else {\n nodeName = 'Envelope';\n }\n return createElementNS('http://www.opengis.net/gml', nodeName);\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {Array<*>} objectStack Node stack.\n */\n writeFeatureElement(node, feature, objectStack) {\n const fid = feature.getId();\n if (fid) {\n node.setAttribute('fid', /** @type {string} */ (fid));\n }\n const context = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n const featureNS = context['featureNS'];\n const geometryName = feature.getGeometryName();\n if (!context.serializers) {\n context.serializers = {};\n context.serializers[featureNS] = {};\n }\n const keys = [];\n const values = [];\n if (feature.hasProperties()) {\n const properties = feature.getProperties();\n for (const key in properties) {\n const value = properties[key];\n if (value !== null) {\n keys.push(key);\n values.push(value);\n if (\n key == geometryName ||\n typeof (/** @type {?} */ (value).getSimplifiedGeometry) ===\n 'function'\n ) {\n if (!(key in context.serializers[featureNS])) {\n context.serializers[featureNS][key] = makeChildAppender(\n this.writeGeometryElement,\n this\n );\n }\n } else {\n if (!(key in context.serializers[featureNS])) {\n context.serializers[featureNS][key] =\n makeChildAppender(writeStringTextNode);\n }\n }\n }\n }\n }\n const item = Object.assign({}, context);\n item.node = node;\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n (item),\n context.serializers,\n makeSimpleNodeFactory(undefined, featureNS),\n values,\n objectStack,\n keys\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LineString.js\").default} geometry LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeCurveOrLineString(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const srsName = context['srsName'];\n if (node.nodeName !== 'LineStringSegment' && srsName) {\n node.setAttribute('srsName', srsName);\n }\n if (\n node.nodeName === 'LineString' ||\n node.nodeName === 'LineStringSegment'\n ) {\n const coordinates = this.createCoordinatesNode_(node.namespaceURI);\n node.appendChild(coordinates);\n this.writeCoordinates_(coordinates, geometry, objectStack);\n } else if (node.nodeName === 'Curve') {\n const segments = createElementNS(node.namespaceURI, 'segments');\n node.appendChild(segments);\n this.writeCurveSegments_(segments, geometry, objectStack);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LineString.js\").default} line LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeLineStringOrCurveMember(node, line, objectStack) {\n const child = this.GEOMETRY_NODE_FACTORY_(line, objectStack);\n if (child) {\n node.appendChild(child);\n this.writeCurveOrLineString(child, line, objectStack);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/MultiLineString.js\").default} geometry MultiLineString geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeMultiCurveOrLineString(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n const curve = context['curve'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const lines = geometry.getLineStrings();\n pushSerializeAndPop(\n {node: node, hasZ: hasZ, srsName: srsName, curve: curve},\n this.LINESTRINGORCURVEMEMBER_SERIALIZERS,\n this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_,\n lines,\n objectStack,\n undefined,\n this\n );\n }\n\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/Geometry.js\").default|import(\"../extent.js\").Extent} geometry Geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeGeometryElement(node, geometry, objectStack) {\n const context = /** @type {import(\"./Feature.js\").WriteOptions} */ (\n objectStack[objectStack.length - 1]\n );\n const item = Object.assign({}, context);\n item['node'] = node;\n let value;\n if (Array.isArray(geometry)) {\n value = transformExtentWithOptions(\n /** @type {import(\"../extent.js\").Extent} */ (geometry),\n context\n );\n } else {\n value = transformGeometryWithOptions(\n /** @type {import(\"../geom/Geometry.js\").default} */ (geometry),\n true,\n context\n );\n }\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n (item),\n this.GEOMETRY_SERIALIZERS,\n this.GEOMETRY_NODE_FACTORY_,\n [value],\n objectStack,\n undefined,\n this\n );\n }\n\n /**\n * @param {string} namespaceURI XML namespace.\n * @return {Element} coordinates node.\n * @private\n */\n createCoordinatesNode_(namespaceURI) {\n const coordinates = createElementNS(namespaceURI, 'coordinates');\n coordinates.setAttribute('decimal', '.');\n coordinates.setAttribute('cs', ',');\n coordinates.setAttribute('ts', ' ');\n\n return coordinates;\n }\n\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/LineString.js\").default|import(\"../geom/LinearRing.js\").default} value Geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n writeCoordinates_(node, value, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n // only 2d for simple features profile\n const points = value.getCoordinates();\n const len = points.length;\n const parts = new Array(len);\n for (let i = 0; i < len; ++i) {\n const point = points[i];\n parts[i] = this.getCoords_(point, srsName, hasZ);\n }\n writeStringTextNode(node, parts.join(' '));\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LineString.js\").default} line LineString geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n writeCurveSegments_(node, line, objectStack) {\n const child = createElementNS(node.namespaceURI, 'LineStringSegment');\n node.appendChild(child);\n this.writeCurveOrLineString(child, line, objectStack);\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Polygon.js\").default} geometry Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeSurfaceOrPolygon(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n if (node.nodeName !== 'PolygonPatch' && srsName) {\n node.setAttribute('srsName', srsName);\n }\n if (node.nodeName === 'Polygon' || node.nodeName === 'PolygonPatch') {\n const rings = geometry.getLinearRings();\n pushSerializeAndPop(\n {node: node, hasZ: hasZ, srsName: srsName},\n this.RING_SERIALIZERS,\n this.RING_NODE_FACTORY_,\n rings,\n objectStack,\n undefined,\n this\n );\n } else if (node.nodeName === 'Surface') {\n const patches = createElementNS(node.namespaceURI, 'patches');\n node.appendChild(patches);\n this.writeSurfacePatches_(patches, geometry, objectStack);\n }\n }\n\n /**\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string} [nodeName] Node name.\n * @return {Node} Node.\n * @private\n */\n RING_NODE_FACTORY_(value, objectStack, nodeName) {\n const context = objectStack[objectStack.length - 1];\n const parentNode = context.node;\n const exteriorWritten = context['exteriorWritten'];\n if (exteriorWritten === undefined) {\n context['exteriorWritten'] = true;\n }\n return createElementNS(\n parentNode.namespaceURI,\n exteriorWritten !== undefined ? 'innerBoundaryIs' : 'outerBoundaryIs'\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Polygon.js\").default} polygon Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n * @private\n */\n writeSurfacePatches_(node, polygon, objectStack) {\n const child = createElementNS(node.namespaceURI, 'PolygonPatch');\n node.appendChild(child);\n this.writeSurfaceOrPolygon(child, polygon, objectStack);\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LinearRing.js\").default} ring LinearRing geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeRing(node, ring, objectStack) {\n const linearRing = createElementNS(node.namespaceURI, 'LinearRing');\n node.appendChild(linearRing);\n this.writeLinearRing(linearRing, ring, objectStack);\n }\n\n /**\n * @param {Array} point Point geometry.\n * @param {string} [srsName] Optional srsName\n * @param {boolean} [hasZ] whether the geometry has a Z coordinate (is 3D) or not.\n * @return {string} The coords string.\n * @private\n */\n getCoords_(point, srsName, hasZ) {\n let axisOrientation = 'enu';\n if (srsName) {\n axisOrientation = getProjection(srsName).getAxisOrientation();\n }\n let coords =\n axisOrientation.substr(0, 2) === 'en'\n ? point[0] + ',' + point[1]\n : point[1] + ',' + point[0];\n if (hasZ) {\n // For newly created points, Z can be undefined.\n const z = point[2] || 0;\n coords += ',' + z;\n }\n\n return coords;\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Point.js\").default} geometry Point geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writePoint(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const coordinates = this.createCoordinatesNode_(node.namespaceURI);\n node.appendChild(coordinates);\n const point = geometry.getCoordinates();\n const coord = this.getCoords_(point, srsName, hasZ);\n writeStringTextNode(coordinates, coord);\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/MultiPoint.js\").default} geometry MultiPoint geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeMultiPoint(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const points = geometry.getPoints();\n pushSerializeAndPop(\n {node: node, hasZ: hasZ, srsName: srsName},\n this.POINTMEMBER_SERIALIZERS,\n makeSimpleNodeFactory('pointMember'),\n points,\n objectStack,\n undefined,\n this\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/Point.js\").default} point Point geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writePointMember(node, point, objectStack) {\n const child = createElementNS(node.namespaceURI, 'Point');\n node.appendChild(child);\n this.writePoint(child, point, objectStack);\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/LinearRing.js\").default} geometry LinearRing geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeLinearRing(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const coordinates = this.createCoordinatesNode_(node.namespaceURI);\n node.appendChild(coordinates);\n this.writeCoordinates_(coordinates, geometry, objectStack);\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../geom/MultiPolygon.js\").default} geometry MultiPolygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeMultiSurfaceOrPolygon(node, geometry, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const hasZ = context['hasZ'];\n const srsName = context['srsName'];\n const surface = context['surface'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const polygons = geometry.getPolygons();\n pushSerializeAndPop(\n {node: node, hasZ: hasZ, srsName: srsName, surface: surface},\n this.SURFACEORPOLYGONMEMBER_SERIALIZERS,\n this.MULTIGEOMETRY_MEMBER_NODE_FACTORY_,\n polygons,\n objectStack,\n undefined,\n this\n );\n }\n\n /**\n * @param {Node} node Node.\n * @param {import(\"../geom/Polygon.js\").default} polygon Polygon geometry.\n * @param {Array<*>} objectStack Node stack.\n */\n writeSurfaceOrPolygonMember(node, polygon, objectStack) {\n const child = this.GEOMETRY_NODE_FACTORY_(polygon, objectStack);\n if (child) {\n node.appendChild(child);\n this.writeSurfaceOrPolygon(child, polygon, objectStack);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"../extent.js\").Extent} extent Extent.\n * @param {Array<*>} objectStack Node stack.\n */\n writeEnvelope(node, extent, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const srsName = context['srsName'];\n if (srsName) {\n node.setAttribute('srsName', srsName);\n }\n const keys = ['lowerCorner', 'upperCorner'];\n const values = [extent[0] + ' ' + extent[1], extent[2] + ' ' + extent[3]];\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n ({node: node}),\n this.ENVELOPE_SERIALIZERS,\n OBJECT_PROPERTY_NODE_FACTORY,\n values,\n objectStack,\n keys,\n this\n );\n }\n\n /**\n * @const\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string} [nodeName] Node name.\n * @return {Node|undefined} Node.\n * @private\n */\n MULTIGEOMETRY_MEMBER_NODE_FACTORY_(value, objectStack, nodeName) {\n const parentNode = objectStack[objectStack.length - 1].node;\n return createElementNS(\n 'http://www.opengis.net/gml',\n MULTIGEOMETRY_TO_MEMBER_NODENAME[parentNode.nodeName]\n );\n }\n}\n\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'coordinates': makeReplacer(GML2.prototype.readFlatCoordinates),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.FLAT_LINEAR_RINGS_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'innerBoundaryIs': GML2.prototype.innerBoundaryIsParser,\n 'outerBoundaryIs': GML2.prototype.outerBoundaryIsParser,\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.BOX_PARSERS_ = {\n 'http://www.opengis.net/gml': {\n 'coordinates': makeArrayPusher(GML2.prototype.readFlatCoordinates),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.GEOMETRY_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'Point': makeReplacer(GMLBase.prototype.readPoint),\n 'MultiPoint': makeReplacer(GMLBase.prototype.readMultiPoint),\n 'LineString': makeReplacer(GMLBase.prototype.readLineString),\n 'MultiLineString': makeReplacer(GMLBase.prototype.readMultiLineString),\n 'LinearRing': makeReplacer(GMLBase.prototype.readLinearRing),\n 'Polygon': makeReplacer(GMLBase.prototype.readPolygon),\n 'MultiPolygon': makeReplacer(GMLBase.prototype.readMultiPolygon),\n 'Box': makeReplacer(GML2.prototype.readBox),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.GEOMETRY_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'Curve': makeChildAppender(GML2.prototype.writeCurveOrLineString),\n 'MultiCurve': makeChildAppender(GML2.prototype.writeMultiCurveOrLineString),\n 'Point': makeChildAppender(GML2.prototype.writePoint),\n 'MultiPoint': makeChildAppender(GML2.prototype.writeMultiPoint),\n 'LineString': makeChildAppender(GML2.prototype.writeCurveOrLineString),\n 'MultiLineString': makeChildAppender(\n GML2.prototype.writeMultiCurveOrLineString\n ),\n 'LinearRing': makeChildAppender(GML2.prototype.writeLinearRing),\n 'Polygon': makeChildAppender(GML2.prototype.writeSurfaceOrPolygon),\n 'MultiPolygon': makeChildAppender(\n GML2.prototype.writeMultiSurfaceOrPolygon\n ),\n 'Surface': makeChildAppender(GML2.prototype.writeSurfaceOrPolygon),\n 'MultiSurface': makeChildAppender(\n GML2.prototype.writeMultiSurfaceOrPolygon\n ),\n 'Envelope': makeChildAppender(GML2.prototype.writeEnvelope),\n },\n};\n\n/**\n * @type {Object>}\n */\nGML2.prototype.LINESTRINGORCURVEMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'lineStringMember': makeChildAppender(\n GML2.prototype.writeLineStringOrCurveMember\n ),\n 'curveMember': makeChildAppender(\n GML2.prototype.writeLineStringOrCurveMember\n ),\n },\n};\n\n/**\n * @type {Object>}\n */\nGML2.prototype.RING_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'outerBoundaryIs': makeChildAppender(GML2.prototype.writeRing),\n 'innerBoundaryIs': makeChildAppender(GML2.prototype.writeRing),\n },\n};\n\n/**\n * @type {Object>}\n */\nGML2.prototype.POINTMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'pointMember': makeChildAppender(GML2.prototype.writePointMember),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGML2.prototype.SURFACEORPOLYGONMEMBER_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'surfaceMember': makeChildAppender(\n GML2.prototype.writeSurfaceOrPolygonMember\n ),\n 'polygonMember': makeChildAppender(\n GML2.prototype.writeSurfaceOrPolygonMember\n ),\n },\n};\n\n/**\n * @type {Object>}\n */\nGML2.prototype.ENVELOPE_SERIALIZERS = {\n 'http://www.opengis.net/gml': {\n 'lowerCorner': makeChildAppender(writeStringTextNode),\n 'upperCorner': makeChildAppender(writeStringTextNode),\n },\n};\n\nexport default GML2;\n","/**\n * @module ol/format/GMLBase\n */\n// FIXME Envelopes should not be treated as geometries! readEnvelope_ is part\n// of GEOMETRY_PARSERS_ and methods using GEOMETRY_PARSERS_ do not expect\n// envelopes/extents, only geometries!\nimport Feature from '../Feature.js';\nimport Geometry from '../geom/Geometry.js';\nimport LineString from '../geom/LineString.js';\nimport LinearRing from '../geom/LinearRing.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport XMLFeature from './XMLFeature.js';\nimport {extend} from '../array.js';\nimport {\n getAllTextContent,\n getAttributeNS,\n makeArrayPusher,\n makeReplacer,\n parseNode,\n pushParseAndPop,\n} from '../xml.js';\nimport {get as getProjection} from '../proj.js';\nimport {\n transformExtentWithOptions,\n transformGeometryWithOptions,\n} from './Feature.js';\n\n/**\n * @const\n * @type {string}\n */\nexport const GMLNS = 'http://www.opengis.net/gml';\n\n/**\n * A regular expression that matches if a string only contains whitespace\n * characters. It will e.g. match `''`, `' '`, `'\\n'` etc.\n *\n * @const\n * @type {RegExp}\n */\nconst ONLY_WHITESPACE_RE = /^\\s*$/;\n\n/**\n * @typedef {Object} Options\n * @property {Object|string} [featureNS] Feature\n * namespace. If not defined will be derived from GML. If multiple\n * feature types have been configured which come from different feature\n * namespaces, this will be an object with the keys being the prefixes used\n * in the entries of featureType array. The values of the object will be the\n * feature namespaces themselves. So for instance there might be a featureType\n * item `topp:states` in the `featureType` array and then there will be a key\n * `topp` in the featureNS object with value `http://www.openplans.org/topp`.\n * @property {Array|string} [featureType] Feature type(s) to parse.\n * If multiple feature types need to be configured\n * which come from different feature namespaces, `featureNS` will be an object\n * with the keys being the prefixes used in the entries of featureType array.\n * The values of the object will be the feature namespaces themselves.\n * So for instance there might be a featureType item `topp:states` and then\n * there will be a key named `topp` in the featureNS object with value\n * `http://www.openplans.org/topp`.\n * @property {string} [srsName] srsName to use when writing geometries.\n * @property {boolean} [surface=false] Write gml:Surface instead of gml:Polygon\n * elements. This also affects the elements in multi-part geometries.\n * @property {boolean} [curve=false] Write gml:Curve instead of gml:LineString\n * elements. This also affects the elements in multi-part geometries.\n * @property {boolean} [multiCurve=true] Write gml:MultiCurve instead of gml:MultiLineString.\n * Since the latter is deprecated in GML 3.\n * @property {boolean} [multiSurface=true] Write gml:multiSurface instead of\n * gml:MultiPolygon. Since the latter is deprecated in GML 3.\n * @property {string} [schemaLocation] Optional schemaLocation to use when\n * writing out the GML, this will override the default provided.\n * @property {boolean} [hasZ=false] If coordinates have a Z value.\n */\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Feature base format for reading and writing data in the GML format.\n * This class cannot be instantiated, it contains only base content that\n * is shared with versioned format classes GML2 and GML3.\n *\n * @abstract\n * @api\n */\nclass GMLBase extends XMLFeature {\n /**\n * @param {Options} [options] Optional configuration object.\n */\n constructor(options) {\n super();\n\n options = options ? options : {};\n\n /**\n * @protected\n * @type {Array|string|undefined}\n */\n this.featureType = options.featureType;\n\n /**\n * @protected\n * @type {Object|string|undefined}\n */\n this.featureNS = options.featureNS;\n\n /**\n * @protected\n * @type {string|undefined}\n */\n this.srsName = options.srsName;\n\n /**\n * @protected\n * @type {string}\n */\n this.schemaLocation = '';\n\n /**\n * @type {Object>}\n */\n this.FEATURE_COLLECTION_PARSERS = {};\n this.FEATURE_COLLECTION_PARSERS[this.namespace] = {\n 'featureMember': makeArrayPusher(this.readFeaturesInternal),\n 'featureMembers': makeReplacer(this.readFeaturesInternal),\n };\n\n this.supportedMediaTypes = ['application/gml+xml'];\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array | undefined} Features.\n */\n readFeaturesInternal(node, objectStack) {\n const localName = node.localName;\n let features = null;\n if (localName == 'FeatureCollection') {\n features = pushParseAndPop(\n [],\n this.FEATURE_COLLECTION_PARSERS,\n node,\n objectStack,\n this\n );\n } else if (\n localName == 'featureMembers' ||\n localName == 'featureMember' ||\n localName == 'member'\n ) {\n const context = objectStack[0];\n let featureType = context['featureType'];\n let featureNS = context['featureNS'];\n const prefix = 'p';\n const defaultPrefix = 'p0';\n if (!featureType && node.childNodes) {\n (featureType = []), (featureNS = {});\n for (let i = 0, ii = node.childNodes.length; i < ii; ++i) {\n const child = /** @type {Element} */ (node.childNodes[i]);\n if (child.nodeType === 1) {\n const ft = child.nodeName.split(':').pop();\n if (!featureType.includes(ft)) {\n let key = '';\n let count = 0;\n const uri = child.namespaceURI;\n for (const candidate in featureNS) {\n if (featureNS[candidate] === uri) {\n key = candidate;\n break;\n }\n ++count;\n }\n if (!key) {\n key = prefix + count;\n featureNS[key] = uri;\n }\n featureType.push(key + ':' + ft);\n }\n }\n }\n if (localName != 'featureMember') {\n // recheck featureType for each featureMember\n context['featureType'] = featureType;\n context['featureNS'] = featureNS;\n }\n }\n if (typeof featureNS === 'string') {\n const ns = featureNS;\n featureNS = {};\n featureNS[defaultPrefix] = ns;\n }\n /** @type {Object>} */\n const parsersNS = {};\n const featureTypes = Array.isArray(featureType)\n ? featureType\n : [featureType];\n for (const p in featureNS) {\n /** @type {Object} */\n const parsers = {};\n for (let i = 0, ii = featureTypes.length; i < ii; ++i) {\n const featurePrefix = featureTypes[i].includes(':')\n ? featureTypes[i].split(':')[0]\n : defaultPrefix;\n if (featurePrefix === p) {\n parsers[featureTypes[i].split(':').pop()] =\n localName == 'featureMembers'\n ? makeArrayPusher(this.readFeatureElement, this)\n : makeReplacer(this.readFeatureElement, this);\n }\n }\n parsersNS[featureNS[p]] = parsers;\n }\n if (localName == 'featureMember' || localName == 'member') {\n features = pushParseAndPop(undefined, parsersNS, node, objectStack);\n } else {\n features = pushParseAndPop([], parsersNS, node, objectStack);\n }\n }\n if (features === null) {\n features = [];\n }\n return features;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {import(\"../geom/Geometry.js\").default|import(\"../extent.js\").Extent|undefined} Geometry.\n */\n readGeometryOrExtent(node, objectStack) {\n const context = /** @type {Object} */ (objectStack[0]);\n context['srsName'] = node.firstElementChild.getAttribute('srsName');\n context['srsDimension'] =\n node.firstElementChild.getAttribute('srsDimension');\n return pushParseAndPop(\n null,\n this.GEOMETRY_PARSERS,\n node,\n objectStack,\n this\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {import(\"../extent.js\").Extent|undefined} Geometry.\n */\n readExtentElement(node, objectStack) {\n const context = /** @type {Object} */ (objectStack[0]);\n const extent = /** @type {import(\"../extent.js\").Extent} */ (\n this.readGeometryOrExtent(node, objectStack)\n );\n return extent ? transformExtentWithOptions(extent, context) : undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {import(\"../geom/Geometry.js\").default|undefined} Geometry.\n */\n readGeometryElement(node, objectStack) {\n const context = /** @type {Object} */ (objectStack[0]);\n const geometry = /** @type {import(\"../geom/Geometry.js\").default} */ (\n this.readGeometryOrExtent(node, objectStack)\n );\n return geometry\n ? transformGeometryWithOptions(geometry, false, context)\n : undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @param {boolean} asFeature whether result should be wrapped as a feature.\n * @return {Feature|Object} Feature\n */\n readFeatureElementInternal(node, objectStack, asFeature) {\n let geometryName;\n const values = {};\n for (let n = node.firstElementChild; n; n = n.nextElementSibling) {\n let value;\n const localName = n.localName;\n // first, check if it is simple attribute\n if (\n n.childNodes.length === 0 ||\n (n.childNodes.length === 1 &&\n (n.firstChild.nodeType === 3 || n.firstChild.nodeType === 4))\n ) {\n value = getAllTextContent(n, false);\n if (ONLY_WHITESPACE_RE.test(value)) {\n value = undefined;\n }\n } else {\n if (asFeature) {\n //if feature, try it as a geometry or extent\n value =\n localName === 'boundedBy'\n ? this.readExtentElement(n, objectStack)\n : this.readGeometryElement(n, objectStack);\n }\n if (!value) {\n //if not a geometry or not a feature, treat it as a complex attribute\n value = this.readFeatureElementInternal(n, objectStack, false);\n } else if (localName !== 'boundedBy') {\n // boundedBy is an extent and must not be considered as a geometry\n geometryName = localName;\n }\n }\n\n const len = n.attributes.length;\n if (len > 0 && !(value instanceof Geometry)) {\n value = {_content_: value};\n for (let i = 0; i < len; i++) {\n const attName = n.attributes[i].name;\n value[attName] = n.attributes[i].value;\n }\n }\n\n if (values[localName]) {\n if (!(values[localName] instanceof Array)) {\n values[localName] = [values[localName]];\n }\n values[localName].push(value);\n } else {\n values[localName] = value;\n }\n }\n if (!asFeature) {\n return values;\n }\n const feature = new Feature(values);\n if (geometryName) {\n feature.setGeometryName(geometryName);\n }\n const fid =\n node.getAttribute('fid') || getAttributeNS(node, this.namespace, 'id');\n if (fid) {\n feature.setId(fid);\n }\n return feature;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Feature} Feature.\n */\n readFeatureElement(node, objectStack) {\n return this.readFeatureElementInternal(node, objectStack, true);\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Point|undefined} Point.\n */\n readPoint(node, objectStack) {\n const flatCoordinates = this.readFlatCoordinatesFromNode(node, objectStack);\n if (flatCoordinates) {\n return new Point(flatCoordinates, 'XYZ');\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {MultiPoint|undefined} MultiPoint.\n */\n readMultiPoint(node, objectStack) {\n /** @type {Array>} */\n const coordinates = pushParseAndPop(\n [],\n this.MULTIPOINT_PARSERS,\n node,\n objectStack,\n this\n );\n if (coordinates) {\n return new MultiPoint(coordinates);\n }\n return undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {MultiLineString|undefined} MultiLineString.\n */\n readMultiLineString(node, objectStack) {\n /** @type {Array} */\n const lineStrings = pushParseAndPop(\n [],\n this.MULTILINESTRING_PARSERS,\n node,\n objectStack,\n this\n );\n if (lineStrings) {\n return new MultiLineString(lineStrings);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {MultiPolygon|undefined} MultiPolygon.\n */\n readMultiPolygon(node, objectStack) {\n /** @type {Array} */\n const polygons = pushParseAndPop(\n [],\n this.MULTIPOLYGON_PARSERS,\n node,\n objectStack,\n this\n );\n if (polygons) {\n return new MultiPolygon(polygons);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n pointMemberParser(node, objectStack) {\n parseNode(this.POINTMEMBER_PARSERS, node, objectStack, this);\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n lineStringMemberParser(node, objectStack) {\n parseNode(this.LINESTRINGMEMBER_PARSERS, node, objectStack, this);\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\n polygonMemberParser(node, objectStack) {\n parseNode(this.POLYGONMEMBER_PARSERS, node, objectStack, this);\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {LineString|undefined} LineString.\n */\n readLineString(node, objectStack) {\n const flatCoordinates = this.readFlatCoordinatesFromNode(node, objectStack);\n if (flatCoordinates) {\n const lineString = new LineString(flatCoordinates, 'XYZ');\n return lineString;\n }\n return undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array|undefined} LinearRing flat coordinates.\n */\n readFlatLinearRing(node, objectStack) {\n const ring = pushParseAndPop(\n null,\n this.GEOMETRY_FLAT_COORDINATES_PARSERS,\n node,\n objectStack,\n this\n );\n if (ring) {\n return ring;\n }\n return undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {LinearRing|undefined} LinearRing.\n */\n readLinearRing(node, objectStack) {\n const flatCoordinates = this.readFlatCoordinatesFromNode(node, objectStack);\n if (flatCoordinates) {\n return new LinearRing(flatCoordinates, 'XYZ');\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Polygon|undefined} Polygon.\n */\n readPolygon(node, objectStack) {\n /** @type {Array>} */\n const flatLinearRings = pushParseAndPop(\n [null],\n this.FLAT_LINEAR_RINGS_PARSERS,\n node,\n objectStack,\n this\n );\n if (flatLinearRings && flatLinearRings[0]) {\n const flatCoordinates = flatLinearRings[0];\n const ends = [flatCoordinates.length];\n let i, ii;\n for (i = 1, ii = flatLinearRings.length; i < ii; ++i) {\n extend(flatCoordinates, flatLinearRings[i]);\n ends.push(flatCoordinates.length);\n }\n return new Polygon(flatCoordinates, 'XYZ', ends);\n }\n return undefined;\n }\n\n /**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Array} Flat coordinates.\n */\n readFlatCoordinatesFromNode(node, objectStack) {\n return pushParseAndPop(\n null,\n this.GEOMETRY_FLAT_COORDINATES_PARSERS,\n node,\n objectStack,\n this\n );\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n readGeometryFromNode(node, options) {\n const geometry = this.readGeometryElement(node, [\n this.getReadOptions(node, options ? options : {}),\n ]);\n return geometry ? geometry : null;\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @return {Array} Features.\n */\n readFeaturesFromNode(node, options) {\n const internalOptions = {\n featureType: this.featureType,\n featureNS: this.featureNS,\n };\n if (internalOptions) {\n Object.assign(internalOptions, this.getReadOptions(node, options));\n }\n const features = this.readFeaturesInternal(node, [internalOptions]);\n return features || [];\n }\n\n /**\n * @param {Element} node Node.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n readProjectionFromNode(node) {\n return getProjection(\n this.srsName\n ? this.srsName\n : node.firstElementChild.getAttribute('srsName')\n );\n }\n}\n\nGMLBase.prototype.namespace = GMLNS;\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.FLAT_LINEAR_RINGS_PARSERS = {\n 'http://www.opengis.net/gml': {},\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.GEOMETRY_FLAT_COORDINATES_PARSERS = {\n 'http://www.opengis.net/gml': {},\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.GEOMETRY_PARSERS = {\n 'http://www.opengis.net/gml': {},\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.MULTIPOINT_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'pointMember': makeArrayPusher(GMLBase.prototype.pointMemberParser),\n 'pointMembers': makeArrayPusher(GMLBase.prototype.pointMemberParser),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.MULTILINESTRING_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'lineStringMember': makeArrayPusher(\n GMLBase.prototype.lineStringMemberParser\n ),\n 'lineStringMembers': makeArrayPusher(\n GMLBase.prototype.lineStringMemberParser\n ),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.MULTIPOLYGON_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'polygonMember': makeArrayPusher(GMLBase.prototype.polygonMemberParser),\n 'polygonMembers': makeArrayPusher(GMLBase.prototype.polygonMemberParser),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.POINTMEMBER_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'Point': makeArrayPusher(GMLBase.prototype.readFlatCoordinatesFromNode),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.LINESTRINGMEMBER_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'LineString': makeArrayPusher(GMLBase.prototype.readLineString),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.POLYGONMEMBER_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'Polygon': makeArrayPusher(GMLBase.prototype.readPolygon),\n },\n};\n\n/**\n * @const\n * @type {Object>}\n */\nGMLBase.prototype.RING_PARSERS = {\n 'http://www.opengis.net/gml': {\n 'LinearRing': makeReplacer(GMLBase.prototype.readFlatLinearRing),\n },\n};\n\nexport default GMLBase;\n","/**\n * @module ol/format/GPX\n */\nimport Feature from '../Feature.js';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport Point from '../geom/Point.js';\nimport XMLFeature from './XMLFeature.js';\nimport {\n OBJECT_PROPERTY_NODE_FACTORY,\n XML_SCHEMA_INSTANCE_URI,\n createElementNS,\n makeArrayPusher,\n makeArraySerializer,\n makeChildAppender,\n makeObjectPropertySetter,\n makeSequence,\n makeSimpleNodeFactory,\n makeStructureNS,\n parseNode,\n pushParseAndPop,\n pushSerializeAndPop,\n} from '../xml.js';\nimport {get as getProjection} from '../proj.js';\nimport {\n readDateTime,\n readDecimal,\n readPositiveInteger,\n readString,\n writeDateTimeTextNode,\n writeDecimalTextNode,\n writeNonNegativeIntegerTextNode,\n writeStringTextNode,\n} from './xsd.js';\nimport {transformGeometryWithOptions} from './Feature.js';\n\n/**\n * @const\n * @type {Array}\n */\nconst NAMESPACE_URIS = [\n null,\n 'http://www.topografix.com/GPX/1/0',\n 'http://www.topografix.com/GPX/1/1',\n];\n\n/**\n * @const\n * @type {string}\n */\nconst SCHEMA_LOCATION =\n 'http://www.topografix.com/GPX/1/1 ' +\n 'http://www.topografix.com/GPX/1/1/gpx.xsd';\n\n/**\n * @const\n * @type {Object): (Feature|undefined)>}\n */\nconst FEATURE_READER = {\n 'rte': readRte,\n 'trk': readTrk,\n 'wpt': readWpt,\n};\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst GPX_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'rte': makeArrayPusher(readRte),\n 'trk': makeArrayPusher(readTrk),\n 'wpt': makeArrayPusher(readWpt),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst LINK_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'text': makeObjectPropertySetter(readString, 'linkText'),\n 'type': makeObjectPropertySetter(readString, 'linkType'),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst GPX_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'rte': makeChildAppender(writeRte),\n 'trk': makeChildAppender(writeTrk),\n 'wpt': makeChildAppender(writeWpt),\n});\n\n/**\n * @typedef {Object} Options\n * @property {function(Feature, Node):void} [readExtensions] Callback function\n * to process `extensions` nodes. To prevent memory leaks, this callback function must\n * not store any references to the node. Note that the `extensions`\n * node is not allowed in GPX 1.0. Moreover, only `extensions`\n * nodes from `wpt`, `rte` and `trk` can be processed, as those are\n * directly mapped to a feature.\n */\n\n/**\n * @typedef {Object} LayoutOptions\n * @property {boolean} [hasZ] HasZ.\n * @property {boolean} [hasM] HasM.\n */\n\n/**\n * @classdesc\n * Feature format for reading and writing data in the GPX format.\n *\n * Note that {@link module:ol/format/GPX~GPX#readFeature} only reads the first\n * feature of the source.\n *\n * When reading, routes (``) are converted into LineString geometries, and\n * tracks (``) into MultiLineString. Any properties on route and track\n * waypoints are ignored.\n *\n * When writing, LineString geometries are output as routes (``), and\n * MultiLineString as tracks (``).\n *\n * @api\n */\nclass GPX extends XMLFeature {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n options = options ? options : {};\n\n /**\n * @type {import(\"../proj/Projection.js\").default}\n */\n this.dataProjection = getProjection('EPSG:4326');\n\n /**\n * @type {function(Feature, Node): void|undefined}\n * @private\n */\n this.readExtensions_ = options.readExtensions;\n }\n\n /**\n * @param {Array} features List of features.\n * @private\n */\n handleReadExtensions_(features) {\n if (!features) {\n features = [];\n }\n for (let i = 0, ii = features.length; i < ii; ++i) {\n const feature = features[i];\n if (this.readExtensions_) {\n const extensionsNode = feature.get('extensionsNode_') || null;\n this.readExtensions_(feature, extensionsNode);\n }\n feature.set('extensionsNode_', undefined);\n }\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @return {import(\"../Feature.js\").default} Feature.\n */\n readFeatureFromNode(node, options) {\n if (!NAMESPACE_URIS.includes(node.namespaceURI)) {\n return null;\n }\n const featureReader = FEATURE_READER[node.localName];\n if (!featureReader) {\n return null;\n }\n const feature = featureReader(node, [this.getReadOptions(node, options)]);\n if (!feature) {\n return null;\n }\n this.handleReadExtensions_([feature]);\n return feature;\n }\n\n /**\n * @param {Element} node Node.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Options.\n * @return {Array} Features.\n */\n readFeaturesFromNode(node, options) {\n if (!NAMESPACE_URIS.includes(node.namespaceURI)) {\n return [];\n }\n if (node.localName == 'gpx') {\n /** @type {Array} */\n const features = pushParseAndPop([], GPX_PARSERS, node, [\n this.getReadOptions(node, options),\n ]);\n if (features) {\n this.handleReadExtensions_(features);\n return features;\n }\n return [];\n }\n return [];\n }\n\n /**\n * Encode an array of features in the GPX format as an XML node.\n * LineString geometries are output as routes (``), and MultiLineString\n * as tracks (``).\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Options.\n * @return {Node} Node.\n * @api\n */\n writeFeaturesNode(features, options) {\n options = this.adaptOptions(options);\n //FIXME Serialize metadata\n const gpx = createElementNS('http://www.topografix.com/GPX/1/1', 'gpx');\n const xmlnsUri = 'http://www.w3.org/2000/xmlns/';\n gpx.setAttributeNS(xmlnsUri, 'xmlns:xsi', XML_SCHEMA_INSTANCE_URI);\n gpx.setAttributeNS(\n XML_SCHEMA_INSTANCE_URI,\n 'xsi:schemaLocation',\n SCHEMA_LOCATION\n );\n gpx.setAttribute('version', '1.1');\n gpx.setAttribute('creator', 'OpenLayers');\n\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n ({node: gpx}),\n GPX_SERIALIZERS,\n GPX_NODE_FACTORY,\n features,\n [options]\n );\n return gpx;\n }\n}\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst RTE_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'name': makeObjectPropertySetter(readString),\n 'cmt': makeObjectPropertySetter(readString),\n 'desc': makeObjectPropertySetter(readString),\n 'src': makeObjectPropertySetter(readString),\n 'link': parseLink,\n 'number': makeObjectPropertySetter(readPositiveInteger),\n 'extensions': parseExtensions,\n 'type': makeObjectPropertySetter(readString),\n 'rtept': parseRtePt,\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst RTEPT_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'ele': makeObjectPropertySetter(readDecimal),\n 'time': makeObjectPropertySetter(readDateTime),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst TRK_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'name': makeObjectPropertySetter(readString),\n 'cmt': makeObjectPropertySetter(readString),\n 'desc': makeObjectPropertySetter(readString),\n 'src': makeObjectPropertySetter(readString),\n 'link': parseLink,\n 'number': makeObjectPropertySetter(readPositiveInteger),\n 'type': makeObjectPropertySetter(readString),\n 'extensions': parseExtensions,\n 'trkseg': parseTrkSeg,\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst TRKSEG_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'trkpt': parseTrkPt,\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst TRKPT_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'ele': makeObjectPropertySetter(readDecimal),\n 'time': makeObjectPropertySetter(readDateTime),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst WPT_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'ele': makeObjectPropertySetter(readDecimal),\n 'time': makeObjectPropertySetter(readDateTime),\n 'magvar': makeObjectPropertySetter(readDecimal),\n 'geoidheight': makeObjectPropertySetter(readDecimal),\n 'name': makeObjectPropertySetter(readString),\n 'cmt': makeObjectPropertySetter(readString),\n 'desc': makeObjectPropertySetter(readString),\n 'src': makeObjectPropertySetter(readString),\n 'link': parseLink,\n 'sym': makeObjectPropertySetter(readString),\n 'type': makeObjectPropertySetter(readString),\n 'fix': makeObjectPropertySetter(readString),\n 'sat': makeObjectPropertySetter(readPositiveInteger),\n 'hdop': makeObjectPropertySetter(readDecimal),\n 'vdop': makeObjectPropertySetter(readDecimal),\n 'pdop': makeObjectPropertySetter(readDecimal),\n 'ageofdgpsdata': makeObjectPropertySetter(readDecimal),\n 'dgpsid': makeObjectPropertySetter(readPositiveInteger),\n 'extensions': parseExtensions,\n});\n\n/**\n * @const\n * @type {Array}\n */\nconst LINK_SEQUENCE = ['text', 'type'];\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst LINK_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'text': makeChildAppender(writeStringTextNode),\n 'type': makeChildAppender(writeStringTextNode),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst RTE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [\n 'name',\n 'cmt',\n 'desc',\n 'src',\n 'link',\n 'number',\n 'type',\n 'rtept',\n]);\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst RTE_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'name': makeChildAppender(writeStringTextNode),\n 'cmt': makeChildAppender(writeStringTextNode),\n 'desc': makeChildAppender(writeStringTextNode),\n 'src': makeChildAppender(writeStringTextNode),\n 'link': makeChildAppender(writeLink),\n 'number': makeChildAppender(writeNonNegativeIntegerTextNode),\n 'type': makeChildAppender(writeStringTextNode),\n 'rtept': makeArraySerializer(makeChildAppender(writeWptType)),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst RTEPT_TYPE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, ['ele', 'time']);\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst TRK_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [\n 'name',\n 'cmt',\n 'desc',\n 'src',\n 'link',\n 'number',\n 'type',\n 'trkseg',\n]);\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst TRK_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'name': makeChildAppender(writeStringTextNode),\n 'cmt': makeChildAppender(writeStringTextNode),\n 'desc': makeChildAppender(writeStringTextNode),\n 'src': makeChildAppender(writeStringTextNode),\n 'link': makeChildAppender(writeLink),\n 'number': makeChildAppender(writeNonNegativeIntegerTextNode),\n 'type': makeChildAppender(writeStringTextNode),\n 'trkseg': makeArraySerializer(makeChildAppender(writeTrkSeg)),\n});\n\n/**\n * @const\n * @type {function(*, Array<*>, string=): (Node|undefined)}\n */\nconst TRKSEG_NODE_FACTORY = makeSimpleNodeFactory('trkpt');\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst TRKSEG_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'trkpt': makeChildAppender(writeWptType),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst WPT_TYPE_SEQUENCE = makeStructureNS(NAMESPACE_URIS, [\n 'ele',\n 'time',\n 'magvar',\n 'geoidheight',\n 'name',\n 'cmt',\n 'desc',\n 'src',\n 'link',\n 'sym',\n 'type',\n 'fix',\n 'sat',\n 'hdop',\n 'vdop',\n 'pdop',\n 'ageofdgpsdata',\n 'dgpsid',\n]);\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst WPT_TYPE_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'ele': makeChildAppender(writeDecimalTextNode),\n 'time': makeChildAppender(writeDateTimeTextNode),\n 'magvar': makeChildAppender(writeDecimalTextNode),\n 'geoidheight': makeChildAppender(writeDecimalTextNode),\n 'name': makeChildAppender(writeStringTextNode),\n 'cmt': makeChildAppender(writeStringTextNode),\n 'desc': makeChildAppender(writeStringTextNode),\n 'src': makeChildAppender(writeStringTextNode),\n 'link': makeChildAppender(writeLink),\n 'sym': makeChildAppender(writeStringTextNode),\n 'type': makeChildAppender(writeStringTextNode),\n 'fix': makeChildAppender(writeStringTextNode),\n 'sat': makeChildAppender(writeNonNegativeIntegerTextNode),\n 'hdop': makeChildAppender(writeDecimalTextNode),\n 'vdop': makeChildAppender(writeDecimalTextNode),\n 'pdop': makeChildAppender(writeDecimalTextNode),\n 'ageofdgpsdata': makeChildAppender(writeDecimalTextNode),\n 'dgpsid': makeChildAppender(writeNonNegativeIntegerTextNode),\n});\n\n/**\n * @const\n * @type {Object}\n */\nconst GEOMETRY_TYPE_TO_NODENAME = {\n 'Point': 'wpt',\n 'LineString': 'rte',\n 'MultiLineString': 'trk',\n};\n\n/**\n * @param {*} value Value.\n * @param {Array<*>} objectStack Object stack.\n * @param {string} [nodeName] Node name.\n * @return {Node|undefined} Node.\n */\nfunction GPX_NODE_FACTORY(value, objectStack, nodeName) {\n const geometry = /** @type {Feature} */ (value).getGeometry();\n if (geometry) {\n const nodeName = GEOMETRY_TYPE_TO_NODENAME[geometry.getType()];\n if (nodeName) {\n const parentNode = objectStack[objectStack.length - 1].node;\n return createElementNS(parentNode.namespaceURI, nodeName);\n }\n }\n}\n\n/**\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {LayoutOptions} layoutOptions Layout options.\n * @param {Element} node Node.\n * @param {!Object} values Values.\n * @return {Array} Flat coordinates.\n */\nfunction appendCoordinate(flatCoordinates, layoutOptions, node, values) {\n flatCoordinates.push(\n parseFloat(node.getAttribute('lon')),\n parseFloat(node.getAttribute('lat'))\n );\n if ('ele' in values) {\n flatCoordinates.push(/** @type {number} */ (values['ele']));\n delete values['ele'];\n layoutOptions.hasZ = true;\n } else {\n flatCoordinates.push(0);\n }\n if ('time' in values) {\n flatCoordinates.push(/** @type {number} */ (values['time']));\n delete values['time'];\n layoutOptions.hasM = true;\n } else {\n flatCoordinates.push(0);\n }\n return flatCoordinates;\n}\n\n/**\n * Choose GeometryLayout based on flags in layoutOptions and adjust flatCoordinates\n * and ends arrays by shrinking them accordingly (removing unused zero entries).\n *\n * @param {LayoutOptions} layoutOptions Layout options.\n * @param {Array} flatCoordinates Flat coordinates.\n * @param {Array} [ends] Ends.\n * @return {import(\"../geom/Geometry.js\").GeometryLayout} Layout.\n */\nfunction applyLayoutOptions(layoutOptions, flatCoordinates, ends) {\n /** @type {import(\"../geom/Geometry.js\").GeometryLayout} */\n let layout = 'XY';\n let stride = 2;\n if (layoutOptions.hasZ && layoutOptions.hasM) {\n layout = 'XYZM';\n stride = 4;\n } else if (layoutOptions.hasZ) {\n layout = 'XYZ';\n stride = 3;\n } else if (layoutOptions.hasM) {\n layout = 'XYM';\n stride = 3;\n }\n if (stride !== 4) {\n for (let i = 0, ii = flatCoordinates.length / 4; i < ii; i++) {\n flatCoordinates[i * stride] = flatCoordinates[i * 4];\n flatCoordinates[i * stride + 1] = flatCoordinates[i * 4 + 1];\n if (layoutOptions.hasZ) {\n flatCoordinates[i * stride + 2] = flatCoordinates[i * 4 + 2];\n }\n if (layoutOptions.hasM) {\n flatCoordinates[i * stride + 2] = flatCoordinates[i * 4 + 3];\n }\n }\n flatCoordinates.length = (flatCoordinates.length / 4) * stride;\n if (ends) {\n for (let i = 0, ii = ends.length; i < ii; i++) {\n ends[i] = (ends[i] / 4) * stride;\n }\n }\n }\n return layout;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseLink(node, objectStack) {\n const values = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n const href = node.getAttribute('href');\n if (href !== null) {\n values['link'] = href;\n }\n parseNode(LINK_PARSERS, node, objectStack);\n}\n\n/**\n * @param {Node} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseExtensions(node, objectStack) {\n const values = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n values['extensionsNode_'] = node;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseRtePt(node, objectStack) {\n const values = pushParseAndPop({}, RTEPT_PARSERS, node, objectStack);\n if (values) {\n const rteValues = /** @type {!Object} */ (\n objectStack[objectStack.length - 1]\n );\n const flatCoordinates = /** @type {Array} */ (\n rteValues['flatCoordinates']\n );\n const layoutOptions = /** @type {LayoutOptions} */ (\n rteValues['layoutOptions']\n );\n appendCoordinate(flatCoordinates, layoutOptions, node, values);\n }\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseTrkPt(node, objectStack) {\n const values = pushParseAndPop({}, TRKPT_PARSERS, node, objectStack);\n if (values) {\n const trkValues = /** @type {!Object} */ (\n objectStack[objectStack.length - 1]\n );\n const flatCoordinates = /** @type {Array} */ (\n trkValues['flatCoordinates']\n );\n const layoutOptions = /** @type {LayoutOptions} */ (\n trkValues['layoutOptions']\n );\n appendCoordinate(flatCoordinates, layoutOptions, node, values);\n }\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction parseTrkSeg(node, objectStack) {\n const values = /** @type {Object} */ (objectStack[objectStack.length - 1]);\n parseNode(TRKSEG_PARSERS, node, objectStack);\n const flatCoordinates =\n /** @type {Array} */\n (values['flatCoordinates']);\n const ends = /** @type {Array} */ (values['ends']);\n ends.push(flatCoordinates.length);\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Feature|undefined} Track.\n */\nfunction readRte(node, objectStack) {\n const options = /** @type {import(\"./Feature.js\").ReadOptions} */ (\n objectStack[0]\n );\n const values = pushParseAndPop(\n {\n 'flatCoordinates': [],\n 'layoutOptions': {},\n },\n RTE_PARSERS,\n node,\n objectStack\n );\n if (!values) {\n return undefined;\n }\n const flatCoordinates =\n /** @type {Array} */\n (values['flatCoordinates']);\n delete values['flatCoordinates'];\n const layoutOptions = /** @type {LayoutOptions} */ (values['layoutOptions']);\n delete values['layoutOptions'];\n const layout = applyLayoutOptions(layoutOptions, flatCoordinates);\n const geometry = new LineString(flatCoordinates, layout);\n transformGeometryWithOptions(geometry, false, options);\n const feature = new Feature(geometry);\n feature.setProperties(values, true);\n return feature;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Feature|undefined} Track.\n */\nfunction readTrk(node, objectStack) {\n const options = /** @type {import(\"./Feature.js\").ReadOptions} */ (\n objectStack[0]\n );\n const values = pushParseAndPop(\n {\n 'flatCoordinates': [],\n 'ends': [],\n 'layoutOptions': {},\n },\n TRK_PARSERS,\n node,\n objectStack\n );\n if (!values) {\n return undefined;\n }\n const flatCoordinates =\n /** @type {Array} */\n (values['flatCoordinates']);\n delete values['flatCoordinates'];\n const ends = /** @type {Array} */ (values['ends']);\n delete values['ends'];\n const layoutOptions = /** @type {LayoutOptions} */ (values['layoutOptions']);\n delete values['layoutOptions'];\n const layout = applyLayoutOptions(layoutOptions, flatCoordinates, ends);\n const geometry = new MultiLineString(flatCoordinates, layout, ends);\n transformGeometryWithOptions(geometry, false, options);\n const feature = new Feature(geometry);\n feature.setProperties(values, true);\n return feature;\n}\n\n/**\n * @param {Element} node Node.\n * @param {Array<*>} objectStack Object stack.\n * @return {Feature|undefined} Waypoint.\n */\nfunction readWpt(node, objectStack) {\n const options = /** @type {import(\"./Feature.js\").ReadOptions} */ (\n objectStack[0]\n );\n const values = pushParseAndPop({}, WPT_PARSERS, node, objectStack);\n if (!values) {\n return undefined;\n }\n const layoutOptions = /** @type {LayoutOptions} */ ({});\n const coordinates = appendCoordinate([], layoutOptions, node, values);\n const layout = applyLayoutOptions(layoutOptions, coordinates);\n const geometry = new Point(coordinates, layout);\n transformGeometryWithOptions(geometry, false, options);\n const feature = new Feature(geometry);\n feature.setProperties(values, true);\n return feature;\n}\n\n/**\n * @param {Element} node Node.\n * @param {string} value Value for the link's `href` attribute.\n * @param {Array<*>} objectStack Node stack.\n */\nfunction writeLink(node, value, objectStack) {\n node.setAttribute('href', value);\n const context = objectStack[objectStack.length - 1];\n const properties = context['properties'];\n const link = [properties['linkText'], properties['linkType']];\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */ ({node: node}),\n LINK_SERIALIZERS,\n OBJECT_PROPERTY_NODE_FACTORY,\n link,\n objectStack,\n LINK_SEQUENCE\n );\n}\n\n/**\n * @param {Element} node Node.\n * @param {import(\"../coordinate.js\").Coordinate} coordinate Coordinate.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeWptType(node, coordinate, objectStack) {\n const context = objectStack[objectStack.length - 1];\n const parentNode = context.node;\n const namespaceURI = parentNode.namespaceURI;\n const properties = context['properties'];\n //FIXME Projection handling\n node.setAttributeNS(null, 'lat', String(coordinate[1]));\n node.setAttributeNS(null, 'lon', String(coordinate[0]));\n const geometryLayout = context['geometryLayout'];\n switch (geometryLayout) {\n case 'XYZM':\n if (coordinate[3] !== 0) {\n properties['time'] = coordinate[3];\n }\n // fall through\n case 'XYZ':\n if (coordinate[2] !== 0) {\n properties['ele'] = coordinate[2];\n }\n break;\n case 'XYM':\n if (coordinate[2] !== 0) {\n properties['time'] = coordinate[2];\n }\n break;\n default:\n // pass\n }\n const orderedKeys =\n node.nodeName == 'rtept'\n ? RTEPT_TYPE_SEQUENCE[namespaceURI]\n : WPT_TYPE_SEQUENCE[namespaceURI];\n const values = makeSequence(properties, orderedKeys);\n pushSerializeAndPop(\n /** @type {import(\"../xml.js\").NodeStackItem} */\n ({node: node, 'properties': properties}),\n WPT_TYPE_SERIALIZERS,\n OBJECT_PROPERTY_NODE_FACTORY,\n values,\n objectStack,\n orderedKeys\n );\n}\n\n/**\n * @param {Node} node Node.\n * @param {Feature} feature Feature.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeRte(node, feature, objectStack) {\n const options = /** @type {import(\"./Feature.js\").WriteOptions} */ (\n objectStack[0]\n );\n const properties = feature.getProperties();\n const context = {node: node};\n context['properties'] = properties;\n const geometry = feature.getGeometry();\n if (geometry.getType() == 'LineString') {\n const lineString = /** @type {LineString} */ (\n transformGeometryWithOptions(geometry, true, options)\n );\n context['geometryLayout'] = lineString.getLayout();\n properties['rtept'] = lineString.getCoordinates();\n }\n const parentNode = objectStack[objectStack.length - 1].node;\n const orderedKeys = RTE_SEQUENCE[parentNode.namespaceURI];\n const values = makeSequence(properties, orderedKeys);\n pushSerializeAndPop(\n context,\n RTE_SERIALIZERS,\n OBJECT_PROPERTY_NODE_FACTORY,\n values,\n objectStack,\n orderedKeys\n );\n}\n\n/**\n * @param {Element} node Node.\n * @param {Feature} feature Feature.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeTrk(node, feature, objectStack) {\n const options = /** @type {import(\"./Feature.js\").WriteOptions} */ (\n objectStack[0]\n );\n const properties = feature.getProperties();\n /** @type {import(\"../xml.js\").NodeStackItem} */\n const context = {node: node};\n context['properties'] = properties;\n const geometry = feature.getGeometry();\n if (geometry.getType() == 'MultiLineString') {\n const multiLineString = /** @type {MultiLineString} */ (\n transformGeometryWithOptions(geometry, true, options)\n );\n properties['trkseg'] = multiLineString.getLineStrings();\n }\n const parentNode = objectStack[objectStack.length - 1].node;\n const orderedKeys = TRK_SEQUENCE[parentNode.namespaceURI];\n const values = makeSequence(properties, orderedKeys);\n pushSerializeAndPop(\n context,\n TRK_SERIALIZERS,\n OBJECT_PROPERTY_NODE_FACTORY,\n values,\n objectStack,\n orderedKeys\n );\n}\n\n/**\n * @param {Element} node Node.\n * @param {LineString} lineString LineString.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeTrkSeg(node, lineString, objectStack) {\n /** @type {import(\"../xml.js\").NodeStackItem} */\n const context = {node: node};\n context['geometryLayout'] = lineString.getLayout();\n context['properties'] = {};\n pushSerializeAndPop(\n context,\n TRKSEG_SERIALIZERS,\n TRKSEG_NODE_FACTORY,\n lineString.getCoordinates(),\n objectStack\n );\n}\n\n/**\n * @param {Element} node Node.\n * @param {Feature} feature Feature.\n * @param {Array<*>} objectStack Object stack.\n */\nfunction writeWpt(node, feature, objectStack) {\n const options = /** @type {import(\"./Feature.js\").WriteOptions} */ (\n objectStack[0]\n );\n const context = objectStack[objectStack.length - 1];\n context['properties'] = feature.getProperties();\n const geometry = feature.getGeometry();\n if (geometry.getType() == 'Point') {\n const point = /** @type {Point} */ (\n transformGeometryWithOptions(geometry, true, options)\n );\n context['geometryLayout'] = point.getLayout();\n writeWptType(node, point.getCoordinates(), objectStack);\n }\n}\n\nexport default GPX;\n","/**\n * @module ol/format/GeoJSON\n */\n\nimport Feature from '../Feature.js';\nimport JSONFeature from './JSONFeature.js';\nimport RenderFeature from '../render/Feature.js';\nimport {\n createGeometry,\n createRenderFeature,\n transformGeometryWithOptions,\n} from './Feature.js';\nimport {\n deflateCoordinatesArray,\n deflateMultiCoordinatesArray,\n} from '../geom/flat/deflate.js';\nimport {getLayoutForStride} from '../geom/SimpleGeometry.js';\nimport {get as getProjection} from '../proj.js';\nimport {isEmpty} from '../obj.js';\n\n/**\n * @typedef {import(\"geojson\").GeoJSON} GeoJSONObject\n * @typedef {import(\"geojson\").Feature} GeoJSONFeature\n * @typedef {import(\"geojson\").FeatureCollection} GeoJSONFeatureCollection\n * @typedef {import(\"geojson\").Geometry} GeoJSONGeometry\n * @typedef {import(\"geojson\").Point} GeoJSONPoint\n * @typedef {import(\"geojson\").LineString} GeoJSONLineString\n * @typedef {import(\"geojson\").Polygon} GeoJSONPolygon\n * @typedef {import(\"geojson\").MultiPoint} GeoJSONMultiPoint\n * @typedef {import(\"geojson\").MultiLineString} GeoJSONMultiLineString\n * @typedef {import(\"geojson\").MultiPolygon} GeoJSONMultiPolygon\n * @typedef {import(\"geojson\").GeometryCollection} GeoJSONGeometryCollection\n */\n\n/**\n * @typedef {Object} Options\n * @property {import(\"../proj.js\").ProjectionLike} [dataProjection='EPSG:4326'] Default data projection.\n * @property {import(\"../proj.js\").ProjectionLike} [featureProjection] Projection for features read or\n * written by the format. Options passed to read or write methods will take precedence.\n * @property {string} [geometryName] Geometry name to use when creating features.\n * @property {boolean} [extractGeometryName=false] Certain GeoJSON providers include\n * the geometry_name field in the feature GeoJSON. If set to `true` the GeoJSON reader\n * will look for that field to set the geometry name. If both this field is set to `true`\n * and a `geometryName` is provided, the `geometryName` will take precedence.\n * @property {import(\"../Feature.js\").FeatureClass} [featureClass] Feature class\n * to be used when reading features. The default is {@link module:ol/Feature~Feature}. If performance is\n * the primary concern, and features are not going to be modified or round-tripped through the format,\n * consider using {@link module:ol/render/Feature~RenderFeature}\n */\n\n/**\n * @classdesc\n * Feature format for reading and writing data in the GeoJSON format.\n *\n * @api\n */\nclass GeoJSON extends JSONFeature {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n options = options ? options : {};\n\n super();\n\n /**\n * @type {import(\"../proj/Projection.js\").default}\n */\n this.dataProjection = getProjection(\n options.dataProjection ? options.dataProjection : 'EPSG:4326'\n );\n\n if (options.featureProjection) {\n /**\n * @type {import(\"../proj/Projection.js\").default}\n */\n this.defaultFeatureProjection = getProjection(options.featureProjection);\n }\n\n if (options.featureClass) {\n this.featureClass = options.featureClass;\n }\n\n /**\n * Name of the geometry attribute for features.\n * @type {string|undefined}\n * @private\n */\n this.geometryName_ = options.geometryName;\n\n /**\n * Look for the geometry name in the feature GeoJSON\n * @type {boolean|undefined}\n * @private\n */\n this.extractGeometryName_ = options.extractGeometryName;\n\n this.supportedMediaTypes = [\n 'application/geo+json',\n 'application/vnd.geo+json',\n ];\n }\n\n /**\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {Feature|RenderFeature|Array}.default} Feature.\n */\n readFeatureFromObject(object, options) {\n /**\n * @type {GeoJSONFeature}\n */\n let geoJSONFeature = null;\n if (object['type'] === 'Feature') {\n geoJSONFeature = /** @type {GeoJSONFeature} */ (object);\n } else {\n geoJSONFeature = {\n 'type': 'Feature',\n 'geometry': /** @type {GeoJSONGeometry} */ (object),\n 'properties': null,\n };\n }\n\n const geometry = readGeometryInternal(geoJSONFeature['geometry'], options);\n if (this.featureClass === RenderFeature) {\n return createRenderFeature(\n {\n geometry,\n id: geoJSONFeature['id'],\n properties: geoJSONFeature['properties'],\n },\n options\n );\n }\n\n const feature = new Feature();\n if (this.geometryName_) {\n feature.setGeometryName(this.geometryName_);\n } else if (\n this.extractGeometryName_ &&\n 'geometry_name' in geoJSONFeature !== undefined\n ) {\n feature.setGeometryName(geoJSONFeature['geometry_name']);\n }\n feature.setGeometry(createGeometry(geometry, options));\n\n if ('id' in geoJSONFeature) {\n feature.setId(geoJSONFeature['id']);\n }\n\n if (geoJSONFeature['properties']) {\n feature.setProperties(geoJSONFeature['properties'], true);\n }\n return feature;\n }\n\n /**\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {Array} Features.\n */\n readFeaturesFromObject(object, options) {\n const geoJSONObject = /** @type {GeoJSONObject} */ (object);\n /** @type {Array>} */\n let features = null;\n if (geoJSONObject['type'] === 'FeatureCollection') {\n const geoJSONFeatureCollection = /** @type {GeoJSONFeatureCollection} */ (\n object\n );\n features = [];\n const geoJSONFeatures = geoJSONFeatureCollection['features'];\n for (let i = 0, ii = geoJSONFeatures.length; i < ii; ++i) {\n const featureObject = this.readFeatureFromObject(\n geoJSONFeatures[i],\n options\n );\n if (!featureObject) {\n continue;\n }\n features.push(featureObject);\n }\n } else {\n features = [this.readFeatureFromObject(object, options)];\n }\n return features.flat();\n }\n\n /**\n * @param {GeoJSONGeometry} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n readGeometryFromObject(object, options) {\n return readGeometry(object, options);\n }\n\n /**\n * @param {Object} object Object.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n readProjectionFromObject(object) {\n const crs = object['crs'];\n let projection;\n if (crs) {\n if (crs['type'] == 'name') {\n projection = getProjection(crs['properties']['name']);\n } else if (crs['type'] === 'EPSG') {\n projection = getProjection('EPSG:' + crs['properties']['code']);\n } else {\n throw new Error('Unknown SRS type');\n }\n } else {\n projection = this.dataProjection;\n }\n return /** @type {import(\"../proj/Projection.js\").default} */ (projection);\n }\n\n /**\n * Encode a feature as a GeoJSON Feature object.\n *\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONFeature} Object.\n * @api\n */\n writeFeatureObject(feature, options) {\n options = this.adaptOptions(options);\n\n /** @type {GeoJSONFeature} */\n const object = {\n 'type': 'Feature',\n geometry: null,\n properties: null,\n };\n\n const id = feature.getId();\n if (id !== undefined) {\n object.id = id;\n }\n\n if (!feature.hasProperties()) {\n return object;\n }\n\n const properties = feature.getProperties();\n const geometry = feature.getGeometry();\n if (geometry) {\n object.geometry = writeGeometry(geometry, options);\n\n delete properties[feature.getGeometryName()];\n }\n\n if (!isEmpty(properties)) {\n object.properties = properties;\n }\n\n return object;\n }\n\n /**\n * Encode an array of features as a GeoJSON object.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONFeatureCollection} GeoJSON Object.\n * @api\n */\n writeFeaturesObject(features, options) {\n options = this.adaptOptions(options);\n const objects = [];\n for (let i = 0, ii = features.length; i < ii; ++i) {\n objects.push(this.writeFeatureObject(features[i], options));\n }\n return {\n type: 'FeatureCollection',\n features: objects,\n };\n }\n\n /**\n * Encode a geometry as a GeoJSON object.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry|GeoJSONGeometryCollection} Object.\n * @api\n */\n writeGeometryObject(geometry, options) {\n return writeGeometry(geometry, this.adaptOptions(options));\n }\n}\n\n/**\n * @param {GeoJSONGeometry|GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"./Feature.js\").GeometryObject} Geometry.\n */\nfunction readGeometryInternal(object, options) {\n if (!object) {\n return null;\n }\n\n /** @type {import(\"./Feature.js\").GeometryObject} */\n let geometry;\n switch (object['type']) {\n case 'Point': {\n geometry = readPointGeometry(/** @type {GeoJSONPoint} */ (object));\n break;\n }\n case 'LineString': {\n geometry = readLineStringGeometry(\n /** @type {GeoJSONLineString} */ (object)\n );\n break;\n }\n case 'Polygon': {\n geometry = readPolygonGeometry(/** @type {GeoJSONPolygon} */ (object));\n break;\n }\n case 'MultiPoint': {\n geometry = readMultiPointGeometry(\n /** @type {GeoJSONMultiPoint} */ (object)\n );\n break;\n }\n case 'MultiLineString': {\n geometry = readMultiLineStringGeometry(\n /** @type {GeoJSONMultiLineString} */ (object)\n );\n break;\n }\n case 'MultiPolygon': {\n geometry = readMultiPolygonGeometry(\n /** @type {GeoJSONMultiPolygon} */ (object)\n );\n break;\n }\n case 'GeometryCollection': {\n geometry = readGeometryCollectionGeometry(\n /** @type {GeoJSONGeometryCollection} */ (object)\n );\n break;\n }\n default: {\n throw new Error('Unsupported GeoJSON type: ' + object['type']);\n }\n }\n return geometry;\n}\n\n/**\n * @param {GeoJSONGeometry|GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\nfunction readGeometry(object, options) {\n const geometryObject = readGeometryInternal(object, options);\n return createGeometry(geometryObject, options);\n}\n\n/**\n * @param {GeoJSONGeometryCollection} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"./Feature.js\").GeometryCollectionObject} Geometry collection.\n */\nfunction readGeometryCollectionGeometry(object, options) {\n const geometries = object['geometries'].map(\n /**\n * @param {GeoJSONGeometry} geometry Geometry.\n * @return {import(\"./Feature.js\").GeometryObject} geometry Geometry.\n */\n function (geometry) {\n return readGeometryInternal(geometry, options);\n }\n );\n return geometries;\n}\n\n/**\n * @param {GeoJSONPoint} object Input object.\n * @return {import(\"./Feature.js\").GeometryObject} Point geometry.\n */\nfunction readPointGeometry(object) {\n const flatCoordinates = object['coordinates'];\n return {\n type: 'Point',\n flatCoordinates,\n layout: getLayoutForStride(flatCoordinates.length),\n };\n}\n\n/**\n * @param {GeoJSONLineString} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} LineString geometry.\n */\nfunction readLineStringGeometry(object) {\n const coordinates = object['coordinates'];\n const flatCoordinates = coordinates.flat();\n return {\n type: 'LineString',\n flatCoordinates,\n ends: [flatCoordinates.length],\n layout: getLayoutForStride(coordinates[0].length),\n };\n}\n\n/**\n * @param {GeoJSONMultiLineString} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} MultiLineString geometry.\n */\nfunction readMultiLineStringGeometry(object) {\n const coordinates = object['coordinates'];\n const stride = coordinates[0][0].length;\n const flatCoordinates = [];\n const ends = deflateCoordinatesArray(flatCoordinates, 0, coordinates, stride);\n return {\n type: 'MultiLineString',\n flatCoordinates,\n ends,\n layout: getLayoutForStride(stride),\n };\n}\n\n/**\n * @param {GeoJSONMultiPoint} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} MultiPoint geometry.\n */\nfunction readMultiPointGeometry(object) {\n const coordinates = object['coordinates'];\n return {\n type: 'MultiPoint',\n flatCoordinates: coordinates.flat(),\n layout: getLayoutForStride(coordinates[0].length),\n };\n}\n\n/**\n * @param {GeoJSONMultiPolygon} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} MultiPolygon geometry.\n */\nfunction readMultiPolygonGeometry(object) {\n const coordinates = object['coordinates'];\n const flatCoordinates = [];\n const stride = coordinates[0][0][0].length;\n const endss = deflateMultiCoordinatesArray(\n flatCoordinates,\n 0,\n coordinates,\n stride\n );\n return {\n type: 'MultiPolygon',\n flatCoordinates,\n ends: endss,\n layout: getLayoutForStride(stride),\n };\n}\n\n/**\n * @param {GeoJSONPolygon} object Object.\n * @return {import(\"./Feature.js\").GeometryObject} Polygon.\n */\nfunction readPolygonGeometry(object) {\n const coordinates = object['coordinates'];\n const flatCoordinates = [];\n const stride = coordinates[0][0].length;\n const ends = deflateCoordinatesArray(flatCoordinates, 0, coordinates, stride);\n return {\n type: 'Polygon',\n flatCoordinates,\n ends,\n layout: getLayoutForStride(stride),\n };\n}\n\n/**\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeGeometry(geometry, options) {\n geometry = transformGeometryWithOptions(geometry, true, options);\n\n const type = geometry.getType();\n\n /** @type {GeoJSONGeometry} */\n let geoJSON;\n switch (type) {\n case 'Point': {\n geoJSON = writePointGeometry(\n /** @type {import(\"../geom/Point.js\").default} */ (geometry),\n options\n );\n break;\n }\n case 'LineString': {\n geoJSON = writeLineStringGeometry(\n /** @type {import(\"../geom/LineString.js\").default} */ (geometry),\n options\n );\n break;\n }\n case 'Polygon': {\n geoJSON = writePolygonGeometry(\n /** @type {import(\"../geom/Polygon.js\").default} */ (geometry),\n options\n );\n break;\n }\n case 'MultiPoint': {\n geoJSON = writeMultiPointGeometry(\n /** @type {import(\"../geom/MultiPoint.js\").default} */ (geometry),\n options\n );\n break;\n }\n case 'MultiLineString': {\n geoJSON = writeMultiLineStringGeometry(\n /** @type {import(\"../geom/MultiLineString.js\").default} */ (geometry),\n options\n );\n break;\n }\n case 'MultiPolygon': {\n geoJSON = writeMultiPolygonGeometry(\n /** @type {import(\"../geom/MultiPolygon.js\").default} */ (geometry),\n options\n );\n break;\n }\n case 'GeometryCollection': {\n geoJSON = writeGeometryCollectionGeometry(\n /** @type {import(\"../geom/GeometryCollection.js\").default} */ (\n geometry\n ),\n options\n );\n break;\n }\n case 'Circle': {\n geoJSON = {\n type: 'GeometryCollection',\n geometries: [],\n };\n break;\n }\n default: {\n throw new Error('Unsupported geometry type: ' + type);\n }\n }\n return geoJSON;\n}\n\n/**\n * @param {import(\"../geom/GeometryCollection.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometryCollection} GeoJSON geometry collection.\n */\nfunction writeGeometryCollectionGeometry(geometry, options) {\n options = Object.assign({}, options);\n delete options.featureProjection;\n const geometries = geometry.getGeometriesArray().map(function (geometry) {\n return writeGeometry(geometry, options);\n });\n return {\n type: 'GeometryCollection',\n geometries: geometries,\n };\n}\n\n/**\n * @param {import(\"../geom/LineString.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeLineStringGeometry(geometry, options) {\n return {\n type: 'LineString',\n coordinates: geometry.getCoordinates(),\n };\n}\n\n/**\n * @param {import(\"../geom/MultiLineString.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiLineStringGeometry(geometry, options) {\n return {\n type: 'MultiLineString',\n coordinates: geometry.getCoordinates(),\n };\n}\n\n/**\n * @param {import(\"../geom/MultiPoint.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiPointGeometry(geometry, options) {\n return {\n type: 'MultiPoint',\n coordinates: geometry.getCoordinates(),\n };\n}\n\n/**\n * @param {import(\"../geom/MultiPolygon.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writeMultiPolygonGeometry(geometry, options) {\n let right;\n if (options) {\n right = options.rightHanded;\n }\n return {\n type: 'MultiPolygon',\n coordinates: geometry.getCoordinates(right),\n };\n}\n\n/**\n * @param {import(\"../geom/Point.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writePointGeometry(geometry, options) {\n return {\n type: 'Point',\n coordinates: geometry.getCoordinates(),\n };\n}\n\n/**\n * @param {import(\"../geom/Polygon.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {GeoJSONGeometry} GeoJSON geometry.\n */\nfunction writePolygonGeometry(geometry, options) {\n let right;\n if (options) {\n right = options.rightHanded;\n }\n return {\n type: 'Polygon',\n coordinates: geometry.getCoordinates(right),\n };\n}\n\nexport default GeoJSON;\n","/**\n * @module ol/format/IGC\n */\nimport Feature from '../Feature.js';\nimport LineString from '../geom/LineString.js';\nimport TextFeature from './TextFeature.js';\nimport {get as getProjection} from '../proj.js';\nimport {transformGeometryWithOptions} from './Feature.js';\n\n/**\n * @typedef {'barometric' | 'gps' | 'none'} IGCZ\n * IGC altitude/z. One of 'barometric', 'gps', 'none'.\n */\n\n/**\n * @const\n * @type {RegExp}\n */\nconst B_RECORD_RE =\n /^B(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{5})([NS])(\\d{3})(\\d{5})([EW])([AV])(\\d{5})(\\d{5})/;\n\n/**\n * @const\n * @type {RegExp}\n */\nconst H_RECORD_RE = /^H.([A-Z]{3}).*?:(.*)/;\n\n/**\n * @const\n * @type {RegExp}\n */\nconst HFDTE_RECORD_RE = /^HFDTE(\\d{2})(\\d{2})(\\d{2})/;\n\n/**\n * A regular expression matching the newline characters `\\r\\n`, `\\r` and `\\n`.\n *\n * @const\n * @type {RegExp}\n */\nconst NEWLINE_RE = /\\r\\n|\\r|\\n/;\n\n/**\n * @typedef {Object} Options\n * @property {IGCZ} [altitudeMode='none'] Altitude mode. Possible\n * values are `'barometric'`, `'gps'`, and `'none'`.\n */\n\n/**\n * @classdesc\n * Feature format for `*.igc` flight recording files.\n *\n * As IGC sources contain a single feature,\n * {@link module:ol/format/IGC~IGC#readFeatures} will return the feature in an\n * array\n *\n * @api\n */\nclass IGC extends TextFeature {\n /**\n * @param {Options} [options] Options.\n */\n constructor(options) {\n super();\n\n options = options ? options : {};\n\n /**\n * @type {import(\"../proj/Projection.js\").default}\n */\n this.dataProjection = getProjection('EPSG:4326');\n\n /**\n * @private\n * @type {IGCZ}\n */\n this.altitudeMode_ = options.altitudeMode ? options.altitudeMode : 'none';\n }\n\n /**\n * @protected\n * @param {string} text Text.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../Feature.js\").default} Feature.\n */\n readFeatureFromText(text, options) {\n const altitudeMode = this.altitudeMode_;\n const lines = text.split(NEWLINE_RE);\n /** @type {Object} */\n const properties = {};\n const flatCoordinates = [];\n let year = 2000;\n let month = 0;\n let day = 1;\n let lastDateTime = -1;\n let i, ii;\n for (i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n let m;\n if (line.charAt(0) == 'B') {\n m = B_RECORD_RE.exec(line);\n if (m) {\n const hour = parseInt(m[1], 10);\n const minute = parseInt(m[2], 10);\n const second = parseInt(m[3], 10);\n let y = parseInt(m[4], 10) + parseInt(m[5], 10) / 60000;\n if (m[6] == 'S') {\n y = -y;\n }\n let x = parseInt(m[7], 10) + parseInt(m[8], 10) / 60000;\n if (m[9] == 'W') {\n x = -x;\n }\n flatCoordinates.push(x, y);\n if (altitudeMode != 'none') {\n let z;\n if (altitudeMode == 'gps') {\n z = parseInt(m[11], 10);\n } else if (altitudeMode == 'barometric') {\n z = parseInt(m[12], 10);\n } else {\n z = 0;\n }\n flatCoordinates.push(z);\n }\n let dateTime = Date.UTC(year, month, day, hour, minute, second);\n // Detect UTC midnight wrap around.\n if (dateTime < lastDateTime) {\n dateTime = Date.UTC(year, month, day + 1, hour, minute, second);\n }\n flatCoordinates.push(dateTime / 1000);\n lastDateTime = dateTime;\n }\n } else if (line.charAt(0) == 'H') {\n m = HFDTE_RECORD_RE.exec(line);\n if (m) {\n day = parseInt(m[1], 10);\n month = parseInt(m[2], 10) - 1;\n year = 2000 + parseInt(m[3], 10);\n } else {\n m = H_RECORD_RE.exec(line);\n if (m) {\n properties[m[1]] = m[2].trim();\n }\n }\n }\n }\n if (flatCoordinates.length === 0) {\n return null;\n }\n const layout = altitudeMode == 'none' ? 'XYM' : 'XYZM';\n const lineString = new LineString(flatCoordinates, layout);\n const feature = new Feature(\n transformGeometryWithOptions(lineString, false, options)\n );\n feature.setProperties(properties, true);\n return feature;\n }\n\n /**\n * @param {string} text Text.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {Array} Features.\n */\n readFeaturesFromText(text, options) {\n const feature = this.readFeatureFromText(text, options);\n if (feature) {\n return [feature];\n }\n return [];\n }\n}\n\nexport default IGC;\n","/**\n * @module ol/format/JSONFeature\n */\nimport FeatureFormat from './Feature.js';\nimport {abstract} from '../util.js';\n\n/**\n * @classdesc\n * Abstract base class; normally only used for creating subclasses and not\n * instantiated in apps.\n * Base class for JSON feature formats.\n *\n * @abstract\n */\nclass JSONFeature extends FeatureFormat {\n constructor() {\n super();\n }\n\n /**\n * @return {import(\"./Feature.js\").Type} Format.\n */\n getType() {\n return 'json';\n }\n\n /**\n * Read a feature. Only works for a single feature. Use `readFeatures` to\n * read a feature collection.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../Feature.js\").FeatureLike|Array} Feature.\n * @api\n */\n readFeature(source, options) {\n return this.readFeatureFromObject(\n getObject(source),\n this.getReadOptions(source, options)\n );\n }\n\n /**\n * Read all features. Works with both a single feature and a feature\n * collection.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {Array} Features.\n * @api\n */\n readFeatures(source, options) {\n return this.readFeaturesFromObject(\n getObject(source),\n this.getReadOptions(source, options)\n );\n }\n\n /**\n * @abstract\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {import(\"../Feature.js\").default|import(\"../render/Feature.js\").default|Array} Feature.\n */\n readFeatureFromObject(object, options) {\n return abstract();\n }\n\n /**\n * @abstract\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {Array} Features.\n */\n readFeaturesFromObject(object, options) {\n return abstract();\n }\n\n /**\n * Read a geometry.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n * @api\n */\n readGeometry(source, options) {\n return this.readGeometryFromObject(\n getObject(source),\n this.getReadOptions(source, options)\n );\n }\n\n /**\n * @abstract\n * @param {Object} object Object.\n * @param {import(\"./Feature.js\").ReadOptions} [options] Read options.\n * @protected\n * @return {import(\"../geom/Geometry.js\").default} Geometry.\n */\n readGeometryFromObject(object, options) {\n return abstract();\n }\n\n /**\n * Read the projection.\n *\n * @param {ArrayBuffer|Document|Element|Object|string} source Source.\n * @return {import(\"../proj/Projection.js\").default} Projection.\n * @api\n */\n readProjection(source) {\n return this.readProjectionFromObject(getObject(source));\n }\n\n /**\n * @abstract\n * @param {Object} object Object.\n * @protected\n * @return {import(\"../proj/Projection.js\").default} Projection.\n */\n readProjectionFromObject(object) {\n return abstract();\n }\n\n /**\n * Encode a feature as string.\n *\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {string} Encoded feature.\n * @api\n */\n writeFeature(feature, options) {\n return JSON.stringify(this.writeFeatureObject(feature, options));\n }\n\n /**\n * @abstract\n * @param {import(\"../Feature.js\").default} feature Feature.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {Object} Object.\n */\n writeFeatureObject(feature, options) {\n return abstract();\n }\n\n /**\n * Encode an array of features as string.\n *\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {string} Encoded features.\n * @api\n */\n writeFeatures(features, options) {\n return JSON.stringify(this.writeFeaturesObject(features, options));\n }\n\n /**\n * @abstract\n * @param {Array} features Features.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {Object} Object.\n */\n writeFeaturesObject(features, options) {\n return abstract();\n }\n\n /**\n * Encode a geometry as string.\n *\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {string} Encoded geometry.\n * @api\n */\n writeGeometry(geometry, options) {\n return JSON.stringify(this.writeGeometryObject(geometry, options));\n }\n\n /**\n * @abstract\n * @param {import(\"../geom/Geometry.js\").default} geometry Geometry.\n * @param {import(\"./Feature.js\").WriteOptions} [options] Write options.\n * @return {Object} Object.\n */\n writeGeometryObject(geometry, options) {\n return abstract();\n }\n}\n\n/**\n * @param {Document|Element|Object|string} source Source.\n * @return {Object} Object.\n */\nfunction getObject(source) {\n if (typeof source === 'string') {\n const object = JSON.parse(source);\n return object ? /** @type {Object} */ (object) : null;\n }\n if (source !== null) {\n return source;\n }\n return null;\n}\n\nexport default JSONFeature;\n","/**\n * @module ol/format/KML\n */\nimport Feature from '../Feature.js';\nimport Fill from '../style/Fill.js';\nimport GeometryCollection from '../geom/GeometryCollection.js';\nimport Icon from '../style/Icon.js';\nimport ImageState from '../ImageState.js';\nimport LineString from '../geom/LineString.js';\nimport MultiLineString from '../geom/MultiLineString.js';\nimport MultiPoint from '../geom/MultiPoint.js';\nimport MultiPolygon from '../geom/MultiPolygon.js';\nimport Point from '../geom/Point.js';\nimport Polygon from '../geom/Polygon.js';\nimport Stroke from '../style/Stroke.js';\nimport Style from '../style/Style.js';\nimport Text from '../style/Text.js';\nimport XMLFeature from './XMLFeature.js';\nimport {\n OBJECT_PROPERTY_NODE_FACTORY,\n XML_SCHEMA_INSTANCE_URI,\n createElementNS,\n getAllTextContent,\n isDocument,\n makeArrayExtender,\n makeArrayPusher,\n makeChildAppender,\n makeObjectPropertySetter,\n makeReplacer,\n makeSequence,\n makeSimpleNodeFactory,\n makeStructureNS,\n parse,\n parseNode,\n pushParseAndPop,\n pushSerializeAndPop,\n} from '../xml.js';\nimport {asArray} from '../color.js';\nimport {extend} from '../array.js';\nimport {get as getProjection} from '../proj.js';\nimport {\n readBoolean,\n readDecimal,\n readString,\n writeBooleanTextNode,\n writeCDATASection,\n writeDecimalTextNode,\n writeStringTextNode,\n} from './xsd.js';\nimport {toRadians} from '../math.js';\nimport {transformGeometryWithOptions} from './Feature.js';\n\n/**\n * @typedef {Object} Vec2\n * @property {number} x X coordinate.\n * @property {import(\"../style/Icon.js\").IconAnchorUnits} xunits Units of x.\n * @property {number} y Y coordinate.\n * @property {import(\"../style/Icon.js\").IconAnchorUnits} yunits Units of Y.\n * @property {import(\"../style/Icon.js\").IconOrigin} [origin] Origin.\n */\n\n/**\n * @typedef {Object} GxTrackObject\n * @property {Array>} coordinates Coordinates.\n * @property {Array} whens Whens.\n */\n\n/**\n * @const\n * @type {Array}\n */\nconst GX_NAMESPACE_URIS = ['http://www.google.com/kml/ext/2.2'];\n\n/**\n * @const\n * @type {Array}\n */\nconst NAMESPACE_URIS = [\n null,\n 'http://earth.google.com/kml/2.0',\n 'http://earth.google.com/kml/2.1',\n 'http://earth.google.com/kml/2.2',\n 'http://www.opengis.net/kml/2.2',\n];\n\n/**\n * @const\n * @type {string}\n */\nconst SCHEMA_LOCATION =\n 'http://www.opengis.net/kml/2.2 ' +\n 'https://developers.google.com/kml/schema/kml22gx.xsd';\n\n/**\n * @type {Object}\n */\nconst ICON_ANCHOR_UNITS_MAP = {\n 'fraction': 'fraction',\n 'pixels': 'pixels',\n 'insetPixels': 'pixels',\n};\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst PLACEMARK_PARSERS = makeStructureNS(\n NAMESPACE_URIS,\n {\n 'ExtendedData': extendedDataParser,\n 'Region': regionParser,\n 'MultiGeometry': makeObjectPropertySetter(readMultiGeometry, 'geometry'),\n 'LineString': makeObjectPropertySetter(readLineString, 'geometry'),\n 'LinearRing': makeObjectPropertySetter(readLinearRing, 'geometry'),\n 'Point': makeObjectPropertySetter(readPoint, 'geometry'),\n 'Polygon': makeObjectPropertySetter(readPolygon, 'geometry'),\n 'Style': makeObjectPropertySetter(readStyle),\n 'StyleMap': placemarkStyleMapParser,\n 'address': makeObjectPropertySetter(readString),\n 'description': makeObjectPropertySetter(readString),\n 'name': makeObjectPropertySetter(readString),\n 'open': makeObjectPropertySetter(readBoolean),\n 'phoneNumber': makeObjectPropertySetter(readString),\n 'styleUrl': makeObjectPropertySetter(readStyleURL),\n 'visibility': makeObjectPropertySetter(readBoolean),\n },\n makeStructureNS(GX_NAMESPACE_URIS, {\n 'MultiTrack': makeObjectPropertySetter(readGxMultiTrack, 'geometry'),\n 'Track': makeObjectPropertySetter(readGxTrack, 'geometry'),\n })\n);\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst NETWORK_LINK_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'ExtendedData': extendedDataParser,\n 'Region': regionParser,\n 'Link': linkParser,\n 'address': makeObjectPropertySetter(readString),\n 'description': makeObjectPropertySetter(readString),\n 'name': makeObjectPropertySetter(readString),\n 'open': makeObjectPropertySetter(readBoolean),\n 'phoneNumber': makeObjectPropertySetter(readString),\n 'visibility': makeObjectPropertySetter(readBoolean),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst LINK_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'href': makeObjectPropertySetter(readURI),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst CAMERA_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n Altitude: makeObjectPropertySetter(readDecimal),\n Longitude: makeObjectPropertySetter(readDecimal),\n Latitude: makeObjectPropertySetter(readDecimal),\n Tilt: makeObjectPropertySetter(readDecimal),\n AltitudeMode: makeObjectPropertySetter(readString),\n Heading: makeObjectPropertySetter(readDecimal),\n Roll: makeObjectPropertySetter(readDecimal),\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst REGION_PARSERS = makeStructureNS(NAMESPACE_URIS, {\n 'LatLonAltBox': latLonAltBoxParser,\n 'Lod': lodParser,\n});\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst KML_SEQUENCE = makeStructureNS(NAMESPACE_URIS, ['Document', 'Placemark']);\n\n/**\n * @const\n * @type {Object>}\n */\n// @ts-ignore\nconst KML_SERIALIZERS = makeStructureNS(NAMESPACE_URIS, {\n 'Document': makeChildAppender(writeDocument),\n 'Placemark': makeChildAppender(writePlacemark),\n});\n\n/**\n * @type {import(\"../color.js\").Color}\n */\nlet DEFAULT_COLOR;\n\n/**\n * @type {Fill|null}\n */\nlet DEFAULT_FILL_STYLE = null;\n\n/**\n * Get the default fill style (or null if not yet set).\n * @return {Fill|null} The default fill style.\n */\nexport function getDefaultFillStyle() {\n return DEFAULT_FILL_STYLE;\n}\n\n/**\n * @type {import(\"../size.js\").Size}\n */\nlet DEFAULT_IMAGE_STYLE_ANCHOR;\n\n/**\n * @type {import(\"../style/Icon.js\").IconAnchorUnits}\n */\nlet DEFAULT_IMAGE_STYLE_ANCHOR_X_UNITS;\n\n/**\n * @type {import(\"../style/Icon.js\").IconAnchorUnits}\n */\nlet DEFAULT_IMAGE_STYLE_ANCHOR_Y_UNITS;\n\n/**\n * @type {import(\"../size.js\").Size}\n */\nlet DEFAULT_IMAGE_STYLE_SIZE;\n\n/**\n * @type {string}\n */\nlet DEFAULT_IMAGE_STYLE_SRC;\n\n/**\n * @type {import(\"../style/Image.js\").default|null}\n */\nlet DEFAULT_IMAGE_STYLE = null;\n\n/**\n * Get the default image style (or null if not yet set).\n * @return {import(\"../style/Image.js\").default|null} The default image style.\n */\nexport function getDefaultImageStyle() {\n return DEFAULT_IMAGE_STYLE;\n}\n\n/**\n * @type {string}\n */\nlet DEFAULT_NO_IMAGE_STYLE;\n\n/**\n * @type {Stroke|null}\n */\nlet DEFAULT_STROKE_STYLE = null;\n\n/**\n * Get the default stroke style (or null if not yet set).\n * @return {Stroke|null} The default stroke style.\n */\nexport function getDefaultStrokeStyle() {\n return DEFAULT_STROKE_STYLE;\n}\n\n/**\n * @type {Stroke}\n */\nlet DEFAULT_TEXT_STROKE_STYLE;\n\n/**\n * @type {Text|null}\n */\nlet DEFAULT_TEXT_STYLE = null;\n\n/**\n * Get the default text style (or null if not yet set).\n * @return {Text|null} The default text style.\n */\nexport function getDefaultTextStyle() {\n return DEFAULT_TEXT_STYLE;\n}\n\n/**\n * @type {Style|null}\n */\nlet DEFAULT_STYLE = null;\n\n/**\n * Get the default style (or null if not yet set).\n * @return {Style|null} The default style.\n */\nexport function getDefaultStyle() {\n return DEFAULT_STYLE;\n}\n\n/**\n * @type {Array